Commit Graph

2187 Commits

Author SHA1 Message Date
Volker Ruppert
fb265dc532 Ported OPL3 emulation from DOSBox.
The code currently only works with the SDL sound output module and at 44100 Hz,
with 16 bit stereo signed little endian format. FM volume control and
save/restore support are not implemented yet. The legacy code for generating
MIDI notes still works and will be removed when mixing support is implemented
in all sound modules.
2015-01-12 21:20:18 +00:00
Volker Ruppert
f9ff6ece2d Applied some parts of the floppy patch by Ben Lunt.
- The "Read ID" command must return an error when reading with non-existant head.
- Some BX_DEBUG improvements and minor other changes.
2015-01-12 18:52:39 +00:00
Volker Ruppert
fe49c73a6b Some work on the lowlevel sound support.
- Define new structure bx_pcm_param_t and use it as a parameter for the method
  sendwavepacket(). The method startwavepacket() is now called from
  sendwavepacket() in case of a parameter change (temporary solution).
- soundsdl: Replaced waveready() call by some more accurate code for buffer
            space check in sendwavepacket().
- soundsdl: Moved code for reading from audio buffer to a new function.
- soundsdl: Temporarily increase the audio buffer size.
- Preparing the SB16 code for the OPL emulation port from DOSBox.
2015-01-11 20:13:50 +00:00
Volker Ruppert
7bd5eeaa87 Mix the wave input using SDL_MixAudio() (addition and clipping).
NOTE: This function is not correct in case of more than 2 active sources.
2015-01-11 07:57:35 +00:00
Volker Ruppert
15ccdef0d1 Fixed register/unregister wave callback (found while testing OPL code). 2015-01-10 19:36:50 +00:00
Volker Ruppert
fe953485b1 Some more work in the lowlevel sound code.
- Reworked wave callback code to support 2 input sources (no mixing yet).
- Fixed SDL sound output.
- Beep generator fixes.
- Prepared the SB16 code for FM OPL output support (to be ported from DOSBox).
2015-01-08 19:12:01 +00:00
Stanislav Shwartsman
055da948a0 fixed problems found by cppcheck tool (patch by Maxim Derbasov) - second round 2015-01-07 16:17:40 +00:00
Volker Ruppert
2ca192eef7 Some more work in the lowlevel sound code.
- Renamed wavedata callback type.
- Handle sample rate in the beep generator (TODO: handle data format).
- Don't call waveready() in the SB16 code.
- Attempt to fix SDL2 wave output using SDL_LockAudio() / SDL_UnlockAudio().
- SDL specific code in the beep thread no longer needed.
2015-01-05 22:07:03 +00:00
Volker Ruppert
0c205fce26 Some work in the lowlevel sound code.
- Added framework for polling wave data and use it for beep output in sdl.
- Some work in the beep thread code (to be continued).
- Moved macros required for multithreading to bochs.h.
2015-01-04 21:12:41 +00:00
Stanislav Shwartsman
1f4d3e7194 fixed problems found by cppcheck tool (patch by Maxim Derbasov) 2015-01-03 13:53:52 +00:00
Volker Ruppert
c7c92bb62b Fixed OPL chip detection.
- Increment timer counter before checking for overflow.
- Implemented ISA bus delay in the pc_system code and use it for the SB16.
  This makes OPL chip detection work at ips values > 4 Mips.
