Commit Graph

516 Commits

Author SHA1 Message Date
Volker Ruppert
8db0a2b001 Replaced the plugin init / fini functions with one single function called
plugin_entry(). The additional boolean argument "init" is used to select the
requested action. The entry points still have unique names for compatibility
with the "non-plugin" compilation. Added macros for setting up these names
(e.g. PLUGIN_ENTRY_FOR_MODULE for device plugins).
2021-01-23 12:06:11 +00:00
Volker Ruppert
127fd003cc Some more work on the Bochs plugins support.
- Added support for loading all plugins of one type using wildcard "*".
- Unloading no longer removes the plugin object. Now the member "loaded" is
  set to 0 and the type of a device plugin is reset.
- Added plugin_cleanup() function to remove plugin objects on Bochs exit.
- Some other related cleanups in the plugins code.
2021-01-08 19:04:41 +00:00
Volker Ruppert
5ffb319df1 Rewrite of the disk image mode handling. Disk image modes are now stored as
string constants instead of hardcoded values. Available modes are detected at
Bochs startup and stored in a string array before initializing options. In the
plugins case additional modes are read from the plugins list. If plugins are
off, the hdimage_locator_c registry is used. Related changes in all parts of
Bochs that need the hdimage stuff.
TODO #1: Network and sound drivers could be handled in a similar way.
TODO #2: Make disk image mode detection work again in plugins mode.
2021-01-05 21:57:13 +00:00
Volker Ruppert
3d5c4615bc Rmoved "load32bitOShack" feature: forgot one change. 2020-06-07 17:32:48 +00:00
Volker Ruppert
f587ef549f Added missing Bochs command line in documentation. 2020-04-04 21:41:59 +00:00
Stanislav Shwartsman
e8bc5ac024 commit small fixes from patch by Ben 2020-03-09 07:27:55 +00:00
Volker Ruppert
260d1f68d4 Some fixes for configuration and compilation with MSYS2.
- Added case for "*-msys" to the existing "*.mingw*" cases.
- Fixed $JADE value in case the program is not installed.
- Fixed RedirectIOToConsole() function for MSYS with 64-bit gcc 9.2.
2020-01-31 16:43:25 +00:00
Volker Ruppert
a088949447 Save / restore fixes
- Don't set up and load pre-defined optional plugins in restore mode.
- Remove the save/restore registration in Voodoo destructors.
- TODO: Fix frozen SDL/SDL2 display after restore.
2020-01-24 16:01:00 +00:00
Volker Ruppert
58ebb5819f Releases (SVN flaG 0) now use the timestamp from README file instead of the
compilation time of main.cc for console and log file output.
2020-01-02 16:19:02 +00:00
Volker Ruppert
5cb6392ca4 Added function bx_get_timestamp() to reduce code duplication.
TODO: Use special timestamp in the release case (similar to Bochs BIOS).
2020-01-02 09:41:58 +00:00
Volker Ruppert
f206839636 Some work on the Bochs version number strings.
- Get rid of VER_STRING since it's the same as VERSION
- Add new defines VER_MAJOR, VER_MINOR, VER_PATCH and VER_SVN and use them for
  the version number on Windows.
- TODO: Add the capability to detect installed version to the Windows installer.
2019-11-14 10:34:39 +00:00
Stanislav Shwartsman
2ae332cce8 patch by Luigu.B - significantly speedup multi-threaded guest simulation 2019-08-09 19:57:13 +00:00
Volker Ruppert
74d40805d1 Added support for unlocking disk images (locks leftover from previous Bochs
session) with the new command line argument '-unlock'.
2018-05-11 07:44:49 +00:00
Volker Ruppert
4462ac7319 Fixed Banshee status reading via MMIO (unaligned access is allowed).
The Banshee AGP model is now basicly working (tested with Win98SE).
Started documentation updates about i440BX chipset and Banshee AGP.
2018-05-03 19:46:12 +00:00
Stanislav Shwartsman
a22c6a292a better dump of param tree from debugger 2018-01-10 20:21:24 +00:00
Stanislav Shwartsman
5f2bf81995 add new dump_param method to param object which dumps param into a string
use new method do dump param tree during save/restore, GUI and text debugger and other places
significantly reduce code duplication over multiple modules
2018-01-10 20:05:59 +00:00
Volker Ruppert
bd1eb0f862 Rewrite of the USB devices plugin code similar to the network driver code.
- Removed "pseudo device plugin" containing common code and all connectable
  USB devices.
- Moved USB device base class and module handling to the Bochs core.
  Now loading USB device plugins in usb_common.cc.
