From a0b4b4898b2f2d70fd275b7adfe524afff5644f6 Mon Sep 17 00:00:00 2001 From: Volker Ruppert Date: Sun, 14 Aug 2011 14:56:54 +0000 Subject: [PATCH] - implemented graphics snapshot for mode X (variant of VGA mode 0x13) - bugfix: CGA1 mode depends on the CGA compatiblity switch --- bochs/CHANGES | 14 ++++++++++++-- bochs/iodev/vga.cc | 19 +++++++++++-------- bochs/iodev/vga.h | 2 +- 3 files changed, 24 insertions(+), 11 deletions(-) diff --git a/bochs/CHANGES b/bochs/CHANGES index 88e483551..f4472dc74 100644 --- a/bochs/CHANGES +++ b/bochs/CHANGES @@ -54,6 +54,9 @@ Bochs repository moved to the SVN version control ! - added support for MSVC DLL plugins with a separate workspace package. VS2008Ex can now create a BOCHS.EXE with a set of plugin DLLs. TODO: nmake still cannot create plugin DLLs. + - removed some outdated / unmaintained parts from the Bochs code: BeOS host + support, plex86 support, networking module 'arpback', text snapshot check + feature. - I/O Devices - Networking @@ -70,6 +73,8 @@ Bochs repository moved to the SVN version control ! Linux (ALSA / OSS) - PCI - added framework for PCI ROM support + - new bochsrc option 'pci' replaces the 'i440fxsupport' option. The 'chipset' + parameter for now only accepts the value 'i440fx'. - VGA - added PCI ROM support to cirrus and pcivga and moved ROM loading for the ISA case to the vga code (SeaBIOS now usable by Bochs) @@ -88,11 +93,16 @@ Bochs repository moved to the SVN version control ! (WARNING: legacy BIOS no longer works with a PCI display adapter) - GUI and display libraries - - vga update interval now uses host timing if the realtime synchronization + - new parameter 'update_freq' for the 'vga' bochsrc option replaces the + 'vga_update_interval' option + - vga update frequency now uses host timing if the realtime synchronization is enabled with the "clock" option (FIXME: it should always be used - independent from the "clock" setting) - Implemented graphics mode snapshot for VBE, Cirrus and standard VGA modes. - Some unusual modes like CGA, and mode X are not supported yet. + CGA modes are not supported yet. + +- Config interface + - win32paramdlg: dialog size now adjusted to support larger label text - SF patches applied [3302668] VMX preemption timer by Jianan Hao diff --git a/bochs/iodev/vga.cc b/bochs/iodev/vga.cc index 74c365454..3c2d4fa30 100644 --- a/bochs/iodev/vga.cc +++ b/bochs/iodev/vga.cc @@ -2,7 +2,7 @@ // $Id$ ///////////////////////////////////////////////////////////////////////// // -// Copyright (C) 2002-2009 The Bochs Project +// Copyright (C) 2002-2011 The Bochs Project // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -1874,7 +1874,7 @@ void bx_vga_c::update(void) unsigned long line_compare; Bit8u *plane[4]; - if (BX_VGA_THIS s.graphics_ctrl.memory_mapping == 3) { // CGA 640x200x2 + if ((BX_VGA_THIS s.CRTC.reg[0x17] & 1) == 0) { // CGA 640x200x2 for (yc=0, yti=0; yc> 1; py = y >> BX_VGA_THIS s.y_doublescan; - byte_offset = start_addr + py * BX_VGA_THIS s.line_offset + (px & ~0x03); + byte_offset = start_addr + py * BX_VGA_THIS s.line_offset; + if (BX_VGA_THIS s.sequencer.chain_four) { + byte_offset += (px & ~0x03); + } else { + byte_offset += (px >> 2); + } *(dst_ptr++) = plane[px % 4][byte_offset]; } } diff --git a/bochs/iodev/vga.h b/bochs/iodev/vga.h index 1886302df..61df7dbed 100644 --- a/bochs/iodev/vga.h +++ b/bochs/iodev/vga.h @@ -2,7 +2,7 @@ // $Id$ ///////////////////////////////////////////////////////////////////////// // -// Copyright (C) 2002-2009 The Bochs Project +// Copyright (C) 2002-2011 The Bochs Project // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public