Commit Graph

293 Commits

Author SHA1 Message Date
Volker Ruppert
95d0a182af Some work on the disk image sector size option based on a patch by Ben Lunt.
- Implemented sector size handling in the ATA disk emulation. This feature
  still needs BIOS support to boot from a disk with big sectors.
- Enabled sector size support in the redolog_t class based disk image mode.
  The base class can handle 512 byte blocks only, but that doesn't matter since
  all valid sector sizes are multiple of it. So for now the growing, undoable
  and volatile disk image modes internally read/write 512 bytes per call.
- TODO: BIOS, bximage.
2018-03-27 17:47:46 +00:00
Volker Ruppert
657cd05c0a Continued preparing hard disk sector size option in the hdimage code.
- 'flat' mode: disk image size must be multiple of sector size.
- 'concat' mode: each disk image size and lseek() offset must be multiple of
   sector size.
- 'sparse' mode: page size and lseek() offset must be multiple of sector size.
- TODO: 'growing', 'undoable' and 'volatile' mode: redolog_t class is still
  based on 512-byte blocks.
- TODO: 'vbox', 'vmware3', 'vmware4', 'vpc' and 'vvfat' mode have a builtin
  geometry. If other sector sizes are supported, it should be handled correctly.
- harddrv code now reports current sector size, but still panics for now.
- TODO: harrdrv and USB disk code, bximage, BIOS.
2018-03-18 09:07:31 +00:00
Volker Ruppert
db95a54238 Prepared config interface for a hard disk sector size option.
This code is based on the initial patch by Ben Lunt with some modifications:
using enum parameter, extra parser handler and cdrom handling not necessary,
TODO: hdimage and bximage code, harddrv and USB disk emulation, BIOS.
2018-03-13 20:35:56 +00:00
Volker Ruppert
eb89cdaea4 It is valid to set up the PRD size larger than the IDE transfer size. Fixed
busmaster DMA code to handle this case.
2017-05-07 07:47:08 +00:00
Volker Ruppert
76b54ecb61 Renamed bx_pci_device_stub_c to bx_pci_device_c and derive it now from class
bx_devmodel_c. The early version of the combined vga / svga_cirrus code
required the now obsolete implementation. Some related cleanups in the
devices code.
2017-03-26 08:09:28 +00:00
Volker Ruppert
a53b99f5e1 Implemented Bochs BIOS option "fastboot" for skipping the boot menu delay.
Prepared "biosdetect" option in the harddrv code.
TODO #1: Add support for a comma-separated list of BIOS options.
TODO #2: Implement support for at least "biosdetect=none" in the Bochs BIOS.
2017-02-16 21:43:52 +00:00
Volker Ruppert
458f747b48 Removed unused argc and argv parameters from plugin init functions. 2017-01-28 09:52:09 +00:00
Volker Ruppert
400704d038 Added macro BX_FATAL() that works like BX_PANIC(), but with hardcoded action
"fatal". It can be used for all cases when there is no workaroud present to
avoid application crash or incorrect simulation behaviour. As a first step now
using BX_FATAL() for some data structure size and bit field errors.
2016-12-30 10:04:06 +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
Stanislav Shwartsman
7cf38247e4 fixed warnings and errors which pop up when compiling Bochs with TRUE bool as boolean type instead of Bit32u 2016-06-01 20:29:44 +00:00
Volker Ruppert
1df014a8ae Implemented unregister mechanism for runtime config handlers.
TODO: use it for removable devices with removable media (USB floppy / cdrom).
2015-08-23 07:04:56 +00:00
Volker Ruppert
16fb8317bd Fixed parameter handler issues found with runtime changes while cdrom tray locked.
- bx_param_num_c: set the value returned from the handler.
- bx_param_string_c: set the new value after processing the handler.
- harddrv param handler: check lock state of cdrom and modify value if true.
2015-08-10 18:44:16 +00:00
Volker Ruppert
fa5353698d CMOS boot setup moved to the floppy init code to make Bochs BIOS boot work in
case no harddrv plugin is loaded (no ata controller enabled). The floppy and
boot parameters are only set up if no CMOS image is enabled.
2015-07-26 06:48:33 +00:00
Volker Ruppert
2bfee2aeb2 Added new log function for the ATAPI CDROM and macro BX_DEBUG_ATAPI to avoid
flooding logfile with hard disk messages when only the cdrom ones are wanted.
ATAPI DMA: don't copy more data than actually present in buffer.
2015-05-09 07:44:36 +00:00
Volker Ruppert
7e86e7956f Fixed PCI IDE controller DMA start (found with a recent Linux version:
"mode sense" command executed in DMA mode).
Updated output of "mode sense" page 0x2a (still reporting CD-ROM drive).
2015-05-05 20:10:43 +00:00
Stanislav Shwartsman
b5a603c8c7 fixed %d->%u format found by cppcheck (patch by Maxim Derbasov) 2015-01-25 21:24:13 +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
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
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
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
c4f722cd28 Improved CD-ROM save/restore support
Set current LBA value after seek completion (faked)
2014-02-24 18:16:21 +00:00
Volker Ruppert
92c6120d7a Some work on the seek latency feature
- rewrite of the logical sector handling code to make seek latency support possible
- implemented variable HD seek latency for seek and read commands
- TODO #1: CD-ROM seek command returns status immediately, but it clears the DSC bit
  and sets it at completion. Device should not accept ATAPI commands until DSC is set.
- TODO #2: clean up the seek latency code
2014-02-23 20:06:02 +00:00
Volker Ruppert
c7f57b5547 Some work on the seek latency feature
- temporarily disabled seek latency support for ATAPI command 0x2b until the
  seeking status is implemented correctly
