winedos / IRQ and mouse bug fixes

Jukka Heinonen jhei at iki.fi
Sun Jul 6 14:21:17 CDT 2003


This patch fixes a number of minor bugs.
After this patch, X-COM (or UFO) seems to work
pretty well. However, it has problems switching
into combat mode, you get two cursors and DOS4GW 
still does not work...




Changelog:
    Real mode context should always have V86 flag turned on.
    Entering protected mode uses simpler and more robust
    virtual interrupt flag check.
    Mouse events are now received in graphics modes.
    Improved tracing output of int33 handler.
    



Index: dlls/winedos/dosvm.c
===================================================================
RCS file: /home/wine/wine/dlls/winedos/dosvm.c,v
retrieving revision 1.44
diff -u -r1.44 dosvm.c
--- dlls/winedos/dosvm.c	30 Jun 2003 20:53:48 -0000	1.44
+++ dlls/winedos/dosvm.c	6 Jul 2003 19:08:37 -0000
@@ -572,6 +572,9 @@
 
 int WINAPI DOSVM_Enter( CONTEXT86 *context )
 {
+  /* Some callers forget to turn V86_FLAG on. */
+  context->EFlags |= V86_FLAG;
+
   __TRY
   {
     __wine_enter_vm86( context );




Index: dlls/winedos/himem.c
===================================================================
RCS file: /home/wine/wine/dlls/winedos/himem.c,v
retrieving revision 1.4
diff -u -r1.4 himem.c
--- dlls/winedos/himem.c	1 Jul 2003 03:37:41 -0000	1.4
+++ dlls/winedos/himem.c	6 Jul 2003 19:08:39 -0000
@@ -175,6 +175,7 @@
         0x5D,                /* popw %bp */
         0x5A,                /* popw %dx */
         0x58,                /* popw %ax */
+        0xfb,                /* sti, enable and check virtual interrupts */
         0xCB                 /* lret */
     };
 




Index: dlls/winedos/int31.c
===================================================================
RCS file: /home/wine/wine/dlls/winedos/int31.c,v
retrieving revision 1.26
diff -u -r1.26 int31.c
--- dlls/winedos/int31.c	3 Jul 2003 18:08:04 -0000	1.26
+++ dlls/winedos/int31.c	6 Jul 2003 19:08:40 -0000
@@ -583,15 +583,6 @@
     TRACE("DOS program is now entering %d-bit protected mode\n", 
           DOSVM_IsDos32() ? 32 : 16);
 
-    /*
-     * Enable interrupts. Note that we also make a dummy 
-     * relay call in order to process all pending events. 
-     * This is needed in order to prevent event handling from
-     * getting stuck.
-     */
-    NtCurrentTeb()->dpmi_vif = 1;
-    DOSVM_BuildCallFrame( context, NULL, NULL );
-
     __TRY 
     {
         wine_call_to_16_regs_short(&pm_ctx, 0);




Index: dlls/winedos/int33.c
===================================================================
RCS file: /home/wine/wine/dlls/winedos/int33.c,v
retrieving revision 1.9
diff -u -r1.9 int33.c
--- dlls/winedos/int33.c	24 Nov 2002 22:15:56 -0000	1.9
+++ dlls/winedos/int33.c	6 Jul 2003 19:08:42 -0000
@@ -91,10 +91,12 @@
     SET_AX( context, mouse_info.but );
     break;
   case 0x07:
-    FIXME("Define horizontal mouse cursor range\n");
+    FIXME("Define horizontal mouse cursor range %d..%d\n",
+          CX_reg(context), DX_reg(context));
     break;
   case 0x08:
-    FIXME("Define vertical mouse cursor range\n");
+    FIXME("Define vertical mouse cursor range %d..%d\n",
+          CX_reg(context), DX_reg(context));
     break;
   case 0x09:
     FIXME("Define graphics mouse cursor\n");




Index: dlls/winedos/vga.c
===================================================================
RCS file: /home/wine/wine/dlls/winedos/vga.c,v
retrieving revision 1.36
diff -u -r1.36 vga.c
--- dlls/winedos/vga.c	30 Jun 2003 02:10:19 -0000	1.36
+++ dlls/winedos/vga.c	6 Jul 2003 19:08:44 -0000
@@ -381,7 +381,9 @@
             return;
         }
         if (!vga_hwnd) {
-            vga_hwnd = CreateWindowExA(0,"STATIC","WINEDOS VGA",WS_POPUP|WS_VISIBLE,0,0,par->Xres,par->Yres,0,0,0,NULL);
+            vga_hwnd = CreateWindowExA(0,"STATIC","WINEDOS VGA",
+                                       WS_POPUP|WS_VISIBLE|SS_NOTIFY,0,0,
+                                       par->Xres,par->Yres,0,0,0,NULL);
             if (!vga_hwnd) {
                 ERR("Failed to create user window.\n");
                 IDirectDraw_Release(lpddraw);



-- 
Jukka Heinonen <http://www.iki.fi/jhei/>



More information about the wine-patches mailing list