Action: | Provides a direct link into the XIOS to allow data to be read from a specified memory location to disc, starting at a specified logical disc sector into a specified memory location. |
On entry: | AL = Drive number (0 = A:, 1 = B: etc) CX = number of sectors to read DX = start sector relative (logical) number DS:BX = Segment offset of DTA |
Returns: | Carry clear if successful Carry set if failed, AX = Error code, as follows AL= 00 - write protect 01 -unknown unit 02 - drive not ready 03 - unknowncommand 04 - data error (CRC failed) 05 - Bad request structure length 06 - seek error 07 - unknown media type 08 - sector not found 09 - printer out (of paper) 0Ah - write fault 0Bh - read fault 0Ch - general failure AH = 80h - attachment failed to respond 40h - seek operation failed 20h - controller failed 10h - data error (CRC failed) 08 - DMAfailure 04 - requested sector not found 03 - write protect fault 02 - bad address mark 01 - bad command |
Notes: | All register contents except those of
the segment registers may be destroyed. When this call returns, the CPU flags, originally pushed onto the stack, are still on the stack. The calling program should issue a POPF instruction or ADD SP,2 to prevent uncontrolled stack growth and to make earlier data pushed on the stack accessible correctly. Logical disc sectors begin at one (unlike BBC media), so the total number of sectors per disc is also the number of the last sector. Sectors are read logically by this call so, although it performs as a hardware command, formatting skew factors are catered for. |