Commit d237f08b authored by Jeremiah Flerchinger's avatar Jeremiah Flerchinger Committed by Alexandre Julliard

winedos: Added/stubbed/documented missing VGA registers.

parent 7808a8cb
...@@ -414,29 +414,32 @@ DWORD WINAPI DOSVM_inport( int port, int size ) ...@@ -414,29 +414,32 @@ DWORD WINAPI DOSVM_inport( int port, int size )
case 0x22e: case 0x22e:
res = (DWORD)SB_ioport_in( port ); res = (DWORD)SB_ioport_in( port );
break; break;
case 0x3ba: /* VGA read registers */
case 0x3c0: case 0x3b4: /* CRT Controller Register - Index (MDA) */
case 0x3c1: case 0x3b5: /* CRT Controller Register - Other (MDA) */
case 0x3c2: case 0x3ba: /* General Register - Input status 1 (MDA) */
case 0x3c3: case 0x3c0: /* Attribute Controller - Address */
case 0x3c4: case 0x3c1: /* Attribute Controller - Other */
case 0x3c5: 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 0x3c6:
case 0x3c7: case 0x3c7: /* General Register - DAC State */
case 0x3c8: case 0x3c8:
case 0x3c9: case 0x3c9:
case 0x3ca: case 0x3ca: /* General Register - Feature control */
case 0x3cb: case 0x3cb:
case 0x3cc: case 0x3cc: /* General Register - Misc output */
case 0x3cd: case 0x3cd:
case 0x3ce: case 0x3ce: /* Graphics Controller Register - Address */
case 0x3cf: case 0x3cf: /* Graphics Controller Register - Other */
case 0x3d0: case 0x3d0:
case 0x3d1: case 0x3d1:
case 0x3d2: case 0x3d2:
case 0x3d3: case 0x3d3:
case 0x3d4: case 0x3d4: /* CRT Controller Register - Index (CGA) */
case 0x3d5: case 0x3d5: /* CRT Controller Register - Other (CGA) */
case 0x3d6: case 0x3d6:
case 0x3d7: case 0x3d7:
case 0x3d8: case 0x3d8:
...@@ -624,12 +627,16 @@ void WINAPI DOSVM_outport( int port, int size, DWORD value ) ...@@ -624,12 +627,16 @@ void WINAPI DOSVM_outport( int port, int size, DWORD value )
case 0x22c: case 0x22c:
SB_ioport_out( port, (BYTE)value ); SB_ioport_out( port, (BYTE)value );
break; 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 0x3c1:
case 0x3c2: case 0x3c2: /* General Register - Misc output */
case 0x3c3: case 0x3c3: /* General Register - Video subsystem enable */
case 0x3c4: case 0x3c4: /* Sequencer Register - Address */
case 0x3c5: case 0x3c5: /* Sequencer Register - Other */
case 0x3c6: case 0x3c6:
case 0x3c7: case 0x3c7:
case 0x3c8: case 0x3c8:
...@@ -638,14 +645,14 @@ void WINAPI DOSVM_outport( int port, int size, DWORD value ) ...@@ -638,14 +645,14 @@ void WINAPI DOSVM_outport( int port, int size, DWORD value )
case 0x3cb: case 0x3cb:
case 0x3cc: case 0x3cc:
case 0x3cd: case 0x3cd:
case 0x3ce: case 0x3ce: /* Graphics Controller Register - Address */
case 0x3cf: case 0x3cf: /* Graphics Controller Register - Other */
case 0x3d0: case 0x3d0:
case 0x3d1: case 0x3d1:
case 0x3d2: case 0x3d2:
case 0x3d3: case 0x3d3:
case 0x3d4: case 0x3d4: /* CRT Controller Register - Index (CGA) */
case 0x3d5: case 0x3d5: /* CRT Controller Register - Other (CGA) */
case 0x3d6: case 0x3d6:
case 0x3d7: case 0x3d7:
case 0x3d8: case 0x3d8:
......
...@@ -1338,17 +1338,32 @@ static PALETTEENTRY paldat; ...@@ -1338,17 +1338,32 @@ static PALETTEENTRY paldat;
void VGA_ioport_out( WORD port, BYTE val ) void VGA_ioport_out( WORD port, BYTE val )
{ {
switch (port) { 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: case 0x3c0:
if (vga_address_3c0) if (vga_address_3c0)
vga_index_3c0 = val; vga_index_3c0 = val;
else 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_index_3c0, val);
vga_address_3c0 = !vga_address_3c0; vga_address_3c0 = !vga_address_3c0;
break; 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: case 0x3c4:
vga_index_3c4 = val; vga_index_3c4 = val;
break; break;
/* Sequencer Register - Other */
case 0x3c5: case 0x3c5:
switch(vga_index_3c4) { switch(vga_index_3c4) {
case 0x04: /* Sequencer: Memory Mode Register */ case 0x04: /* Sequencer: Memory Mode Register */
...@@ -1356,9 +1371,9 @@ void VGA_ioport_out( WORD port, BYTE val ) ...@@ -1356,9 +1371,9 @@ void VGA_ioport_out( WORD port, BYTE val )
VGA_SetWindowStart((val & 8) ? 0 : -1); VGA_SetWindowStart((val & 8) ? 0 : -1);
else else
FIXME("Memory Mode Register not supported in this mode.\n"); FIXME("Memory Mode Register not supported in this mode.\n");
break; break;
default: 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); vga_index_3c4, val);
} }
break; break;
...@@ -1371,18 +1386,26 @@ void VGA_ioport_out( WORD port, BYTE val ) ...@@ -1371,18 +1386,26 @@ void VGA_ioport_out( WORD port, BYTE val )
palcnt=0; palcnt=0;
} }
break; break;
/* Graphics Controller Register - Address */
case 0x3ce: case 0x3ce:
vga_index_3ce = val; vga_index_3ce = val;
break; break;
/* Graphics Controller Register - Other */
case 0x3cf: 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); vga_index_3ce, val);
break; break;
/* CRT Controller Register - Index (MDA) */
case 0x3b4:
/* CRT Controller Register - Index (CGA) */
case 0x3d4: case 0x3d4:
vga_index_3d4 = val; vga_index_3d4 = val;
break; break;
/* CRT Controller Register - Other (MDA) */
case 0x3b5:
/* CRT Controller Register - Other (CGA) */
case 0x3d5: 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); vga_index_3d4, val);
break; break;
default: default:
...@@ -1395,10 +1418,22 @@ BYTE VGA_ioport_in( WORD port ) ...@@ -1395,10 +1418,22 @@ BYTE VGA_ioport_in( WORD port )
BYTE ret; BYTE ret;
switch (port) { switch (port) {
/* Attribute Controller - Other */
case 0x3c1: case 0x3c1:
FIXME("Unsupported index, register 0x3c0: 0x%02x\n", FIXME("Unsupported index, VGA attribute controller register 0x3c0: 0x%02x\n",
vga_index_3c0); vga_index_3c0);
return 0xff; 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: case 0x3c5:
switch(vga_index_3c4) { switch(vga_index_3c4) {
case 0x04: /* Sequencer: Memory Mode Register */ case 0x04: /* Sequencer: Memory Mode Register */
...@@ -1408,15 +1443,36 @@ BYTE VGA_ioport_in( WORD port ) ...@@ -1408,15 +1443,36 @@ BYTE VGA_ioport_in( WORD port )
vga_index_3c4); vga_index_3c4);
return 0xff; 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: case 0x3cf:
FIXME("Unsupported index, register 0x3ce: 0x%02x\n", FIXME("Unsupported index, register 0x3ce: 0x%02x\n",
vga_index_3ce); vga_index_3ce);
return 0xff; return 0xff;
/* CRT Controller Register - Other (MDA) */
case 0x3b5:
/* CRT Controller Register - Other (CGA) */
case 0x3d5: 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); vga_index_3d4);
return 0xff; return 0xff;
/* General Register - Input status 1 (MDA) */
case 0x3ba:
/* General Register - Input status 1 (CGA) */
case 0x3da: case 0x3da:
/* /*
* Read from this register resets register 0x3c0 address flip-flop. * Read from this register resets register 0x3c0 address flip-flop.
......
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