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