Commit Graph

187 Commits

Author SHA1 Message Date
Volker Ruppert
20aeed208b Fixed some panics when Bochs is used without the harddrv plugin (ata* disabled).
TODO: Fix Bochs BIOS for that case (SeaBIOS is okay).
2015-07-15 10:20:22 +00:00
Volker Ruppert
327f987a18 Added the capability to set up the sound driver per service. The global
sound option for setting up one driver for all services is still available.
2015-03-06 22:54:30 +00:00
Volker Ruppert
16d2957cd4 Rewrite of the ES1370 wave output code and related changes.
- Implemented wave output using the 'soundfile' driver including dual wave
  output in wavemode 3. Removed now obsolete output file handling and other
  cleanups. The wave input (recording) feature is not affected by the
  wavemode setting.
- Moved VOC file handling to the soundfile code.
- Updated iodev makefile dependencies.
2015-02-19 21:31:18 +00:00
Volker Ruppert
b1e8a6369c Some work on the sound module handling and the SB16 midi file output.
- Added the capability to load up to 4 sound drivers and added methods to
  get pointers to the waveout, wavein and midiout services of a driver.
- Rewrite of the SB16 midi file output code. In midimode 2 and 3 the midiout
  service of the 'file' driver is used. Removed obsolete midi file handling.
- Re-implemented the closemidioutput() method to make runtime changes of the
  midi setup work with the new code.
2015-02-17 18:28:25 +00:00
Volker Ruppert
38f85eaacb PCM volume now applied to the output packet in the format conversion code. 2015-01-27 19:33:28 +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
7cb5729365 Seek delay implemented for ATA/ATAPI DMA read commands
TODO: seek delay for write commands
2014-01-19 18:13:12 +00:00
Volker Ruppert
c6dd095321 Added new method for the init of the readonly registers in the PCI config space
and cleaned up the PCI devices code.
2013-12-30 22:39:21 +00:00
Volker Ruppert
acd0fe11b5 Added volume control support per channel for stereo samples
TODO: do the same for mono samples (requires data doubling in emulation)
2013-12-15 17:09:18 +00:00
Volker Ruppert
ea7997210d Some work on the wave volume control support
- ES1370: implemented CODEC registers (AK4531 mixer) and wave volume control
- Moved wave volume application code to new method pcm_apply_volume() and use
  it for both soundcards
- TODO: stereo support
2013-12-14 17:43:12 +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
b452803be5 Preparing lowlevel cdrom rewrite
- use #if BX_SUPPORT_CDROM instead of #ifdef LOWLEVEL_CDROM
- devices with cdrom support now use the base class cdrom_base_c
- cdrom count variable moved to cdrom.cc
- cdrom_misc.cc: don't use ioctl's for ISO files
2013-11-05 18:06:39 +00:00
Volker Ruppert
9a1d889359 ES1370: implemented wave output to file (raw and VOC format)
- added parameters 'wavemode' and 'wavefile' to the 'es1370' option
- ES1370: added new method sendwavepacket() (similar to SB16)
- moved VOC file methods from sb16.cc to soundmod.cc and added macros for them
- SB16: minor fixes
2013-07-13 17:37:48 +00:00
Volker Ruppert
192aa1f369 Added global sound control option in bochsrc and config interface
- added 'sound' option to select the driver and the wave output device
  (see bochsrc sample for details)
- the wave device option of sb16 and es1370 is now only used to set up the
  wave input device (if necessary)
- cleaned up the speaker code to initialize the 'sound' case correctly
2013-06-24 19:19:12 +00:00
Volker Ruppert
2f036fe5ca added IOAPIC control from the PIIX3 (enable /disable and address relocation) 2012-11-25 19:06:03 +00:00
Volker Ruppert
f0a3679e34 moved function is_pci_device() to the siminterface class 2012-11-11 12:21:09 +00:00
Volker Ruppert
ab57eb3615 fixed compilation error with debugger enabled
- read PCI confAddr value from the devices code for debugger output
- PCI confData value isn't needed at all (changes by each read / write access)
- PCI framework methods don't need to be virtual
2012-11-09 13:30:52 +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
Volker Ruppert
9933ffa3d9 vga refresh framework changes
- renamed trigger_timer() methods to refresh_display()
- new argument 'redraw' added to force a refresh of the entire screen
  (used in snapshot mode)
- siminterface method refresh_vga() now checks if the Bochs gui init is complete
- use SIM->refresh_vga() in some more cases
2012-10-28 08:23:39 +00:00
Volker Ruppert
4eae421272 Graphics snapshot feature re-implemented for the new graphics API
- graphics_tile_info() split into a common and specific part
- store snapshot mode in structure bx_svga_tileinfo_t
- in snapshot mode, display adapters copy raw data to buffer
- rewrite of the trigger_timer() code to make it work in all cases
- added new class bx_nonvga_device_c to make forwarding refresh requests to the
  Voodoo adapter possible
