Commit Graph

2823 Commits

Author SHA1 Message Date
Volker Ruppert
733e466628 Split the VBE bank into separate read and write apertures. The compatibility
mode sets both banks to the same value. Reading VBE bank register always
returns the write aperture setting. This feature is designed for the scrolling
function of the VBE 'write character' support. VBE code should use compatibility
mode for now.
TODO: update VGABIOS to use this feature.
2021-05-30 16:13:37 +00:00
Volker Ruppert
c78c1a9af9 Enable preferred timing mode as expected by EDID format version 1.3. 2021-05-30 07:28:53 +00:00
Volker Ruppert
8cbf4eff8e Some changes for the Bochs VBE 32k bank granularity feature.
- VBE enable register returns 32k granularity flag if enabled.
- VBE bank register returns 32k granularity flag if VBE_DISPI_GETCAPS is set.
- Defining new DISPI ID not necessary.
- TODO: update VGABIOS to use this feature.
2021-05-23 06:30:51 +00:00
Volker Ruppert
43033b2137 Some changes for the Bochs VBE support.
- Limit VBE bank size to 64k as expected.
- Enabling VBE mode now clears the whole video memory for all bpp modes unless
  "noclear" bit is set.
- Prepared 32k bank granularity mode required for text output functions. Added
  new VBE_DISPI_ID6 to indicate this capability. The default is still 64k.
