Commit ab635b21 authored by Ulrich Weigand's avatar Ulrich Weigand Committed by Alexandre Julliard

Added stubs for several VxDs / interrupts.

parent 980992a3
......@@ -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");
......
/*
* 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;
}
}
}
......@@ -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)
{
......@@ -149,6 +149,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
*/
void WINAPI VXD_Shell( CONTEXT *context )
......@@ -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;
}
}
......@@ -322,6 +361,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
*
* This is an implementation of the services of the Win32s VxD.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment