Added support for DPMI RawModeSwitch.
This commit is contained in:
parent
92b376d61d
commit
800dbf2994
|
@ -32,6 +32,7 @@ typedef struct {
|
|||
void (WINAPI *CallRMProc)( CONTEXT86 *context, int iret );
|
||||
void (WINAPI *AllocRMCB)( CONTEXT86 *context );
|
||||
void (WINAPI *FreeRMCB)( CONTEXT86 *context );
|
||||
void (WINAPI *RawModeSwitch)( CONTEXT86 *context );
|
||||
|
||||
/* I/O functions */
|
||||
void (WINAPI *SetTimer)( unsigned ticks );
|
||||
|
|
15
msdos/dpmi.c
15
msdos/dpmi.c
|
@ -65,6 +65,7 @@ BOOL DPMI_LoadDosSystem(void)
|
|||
GET_ADDR(CallRMProc);
|
||||
GET_ADDR(AllocRMCB);
|
||||
GET_ADDR(FreeRMCB);
|
||||
GET_ADDR(RawModeSwitch);
|
||||
GET_ADDR(SetTimer);
|
||||
GET_ADDR(GetTimer);
|
||||
GET_ADDR(inport);
|
||||
|
@ -190,6 +191,15 @@ static void FreeRMCB( CONTEXT86 *context )
|
|||
else Dosvm.FreeRMCB( context );
|
||||
}
|
||||
|
||||
static void RawModeSwitch( CONTEXT86 *context )
|
||||
{
|
||||
if (!Dosvm.RawModeSwitch)
|
||||
{
|
||||
ERR("could not setup real-mode calls\n");
|
||||
return;
|
||||
}
|
||||
else Dosvm.RawModeSwitch( context );
|
||||
}
|
||||
|
||||
/**********************************************************************
|
||||
* INT_Int31Handler (WPROCS.149)
|
||||
|
@ -207,6 +217,11 @@ void WINAPI INT_Int31Handler( CONTEXT86 *context )
|
|||
DWORD dw;
|
||||
BYTE *ptr;
|
||||
|
||||
if (context->SegCs == DOSMEM_dpmi_sel) {
|
||||
RawModeSwitch( context );
|
||||
return;
|
||||
}
|
||||
|
||||
RESET_CFLAG(context);
|
||||
switch(AX_reg(context))
|
||||
{
|
||||
|
|
|
@ -356,9 +356,6 @@ static void do_int2f_16( CONTEXT86 *context )
|
|||
break;
|
||||
|
||||
case 0x87: /* DPMI installation check */
|
||||
#if 1 /* DPMI still breaks pkunzip */
|
||||
if (ISV86(context)) break; /* so bail out for now if in v86 mode */
|
||||
#endif
|
||||
{
|
||||
SYSTEM_INFO si;
|
||||
GetSystemInfo(&si);
|
||||
|
|
Loading…
Reference in New Issue