TODO: OPL chip should use wave output instead of MIDI (maybe port from DOSBox).
TODO: Use isa_bus_delay() for other legacy devices if required.
2014-12-31 12:27:32 +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
65d2bb11eb Release all pressed keys when the Bochs window gets back the keyboard focus.
- feature implemented in the wxWidgets gui
- feature not required for legacy SDL (releases keys on focus change)
- removed duplicate code in keyboard.cc
- TODO: implement feature in the win32 gui if required
2014-12-27 09:43:05 +00:00
Volker Ruppert
227da0c6de Release all pressed keys when the simulation window gets back the keyboard
focus. This change will fix some keyboard-related bug reports (DONE for the
x and sdl2 guis / TODO for all others).
2014-12-26 20:25:27 +00:00
Volker Ruppert
e5e535dad2 Fixed slirp compilation on OpenBSD.
TODO: fix slirp support compiled with VS2013.
2014-12-25 17:58:26 +00:00
Volker Ruppert
f0b38ff643 Restore VGA core before the PCI / VBE stuff to avoid crash due to wrong dimension. 2014-12-24 19:44:47 +00:00
Volker Ruppert
88d9ad57bf Attempt to fix the win32 raw serial receive support using a critical section
(untested - code should be enabled after successful testing).
2014-12-23 17:13:29 +00:00
Volker Ruppert
c3b025e224 Fixed possible crash when compiled with VS2013.
TODO: fix slirp support compiled with VS2013.
2014-12-22 14:26:47 +00:00
Volker Ruppert
2ec57b8a6b Fixed some more C++11 warnings. 2014-12-18 17:52:40 +00:00
Volker Ruppert
22665b3225 Re-enable "bulk I/O" repeat speedups extension that has been accidently disabled
about 3 years ago.
2014-12-16 02:26:55 +00:00
Volker Ruppert
3d228c4f61 Fixed some other overlapping memcpy() issues. 2014-12-16 02:26:00 +00:00
Volker Ruppert
f35b9b23c8 Bugfix: use memmove() if source and destination range can overlap (found with valgrind). 2014-12-14 18:53:16 +00:00
Volker Ruppert
c8ef526143 Fixed some warnings. 2014-12-01 17:06:00 +00:00
Volker Ruppert
fba9145f66 Moved sources of the sound lowlevel base class ('dummy' driver) to separate files. 2014-11-24 18:25:14 +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
9805324c42 Minor changes in the sound lowlevel code. 2014-11-21 23:03:19 +00:00
Volker Ruppert
524ba46c3d Added the capability to select the operation mode of the VGA update timer.
The realtime mode is enabled by default (patch by Dawn Teschendorf).
2014-11-15 10:22:27 +00:00
Volker Ruppert
3a1bb1f476 Bugfix: sound driver 'sdl' wasn't available if Bochs was compiled with SDL2 gui.
FIXME: wave output doesn't work properly in case of SDL2.
2014-11-14 18:25:37 +00:00
Volker Ruppert
59f5a03af6 Rewrite of the virtual timer code to support both modes at the same timer.
The timers now have a new member 'realtime' and they are driven by the
selected engine. The VGA update timer and the status LED timer now always use
the realtime mode, but the PIT and CMOS RTC depend on the clock options.
2014-10-19 08:54:16 +00:00
Volker Ruppert
3393a17c8f Fixed crash when using a "fixed" type VPC image. 2014-10-14 21:39:05 +00:00
Volker Ruppert
63665aa773 Removed unused define.
TODO: improve virtual timer to make operate in both modes at the same time.
The vga update code should always use the realtime mode and the pit timing
should depend on the clock option.
2014-10-13 18:34:21 +00:00
Volker Ruppert
cebff45fef Fixed two fields in xmit_seg() 2014-10-13 17:09:14 +00:00
Volker Ruppert
bb1def0ad2 Fixed WinPCap function declaration and assignment for MSVC using CDECL and
now using typedefs similar to the niclist utility.
2014-10-04 17:31:57 +00:00
Volker Ruppert
c1e54bcfbf Added USB port specific option 'size' for VVFAT disks (range 128M ... 128G).
If the size is not specified or invalid, it defaults to 504M.
2014-09-29 17:48:30 +00:00
Volker Ruppert
d012670927 Applied the usb_xhci part of the USB patch by Ben Lunt.
Notes by Ben:
This emulates a NEC/Renesas uPD720202 2-port (2 socket, 4-port register sets)
Root Hub xHCI Host Controller.
Many, many thanks to Renesas for their work and effort in helping my research.

