winedos: Added/stubbed/documented missing VGA registers.

This commit is contained in:
Jeremiah Flerchinger 2008-10-17 15:28:30 -06:00 committed by Alexandre Julliard
parent 7808a8cb27
commit d237f08be6
2 changed files with 94 additions and 31 deletions

View file

@ -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:

View file

@ -1338,17 +1338,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 */
@ -1356,9 +1371,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;
@ -1371,18 +1386,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:
@ -1395,10 +1418,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 */
@ -1408,15 +1443,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.