11 /* #define DEBUG_INT */
14 int do_int25(struct sigcontext_struct
*context
)
16 BYTE
*dataptr
= PTR_SEG_OFF_TO_LIN(DS
, BX
);
19 if(!DOS_ValidDrive(AL
))
22 AX
= 0x0101; /* unknown unit */
24 /* push flags on stack */
26 setword(PTR_SEG_OFF_TO_LIN(SS
,SP
), (WORD
) EFL
);
31 begin
= getdword(dataptr
);
32 length
= getword(&dataptr
[4]);
33 dataptr
= (BYTE
*) PTR_SEG_TO_LIN(getdword(&dataptr
[6]));
39 dprintf_int(stdnimp
, "int25: abs diskread, drive %d, sector %ld, "
40 "count %ld, buffer %d\n", AL
, begin
, length
, (int) dataptr
);
42 memset(dataptr
, 0, length
* 512);
44 if (begin
== 0 && length
> 1)
45 *(dataptr
+ 512) = 0xf8;
52 /* push flags on stack */
54 setword(PTR_SEG_OFF_TO_LIN(SS
,SP
), (WORD
) EFL
);