Commit Graph

1945 Commits

Author SHA1 Message Date
Volker Ruppert
1462fcaf9c - pci2isa debug_dump(): added option 'dump=full' to show the whole PCI config space
- updated debugger documentation
2012-04-25 16:50:41 +00:00
Stanislav Shwartsman
8871aa5da3 removed unused variable - fixing gcc warning 2012-04-23 18:52:11 +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
Stanislav Shwartsman
d71ed03ba1 fixed buffer overflow in serial.cc 2012-04-21 18:13:10 +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
Stanislav Shwartsman
6bfad819de bugfix 2012-04-11 14:47:47 +00:00
Volker Ruppert
34ca44cbcd - sb16 / es1370: fixed possible segfaults when unloading plugin 2012-04-09 08:48:10 +00:00
Volker Ruppert
c24080c92a - more accurate horizontal retrace emulation (based on the DOSBox implementation) 2012-04-08 14:21:18 +00:00
Volker Ruppert
a3f7a30422 - ioapic: added debug_dump() (prints redirection table) 2012-04-01 18:53:16 +00:00
Volker Ruppert
4c253c8cd6 - more accurate vertical retrace emulation (based on the DOSBox implementation) 2012-03-25 19:16:44 +00:00
Volker Ruppert
c43cf378f4 - floppy: added debug_dump() 2012-03-23 17:22:30 +00:00
Volker Ruppert
51cba8776d - improved debug_dump()
- small code cleanup
2012-03-20 18:29:49 +00:00
Volker Ruppert
a00bf4c01a - pci2isa: show PCI IRQ level in debug_dump()
- dma: added debug_dump() with verbose output if channel is active
2012-03-15 18:12:13 +00:00
Volker Ruppert
5a9e4a98ff - makefile fixes in the iodev subdirs related to SF bug #3459998 2012-03-12 21:10:44 +00:00
Volker Ruppert
4acef49a29 - improved debvug_dump() for pci, pic and vga / cirrus
- pci2isa: added debug_dump()
2012-03-11 12:17:41 +00:00
Volker Ruppert
086266d033 - implemented new debugger command 'info device [string]' that shows the state
of the device specified in 'string'. Added register mechanism and chained
  list to store the device name and pointer. Replace hardcoded debug info
  implementations for pic, pci and vga by the new one.
- TODO #1: improve existing debug_dump() output and add more devices
- TODO #2: add support for additional arguments and replace the NE2k print_info()
2012-03-10 17:14:07 +00:00
Volker Ruppert
953cd82219 - make the PCI debug_dump() usable from the debugger
- TODO:
  add debug info for more devices without adding them to bx_devices_c and
  without a macro in plugin. A register mechanism in the debugger code would
  be nice. Currently it is only possible to show the devices state by
  accessing the save/restore tree. The debug_dump() output should show
  the operation mode and the most important registers.
2012-03-07 18:08:35 +00:00
Volker Ruppert
2d90b30b14 - attempt to fix SF bug #3493315
- for sequencer reg #1 a screen update is required after changing bit #0, #3 and #5
  - added new method skip_update() that checks the conditions to skip the screen update
    and it is called after resizing the display
  - clear screen request from the sequencer is now handled by the update() code
    in the new method skip_update() instead of clearing display directly
2012-02-25 15:51:39 +00:00
Stanislav Shwartsman
75cf2e2c4a Fix fallout from bx_list_c change 2012-02-24 21:58:41 +00:00
Stanislav Shwartsman
b38c3e3629 Fix fallout from bx_list_c change 2012-02-24 19:40:18 +00:00
Stanislav Shwartsman
7d2e7e5245 Fix memset in pcipnic.cc 2012-02-24 19:38:10 +00:00
Volker Ruppert
1425e2370c - fixes related to the wx 2nd run support (not yet complete)
- siminterface: don't create plugin parameter if it already exists
  - wx: make sure all plugins are loaded when creating plugin control dialog
  - USB HC's: fixed removal of parameters when unloading plugin
