Interrupts / Decouple DOS3Call
Jukka Heinonen
jhei at iki.fi
Sat Nov 30 14:37:03 CST 2002
This small patch decouples DOS3Call from real int21 implementation.
Now it is possible to make incremental patches that move
code from msdos/int21.c to winedos without breaking DOS3Call.
Changelog:
Rename old DOS3Call as INT_Int21Handler and
make new DOS3Call call directly winedos int21 handler.
Index: dlls/winedos/int21.c
===================================================================
RCS file: /home/wine/wine/dlls/winedos/int21.c,v
retrieving revision 1.15
diff -u -r1.15 int21.c
--- dlls/winedos/int21.c 6 Nov 2002 19:57:49 -0000 1.15
+++ dlls/winedos/int21.c 30 Nov 2002 20:21:12 -0000
@@ -35,6 +35,11 @@
#include "wine/unicode.h"
#include "wine/debug.h"
+/*
+ * FIXME: Delete this reference when all int21 code has been moved to winedos.
+ */
+extern void WINAPI INT_Int21Handler( CONTEXT86 *context );
+
WINE_DEFAULT_DEBUG_CHANNEL(int21);
void WINAPI DOSVM_Int21Handler_Ioctl( CONTEXT86 *context )
@@ -65,7 +70,7 @@
RESET_CFLAG(context);
break;
default:
- DOS3Call( context );
+ INT_Int21Handler( context );
}
}
@@ -79,7 +84,7 @@
BYTE ascii;
if (DOSVM_IsWin16()) {
- DOS3Call( context );
+ INT_Int21Handler( context );
return;
}
@@ -200,7 +205,7 @@
for(i=0; i<CX_reg(context); i++)
DOSVM_PutChar(ptr[i]);
} else
- DOS3Call( context );
+ INT_Int21Handler( context );
break;
case 0x44: /* IOCTL */
@@ -256,6 +261,6 @@
break;
default:
- DOS3Call( context );
+ INT_Int21Handler( context );
}
}
Index: msdos/int21.c
===================================================================
RCS file: /home/wine/wine/msdos/int21.c,v
retrieving revision 1.77
diff -u -r1.77 int21.c
--- msdos/int21.c 21 Nov 2002 00:02:10 -0000 1.77
+++ msdos/int21.c 30 Nov 2002 20:22:27 -0000
@@ -1120,10 +1120,9 @@
}
/***********************************************************************
- * DOS3Call (KERNEL.102)
- * INT_Int21Handler (WPROCS.133)
+ * INT_Int21Handler
*/
-void WINAPI DOS3Call( CONTEXT86 *context )
+void WINAPI INT_Int21Handler( CONTEXT86 *context )
{
BOOL bSetDOSExtendedError = FALSE;
@@ -2410,11 +2409,3 @@
context->EFlags);
}
-/***********************************************************************
- * GetSetKernelDOSProc (KERNEL.311)
- */
-FARPROC16 WINAPI GetSetKernelDOSProc16(FARPROC16 DosProc)
-{
- FIXME("(DosProc=0x%08x): stub\n", (UINT)DosProc);
- return NULL;
-}
Index: msdos/dpmi.c
===================================================================
RCS file: /home/wine/wine/msdos/dpmi.c,v
retrieving revision 1.72
diff -u -r1.72 dpmi.c
--- msdos/dpmi.c 24 Nov 2002 22:34:04 -0000 1.72
+++ msdos/dpmi.c 30 Nov 2002 20:23:10 -0000
@@ -24,6 +24,7 @@
#include "winbase.h"
#include "callback.h"
#include "wine/debug.h"
+#include "wine/windef16.h"
WINE_DEFAULT_DEBUG_CHANNEL(int31);
@@ -65,4 +66,24 @@
{
if (Dosvm.CallBuiltinHandler || DPMI_LoadDosSystem())
Dosvm.CallBuiltinHandler( context, 0x5c );
+}
+
+
+/***********************************************************************
+ * DOS3Call (KERNEL.102)
+ */
+void WINAPI DOS3Call( CONTEXT86 *context )
+{
+ if (Dosvm.CallBuiltinHandler || DPMI_LoadDosSystem())
+ Dosvm.CallBuiltinHandler( context, 0x21 );
+}
+
+
+/***********************************************************************
+ * GetSetKernelDOSProc (KERNEL.311)
+ */
+FARPROC16 WINAPI GetSetKernelDOSProc16( FARPROC16 DosProc )
+{
+ FIXME("(DosProc=0x%08x): stub\n", (UINT)DosProc);
+ return NULL;
}
Index: dlls/kernel/kernel32.spec
===================================================================
RCS file: /home/wine/wine/dlls/kernel/kernel32.spec,v
retrieving revision 1.80
diff -u -r1.80 kernel32.spec
--- dlls/kernel/kernel32.spec 27 Nov 2002 21:38:06 -0000 1.80
+++ dlls/kernel/kernel32.spec 30 Nov 2002 20:23:19 -0000
@@ -986,7 +986,6 @@
@ stdcall AllocCStoDSAlias16(long) AllocCStoDSAlias16
@ stdcall AllocSelectorArray16(long) AllocSelectorArray16
@ stdcall ConvertDialog32To16(ptr long ptr) ConvertDialog32To16
-@ stdcall DOS3Call(ptr) DOS3Call
@ stdcall ExitKernel16() ExitKernel16
@ stdcall FarGetOwner16(long) FarGetOwner16
@ stdcall FarSetOwner16(long long) FarSetOwner16
@@ -1057,6 +1056,7 @@
@ cdecl DOSMEM_GetDPMISegments() DOSMEM_GetDPMISegments
@ cdecl DOSMEM_Init(long) DOSMEM_Init
@ cdecl DRIVE_OpenDevice(long long) DRIVE_OpenDevice
+@ stdcall INT_Int21Handler(ptr) INT_Int21Handler
@ cdecl LOCAL_Alloc(long long long) LOCAL_Alloc
@ cdecl LOCAL_Compact(long long long) LOCAL_Compact
@ cdecl LOCAL_CountFree(long) LOCAL_CountFree
--
Jukka Heinonen <http://www.iki.fi/jhei/>
More information about the wine-patches
mailing list