Added/Stubbed/Documented missing VGA registers

Jeremiah Flerchinger jeremiah.flerchinger at gmail.com
Fri Oct 17 16:28:30 CDT 2008


Stubbed new registers, except for those that alias other registers. Documented registers with
comments & made new fixme outputs consistent with old.  This should help prioritize what to fix.
---
 dlls/winedos/ioports.c |   53 ++++++++++++++++++++---------------
 dlls/winedos/vga.c     |   72 ++++++++++++++++++++++++++++++++++++++++++-----
 2 files changed, 94 insertions(+), 31 deletions(-)

diff --git a/dlls/winedos/ioports.c b/dlls/winedos/ioports.c
index e9f4f7f..bd73af4 100644
--- a/dlls/winedos/ioports.c
+++ b/dlls/winedos/ioports.c
@@ -414,29 +414,32 @@ DWORD WINAPI DOSVM_inport( int port, int size )
     case 0x22e:
         res = (DWORD)SB_ioport_in( port );
 	break;
-    case 0x3ba:
-    case 0x3c0:
-    case 0x3c1:
-    case 0x3c2:
-    case 0x3c3:
-    case 0x3c4:
-    case 0x3c5:
+    /* VGA read registers */
+    case 0x3b4:  /* CRT Controller Register - Index (MDA) */
+    case 0x3b5:  /* CRT Controller Register - Other (MDA) */
+    case 0x3ba:  /* General Register - Input status 1 (MDA) */
+    case 0x3c0:  /* Attribute Controller - Address */
+    case 0x3c1:  /* Attribute Controller - Other */
+    case 0x3c2:  /* General Register - Input status 0 */
+    case 0x3c3:  /* General Register - Video subsystem enable */
+    case 0x3c4:  /* Sequencer Register - Address */
+    case 0x3c5:  /* Sequencer Register - Other */
     case 0x3c6:
-    case 0x3c7:
+    case 0x3c7:  /* General Register -  DAC State */
     case 0x3c8:
     case 0x3c9:
-    case 0x3ca:
+    case 0x3ca:  /* General Register - Feature control */
     case 0x3cb:
-    case 0x3cc:
+    case 0x3cc:  /* General Register - Misc output */
     case 0x3cd:
-    case 0x3ce:
-    case 0x3cf:
+    case 0x3ce:  /* Graphics Controller Register - Address */
+    case 0x3cf:  /* Graphics Controller Register - Other */
     case 0x3d0:
     case 0x3d1:
     case 0x3d2:
     case 0x3d3:
-    case 0x3d4:
-    case 0x3d5:
+    case 0x3d4:  /* CRT Controller Register - Index (CGA) */
+    case 0x3d5:  /* CRT Controller Register - Other (CGA) */
     case 0x3d6:
     case 0x3d7:
     case 0x3d8:
@@ -624,12 +627,16 @@ void WINAPI DOSVM_outport( int port, int size, DWORD value )
     case 0x22c:
         SB_ioport_out( port, (BYTE)value );
         break;
-    case 0x3c0:
+    /* VGA Write registers */
+    case 0x3b4:  /* CRT Controller Register - Index (MDA) */
+    case 0x3b5:  /* CRT Controller Register - Other (MDA) */
+    case 0x3ba:  /* General Register - Feature Control */
+    case 0x3c0:  /* Attribute Controller - Address/Other */
     case 0x3c1:
-    case 0x3c2:
-    case 0x3c3:
-    case 0x3c4:
-    case 0x3c5:
+    case 0x3c2:  /* General Register - Misc output */
+    case 0x3c3:  /* General Register - Video subsystem enable */
+    case 0x3c4:  /* Sequencer Register - Address */
+    case 0x3c5:  /* Sequencer Register - Other */
     case 0x3c6:
     case 0x3c7:
     case 0x3c8:
@@ -638,14 +645,14 @@ void WINAPI DOSVM_outport( int port, int size, DWORD value )
     case 0x3cb:
     case 0x3cc:
     case 0x3cd:
-    case 0x3ce:
-    case 0x3cf:
+    case 0x3ce:  /* Graphics Controller Register - Address */
+    case 0x3cf:  /* Graphics Controller Register - Other */
     case 0x3d0:
     case 0x3d1:
     case 0x3d2:
     case 0x3d3:
-    case 0x3d4:
-    case 0x3d5:
+    case 0x3d4:  /* CRT Controller Register - Index (CGA) */
+    case 0x3d5:  /* CRT Controller Register - Other (CGA) */
     case 0x3d6:
     case 0x3d7:
     case 0x3d8:
diff --git a/dlls/winedos/vga.c b/dlls/winedos/vga.c
index 8b61174..5420d5c 100644
--- a/dlls/winedos/vga.c
+++ b/dlls/winedos/vga.c
@@ -1346,17 +1346,32 @@ static PALETTEENTRY paldat;
 void VGA_ioport_out( WORD port, BYTE val )
 {
     switch (port) {
+        /* General Register - Feature Control */
+        case 0x3ba:
+           FIXME("Unsupported VGA register: general register - feature control 0x%04x (value 0x%02x)\n", port, val);
+           break;
+        /* Attribute Controller - Address/Other */
         case 0x3c0:
            if (vga_address_3c0)
                vga_index_3c0 = val;
            else
-               FIXME("Unsupported index, register 0x3c0: 0x%02x (value 0x%02x)\n",
+               FIXME("Unsupported index, VGA attribute controller register 0x3c0: 0x%02x (value 0x%02x)\n",
                      vga_index_3c0, val);
            vga_address_3c0 = !vga_address_3c0;
            break;
+        /* General Register - Misc output */
+        case 0x3c2:
+           FIXME("Unsupported VGA register: general register - misc output 0x%04x (value 0x%02x)\n", port, val);
+           break;
+        /* General Register - Video subsystem enable */
+        case 0x3c3:
+           FIXME("Unsupported VGA register: general register - video subsystem enable 0x%04x (value 0x%02x)\n", port, val);
+           break;
+        /* Sequencer Register - Address */
         case 0x3c4:
            vga_index_3c4 = val;
            break;
+        /* Sequencer Register - Other */
         case 0x3c5:
           switch(vga_index_3c4) {
                case 0x04: /* Sequencer: Memory Mode Register */
@@ -1364,9 +1379,9 @@ void VGA_ioport_out( WORD port, BYTE val )
                       VGA_SetWindowStart((val & 8) ? 0 : -1);
                   else
                       FIXME("Memory Mode Register not supported in this mode.\n");
-               break;
+                  break;
                default:
-                  FIXME("Unsupported index, register 0x3c4: 0x%02x (value 0x%02x)\n",
+                  FIXME("Unsupported index, VGA sequencer register 0x3c4: 0x%02x (value 0x%02x)\n",
                         vga_index_3c4, val);
            }
            break;
@@ -1379,18 +1394,26 @@ void VGA_ioport_out( WORD port, BYTE val )
                 palcnt=0;
             }
             break;
+        /* Graphics Controller Register - Address */
         case 0x3ce:
             vga_index_3ce = val;
            break;
+        /* Graphics Controller Register - Other */
         case 0x3cf:
-           FIXME("Unsupported index, register 0x3ce: 0x%02x (value 0x%02x)\n",
+           FIXME("Unsupported index, VGA graphics controller register - other 0x3ce: 0x%02x (value 0x%02x)\n",
                  vga_index_3ce, val);
            break;
+        /* CRT Controller Register - Index (MDA) */
+        case 0x3b4:
+        /* CRT Controller Register - Index (CGA) */
         case 0x3d4:
            vga_index_3d4 = val;
            break;
+        /* CRT Controller Register - Other (MDA) */
+        case 0x3b5:
+        /* CRT Controller Register - Other (CGA) */
         case 0x3d5:
-           FIXME("Unsupported index, register 0x3d4: 0x%02x (value 0x%02x)\n",
+           FIXME("Unsupported index, VGA crt controller register 0x3b4/0x3d4: 0x%02x (value 0x%02x)\n",
                  vga_index_3d4, val);
            break;
         default:
@@ -1403,10 +1426,22 @@ BYTE VGA_ioport_in( WORD port )
     BYTE ret;
 
     switch (port) {
+        /* Attribute Controller - Other */
         case 0x3c1:
-           FIXME("Unsupported index, register 0x3c0: 0x%02x\n",
+           FIXME("Unsupported index, VGA attribute controller register 0x3c0: 0x%02x\n",
                  vga_index_3c0);
            return 0xff;
+        /* General Register - Input status 0 */
+        case 0x3c2:
+           ret=0xff;
+           FIXME("Unsupported VGA register: general register - input status 0 0x%04x\n", port);
+           break;
+        /* General Register - Video subsystem enable */
+        case 0x3c3:
+           ret=0xff;
+           FIXME("Unsupported VGA register: general register - video subsystem enable 0x%04x\n", port);
+           break;
+        /* Sequencer Register - Other */
         case 0x3c5:
            switch(vga_index_3c4) {
                case 0x04: /* Sequencer: Memory Mode Register */
@@ -1416,15 +1451,36 @@ BYTE VGA_ioport_in( WORD port )
                          vga_index_3c4);
                    return 0xff;
            }
+        /* General Register -  DAC State */
+        case 0x3c7:
+           ret=0xff;
+           FIXME("Unsupported VGA register: general register - DAC State 0x%04x\n", port);
+           break;
+        /* General Register - Feature control */
+        case 0x3ca:
+           ret=0xff;
+           FIXME("Unsupported VGA register: general register - Feature control 0x%04x\n", port);
+           break;
+        /* General Register - Misc output */
+        case 0x3cc:
+           ret=0xff;
+           FIXME("Unsupported VGA register: general register - Feature control 0x%04x\n", port);
+           break;
+        /* Graphics Controller Register - Other */
         case 0x3cf:
            FIXME("Unsupported index, register 0x3ce: 0x%02x\n",
                  vga_index_3ce);
            return 0xff;
+        /* CRT Controller Register - Other (MDA) */
+        case 0x3b5:
+        /* CRT Controller Register - Other (CGA) */
         case 0x3d5:
-           FIXME("Unsupported index, register 0x3d4: 0x%02x\n",
+           FIXME("Unsupported index, VGA crt controller register 0x3b4/0x3d4: 0x%02x\n",
                  vga_index_3d4);
            return 0xff;
-
+        /* General Register - Input status 1 (MDA) */
+        case 0x3ba:
+        /* General Register - Input status 1 (CGA) */
         case 0x3da:
             /*
              * Read from this register resets register 0x3c0 address flip-flop.
-- 
1.5.4.3




More information about the wine-patches mailing list