K6602637
Rev.3
02.27.01
- 45 -
6.3.2.3.2 Read Buffer [E4h]
The Read Buffer command enables the host to read the current contents of the device's sector buffer.
When this command is issued, the device sets BSY, sets up the sector buffer for a read operation,
sets DRQ, clears BSY, and generates an interrupt. The host then reads up to 512 bytes of data from
the sector buffer.
6.3.2.3.3 Read Sectors [20h, 21h]
This command reads sectors as specified in the Sector Count Register. The read operation begins at
the sector specified in the Sector Number Register. An implied seek is done if needed, after which
the device searches for the target sector. If the target sector is not found within two index periods,
then with retries disabled an ID Not Found Error is posted, but with retries other attempts are made
to try and read the target sector. DRQ is set prior to data transfer regardless of the presence or
absence of an error condition. At command completion, the Command Block Registers contain the
cylinder, head, and sector numbers of the last sector read. If an error occurs, the read terminates at
the sector where the error occurred. The Command Block Registers contain the cylinder, head, and
sector numbers where the error occurred.
6.3.2.3.4 Read Long [22h, 23h]
The Read Long command performs similarly to the Read Sectors command except that it returns the data
and the ECC bytes contained in the data field of the desired sector. During a Read Long command, the
device does not check the ECC bytes to determine if there has been a data error. Only single sector read
long operations are supported. The number of ECC bytes transferred will be 4 Bytes (Default). If the ECC
transfer length is changed by Feature register 44h, 24 bytes of ECC will be transferred.
6.3.2.3.5 Read Multiple [C4h]
This command is similar to the Read Sectors command, except interrupts are not generated on every sector,
but on the transfer of a block which contains the number of sectors defined by a Set Multiple command. The
number of sectors defined by a Set Multiple command is transferred without intervening interrupts. DRQ
qualification of the transfer is required only at the start of the data block, not on each sector. The Set
Multiple Mode command, which must be executed prior to the Read Multiple command, sets the block count
of sectors to be transferred. When the Read Multiple command is issued, the Sector Count Register
contains the number of sectors (not the number of blocks or the block count) requested. If the number of
requested sectors is not evenly divisible by the block count, as many full blocks as possible are transferred,
followed by a final, partial block transfer for n sectors, where n = residue of {Sector Count/Sector Count per
Block}. Disk errors encountered during Read Multiple commands are posted at the beginning of the block or
partial block transfer, but DRQ is still set and the data transfer should be executed as it normally would,
including transfer of corrupted data, if any. Subsequent blocks or partial blocks are transferred only if the
error was a correctable data error. All other errors cause the command to stop after transfer of the block that
contained the error. Interrupts are generated when DRQ is set at the beginning of each block or partial block.