Availability:
     Level 2    , 'r'

  Quick Help:
     Read Long CHS or Read System CHS, r[LongSec],[LongSecsOrSysSec],[SysSecs],[LongPhySecOpt],[LongOpts],[SysOpts]

  Description:
    This command performs either a read long of the specified sectors or a System Area
    read starting at the specified sector on the target track for the specified number
    of sectors.  For a read long operation, the data and ECC bytes will be read into
    the Diagnostic Read Buffer.  For a System Area read, the data will be read into
    the Diagnostic Read Buffer.

  Input Parameters:

     0 - Read Long Starting Logical or Physical Sector Address.
    
         If this parameter is entered, a Read Long operation will be performed starting
         at the sector address specified by this parameter.  If any value is entered for
         Parameter 3, this parameter contains a physical sector address, else it contains
         a User Area logical sector address.
    
         If this parameter is not entered, a System Area Read operation will be performed.
    
           Type:    Unsigned 16-bit value
    
           Range:   0 to maximum logical or physical sector address on the target track
    
           Default: none
    
     1 - Read Long Transfer Length / System Area Read Starting Logical Sector Address.
    
         If Parameter 0 is entered, this parameter is the number of consecutive sectors
         to read long.
    
         If Parameter 0 is not entered, then this parameter contains the address of the
         first logical sector to be read on the System Area target track.
    
           Type:    Unsigned 32-bit value
    
           Range:   0 to 0xFFFFFFFF
    
           Default: For a Read Long operation, the default Transfer Length is 1.
    
                    For a System Area Read operation, the default starting Logical
                    Sector Address is 0.
    
     2 - System Area Read Transfer Length.
    
         If Parameter 0 is entered, this parameter is not used.
    
         If Parameter 0 is not entered, this parameter is the number of consecutive
         System Area sectors to read.
    
           Type:    Unsigned 32-bit value
    
           Range:   0 to 0xFFFFFFFF
    
           Default: If the System Area Logical Sector Address was entered and the Transfer
                    Length was not entered, then only the specified sector will be read.
    
                    If both the System Area Logical Sector Address and Transfer Length are
                    not entered, then the Transfer Length will be set based on the Test
                    Space that is selected.  If the Random Transfer Length option is
                    selected, a random value will be used that is less than or equal to
                    the number of sectors remaining on the track.  If the Random Transfer
                    Length option is not selected, the number of sectors remaining on the
                    track will be read.
    
                    If a Transfer Length is entered, it will be limited to the number of
                    sectors remaining on the track.
    
     3 - Read Long Physical Sector Address Flag.
    
         If Parameter 0 is entered and any value is entered for this parameter, then
         Parameter 0 specifies a physical sector address.  If Parameter 0 is entered
         and this parameter is not entered, then Parameter 0 specifies a User Area
         logical sector address.
    
         If Parameter 0 is not entered, then this parameter is not used.
    
           Type:    Unsigned 16-bit value
    
           Range:   0 to 0xFFFF
    
           Default: None
    
     4 - Read Long Options.
    
         If Parameter 0 is not entered, this parameter is not used.
    
         If Parameter 0 is entered, this parameter is a bit-significant value that specifies
         the following options for a Read Long operation.
    
           Bits 15-1:  not used.
    
           Bit 0:      Enable ECC Correction for Read Long.
       
                       If this bit is set ECC Correction will be enabled for the read
                       long operation, else ECC Correction will be disabled.
    
           Type:    Unsigned 16-bit value
    
           Range:   0 to 0xFFFF
    
           Default: 0 (ECC Correction disabled)
    
     5 - System Area Read Options.
    
         If Parameter 0 is entered, this parameter is not used.
    
         If Parameter 0 is not entered, this parameter is a bit-significant value that
         allows the user to select the following options for a System Area Read operation.
    
           Bits 15-5:  not used.
    
           Bit 4:      Read All Test Space Sectors.
    
                       If this bit is set, all of the System Area Sectors in the Test
                       Space will be read, else only the System Area Sectors specified
                       by Parameters 1 and 2 will be read.
    
           Bit 3:      not used.
     
           Bit 2:      Rotate Buffer Sector Offset.
     
                       If this bit is set, the Target Buffer Sector Offset will be rotated
                       by 1 prior to the execution of this diagnostic command.
                       This bit was originally added to help writing random data pattern
                       reduce execution time by not having to re-fill the diagnostic buffer
                       with new random data pattern, which takes great amount of time,
                       but just rotating the Target Buffer Sector Offset at every time this
                       diagnostic command is executed with this option set.
                       To see or change the current Targer Buffer Sector Offset, please refer
                       all Level 'A', Set Test Space, diagnostic command for detail how-to.
    
    
           Bit 1:      Enable Dynamic Sparing.
    
                       If this bit is set, sectors containing media defects that meet
                       the failure criteria will be spared.
    
    
           Bit 0:      Continue On Error.
    
                       If this bit is set and an error occurs, the read operation will
                       continue and attempt to read all of the requested sectors.  Each
                       error encountered will be displayed.
    
           Type:    Unsigned 16-bit value
    
           Range:   0 to 0xFFFF
    
           Default: 0    (Read the requested sectors,
                          Disable Dynamic Sparing,
                          Stop On Error)
    
  Output Data:

    If an error occurred, the following information will be displayed.
    
          "DiagError aaaaaaaa R/W Status c R/W Error dddddddd"
    
       and
    
          "Next User LBA eeeeeeee LLL CHS ffffff.g.hhhh PLP CHS iiiiii.j.kkkk"
          "Remaining Transfer Length llllllll"
    
       or
    
          "Next System LBA eeeeeeee LLL CHS ffffff.g.hhhh PLP CHS iiiiii.j.kkkk"
          "Remaining Transfer Length llllllll"
    
       where
    
          aaaaaaaa is the Diagnostic Error Code
    
          c is the status returned by the R/W subsystem
    
                0 = R/W request completed successfully with error recovery
                1 = R/W request completed successfully (no error recovery performed)
                2 = R/W request failed
    
          dddddddd is the error code returned by the R/W subsystem
    
          eeeeeeee is the Disk Logical Block Address of the sector in error
    
          ffffff is the Logical Cylinder Address of the sector in error
    
          g is the Logical Head Address of the sector in error
    
          hhhh is the Logical Sector Address of the sector in error
    
          iiiiii is the Physical Cylinder Address of the sector in error
    
          j is the Logical Head Address of the sector in error
    
          kkkk is the Physical Sector Address of the sector in error
    
          llllllll is the number of sectors remaining to be read or written
    
    If the Verbose Formatted ASCII Data Output Mode is selected, the Verbose Mode option
    bits will enable the following data to be output when set.
    
       Bit 0:      Enables the R/W Status and R/W Error to be displayed
       Bit 1:      Enable the Next Address to be displayed
       Bit 2:      Enables the Track Position and Track Follow Offset to be displayed
       Bit 3:      Enables the Target Address to be displayed
       Bit 4:      Enables the Recovery Status to be displayed
       Bit 5:      Enables the Fault Status to be displayed
       Bit 6:      Enables the Elapsed Time to be displayed
       Bits 31-7:  NA
    
    If Bit 0 is set, the R/W Status and R/W Error will be displayed even if no error
    occurred.  The data displayed will be formatted as shown above.
    
    If Bit 1 is set, the Next Address will be displayed even if no error occurred.  The
    data displayed will be formatted as shown above.
    
    If Bit 2 is set, the Track Position and Track Follow Offset will be displayed as
    follows.
    
          "Read Position, Persistent Offset m.m% Total Offset n.n%"          or
          "Write Position, Persistent Offset m.m% Total Offset n.n%"         or
          "Write Header Position, Persistent Offset m.m% Total Offset n.n%"
    
       where
    
          m.m is the Persistent Track Follow Offset in units of percentage of track width
    
          n.n is the Total Track Follow Offset in units of percentage of track width
    
    If Bit 3 is set, the Target Address will be displayed as follows.
    
          "Target User LBA pppppppp LLL CHS qqqqqq.r.ssss PLP CHS tttttt.u.vvvv"
          "Starting Transfer Length wwwwwwww"
    
       or
    
          "Target System LBA pppppppp LLL CHS qqqqqq.r.ssss PLP CHS tttttt.u.vvvv"
          "Starting Transfer Length wwwwwwww"
    
       where
    
          pppppppp is the starting Disk Logical Block Address
    
          qqqqqq is the starting Logical Cylinder Address
    
          r is the starting Logical Head Address
    
          ssss is the starting Logical Sector Address
    
          tttttt is the starting Physical Cylinder Address
    
          u is the starting Logical Head Address
    
          vvvv is the starting Physical Sector Address
    
          wwwwwwww is the starting Transfer Length
    
    If Bit 4 is set, the Recovery Status will be displayed as follows.
    
          "Recovered User LBA AAAAAAAA LLL CHS BBBBBB.C.DDDD PLP CHS EEEEEE.F.GGGG"
          "Recovery Flags HHHH Count II"
    
       or
    
          "Recovered System LBA AAAAAAAA LLL CHS BBBBBB.C.DDDD PLP CHS EEEEEE.F.GGGG"
          "Recovery Flags HHHH Count II"
    
       where
    
          AAAAAAAA is the Disk Logical Block Address of the last recovered sector
    
          BBBBBB is the Logical Cylinder Address of the last recovered sector
    
          C is the Logical Head Address of the last recovered sector
    
          DDDD is the Logical Sector Address of the last recovered sector
    
          EEEEEE is the Physical Cylinder Address of the last recovered sector
    
          F is the Logical Head Address of the last recovered sector
    
          GGGG is the Physical Sector Address of the last recovered sector
    
          HHHH are the Recovery Flags reported by the Read/Write code
    
          II is the Recovery Count reported by the Read/Write code
    
    If Bit 5 is set, the Fault Status will be displayed as follows.
    
          "Drive Fault Status JJJJ Preamp Fault Status KKKK"
          "Read Channel Faults:
           SRC Fault Reg 190 = aaaa
           SRC Fault Reg 191 = bbbb
           SID Reg 20B = cccc
           SID Reg 26C = dddd
           SID Reg 26F = eeee
           SID Reg 251 = fffff
    
       where
    
          JJJJ is the Drive Fault Status reported by the Read/Write code
    
          KKKK is the Preamp Fault Status reported by the Read/Write code
    
          aaaa  is the SRC channel fault Register 190h value
    
          bbbb is the SRC channel fault register 191h value
    
          cccc is the SID channel fault register 20bh   value
    
          dddd is the SID channel fault reg 26ch   value
    
          eeee is the SID Channel fault reg 251h value
    
    If Bit 6 is set, the Elapsed Time for the read/write operation will be displayed.

    
       "Elapsed Time a mins b secs"  or
       "Elapsed Time b.c secs"       or
       "Elapsed Time c.d msecs"
    
    where
    
       a is minutes
       b is seconds
       c is milliseconds
       d is microseconds
    
  Examples:
    Example #1:
       To read a single logical system sector
       (in this case logical sector 23 on logical system cylinder 45 head 1)

          F3 2>A0
          F3 2>S45,1,,,,1
          F3 2>r,23

    Example #2:
       To read multiple logical system sectors
       (in this case logical sectors 23 to 26 on logical system cylinder 45 head 1)

          F3 2>A0
          F3 2>S45,1,,,,1
          F3 2>r,23,4

    Example #3:
       To read all of the logical system sectors on a track
       (in this case all logical sectors on logical system cylinder 45 head 1)

          F3 2>A0
          F3 2>S45,1,,,,1
          F3 2>r

    Example #4:
       To read all of the logical system sectors on multiple tracks
       (in this case all logical sectors on logical system cylinders 45 to 49 head 0)

       Note: You must seek to the track before the first one to be read.

          F3 2>A3
          F3 2>S44,0,,,,1
          F3 2>L,5
          F3 2>r

    Example #5:
       To read all of the logical system sectors on a track and continue on error
       (in this case all logical sectors on logical cylinder 45 head 0)

       Note: An error message will be displayed for each sector in error.

          F3 2>A0
          F3 2>S45,0,,,,1
          F3 2>r,,,,,1

    Example #6:
       To read all of the logical system sectors in the test space and continue on error

       Note: The Test Space is selected by the all level 'A' command.  An error
       message will be displayed for each sector in error.

          F3 2>r,,,,,11

    Example #7:
       To read long a single logical sector
       (in this case logical sector 32 on logical cylinder 54 head 0)

          F3 2>A0
          F3 2>S54,0
          F3 2>r32

    Example #8:
       To read long multiple logical sectors
       (in this case logical sectors 32 to 33 on logical cylinder 54 head 0)

          F3 2>A0
          F3 2>S54,0
          F3 2>r32,2

    Example #9:
       To read long a single physical sector
       (in this case physical sector 32 on physical cylinder 54 head 0)

          F3 2>A0
          F3 2>s54,0,22
          F3 2>r32,,,1

    Example #10:
       To read long multiple physical sectors
       (in this case physical sectors 32 to 33 on physical cylinder 54 head 0)

          F3 2>A0
          F3 2>s54,0,22
          F3 2>r32,2,,1

    Example #11:
       To read a single logical system sector to a specific sector offset in the diagnostic
       read buffer
       (in this case logical sector 23 on logical system cylinder 45 head 1,
        to the sector offset of 5 in the diagnostic read buffer)

          F3 2>A0
          F3 2>AF,5
          F3 2>S45,1,,,,1
          F3 2>r,23

    Example #12:
       To rotate the buffer sector offset by 1 and read a single logical system sector to the
       rotated sector offset in the diagnostic read buffer
       (This example assumes user ran the Example #11 above right before this example,
        in this case logical sector 24 on logical system cylinder 45 head 1,
        to the sector offset of 6 in the diagnostic read buffer)

          F3 2>r,24,,,,4

  Revision History:

    0001.0000   Initial revision.
    0001.0001   Eliminated the Enable ZAP Updates and Enable Track Skipping option.
    0001.0002   Added new Rotate Buffer Sector Offset option to the bit 2 of the parameter 5.
    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).