At command completion (I/O registers contents to be read)
1F7H(ST) |
|
|
| Status information | |||
|
|
|
|
|
|
| |
1F6H(DH) | × | L | × |
| DV | End head No. /LBA [MSB] | |
|
|
|
|
|
|
| |
1F5H(CH) |
| End cylinder No. [MSB] | / LBA | ||||
1F4H(CL) |
| End cylinder No. [LSB] | / LBA | ||||
1F3H(SN) |
| End sector No. |
| / LBA [LSB] | |||
1F2H(SC) |
|
|
| 00 (*1) |
| ||
1F1H(ER) |
|
|
| Error information |
*1 If the command is terminated due to an error, the remaining number of sectors of which data was not transferred is set in this register.
(2)READ MULTIPLE (X'C4')
This command operates similarly to the READ SECTOR(S) command. The device does not generate an interrupt (assertion of the INTRQ signal) on each every sector. An interrupt is generated after the transfer of a block of sectors for which the number is specified by the SET MULTIPLE MODE command.
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 specified 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.
5 - 18 |
|