Interrupt 25h Absolute Disk Read(except DOS 4.0/Compaq DOS 3.31 32M partition (see next page))
entry AL drive number (0=A, 1=B, etc)
DS:BX pointer to 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\24 in low half of DI
AH 80h attachment failed to respond
40h seek operation failed
20h controller failed
10h data error (bad CRC)
08h DMA failure
04h requested sector not found
03h write-protected disk
02h bad address mark
01h bad command
note Original flags on stack!
Interrupt 25h DOS 4.0/Compaq DOS 3.31 - ABSOLUTE DISK READ
(32M hard-disk partition)
entry AL drive number (0=A, 1=B, etc)
CX 0FFFFh
DS:BX Packet address
DWORD sector number
WORD number of sectors to read
DWORD transfer address
return same as above?
note Partition is potentially 32Mb (and requires this form of the call) if
bit 1 of struct -device attribute code in device\drivers -header is
set
Interrupt 25h Absolute Disk Read
Sample Code Ref PC Magazine Vol 9, No 20, Pg 498
This handy little program returns the status of any floppy disk drive as the
error level in a batch file.
DriveStat:
MOV AL,[5C] ;Get first char of command line
AND AL,5F ;Capitalize it
SUB AL,41 ;Set to 0 for A:, 1 for B:, etc
XOR CX,CX
INC CX ;Set CX to 0001 (Read one sector)
XOR DX,DX ;Set DX to 0000 (Start reading at sector zero)
MOV BX,BufAddr ;Set BC to Address of a fake buffer one sector long
INT 25 ;Call BIOSDiskReadAbs
MOV AH,4C ;Set AH to 4C (DOSTermProcWErrLvl)
INT 21 ;Call DOS