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