2012-02-23 21:26:13 +00:00
Volker Ruppert
d74762b984 - wx: use new log function name for the table of log modules
- added some more log function names
2012-02-23 17:16:35 +00:00
Volker Ruppert
a3441c8e55 - fixed memory leaks 2012-02-18 08:52:25 +00:00
Volker Ruppert
55854afa86 - calculate horizontal and vertical frequency from CRT for more accurate retrace
timing (TODO: length of retrace signals should be calculated, too)
2012-02-14 20:56:42 +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
1df471dc82 - fixed line offset change in case VBE is disabled or in 4bpp mode 2012-02-12 13:14:38 +00:00
Volker Ruppert
8ada8d66ff - simplyfied unloading of core plugins 2012-02-12 08:37:42 +00:00
Volker Ruppert
47c68a2f04 - fixed possible crash on Windows 2012-02-11 17:11:58 +00:00
Volker Ruppert
f5ca539534 - fixed some uninitialized values found with valgrind 2012-02-10 18:08:17 +00:00
Volker Ruppert
47f2137edf - set device state structure to 0 with memset() for some devices
- cleaned up vga core init code after adding memset()
- floppy: removed structures that had been used for win95 direct access
2012-02-05 10:08:56 +00:00
Volker Ruppert
b7333b7f3e - removed definitions that already exist in the vgacore files
- minor fixes and cleanups
2012-01-31 18:53:02 +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
da42a100eb - major rewrite of the vga / cirrus code
- added new class bx_vgacore_c containing the core of the standard VGA
    emulation. This is now the base class for both vga and cirrus.
  - created 2 separate plugins 'vga' (for standard VGA and VBE) and 'svga_cirrus'
    (Cirrus emulation). The vga extension option is used to select which plugin
    should be loaded.
- TODO: move the pcivga code to the VGA/VBE code, add subdirectory for display
        adapters, severak improvements and cleanups
2012-01-24 21:58:24 +00:00
Volker Ruppert
ac08e89e94 - void gui init code to a new method and call it after the extension init
- added last maximum scan line to the bx_vga_c object
2012-01-23 22:16:08 +00:00
Volker Ruppert
709dc30cf4 - changed the maximum x/y resolution and the resulting number of x/y tiles
from constant to variable
2012-01-22 16:13:45 +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
500ad37191 - added arguments for x/y resolution to the gui init() and store x/y tilesize
in the gui object. Now the gui doesn't need to include vga.h.
- TODO #1: win32.cc also shouldn't include vga.h
- TODO #2: replace BX_MAX_XRES / BX_MAX_YRES by variables that can be set
  depending on the configuration
2012-01-21 12:15:10 +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
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
ec464f6f17 - fixed sector count to support > 32GB virtual disk size (patch by soynor) 2012-01-16 17:27:37 +00:00
Volker Ruppert
a700d33e9f - call functions for config and bochsrc parameter handling used by plugins
from the siminterface (required by MSVC and maybe others)
2012-01-16 17:11:16 +00:00
Volker Ruppert
8d7954e576 - another iodev cleanup: renamed pit_wrap files to 'pit'
- updated devices.txt
2012-01-15 08:50:20 +00:00
Volker Ruppert
c6bd3fb60c - moved the sound stuff to the new subdirectory iodev/sound
- TODO #1: update MSVC workspace files
- TODO #2: these 'device classes' could be moved to subdirectories, too:
  - pci (when we have more than one chipset)
  - display (when we have one more device and vga / cirrus cleaned up)
2012-01-15 07:52:04 +00:00
Volker Ruppert
50de0a12cd - moved the networking stuff to the new subdirectory iodev/network
- TODO: do the same with the sound code and update MSVC workspace files
2012-01-14 17:03:00 +00:00
Volker Ruppert
b72d603d83 - forgot to remove this file 2012-01-14 12:37:58 +00:00
Volker Ruppert
68b49ba42d - moved the USB stuff to the new subdirectory iodev/usb
- TODO #1: do the same with the network and sound code
- TODO #2: update MSVC workspace files
2012-01-14 12:36:32 +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
fb9401c3b0 - devices 'ne2k' and 'sb16': moved config parameter creation and bochsrc option
parsing to the plugin device code
- sb16: modified misc runtime menu creation to make the sb16 parameters optional
- ne2k: changed location of the init() method in file (now matches coding style
  of other device plugins)
2012-01-12 18:03:20 +00:00
Volker Ruppert
5c49e2458f - added new plugin type PLUGTYPE_STANDARD for optional plugins which are used in
nearly all cases and plugins that depend on others. These plugins cannot be
  managed with 'plugin_ctrl' (e.g. keyboard, harddrv, pci_ide). Store the plugin
  type in the divice structure for compatiblity with the "no-plugin" compilation.
  Call the device methods init(), reset() and after_restore_state() for each type
  separately in the order: stanard, optional, user. This also affects the status
  bar LED feature: now the keyboard and harddrv LEDs are always visible, but
  those of optional plugins may be invisible if there is no space left.