2012-10-25 15:53:04 +00:00
Volker Ruppert
1fd6745aea Started rewrite of the gui code to make the graphics snapshot independent from
the display adapter code. When ready, the common gui code should handle it
completely. The snapshot handler should set a flag 'snapshot_mode' and then it
should force a display update. The graphics update code should be redirected to
some code that 'draws' to a snapshot buffer. These first steps are done:

- store some guest display settings in the gui code (text / graphics switch,
  x / y resolution and bpp)
- split 8 bpp palette update code in a common and a specific part and store the
  palette values in the gui code
2012-10-14 18:29:44 +00:00
Volker Ruppert
78513089e4 - fixed unloading of support plugins
- TODO: reorganize plugin types, since there are now 3 subtypes of core plugins
  (gui, core devices and support for networking, sound, usb)
2012-08-20 07:35:30 +00:00
Volker Ruppert
85a914c9e9 - implemented "fast-dma" support for 16 bit and in the SB16
- TODO: fix BX_DBG_DMA_REPORT
2012-07-14 14:20:36 +00:00
Volker Ruppert
c6a9f8eb0d - added the capability to transfer more then one byte per ISA DMA cycle.
- use this feature for floppy read and write operations. This does not mean that
  the floppy now works faster than realtime, but it reduces the number of DMA
  calls from the CPU.
- removed outdated file: patch.fast-dma-cbothamy
- TODO: implement this feature in the SB16 (8 and 16 bit)
2012-07-12 21:20:46 +00:00
Volker Ruppert
9189105a0b - prepared support for sending absolute x/y values from the gui to the mouse emulation
- new gui method set_mouse_mode_absxy() should switch the gui to absolute
    x/y mode
  - new DEV_mouse_motion() argument 'absxy' indicates whether or not the gui
    sends absolute x/y values
  - USB tablet code prepared to use the new feature
  - TODO: implement this feature for each gui (sdl, win32, wx, x, ...)
2012-06-21 17:33:37 +00:00
Volker Ruppert
d6e7be922b - prepared pc speaker beep support in the lowlevel sound module
- sound devices: moved wave output init to the init() method (required for
  beep support)
- TODO: implement beep using a separete thread
2012-05-20 14:19:49 +00:00
Volker Ruppert
f65c4e66b8 - debugger command 'info device': implemented support for additional arguments
- ne2k: replaced debugger command 'info ne2k' completely by a new version based
  on 'info device' with additional arguments and removed all of the now obsolete
  stuff (ne2k device stub, macro for print_info())
- pci: added option 'dump=full' for the debugger command 'info device' to show
  the whole PCI config space
- TODO: some other devices could have support for additional options in
  debug_dump()
2012-04-23 17:06:19 +00:00
Volker Ruppert
d364f22c3c - don't panic in debugger if the iodebug plugin is not loaded
- iodebug: fixed some warnings
- development.dbk: updated iodebug documentation
2012-04-19 18:03:13 +00:00
Volker Ruppert
bdfe4ae1bb - added debug_dump() (prints the same as 'info ne2k' without arguments)
- removed FILE parameter from print_info() (unused - since dbg_printf() doesn't
  need it)
- converted tabs to spaces
- TODO: implement 'info device' with optional arguments to get rid of the
  print_info() method
2012-04-18 17:03:00 +00:00
Volker Ruppert
99a31bd150 - devices 'parallel' and 'serial':
- added to optional plugin control
  - moved config parameter creation and bochsrc option parsing to the plugin
    device code
2012-04-16 19:17:10 +00:00
Volker Ruppert
825edc4c64 - blinking in VGA graphics mode implemented (undocumented feature???)
- prepared function to override the VGA output (stops the update timer)
- minor cleanups the update() code
2012-01-27 18:50:07 +00:00
Volker Ruppert
ca2e44c0c4 - moved the pcivga code to vga.cc and removed the now obsolete plugin device 2012-01-26 16:35:38 +00:00
Volker Ruppert
a34cf1bcd5 - changes in the text update interface code
- changed argument for the text mode info structure to a pointer
  - added attribute controller palette to bx_vga_tminfo_t and removed the
    previous implementation
  - carbon.cc: attempt to fix the text mode colors (untested)