I have tested in with my own tests and WinXP Home Edition SP3.

Use port1 and port2 to emulate a Super-speed device, and use port3 and port4
to emulate Low-, Full-, or High-speed devices.

NOTE: The Windows driver for this device uses a proprietary detection
mechanism and we don't have the permission to implement it. That's why it only
works fine with non-Windows guests.
2014-09-28 14:21:22 +00:00
Volker Ruppert
b8a633d0db Setting cylinders to 0 fixes runtime connecting an USB disk with 'vvfat' mode
(disk size is always set to 504M / could be a vvfat specific option).
2014-09-25 19:31:01 +00:00
Volker Ruppert
50e96fa1cd - applied parts of the new USB patch by Ben Lunt
- removed max_packet_size member from USB device structure
- usb_uhci: improved speed info
- updated USB-related documentation
- TODO: review and test the main part of the xHCI changes by Ben
2014-09-22 19:49:39 +00:00
Volker Ruppert
4f3189d5e5 Updated xHCI files to match the latest spec version 1.10 (patch by Ben Lunt) 2014-09-07 18:18:41 +00:00
Volker Ruppert
9b3b792c73 Gui debugger: handle some more settings in INI file
Slirp: fixed copy-and-paste error
2014-08-30 07:14:19 +00:00
Volker Ruppert
7ba82cab9f Write enhanced debugger gui settings to config file on exit and read them in
the init code. Started with the SeeReg[] array values. Some other setting could
be added later. The parser code is based on the slirp config parser.
Slirp: fixed possible segfault if the value for a parameter is missing.
2014-08-24 14:28:42 +00:00
Volker Ruppert
73d5f6e626 Attempt to fix a compilation error on OSX. 2014-08-23 14:46:31 +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
e44e9c57d6 Fixed possible crash on Windows (double free()) 2014-07-09 23:49:53 +00:00
Stanislav Shwartsman
e2e549c675 fixed MSVCPP warning 2014-07-09 15:39:47 +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
6f75ceadbc Removed sources of legacy tools bxcommit and bximage_old and updated MSVC workspaces 2014-06-19 08:57:28 +00:00
Volker Ruppert
e0ece92d06 Fixed hdimage mode 'dll' for MSVC with /Gr option set 2014-06-09 07:14:23 +00:00
Volker Ruppert
773ac518b3 Fixed broken MSVC plugins support (many CDECL additions required)
TODO: check for remaining CDECL issues (hdimage mode 'dll') and update project files
2014-06-08 08:40:08 +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
353e34f338 Fixed possible segfault when accessing BXPN_SOUND_WAVEIN with base argument
(patch by Dawn Teschendorf)
Added partial summary to CHANGES
2014-05-26 19:39:15 +00:00
Volker Ruppert
42afaef2ba Load floppy plugin after the display plugin and simplified related init gui code. 2014-05-26 17:04:02 +00:00
Volker Ruppert
aa7db4ba08 SB16: fixed audio distortion when playing stereo WAV files (patch by Dawn Teschendorf) 2014-05-23 21:39:03 +00:00
Volker Ruppert
10a39662b8 Turn on beep after restore if necessary. 2014-05-10 06:50:06 +00:00
Volker Ruppert
425688d014 Using bx_param_string_c method isempty() simplifies code and fixes panic in NE2000 ISA. 2014-05-09 13:49:42 +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
Volker Ruppert
9c8e43b75c Added failure handling to beep_on() and the ALSA PCM output methods (patch by
Dawn Teschendorf)
2014-05-02 06:38:49 +00:00
Volker Ruppert
c7a72484c8 Execute this code only if the wx gui is selected. 2014-05-01 08:42:04 +00:00
Volker Ruppert
900c0fddc4 Temporarily added targets for MSVC nmake plugins in network, sound and usb
sections. A better solution must be found for the basic set of device plugins
in iodev that don't require special rules.
Switched back to the original gui macro naming for linking plugins.
2014-04-27 07:46:33 +00:00
Volker Ruppert
95346323af Added MSVC nmake support for the gui plugins nogui, rfb and win32.
Updated comments about DLL plugins in makefiles
2014-04-25 16:07:26 +00:00
Volker Ruppert
92b529ee75 The floppy plugin needs a special rule for MSVC nmake
Temporarily added a voodoo plugin rule to have the iodev/display section complete.
2014-04-24 20:10:55 +00:00
Volker Ruppert
1169076fc0 Fixed possible floating point exception in the beep thread. Instead of setting
'beep_bytes' to 0, now using new 'beep_control' variable (2 = run beep loop,
1 = request beep loop exit, 0 = beep loop has ended).
2014-04-24 17:36:13 +00:00
Volker Ruppert
04d1cae754 Fixed "nmake clean" for the slirp stuff.
Added *.exp and *.lib to "clean" targets.
2014-04-22 16:50:11 +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
2d63afca12 Slirp: added support for up to 5 'hostfwd' redirection rules.
Fixed MSVC compilation error.
2014-04-18 17:14:32 +00:00
Volker Ruppert
a5c687dfb0 Slirp: added host forwarding feature for host-to-guest access.
TODO: add support for multiple port redirections
2014-04-18 09:27:48 +00:00
Volker Ruppert
16e0130753 Switch back to the original 'vnet' ARP implementation.
Improved Slirp documentation.
2014-04-13 13:32:52 +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
777fcd8372 Fixed timestamp of "growing" mode base images with an "undoable" redolog. 2014-04-04 19:14:32 +00:00
Volker Ruppert
fcc6d01a18 Removed default constructor and initialize member in the specific one (fixes
possible segfault found on Windows).
2014-04-04 18:44:57 +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
892cb61dc7 Some work on the Slirp DHCP support
- removed obsolete local variables that made the hostname and bootfile options fail
- store requested hostname as a string to simplify the code
- check free space while processing the parameter list
- setting the max. DHCP message size is not supported yet (send error to log)
2014-03-31 20:58:29 +00:00
Volker Ruppert
061339b57b Rewrite of the DHCP option handling including support for a parameter list,
host name, lease time and other options (ported from Bochs 'vnet' DHCP server).
2014-03-30 18:54:50 +00:00
Volker Ruppert
3e280ae594 Fixed MSVC warnings 2014-03-29 15:23:49 +00:00
Volker Ruppert
31e10bb527 TFTP session handling now using pointers for allocate and find. 2014-03-28 20:08:56 +00:00
Volker Ruppert
6b8d425a7f Some work on the Slirp TFTP server
- copied some defines from osdep.h to fix compilation on all Windows build systems
- ported TFTP option handling from the Bochs 'vnet' TFTP server
2014-03-27 21:09:09 +00:00
Volker Ruppert
5257e253ae Added broadcast IP address and server name "slirp" to DHCP reply.
TODO: port more features from the Bochs 'vnet' DHCP server to Slirp.
2014-03-26 17:01:07 +00:00
Stanislav Shwartsman
ae936e086f fixed compilation err under cygwin 2014-03-25 20:09:48 +00:00
Volker Ruppert
eb3f567f4a Added basic write support to the Slirp TFTP server.
TODO #1: implement all features of the existing (vnet) TFTP support in Slirp.
TODO #2: make the slirp DHCP server work like the vnet one.
TODO #3: finally remove the slirp backend and rename the new one to "slirp".
2014-03-24 20:36:50 +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
8159a00b3e Added access() check before detecting image mode to get an accurate panic
message in case of failure.
2014-03-23 09:19:44 +00:00
Volker Ruppert
9052c65049 Added support to specify the IP address of the SMB server.
Handle special value "none" for the slirp.conf to avoid error message.
2014-03-21 18:47:14 +00:00
Volker Ruppert
159228db5d Slirp: added SMB support for non-Windows platforms. The new slirp.conf option
'smb_export' can be used to set up shared folder. TODO: the location of 'smbd'
and IP address of the SMB server is currently hardcoded.
2014-03-20 18:02:44 +00:00
Volker Ruppert
798596c4c0 Slirp: added sanity check for correctly packed networking structures.
Cygwin shortcut script: option -mno-cygwin is obsolete and -mno-ms-bitfields is
required for Bochs as of GCC version 4.7.
2014-03-16 12:13:52 +00:00
Volker Ruppert
4a78dffb24 Cleaned up disk sector offset variables used for the seek latency feature. Now
using names similar to the cdrom ones.
2014-03-11 18:29:32 +00:00
Volker Ruppert
76a03aa1f0 Networking-related fixes
- bx_param_string_c method isempty() didn't work for raw byte strings. Now using
  it to check whether or not the current value matches the initial one. The
  parameter handling of the network adapters now use this method to check if
  the MAC address is already initialized to avoid incorrect BX_ERRORs.