- TODO #1: add the devices 'ne2k' and 'sb16' to 'plugin_ctrl'
- TODO #2: manage core plugins with the device plugin system
2012-01-10 17:45:18 +00:00
Volker Ruppert
db4520f778 - devices 'pcidev' and 'pcipnic': moved config parameter creation and bochsrc
option parsing to the plugin device code
2012-01-09 17:15:03 +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
fb62b657f3 - fixed "Port Status Change Event": port ID starts at index #1
- changed some BX_INFOs to BX_DEBUG
2012-01-03 18:08:16 +00:00
Volker Ruppert
759f9cb0f0 - don't update the queue head if a short packet is detected (fixes UHCI on XP) 2011-12-31 17:37:30 +00:00
Volker Ruppert
afef1e621e - update redolog image position with lseek() if the read/write access is not
handled by the volatile redolog (fixes tests with Windows XP)
- allow volatile write to boot sector
2011-12-31 12:51:07 +00:00
Volker Ruppert
185490c158 - fixed possible segfault when setting up file attributes
- some more hidden / system directory fixes
- parse_directory() / write_file(): continue only if next cluster is valid
- TODO: fix VVFAT with Windows XP guest (unmodified FAT ?)
2011-12-30 23:23:34 +00:00
Volker Ruppert
5f0ec6c805 - fixed behaviour of "enable changed" port status bit
- improved error message
- TODO: fix UHCI with Windows XP guest (device not recognized)
2011-12-30 17:29:43 +00:00
Volker Ruppert
223fe998b3 - code for setting up log actions by device rewritten
- unknown module names now cause a panic
- added log function names to some more devices
- TODO: find a way to configure log actions by device in the config interface
  start menu (most of the devices do not exist at this point)
2011-12-30 11:13:37 +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
13506f74ee - fixed handling of directories with the attributes 'hidden' and 'system' 2011-12-29 15:39:04 +00:00
Volker Ruppert
ea80df55e6 - implemented "auto-off" status LED feature and removed old "iolight" code 2011-12-28 14:53:05 +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
3e65692e40 - some progress for making the E1000 work with Windows XP
- allow to set the PCI busmaster bit
  - implement byte read access for the status register
2011-12-27 16:39:31 +00:00
Volker Ruppert
8ef4c8abaa - removed plugins 'acpi' and 'ioapic' from the optional plugin control to avoid
trouble. In the future they may depend on the selected PCI chipset.
2011-12-27 13:02:35 +00:00
Volker Ruppert
0de2516d05 - fixes to avoid crash after unloading plugins before simulation
- small cleanups
2011-12-26 20:32:56 +00:00
Volker Ruppert
046b74d94c - devices 'e1000' and 'es1370': moved config parameter creation and bochsrc
option parsing to the plugin device code
- TODO: some more optional device plugins could be modified this way
2011-12-26 17:32:57 +00:00
Volker Ruppert
aad2d89c83 - rewrite of the optional plugin control feature. Now the plugins are loaded
directly while parsing the bochsrc or command line. If plugin support is enabled,
  the option could load all optional plugins, not only the ones supported before.
  NOTE #1: The old option had all plugins enabled by default and gave the user
           a chance to diable them. Now the plugins are only loaded if they
           appear in the config line and they are set to "1".
  NOTE #2: Loading a plugin that is controlled by a bochsrc option is possible,
           but it currently leads to a panic, since the load command is still
           present in devices.cc.
  NOTE #3: The plugin init code creates the device object and registers the
           optional plugin device. As an option, it can create config parameters
           and register an option parser. The device init, register state and
           reset is still handled in devices.cc, but in the order the devices
           have been loaded with the plugin control.
  NOTE #4: If plugin support is disabled, the plugin control only accepts the
           devices listed in plugin.cc.
- plugin init of core plugins now fails if they are not loaded with the expected
  type. For core plugins the load order is important and they cannot be handled
  with the chained devices list (used for optional and user plugins).
- some additions for calling config.cc functions from a plugin device
2011-12-25 08:52:34 +00:00
Volker Ruppert
38a797f502 - added function for loading optional plugins in case the plugin support is
turned off. Removed workaround code from devices.cc.
- removed 'pci_ide' plugin from the optional plugin control, since it depends
  on the presence of 'pci' and 'harddrv'.
- define types for plugin init/fini functions
2011-12-22 10:35:49 +00:00
Volker Ruppert
d070de30dd - removed BX_INFO (used for testing PCI ROM support) 2011-12-22 08:21:48 +00:00
Volker Ruppert
e312454851 - several fixes in PCI ROM code of the memory handlers
- use 'pci_rom_size - 1' as the mask for the offset address
  - ne2k: memory handlers must be disabled if compiled without PCI support
  - svga_cirrus: check for the PCI ROM size to make VBE work correctly
  - added BX_INFO to the mem write handlers
2011-12-20 19:33:16 +00:00
Volker Ruppert
927d9bb057 - added PCI network boot ROM support to all network adapters. The ISA version
of the NE2000 is not supported and it currently requires SeaBIOS to boot.
- TODO: implement PCI network boot ROM support in the Bochs BIOS
2011-12-18 20:26:14 +00:00
Volker Ruppert
e635b86c16 - unload optional and user plugins first to avoid segfault in case of
dependencies on core plugins
- added missing core plugins to unload
2011-12-18 10:47:26 +00:00
Volker Ruppert
c9af6d043d - all networking modules: check device receive status before sending packet
- networking modules 'slirp' and 'vnet': use device speed for timing of
  emulated replies.
