DOS Absolute disk read (INT 25h)
Normal DOS (2.x or 3.x, may also be used in 4.x if partition is
smaller than 32 MB):
Entry:
AL = Drive number (0=A, 1=B, etc)
DS:BX = Disk Transfer Address (buffer)
CX = Number of sectors to read
DX = First relative sector to read
Return:
CF = 1 if error
AL = error code issued to INT 24h in low half of DI
AH = 80h if attachment failed to respond
40h if seek operation failed
20h if controller failed
10h if data error (bad CRC)
08h if DMA failure
04h if requested sector not found
03h if write-protected disk
02h if bad address mark
01h if bad command
Note: ORIGINAL FLAGS ON STACK!
Note: AX = 0207h if disk is DOS 4.0 disk, and partition >32MB.
PC DOS 4.0
Entry:
AL = Drive number (0=A, 1=B, etc)
DS:BX = Pointer to request package
CX = Number of sectors to read
DX = First relative sector to read
Return:
CF = 1 if error
AL = error code issued to INT 24h in low half of DI
AH = 80h if attachment failed to respond
40h if seek operation failed
20h if controller failed
10h if data error (bad CRC)
08h if DMA failure
04h if requested sector not found
03h if write-protected disk
02h if bad address mark
01h if bad command
Request package:
Name Size ; Contens
RBA DD ; First sector to read (0=first on disk)
Count DW ; Number of sectors to read
Buffer DD ; Pointer to databuffer, where data is placed.
COMPAQ DOS 3.31 - >32M hard-disk partition
Entry:
AL = Drive number (0=A, 1=B, etc)
CX = FFFFh
DS:BX = Packet address
DWORD sector number
WORD number of sectors to read
DWORD transfer address
Return:
Same as above???
Note: partition is potentially >32M (and requires this form
of the call) if bit 1 of device attribute word in device driver
is set.