2021-05-21 20:49:34 +00:00
Volker Ruppert
57ad842568 Some small Cirrus changes.
- Save/restore: fixed number of registers per controller.
- Report interlaced mode on mode switch.
- Added BX_DEBUG message for MCLK setting (unused).
2021-05-16 07:40:46 +00:00
Volker Ruppert
128e54a137 Some small Cirrus Video clock changes.
- Fixed reset values for VCLK and related sequencer registers.
- Added BX_ERROR for unimplemented feature (using MCLK as VCLK).
2021-05-15 16:15:59 +00:00
Volker Ruppert
aa9045b63f Set EDID checksum in constructor. 2021-05-13 17:58:57 +00:00
Volker Ruppert
95dc1b2012 Skip display update if a mode update is in progress. 2021-05-11 15:00:58 +00:00
Volker Ruppert
4db9f76819 Added port 0xE9 hack switch to runtime options. 2021-05-11 14:42:31 +00:00
Volker Ruppert
77cc12cce5 Added support for reading VGA latches using CRTC register 0x22 (undocumented
for original VGA, documented for Cirrus and Voodoo Banshee).
2021-04-23 06:42:52 +00:00
Volker Ruppert
adf209fe9e Fixed some issues reported by valgrind. 2021-04-18 17:20:41 +00:00
Volker Ruppert
b19a7b1042 Added USB packet logging support in PCAP format (patch #560 by Ben Lunt).
- Added new files with small changes, output can be viewed with Wireshark.
- FIXME: Windows ports crash with original Win98 guest and USB disk connected.
- TODO: mention new feature in documentation.
2021-04-17 18:57:05 +00:00
Volker Ruppert
719592e2f3 Fixed device connect failure handling in all HCs (reset port parameters).
The old code has blocked the port after failure.
2021-04-17 17:48:42 +00:00
Volker Ruppert
30e24fa3d5 Prepared USB packet logging support in PCAP format (patch #560 by Ben Lunt).
- DONE: config option handling, usb_dump_packet() changes
- TODO: add new file after compiling and testing new code on Windows
2021-04-17 09:30:58 +00:00
Volker Ruppert
6d5897217c Added missing PEL mask support in the VGA core. 2021-04-17 08:42:03 +00:00
Volker Ruppert
049826aa32 Fixed possible segfault in case of invalid filename based on patch #559.
Since this save/restore list exists in all devices, it's safe to move the new
code to the usb_device_c destructor.
2021-04-13 11:56:41 +00:00
Volker Ruppert
69695bfd67 Prepared the Banshee code for the planned LGPL'd VGABIOS with 3dfx Voodoo
support. The VGABIOS image will be compiled for Banshee PCI and this code
modifies the PCI data for the Voodoo3 and AGP models.
2021-04-11 20:09:43 +00:00
Volker Ruppert
7aa5eb7a51 Some changes for correct vertical frequency reporting on mode switch.
- vgacore: method get_crtc_params() now returns selected video clock value.
- banshee: now using selected video clock instead of hardcoded VCLK #3.
- cirrus: added vertical frequency to mode switch BX_INFO.
2021-04-07 06:31:25 +00:00
Volker Ruppert
7aea547b9f Fixed possible segfault on some platforms. We need 'count + 4' device entries,
one for the "none" entry and a terminating NULL entry.
2021-04-05 11:17:20 +00:00
Volker Ruppert
857c3be2ba Some work on the Voodoo Banshee code.
- Moved setup of default i/o register values to reset().
- Set up strapInfo register bits in init().
- Don't overwrite readonly bits in miscInit1 register.
- Set up subsystem ID in VGABIOS ROM in case it's > 32k (doesn't exist yet).
- Copy subsystem ID from ROM to PCI config registers in reset().
2021-04-04 19:00:29 +00:00
Volker Ruppert
d8b25c5f26 Some more cleanup in the plugins code. 2021-04-03 18:26:03 +00:00
Volker Ruppert
7b355cd399 Get rid of the code duplication in the PIC write handler. 2021-04-03 16:44:19 +00:00
Volker Ruppert
7d104ffceb Fixed setting up advanced PCI options. 2021-04-03 12:54:25 +00:00
Volker Ruppert
e411667942 Started reducing PIC code duplication and some cleanups. 2021-04-02 19:01:37 +00:00
Volker Ruppert
8e8414aae4 Some cleanup in the plugins code and related documentation additions. 2021-04-01 19:36:59 +00:00
Volker Ruppert
e9df9c51c8 Fixed compilation with PCI host device mapping support enabled. Since a plugin
cannot unload itself, BX_UNREGISTER_DEVICE_DEVMODEL() call will fail. Setting
plugin control flag to 0 like other devices do. When starting simulation, all
unused plugins are removed.
NOTE: The pcidev stuff is unmaintained, functionality not tested.
2021-03-26 18:41:28 +00:00
Volker Ruppert
81f7b6d47a Fixed floppy format track handling. After introducing the DMA optimization it
stopped after first sector.
2021-03-21 20:53:48 +00:00
Volker Ruppert
db3a176c84 Fixed issue reported in SF patch #558: deassert INT if IMR change masks active request. 2021-03-19 17:45:49 +00:00
Volker Ruppert
b79b868ff9 Attempt to fix the issue reported in SF patch #558 (fixed spurious interrupt
detection).
2021-03-17 19:42:41 +00:00
Volker Ruppert
5385b2b98b Some textconfig related changes.
- Removed unused method bx_list_c::text_print().
- Fixed default prompt in bx_param_enum_c::text_ask().
- speaker.cc: fixed a typo in ask format.
2021-03-14 09:52:15 +00:00
Volker Ruppert
25e725a23c Makefile dependency updates
- Don't include paramtree.h in siminterface.h to get rid of duplicates
  in a lot of Makefile dependency lines.
- Regenerated Makefile dependencies in iodev and affected subdirectories.
- FIXME #1: including debug.h causes duplicate entries of config.h and osdep.h.
- FIXME #2: cpudb.h appears in most of the iodev* dependencies, but only needed
  by config.cc and the cpu class.
2021-03-13 09:54:06 +00:00
Volker Ruppert
90ac89ea22 After changing network device object pointer to class logfunctions the
networking modules don't need to include iodev.h.
2021-03-12 21:31:51 +00:00
Volker Ruppert
51a9557acf Disk image and sound driver modules don't need to include iodev.h. 2021-03-11 21:46:25 +00:00
Volker Ruppert
a2cf072751 Some cleanups in the plugins code. 2021-03-07 16:01:39 +00:00
Volker Ruppert
0c2a9c69d6 Some config option changes.
- Moved serial and parallel config parameter list creation to the corresponding
  device code.