- small documentation update
2014-03-10 19:05:46 +00:00
Volker Ruppert
aad090d03c Slirp dnssearch: added support for comma-separated list of DNS suffixes 2014-03-09 16:41:36 +00:00
Volker Ruppert
46037ee5f5 Slirp: added basic 'dnssearch' option (currently only 1 entry supported).
TODO: 'dnssearch' option should accept a comma-separated list of suffixes.
Other slirp TODOs: SMB support on Linux, reduce code duplication (ARP, DHCP, TFTP)
2014-03-08 08:54:33 +00:00
Volker Ruppert
0c4e5eb6c5 Renamed slirp option 'dhcp' to 'dhcpstart' (similar to Qemu)
Ignore case when checking for slirp options
Improved slirp documentation
2014-03-04 18:58:51 +00:00
Volker Ruppert
25f9b4346a Added support for the bootfile option in the slirp config file.
Moved slirp config parameters to the ethernet module object.
Added initial documentation for the built-in slirp support
2014-03-03 16:32:11 +00:00
Volker Ruppert
f62c8f158f Some work on the "Bochs side" of the new slirp module
- added support for a separate slirp config file specified with the "script"
  parameter. Added sample config in the "misc" subdirectory.
- now creating one logfunctions object per slirp instance and added new function
  slirp_warning() to send error messages to the Bochs log.