2011-12-18 09:12:38 +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
Volker Ruppert
982064bc5a - small cleanups 2011-12-16 19:16:44 +00:00
Volker Ruppert
c1c222f7d0 - some 'pcipnic' device fixes (plugin make rule, PCI BAR number, init message) 2011-12-16 18:34:48 +00:00
Volker Ruppert
dd678424f0 - more work on the new E1000 device
- another temporary solution for host from/to little endian conversion
  - changed some variable types to bx_bool
  - some other small cleanups
  - TODO: add boot ROM support to all network devices
2011-12-15 20:57:43 +00:00
Volker Ruppert
14256dcc09 - more work on the new E1000 device
- added save/restore support
  - added description in bochsrc sample
  - added to script .conf.everything
2011-12-14 22:48:57 +00:00
Stanislav Shwartsman
352fe5cc29 update devices.txt 2011-12-14 21:39:17 +00:00
Volker Ruppert
5045a241e8 - ported Intel(R) 82540EM Gigabit Ethernet adapter emulation from Qemu
- TODO: add save/restore support, use Bochs function for host to little endian
  data conversion, timers of networking modules 'vnet' and 'slirp' should use
  the device speed instead of fixed 10 MBit
2011-12-13 20:53:44 +00:00
Volker Ruppert
51cf9faa12 - added missing dependencies for cdrom_osx.o 2011-12-11 12:07:01 +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
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
Volker Ruppert
58cadd6779 - disabled memory mapping mode check and panic. The vga mem write code seems to
handle it properly.
2011-11-24 17:21:17 +00:00
Volker Ruppert
67db6ee123 - disk geometry detection and check code rewritten:
* if the image provides a geometry, always use it.
  * if the cylinder value is set to 0 and the image supports autodetection,
    calculate the cylinder value from disk size, sectors and heads.
  * in all other cases the specified geometry is used.
  * a panic only occurs if the image size is too small for the geometry.
  * extra data past the end of the disk now causes an info message.
- TODO #1: 'flat' mode hdimage: read disk size of raw devices on Linux
- TODO #2: 'flat' mode hdimage: use geometry from MBR on image if present
2011-11-21 20:58:35 +00:00
Stanislav Shwartsman
360900d7bd merge more pic patches 2011-10-23 21:53:56 +00:00
Stanislav Shwartsman
60582e2b9d merge patch [3426460] [PATCH] PIC: remove never-executed code by ch100 2011-10-20 19:19:06 +00:00
Volker Ruppert
515683a237 - moved OSX specific cdrom code to separate file 2011-10-10 17:32:53 +00:00
Stanislav Shwartsman
b16d71175d Fixed 'show off' command in internal debugger
Removed not working record/playback obsolete commands from internal debugger
2011-10-09 19:26:30 +00:00
Stanislav Shwartsman
1c0a257b16 change PIT message to BX_DEBUG - it is flooding log too much when playing old MSDOS games 2011-10-09 08:21:12 +00:00
Stanislav Shwartsman
8691ee7747 removed redundant ifdef 2011-10-03 17:41:48 +00:00
Volker Ruppert
972560b83c - renamed cdrom.cc to cdrom_misc.cc and created new file cdrom.cc that contains
shared code (create TOC from image, seek)
- TODO: create new file cdrom_osx.cc that contains the OSX stuff only
2011-10-03 07:23:44 +00:00
Stanislav Shwartsman
391b4d9eee fix more warings 2011-09-30 21:02:09 +00:00
Stanislav Shwartsman
f425400af5 fixed warnings from compilation with mingw-gcc 4.6.1 2011-09-30 20:38:18 +00:00
Stanislav Shwartsman
3e74d77e90 fixed compilation for win32 host 2011-09-25 19:16:25 +00:00
Volker Ruppert
0596437ce7 - moved lowlevel cdrom code for win32 to a separate file
- TODO #1: move shared stuff (e.g. creating TOC for image file) to the base class
  to fix the temporary code duplication
