winedos: Added/stubbed/documented missing VGA registers.
This commit is contained in:
parent
7808a8cb27
commit
d237f08be6
|
@ -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 )
|
||||||
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 )
|
||||||
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;
|
||||||
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 )
|
||||||
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 )
|
||||||
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 )
|
||||||
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 )
|
||||||
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.
|
||||||
|
|
Loading…
Reference in New Issue