- Created separate plugins for each USB device implementation.
- Modified Bochs plugin system to support new plugin type PLUGTYPE_USBDEV.
- Added entries for the non-plugin case similar to the network and sound stuff.
2017-05-28 08:13:06 +00:00
Volker Ruppert
4ebe5e6879 If setenv() is present on Windows and variable BXSHARE is not set, use the
function get_builtin_variable() to set it up with either the value of the Bochs
registry key or the BX_SHARE_PATH constant.
2017-04-22 10:17:54 +00:00
Volker Ruppert
e1d8bedbb5 Added symbol BX_LOAD32BITOSHACK to disable this legacy feature. With the
latest BIOS images 32-bit and even 64-bit guest OS's are known to boot inside
of Bochs without hacking. This legacy hack could be removed after next release
if nobody complains.
2017-04-17 13:26:44 +00:00
Volker Ruppert
f33093549b Modified plugin system to support the new PLUGTYPE_GUI.
- Changed the name of the entry point of the gui plugin code to
  lib{gui_name}_gui_plugin_init(). It is used when loading plugin with the new
  type. Added gui init code for the non-plugin version in plugin.cc.
- Some related changes for the "wx" case.
- The function load_and_init_display_lib() now only returns 1 on success.
- Minor other changes.
2017-02-18 16:28:04 +00:00
Volker Ruppert
19b98b1145 Simplified code for the "optromimage" and "optramimage" options stuff (saving
configuration, loading images). Cleaned up "romimage" option parsing and
prepared parameter "options" for the behaviour of the Bochs BIOS.
TODO: implement BIOS option "fastboot" to skip the boot menu prompt.
2017-02-14 20:11:58 +00:00
Volker Ruppert
0d3b5a129c Print a more detailed list of available hardware on top of the log file. 2017-02-10 19:38:44 +00:00
Volker Ruppert
d5ffb53f4e Simplified loading of the display library ("gui") plugin. Some special code is
only required for the non-plugin case. Loading an externally developed gui might
be possible now.
2017-01-12 21:39:04 +00:00
Volker Ruppert
0ba744b9fe Started implementing USB EHCI support. The PCI and MMIO register behaviour is
almost implemented, the port owner handling and the UHCI companion controllers
are present. High speed devices are not yet supported, since the EHCI scheduler
code has not been written yet (e.g. porting from Qemu). Low and full speed
devices should be detected correctly and work after port ownership change to
UHCI. 6 ports are available and the bochsrc syntax is similar to other HCs.
2015-12-06 20:03:42 +00:00
Volker Ruppert
93f9584b1b Load USB core plugin before parsing bochsrc, since USB HC devices depend on
it's symbols. Unload this plugin in the devices init if unused.
TODO: Similar changes may be required for the networking and sound stuff.
2015-11-20 18:07:27 +00:00
Volker Ruppert
7da8cfa4b0 Fixed save/restore support of the USB subsystem when using an external hub
with devices conected at runtime.
- Added restore handler support for the bx_list_c class. If a handler is
  registered, it will be called after restoring all of the list's members.
- USB hub: add special lists to the port state and add pointers to the
  runtime-only options for each port. The restore handler of this list calls
  init_device() to make sure all connected devices can be restored.
- Call restore_logopts() after restoring hardware to make sure all saved
  modules have been created.
- TODO: the USB cdrom also needs a fix for it's runtime-only options.
2015-08-28 17:37:38 +00:00
Volker Ruppert
8cd9dbedad Setting up and reporting BXSHARE value should not depend on plugin support. 2015-02-01 11:46:55 +00:00
Stanislav Shwartsman
03dab0b0c9 remove debug prints from param tree dump in xml format, small code reorg 2014-11-30 21:26:33 +00:00
Stanislav Shwartsman
1924780b06 added ability to dump Bochs param tree in XML format 2014-11-15 22:03:52 +00:00
Stanislav Shwartsman
8d1e3b2ac1 Added statistics collection infrastructure in Bochs and
implemented important CPU statistics which were used for Bochs CPU model performance analysis.
old statistics code from paging.cc and cpu.cc is replaced with new infrastructure.

In order to enale statitics collection in Bochs CPU:

- Enable statistics @ compilation time in cpu/cpustats.h
- Dump statistics periodically by adding -dumpstats N into Bochs command line
2014-10-14 15:59:10 +00:00
Volker Ruppert
3e2acd21ac Fixes for the SDL2 gui on Windows 2014-06-28 23:49:10 +00:00
Volker Ruppert
3c0ad43092 Continued preparing Bochs for SDL2 support
- added new symbol BX_WITH_SDL2 and prepared build system
- TODO #1: add new option --with-sdl2 to configure script
- TODO #2: add new file sdl2.cc (porting seems hard to do - writing from scratch
  might be better)
