5.3 Host Commands
C141-E042-01EN 5-19
The implementation of the READ MULTIPLE command is identical to that of the
READ SECTOR(S) command except that the number of sectors is specified by
the SET MULTIPLE MODE command are transferred without intervening
interrupts. In the READ MULTIPLE command operation, the DRQ bit of the
Status register is set only at the start of the data block, and is not set on each
sector.
The number of sectors (block count) to be transferred without interruption is
specifed by the SET MULTIPLE MODE command. The SET MULTIPLE
MODE command should be executed prior to the READ MULTIPLE command.
When the READ MULTIPLE command is issued, the Sector Count register
contains the number of sectors requested (not a number of the block count or a
number of sectors in a block).
Upon receipt of this command, the device executes this command even if the
value of the Sector Count register is less than the defined block count (the value
of the Sector Count should not be 0).
If the number of requested sectors is not divided evenly (having the same number
of sectors [block count]), as many full blocks as possible are transferred, then a
final partial block is transferred. The number of sectors in the partial block to be
transferred is n where n = remainder of (“number of sectors”/”block count”).
If the READ MULTIPLE command is issued before the SET MULTIPLE MODE
command is executed or when the READ MULTIPLE command is disabled, the
device rejects the READ MULTIPLE command with an ABORTED COMMAND
error.
If an error occurs, reading sector is stopped at the sector where the error occurred.
Command block registers contain the cylinder, the head, the sector addresses (in
the CHS mode) or the logical block address (in the LBA mode) of the sector
where the error occurred, and remaining number of sectors that had not
transferred after the sector where the error occurred.
An interrupt is generated when the DRQ bit is set at the beginning of each block or a
partial block.
Figure 5.2 shows an example of the execution of the READ MULTIPLE
command.
•
Block count specified by SET MULTIPLE MODE command = 4 (number of
sectors in a block)
•
READ MULTIPLE command specifies;
Number of requested sectors = 9 (Sector Count register = 9)
↓
Number of sectors in incomplete block = remainder of 9/4 =1