Commit Graph

676 Commits

Author SHA1 Message Date
Volker Ruppert
758f4de4d4 Rewrite of the network driver plugin code.
- Removed "pseudo device plugin" containing common code and specific drivers.
- Moved network module base classes and module handling to the Bochs core.
  Now loading network driver plugins in netmod.cc.
- Moved shared networking code used by the 'vnet' driver and 'bxhub' from
  netmod.cc/.h to new files netutil.cc/.h.
- Created separate plugins for each network driver implementation.
- Modified Bochs plugin system to support new plugin type PLUGTYPE_NETWORK.
2017-03-12 07:48:08 +00:00
Volker Ruppert
d6166344eb Added ethernet module 'socket'. designed to connect two Bochs instances with
external program 'bxhub' (simulating a two port ethernet hub). It is based on
an old SF patch and it has been updated and extended:
- Windows support (tested with MinGW/MSYS and MSVC nmake).
- Command line arguments for 'bxhub' (base port number, MAC address, TFTP).
- Added support for DHCP, TFTP, ARP and ICMP echo (ping). It uses parts of the
  code for the 'vnet' module with some additions from the former "slirp backend".
- TODO: code cleanup to reduce duplication, rewrite of the networking plugins
  stuff similar to the work done with the sound drivers.
2017-02-27 22:26:43 +00:00
Volker Ruppert
60d24943c6 Rewrite of the sound driver plugin code.
- Renamed OSS sound driver files from soundlnx.cc/.h to soundoss.cc/.h.
- Removed "pseudo device plugin" containing common code and specific drivers.
- Moved common sound code, base classes of sound drivers and the dummy driver
  to the Bochs core. Now loading sound driver plugins in soundmod.cc.
- Created separate plugins for the platform/library specific drivers and the
  "file" driver.
- Modified Bochs plugin system to support now plugin type PLUGTYPE_SOUND.
2017-02-20 18:21:19 +00:00
Volker Ruppert
f971dccddb Implemented SDL2 "wavein" service (Audio capture support is new in SDL 2.0.5
and does not yet work on all platforms).
2017-02-08 18:48:49 +00:00
Volker Ruppert
f844e846b7 Added PCM output data resampling in a separate thread. The resampler requires
either libsamplerate or the SoX resampler library installed. If not installed,
the data is only copied to the output buffer and sample rate of the output
driver is changed similar to legacy code. Related changes:
- Added check for libsamplerate or SoX resampler header files in configure
  script.
- Added functions for converting source format to float (requied by resampler)
  and float to output format.
- Added support for float type data in the audio buffer code. Buffer chain #0
  receives float data from sendwavepacket() and buffer #1 receives data for
  mixing and output in format "16-bit signed little endian stereo".
- ALSA: Disable builtin resampling feature if resampler is present to avoid
  doing it twice.
