INT 25h Absolute disc read
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.