Availability:
     Level T    , 'V'

  Quick Help:
     Display Defect Lists, V[ListMask],[Hd],[StartCyl],[NumCyls],[Summary],[FlagsMask]

 Description:
    This command displays any combination of the user slip list, the system slip list, the
    servo flaws list, and the reassigned sectors table.

 Related Commands:

    Some defect lists support being initialized or erased.  If the list is supported, it can
    be initialized with the Level T 'i' command.
    Initialize Defect List (Level T 'i')

    The Data Scubbing feature can be enabled or disabled or its state can be viewed by using
    the Level T F"ENABLE_MICKEY_CERT" command.
    Display / Modify Congen Parameter (Level T 'F')

 Input Parameters:

    0 - Bit Select.
    
        This input specifies the bit select for the display (click the links to be taken to
        the output description for each list):
    
          If bit 0 (0x0001) is set, the User Area Slip List will be displayed. If bit 15 is
          also set (0x8001), the entries will be displayed by index instead of cylinder/head.
          User Area Slip List
    
          If bit 1 (0x0002) is set, the System Area Slip List will be displayed.  If bit 15
          is also set (0x8002), the entries will be displayed by index instead of cylinder/head.
          System Area Slip List
    
          If bit 2 (0x0004) is set, the Reassigned Sectors List (or Alt List) will be displayed.
          This is a list of LBAs that have either been reassigned to a new PBA or have been
          marked for reassignment or as bad blocks.
          Reassigned Sectors List (Alt List)
    
          If bit 3 (0x0008) is set, the Servo Flaws List will be displayed.
          Servo Flaws List
    
          If bit 4 (0x0010) is set, the Primary Defect List (PLIST) will be displayed.  This
          list holds raw defect position information obtain during drive processing.
          Primary Defect List (PLIST)
    
          If bit 5 (0x0020) is set, the Primary Servo Flaws List will be displayed.
          Primary Servo Flaws List
    
          If bit 6 (0x0040) is set, the Nonresident G List will be displayed.  This PBA-based
          list combines the previous Nonresident G List with the Resident G List at the time
          of the last format.
          Nonresident G List
    
          If bit 7 (0x0080) is set, Resident G List will be displayed.  This PBA based list
          holds bad spares and defects found since the last format.  This list includes all
          bad PBAs found since format.  It will have more than one entry for a reallocated
          reallocation, for example.
          Resident G List
    
          If bit 8 (0x0100) is set, the Primary DST List will be displayed.  This list holds
          the defect position information from the PLIST (above) expressed as sector
          positions instead of SFI.
          Primary DST List
    
          If bit 9 (0x0200) is set and the feature is supported, the Data Scrub List (aka
          "Mickey Cert List") will be displayed.  The Data Scrub List is made up of LBAs that
          have successfully completed mini-cert during reallocation (and therefore were NOT
          reallocated) and a count ("Scrub Count") of how many times this has happened.  This
          command returns a list of the LBAs and counts as well as many of the ways the LBA
          can be described by the diagnostic firmware.  Requesting this list allows specifying
          a start index (see parameter 2) and an element count (see parameter 3).
          Data Scrub List
    
          If bit 10 (0x0400) is set, the TA List will be displayed.  This is a list of tracks
          and, if supported, heads on which TAs (Thermal Asperities) have been detected.
          Requesting this list allows specifying a start index (see parameter 2) and an
          element count (see parameter 3).
          TA List
    
          If bit 11 (0x0800) is set, the Defective Tracks List will be displayed.  This is a
          list of tracks that are determined to be defective because of either TAs or too many
          servo flaws.  Requesting this list allows specifying a head (see parameter 1), a
          start index (see parameter 2), and an element count (see parameter 3).
          Defective Tracks List
    
          If bit 15 (0x8000) is set, the user track slip list and the system track slip list
          will be displayed by entry index and entry count instead of cylinder range.
    
          Note: bits may be combined to display more than one list.
    
          Type:    Unsigned 16-bit value
    
          Range:   0 to 0xFFFF
    
          Default: 0001
    
    1 - Chosen Head.
    
        If this input is entered then defects will display only for the specified head.  If
        this input is not entered then defects for all heads will be displayed.  NOTE: This
        parameter is ignored when either bit 15 is set in parameter zero ( Bit Select ) or
        this command is being used to request display of the Reassigned Sectors List (V4),
        Nonresident G List (V40), Resident G List (V80), Primary DST List (V100), or the
        Data Scrub List (V200).
    
          Type:    Unsigned 32-bit value
    
          Range:   0 to 0xFFFFFFFF
    
          Default: None (display all heads)
    
    2 - Start Element.
    
        The following information describes how to use this parameter for each list.  In
        all cases, if this parameter is specified, then the Element Count parameter (see
        below) must also be specified.
    
        For the user track slip list and reserve track slip list:
    
          If bit 15 of parameter 0 (above) is set, Start Element is the index of the first
          element to be displayed.
    
          If bit 15 of parameter 0 (above) is clear, Start Element is the first cylinder of
          entries to be displayed.
    
        For the Servo Flaws List and Primary Servo Flaws List, Start Element is the first
        cylinder of entries to be displayed.
    
        For the P List, Start Element is the first cylinder of entries to be displayed.
    
        For the Resident G List and Nonresident G List, Start Element is the lowest PBA of
        entries to be displayed.
    
        For the Data Scrub List, TA List, Defective Tracks List and the Reassigned Sectors
        List, Start Element is the starting index.
    
          Type:    Unsigned 32-bit value
    
          Range:   0 to 0xFFFFFFFF  This value is not range checked and the user
                                    must use discretion selecting input values.
    
          Default: 0
    
    3 - Element Count.
    
        The following information describes how to use this parameter for each list.
    
        For the user track slip list and reserve track slip list,
          If bit 15 of parameter 0 (above) is set, Element Count is the number of
          list entries to display.
    
          If bit 15 of parameter 0 (above) is clear, Element Count is the number of list
          elements to display.
    
        For the servo flaws list and primary servo flaws list, Element Count is the number
        of cylinders of entries to be displayed.
    
        For the P List, Element Count is the number of cylinders of entries to be displayed.
    
        For the Resident G List and Nonresident G List, Element Count is the number of PBAs
        of entries to be displayed.
    
        For the Data Scrub List, TA List, Defective Tracks List and the Reassigned Sectors
        List, Element Count is the number of elements requested.  If this parameter is 0 or
        unspecified, the whole list will be returned.
    
           Type:    Unsigned 32-bit value
    
           Range:   0 to 0xFFFFFFFF
    
           Default: 0
    
    4 - Display Summary.
    
        If this parameter is set to 99, only a summary of information will be displayed.
        This option works only with the Reassigned Sectors List (V4).
    
          Type:    Unsigned 32-bit value
    
          Range:   0 to 0xFFFFFFFF
    
          Default: 0
    
    5 - Flags Mask.
    
        This parameter is used to filter the contents of the PLIST (V10).  Unless a
        particular PLIST entry type's bit is set, it will get filtered out of the return
        data.  NOTE: Works with V10 only.

          Bit 0 [0x01]: Servo flaw.
          Bit 1 [0x02]: Asperity flaw.
          Bit 2 [0x04]: GList to PList flaw.
          Bit 3 [0x08]: GList to PList data defect pad fill.
          Bit 4 [0x10]: GList to PList servo defect pad fill.
          Bit 5 unused
          Bit 6 [0x40]: Scratch fill flaw visited.
          Bit 7 [0x80]: Scratch fill flaw.
    
          Type:    Unsigned 16-bit value
    
          Range:   0 to 0xFFFF
    
          Default: 0xFFFF
    
 Output Data:

    If an error occurred, the following information will be displayed.
    
          "DiagError aaaaaaaa"
    
       where
    
          aaaaaaaa is the Diagnostic Error Code
    

    
    If the User Area Slip List is requested, the following information will be
    displayed.
    
          " User Slip Defect List"                                 ( These three header lines         )
          "                         log log   log     phys   phys" (   are repeated every 31 entries. )
          "    LBA    span   cumm   cyl  hd  sctr zn   cyl   sctr     SFI      PBA"
          "   aaaaa      b      c ddddd  e   fff   g  hhhhh   iii    jjjjj    kkkkk" ( repeated )
          " "
          "Head m: entries    nnn        slips     pppp" ( repeated for each head )
          "  Total Entries    qqq  Total Slips     rrrr"
    
       where
    
          aaaaa is the LBA of the first good sector AFTER the slipped section.  All the
                address information below applies to the this LBA.
    
          b is the length of the slipped area in sectors
    
          c is the sum of the lengths of all slipped areas up to and including this one.
    
          ddddd is the logical cylinder number of the LBA.
    
          e is the logical head of the LBA.
    
          fff is the logical sector number of the LBA.
    
          g is the zone number of the LBA.
    
          hhhhh is the physical cylinder number of the LBA.
    
          iii is the physical sector number of the LBA.
    
          jjjjj ( "Symbols From Index" ) is the distance in symbols from index to the start of the
                LBA's sector.  This value is not supported for the system area and will
                always be F's for the system area slip list.
    
          kkkkk is the PBA of the LBA.
    
          m is the head number for the values in this row.
    
          nnn is the number of entries on this head.
    
          pppp is the total number of slipped sectors on this head.
    
          qqq is the toal number of entries on all heads.
    
          rrrr is the total number of slips on all heads.

    
    If the System Area Slip List is requested, the following information will be displayed.
    
          "System Slip Defect List"
          " "
          "                         log log   log     phys   phys"
          "    LBA    span   cumm   cyl  hd  sctr zn   cyl   sctr     SFI"
          "   aaaaa      b      c ddddd  e   fff   g  hhhhh   iii    jjjjj" ( repeated )
          " "
          "Head m: entries    nnn        slips     pppp" ( repeated for each head )
          "  Total Entries    qqq  Total Slips     rrrr"
    
       where
    
          aaaaa is the LBA of the first good sector AFTER the slipped section.  All the
                address information below applies to the this LBA.
    
          b is the length of the slipped area in sectors
    
          c is the sum of the lengths of all sectors up to and including this one.
    
          ddddd is the logical cylinder number of the LBA.
    
          e is the logical head of the LBA.
    
          fff is the logical sector number of the LBA.
    
          g is the zone number of the LBA.
    
          hhhhh is the physical cylinder number of the LBA.
    
          iii is the physical sector number of the LBA.
    
          jjjjj ( "Symbols From Index" ) is the distance in symbols of the start of the LBA's
                sector from index.  This value is not supported for the system area and will
                always be FFFFFF.
    
          m is the head number for the values in this row.
    
          nnn is the number of entries on this head.
    
          pppp is the total number of slipped sectors on this head.
    
          qqq is the toal number of entries on all heads.
    
          rrrr is the total number of slips on all heads.

    
    If the Reassigned Sectors List is requested, the following information will be displayed
    NOTE: If the "summary option" is requested, then only the header information (first two
    lines) will be displayed.
    
          "Reassigned Sectors List"
          "Entries: EEEE, Alts: AAAA, Removed: VVVV, Pending: GGGG"
          ""
          "Idx  LBA      PBA      LLLCHS of LBA PLPCHS of PBA SFI    Hours Msecs  Status   BBM Mask"
          "NNNN LLLLLLLL PPPPPPPP cccccc.h.ssss CCCCCC.H.SSSS YYYYYY HHHHH MMMMMM TTTTTTTT KKKKKKKK"
             .
             . (repeated for all requested Reassigned Sectors List entries)
             .
          "NNNN LLLLLLLL PPPPPPPP cccccc.h.ssss CCCCCC.H.SSSS YYYYYY HHHHH MMMMMM TTTTTTTT KKKKKKKK"
    
       where
    
          EEEE     is the total number of entries that are in the list.
    
          AAAA     is the total number of actual reassignments that have been performed.  (Note
                   that there may be more reassignments than are in the list because some alts
                   may have also been reassigned.)
    
          VVVV     is the total number of entries removed from the list.
    
          GGGG     is the total number of pending reassignments.
    
          NNNN     is the index of an entry in the list.
    
          LLLLLLLL is the original LBA of an entry in the list.
    
          PPPPPPPP is the PBA that the LBA is assigned to (whether it's reassigned or not).
    
          cccccc   is the logical cylinder associated with the LBA.  This is valid only if the
                   LBA has not been reassigned in which case "------" will be displayed.
    
          h        is the logical head associated with the LBA.  This is valid only if the LBA
                   has not been reassigned in which case "-" will be displayed.
    
          ssss     is the logical sector associated with the LBA.  This is valid only if the
                   LBA has not been reassigned in which case "----" will be displayed.
    
          CCCCCC   is the physical cylinder associated with the PBA.
    
          H        is the physical head associated with the PBA.
    
          SSSS     is the physical sector associated with the PBA.
    
          YYYYYY   is the distance from index in symbols of the PBA whether the LBA is
                   reassigned or not.
    
          HHHHH    is the number of power-on hours when the entry was made in the list.  If
                   the time-stamp feature is not supported then this field will be zero.
    
          MMMMMM   is the number of milliseconds passed the number of hours given above when
                   the entry was made in the list.  If the time-stamp feature is not supported
                   then this field will be zero.
    
          TTTTTTTT is an 8-bit bit-significant binary value which indicates the status of the
                   entry in the list.  The bits have the following meanings.

                      Bit 0 [0x01]: Entry has been marked as a bad block.
                      Bit 1 [0x02]: Entry has been alted and has been marked as a bad block.
                      Bit 2 [0x04]: Entry has been marked as do not write.
                      Bit 3 [0x08]: Entry has been marked as do not read.
                      Bit 4 [0x10]: Entry has been marked as do not report to host.
                      Bit 5 [0x20]: Entry has been marked as logged by SMART.
    
          KKKKKKKK is an 8-bit bit-significant binary value that indicates which 512-byte host
                   blocks in the 1K/4K disc sector are Alts, which is indicated by a set bit)
                   and which ones are pending reallocation (BBMs), which is indicated by a
                   cleared bit.  If this feature is not supported, then "--------" will be
                   displayed.
    

    
    If the Servo Flaws List is requested, the following information will be displayed.
    
          " Servo Flaws List"                 ( These three header lines are )
          "  log log   phy"                   (   repeated every 31 entries. )
          " head cyl   cyl  wedge  status"
          "   a  bbbb  cccc   dd   eeeeeee"   ( repeated for each defect )
          "Log head f: entries      ggg"      ( repeated for each head )
          "      Total Entries        h"
    
       where
    
          a is logical head of the servo flaw.
    
          bbbb is the logical cylinder of the servo flaw.
    
          cccc is the physical cylinder of the servo flaw.
    
          dd is the wedge number of the servo flaw.
    
          eeeeeeee is one or more of the following flags:
    
             "primary"      This is a primary (not grown) servo flaw.
    
             "grown"        This is a grown servo flaw.
    
             " + deallocd"  Sectors associated with this flaw have been deallocated.
    
             " + in PFT"    This sector is a grown flaw that has been added to
                            the Primary Flaw Table.
    
          f is the head number for this row.
    
          gggg is the number of entries on this head.
    
          h is the number of entries on all heads.

    
    If the P-List is requested, the following information will be displayed.
    
          " P List"                                       ( These three header lines are )
          "  phy   phy    log length"                     (   repeated every 31 entries  )
          " head   cyl    cyl in symb  SFI  flags
          "   a   bbbb   cccc dddd    eeeee ff gggg"      ( repeated for each entry )
          "Head f Entries: ii"                            ( repeated for each head )
          "  Total Entries: jj"
    
       where
    
          a is physical head of the entry.
    
          bbbb is the physical cylinder of the entry.
    
          cccc is the logical cylinder of the entry.  Invalid cylinders are reported as "FFFFF".
    
          dddd is the length of the defect in symbols.
    
          eeeee is the distance of the start of the defect from index in symbols.
    
          ff is the flags field:

             Bit 0 [0x01]: Servo flaw.
             Bit 1 [0x02]: Asperity flaw.
             Bit 2 [0x04]: GList to PList flaw.
             Bit 3 [0x08]: GList to PList data defect pad fill.
             Bit 4 [0x10]: GList to PList servo defect pad fill.
             Bit 5 unused
             Bit 6 [0x40]: Scratch fill flaw visited.
             Bit 7 [0x80]: Scratch fill flaw.
    
          gggg is an optional descripton of the flags field:
    
             "scr fill" is a scratch fill defect.
    
             "G to P" is an entry generated by merging the G List into the P List.
    
             "TA" is thermal asperity defect.
    
             "servo" is a servo flaw.

    
    If the Primary Servo Flaws List is requested, the following information will be displayed.
    
          " Primary Servo Flaws List"   ( These three header lines are )
          "  log log   phy"             (   repeated every 31 entries. )
          " head   cyl    cyl  wedge"
          "   a  bbbbb  ccccc   dd"     ( repeated for each entry )
          "Head e Entries: ff"          ( repeated for each head )
          " Total Entries: ggg"
    
       where
    
          a is logical head of the servo flaw.
    
          bbbbb is the logical cylinder of the servo flaw.
    
          cccc is the physical cylinder of the servo flaw.
    
          dd is the wedge number of the servo flaw.
    
          e is the head number for this row.
    
          ff is the number of entries on this head.
    
          ggg is the number of entries on all heads.

    
    If the Resident/Nonresident G List or Primary DST List is requested, the following
    information will be displayed.
    
          "AAAAAAAAAAAAAAAA                  aaa entries returned"
          "Total entries available: bbb"
          "    PBA    Len  Flags  Phy Cyl Hd  PhySctr    SFI"
          "  cccccc   dd     ee    fffff   g    hhh     iiii"
    
       where
    
          AAAAAAAAAAAAAAA is one of the following strings:
    
             "Nonresident GList"
             "Resident GList"
             "Primary DST List"
    
          aaa is the number of entries appearing below.
    
          bbb is the number of entries available on the drive.
    
          cccccc is the PBA of this entry.
    
          dd is the length of this entry in sectors.
    
          ee is one of the following flags:

             Bit 0 [0x1]: RESERVED -              Reserved for internal use.
             Bit 1 [0x2]: POST_FORMAT_DEFECT -    1=Post Format defect, 0=Not
             Bit 2 [0x4]: DEFECTIVE_SPARE -       1=Def spare, 0=Not
             Bit 3 [0x8]: GROWN_TO_PRIMARY_LIST - 1=G->P, 0=Not
    
          fffff is the physical cylinder of this entry.
    
          g is the head of this entry.
    
          hhh is the physical sector of this entry.
    
          iiii is the distance in symbols of the start of this defect from index.

    If the Data Scrub List is requested, the following information will be displayed.
    
       If an error occurred, in addition to the generic diagnostic error information, the
       following will be displayed.
    
             "R/W Error Code XXXXXXXX"
    
          where
    
             XXXXXXXX is the R/W Sense Error Code.
    
       If no error occurred, the following will be displayed.
    
             "Data Scrub List (ss..ss)"
             "Rev: aaaa, Max scrubs allowed: bbbb, Total entries: cccc"
    
             "LBA      PBA      Cnt  Logical CHS   Physical CHS  SFI"
             "dddddddd eeeeeeee ffff gggggg.h.iiii jjjjjj.k.llll mmmmmmmm"
                 .
                 .  (repeated for all requested Data Scrub List entries)
                 .
             "dddddddd eeee ffffffff gggggg.h.iiii jjjjjj.k.llll mmmmmmmm"
    
          where
    
             ss..ss   is a string that is either "Enabled" or "Disabled". (Data scrubbing
                      can be enabled or disabled by setting the state of the AMPS feature bit
                      called "ENABLE_MICKEY_CERT".)
    
             aaaa     is the format revision of the Data Scrub List.
    
             bbbb     is the maximum number of scrub attempts that are allowed before the LBA is
                      reallocated.
    
             cccc     is the total number of Data Scrub entries in the list.
    
             dddddddd is the Logical Block Address (LBA) of this entry in the Data Scrub List.
    
             eeeeeeee is the Physical Block Address (PBA).
    
             ffff     is the number of successful scrub attempts for this entry.
    
             gggggg   is the logical track.
    
             h        is the logical head.
    
             iiii     is the logical sector.
    
             jjjjjj   is the physical track.
    
             k        is the physical head.
    
             llll     is the physical sector.
    
             mmmmmmmm is the symbols from index. (If SFI is invalid, FFFFFFFF will be displayed.)

    
    If the TA List information is requested, the following information will be displayed.
    
          "TA List"
          "Total Entries: LLLL, Entries Retrieved: RRRR"
    
          "Idx Track   Hd"
          "NNN TTTTTT  HH"
             .
             . (repeated for all requested TA List entries)
             .
          "NNN TTTTTT  HH"
    
       where
    
          LLLL     is the total number of entries that are on the drive.
    
          RRRR     is the number of entries retrieved by this command.
    
          NNN      is the index of the TA List entry.
    
          TTTTTT   is the physical track that the TA was found on.
    
          HH       is the head that the TA was found on.  (If the TA List does not support
                   recording head information, then FF will be displayed in this field.)

    
    If the Defective Tracks List information is requested, the following information will be
    displayed.
    
          "Defective Tracks List"
          "Total Entries: LLLL, Entries Retrieved: RRRR"
    
          "Idx Track   Hd Type"
          "NNN TTTTTT  HH YY"
             .
             . (repeated for all requested Defective Tracks List entries)
             .
          "NNN TTTTTT  HH YY"
    
       where
    
          LLLL     is the total number of entries that are on the drive.
    
          RRRR     is the number of entries retrieved by this command.
    
          NNN      is the index of the Defective Tracks List entry.
    
          TTTTTT   is the physical track that is defective.
    
          HH       is the head.
    
          YY       is the type of defective track.  It may be one of the following.
                   0x00: Entry is derived from the servo flaws list.
                   0x01: Entry is derived from the TA list.

 Examples:

    Example #1:
    Read the Data Scrub List, disable it, and read it again to ensure that the firmware is
    honoring the AMPS bit.  Then restore Congen defaults.

       F3 T>V200                     <-- Note whether scrubbing is "Enabled" or "Disabled"
       F3 T>F"ENABLE_MICKEY_CERT",0
       F3 T>V200                     <-- Scrubbing should be "Disabled"
       F3 T>F,,22

    Example #2:
    Read the Data Scrub List, temporarily initialize it, and read it again to ensure that
    the firmware has properly initialized the list. (Power-cycling will restore the list.)

       F3 T>V200
       F3 T>i200,,22
       F3 T>V200

    Example #3:
    Display both the TA List and the first 512 bytes of the disk file from which it is
    sourced.

       F3 T>V400
       F3 T>r1D,,,,200,300

 Revision History:

    0001.0000   Initial revision.
    0002.0000   Correct headers to servo flaws list and primary servo flaws list.
    0003.0000   Improve spacing of G List output.
    0004.0000   Make GLists (V40, V80) and primary DST list ( V100) default to displaying
                whole list.
    0011.0000   Combined the PSG Diagnostic Error Codes (PSGDEC) and the Diagnostic External
                Test Service Error Codes (DETSEC) into a single set of Diagnostic Error Codes
                (DiagError).
    0012.0000   Add head column to reassigned sectors table serial port output.  No change
                to bridge router interface.
    0013.0000   Change P List display to be phys head, phys cyl, log cyl.  Correct cylinder
                numbers displayed.
                Correct cylinder numbers displayed in Servo Flaws List.
    0014.0000   Changed V40, V80, and V100 lists so the entire lists are displayed by default.
    0014.0001   Added ability to display the Data Scrub List.
    0014.0002   Added ability to display the TA List.
    0014.0003   Added ability to display the Defective Tracks List.
    0015.0000   Fixed Rlist reporting issue with Reassigned Sectors List.  Refactored the
                command so that it interacts with a "proper" SDBP interface.