- fix for the MSVC compilation fix (result was always 0.0)
2014-02-23 13:56:23 +00:00
Volker Ruppert
c0fc06b433 Fixed VS2013 compilation error and GCC warning
Still TODO: make HD seek latency variable
2014-02-23 08:49:44 +00:00
Volker Ruppert
93d9590f3b Some work on the ATA/ATAPI seek latency feature
- seek-only commands now using this feature
- fixed possible strange error message at hard disk DMA reads caused by wrong
  bmdma_start_transfer() call.
2014-02-21 21:37:33 +00:00
Volker Ruppert
12ce16285c Moved seek timing calculation to a separate method
Improved CD-ROM save/restore support
TODO: variable seek latency for hard disk
2014-02-14 18:27:36 +00:00
Volker Ruppert
54138f294e Some work on the ATA/ATAPI seek feature and related changes
- now using the more accurate name "seek latency"
- fixed CD-ROM LBA address range checks and renamed limit to "max_lba"
- make the latency for CD-ROM access variable depending on the distance between
  current and new block address, Maximum value should only occur at first access
  or after media change.
- TODO: make hard disk seek timing variable, too.
- still TODO: seek latency for USB drives (requires asynchronus packet support).
2014-02-09 20:28:42 +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
cdf3facaf4 ATAPI CD-ROM emulation fixes
- BSY status bit must be set during seek
- report active MDMA mode in 'identify' command
- improved a debug message
2014-01-19 14:15:43 +00:00
Volker Ruppert
78509d637b Implemented seek delay for hard disk and CD-ROM PIO read commands using fixed
values for the average access time (hd: 5 msec / cd: 80 msec). Hard disk write
and DMA mode commands are not affected yet.
2014-01-18 16:16:42 +00:00
Volker Ruppert
3d93ca1b64 Fixed panic when using multiple CD-ROM drives (now using name cdrom1, cdrom2,...) 2013-12-22 08:11:35 +00:00
Volker Ruppert
f3a6fbd235 Simplified setup of special runtime menus / dialogs
- If the runtime flag of a bx_list_c object is set, all it's items are set up
  as runtime options.
- Set the runtime parameter for all top-level runtime-only lists. Setting up
  each single parameter is no longer needed.
2013-11-25 21:07:39 +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
674447c186 DLL HD support rewritten and enabled for WIN32
TODO: put sample code for VDISK.DLL into the patches directory
2013-03-08 18:25:32 +00:00
Volker Ruppert
c2b57c5a56 save the ata device options using the parameter tree
- removed parameter "present" and use the new drive type "none" instead
- re-implemented cdrom media status parameter as a bx_param_enum_c
- TODO: change floppy media status parameter type to be consistent
2013-01-22 18:26:49 +00:00
Stanislav Shwartsman
68c5312ee1 fixed gcc warning - array index out of bounds 2012-11-26 18:43:19 +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
9ee5a77747 - started implementation of sav/restore support for hard disk images using a
dummy parameter and it's save/restore handlers. Currently only the save
  support is implemented and the specific save function is only written for
  flat mode images (copies whole disk image file to the save/restore folder).
- TODO #1: implement save function for the other disk image modes
- TODO #2: add restore support (replace disk image file with the one from the
           save/restore folder)
2012-09-16 19:51:30 +00:00
Volker Ruppert
a2dd985aef - remove registered device state in destructor (fixes crash on Bochs exit with
MSVC plugins)
2012-08-19 08:16:20 +00:00
Volker Ruppert
d6b3875eec - remove cdrom runtime parameter handlers on exit (for wx "2nd run" support) 2012-08-15 08:30:22 +00:00
Volker Ruppert
90168f5dcd - moved the lowlevel cdrom and disk image stuff to the new subdirectory iodev/hdimage
- TODO: update MSVC workspace files
2012-08-05 18:13:38 +00:00
Stanislav Shwartsman
1ab623536c optimize harddrv code 2012-05-06 19:19:00 +00:00
Volker Ruppert
8bb206ccdf - added special flag for dependent lists
- bx_list_c: don't accept duplicate param names in list (except dependent lists
  and special menus)
- added BX_PANIC for malloc() failure
- harddrv: fixed wrong variable found with bx_list_c changes
2012-02-13 20:58:26 +00:00
Volker Ruppert
de94b08a1a - class bx_list_c now contains a chained list of parameters. Removed the now
obsolete maxsize parameter from all lists.
2012-02-12 18:43:20 +00:00
Volker Ruppert
3ec77e9372 - store config parameter values in local variables to avoid searching for
parameters at simulation time
2012-01-20 15:56:17 +00:00
Volker Ruppert
b130bf671b - initial "log action by device" implementation added (TODO: check for
invalid module names, save log actions to bochsrc)
- added new member 'name' to the logfunctions class for the case the prefix
  is too short. Added to some devices with longer names.
2011-12-29 19:51:54 +00:00
Volker Ruppert
0b2bec6752 - implemented "auto-off" timer for the status bar LEDs that replaces the
existing "iolight timer" code in the hard drive code. If an LED is registered
  with the "auto-off" flag, the device only needs to turn on the LED to indicate
  data transfer. The LED timer in the gui code turns it off after 0.5 seconds if
  it is not actived by another transfer. Added this feature to all network
  devices.
- TODO #1: implement this feature in the USB host controllers
- TODO #2: the unused timer in the hard drive code could be used for the
  emulation of seek functions
2011-12-28 11:51:42 +00:00
Volker Ruppert
3029d55f4a - hdimage 'flat' mode: added support for Linux block devices (part of SF patch #3412431)
- hdimage: renamed 'sectors' to 'spt' (same as the config parameter)
- harddrv: fixed info message
2011-11-26 15:09:00 +00:00