Commit Graph

1326 Commits

Author SHA1 Message Date
Stanislav Shwartsman
b6c8275cfd remove old PIT model and always use Greg Alexander's new one 2007-04-08 21:57:06 +00:00
Volker Ruppert
16812f0ad2 - fixed some gcc 4.x warnings 2007-04-08 15:02:50 +00:00
Volker Ruppert
f8aec91820 - fixed some MSVC warnings 2007-04-06 15:22:17 +00:00
Volker Ruppert
8792936c44 - fixed ATA channel save/restore list size (no space for 'drive_select') 2007-04-06 07:13:19 +00:00
Stanislav Shwartsman
9d907b5f65 Try to specify everywhere the list size in bx_list_c constructor 2007-04-03 22:38:49 +00:00
Volker Ruppert
abd7cbda87 - implemented specific save/restore method for USB HID devices
- removed USB device buffer from save/restore list (contains temporary data only)
2007-04-01 11:15:48 +00:00
Volker Ruppert
9e6a7231da - basic save/restore support for USB devices (TODO: device-specific state)
- user doc: fixed USB description
2007-03-31 09:24:04 +00:00
Volker Ruppert
b1bf1a8bf5 - documentation update after USB devices rewrite
- removed obsolete structures and members from the USB code
- removed mouse type 'usb' (USB mouse and tablet override selected mouse type
  when connected)
- user doc: mention vmware 4 disk image support
2007-03-27 17:47:15 +00:00
Volker Ruppert
22af32e57a - removed obsolete file after USB devices code rewrite 2007-03-25 17:41:19 +00:00
Volker Ruppert
324250ccb4 - code USB device 'keypad' rewritten and old-style USB device handling removed
- makefile dependencies regerated after USB device code rewrite
- improved error reporting in the new USB device code
2007-03-25 17:37:59 +00:00
Volker Ruppert
58ba0172bb - USB tablet emulation ported from the Qemu project (TODO: the Bochs gui should
generate absolute x/y values if tablet connected)
- store device name string in member d.devname
- report unknown/unsupported requests as errors
- usb_msd: removed unnecessary type definition
2007-03-24 11:43:41 +00:00
Volker Ruppert
69e0110c7b - USB HID mouse support ported from Qemu to separate file and C++ object
* removed old-style mouse stuff
  * TODO: implement USB tablet from Qemu and re-implement Bochs USB keypad