- Unregister serial and parallel bochsrc options in PLUGIN_FINI mode.
- Moved USB config and runtime parameter list creation to bx_init_usb_options().
- textconfig.cc: Small fixes in the optional plugin control.
2021-03-07 11:54:50 +00:00
Volker Ruppert
27c120154b Fixed a GCC warning and some MSVC warnings. 2021-02-27 20:53:10 +00:00
Volker Ruppert
2aadd3e470 Changed type of the PCI slot option to bx_param_enum_c and build choices list
from plugin devives with PLUGFLAG_PCI set.
2021-02-27 10:23:05 +00:00
Volker Ruppert
4dd5816108 Some changes in the Bochs plugins code.
- Changed variable type of the plugin_t "type" member from enum to Bit16u.
- Added support for returning device flags with the new mode PLUGIN_FLAGS in
  the plugin entry functions. It is currently only used for devices that can
  be connected to a PCI slot.
- Code cleanup in core device plugins: checking type no longer necessary.
- The "non-plugin" mode now also uses the "loadtype" member of plugin_t.

TODO: Change PCI slot options to bx_param_enum_c and build the choices list
using the new capabilities of the plugin API.
2021-02-26 20:37:49 +00:00
Volker Ruppert
8aaf9d858e Changed type of vga and svga_cirrus plugins to PLUGTYPE_VGA. Modified vga
extension option init to make this work correctly. The choices "none" and "vbe"
load the vga plugin, "cirrus" loads svga_cirrus.
2021-02-23 08:12:24 +00:00
Volker Ruppert
b84c6c8526 Some changes in the device config handling in all HCs and external hub.
- Disable port "options" parameter after successful connect. While connected,
  a device may install runtime options to control it's behaviour.
- Added enable handlers for the "options" parameter to ensure an attempt to
  change the device while connected doesn't enable it.
- Some related code cleanups.
2021-02-20 19:58:39 +00:00
Volker Ruppert
2e44a5c8bf Changed type of VGA extension option to bx_param_enum_c. Additional choices are
added from plugins list.
2021-02-19 16:05:56 +00:00
Volker Ruppert
24bccc8efb Changed parameter handler argument "set" type to bool. 2021-02-19 13:13:42 +00:00
Volker Ruppert
67a5487eab Some cleanup in the USB device change code. 2021-02-18 18:10:41 +00:00
Volker Ruppert
d4171cbf31 Renamed usb_cbi plugin to usb_floppy (including changes of source file names
and internal names).
2021-02-18 15:03:05 +00:00
Volker Ruppert
ceb8462cc7 Updated main and usb Makefile dependencies. 2021-02-17 16:53:40 +00:00
Volker Ruppert
dcdceb96f6 Generate USB devices list from available USB plugins list and removed hardcoded
device handling. Added some code to handle plugins that provide more than one
device type (usb_hid, usb_msd) or with different name (usb_cbi). The device
type member is now only used by multi-function devices.
2021-02-17 16:22:55 +00:00
Volker Ruppert
16d79cbf0b Some fixes and cleanups in the USB code.
- USB hub: disable device "options" parameter if device is set to "none".
- USB hub: handle device disconnect in runtime_config().
- Removed handling of USB device type in host controllers and external hub.
2021-02-16 17:04:04 +00:00
Volker Ruppert
368c83127e Some small changes in the USB devices configuration.
- Fixed USB devices list by adding a terminating NULL entry.
- Disable USB device options parameter if device is set to "none".
- Related documentation updates.
2021-02-15 19:55:53 +00:00
Volker Ruppert
919d82b68e Next step of USB devices handling rewrite. Changed type of the device parameter
to bx_param_enum_c. Updated code to provide support for legacy syntax
(portX="device:option").
TODO: generate USB devices list from plugins list.
2021-02-15 16:09:02 +00:00
Volker Ruppert
ebc11b80c8 The variable name "interface" cannot be used if windows.h is included. 2021-02-14 09:59:36 +00:00