The VBE display extension is now a part of the Bochs core. The configure option
--enable-vbe is now deprecated and the symbols BX_SUPPORT_VBE and BX_SUPPORT_PCIVGA have been removed. To enable VBE support, the bochsrc option "vga: extension=" must be set to "vbe". If PCI is present, you can assign the "pcivga" device to a PCI slot.
This commit is contained in:
parent
ab1ea79f2c
commit
8c32359615
@ -21,7 +21,6 @@
|
|||||||
--enable-x86-debugger \
|
--enable-x86-debugger \
|
||||||
--enable-a20-pin \
|
--enable-a20-pin \
|
||||||
--enable-instrumentation=instrument/example1 \
|
--enable-instrumentation=instrument/example1 \
|
||||||
--enable-vbe \
|
|
||||||
--enable-ne2000 \
|
--enable-ne2000 \
|
||||||
--enable-pci \
|
--enable-pci \
|
||||||
--enable-acpi \
|
--enable-acpi \
|
||||||
|
@ -755,11 +755,7 @@ void bx_init_options()
|
|||||||
"VGA Extension",
|
"VGA Extension",
|
||||||
"Name of the VGA extension",
|
"Name of the VGA extension",
|
||||||
"none", BX_PATHNAME_LEN);
|
"none", BX_PATHNAME_LEN);
|
||||||
#if BX_SUPPORT_VBE
|
|
||||||
vga_extension->set_initial_val("vbe");
|
vga_extension->set_initial_val("vbe");
|
||||||
#elif BX_SUPPORT_CLGD54XX
|
|
||||||
vga_extension->set_initial_val("cirrus");
|
|
||||||
#endif
|
|
||||||
display->set_options(display->SHOW_PARENT);
|
display->set_options(display->SHOW_PARENT);
|
||||||
|
|
||||||
// keyboard & mouse subtree
|
// keyboard & mouse subtree
|
||||||
|
@ -636,9 +636,6 @@ typedef
|
|||||||
// limited i440FX PCI support
|
// limited i440FX PCI support
|
||||||
#define BX_SUPPORT_PCI 0
|
#define BX_SUPPORT_PCI 0
|
||||||
|
|
||||||
// Bochs VBE display interface
|
|
||||||
#define BX_SUPPORT_VBE 0
|
|
||||||
|
|
||||||
// CLGD54XX emulation
|
// CLGD54XX emulation
|
||||||
#define BX_SUPPORT_CLGD54XX 0
|
#define BX_SUPPORT_CLGD54XX 0
|
||||||
|
|
||||||
@ -649,9 +646,6 @@ typedef
|
|||||||
#error To enable ACPI support, you must also enable PCI
|
#error To enable ACPI support, you must also enable PCI
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Experimental VGA on PCI
|
|
||||||
#define BX_SUPPORT_PCIVGA 0
|
|
||||||
|
|
||||||
// Experimental host PCI device mapping
|
// Experimental host PCI device mapping
|
||||||
#define BX_SUPPORT_PCIDEV 0
|
#define BX_SUPPORT_PCIDEV 0
|
||||||
|
|
||||||
|
@ -1340,28 +1340,6 @@ AC_ARG_ENABLE(raw-serial,
|
|||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
||||||
AC_MSG_CHECKING(for VESA BIOS extensions)
|
|
||||||
AC_ARG_ENABLE(vbe,
|
|
||||||
[ --enable-vbe use VESA BIOS extensions],
|
|
||||||
[if test "$enableval" = yes; then
|
|
||||||
AC_MSG_RESULT(yes)
|
|
||||||
AC_DEFINE(BX_SUPPORT_VBE, 1)
|
|
||||||
if test "$pci" = 1; then
|
|
||||||
AC_DEFINE(BX_SUPPORT_PCIVGA, 1)
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
AC_MSG_RESULT(no)
|
|
||||||
AC_DEFINE(BX_SUPPORT_VBE, 0)
|
|
||||||
fi],
|
|
||||||
[
|
|
||||||
AC_MSG_RESULT(yes)
|
|
||||||
AC_DEFINE(BX_SUPPORT_VBE, 1)
|
|
||||||
if test "$pci" = 1; then
|
|
||||||
AC_DEFINE(BX_SUPPORT_PCIVGA, 1)
|
|
||||||
fi
|
|
||||||
]
|
|
||||||
)
|
|
||||||
|
|
||||||
AC_MSG_CHECKING(for CLGD54XX emulation)
|
AC_MSG_CHECKING(for CLGD54XX emulation)
|
||||||
AC_ARG_ENABLE(clgd54xx,
|
AC_ARG_ENABLE(clgd54xx,
|
||||||
[ --enable-clgd54xx enable CLGD54XX emulation],
|
[ --enable-clgd54xx enable CLGD54XX emulation],
|
||||||
@ -2793,6 +2771,16 @@ AC_ARG_ENABLE(vme,
|
|||||||
AC_MSG_RESULT(no)
|
AC_MSG_RESULT(no)
|
||||||
])
|
])
|
||||||
|
|
||||||
|
AC_MSG_CHECKING(for VESA BIOS extensions (deprecated))
|
||||||
|
AC_ARG_ENABLE(vbe,
|
||||||
|
[ --enable-vbe use VESA BIOS extensions (deprecated)],
|
||||||
|
[AC_MSG_RESULT($enableval)
|
||||||
|
AC_MSG_ERROR([DEPRECATED - this feature always available with .bochsrc option])
|
||||||
|
],
|
||||||
|
[
|
||||||
|
AC_MSG_RESULT(no)
|
||||||
|
])
|
||||||
|
|
||||||
|
|
||||||
# Create some subdirectories for when you run configure from some other
|
# Create some subdirectories for when you run configure from some other
|
||||||
# directory.
|
# directory.
|
||||||
|
@ -401,7 +401,7 @@ currently work with.
|
|||||||
<entry>VBE (VESA) Support</entry>
|
<entry>VBE (VESA) Support</entry>
|
||||||
<entry>Yes</entry>
|
<entry>Yes</entry>
|
||||||
<entry>Currently resolutions up to 2560x1600x32bpp are supported.
|
<entry>Currently resolutions up to 2560x1600x32bpp are supported.
|
||||||
You must compile Bochs with VBE enabled and use the LGPL'd VGABIOS.
|
You must enable VBE with the VGA extension option and use the LGPL'd VGABIOS.
|
||||||
For more information see <xref linkend="vesa-notes">.
|
For more information see <xref linkend="vesa-notes">.
|
||||||
</entry>
|
</entry>
|
||||||
</row>
|
</row>
|
||||||
@ -2176,13 +2176,6 @@ turn it off.
|
|||||||
<entry>no</entry>
|
<entry>no</entry>
|
||||||
<entry>Enable PCI pseudo NIC (network card) support.</entry>
|
<entry>Enable PCI pseudo NIC (network card) support.</entry>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
|
||||||
<entry>--enable-vbe</entry>
|
|
||||||
<entry>no</entry>
|
|
||||||
<entry>Use VGA BIOS Extensions (VBE) by Jeroen Janssen, see <xref linkend="vesa-notes">
|
|
||||||
for more information.
|
|
||||||
</entry>
|
|
||||||
</row>
|
|
||||||
<row>
|
<row>
|
||||||
<entry>--enable-clgd54xx</entry>
|
<entry>--enable-clgd54xx</entry>
|
||||||
<entry>no</entry>
|
<entry>no</entry>
|
||||||
@ -7201,8 +7194,7 @@ it may even be possible to edit the shortcut before sending it.
|
|||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
In order to use VESA VBE, you need to compile Bochs using the <option>--enable-vbe</option>
|
In order to use VESA VBE, you need to enable it in your <filename>bochsrc</filename> by setting the
|
||||||
option and enable it in your <filename>bochsrc</filename> by setting the
|
|
||||||
<link linkend="bochsopt-vga">vga option</link> to <parameter>vbe</parameter>.
|
<link linkend="bochsopt-vga">vga option</link> to <parameter>vbe</parameter>.
|
||||||
Finally, you need to use the
|
Finally, you need to use the
|
||||||
<ulink url="http://savannah.nongnu.org/projects/vgabios/">LGPL'd VGABIOS</ulink>
|
<ulink url="http://savannah.nongnu.org/projects/vgabios/">LGPL'd VGABIOS</ulink>
|
||||||
|
@ -259,12 +259,10 @@ void bx_devices_c::init(BX_MEM_C *newmem)
|
|||||||
|
|
||||||
#if BX_SUPPORT_PCI
|
#if BX_SUPPORT_PCI
|
||||||
if (SIM->get_param_bool(BXPN_I440FX_SUPPORT)->get()) {
|
if (SIM->get_param_bool(BXPN_I440FX_SUPPORT)->get()) {
|
||||||
#if BX_SUPPORT_PCIVGA && BX_SUPPORT_VBE
|
|
||||||
if ((DEV_is_pci_device("pcivga")) &&
|
if ((DEV_is_pci_device("pcivga")) &&
|
||||||
(!strcmp(SIM->get_param_string(BXPN_VGA_EXTENSION)->getptr(), "vbe"))) {
|
(!strcmp(SIM->get_param_string(BXPN_VGA_EXTENSION)->getptr(), "vbe"))) {
|
||||||
PLUG_load_plugin(pcivga, PLUGTYPE_OPTIONAL);
|
PLUG_load_plugin(pcivga, PLUGTYPE_OPTIONAL);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
#if BX_SUPPORT_USB_UHCI
|
#if BX_SUPPORT_USB_UHCI
|
||||||
if (is_usb_uhci_enabled()) {
|
if (is_usb_uhci_enabled()) {
|
||||||
PLUG_load_plugin(usb_uhci, PLUGTYPE_OPTIONAL);
|
PLUG_load_plugin(usb_uhci, PLUGTYPE_OPTIONAL);
|
||||||
|
@ -35,7 +35,7 @@
|
|||||||
|
|
||||||
#include "iodev.h"
|
#include "iodev.h"
|
||||||
|
|
||||||
#if BX_SUPPORT_PCI && BX_SUPPORT_PCIVGA
|
#if BX_SUPPORT_PCI
|
||||||
|
|
||||||
#include "pci.h"
|
#include "pci.h"
|
||||||
#include "pcivga.h"
|
#include "pcivga.h"
|
||||||
@ -192,4 +192,4 @@ void bx_pcivga_c::pci_write_handler(Bit8u address, Bit32u value, unsigned io_len
|
|||||||
BX_DEBUG(("write PCI register 0x%02x value 0x%08x", address, value));
|
BX_DEBUG(("write PCI register 0x%02x value 0x%08x", address, value));
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // BX_SUPPORT_PCI && BX_SUPPORT_PCIVGA
|
#endif // BX_SUPPORT_PCI
|
||||||
|
@ -120,10 +120,8 @@ void bx_vga_c::init(void)
|
|||||||
{
|
{
|
||||||
unsigned i,string_i;
|
unsigned i,string_i;
|
||||||
unsigned x,y;
|
unsigned x,y;
|
||||||
#if BX_SUPPORT_VBE
|
|
||||||
unsigned addr;
|
unsigned addr;
|
||||||
Bit16u max_xres, max_yres, max_bpp;
|
Bit16u max_xres, max_yres, max_bpp;
|
||||||
#endif
|
|
||||||
int argc;
|
int argc;
|
||||||
char *argv[16];
|
char *argv[16];
|
||||||
char *ptr;
|
char *ptr;
|
||||||
@ -278,8 +276,7 @@ void bx_vga_c::init(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#if BX_SUPPORT_VBE
|
// The following is for the VBE display extension
|
||||||
// The following is for the vbe display extension
|
|
||||||
BX_VGA_THIS vbe.enabled=0;
|
BX_VGA_THIS vbe.enabled=0;
|
||||||
BX_VGA_THIS vbe.dac_8bit=0;
|
BX_VGA_THIS vbe.dac_8bit=0;
|
||||||
BX_VGA_THIS vbe.base_address = 0x0000;
|
BX_VGA_THIS vbe.base_address = 0x0000;
|
||||||
@ -337,7 +334,6 @@ void bx_vga_c::init(void)
|
|||||||
|
|
||||||
BX_INFO(("VBE Bochs Display Extension Enabled"));
|
BX_INFO(("VBE Bochs Display Extension Enabled"));
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void bx_vga_c::init_iohandlers(bx_read_handler_t f_read, bx_write_handler_t f_write)
|
void bx_vga_c::init_iohandlers(bx_read_handler_t f_read, bx_write_handler_t f_write)
|
||||||
@ -499,7 +495,7 @@ void bx_vga_c::register_state(void)
|
|||||||
new bx_shadow_bool_c(list, "y_doublescan", &BX_VGA_THIS s.y_doublescan);
|
new bx_shadow_bool_c(list, "y_doublescan", &BX_VGA_THIS s.y_doublescan);
|
||||||
new bx_shadow_num_c(list, "last_bpp", &BX_VGA_THIS s.last_bpp);
|
new bx_shadow_num_c(list, "last_bpp", &BX_VGA_THIS s.last_bpp);
|
||||||
new bx_shadow_data_c(list, "memory", BX_VGA_THIS s.memory, BX_VGA_THIS s.memsize);
|
new bx_shadow_data_c(list, "memory", BX_VGA_THIS s.memory, BX_VGA_THIS s.memsize);
|
||||||
#if BX_SUPPORT_VBE
|
// register state for Bochs VBE
|
||||||
if (!strcmp(SIM->get_param_string(BXPN_VGA_EXTENSION)->getptr(), "vbe")) {
|
if (!strcmp(SIM->get_param_string(BXPN_VGA_EXTENSION)->getptr(), "vbe")) {
|
||||||
bx_list_c *vbe = new bx_list_c(list, "vbe", 18);
|
bx_list_c *vbe = new bx_list_c(list, "vbe", 18);
|
||||||
new bx_shadow_num_c(vbe, "cur_dispi", &BX_VGA_THIS vbe.cur_dispi, BASE_HEX);
|
new bx_shadow_num_c(vbe, "cur_dispi", &BX_VGA_THIS vbe.cur_dispi, BASE_HEX);
|
||||||
@ -520,21 +516,16 @@ void bx_vga_c::register_state(void)
|
|||||||
new bx_shadow_bool_c(vbe, "get_capabilities", &BX_VGA_THIS vbe.get_capabilities);
|
new bx_shadow_bool_c(vbe, "get_capabilities", &BX_VGA_THIS vbe.get_capabilities);
|
||||||
new bx_shadow_bool_c(vbe, "dac_8bit", &BX_VGA_THIS vbe.dac_8bit);
|
new bx_shadow_bool_c(vbe, "dac_8bit", &BX_VGA_THIS vbe.dac_8bit);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void bx_vga_c::after_restore_state(void)
|
void bx_vga_c::after_restore_state(void)
|
||||||
{
|
{
|
||||||
for (unsigned i=0; i<256; i++) {
|
for (unsigned i=0; i<256; i++) {
|
||||||
#if BX_SUPPORT_VBE
|
|
||||||
if (BX_VGA_THIS vbe.dac_8bit) {
|
if (BX_VGA_THIS vbe.dac_8bit) {
|
||||||
bx_gui->palette_change(i, BX_VGA_THIS s.pel.data[i].red,
|
bx_gui->palette_change(i, BX_VGA_THIS s.pel.data[i].red,
|
||||||
BX_VGA_THIS s.pel.data[i].green,
|
BX_VGA_THIS s.pel.data[i].green,
|
||||||
BX_VGA_THIS s.pel.data[i].blue);
|
BX_VGA_THIS s.pel.data[i].blue);
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
#endif
|
|
||||||
{
|
|
||||||
bx_gui->palette_change(i, BX_VGA_THIS s.pel.data[i].red<<2,
|
bx_gui->palette_change(i, BX_VGA_THIS s.pel.data[i].red<<2,
|
||||||
BX_VGA_THIS s.pel.data[i].green<<2,
|
BX_VGA_THIS s.pel.data[i].green<<2,
|
||||||
BX_VGA_THIS s.pel.data[i].blue<<2);
|
BX_VGA_THIS s.pel.data[i].blue<<2);
|
||||||
@ -544,12 +535,10 @@ void bx_vga_c::after_restore_state(void)
|
|||||||
old_iWidth = BX_MAX_XRES;
|
old_iWidth = BX_MAX_XRES;
|
||||||
old_iHeight = BX_MAX_YRES;
|
old_iHeight = BX_MAX_YRES;
|
||||||
BX_VGA_THIS redraw_area(0, 0, BX_MAX_XRES, BX_MAX_YRES);
|
BX_VGA_THIS redraw_area(0, 0, BX_MAX_XRES, BX_MAX_YRES);
|
||||||
#if BX_SUPPORT_VBE
|
|
||||||
if (BX_VGA_THIS vbe.enabled) {
|
if (BX_VGA_THIS vbe.enabled) {
|
||||||
bx_gui->dimension_update(BX_VGA_THIS vbe.xres, BX_VGA_THIS vbe.yres, 0, 0,
|
bx_gui->dimension_update(BX_VGA_THIS vbe.xres, BX_VGA_THIS vbe.yres, 0, 0,
|
||||||
BX_VGA_THIS vbe.bpp);
|
BX_VGA_THIS vbe.bpp);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
BX_VGA_THIS update();
|
BX_VGA_THIS update();
|
||||||
bx_gui->flush();
|
bx_gui->flush();
|
||||||
}
|
}
|
||||||
@ -730,7 +719,7 @@ Bit32u bx_vga_c::read(Bit32u address, unsigned io_len)
|
|||||||
case 0x08: case 0x09: case 0x0a: case 0x0b:
|
case 0x08: case 0x09: case 0x0a: case 0x0b:
|
||||||
case 0x0c: case 0x0d: case 0x0e: case 0x0f:
|
case 0x0c: case 0x0d: case 0x0e: case 0x0f:
|
||||||
retval = BX_VGA_THIS s.attribute_ctrl.palette_reg[BX_VGA_THIS s.attribute_ctrl.address];
|
retval = BX_VGA_THIS s.attribute_ctrl.palette_reg[BX_VGA_THIS s.attribute_ctrl.address];
|
||||||
RETURN(retval);
|
RETURN(retval);
|
||||||
break;
|
break;
|
||||||
case 0x10: /* mode control register */
|
case 0x10: /* mode control register */
|
||||||
retval =
|
retval =
|
||||||
@ -741,13 +730,13 @@ Bit32u bx_vga_c::read(Bit32u address, unsigned io_len)
|
|||||||
(BX_VGA_THIS s.attribute_ctrl.mode_ctrl.pixel_panning_compat << 5) |
|
(BX_VGA_THIS s.attribute_ctrl.mode_ctrl.pixel_panning_compat << 5) |
|
||||||
(BX_VGA_THIS s.attribute_ctrl.mode_ctrl.pixel_clock_select << 6) |
|
(BX_VGA_THIS s.attribute_ctrl.mode_ctrl.pixel_clock_select << 6) |
|
||||||
(BX_VGA_THIS s.attribute_ctrl.mode_ctrl.internal_palette_size << 7);
|
(BX_VGA_THIS s.attribute_ctrl.mode_ctrl.internal_palette_size << 7);
|
||||||
RETURN(retval);
|
RETURN(retval);
|
||||||
break;
|
break;
|
||||||
case 0x11: /* overscan color register */
|
case 0x11: /* overscan color register */
|
||||||
RETURN(BX_VGA_THIS s.attribute_ctrl.overscan_color);
|
RETURN(BX_VGA_THIS s.attribute_ctrl.overscan_color);
|
||||||
break;
|
break;
|
||||||
case 0x12: /* color plane enable */
|
case 0x12: /* color plane enable */
|
||||||
RETURN(BX_VGA_THIS s.attribute_ctrl.color_plane_enable);
|
RETURN(BX_VGA_THIS s.attribute_ctrl.color_plane_enable);
|
||||||
break;
|
break;
|
||||||
case 0x13: /* horizontal PEL panning register */
|
case 0x13: /* horizontal PEL panning register */
|
||||||
RETURN(BX_VGA_THIS s.attribute_ctrl.horiz_pel_panning);
|
RETURN(BX_VGA_THIS s.attribute_ctrl.horiz_pel_panning);
|
||||||
@ -1278,21 +1267,17 @@ void bx_vga_c::write(Bit32u address, Bit32u value, unsigned io_len, bx_bool no_l
|
|||||||
case 2:
|
case 2:
|
||||||
BX_VGA_THIS s.pel.data[BX_VGA_THIS s.pel.write_data_register].blue = value;
|
BX_VGA_THIS s.pel.data[BX_VGA_THIS s.pel.write_data_register].blue = value;
|
||||||
|
|
||||||
#if BX_SUPPORT_VBE
|
|
||||||
if (BX_VGA_THIS vbe.dac_8bit) {
|
if (BX_VGA_THIS vbe.dac_8bit) {
|
||||||
needs_update |= bx_gui->palette_change(BX_VGA_THIS s.pel.write_data_register,
|
needs_update |= bx_gui->palette_change(BX_VGA_THIS s.pel.write_data_register,
|
||||||
BX_VGA_THIS s.pel.data[BX_VGA_THIS s.pel.write_data_register].red,
|
BX_VGA_THIS s.pel.data[BX_VGA_THIS s.pel.write_data_register].red,
|
||||||
BX_VGA_THIS s.pel.data[BX_VGA_THIS s.pel.write_data_register].green,
|
BX_VGA_THIS s.pel.data[BX_VGA_THIS s.pel.write_data_register].green,
|
||||||
BX_VGA_THIS s.pel.data[BX_VGA_THIS s.pel.write_data_register].blue);
|
BX_VGA_THIS s.pel.data[BX_VGA_THIS s.pel.write_data_register].blue);
|
||||||
} else {
|
} else {
|
||||||
#endif
|
|
||||||
needs_update |= bx_gui->palette_change(BX_VGA_THIS s.pel.write_data_register,
|
needs_update |= bx_gui->palette_change(BX_VGA_THIS s.pel.write_data_register,
|
||||||
BX_VGA_THIS s.pel.data[BX_VGA_THIS s.pel.write_data_register].red<<2,
|
BX_VGA_THIS s.pel.data[BX_VGA_THIS s.pel.write_data_register].red<<2,
|
||||||
BX_VGA_THIS s.pel.data[BX_VGA_THIS s.pel.write_data_register].green<<2,
|
BX_VGA_THIS s.pel.data[BX_VGA_THIS s.pel.write_data_register].green<<2,
|
||||||
BX_VGA_THIS s.pel.data[BX_VGA_THIS s.pel.write_data_register].blue<<2);
|
BX_VGA_THIS s.pel.data[BX_VGA_THIS s.pel.write_data_register].blue<<2);
|
||||||
#if BX_SUPPORT_VBE
|
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1473,10 +1458,7 @@ void bx_vga_c::write(Bit32u address, Bit32u value, unsigned io_len, bx_bool no_l
|
|||||||
case 0x13:
|
case 0x13:
|
||||||
case 0x14:
|
case 0x14:
|
||||||
case 0x17:
|
case 0x17:
|
||||||
#if BX_SUPPORT_VBE
|
if (!BX_VGA_THIS vbe.enabled || (BX_VGA_THIS vbe.bpp == VBE_DISPI_BPP_4)) {
|
||||||
if (!BX_VGA_THIS vbe.enabled || (BX_VGA_THIS vbe.bpp == VBE_DISPI_BPP_4))
|
|
||||||
#endif
|
|
||||||
{
|
|
||||||
// Line offset change
|
// Line offset change
|
||||||
BX_VGA_THIS s.line_offset = BX_VGA_THIS s.CRTC.reg[0x13] << 1;
|
BX_VGA_THIS s.line_offset = BX_VGA_THIS s.CRTC.reg[0x13] << 1;
|
||||||
if (BX_VGA_THIS s.CRTC.reg[0x14] & 0x40) BX_VGA_THIS s.line_offset <<= 2;
|
if (BX_VGA_THIS s.CRTC.reg[0x14] & 0x40) BX_VGA_THIS s.line_offset <<= 2;
|
||||||
@ -1490,7 +1472,6 @@ void bx_vga_c::write(Bit32u address, Bit32u value, unsigned io_len, bx_bool no_l
|
|||||||
needs_update = 1;
|
needs_update = 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -1519,9 +1500,9 @@ Bit64s bx_vga_c::vga_param_handler(bx_param_c *param, int set, Bit64s val)
|
|||||||
{
|
{
|
||||||
// handler for runtime parameter 'vga_update_interval'
|
// handler for runtime parameter 'vga_update_interval'
|
||||||
if (set) {
|
if (set) {
|
||||||
BX_INFO (("Changing timer interval to %d", (Bit32u)val));
|
BX_INFO(("Changing timer interval to %d", (Bit32u)val));
|
||||||
BX_VGA_THIS timer_handler (theVga);
|
BX_VGA_THIS timer_handler(theVga);
|
||||||
bx_pc_system.activate_timer (BX_VGA_THIS timer_id, (Bit32u)val, 1);
|
bx_pc_system.activate_timer(BX_VGA_THIS timer_id, (Bit32u)val, 1);
|
||||||
}
|
}
|
||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
@ -1567,9 +1548,7 @@ void bx_vga_c::update(void)
|
|||||||
if ((bx_pc_system.time_usec() % 13888) < 70)
|
if ((bx_pc_system.time_usec() % 13888) < 70)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
#if BX_SUPPORT_VBE
|
if ((BX_VGA_THIS vbe.enabled) && (BX_VGA_THIS vbe.bpp != VBE_DISPI_BPP_4)) {
|
||||||
if ((BX_VGA_THIS vbe.enabled) && (BX_VGA_THIS vbe.bpp != VBE_DISPI_BPP_4))
|
|
||||||
{
|
|
||||||
// specific VBE code display update code
|
// specific VBE code display update code
|
||||||
unsigned pitch;
|
unsigned pitch;
|
||||||
unsigned xc, yc, xti, yti;
|
unsigned xc, yc, xti, yti;
|
||||||
@ -1832,7 +1811,7 @@ void bx_vga_c::update(void)
|
|||||||
// after a vbe display update, don't try to do any 'normal vga' updates anymore
|
// after a vbe display update, don't try to do any 'normal vga' updates anymore
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
// fields that effect the way video memory is serialized into screen output:
|
// fields that effect the way video memory is serialized into screen output:
|
||||||
// GRAPHICS CONTROLLER:
|
// GRAPHICS CONTROLLER:
|
||||||
// BX_VGA_THIS s.graphics_ctrl.shift_reg:
|
// BX_VGA_THIS s.graphics_ctrl.shift_reg:
|
||||||
@ -1906,19 +1885,14 @@ void bx_vga_c::update(void)
|
|||||||
} else { // output data in serial fashion with each display plane
|
} else { // output data in serial fashion with each display plane
|
||||||
// output on its associated serial output. Standard EGA/VGA format
|
// output on its associated serial output. Standard EGA/VGA format
|
||||||
|
|
||||||
#if BX_SUPPORT_VBE
|
if (BX_VGA_THIS vbe.enabled) {
|
||||||
if (BX_VGA_THIS vbe.enabled)
|
|
||||||
{
|
|
||||||
plane0 = &BX_VGA_THIS s.memory[0<<VBE_DISPI_4BPP_PLANE_SHIFT];
|
plane0 = &BX_VGA_THIS s.memory[0<<VBE_DISPI_4BPP_PLANE_SHIFT];
|
||||||
plane1 = &BX_VGA_THIS s.memory[1<<VBE_DISPI_4BPP_PLANE_SHIFT];
|
plane1 = &BX_VGA_THIS s.memory[1<<VBE_DISPI_4BPP_PLANE_SHIFT];
|
||||||
plane2 = &BX_VGA_THIS s.memory[2<<VBE_DISPI_4BPP_PLANE_SHIFT];
|
plane2 = &BX_VGA_THIS s.memory[2<<VBE_DISPI_4BPP_PLANE_SHIFT];
|
||||||
plane3 = &BX_VGA_THIS s.memory[3<<VBE_DISPI_4BPP_PLANE_SHIFT];
|
plane3 = &BX_VGA_THIS s.memory[3<<VBE_DISPI_4BPP_PLANE_SHIFT];
|
||||||
start_addr = BX_VGA_THIS vbe.virtual_start;
|
start_addr = BX_VGA_THIS vbe.virtual_start;
|
||||||
line_compare = 0xffff;
|
line_compare = 0xffff;
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
#endif
|
|
||||||
{
|
|
||||||
plane0 = &BX_VGA_THIS s.memory[0<<16];
|
plane0 = &BX_VGA_THIS s.memory[0<<16];
|
||||||
plane1 = &BX_VGA_THIS s.memory[1<<16];
|
plane1 = &BX_VGA_THIS s.memory[1<<16];
|
||||||
plane2 = &BX_VGA_THIS s.memory[2<<16];
|
plane2 = &BX_VGA_THIS s.memory[2<<16];
|
||||||
@ -2074,8 +2048,8 @@ void bx_vga_c::update(void)
|
|||||||
SET_TILE_UPDATED (xti, yti, 0);
|
SET_TILE_UPDATED (xti, yti, 0);
|
||||||
bx_gui->graphics_tile_update(BX_VGA_THIS s.tile, xc, yc);
|
bx_gui->graphics_tile_update(BX_VGA_THIS s.tile, xc, yc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break; // case 2
|
break; // case 2
|
||||||
|
|
||||||
@ -2216,21 +2190,13 @@ Bit8u bx_vga_c::mem_read(bx_phy_address addr)
|
|||||||
Bit32u offset;
|
Bit32u offset;
|
||||||
Bit8u *plane0, *plane1, *plane2, *plane3;
|
Bit8u *plane0, *plane1, *plane2, *plane3;
|
||||||
|
|
||||||
#if BX_SUPPORT_VBE
|
|
||||||
// if in a vbe enabled mode, read from the vbe_memory
|
// if in a vbe enabled mode, read from the vbe_memory
|
||||||
if ((BX_VGA_THIS vbe.enabled) && (BX_VGA_THIS vbe.bpp != VBE_DISPI_BPP_4))
|
if ((BX_VGA_THIS vbe.enabled) && (BX_VGA_THIS vbe.bpp != VBE_DISPI_BPP_4))
|
||||||
{
|
{
|
||||||
return vbe_mem_read(addr);
|
return vbe_mem_read(addr);
|
||||||
}
|
} else if ((BX_VGA_THIS vbe.base_address != 0) && (addr >= BX_VGA_THIS vbe.base_address)) {
|
||||||
else if ((BX_VGA_THIS vbe.base_address != 0) && (addr >= BX_VGA_THIS vbe.base_address))
|
|
||||||
{
|
|
||||||
return 0xff;
|
return 0xff;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(VGA_TRACE_FEATURE)
|
|
||||||
// BX_DEBUG(("8-bit memory read from 0x%08x", addr));
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef __OS2__
|
#ifdef __OS2__
|
||||||
|
|
||||||
@ -2268,17 +2234,12 @@ Bit8u bx_vga_c::mem_read(bx_phy_address addr)
|
|||||||
return BX_VGA_THIS s.memory[(offset & ~0x03) + (offset % 4)*65536];
|
return BX_VGA_THIS s.memory[(offset & ~0x03) + (offset % 4)*65536];
|
||||||
}
|
}
|
||||||
|
|
||||||
#if BX_SUPPORT_VBE
|
if (BX_VGA_THIS vbe.enabled) {
|
||||||
if (BX_VGA_THIS vbe.enabled)
|
|
||||||
{
|
|
||||||
plane0 = &BX_VGA_THIS s.memory[(0<<VBE_DISPI_4BPP_PLANE_SHIFT) + (BX_VGA_THIS vbe.bank<<16)];
|
plane0 = &BX_VGA_THIS s.memory[(0<<VBE_DISPI_4BPP_PLANE_SHIFT) + (BX_VGA_THIS vbe.bank<<16)];
|
||||||
plane1 = &BX_VGA_THIS s.memory[(1<<VBE_DISPI_4BPP_PLANE_SHIFT) + (BX_VGA_THIS vbe.bank<<16)];
|
plane1 = &BX_VGA_THIS s.memory[(1<<VBE_DISPI_4BPP_PLANE_SHIFT) + (BX_VGA_THIS vbe.bank<<16)];
|
||||||
plane2 = &BX_VGA_THIS s.memory[(2<<VBE_DISPI_4BPP_PLANE_SHIFT) + (BX_VGA_THIS vbe.bank<<16)];
|
plane2 = &BX_VGA_THIS s.memory[(2<<VBE_DISPI_4BPP_PLANE_SHIFT) + (BX_VGA_THIS vbe.bank<<16)];
|
||||||
plane3 = &BX_VGA_THIS s.memory[(3<<VBE_DISPI_4BPP_PLANE_SHIFT) + (BX_VGA_THIS vbe.bank<<16)];
|
plane3 = &BX_VGA_THIS s.memory[(3<<VBE_DISPI_4BPP_PLANE_SHIFT) + (BX_VGA_THIS vbe.bank<<16)];
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
#endif
|
|
||||||
{
|
|
||||||
plane0 = &BX_VGA_THIS s.memory[0<<16];
|
plane0 = &BX_VGA_THIS s.memory[0<<16];
|
||||||
plane1 = &BX_VGA_THIS s.memory[1<<16];
|
plane1 = &BX_VGA_THIS s.memory[1<<16];
|
||||||
plane2 = &BX_VGA_THIS s.memory[2<<16];
|
plane2 = &BX_VGA_THIS s.memory[2<<16];
|
||||||
@ -2354,22 +2315,14 @@ void bx_vga_c::mem_write(bx_phy_address addr, Bit8u value)
|
|||||||
unsigned start_addr;
|
unsigned start_addr;
|
||||||
Bit8u *plane0, *plane1, *plane2, *plane3;
|
Bit8u *plane0, *plane1, *plane2, *plane3;
|
||||||
|
|
||||||
#if BX_SUPPORT_VBE
|
|
||||||
// if in a vbe enabled mode, write to the vbe_memory
|
// if in a vbe enabled mode, write to the vbe_memory
|
||||||
if ((BX_VGA_THIS vbe.enabled) && (BX_VGA_THIS vbe.bpp != VBE_DISPI_BPP_4))
|
if ((BX_VGA_THIS vbe.enabled) && (BX_VGA_THIS vbe.bpp != VBE_DISPI_BPP_4))
|
||||||
{
|
{
|
||||||
vbe_mem_write(addr, value);
|
vbe_mem_write(addr, value);
|
||||||
return;
|
return;
|
||||||
}
|
} else if ((BX_VGA_THIS vbe.base_address != 0) && (addr >= BX_VGA_THIS vbe.base_address)) {
|
||||||
else if ((BX_VGA_THIS vbe.base_address != 0) && (addr >= BX_VGA_THIS vbe.base_address))
|
|
||||||
{
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(VGA_TRACE_FEATURE)
|
|
||||||
//BX_DEBUG(("8-bit memory write to %08x = %02x", addr, value));
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef __OS2__
|
#ifdef __OS2__
|
||||||
|
|
||||||
@ -2479,17 +2432,12 @@ void bx_vga_c::mem_write(bx_phy_address addr, Bit8u value)
|
|||||||
|
|
||||||
/* addr between 0xA0000 and 0xAFFFF */
|
/* addr between 0xA0000 and 0xAFFFF */
|
||||||
|
|
||||||
#if BX_SUPPORT_VBE
|
if (BX_VGA_THIS vbe.enabled) {
|
||||||
if (BX_VGA_THIS vbe.enabled)
|
|
||||||
{
|
|
||||||
plane0 = &BX_VGA_THIS s.memory[(0<<VBE_DISPI_4BPP_PLANE_SHIFT) + (BX_VGA_THIS vbe.bank<<16)];
|
plane0 = &BX_VGA_THIS s.memory[(0<<VBE_DISPI_4BPP_PLANE_SHIFT) + (BX_VGA_THIS vbe.bank<<16)];
|
||||||
plane1 = &BX_VGA_THIS s.memory[(1<<VBE_DISPI_4BPP_PLANE_SHIFT) + (BX_VGA_THIS vbe.bank<<16)];
|
plane1 = &BX_VGA_THIS s.memory[(1<<VBE_DISPI_4BPP_PLANE_SHIFT) + (BX_VGA_THIS vbe.bank<<16)];
|
||||||
plane2 = &BX_VGA_THIS s.memory[(2<<VBE_DISPI_4BPP_PLANE_SHIFT) + (BX_VGA_THIS vbe.bank<<16)];
|
plane2 = &BX_VGA_THIS s.memory[(2<<VBE_DISPI_4BPP_PLANE_SHIFT) + (BX_VGA_THIS vbe.bank<<16)];
|
||||||
plane3 = &BX_VGA_THIS s.memory[(3<<VBE_DISPI_4BPP_PLANE_SHIFT) + (BX_VGA_THIS vbe.bank<<16)];
|
plane3 = &BX_VGA_THIS s.memory[(3<<VBE_DISPI_4BPP_PLANE_SHIFT) + (BX_VGA_THIS vbe.bank<<16)];
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
#endif
|
|
||||||
{
|
|
||||||
plane0 = &BX_VGA_THIS s.memory[0<<16];
|
plane0 = &BX_VGA_THIS s.memory[0<<16];
|
||||||
plane1 = &BX_VGA_THIS s.memory[1<<16];
|
plane1 = &BX_VGA_THIS s.memory[1<<16];
|
||||||
plane2 = &BX_VGA_THIS s.memory[2<<16];
|
plane2 = &BX_VGA_THIS s.memory[2<<16];
|
||||||
@ -2898,20 +2846,14 @@ void bx_vga_c::redraw_area(unsigned x0, unsigned y0, unsigned width,
|
|||||||
|
|
||||||
BX_VGA_THIS s.vga_mem_updated = 1;
|
BX_VGA_THIS s.vga_mem_updated = 1;
|
||||||
|
|
||||||
#if BX_SUPPORT_VBE
|
|
||||||
if (BX_VGA_THIS s.graphics_ctrl.graphics_alpha || BX_VGA_THIS vbe.enabled) {
|
if (BX_VGA_THIS s.graphics_ctrl.graphics_alpha || BX_VGA_THIS vbe.enabled) {
|
||||||
#else
|
|
||||||
if (BX_VGA_THIS s.graphics_ctrl.graphics_alpha) {
|
|
||||||
#endif
|
|
||||||
// graphics mode
|
// graphics mode
|
||||||
xmax = old_iWidth;
|
xmax = old_iWidth;
|
||||||
ymax = old_iHeight;
|
ymax = old_iHeight;
|
||||||
#if BX_SUPPORT_VBE
|
|
||||||
if (BX_VGA_THIS vbe.enabled) {
|
if (BX_VGA_THIS vbe.enabled) {
|
||||||
xmax = BX_VGA_THIS vbe.xres;
|
xmax = BX_VGA_THIS vbe.xres;
|
||||||
ymax = BX_VGA_THIS vbe.yres;
|
ymax = BX_VGA_THIS vbe.yres;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
xt0 = x0 / X_TILESIZE;
|
xt0 = x0 / X_TILESIZE;
|
||||||
yt0 = y0 / Y_TILESIZE;
|
yt0 = y0 / Y_TILESIZE;
|
||||||
if (x0 < xmax) {
|
if (x0 < xmax) {
|
||||||
@ -2926,7 +2868,7 @@ void bx_vga_c::redraw_area(unsigned x0, unsigned y0, unsigned width,
|
|||||||
}
|
}
|
||||||
for (yti=yt0; yti<=yt1; yti++) {
|
for (yti=yt0; yti<=yt1; yti++) {
|
||||||
for (xti=xt0; xti<=xt1; xti++) {
|
for (xti=xt0; xti<=xt1; xti++) {
|
||||||
SET_TILE_UPDATED (xti, yti, 1);
|
SET_TILE_UPDATED(xti, yti, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2938,7 +2880,6 @@ void bx_vga_c::redraw_area(unsigned x0, unsigned y0, unsigned width,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#if BX_SUPPORT_VBE
|
|
||||||
bx_bool bx_vga_c::vbe_set_base_addr(Bit32u *addr, Bit8u *pci_conf)
|
bx_bool bx_vga_c::vbe_set_base_addr(Bit32u *addr, Bit8u *pci_conf)
|
||||||
{
|
{
|
||||||
if (DEV_pci_set_base_mem(BX_VGA_THIS_PTR, mem_read_handler,
|
if (DEV_pci_set_base_mem(BX_VGA_THIS_PTR, mem_read_handler,
|
||||||
@ -3487,5 +3428,3 @@ Bit32u bx_vga_c::vbe_write(Bit32u address, Bit32u value, unsigned io_len)
|
|||||||
|
|
||||||
} // end switch address
|
} // end switch address
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
|
||||||
|
@ -42,72 +42,63 @@
|
|||||||
(blue_mask)) \
|
(blue_mask)) \
|
||||||
)
|
)
|
||||||
|
|
||||||
#if BX_SUPPORT_VBE
|
// Bochs VBE definitions
|
||||||
#define VBE_DISPI_TOTAL_VIDEO_MEMORY_MB 16
|
|
||||||
#define VBE_DISPI_4BPP_PLANE_SHIFT 22
|
|
||||||
|
|
||||||
#define VBE_DISPI_BANK_ADDRESS 0xA0000
|
#define VBE_DISPI_TOTAL_VIDEO_MEMORY_MB 16
|
||||||
#define VBE_DISPI_BANK_SIZE_KB 64
|
#define VBE_DISPI_4BPP_PLANE_SHIFT 22
|
||||||
|
|
||||||
#define VBE_DISPI_MAX_XRES 2560
|
#define VBE_DISPI_BANK_ADDRESS 0xA0000
|
||||||
#define VBE_DISPI_MAX_YRES 1600
|
#define VBE_DISPI_BANK_SIZE_KB 64
|
||||||
#define VBE_DISPI_MAX_BPP 32
|
|
||||||
|
|
||||||
#define VBE_DISPI_IOPORT_INDEX 0x01CE
|
#define VBE_DISPI_MAX_XRES 2560
|
||||||
#define VBE_DISPI_IOPORT_DATA 0x01CF
|
#define VBE_DISPI_MAX_YRES 1600
|
||||||
|
#define VBE_DISPI_MAX_BPP 32
|
||||||
|
|
||||||
#define VBE_DISPI_INDEX_ID 0x0
|
#define VBE_DISPI_IOPORT_INDEX 0x01CE
|
||||||
#define VBE_DISPI_INDEX_XRES 0x1
|
#define VBE_DISPI_IOPORT_DATA 0x01CF
|
||||||
#define VBE_DISPI_INDEX_YRES 0x2
|
|
||||||
#define VBE_DISPI_INDEX_BPP 0x3
|
|
||||||
#define VBE_DISPI_INDEX_ENABLE 0x4
|
|
||||||
#define VBE_DISPI_INDEX_BANK 0x5
|
|
||||||
#define VBE_DISPI_INDEX_VIRT_WIDTH 0x6
|
|
||||||
#define VBE_DISPI_INDEX_VIRT_HEIGHT 0x7
|
|
||||||
#define VBE_DISPI_INDEX_X_OFFSET 0x8
|
|
||||||
#define VBE_DISPI_INDEX_Y_OFFSET 0x9
|
|
||||||
#define VBE_DISPI_INDEX_VIDEO_MEMORY_64K 0xa
|
|
||||||
|
|
||||||
#define VBE_DISPI_ID0 0xB0C0
|
#define VBE_DISPI_INDEX_ID 0x0
|
||||||
#define VBE_DISPI_ID1 0xB0C1
|
#define VBE_DISPI_INDEX_XRES 0x1
|
||||||
#define VBE_DISPI_ID2 0xB0C2
|
#define VBE_DISPI_INDEX_YRES 0x2
|
||||||
#define VBE_DISPI_ID3 0xB0C3
|
#define VBE_DISPI_INDEX_BPP 0x3
|
||||||
#define VBE_DISPI_ID4 0xB0C4
|
#define VBE_DISPI_INDEX_ENABLE 0x4
|
||||||
#define VBE_DISPI_ID5 0xB0C5
|
#define VBE_DISPI_INDEX_BANK 0x5
|
||||||
|
#define VBE_DISPI_INDEX_VIRT_WIDTH 0x6
|
||||||
|
#define VBE_DISPI_INDEX_VIRT_HEIGHT 0x7
|
||||||
|
#define VBE_DISPI_INDEX_X_OFFSET 0x8
|
||||||
|
#define VBE_DISPI_INDEX_Y_OFFSET 0x9
|
||||||
|
#define VBE_DISPI_INDEX_VIDEO_MEMORY_64K 0xa
|
||||||
|
|
||||||
#define VBE_DISPI_BPP_4 0x04
|
#define VBE_DISPI_ID0 0xB0C0
|
||||||
#define VBE_DISPI_BPP_8 0x08
|
#define VBE_DISPI_ID1 0xB0C1
|
||||||
#define VBE_DISPI_BPP_15 0x0F
|
#define VBE_DISPI_ID2 0xB0C2
|
||||||
#define VBE_DISPI_BPP_16 0x10
|
#define VBE_DISPI_ID3 0xB0C3
|
||||||
#define VBE_DISPI_BPP_24 0x18
|
#define VBE_DISPI_ID4 0xB0C4
|
||||||
#define VBE_DISPI_BPP_32 0x20
|
#define VBE_DISPI_ID5 0xB0C5
|
||||||
|
|
||||||
#define VBE_DISPI_DISABLED 0x00
|
#define VBE_DISPI_BPP_4 0x04
|
||||||
#define VBE_DISPI_ENABLED 0x01
|
#define VBE_DISPI_BPP_8 0x08
|
||||||
#define VBE_DISPI_GETCAPS 0x02
|
#define VBE_DISPI_BPP_15 0x0F
|
||||||
#define VBE_DISPI_8BIT_DAC 0x20
|
#define VBE_DISPI_BPP_16 0x10
|
||||||
#define VBE_DISPI_LFB_ENABLED 0x40
|
#define VBE_DISPI_BPP_24 0x18
|
||||||
#define VBE_DISPI_NOCLEARMEM 0x80
|
#define VBE_DISPI_BPP_32 0x20
|
||||||
|
|
||||||
#define VBE_DISPI_LFB_PHYSICAL_ADDRESS 0xE0000000
|
#define VBE_DISPI_DISABLED 0x00
|
||||||
|
#define VBE_DISPI_ENABLED 0x01
|
||||||
|
#define VBE_DISPI_GETCAPS 0x02
|
||||||
|
#define VBE_DISPI_8BIT_DAC 0x20
|
||||||
|
#define VBE_DISPI_LFB_ENABLED 0x40
|
||||||
|
#define VBE_DISPI_NOCLEARMEM 0x80
|
||||||
|
|
||||||
#define VBE_DISPI_TOTAL_VIDEO_MEMORY_KB (VBE_DISPI_TOTAL_VIDEO_MEMORY_MB * 1024)
|
#define VBE_DISPI_LFB_PHYSICAL_ADDRESS 0xE0000000
|
||||||
#define VBE_DISPI_TOTAL_VIDEO_MEMORY_BYTES (VBE_DISPI_TOTAL_VIDEO_MEMORY_KB * 1024)
|
|
||||||
|
|
||||||
#define BX_MAX_XRES VBE_DISPI_MAX_XRES
|
#define VBE_DISPI_TOTAL_VIDEO_MEMORY_KB (VBE_DISPI_TOTAL_VIDEO_MEMORY_MB * 1024)
|
||||||
#define BX_MAX_YRES VBE_DISPI_MAX_YRES
|
#define VBE_DISPI_TOTAL_VIDEO_MEMORY_BYTES (VBE_DISPI_TOTAL_VIDEO_MEMORY_KB * 1024)
|
||||||
|
|
||||||
#elif BX_SUPPORT_CLGD54XX
|
#define BX_MAX_XRES VBE_DISPI_MAX_XRES
|
||||||
|
#define BX_MAX_YRES VBE_DISPI_MAX_YRES
|
||||||
|
|
||||||
#define BX_MAX_XRES 1280
|
// End Bochs VBE definitions
|
||||||
#define BX_MAX_YRES 1024
|
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
#define BX_MAX_XRES 800
|
|
||||||
#define BX_MAX_YRES 600
|
|
||||||
|
|
||||||
#endif // BX_SUPPORT_VBE
|
|
||||||
|
|
||||||
#define X_TILESIZE 16
|
#define X_TILESIZE 16
|
||||||
#define Y_TILESIZE 24
|
#define Y_TILESIZE 24
|
||||||
@ -141,13 +132,6 @@ public:
|
|||||||
virtual void debug_dump(void);
|
virtual void debug_dump(void);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BX_SUPPORT_VBE
|
|
||||||
virtual bx_bool vbe_set_base_addr(Bit32u *addr, Bit8u *pci_conf);
|
|
||||||
|
|
||||||
BX_VGA_SMF Bit8u vbe_mem_read(bx_phy_address addr) BX_CPP_AttrRegparmN(1);
|
|
||||||
BX_VGA_SMF void vbe_mem_write(bx_phy_address addr, Bit8u value) BX_CPP_AttrRegparmN(2);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
virtual void redraw_area(unsigned x0, unsigned y0,
|
virtual void redraw_area(unsigned x0, unsigned y0,
|
||||||
unsigned width, unsigned height);
|
unsigned width, unsigned height);
|
||||||
|
|
||||||
@ -171,25 +155,11 @@ protected:
|
|||||||
static void write_handler_no_log(void *this_ptr, Bit32u address, Bit32u value, unsigned io_len);
|
static void write_handler_no_log(void *this_ptr, Bit32u address, Bit32u value, unsigned io_len);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BX_SUPPORT_VBE
|
|
||||||
static Bit32u vbe_read_handler(void *this_ptr, Bit32u address, unsigned io_len);
|
|
||||||
static void vbe_write_handler(void *this_ptr, Bit32u address, Bit32u value, unsigned io_len);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if BX_USE_VGA_SMF == 0
|
#if BX_USE_VGA_SMF == 0
|
||||||
Bit32u read(Bit32u address, unsigned io_len);
|
Bit32u read(Bit32u address, unsigned io_len);
|
||||||
#endif
|
#endif
|
||||||
void write(Bit32u address, Bit32u value, unsigned io_len, bx_bool no_log);
|
void write(Bit32u address, Bit32u value, unsigned io_len, bx_bool no_log);
|
||||||
|
|
||||||
#if BX_SUPPORT_VBE
|
|
||||||
|
|
||||||
#if BX_USE_VGA_SMF == 0
|
|
||||||
Bit32u vbe_read(Bit32u address, unsigned io_len);
|
|
||||||
void vbe_write(Bit32u address, Bit32u value, unsigned io_len, bx_bool no_log);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif // BX_SUPPORT_VBE
|
|
||||||
|
|
||||||
BX_VGA_SMF void update(void);
|
BX_VGA_SMF void update(void);
|
||||||
BX_VGA_SMF void determine_screen_dimensions(unsigned *piHeight, unsigned *piWidth);
|
BX_VGA_SMF void determine_screen_dimensions(unsigned *piHeight, unsigned *piWidth);
|
||||||
|
|
||||||
@ -305,7 +275,24 @@ protected:
|
|||||||
Bit8u last_bpp;
|
Bit8u last_bpp;
|
||||||
} s; // state information
|
} s; // state information
|
||||||
|
|
||||||
#if BX_SUPPORT_VBE
|
int timer_id;
|
||||||
|
bx_bool extension_init;
|
||||||
|
bx_bool extension_checked;
|
||||||
|
|
||||||
|
// Bochs VBE section
|
||||||
|
virtual bx_bool vbe_set_base_addr(Bit32u *addr, Bit8u *pci_conf);
|
||||||
|
|
||||||
|
BX_VGA_SMF Bit8u vbe_mem_read(bx_phy_address addr) BX_CPP_AttrRegparmN(1);
|
||||||
|
BX_VGA_SMF void vbe_mem_write(bx_phy_address addr, Bit8u value) BX_CPP_AttrRegparmN(2);
|
||||||
|
|
||||||
|
static Bit32u vbe_read_handler(void *this_ptr, Bit32u address, unsigned io_len);
|
||||||
|
static void vbe_write_handler(void *this_ptr, Bit32u address, Bit32u value, unsigned io_len);
|
||||||
|
|
||||||
|
#if BX_USE_VGA_SMF == 0
|
||||||
|
Bit32u vbe_read(Bit32u address, unsigned io_len);
|
||||||
|
void vbe_write(Bit32u address, Bit32u value, unsigned io_len, bx_bool no_log);
|
||||||
|
#endif
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
Bit16u cur_dispi;
|
Bit16u cur_dispi;
|
||||||
Bit32u base_address;
|
Bit32u base_address;
|
||||||
@ -329,11 +316,6 @@ protected:
|
|||||||
bx_bool get_capabilities;
|
bx_bool get_capabilities;
|
||||||
bx_bool dac_8bit;
|
bx_bool dac_8bit;
|
||||||
} vbe; // VBE state information
|
} vbe; // VBE state information
|
||||||
#endif
|
|
||||||
|
|
||||||
int timer_id;
|
|
||||||
bx_bool extension_init;
|
|
||||||
bx_bool extension_checked;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#if BX_SUPPORT_CLGD54XX
|
#if BX_SUPPORT_CLGD54XX
|
||||||
|
@ -1084,8 +1084,7 @@ void bx_init_hardware()
|
|||||||
SIM->get_param_bool(BXPN_I440FX_SUPPORT)->get() ? "yes" : "no"));
|
SIM->get_param_bool(BXPN_I440FX_SUPPORT)->get() ? "yes" : "no"));
|
||||||
BX_INFO((" SB16 support: %s",BX_SUPPORT_SB16?"yes":"no"));
|
BX_INFO((" SB16 support: %s",BX_SUPPORT_SB16?"yes":"no"));
|
||||||
BX_INFO((" USB support: %s",BX_SUPPORT_PCIUSB?"yes":"no"));
|
BX_INFO((" USB support: %s",BX_SUPPORT_PCIUSB?"yes":"no"));
|
||||||
BX_INFO((" VGA extension support: %s %s",BX_SUPPORT_VBE?"vbe":"",
|
BX_INFO((" VGA extension support: vbe %s", BX_SUPPORT_CLGD54XX?"cirrus":""));
|
||||||
BX_SUPPORT_CLGD54XX?"cirrus":""));
|
|
||||||
|
|
||||||
// Check if there is a romimage
|
// Check if there is a romimage
|
||||||
if (strcmp(SIM->get_param_string(BXPN_ROM_PATH)->getptr(),"") == 0) {
|
if (strcmp(SIM->get_param_string(BXPN_ROM_PATH)->getptr(),"") == 0) {
|
||||||
|
Loading…
Reference in New Issue
Block a user