- clear out USB hub structures in constructor to avoid segfault
- keyboard: mouse capture flag must affect all mouse types
2007-03-21 18:54:41 +00:00
Volker Ruppert
7956e47de8 - removed USB port option parameter and store device and option in one single
string. This is better for devices that need to know all it's options when
  connecting to the port. Device name and option should be separated with a
  colon. The USB device 'disk' now uses this format ('disk:usbdisk.img).
- the pciusb plugin must be linked with cdrom.o
2007-03-18 17:52:15 +00:00
Volker Ruppert
58d12d7136 - SCSI cdrom support added (untested)
- MSVC warnings fixed
- indent mode fixes
2007-03-18 15:18:02 +00:00
Volker Ruppert
a70cc33578 - USB MSD support moved to separate files and C++ object
* partial rewrite of the USB device emulation code (TODO: mouse and keypad)
  * configure.in and iodev makefile updates
  * removed old-style data structure for the USB harddisk
  * TODO: save/restore support for removable devices
- PCI USB destructor now resets all runtime parameter handlers
- set log prefix for the SCSI device
- fixed a warning in the SCSI emulation code
2007-03-18 11:17:28 +00:00
Volker Ruppert
e39769a7e8 - SCSI emulation layer moved to separate file and C++ object
(TODO: cdrom support, update workspace files)
- USB mass storage device separation continued
- device qualifier descriptor implemented
2007-03-16 18:23:13 +00:00
Volker Ruppert
55d2446fe4 - USB mass storage device support and SCSI emulation layer ported from Qemu.
USB device type 'disk' replaces the 'flash' stubs and uses the corresponding
  port option as the path to the flat image file. Successfully tested with
  OpenSUSE 10.2.
  TODO list:
    * plugging in 2 devices of the same type not supported yet
    * move all USB devices and SCSI emulation layer to separate files and C++
      objects
    * USB port runtime parameter 'optionX' should be handled in the code of the
      connected USB device
    * tests with several other guest platforms
- destructor deletes device buffer only when it exists
- handling of the USB error interrupt status bit fixed
2007-03-14 18:05:46 +00:00
Volker Ruppert
883339c458 - call bx_gui->dimension_update() in after_restore_state() if a VBE mode is
active (standard VGA and Cirrus modes don't need it, since it is handled in
  the normal screen update code)
2007-03-11 09:43:33 +00:00
Volker Ruppert
7ee4eb27af - fixed possible segfault in loopback mode #1 when using a transmit byte count
> memory size (changing variable types makes sanity checks work)
2007-03-10 15:17:31 +00:00
Volker Ruppert
e5dbe40511 - destructors added to fix memory leaks
- indent mode fixes and removed unnecessary spaces
2007-03-10 12:53:54 +00:00
Volker Ruppert
9a7930a23f - destructor now deletes the device buffer
- attempt to implement the "get max. LUN" command for mass storage devices
- removed unnecessary spaces
2007-03-05 18:09:57 +00:00
Volker Ruppert
0be7d6e5e3 - when clearing the run/stop bit, the "host halted" bit in the status register
must be set
- ignore unused bits on i/o writes
- fixed two warnings
2007-03-01 18:29:36 +00:00
Volker Ruppert
a3b352d4fd - don't abort command when setting maximum logical head number to 0 (Linux 2.6.x
kernels use this value when LBA48 support is available)
2007-02-27 18:16:20 +00:00
Volker Ruppert
8beb290f67 - NACK for invalid PS/2 mouse command must be added to the mouse queue 2007-02-25 13:18:33 +00:00
Volker Ruppert
252946be66 - initial ACPI SMBus support added (ported from Qemu, TODO: register devices,
bus transactions)
2007-02-20 09:39:06 +00:00
Volker Ruppert
4a8996153f - partial support for non-DMA mode (initial patch #1641816 by John Comeau) 2007-02-09 14:23:50 +00:00
Stanislav Shwartsman
2f9e1bee68 fixed code duplication and comments 2007-02-03 17:56:35 +00:00
Volker Ruppert
ef9c6ff8b1 - CMOS RTC index port read message type changed to BX_DEBUG 2007-01-02 16:37:11 +00:00
Volker Ruppert
d7c627fdc1 - added support for serial 3-button mouse with Mousesystems protocol 2006-12-31 11:56:14 +00:00
Volker Ruppert
795d07e90f - hard drive id now reports UDMA supported and ATA version 6
- setting transfer mode to UDMA now supported (no effect on the emulation speed)
- drive id arrays now initialized with memset()
2006-12-29 11:57:04 +00:00
Volker Ruppert
7213eae1bb - fixed some gcc 4.x warnings 2006-12-27 15:21:03 +00:00
Volker Ruppert
ee6bd95cfc - ATA/ATAPI identify device methods must now be called only one time per device in
a Bochs session unless the configuration (transfer mode) changes. Then the
  "drive id" data is simply copied to the output buffer.
- removed unused "drive id" example (Conner CFA540A)
- added stubs for the ATA flush cache commands
- converted some tabs to spaces
2006-12-26 17:08:12 +00:00
Volker Ruppert
fa43431365 - LBA48 support implemented (tested with Linux - TODO: readback of hob* values) 2006-12-25 09:34:32 +00:00
Volker Ruppert
a6d772caa7 - fixed several MSVC warnings 2006-12-19 16:42:27 +00:00
Volker Ruppert
f1799211ae - identify_drive() returns max. 16383 cylinders (higher values are usually
calculated using the total number of sectors, heads and sectors per track)
2006-12-18 17:56:05 +00:00
Volker Ruppert
9c8b9eae6a - support for VMWare version 4 disk image format implemented (patch by Sharvil
Nanavati)
- siminterface + wx code cleanup (removed unused stuff and wx log messages,
  floppy media type name handling simplified)
2006-12-17 08:17:28 +00:00
Volker Ruppert
d363ceef3b - the ATA command "verify without retries" works the same was as the normal
verify command (should fix SVR4/386 installation)
2006-12-13 16:59:29 +00:00
Alexander Krisak
5f64f48e51 Additional validation of theCmosDevice is added 2006-12-06 14:27:02 +00:00
Volker Ruppert
4314b6a911 - networking modules eth_tap and eth_tuntap fixed for OpenBSD
- removed unnecessary spaces
2006-11-23 17:21:59 +00:00
Volker Ruppert
307ca616a2 - enable BPF immediate mode (patch from SF tracker item #1597451) 2006-11-19 16:16:35 +00:00
Volker Ruppert
bf0c76ee75 - fixed remaining type conflicts in vmware lseek() method and the bxcommit utility
- the bximage and bxcommit utilities depend on hdimage.h
- removed unnecessary spaces
2006-11-19 09:55:23 +00:00
Volker Ruppert
0a174516ff - fixed type conflicts in hdimage lseek() methods. Now using always Bit64s for
the lseek() methods and off_t is only used for the lowlevel lseek() function.
- fixed indent mode and removed unnecessary spaces
2006-11-18 11:51:07 +00:00
Volker Ruppert
3dd9df62c7 - don't modify display library options parameter when splitting it into a list
of arguments
2006-11-12 18:26:58 +00:00
Volker Ruppert
e1ed0cd384 - register iodebug ports for word access only and simplify code 2006-11-01 15:44:38 +00:00
Volker Ruppert
f3bee13cad - Bochs on Solaris always needs to be linked with the socket library
- serial terminal support now enabled on Solaris
- only complain about the missing wxWidgets library if requested
2006-10-12 17:58:09 +00:00
Volker Ruppert
0b2331c1fe - sequencer register 0x07 must be initialized with 0 if cirrus extension is not
selected
- cirrus specific mem write methods don't need to be virtual
2006-10-08 15:21:26 +00:00
Volker Ruppert
f8f01db46a - replaced call of obsolete bcopy() by memcpy()
- the cfmakeraw() function is not available on all platforms (now using code
  that does the same job)
- removed useless strcpy() call
2006-10-08 10:59:21 +00:00
Volker Ruppert
c9c01954b9 - PM/SM i/o space enable control bits implemented
- ACPI debug port added
2006-10-07 08:59:15 +00:00
Stanislav Shwartsman
1aa7ae677d Small cleanup in he APIC code, removed unused methods 2006-10-02 21:49:49 +00:00
Volker Ruppert
8dfd8eefa7 - ExtINT implemented (some progress with FreeBSD 5.3 boot cd)
- fixed a warning
2006-10-02 15:08:21 +00:00
Volker Ruppert
815f2a026d - fixed compilation with ACPI disabled 2006-10-02 10:14:07 +00:00
Volker Ruppert
5d1e848a6a - SMI generation implemented (needs to be checked for SMP) 2006-10-01 19:51:49 +00:00
Volker Ruppert
0223ffdc6e - ported most of the ACPI controller capabilities from Qemu (TODO: generate SMI
on APM control port write)
2006-10-01 13:47:26 +00:00
Volker Ruppert
fb762477fa - some more basic work on the acpi device 2006-09-26 18:43:42 +00:00
Stanislav Shwartsman
aab3feb2e0 Fixed Makefile to compile with ACPI stub disabled
Remove bx_debug.h from bochs.h to reduce compilation dependencies
2006-09-25 20:13:52 +00:00
Volker Ruppert
2cdd6596f1 - implementation of the PIIX4 ACPI controller started. The code is not yet
enabled and the i/o handler only generate info messages.
2006-09-24 16:58:13 +00:00
Volker Ruppert
bf6d61de5e - experimental USB device change support added (some more work in the emulation
code may be required)
- set mouse/keypad connection status to 0 when removing device
- pciusb code now accepts "none" as the device name for an unused port
2006-09-24 10:10:21 +00:00
Volker Ruppert
93534890b0 - the USB mouse connection status no longer depends on the mouse capture status.
The connection status is now only controlled by the USB port options (TODO:
  device change support at runtime)
- a connected USB mouse now has the priority when sending mouse data from the
  gui to the emulated mouse device.
2006-09-23 12:59:57 +00:00
Volker Ruppert
1f5d311ca1 - fixed memory leaks found with valgrind when trying to start a second
simulation with wxBochs:
  * cpu: delete pageWriteStampTable array
  * devices: simplified setup of initial default i/o handlers
  * ne2k: delete ethernet module in destructor
2006-09-20 20:52:23 +00:00
Volker Ruppert
72283f6760 - delete i/o handlers before unloading plugins
- memory for i/o handler name is now dynamicly allocated (strdup's in harddrv
  code removed)
2006-09-20 18:24:17 +00:00
Volker Ruppert
26f7f49b9a - virtual timer method 'reset' renamed to 'setup' (it's doing other things than
the reset methods for devices)
- PCI register dump on exit now done in the destructor
2006-09-18 18:10:49 +00:00
Volker Ruppert
c592b9527c - deactivate device parameter handlers in destructor 2006-09-17 20:39:37 +00:00
Volker Ruppert
b8c84baddb - new PIT: exit method added to reset the timer id
- old PIT: exit method stub added and some code cleanup
- virtual timer: reset method added with basic init code from the constructor
2006-09-17 19:19:15 +00:00
Volker Ruppert
fdefdc5b9f - remove logfunction from list when device is deleted
- fixed typos in harddrv code
2006-09-17 18:09:33 +00:00
Volker Ruppert
4c1e82f18c - moved some parts of the timer init from the constructor to initialize()
- exit() method sets the number of registered timers back to 1 (or 2 if APIC
  is present)
- fixed some parameter types for save/restore
- debug message for timer registration added
- slowdown timer: exit method added to reset the timer id
2006-09-16 19:30:56 +00:00
Volker Ruppert
647b0e3e6c - removed exit() method from the devmodel object, since all that stuff can be
done by the object destructor (changes in cmos, hard drive and keyboard)
- bx_unload_plugins() now deletes the devmodel object in non-plugin mode
- CMOS device now prints the time on exit in human-readable format
2006-09-16 14:47:40 +00:00
Volker Ruppert
38caf3bf19 - allocate memory for the IRQ handler name in register_irq() and free it in
unregister_irq(). This is required since there are some devices that don't
  use a string constant for the handler name.
- replaced true / false by portable 0 / 1 values.
2006-09-13 18:51:25 +00:00
Volker Ruppert
4cf2f745d1 - some fixes to avoid segfaults after early panics
- fixed gameport log type
- wx: store mouse capture mode in the gui code (only access the mouse parameter
  when the capture mode changes)
- wx: don't initialize wxScreen if already done and clear screen on exit
2006-09-12 13:05:07 +00:00
Volker Ruppert
190b9391cf - delete the device object in the plugin_fini() function of each plugin device
(TODO: find a way to call plugin_fini() for non-core devices if plugins are
   disabled)
- set the device pointers back to stubs after unloading plugins
- added debug message "Exit" in all device plugin destructors
2006-09-10 17:18:44 +00:00
Volker Ruppert
c07197758b - plugin unload mechanism implemented in the plugin and devices code
- added exit() method to the devmodel object for devices that need to do special
  cleanups on exit. Device plugins should call this method from their plugin_fini()
  function. If Bochs is compiled without plugin support, for non-core plugins
  the exit() method is called directly from bx_unload_plugins().
- exit() method implemented in the keyboard device
- wx "Show Keyboard" feature now only appear when the wxdebug keyboard subtree
  is not empty
- cpu cleanup must be done before the devices cleanup
- moved PCI chipset dump call to the devices exit method
2006-09-10 09:13:47 +00:00
Volker Ruppert
5dd0d64b11 - several changes for restart support in wx (not yet complete)
* don't initialize cpu specific parameters for the wx debugger if they already
    exist
  * separate siminterface method init_save_restore() added
  * old wx specific handling in quit_sim() removed
  * new bx_list_c method clear() deletes all parameters from the list
  * moved devices cleanup code from the pc_system to a new devices method exit()
  * pc_system init code now sets ticksTotal to 0
2006-09-07 18:50:51 +00:00
Volker Ruppert
59962a4438 - store current mouse capture state in the device object, so Bochs no longer
needs to access the config parameter tree at each mouse move
2006-08-25 18:26:27 +00:00
Volker Ruppert
cb7db12ab2 - missing 32-bit support for the PACKET command added
- improved debug messages
2006-08-23 17:19:03 +00:00
Stanislav Shwartsman
8d7919dadd Only rename bx_pci2isa_c class 2006-08-21 21:29:16 +00:00
Volker Ruppert
1fdd8e9116 - added comment from Ben Lunt 2006-08-20 09:19:59 +00:00
Volker Ruppert
02c94648bd - kernel module init failure must always cause a panic
- unaligned read/write support for base addresses added
- guest side base addresses must always be initialized with 0
- indent mode fixes
2006-08-20 09:12:02 +00:00
Volker Ruppert
2c67881253 - don't modify the 'dev' parameter with strtok() in 'socket' mode
- removed unnecessary spaces
2006-08-18 16:57:39 +00:00
Volker Ruppert
d2d7c65e37 - VGA memory is now a part of the common video memory (same as real hardware)
- sequencer map mask bit handling simplified
- some save/restore data format changes
2006-08-18 15:43:20 +00:00
Volker Ruppert
e810c83345 - fixed VGA memory read access (correct plane access and read mode in all
memory configurations)
2006-08-17 17:06:08 +00:00
Volker Ruppert
c0bee9324d - VBE 4bpp fixes (line offset + plane address shift)
- maximum VBE screen size updated
2006-08-15 16:48:23 +00:00
Volker Ruppert
92c1720e3e - removed VGA compatibility hack from VBE code (now done in VGABIOS) 2006-08-14 20:31:18 +00:00
Volker Ruppert
cae6fcb365 - report only config control register changes to avoid logfile flooding 2006-08-12 11:22:40 +00:00
Volker Ruppert
6d50341985 - VBE video memory increased to 8 MB (new version of the LGPL'd VGABIOS under
construction)
- fixed VBE y offset check to avoid crash before panic
2006-08-09 17:52:06 +00:00
Volker Ruppert
7f3dd3a1b6 - attempt to fix the userspace part of pcidev for the current PCI infrastructure
(not tested yet)
2006-08-05 20:04:23 +00:00
Volker Ruppert
1fef72b8be - compilation fix for MacOSX 10.2 (tested on the SF compile farm) 2006-08-05 15:53:52 +00:00
Volker Ruppert
569a97d99e - fixed compile error on FreeBSD 5.4 (tested with SF compile farm) 2006-08-05 14:42:47 +00:00
Volker Ruppert
3ef9b08908 - using a unique name for ATAPI 'inquiry' makes Win98 report two cdroms on one
controller correctly in the device manager
- ATAPI 'identify' now also uses the 'inquiry' device number for the serial number
2006-08-05 07:49:31 +00:00
Volker Ruppert
f3046ae0cd - moved OSX beep implementation to the carbon gui code
- improved carbon notify callback similar to the x11 implementation
2006-08-03 16:01:23 +00:00
Volker Ruppert
df3fcfd180 - ignore writes to command register with BSY bit set and replaced BX_PANIC by
BX_ERROR
- removed duplicate and wrong BSY bit error handling
- init drive params: changed BX_PANIC to BX_ERROR (aborting command is okay here)
2006-08-02 17:47:09 +00:00
Volker Ruppert
d4219e4453 - stop paste operation after pressing a key
- removed unnecessary spaces
2006-07-30 14:40:41 +00:00
Volker Ruppert
18df6f6a0e - the ERR status bit is always cleared when the drive accepts a new command, but
not when reading the error register
- the DSC status bit is not cleared in case of an error
- a not existing drive does not set the ERR status bit and the error register
- all messages related to correctly aborted commands on non-disk devices changed
  to type BX_INFO
- some other log message output cleanups
2006-07-26 19:09:51 +00:00
Volker Ruppert
c6b080733b - fixed MSVC warning 2006-07-23 16:31:28 +00:00
Volker Ruppert
d3d8346943 - reset sent to keyboard has no effect on the 8042 (scancode translation mode)
- restore status bar indicators for the keyboard based on saved LED status
- don't reset status bar indicators in restore mode
2006-07-21 18:26:53 +00:00
Volker Ruppert
8f8c4db97d - report selected multiword DMA mode in the 'identify device' block
- set initial and reset value of multiple sector count to 0
- abort multi sector read/write commands if multiple sector count is not valid
2006-07-19 19:18:42 +00:00
Volker Ruppert
92412a3fee - multi sector read/write commands implemented
- ATA command 'set multiple mode' fixed (missing interrupt and value check)
- hard disk sector read/write rewritten and simplified
- hard disk now reporting ATA-3 supported
- updated drive buffer size for save/restore
2006-07-17 18:40:26 +00:00
Volker Ruppert
d18be4f084 - ATA command 'read multiple sectors' prepared (not working properly with Linux
guest and some work in the hdimage code is required)
2006-07-14 17:23:58 +00:00
Volker Ruppert
10a49f6d1c - fixed implementation of the ATA command "set multiple mode" (TODO: multi sector
read/write commands)
- prepared i/o buffer for multi sector transfers
- power management commands "standby now" and "idle immediate" now returning success
2006-07-13 17:34:44 +00:00
Volker Ruppert
139ea79c70 - fixed VBE y offset check (add x offset to start address after check) 2006-07-11 07:49:23 +00:00
Volker Ruppert
60fab95d08 - fixed calculation of VBE screen height after changing virtual width
- setting VBE screen start causes now a panic if the bottom of the screen
  would be outside of video memory
- improved VBE debug messages
2006-07-08 13:05:50 +00:00
Volker Ruppert
dbfc8f42c8 - always use geometry detection for 'vmware3' images
- updated documentation for hard disk images
- user.dbk: added save/restore config option and removed obsolete one
2006-06-17 07:45:27 +00:00