2017-02-05 08:33:03 +00:00
Volker Ruppert
f18bb743be Added new symbol BX_USE_GUI_CONSOLE and set it to 1 for all guis with support
for the VGA to be used for textconfig at runtime.
2017-01-13 15:57:36 +00:00
Volker Ruppert
9916e37819 The configure script now generates makefile for user plugins if directory
exists. Updated the user plugins example patch.
2017-01-08 09:34:19 +00:00
Volker Ruppert
ab20fa1bc2 The USB EHCI and xHCI emulations are now almost stable, so we can remove
"experimental" from description and add them to the shortcut scripts.
2016-12-31 12:17:37 +00:00
Volker Ruppert
91e1ed5bf6 Fixed building Bochs from outside of the source tree (second try). 2016-12-28 08:34:59 +00:00
Volker Ruppert
b05904b4a4 Fixed building Bochs from outside of the source tree. 2016-12-28 08:19:19 +00:00
Volker Ruppert
cd68194269 Added Android host platform support to Bochs based on SF patch #534.
- added Android case to the configure script.
- renamed file memory.h to memory-bochs.h to fix conflict with NDK.
- fixed Android issues in some files.
2016-08-12 17:06:14 +00:00
Volker Ruppert
45232b1860 Added standard bus mouse support and inproved existing InPort mouse support
(Ben Lunt). Added new mouse type choice 'inport' for the existing one and changed
'bus' type to the new standard bus mouse,
2016-03-31 17:24:34 +00:00
Stanislav Shwartsman
bcb36e81fa experimental implementation of protection keys paging extension published in SDM rev054. to enable configure with --enable-protection-keys 2016-03-02 20:44:42 +00:00
Stanislav Shwartsman
9557cafcef revertng commit #12854 because it broke MT simulation with debugger enabled. Until investigted. 2015-12-20 22:44:54 +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
d455659bd1 Split the USB UHCI code in two parts: uhci_core.cc implements the device
emulation and usb_uhci.cc implements the setup for the PIIX3 chipset and the
runtime device change code. The UHCI core is required for the EHCI emulation,
since there can be multiple "companion" controllers for USB 1.1 device handling.
2015-11-05 21:20:54 +00:00
Stanislav Shwartsman
9f77a6c3b0 full debugger support together with handler-chaining speedups optimization enabled (experimental)
should speedup emulation with debugger enabled
2015-10-09 05:28:47 +00:00
Volker Ruppert
fa08563adf Fixed configure script for the MSVC target with 64 bit. Now the configure option
'--target=x86_64-windows' can be used to prepare Bochs for WIN64 compiled with
e.g. VS2013.
2015-09-27 11:04:02 +00:00
Volker Ruppert
6161ffea73 Added initial version of UFI/CBI floppy disk storage device support written
by Ben Lunt. To connect a USB floppy you can use the 'floppy' device with the
path to the image separated with a colon. VVFAT is also supported.
FIXME: The device detection fails on some recent Linux distributions.
FIXME: Only 1.44M media format is currently supported.
TODO: Media change without disconnect is not implemented yet.
2015-07-13 08:37:45 +00:00
Stanislav Shwartsman
1268d8c14a deprecated configure options cleanup in configure.in 2015-05-14 11:56:23 +00:00
Stanislav Shwartsman
8804fb624b Clear definition of BX_CPP_INLINE in Visual Studio case 2015-05-14 11:49:28 +00:00
Volker Ruppert
3aef6a67af Enabled pthread library for all configurations on non-Windows targets.
Usual updates after release (version strings, release tag).
2015-05-03 17:03:26 +00:00
Volker Ruppert
9d4ef351e7 Preparing Bochs release 2.6.8 2015-05-03 06:36:30 +00:00
Volker Ruppert
cbfbaaacb7 Added BX_HAVE_SOUND_* definitions to simplify code. 2015-02-23 21:32:34 +00:00
Stanislav Shwartsman
23bc2796d9 fixed typo 2015-02-21 18:30:26 +00:00
Volker Ruppert
f5966efaba Modified linker options to build XP-compatible binaries when compiling with
VS2013 nmake. In addition to this change in the Bochs code, the environment
variables for the command prompt need to be modified this way:
===
set INCLUDE=%ProgramFiles(x86)%\Microsoft SDKs\Windows\7.1A\Include;%INCLUDE%
set PATH=%ProgramFiles(x86)%\Microsoft SDKs\Windows\7.1A\Bin;%PATH%
set LIB=%ProgramFiles(x86)%\Microsoft SDKs\Windows\7.1A\Lib;%LIB%
set CL=/D_USING_V110_SDK71_;%CL%
===
2015-02-21 09:52:39 +00:00
Stanislav Shwartsman
e16c6eb30c preparations and interface definition for memory type support 2015-02-19 20:23:08 +00:00
Volker Ruppert
ba6f2f5c24 Fixed 2 typos. 2014-12-28 23:57:53 +00:00
Volker Ruppert
ee5a416228 Now build rules for all gui and device plugins supported by MSVC nmake depend
on the related configure options.
2014-12-28 19:13:02 +00:00
Volker Ruppert
5abc3e647f Fixed some MSVC warnings in the debugger code. 2014-12-23 11:53:35 +00:00
Volker Ruppert
795a7929f1 Fixed link failure if GTK debugger is present, but no other Bochs facilty
using the pthreads library (SF patch #531 by Dawn Teschendorf fixing SF bug
#1364).
2014-12-20 07:51:11 +00:00
Volker Ruppert
f8e04266d6 Added capability to control VS2013 fastcall switch with configure option
--enable-fast-function-calls (MSVC nmake only).
2014-12-12 18:45:32 +00:00
Volker Ruppert
7330f3a61c Changed to way to determine the default lowlevel sound driver (part of the
mixing3.patch by Dawn Teschendorf).
2014-11-22 11:43:40 +00:00
Volker Ruppert
53ae488fb2 Enable GTK debugger only if GTK2 libraries are installed. 2014-11-15 13:32:49 +00:00
Volker Ruppert
b7c8323633 Fixed panic in case x86-64 support is not present (Bochs 2.6.7 P4-SMP release
binaries are already fixed).
Usual updates after release (version strings, release tag).
2014-11-02 14:14:36 +00:00
Volker Ruppert
6d1dcdccc6 Preparing release 2.6.7 2014-11-02 07:45:40 +00:00
Volker Ruppert
1ed744884c Disable enhanced debugger if gui support is not available. 2014-11-01 10:13:40 +00:00
Stanislav Shwartsman
f8267ec3a7 rework in CPUID code (fixed code duplication). Re-enable perfmon reporting in CPUID because Win8/Win10 installation doesn't want to start without perfmon reported. TODO: implement basic perfmon support (at least only fixed counters) because win7-64 doesn't install with perfmon reported but not implemented 2014-10-15 08:04:38 +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
34d4983cba Compile enhanced gui debugger core only if enabled. 2014-08-31 17:08:58 +00:00
Volker Ruppert
494ed30e95 Some fixes for plugin support with VS2013Ex
- creating extra manifest for bochs.exe no longer needed
- cleaning up temporary manifest files no longer necessary
2014-07-26 06:54:34 +00:00
Volker Ruppert
59eac1f196 Moved AVX/EVEX stuff to a new cpu subfolder and updated build system
TODO: update MVSC workspace files
2014-07-25 08:35:06 +00:00
Volker Ruppert
45589bf375 Added SDL2 support to option --with-all-libs. If SDL2 can be compiled, enable
it - otherwise try to detect legacy SDL.
2014-07-06 17:45:21 +00:00
Volker Ruppert
a643105a9c Added initial SDL2 gui code, use --with-sdl2 to enable it.
TODO list:
- fullscreen mode, keyboard mapping, mouse wheel support
- take advantage of new SDL2 features
- Windows port not yet tested
2014-06-27 20:53:20 +00:00
Volker Ruppert
c188a6ba5d Started preparing Bochs for SDL2 support. Set up GUI_LINK_OPTS_SDL in the
configure script (SDL2 uses 'sdl2-config' instead of 'sdl-config').
2014-06-21 08:22:22 +00:00
Volker Ruppert
3d16de129f Updated version strings after release
Added release tag to table in user doc
2014-06-15 14:29:33 +00:00
Volker Ruppert
61debb03e8 Preparing release 2.6.6 2014-06-15 06:01:20 +00:00
Stanislav Shwartsman
84bb623af8 speedup visual studio build by almost 20% by adding /Gr compiler option 2014-06-04 19:46:21 +00:00
Volker Ruppert
c8e0ee8077 Updated version strings after release 2014-06-01 15:44:50 +00:00
Volker Ruppert
f13d58fbd3 Preparing release 2.6.5 2014-06-01 06:29:01 +00:00
Volker Ruppert
ed41df332a Support for compiling plugin version of Bochs with MSVC nmake now complete.
- embedding combined manifest makes BOCHS.EXE usable
- list of DLL plugins now depends on the pci and debugger options
- 'make clean' now removes the generated manifest files
- renamed variable for external rules
- documentation update
2014-05-03 10:58:10 +00:00
Volker Ruppert
95585bf719 Initial version of nmake DLL plugin support in iodev. The plugin DLL set is now
complete and usable with the BOCHS.EXE built with the IDE.
TODO #1: fix BOCHS.EXE built with nmake (manifest issue)
TODO #2: make the currently fixed DLL plugin list variable
2014-05-02 17:14:16 +00:00
Stanislav Shwartsman
2fe0aaa472 added configure option for trace linking optimization and mention it in CHANGES 2014-05-01 18:30:23 +00:00
Volker Ruppert
eb484919fe Next step for plugin support with MSVC nmake: device plugins that need special
rules can be built now (keyboard, pit, gameport, serial, vga, svga_cirrus,
hdimage, netmod, soundmod, usb_common). The generated DLLs are usable with the
BOCHS.EXE built with the IDE, but the nmake won't work at all yet.
2014-04-21 18:43:22 +00:00
Volker Ruppert
87b6149ed0 First step for compiling plugin DLLs with MSVC nmake. The hdimage plugin
(bx_hdimage.dll) can be built now. All plugins that require special rules
could be fixed for nmake in a similar way.
TODO: find a way to compile plugins with standard rules (GNU make uses bx_%.dll
in that case, but MSVC nmake doesn't support this syntax).
2014-04-21 06:58:15 +00:00
Volker Ruppert
2777ac0dc5 Added separate target for MSVC plugins (causing an error for now) 2014-04-06 07:22:16 +00:00
Volker Ruppert
64385beaa4 Renamed "slirp_new" to "slirp" (source file, symbols, classes, docs) 2014-04-02 17:38:09 +00:00
Volker Ruppert
fee79a2837 Removed the "slirp backend" networking module from the Bochs sources. It had
required an external binary and it couldn't be ported to Windows. Now the new
builtin and portable slirp support based on Qemu's implementation is almost
stable and all the 'vnet' DHCP and TFTP features have been ported to the new
slirp module.
TODO: rename all the "slirp_new" stuff to "slirp"
2014-04-01 18:18:04 +00:00
Volker Ruppert
5ca0a003b6 Configure script and config.h.in reorganization: put all device-related config
options in one section and added busmouse option.
2014-03-23 12:00:58 +00:00
Volker Ruppert
e62076e53d Somw work to make the new slirp module compile and work with MSVC
- added container_of() macro replacement
- fixed unresolved symbol in netmod.cc
- added MSVC-style structure packing pragmas
- check for the presence of min / max macros
- enabled slirp_new for MSVC in configure script
TODO list:
- check for more updates from Qemu
- fix lots of compiler warnings
- reduce code duplication with 'vnet' module (DHCP, TFTP, ARP)
- add separate config file for slirp to make it more flexible (using the
  'script' parameter)
- update MSVC workspace files
- add SMB support on Linux
- remove slirp backend module after next Bochs release
2014-02-25 19:44:14 +00:00
Volker Ruppert
b7238798fc Explicitly disable the new slirp module for the MSVC case until the
container_of() macros is fixed (required for Cygwin).
2014-02-23 21:22:41 +00:00
Volker Ruppert
dfc71f8ae4 Applied patch for builtin "slirp" (user-mode networking) support. This version
is almost a port of the Qemu 1.1.2 implementation. It has been tested successfully
on Linux and Windows (MinGW/MSYS). The networking module is currently called
"slirp_new", since the "slirp" backend module still exists.

TODO list:
  - MSVC support (requires container_of() macro replacement)
  - apply fixes and improvements from recent Qemu releases
  - use our TFTP implementation to reduce code duplication
  - check if we can share ARP and DHCP support with "vnet"
  - add SMB support on Linux
  - finally remove the slirp backend module support
2014-02-16 13:31:53 +00:00
Volker Ruppert
7ec9adbb2d Switch to Winsock2 library for all Windows cases 2014-02-15 12:18:15 +00:00
Volker Ruppert
67b5ed240b Enabled linking with wsock32.dll for all Windows again. Cygwin doesn't complain
when we use -lwsock32, but don't include it's header if __CYGWIN__ is defined.
Moved DEVICE_LINK_OPTS to a separate variable instead of appending options to
GUI_LINK_OPTS.
2014-01-26 22:11:31 +00:00
Stanislav Shwartsman
2379590dde do not compile AVX objects if AVX support is not enabled in configure 2014-01-26 19:20:44 +00:00
Volker Ruppert
23a2ded526 Fixed build process without libtool and plugins 2014-01-03 21:58:04 +00:00
Volker Ruppert
a767ec0b1b The plugin version now uses the native DLL handling code for all Windows ports.
Skip configure checks for libtool / ltdl and no longer link with mingwex.
2013-12-29 20:04:16 +00:00
Volker Ruppert
e3862e34e5 Fixed compilation with Cygwin
- reverted changes in SVN revision 10985 (-DWIN32 now works again with Cygwin)
- don't link Bochs.exe or RFB gui with wsock32.dll in the Cygwin case
- the win32 gui doesn't need to be linked wsock32.dll at all
2013-12-22 12:17:28 +00:00
Volker Ruppert
fb70da3e3e Added check for type ssize_t
List the supported ethernet modules
2013-12-04 17:04:15 +00:00
Stanislav Shwartsman
a421c921d0 fixed typo in configure script 2013-12-02 19:57:49 +00:00
Volker Ruppert
aa0554e5d9 - Build niclist.exe on Windows even if plugins are enabled
- Some fixes for the install_win32 target
- Documentation updates
2013-11-18 16:49:56 +00:00
Volker Ruppert
d281d743e9 Fixed plugins compilation with gcc 4.8.1 2013-11-10 17:00:21 +00:00
Volker Ruppert
9554a2133e Always enable the portable ISO image file support. The option --enable-cdrom now
only controls the presence of platform-specific code to access CDROM/DVD devices
2013-11-10 11:14:42 +00:00
Volker Ruppert
b1d4a96983 Rewrite of the lowlevel cdrom code
- class cdrom_base_c now provides portable ISO image access methods
- platform specific classes implement access to cdrom/dvd devices
2013-11-06 11:15:22 +00:00
Volker Ruppert
08b66534aa bximage fixes for compiling with VS2008Ex DLL plugins 2013-10-28 20:31:34 +00:00
Stanislav Shwartsman
494d0ac821 Remove obsolete configure check (cygwin does not have this problem anymore)
Also Bochs doesn't use the math library functions!
2013-10-21 19:26:07 +00:00
Stanislav Shwartsman
6f9400d4e8 TDM gcc under cygwin called x85_64_unknown-cygwin - fix configure script to support it 2013-10-20 14:48:38 +00:00
Volker Ruppert
3d91e86ac1 bximage_new: added MSVC nmake support, added to default build system (targets
'all' and 'clean'), minor code changes
TODO: floppy / hard disk image creation, add to VS2008 workspace
TODO: finally remove the legacy utilities bximage and bxcommit
2013-10-14 15:57:10 +00:00
Stanislav Shwartsman
9bed769cdd fixed typo in enable-evex option in configure script 2013-09-24 20:47:40 +00:00
Volker Ruppert
51688143aa Some work on the lowlevel sound support
- ALSA driver is now default on Linux (if present)
- SDL sound driver is now default if no platform-specific driver is available
  and the SDL gui is enabled
- soundlnx.cc: sendwavepacket() now exits with error if device is not opened
- soundmod.cc: exit beep loop if sendwavepacket() returns error
2013-08-04 14:35:06 +00:00
Stanislav Shwartsman
2dbe81db51 first infrastructure changes to support EVEX prefix and AVX-512 extensions recently published by Intel 2013-07-26 12:50:56 +00:00
Volker Ruppert
b84b0eed52 Moved ALSA sound support to a separate sound driver object
- ALSA stuff moved from soundlnx.* to new soundalsa.* files
- SB16 / ES1370: including specific sound driver headers not necessary
- updated dependencies
2013-07-14 15:14:53 +00:00
Volker Ruppert
21feca3767 Some work on the new 'vncsrv' gui
- use the CXXFLAGS and link options provided by the libvncserver-config script
- added Windows support for MinGW/MSYS (compiles fine, but crashes sometimes)
2013-05-31 16:46:15 +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
Volker Ruppert
b04df59367 RFB code cleanup (no functional changes)
Updated version strings after release
TODO: implement new RFB(VNC) gui using LibVNCServer
2013-05-29 17:35:19 +00:00
Volker Ruppert
64190fea62 - preparing release 2.6.2 2013-05-26 07:17:33 +00:00
Volker Ruppert
96ae009372 updated version strings after release 2013-04-08 17:59:55 +00:00
Volker Ruppert
cb32223a6a preparing release 2.6.1 2013-04-07 15:27:37 +00:00
Stanislav Shwartsman
25733b4387 added scrollwin.o in configure scripts for mingw 2013-03-18 20:47:08 +00:00
Volker Ruppert
a4a275848f initial implementation of scrollable dialog items on WIN32
- scroll window has 16 visible items and the virtual size is not limited
- CPUID parameter list now using this feature
- FIXME #1: scroll window is not resized if browse button column is present
- FIXME #2: only one scroll window per dialog is supported
2013-03-18 19:08:26 +00:00
Stanislav Shwartsman
ce2751a13c move misaligned_sse from compile time to .bochsrc option 2012-12-20 19:43:11 +00:00
Volker Ruppert
46d09f3852 moved PCI framework to the common devices code
- PCI slot configuration, memory and i/o BAR registration, PCI i/o space
  handlers now present in devices.cc
- configure: E1000 emulation and USB support need PCI
- vga: fixes for the non-PCI case
2012-11-08 19:12:26 +00:00
Stanislav Shwartsman
110fd4b92a Fixed issue with configure script with debugger enabled.
I am copiling using Cygwin+mingw and cnfigure script by default doesn't find and GUI library and therefore I supply --with-win32.
But seems it is not enough to get GUI debugger compiled - Makefile was missing win32_enh_dbg_osdep.cc
2012-11-06 19:59:18 +00:00
Volker Ruppert
699eabbac8 Enable PCI support by default / better text formatting for 'configure --help'
and added default values
2012-10-25 16:02:03 +00:00
Stanislav Shwartsman
42a460638e don't allow voodoo configure with no PCI 2012-09-26 13:40:37 +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
Stanislav Shwartsman
f151463f0f removed old deprecated options from the code 2012-09-14 13:32:54 +00:00
Volker Ruppert
c2560a8d44 - fpu directory is now a subdirectory in 'cpu' 2012-09-12 21:08:40 +00:00
Volker Ruppert
c340da84dd - moved the display adapter emulation to the new subdirectory iodev/display
- TODO #1: update MSVC workspace files
- TODO #2: add Voodoo Graphics emulation
2012-09-10 20:49:29 +00:00
Stanislav Shwartsman
90f544d307 after release 2.6 2012-09-02 18:43:27 +00:00