From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:39694) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZO3uH-0002Up-Vt for qemu-devel@nongnu.org; Sat, 08 Aug 2015 09:11:26 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZO3uF-0007Nc-6w for qemu-devel@nongnu.org; Sat, 08 Aug 2015 09:11:25 -0400 Received: from mail-wi0-x236.google.com ([2a00:1450:400c:c05::236]:33185) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZO3uF-0007NS-0L for qemu-devel@nongnu.org; Sat, 08 Aug 2015 09:11:23 -0400 Received: by wijp15 with SMTP id p15so87710495wij.0 for ; Sat, 08 Aug 2015 06:11:22 -0700 (PDT) Received: from donizetti.lan (dynamic-adsl-94-39-138-45.clienti.tiscali.it. [94.39.138.45]) by smtp.gmail.com with ESMTPSA id ib9sm19484920wjb.2.2015.08.08.06.11.21 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 08 Aug 2015 06:11:21 -0700 (PDT) Sender: Paolo Bonzini From: Paolo Bonzini Date: Sat, 8 Aug 2015 15:11:09 +0200 Message-Id: <1439039469-438-4-git-send-email-bonzini@gnu.org> In-Reply-To: <1439039469-438-1-git-send-email-bonzini@gnu.org> References: <1439039469-438-1-git-send-email-bonzini@gnu.org> Subject: [Qemu-devel] [PATCH 3/3] vga: fix CGA 640x200 mode List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org SeaBIOS programs the CGA 2-color 640x200 mode with 0xC1 in the maximum scan line register. Ordinarily, this would mean 100 vertical lines, but the CGA modes ignore bits 4:0 (DOSBox's BIOS also uses 0xC1). Unfortunately, the test used to catch CGA modes worked for 4-color 320x200 graphics, but not for the 2-color 640x200 mode. Signed-off-by: Paolo Bonzini --- hw/display/vga.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/hw/display/vga.c b/hw/display/vga.c index 19dcb6b..7d4e1b0 100644 --- a/hw/display/vga.c +++ b/hw/display/vga.c @@ -1442,12 +1442,11 @@ static void vga_draw_graphic(VGACommonState *s, int full_update) shift_control = (s->gr[VGA_GFX_MODE] >> 5) & 3; double_scan = (s->cr[VGA_CRTC_MAX_SCAN] >> 7); - if (shift_control != 1) { + if (s->cr[VGA_CRTC_MODE] & 1) { multi_scan = (((s->cr[VGA_CRTC_MAX_SCAN] & 0x1f) + 1) << double_scan) - 1; } else { /* in CGA modes, multi_scan is ignored */ - /* XXX: is it correct ? */ multi_scan = double_scan; } multi_run = multi_scan; -- 2.4.3