- TODO #2: remove ASPI code for raw cdrom access on Win 98/ME after release
2011-09-25 18:49:20 +00:00
Stanislav Shwartsman
274ca1a2f6 tab2space conversions 2011-09-11 17:15:21 +00:00
Stanislav Shwartsman
cb261c45d3 removed non-working code for z-unodable and z-volatile images.
our priority is to implement support for std disk image formats (VMDK, VDI) instead.
2011-09-11 16:27:56 +00:00
Stanislav Shwartsman
0e4eecafba duplicate macros fix 2011-09-08 17:53:28 +00:00
Volker Ruppert
f18f875c7f - sparse mode bugfix: initialize parent_image with NULL 2011-09-07 21:34:15 +00:00
Volker Ruppert
9483414f84 - fixed 256-color mode screen update handling. Now the dword, word and byte modes
are correctly handled.
- related fixes in the graphics snapshot code
2011-09-05 18:39:02 +00:00
Volker Ruppert
a1b9a8e190 - enable extended "read TOC" feature for Windows versions newer than XP (>= 5.1)
- TODO: move win32 specific cdrom stuff to a separate file
2011-08-24 10:48:05 +00:00
Volker Ruppert
aaf5d0a94d - removed raw floppy access support for Win 95/98/ME hosts 2011-08-22 17:57:21 +00:00
Volker Ruppert
d5973c06cf - added runtime config handler for the floppy. Now the media change is handled
after all parameters have been set.
2011-08-19 20:20:25 +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
Stanislav Shwartsman
a03e0266fb added yonah CPUID to cpudb. remove bxversion.h from dep files 2011-08-16 19:58:56 +00:00
Volker Ruppert
fd56ce2a5a - forgot to add / remove files 2011-08-16 17:31:16 +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
7bbfee58a2 - usually the realtime synchronization keeps the PIT-based system clock in sync
with the host time. After using a runtime config dialog or save and restore
  simulation, this behaviour makes the PIT clock and the VGA update timer
  running way too fast until it's back in sync. Now the elapsed time is stored
  in the variable 'real_time_delay' and it is used to let the PIT clock run at
  realtime speed, even if it is out of sync.
2011-08-15 10:37:41 +00:00
Volker Ruppert
a0b4b4898b - implemented graphics snapshot for mode X (variant of VGA mode 0x13)
- bugfix: CGA1 mode depends on the CGA compatiblity switch
2011-08-14 14:56:54 +00:00
Volker Ruppert
b8b2a7253b - implemented graphics snapshot for VGA mode 0x13
- new method get_dac_palette() for the graphics snapshot feature
- small code cleanup
2011-08-14 08:06:05 +00:00
Volker Ruppert
9416eaccc2 - added error handling for the case malloc() fails 2011-08-10 07:12:32 +00:00
Volker Ruppert
d2b0146a7e - changed BX_ERROR to BX_PANIC for the case a host directory does not fit on the virtual disk
- stop reading host directory in case of an error (finally causes a BX_PANIC)
2011-08-09 16:52:18 +00:00
Volker Ruppert
f151aabe5f - added support for snapshot from EGA/VGA standard memory layout (saved as 8 bpp BMP)
- added new method get_vga_pixel() that read the color value from EGA/VGA memory layout (moved from
  display update code and now also used for snapshots)
- minor code cleanups
2011-08-08 07:52:25 +00:00
Volker Ruppert
bce6a17b98 - VBE specific case for graphics snapshot can be used for >= 8 bpp modes only
- palette data for snapshot is now dword aligned to simplify code
- prepared snapshot code to support 4 bpp EGA/VGA memory layout (not yet complete)
2011-08-06 13:08:31 +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
Stanislav Shwartsman
fb405ad39a Compile in MONITOR/MWAIT support by default for all cpu-level=6 configurations. 2011-08-02 19:52:24 +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
eb0c06f357 - added new parameter 'update_freq' for the 'vga' option that should replace the
'vga_update_interval' option. The screen update frequency is still based on
  the emulated clock unless the realtime sync is enabled with the 'clock' option.
  TODO: rewrite the virt_timer code to support realtime screen updates
  independent from 'clock' setting.
- fixed changing parameter 'update_freq' at runtime (timer object and blink counter)
2011-07-26 22:16:24 +00:00
Volker Ruppert
c8d2f60225 - added runtime config handler for the ATAPI cdrom code. Now the media change is handled after both
parameters (path + status) have been set. TODO: implement this feature for the floppy, too.
- call update_drive_status_buttons() from update_runtime_options() to reduce the number of calls.
  Now call update_runtime_options() from the gui floppy / cdrom handlers after closing dialog.
2011-07-24 14:11:10 +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
Volker Ruppert
345d67c403 - removed BeOS support from sources and documentation 2011-07-11 17:36:10 +00:00
Stanislav Shwartsman
a6853a8b75 removed not implemented g2h device 2011-07-10 21:25:12 +00:00
Volker Ruppert
20ae4af54c - removed 'arpback' networking module (ARP simulation still exists in the 'vnet' module) 2011-07-10 20:56:54 +00:00
Volker Ruppert
bdbe2cfb03 - added more values in register_state() (not yet complete)
- don't add reserved bitfields to the save/restore tree
- some fixes for big endian machines
- TODO: init max_packet_size in USB devices, find test case, ...
2011-07-10 09:30:04 +00:00
Volker Ruppert
72f73e7d8d - the stubs for the PCI core must be always present (fixes bug reported in SF forum) 2011-07-08 12:13:41 +00:00
Volker Ruppert
3f3feef718 - more work on USB xHCI support
- added main source file usb_xhci.cc
  - TODO: finsh work in register_state()
  - TODO: USB devices: initialize max_packet_size
  - TODO: test case for xHCI wanted