2014-06-23 19:37:58 +00:00
Volker Ruppert
5602e1b676 Added new symbol BX_USE_WIN32CONFIG in config.h and cleaned up related code 2014-06-20 09:31:56 +00:00
Volker Ruppert
acc4c6c2c8 Some fixes and cleanups
- in wx we had two logfunctions for the siminterface (removed duplicate init)
- renamed siminterface prefix to "SIM"
- moved variable "pluginlog" to the plugin interface
- fixed / removed some forward declarations
2013-12-29 08:45:28 +00:00
Stanislav Shwartsman
b6c39a3176 merge AVX and SSE .bochsrc options to single SIMD option which will configure SSE and AVX together 2013-09-16 19:50:36 +00:00
Volker Ruppert
dbccb39fb7 fixed unused variable warning with BX_CPU_LEVEL <= 4 2013-09-06 06:44:05 +00:00
Stanislav Shwartsman
852b5c3749 implemented SHA new instructions announced in recent Intel SDM extensions document rev015 2013-07-24 18:44:22 +00:00
Stanislav Shwartsman
edc3003f35 do not use cpuid:level param when it doesn't exists 2013-06-15 17:53:49 +00:00
Volker Ruppert
17b7b87a61 Added new experimental gui 'vncsrv" using the LibVNCServer library. It supports
higher resolutions and > 8 bpp graphics modes. The RFB gui with limited
capabilities is still available.
TODO:
- fix random segfaults in dimension_update()
- Windows (MinGW) support
- fixes for clients not supporting 'rfbEncodingNewFBSize'
- fix cursor shape after dimension update()
2013-05-30 17:18:30 +00:00
Stanislav Shwartsman
9b958b3a05 allow to select CPU level = 5 from .bochsrc even when Bochs is compiled with CPU_LEVEL=6 2013-04-17 19:46:11 +00:00
Volker Ruppert
910774513b some work for "wx second run" support (not yet complete)
- bx_list_c: added support for removing parameter with other parent list
- USB HC's: remove item from runtime config on simulation exit
- initialize bx_user_quit in bx_begin_simulation()
- only remove optional plugin from list if alrady unloaded
2013-02-17 08:27:43 +00:00
Volker Ruppert
e9302f4c13 don't execute hdimage save functions if the save/restore path is empty
reset save/restore path after completing save or restore process
2013-02-09 14:21:58 +00:00
Volker Ruppert
addd85e408 don't overwrite log actions per device if default is unchanged
- after parsing command line only update actions if default has changed
- bx_init_hardware(): extra update of log actions in quick start mode not needed
2013-02-05 20:57:40 +00:00
Volker Ruppert
b6f9c738fd simplified code using new bx_param_string_c method sprint()
TODO: use sprint() in enhanced debugger
2013-02-02 08:49:55 +00:00
Volker Ruppert
17970857b8 added new bx_param_string_c methods isempty() and sprint()
- isempty() returns 1 if string length is 0 or string has special value "none"
- sprint() copies the formatted / converted string into a buffer
- use new methods in some parts of the code (TODO: win32 dialogs)
- check for the special value "none" to avoid failures
2013-02-01 19:13:58 +00:00
Volker Ruppert
cc56245407 started implementing the i430FX chipset
- renamed config parameter "i440fx_support" to "enabled"
- new config parameter "chipset" added (current choices "i430FX" and "i440FX")
- don't load ACPI support if the i430FX chipset is selected
- select register values for the core PCI devices depending on the chipset
- USB UHCI must be connected to a PCI slot if the i430FX chipset is used
- rombios changes to make the i430FX chipset work
- TODO #1: implement limitation to 1 cpu and 128 MB RAM for the i430FX chipset
- TODO #2: verify register behaviour of both chipsets
2012-11-11 08:11:17 +00:00
Volker Ruppert
5f5d8e2c33 Applied initial version of the 3dfx Voodoo Graphics emulation. The Voodoo core
is based on a patch originally designed for DOSBox. Currently only the Voodoo1
adapter model can be emulation. The emulation is currently slow, but we intend
to clean up and optimize the code. Running the 3D engine in a separate thread
is also planned. To compile with Voodoo support the configure option
"--enable-voodoo" must be used. Then the device can be activated with
"plugin_ctrl: voodoo=1" in bochsrc or on the command line. The device will be
assigned automatically to a PCI slot unless you do that manually. A specific bochsrc
option to select the adapter model will be added when the code has support for it.
2012-09-14 21:50:50 +00:00
Volker Ruppert
c2f9150497 - split "show ips" handler from bx_signal_handler to simplify usage without alarm() 2012-08-26 12:32:10 +00:00
Volker Ruppert
ba80ab8395 - next attempt to fix random freezes in wxGTK
- re-implemented siminterface method is_wx_selected() (the old one had been
    renamed to has_debug_gui() which is something different now)
  - don't use alarm() if the wx gui is selected and instead use the wxTimer based
    code that already exists for wxMSW
2012-08-25 13:20:55 +00:00
Volker Ruppert
95e3a7141d - reset config options support for the optional plugin control. Unload all the
plugins from the list and load the default set.
- initialize save/restore support earlier to avoid segfault when unloading plugin
2012-08-19 11:45:50 +00:00