65
FDC DATA TRANSFER COMMANDS
All of the Read Data, Write Data and Verify type commands use the same parameter bytes and return
the same results information, the only difference being the coding of bits 0-4 in the first byte.
An implied seek will be executed if the feature was enabled by the Configure command. This seek is
completely transparent to the user. The Drive Busy bit for the drive will go active in the Main Status
Register during the seek portion of the command. If the seek portion fails, it will be reflected in the
results status normally returned for a Read/Write Data command. Status Register 0 (ST0) would
contain the error code and C would contain the cylinder on which the seek failed.
Read Data
A set of nine (9) bytes is required to place the FDC in the Read Data Mode. After the Read Data
command has been issued, the FDC loads the head (if it is in the unloaded state), waits the specified
head settling time (defined in the Specify command), and begins reading ID Address Marks and ID
fields. When the sector address read off the diskette matches with the sector address specified in the
command, the FDC reads the sector's data field and transfers the data to the FIFO.
After completion of the read operation from the current sector, the sector address is incremented by
one and the data from the next logical sector is read and output via the FIFO. This continuous read
function is called "Multi-Sector Read Operation".
Upon receipt of TC, or an implied TC (FIFO
overrun/underrun), the FDC stops sending data but will continue to read data from the current sector,
check the CRC bytes, and at the end of the sector, terminate the Read Data Command.
N determines the number of bytes per sector (see Table 26 below). If N is set to zero, the sector size
is set to 128. The DTL value determines the number of bytes to be transferred. If DTL is less than
128, the FDC transfers the specified number of bytes to the host. For reads, it continues to read the
entire 128-byte sector and checks for CRC errors. For writes, it completes the 128-byte sector by
filling in zeros. If N is not set to 00 Hex, DTL should be set to FF Hex and has no impact on the
number of bytes transferred.
The amount of data which can be handled with a single command to the FDC depends upon MT
(multi-track) and N (number of bytes/sector).
Table 26 - Sector Sizes
N
SECTOR SIZE
00
01
02
03
..
07
128 bytes
256 bytes
512 bytes
1024 bytes
...
16 Kbytes