2011-07-06 21:07:34 +00:00
Volker Ruppert
6dd13e1f12 - some more work for USB xHCI support
- added new configure option (don't use it yet)
  - added header file usb_xhci.h
  - TODO: add main source file (update in progress)
2011-07-05 18:31:15 +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
4699840aaf - reorganisation of the vga init code:
- using the same init() method for all display adapters
  - new method protected init_standard_vga() for the shared vga core
  - new method init_vga_extension() implements the extended features
- moved loading of vgabios image for the ISA case from main.cc to the vga init code
2011-07-03 15:31:16 +00:00
Stanislav Shwartsman
03879cf90d added infrastructure for prefetch support in the memory handlers 2011-06-29 19:48:46 +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
Stanislav Shwartsman
a1a140682c cleanup 2011-06-26 20:22:04 +00:00
Volker Ruppert
1bcac13fcb - PCI ROM support added to the cirrus device (SeaBIOS now usable in Bochs with cirrus setup) 2011-06-26 19:32:16 +00:00
Volker Ruppert
deef94eb12 - added PCI ROM support to bx_pci_device_stub_c and use it in the pcivga device (based on a patch by
Sebastian Herbszt). TODO list:
  - modify LGPL'd VGABIOS to make it work with SeaBIOS
  - modify Bochs BIOS to set up the legacy address 0xc0000
  - implement PCI ROM support in the cirrus device
  - move load_ROM calls to the display adapter code to handle the ISA case
2011-06-26 17:42:07 +00:00
Volker Ruppert
16bd4c6401 - added pci_base_address array to bx_pci_device_stub_c and use it in most of the PCI devices instead
of several base address variables (ne2k still uses base_address for both ISA and PCI)
2011-06-25 12:43:27 +00:00
Volker Ruppert
598b15f080 - the pcivga device can now be used even if Boche VBE support is disabled (VBE framebuffer BAR is
not available in that case)
2011-06-23 21:03:39 +00:00
Volker Ruppert
fce2386f99 - set log prefix depending on the selected vga extension (new prefix "BXVGA" for Bochs VBE support) 2011-06-23 17:02:48 +00:00
Volker Ruppert
2137c8bd81 - moved pci_conf array as a protected member to the PCI device stub class (exists in all PCI devices) 2011-06-23 15:56:02 +00:00
Volker Ruppert
e88cda9fc0 - fixed compilation error if PCI is enabled without lowlevel cdrom support
(SF bug #3294671)
- related fixes in the USB MSD / SCSI device code
2011-06-21 19:54:37 +00:00
Stanislav Shwartsman
93360601f8 Print debug value before modifying it 2011-06-19 15:31:51 +00:00
Volker Ruppert
48e8df25ff - fixed some MSVC warnings 2011-06-19 05:37:30 +00:00
Stanislav Shwartsman
84647d127b Fixed incorrect typecast in acpi.cc
This bug prevented boot of WinXP and Win7 64 images!
2011-06-18 09:54:43 +00:00
Volker Ruppert
d03db7f940 - several changes related to cdrom runtime configuration
* moved runtime handlers for cdrom from config.cc to the device object
  * cd media status variable is now always of type bx_bool
  * changed obsolete gui names like "cdromD" to "cdrom1"
  * TODO: implement new runtime config mechanism similar to USB
2011-06-13 09:32:39 +00:00
Stanislav Shwartsman
1414e0bd6e Report memory above 4GB to BIOS (patch by Sebastian Herbszt) 2011-06-12 20:27:36 +00:00
Volker Ruppert
cb8faeee52 - implemented new mechanism to update device config parameters that depend on
each other. Devices can register a handler to update it's state after runtime
  configuration. The new method update_runtime_options() executes all registered
  device handlers before the simulation continues.
- USB host controllers now using the new mechanism to handle the runtime device
  change (replaces the previous timer-based implementation). TODO: floppy and
  cdrom could use this feature, too)
- improved USB device change messages
2011-06-11 19:38:52 +00:00
Stanislav Shwartsman
fecda2ce16 Limit extended_memory_in_64k to 3 GB - 16 MB. PCI Memory Address Space starts at 3 GB.
Sebastian
2011-06-10 06:38:11 +00:00
Volker Ruppert
f2f4099bc1 - small cleanups in the pit_wrap and virt_timer code
- TODO: rewrite virtual timer code to support both timer types at the same time
2011-06-04 06:40:04 +00:00
Volker Ruppert
0638a4174d - use timer functions for recording only if the record handler is not NULL
- added sound recording framework in the soundosx.* files. I hope someone wil
  be able to add the required platform specific code.
2011-05-24 16:47:07 +00:00
Volker Ruppert
59ce011333 - soundwin.cc: improved error messages
- fixed some warnings
2011-05-20 17:39:32 +00:00
Volker Ruppert
f32870a377 - implemented sound input support on Windows using the default wave mapper 2011-05-13 21:08:33 +00:00
Volker Ruppert
ecefdbbb93 - using the virtual timer (like the PIT device) instaed of the stanard timer
makes screen updates independant from the ips value if the realtime
  synchronization is enabled ("clock: sync=[realtime|both]").
  Thanks to Stanislav for pointing me to this direction.
2011-05-11 16:08:13 +00:00
Stanislav Shwartsman
39ccbf5a77 cleanup and style changes, fixed gcc4.6 warning 2011-05-10 20:04:20 +00:00
Volker Ruppert
11e9b12fbf - PIT must be connected to IOAPIC pin INTIN2
- converted tabs to spaces
2011-05-04 18:37:50 +00:00
Volker Ruppert
7d9704e080 - small fixes according to the specs
- raster operations 0x90 and 0xda
  - maximum BLT height is 2048
2011-05-03 19:19:38 +00:00
Volker Ruppert
e5aa057346 - BLT MODE EXTENSION register is marked as "reserved" for the CLGD5430, so we
must ignore writes to it (fixes "garbled W" bug in Win95 with Cirrus ISA)
- fixed "inverted transparent colorexpand" bug (pointed me to the above issue)
- TODO: IE 5.5 startup window is still not okay
2011-05-01 19:09:27 +00:00
Volker Ruppert
f5e3a6eff3 - the BLT extension "inverted transparent colorexpand" always uses the
foreground color. This fixes the "white text" bug in original Win95 (A) with
  the Cirrus ISA driver.
  TODO: fix the "garbled W" bug (related to "dword granularity").
2011-05-01 14:53:54 +00:00
Stanislav Shwartsman
76c11e1a40 - Configure option --enable-acpi is deprecated and should not be used anymore.
The ACPI support is always automatically compiled in if PCI is compiled in.
    The ACPI still could be disabled using .bochsrc 'plugin_ctrl' option.

Updated CHANGES and docs as well.
2011-04-30 20:04:42 +00:00
Stanislav Shwartsman
01ba2ef2b0 recv can return -1 2011-04-30 18:47:04 +00:00
Stanislav Shwartsman
38ec72ece3 Merged serial port fix from [Bochs-developers] accessing COM1 via telnet.
Upon investigation the problem is easily fixed in bx_serial_c::rx_timer_handler():

<snip>
   ssize_t bytes = read(socketid, &chbuf, 1);
#endif
   if (bytes)
   {
      BX_INFO((" -- COM %d : read byte [%d]", port+1, chbuf));
      data_ready = 1;
   }
<snip>

I think this means the extra check above will give no noticeable degradation of performance, so hopefully this can be applied to SVN.  It would avoid screwing up a running instance of Bochs when a remote network client unexpectedly disconnects from the COM1 tcp port.

Also some cleanup in serial.cc code.
2011-04-30 18:22:35 +00:00
Volker Ruppert
e8555036ea - limit output packet size to max. 0,1 sec for continous sound at low data
rates (e.g. 8000 Hz, 8 bit, mono)
2011-04-26 18:35:43 +00:00
Volker Ruppert
b7e457dc86 - enabled support for DAC1 output (both DACs cannot send output to the lowlevel
module at the same time yet)
2011-04-25 17:35:39 +00:00
Volker Ruppert
c5f385552f - use the new Core Audio API if available (SF patch #3292581 by Heikki Lindholm)
- TODO: some more work may be required
2011-04-25 11:22:19 +00:00
Volker Ruppert
f45b16d6c0 - fixed recording / playback of different audio formats / sample rates 2011-04-25 08:47:19 +00:00
Volker Ruppert
14ecf33ad5 - sound input support for OSS implemented
- ALSA: fixed possible assertion failure in stopwaverecord()
2011-04-24 18:45:37 +00:00
Volker Ruppert
e3916f0df4 - always enable Cirrus extensions of the PCI version
- changed statements true / false to 1 / 0
- added definitions for unimplemented features
2011-04-24 08:08:35 +00:00
Volker Ruppert
61ac09e297 - allow writing to MBR (except partition table) to make Win95 happy 2011-04-23 14:18:01 +00:00
Volker Ruppert
72b4a1fe46 - implemented sound input support for the ALSA sound support
- TODO #1: move lowlevel sound recording / playback to a separate thread
- TODO #2: sound input support for OSS
2011-04-22 13:11:47 +00:00
Stanislav Shwartsman
c9c067bf8b compilation fixes for OpenBSD 2011-04-21 18:29:07 +00:00
Stanislav Shwartsman
9979817f4a fix for acpi (merge SF patch) 2011-04-21 15:40:33 +00:00
Stanislav Shwartsman
ea7c4d6887 gcc 4.6 warning fix - unused var 2011-04-20 17:43:21 +00:00
Stanislav Shwartsman
1a7d38c28b bswap optimization patch by Heikki Lindholm + cleanup 2011-04-19 12:48:06 +00:00
Volker Ruppert
dfaa18bcd0 - two of the BLT raster operations might be implemented in a wrong way, but no
test case present yet. Added BX_ERROR for the case they are used.
- improved detection of unimplemented features
2011-04-17 13:20:47 +00:00
Volker Ruppert
637823b530 - wave input feature using lowlevel sound module implemented (currently
returning silence)
- TODO: implement sound recording in the lowlevel sound modules
2011-04-10 21:12:30 +00:00
Volker Ruppert
f6ac6abd92 - implemented dummy sound input support (returns silence) and prepared the
ES1370 emulation to use it.
  TODO #1: implement real sound input in the lowlevel sound modules
  TODO #2: implement sound input in the SB16
  TODO #3: rewrite sound output code to use the same API
2011-04-04 16:07:24 +00:00
Volker Ruppert
580159d2d8 - deleted executable property 2011-04-03 09:55:17 +00:00
Volker Ruppert
4e0303fb56 - small optimization in read / write sector loop: no need to calculate logical
sector address when incrementing
- removed useless duplicated list of unsupported commands
- LBA flag changed to type bx_bool
2011-04-02 13:19:52 +00:00
Volker Ruppert
29c5c45609 - implemented gameport (joystick) presence control by external device and use
it in the ES1370 device (enabled by default)
2011-03-31 16:54:06 +00:00
Volker Ruppert
0ff7ba3431 - fixed sound output after restoring state
- improved debug message
2011-03-27 09:32:17 +00:00
Volker Ruppert
a626140c35 implemented ATA commands READ NATIVE MAX ADDRESS and READ NATIVE MAX ADDRESS EXT 2011-03-22 19:55:07 +00:00
Volker Ruppert
932df44658 - renamed some symbols from BX_SOUND_OUTPUT_* to BX_SOUNDLOW_*
- es1370: fixed transfer size for the ADC channel
- es1370: call startwaveplayback() when the DAC2 channel is activated
- added missing change to BX_SUPPORT_SOUNDLOW
- changed type of variable "stereo" to bx_bool
- minor other changes
2011-03-20 18:02:12 +00:00
Volker Ruppert
6c58d00c62 updated dependencies 2011-03-20 16:18:45 +00:00
Volker Ruppert
e6d56f97ae - renamed bas class for lowlevel sound support to bx_sound_lowlevel_c
- define symbol BX_SUPPORT_SOUNDLOW to make the lowlevel sound modules
  independent from the presence of the SB16 emulation
2011-03-19 12:57:13 +00:00
Volker Ruppert
65f7056328 - moved BX_MIN and BX_MAX macro definitions to bochs.h, removed duplicates and
use it in es1370.cc
- improved log messages
2011-03-15 22:18:40 +00:00
Volker Ruppert
43650c4459 - load 'current sample count' with new value of 'sample count'
- status register can be read in byte and word mode (undocumented?)
- modified some log messages
2011-03-13 20:29:00 +00:00
Volker Ruppert
50d34fdfca fixed malformed host name caused by typo 2011-03-13 20:28:29 +00:00
Volker Ruppert
e67bb30120 - added documentation for the ES1370 soundcard 2011-03-13 09:09:34 +00:00
Stanislav Shwartsman
1dd995abc3 Adding Id and Rev property 2011-03-12 20:34:38 +00:00
Volker Ruppert
ae45908060 - ported ES1370 soundcard emulation from Qemu. For now, only sound output to
DAC2 is sent to the lowlevel sound module. DAC1 and sound input (ADC) are not
  yet supported. Also unsupported: CODEC (mixer), UART (MIDI) and legacy support.
  Sound module selection in configure script now no longer depends on SB16 and
  uses autodetection only.
- fixed segfault when saving bochsrc
2011-03-12 17:37:26 +00:00
Volker Ruppert
8c32359615 The VBE display extension is now a part of the Bochs core. The configure option
--enable-vbe is now deprecated and the symbols BX_SUPPORT_VBE and
BX_SUPPORT_PCIVGA have been removed. To enable VBE support, the bochsrc option
"vga: extension=" must be set to "vbe". If PCI is present, you can assign the
"pcivga" device to a PCI slot.
2011-03-07 19:01:22 +00:00
Volker Ruppert
1df7a9131b Fixed possible buffer overflow causing segfault or memory corruption. The
buffers are not large enough for the maximum sector count in LBA48 mode. Now
resetting buffer pointers after processing a PRD (and move remaining data if
necessary). This should fix the SF bug items #3190970 and #3077616.
2011-03-06 20:51:52 +00:00
Volker Ruppert
e79fcfb98d - documentation for networking module 'slirp' added 2011-03-03 16:49:29 +00:00