- regenerated dependencies for the iodev/network Makefile and updated command
  line example for generating them.
2014-03-02 20:24:26 +00:00
Volker Ruppert
c1fa1a4b32 vVFAT: use path relative to the vVFAT root folder when saving file attributes.
This is required when sharing one folder between different guest installations.
2014-03-02 11:30:03 +00:00
Volker Ruppert
479d0477cf Slirp: added symbols required for win32 plugin DLLs.
Updated workspace files after adding slirp and avx sources
Updated slirp TODO list:
- reduce code duplication with 'vnet' module (DHCP, TFTP, ARP)
- add separate config file for slirp to make it more flexible (using the
  'script' parameter)
- add SMB support on Linux
- remove slirp backend module after next Bochs release
2014-03-02 09:53:42 +00:00
Volker Ruppert
6bfc3e4bd8 Slirp: added SVN Id on top of each source file 2014-03-02 07:42:24 +00:00
Volker Ruppert
2d4d3aaa56 Slirp: fixed MSVC warnings 2014-03-01 23:52:08 +00:00
Volker Ruppert
3f5d670384 Some work on the new slirp module
- applied remaining updates from Qemu slirp
- add #if blocks to all slirp .cc files for conditional compilation
- fixed some uninitialized variable warnings
2014-02-27 21:15:31 +00:00
Volker Ruppert
5ea6e8c941 Some work on the new slirp module
- added dnssearch sources from latest Qemu slirp (currently unused feature)
- minor other updates from Qemu slirp
- add #if blocks around already up-to-date slirp sources for conditional compilation
- TODO: finish updating from Qemu and start fixing compiler warnings
2014-02-27 19:11:18 +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