Two small VGA core changes.

- Allow 16-bit reads from address 0x03da.
- Added BX_ERROR for unimplemented bits in CRTC register 0x08.
This commit is contained in:
Volker Ruppert 2018-05-18 18:00:09 +00:00
parent 766089e02d
commit e476c0f01a

View File

@ -233,7 +233,7 @@ void bx_vgacore_c::init_iohandlers(bx_read_handler_t f_read, bx_write_handler_t
}
for (addr=0x03DA; addr<=0x03DA; addr++) {
DEV_register_ioread_handler(this, f_read, addr, "vga video", 1);
DEV_register_ioread_handler(this, f_read, addr, "vga video", 3);
DEV_register_iowrite_handler(this, f_write, addr, "vga video", 3);
}
}
@ -750,6 +750,10 @@ Bit32u bx_vgacore_c::read(Bit32u address, unsigned io_len)
RETURN(BX_VGA_THIS s.CRTC.reg[BX_VGA_THIS s.CRTC.address]);
break;
case 0x03db: /* Ignore this address (16-bit read from 0x03da) */
RETURN(0); /* keep compiler happy */
break;
case 0x03b4: /* CRTC Index Register (monochrome emulation modes) */
case 0x03cb: /* not sure but OpenBSD reads it a lot */
default:
@ -1641,6 +1645,9 @@ void bx_vgacore_c::update(void)
tm_info.start_address = 2*((BX_VGA_THIS s.CRTC.reg[12] << 8) +
BX_VGA_THIS s.CRTC.reg[13]);
if ((BX_VGA_THIS s.CRTC.reg[0x08] & 0x60) > 0) {
BX_ERROR(("byte panning not implemented yet"));
}
tm_info.cs_start = BX_VGA_THIS s.CRTC.reg[0x0a] & 0x3f;
if (!cs_visible) {
tm_info.cs_start |= 0x20;