From 755240bdf3db52d2acc917b01ce6b5d987153030 Mon Sep 17 00:00:00 2001 From: Sjoerd van der Berg Date: Sun, 18 Jan 2004 15:40:09 +0000 Subject: [PATCH] Fix page not getting selected with hercules Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@1594 --- src/hardware/vga_misc.cpp | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/hardware/vga_misc.cpp b/src/hardware/vga_misc.cpp index 1b4439f5..693eed58 100644 --- a/src/hardware/vga_misc.cpp +++ b/src/hardware/vga_misc.cpp @@ -207,12 +207,11 @@ static Bit8u read_p3cc(Bit32u port) { static void write_hercules(Bit32u port,Bit8u val) { - Bit8u mask; switch (port) { case 0x3b8: - mask=0xff-0x80-0x2;; - if (vga.herc.enable_bits & 1) { - mask|=0x2; + vga.herc.mode_control=(vga.herc.mode_control & ~0x7d) | (val&0x7d); + if ((vga.herc.enable_bits & 1) && ((vga.herc.mode_control ^ val)&0x2)) { + vga.herc.mode_control^=0x2; if (vga.mode != M_HERC || vga.mode != M_TEXT2) { VGA_ATTR_SetPalette(1,0x07); /* Force 0x3b4/5 registers */ @@ -224,11 +223,10 @@ static void write_hercules(Bit32u port,Bit8u val) { if (vga.mode != M_TEXT2) VGA_SetMode(M_TEXT2); } } - if (vga.herc.enable_bits & 0x2) { - mask|=0x80; + if ((vga.herc.enable_bits & 0x2) && ((vga.herc.mode_control ^ val)&0x80)) { + vga.herc.mode_control^=0x80; VGA_SetupHandlers(); } - vga.herc.mode_control=(vga.herc.mode_control & ~mask) | (val&mask); break; case 0x3bf: vga.herc.enable_bits=val;