blob: aa281d7f50450069a70ce6a5ae4625f056b7d0af [file] [log] [blame]
#include <stdio.h>
#include <stdlib.h>
#include "registers.h"
#include "msdos.h"
#include "ldt.h"
#include "wine.h"
#include "miscemu.h"
#include "dos_fs.h"
#include "stddebug.h"
/* #define DEBUG_INT */
#include "debug.h"
/**********************************************************************
* INT_Int26Handler
*
* Handler for int 26h (absolute disk read).
*/
void INT_Int26Handler( struct sigcontext_struct sigcontext )
{
#define context (&sigcontext)
BYTE *dataptr = PTR_SEG_OFF_TO_LIN(DS, BX);
DWORD begin, length;
if(!DOS_ValidDrive(AL))
{
SetCflag;
AX = 0x0101; /* unknown unit */
return;
}
if (CX == 0xffff) {
begin = getdword(dataptr);
length = getword(&dataptr[4]);
dataptr = (BYTE *) PTR_SEG_TO_LIN(getdword(&dataptr[6]));
} else {
begin = DX;
length = CX;
}
dprintf_int(stdnimp,"int26: abs diskwrite, drive %d, sector %ld, "
"count %ld, buffer %d\n", AL, begin, length, (int) dataptr);
ResetCflag;
#undef context
}