- x.cc: fixed warnings
2012-01-22 12:22:03 +00:00
Volker Ruppert
ed669adfd1 - rewrite of the PCI memory management code for the expansion ROM and BIOS area
- store memory type array in the memory object to avoid calling the pci plugin
    frequently. The pci code calls a memory method to change the memory type in
    case the PAM registers are modified.
  - removed now obsolete code and minor cleanups
2012-01-19 18:32:11 +00:00
Volker Ruppert
e4570a0939 - added special linked list for core plugins and manage them with the device
plugin system.The load order is important for these devices!
- load support plugins for networking, sound and usb only if at least one of the
  related plugin devices is loaded.
- plugin_ctrl: added missing devices to the list in bochsrc sample
2012-01-13 17:04:47 +00:00
Volker Ruppert
c403b4b699 - devices 'usb_ohci' and 'usb_uhci': moved config parameter creation and bochsrc
option parsing to the plugin device code
- added function bx_init_usb_options() to reduce code duplication
- added log function names for 'usb_ohci' and 'usb_uhci'
- documentation updates
2012-01-08 12:43:46 +00:00
Volker Ruppert
a48ef5f719 - added check for bochsrc options of optional plugins that have been moved to
the device code. Added panic message to force the user to enable the plugin
  with 'plugin_ctrl'.
- moved config parameter creation and bochsrc option parsing for device
  'usb_xhci' to the plugin device code
- added minimal documentation for the "log action per device" feature
- added log function name for 'usb_xhci'
2012-01-07 14:14:53 +00:00
Volker Ruppert
27c857784d - prepared receive status callback function that returns several flags.
For now it returns a flag that indicated that the device can receive data
  from the eth module and flags for the device speed. TODO: Use this callback
  in the eth modules before sending data to the device.
2011-12-17 08:22:33 +00:00
Stanislav Shwartsman
81f55b5be7 improved the fix for busmaster DMA transfers from device to memory done by Volker 2011-12-02 19:41:54 +00:00
Volker Ruppert
1f18f5831f - final fix for busmaster DMA transfers from device to memory: new memory method
writePhysicalBlock() replaces the buggy code in iodev.h.
  Calling pageWriteStampTable.decWriteStamp(addr) is required here to make memcpy() work.
2011-11-30 17:11:43 +00:00
Volker Ruppert
be53c733cf - temporary fix for the possible failure of busmaster DMA transfers caused by
memcpy(). The reason for the failure is unknown. Using writePhysicalPage()
  is safe, but slower and it only works on little endian hosts. On big endian
  hosts the data block would be copied in reverse order. We have to check
  whether or not this behaviour is expected for blocks > 8 bytes.
2011-11-29 19:36:41 +00:00
Volker Ruppert
e607d6e070 - rewrite of the method init_module() similar to the netmod one
- lowlevel sound modules must always include their headers for correct
  auto-generated dependencies
2011-08-18 07:05:09 +00:00
Volker Ruppert
4b4f691a80 - don't include plugin.h in bochs.h to reduce dependencies 2011-08-17 22:41:03 +00:00
Volker Ruppert
592c3399eb - created separate plugin 'netmod' that contains the common networking code
and the supported ethernet modules
  - renamed eth.* files to netmod.*
  - pseudo-device plugin implementation similar to 'soundmod'
- TODO: move sound, net and usb stuff to a separate subdirectory of iodev
2011-08-16 17:27:27 +00:00
Volker Ruppert
c7f63fca93 - added palette for 8 bpp support
(TODO: support for standard VGA 4 bit mode - saving as 8 bpp BMP)
2011-08-05 15:47:33 +00:00
Volker Ruppert
828b52fc50 - prepared graphics snapshot feature for VBE and Cirrus modes (TODO: save data in BMP format) 2011-08-01 18:21:25 +00:00
Volker Ruppert
5014eed268 - link lowlevel cdrom support with the hdimage plugin instead of harddrv and usb_common. This fixes
duplicate log prefixes on Windows if both IDE and USB cdroms are used in plugin mode. Windows also
  requires the cdrom base class and the init_cdrom() method to link and work correctly.
2011-07-17 17:23:12 +00:00
Stanislav Shwartsman
a6853a8b75 removed not implemented g2h device 2011-07-10 21:25:12 +00:00
Volker Ruppert
c2d0c207f7 - preparing Bochs for experimental USB xHCI support (written by Ben Lunt) TODO list:
- add sources (update in progress)
  - update configure script
  - initialize new USB devices member 'max_packet_size' (need help from Ben)
2011-07-04 19:42:47 +00:00
Volker Ruppert
9c1b043abb - use a dynamicly allocated buffer for the PCI ROM instead of a static one
- set maximum PCI ROM size to 128k
2011-06-27 19:46:13 +00:00