Added support for reading VGA latches using CRTC register 0x22 (undocumented
for original VGA, documented for Cirrus and Voodoo Banshee).
This commit is contained in:
parent
4e41530b8a
commit
77cc12cce5
@ -2905,7 +2905,9 @@ Bit32u bx_voodoo_vga_c::banshee_vga_read_handler(void *this_ptr, Bit32u address,
|
||||
case 0x03b5:
|
||||
case 0x03d5:
|
||||
if (BX_VVGA_THIS s.CRTC.address > 0x18) {
|
||||
if (BX_VVGA_THIS s.CRTC.address <= 0x26) {
|
||||
if (BX_VVGA_THIS s.CRTC.address == 0x22) {
|
||||
value = bx_vgacore_c::read_handler(BX_VVGA_THIS_PTR, address, io_len);
|
||||
} else if (BX_VVGA_THIS s.CRTC.address <= 0x26) {
|
||||
if ((v->banshee.io[io_vgaInit0] & 0x440) == 0x040) {
|
||||
value = v->banshee.crtc[BX_VVGA_THIS s.CRTC.address];
|
||||
BX_DEBUG(("read from banshee CRTC address 0x%02x value 0x%02x",
|
||||
|
@ -1531,11 +1531,13 @@ Bit8u bx_svga_cirrus_c::svga_read_crtc(Bit32u address, unsigned index)
|
||||
case 0x1B:
|
||||
case 0x1C:
|
||||
case 0x1D:
|
||||
case 0x22:
|
||||
case 0x24:
|
||||
case 0x25:
|
||||
case 0x27:
|
||||
break;
|
||||
case 0x22:
|
||||
return VGA_READ(address,1);
|
||||
break;
|
||||
case 0x26:
|
||||
return (BX_CIRRUS_THIS s.attribute_ctrl.address & 0x3f);
|
||||
default:
|
||||
|
@ -718,9 +718,11 @@ Bit32u bx_vgacore_c::read(Bit32u address, unsigned io_len)
|
||||
|
||||
case 0x03b5: /* CRTC Registers (monochrome emulation modes) */
|
||||
case 0x03d5: /* CRTC Registers (color emulation modes) */
|
||||
if (BX_VGA_THIS s.CRTC.address == 0x22) {
|
||||
return BX_VGA_THIS s.graphics_ctrl.latch[BX_VGA_THIS s.graphics_ctrl.read_map_select];
|
||||
}
|
||||
if (BX_VGA_THIS s.CRTC.address > 0x18) {
|
||||
BX_DEBUG(("io read: invalid CRTC register 0x%02x",
|
||||
(unsigned) BX_VGA_THIS s.CRTC.address));
|
||||
BX_DEBUG(("io read: invalid CRTC register 0x%02x", BX_VGA_THIS s.CRTC.address));
|
||||
RETURN(0);
|
||||
}
|
||||
RETURN(BX_VGA_THIS s.CRTC.reg[BX_VGA_THIS s.CRTC.address]);
|
||||
|
Loading…
x
Reference in New Issue
Block a user