aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>2004-04-28 22:38:47 +0000
committerbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>2004-04-28 22:38:47 +0000
commit646be93b4cc87635ffa03e044d1d21f5c80403c1 (patch)
treefc28fb5fbf06d3e3bd7228fb93fa80626d6a60f1
parent26aa7d72cc3ff586ca4b5bd79f63b0066fe21b0f (diff)
Bochs VBE emulation fix
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@774 c046a42c-6fe2-441c-8c8c-71466251a162
-rw-r--r--hw/vga.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/hw/vga.c b/hw/vga.c
index a6220f3e1c..5838d3fc00 100644
--- a/hw/vga.c
+++ b/hw/vga.c
@@ -597,6 +597,7 @@ static void vbe_ioport_write(void *opaque, uint32_t addr, uint32_t val)
s->sr[0x01] &= ~8; /* no double line */
} else {
shift_control = 2;
+ s->sr[4] |= 0x08; /* set chain 4 mode */
}
s->gr[0x05] = (s->gr[0x05] & ~0x60) | (shift_control << 5);
s->cr[0x09] &= ~0x9f; /* no double scan */
@@ -1768,6 +1769,13 @@ int vga_initialize(DisplayState *ds, uint8_t *vga_ram_base,
register_ioport_write(0x1ce, 1, 2, vbe_ioport_write, s);
register_ioport_write(0x1cf, 1, 2, vbe_ioport_write, s);
+
+ /* old Bochs IO ports */
+ register_ioport_read(0xff80, 1, 2, vbe_ioport_read, s);
+ register_ioport_read(0xff81, 1, 2, vbe_ioport_read, s);
+
+ register_ioport_write(0xff80, 1, 2, vbe_ioport_write, s);
+ register_ioport_write(0xff81, 1, 2, vbe_ioport_write, s);
#endif
vga_io_memory = cpu_register_io_memory(0, vga_mem_read, vga_mem_write);