Added stubs for several VxDs / interrupts.
This commit is contained in:
parent
980992a3ca
commit
ab635b211f
|
@ -85,7 +85,7 @@ type win16
|
|||
162 register INT_Int3eHandler(word) BUILTIN_DefaultIntHandler
|
||||
163 register INT_Int3fHandler(word) BUILTIN_DefaultIntHandler
|
||||
164 register INT_Int40Handler(word) BUILTIN_DefaultIntHandler
|
||||
165 register INT_Int41Handler(word) BUILTIN_DefaultIntHandler
|
||||
165 register INT_Int41Handler(word) INT_Int41Handler
|
||||
166 register INT_Int42Handler(word) BUILTIN_DefaultIntHandler
|
||||
167 register INT_Int43Handler(word) BUILTIN_DefaultIntHandler
|
||||
168 register INT_Int44Handler(word) BUILTIN_DefaultIntHandler
|
||||
|
@ -285,10 +285,13 @@ type win16
|
|||
405 register VXD_Timer() VXD_Timer
|
||||
409 register VXD_Reboot() VXD_Reboot
|
||||
410 register VXD_VDD() VXD_VDD
|
||||
412 register VXD_VMD() VXD_VMD
|
||||
414 register VXD_Comm() VXD_Comm
|
||||
#415 register VXD_Printer() VXD_Printer
|
||||
423 register VXD_Shell() VXD_Shell
|
||||
433 register VXD_PageFile() VXD_PageFile
|
||||
438 register VXD_APM() VXD_APM
|
||||
445 register VXD_Win32s() VXD_Win32s
|
||||
451 register VXD_ConfigMG() VXD_ConfigMG
|
||||
455 register VXD_Enable() VXD_Enable
|
||||
1490 register VXD_TimerAPI() VXD_TimerAPI
|
||||
|
|
|
@ -27,6 +27,7 @@ C_SRCS = \
|
|||
int2a.c \
|
||||
int2f.c \
|
||||
int3d.c \
|
||||
int41.c \
|
||||
int4b.c \
|
||||
int5c.c \
|
||||
interrupts.c \
|
||||
|
|
|
@ -158,6 +158,8 @@ void WINAPI INT_Int2fHandler( CONTEXT *context )
|
|||
break; /* not installed */
|
||||
case 0x12: /* realtime compression interface */
|
||||
break; /* not installed */
|
||||
case 0x32: /* patch IO.SYS (???) */
|
||||
break; /* we have no IO.SYS, so we can't patch it :-/ */
|
||||
default:
|
||||
INT_BARF( context, 0x2f );
|
||||
}
|
||||
|
@ -252,6 +254,10 @@ static void do_int2f_16( CONTEXT *context )
|
|||
CX_reg(context) = (GetWinFlags() & WF_ENHANCED) ? 3 : 2;
|
||||
break;
|
||||
|
||||
case 0x0b: /* Identify Windows-aware TSRs */
|
||||
/* we don't have any pre-Windows TSRs */
|
||||
break;
|
||||
|
||||
case 0x11: /* Get Shell Parameters - (SHELL= in CONFIG.SYS) */
|
||||
/* We can mock this up. But not today... */
|
||||
FIXME(int, "Get Shell Parameters\n");
|
||||
|
|
|
@ -0,0 +1,50 @@
|
|||
/*
|
||||
* DOS interrupt 41h handler -- Windows Kernel Debugger
|
||||
*
|
||||
* Check debugsys.inc from the DDK for docu.
|
||||
*/
|
||||
|
||||
#include "miscemu.h"
|
||||
|
||||
/***********************************************************************
|
||||
* INT_Int41Handler
|
||||
*
|
||||
*/
|
||||
void WINAPI INT_Int41Handler( CONTEXT *context )
|
||||
{
|
||||
if ( ISV86(context) )
|
||||
{
|
||||
/* Real-mode debugger services */
|
||||
switch ( AX_reg(context) )
|
||||
{
|
||||
default:
|
||||
INT_BARF( context, 0x41 );
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Protected-mode debugger services */
|
||||
switch ( AX_reg(context) )
|
||||
{
|
||||
case 0x50:
|
||||
case 0x150:
|
||||
case 0x51:
|
||||
case 0x52:
|
||||
case 0x152:
|
||||
case 0x59:
|
||||
case 0x5a:
|
||||
case 0x5b:
|
||||
case 0x5c:
|
||||
case 0x5d:
|
||||
/* Notifies the debugger of a lot of stuff. We simply ignore it
|
||||
for now, but some of the info might actually be useful ... */
|
||||
break;
|
||||
|
||||
default:
|
||||
INT_BARF( context, 0x41 );
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
89
msdos/vxd.c
89
msdos/vxd.c
|
@ -134,7 +134,7 @@ void VXD_VDD ( CONTEXT *context )
|
|||
{
|
||||
unsigned service = AX_reg(context);
|
||||
|
||||
TRACE(vxd,"[%04x] VMM \n", (UINT16)service);
|
||||
TRACE(vxd,"[%04x] VDD \n", (UINT16)service);
|
||||
|
||||
switch(service)
|
||||
{
|
||||
|
@ -148,6 +148,27 @@ void VXD_VDD ( CONTEXT *context )
|
|||
}
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* VXD_VMD
|
||||
*/
|
||||
void VXD_VMD ( CONTEXT *context )
|
||||
{
|
||||
unsigned service = AX_reg(context);
|
||||
|
||||
TRACE(vxd,"[%04x] VMD \n", (UINT16)service);
|
||||
|
||||
switch(service)
|
||||
{
|
||||
case 0x0000: /* version */
|
||||
AX_reg(context) = VXD_WinVersion();
|
||||
RESET_CFLAG(context);
|
||||
break;
|
||||
|
||||
default:
|
||||
VXD_BARF( context, "VMD" );
|
||||
}
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* VXD_Shell
|
||||
*/
|
||||
|
@ -170,7 +191,6 @@ void WINAPI VXD_Shell( CONTEXT *context )
|
|||
case 0x0003:
|
||||
case 0x0004:
|
||||
case 0x0005:
|
||||
TRACE(vxd,"VxD Shell: EDX = %08lx\n",EDX_reg(context));
|
||||
VXD_BARF( context, "shell" );
|
||||
break;
|
||||
|
||||
|
@ -200,9 +220,28 @@ void WINAPI VXD_Shell( CONTEXT *context )
|
|||
case 0x0014:
|
||||
case 0x0015:
|
||||
case 0x0016:
|
||||
VXD_BARF( context, "SHELL" );
|
||||
break;
|
||||
|
||||
/* the new Win95 shell API */
|
||||
case 0x0100: /* get version */
|
||||
AX_reg(context) = VXD_WinVersion();
|
||||
break;
|
||||
|
||||
case 0x0104: /* retrieve Hook_Properties list */
|
||||
case 0x0105: /* call Hook_Properties callbacks */
|
||||
VXD_BARF( context, "SHELL" );
|
||||
break;
|
||||
|
||||
case 0x0106: /* install timeout callback */
|
||||
TRACE( vxd, "VxD Shell: ignoring shell callback (%ld sec.)\n",
|
||||
EBX_reg( context ) );
|
||||
SET_CFLAG(context);
|
||||
break;
|
||||
|
||||
case 0x0107: /* get version of any VxD */
|
||||
default:
|
||||
TRACE(vxd,"VxD Shell: EDX = %08lx\n",EDX_reg(context));
|
||||
VXD_BARF( context, "shell");
|
||||
VXD_BARF( context, "SHELL" );
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -321,6 +360,48 @@ void VXD_ConfigMG ( CONTEXT *context )
|
|||
}
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* VXD_Enable
|
||||
*/
|
||||
void VXD_Enable ( CONTEXT *context )
|
||||
{
|
||||
unsigned service = AX_reg(context);
|
||||
|
||||
TRACE(vxd,"[%04x] Enable \n", (UINT16)service);
|
||||
|
||||
switch(service)
|
||||
{
|
||||
case 0x0000: /* version */
|
||||
AX_reg(context) = VXD_WinVersion();
|
||||
RESET_CFLAG(context);
|
||||
break;
|
||||
|
||||
default:
|
||||
VXD_BARF( context, "ENABLE" );
|
||||
}
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* VXD_APM
|
||||
*/
|
||||
void VXD_APM ( CONTEXT *context )
|
||||
{
|
||||
unsigned service = AX_reg(context);
|
||||
|
||||
TRACE(vxd,"[%04x] APM \n", (UINT16)service);
|
||||
|
||||
switch(service)
|
||||
{
|
||||
case 0x0000: /* version */
|
||||
AX_reg(context) = VXD_WinVersion();
|
||||
RESET_CFLAG(context);
|
||||
break;
|
||||
|
||||
default:
|
||||
VXD_BARF( context, "APM" );
|
||||
}
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* VXD_Win32s
|
||||
*
|
||||
|
|
Loading…
Reference in New Issue