Commit Graph

207 Commits

Author SHA1 Message Date
Volker Ruppert
dce82d74e1 Changed bx_bool to bool type in some more devices.
TODO: parts of the display adapter and USB host controller code.
2021-02-01 20:39:33 +00:00
Volker Ruppert
b2f0f74c6a Fixed USB floppy model selection. 2021-02-01 13:41:04 +00:00
Volker Ruppert
093b274b53 Changed bx_bool to bool type in some more device and the developer doc. 2021-02-01 12:42:12 +00:00
Volker Ruppert
f9dfaf1cca Changed bx_bool to bool type in iodev.h and affected code. 2021-01-31 08:22:55 +00:00
Volker Ruppert
89522c30d8 Some more bx_bool to bool type changes.
- bx_shadow_bool_c: removed unused bitnum feature and changed data type.
- Changed return type of memory handlers to bool.
- Modified virtual timer, PIC and PIT code.
2021-01-30 23:55:24 +00:00
Volker Ruppert
8db0a2b001 Replaced the plugin init / fini functions with one single function called
plugin_entry(). The additional boolean argument "init" is used to select the
requested action. The entry points still have unique names for compatibility
with the "non-plugin" compilation. Added macros for setting up these names
(e.g. PLUGIN_ENTRY_FOR_MODULE for device plugins).
2021-01-23 12:06:11 +00:00
Volker Ruppert
127fd003cc Some more work on the Bochs plugins support.
- Added support for loading all plugins of one type using wildcard "*".
- Unloading no longer removes the plugin object. Now the member "loaded" is
  set to 0 and the type of a device plugin is reset.
- Added plugin_cleanup() function to remove plugin objects on Bochs exit.
- Some other related cleanups in the plugins code.
2021-01-08 19:04:41 +00:00
Volker Ruppert
5ffb319df1 Rewrite of the disk image mode handling. Disk image modes are now stored as
string constants instead of hardcoded values. Available modes are detected at
Bochs startup and stored in a string array before initializing options. In the
plugins case additional modes are read from the plugins list. If plugins are
off, the hdimage_locator_c registry is used. Related changes in all parts of
Bochs that need the hdimage stuff.
TODO #1: Network and sound drivers could be handled in a similar way.
TODO #2: Make disk image mode detection work again in plugins mode.
2021-01-05 21:57:13 +00:00
Volker Ruppert
518cedb602 Some more USB device fixes.
- Removed not functional secondary interface from USB keyboard / keypad.
- Fixed mouse wheel function of the USB tablet.
2020-12-23 16:07:06 +00:00
Volker Ruppert
66dfa8fc90 Two small USB device changes.
- Changing LOG_THIS symbol fixes USB device logging.
- USB HID: removed unused variable.
2020-12-22 14:09:57 +00:00
Volker Ruppert
14baa621c5 Some USB mouse fixes.
- Now all mouse events create a mouse packet in buffer (fixes slow movement).
- Fixed a warning.
2020-12-21 11:39:33 +00:00
Volker Ruppert
a96e1779ed Added buffer for mouse / tablet button events to make sure all changes are sent
to the guest. Double click are now recognized.
2020-12-21 08:31:49 +00:00
Volker Ruppert
68dd8e6e75 Some work on the USB keyboard / keypad support
- Added USB HID idle timer.
- Don't modify status indicators by default keyboard if owned by removable one.
2020-12-20 09:07:49 +00:00
Volker Ruppert
fc39da7d55 Moved paste feature and keyboard / mouse runtime handlers to the devices code.
The paste feature now basically works with the USB keyboard.
Prepared improvements for the keyboard indicator handling.
2020-12-19 11:00:36 +00:00
Volker Ruppert
c644b826f5 Some changes for the USB keyboard support.
- Added buffer for maximum 16 key events.
- PS/2 keyboard now sets the changed indicators only.
- Added support for the yellow status indicator in the win32 gui.
2020-12-16 20:04:47 +00:00
Volker Ruppert
0660b7e313 Some USB keyboard related changes.
- Added HID code for the menu key.
- Added support for the yellow status indicator in the rfb and vncsrv guis.
- Cleaned up status indicator code in SDL, SDL2 and X guis.
2020-12-16 12:24:35 +00:00
Volker Ruppert
4c81e496b6 Some work on the USB keyboard / keypad emulation.
- Unified USB keyboard and keypad code. Removed the keypad lookup table.
- Moved keyboard indicator stuff to the devices code and use it for both the
  USB and legacy keyboard device. In the USB case a different color is used.
- In the SDL, SDL2 and X guis added new status indicator color yellow. It is
  designed to be used by the USB keyboard (write flag 1 and "auto_off" flag 0).
- Added missing sysmbol to the German X11 keymap table.
2020-12-15 11:29:36 +00:00
Volker Ruppert
250215b2f7 Added USB keyboard support as an extension to the numeric keypad.
TODO #1; Add some missing HID key codes.
TODO #2: Add key event queue to avoid losing events.
TODO #3: Unify keyboard and keypad code.
TODO #4: Support multiple non-modifier keys pressed at the same time.
TODO #5: Share keyboard indicators with the legacy PS/2 keyboard.
2020-12-14 16:33:20 +00:00
Volker Ruppert
2b5ef99a56 Some work on the USB keypad support.
- Added NUMLOCK to the table of supported keys.
- Temporarily added status bar item for the keypad NUMLOCK indicator.
- TODO: Add new HID device "keyboard" with all keys supported.
2020-12-13 20:35:41 +00:00
Volker Ruppert
520ca1459e Some keyboard related changes.
- Added new devices method register_default_keyboard() and handle keyboard
  events similar to the mouse stuff.
- Prepared removable keyboard support for the "paste bytes" feature.
- Store keyboard type in device object to avoid reading parameter at runtime.
- Related code cleanups.
- TODO #1: Extend USB keypad to full featured keyboard.
- TODO #2: Paste bytes support for USB keyboard.
2020-12-12 21:27:43 +00:00
Volker Ruppert
6692664a3b Added helper function bx_split_option_list() to reduce code duplication.
It creates an array of strings from a string containing a comma separated list
of options. Now using this function for display library options, USB port
options and ROM image options.
2020-12-03 20:30:10 +00:00
Volker Ruppert
87d660e652 Fixed some MSVC warnings. 2020-11-30 08:50:22 +00:00
Volker Ruppert
6395c52286 Remove newly created packet if the TD PID is invalid. 2020-11-03 18:54:29 +00:00
Volker Ruppert
8bbcc7c65e Save / restore: renamed register methods of device cores (fixes warnings in
FreeBSD gcc 9.3).
2020-09-03 06:45:39 +00:00
Volker Ruppert
5de465b5b1 Fixed some gcc 9.3 warnings. 2020-08-06 20:21:14 +00:00
Volker Ruppert
48de31f169 If the UHCI controller is in reset mode, all reads are undefined and all writes
are invalid, except clearing the reset bit (patch by Ben Lunt).
2020-03-30 17:31:35 +00:00
Volker Ruppert
acac6ecf45 Fixed hdimage lock file handling in the USB MSD case.
- Store file name string instead of pointer to file name.
- Increased size of the info text to fix a warning,
2020-01-03 21:17:15 +00:00
Volker Ruppert
0bcc86716d Operational registers can be accessed as dwords only (from a patch by Ben Lunt). 2019-12-25 09:07:12 +00:00
Stanislav Shwartsman
49ceb971cd apply SF patch #1409 usb_msd failing to read/write requests larger than 131k 2019-12-12 18:05:20 +00:00
Stanislav Shwartsman
96e2c50bef applying SF patch #545 Speling fixes 2019-12-09 16:29:23 +00:00
Stanislav Shwartsman
d7d80aa61c apply SF patch #544 Use format specifiers in printf-based calls 2019-12-09 15:18:47 +00:00
Stanislav Shwartsman
a257f03c8b update comment in usb_xhci.h 2019-12-09 15:14:23 +00:00
Volker Ruppert
dbc8f1aa19 Fixed some warnings caused by possibly not enough space for sprintf format. 2019-11-08 13:49:48 +00:00
Stanislav Shwartsman
c830322f4c fixed cygwin gcc 7.3 warning - look like real bug ! 2018-05-27 18:33:07 +00:00
Volker Ruppert
7412ebc07b Added new macros BX_DEBUG_PCI_READ and BX_DEBUG_PCI_WRITE to unify the debug
output of PCI config space handlers.
Banshee: some PCI register fixes.
2018-05-01 15:54:37 +00:00
Volker Ruppert
ea7334bfab Sector size option implemented in the USB disk code. The sector size value must
be specified as a USB port option (e.g. 'sect_size:1024'). The values 512, 1024
and 4096 are supported. If not specified, it defaults to 512.
TODO: ATA disk (harddrv code), BIOS, bximage.
2018-03-23 19:02:38 +00:00
Volker Ruppert
e7093e74d8 Started implementing the i440BX PCI/AGP chipset.
- Added new PCI chipset choice for the i440BX AGPset. Some basic work is done,
  but AGP support is not present yet.
- Added new class for the "virtual" PCI-to-PCI bridge that should manage the
  secondary bus (AGP). Since this device must appear with device number #1 at
  the primary bus, it was required to change the PCI device numbers for the
  i440BX case. Moved the PIIX4 module to device number #7. The presence of the
  PCI base address regions now depends on the header type as expected.
- Since the Bochs BIOS cannot handle the modified PCI device layout, all tests
  continued with an external BIOS designed for this chipset (GA-6BA_F1.bin).
  This BIOS requires additional changes in some devices.
- ACPI: Return value 0 for some status registers and the GPI registers.
- CMOS: Since the PIIX4 supports a 256 byte CMOS RAM, prepared support for it
  and enable it in case a 256 byte CMOS image is used.
- PCI: The device numbers for 4 slots starting at #8. The 5th slot could be
  used for AGP when available.
2018-02-24 18:04:36 +00:00
Stanislav Shwartsman
1e35e64ec6 fixed compilation warnings 2018-02-05 16:02:53 +00:00
Volker Ruppert
50c1370216 Some work on the PCI devices code.
- Added INT pin init to method init_pci_conf().
- Moved readonly register handling to the common PCI write handler.
- Moved IRQ line reporting to the common PCI write handler.
2018-02-04 18:17:28 +00:00
Volker Ruppert
87145baf61 Rewrite of the PCI base address (BAR) handling to reduce code duplication.
- Added new structure bx_pci_bar_t that contains all parameters related to the
  PCI BARs (type, size, address and r/w handlers).
- Added new methods init_bar_io() and init_bar_mem() to set up the new structure
  in the pci device init code.
- Added new method pci_write_handler_common() to handle writes to the normal
  BARs and the ROM BAR. Writes to other registers are forwarded to the device
  specific PCI write handlers. Removed BAR and ROM BAR handling from the
  specific code.
- Added new method pci_bar_change_notify() to execute specific code after BAR
  update (vga, ne2k).
- Moved normal BAR handling to method after_restore_pci_state().
- Store pointer to PCI device name in bx_pci_device_c and use it for i/o setup.
2018-02-04 09:41:50 +00:00
Volker Ruppert
d621db4c81 USB xHCI fixes for Win 8.1 by Ben Lunt. 2017-12-09 11:18:18 +00:00
Volker Ruppert
778c0c6fed Set IOC flag only if the TD has been completed successfully (Thanks to Ben Lunt). 2017-11-25 11:18:02 +00:00
Volker Ruppert
539356ac13 Some changes and comments in the xHCI code by Ben Lunt. 2017-10-22 14:30:04 +00:00
Volker Ruppert
ea8bfca53f Two USB modifications requested by Ben Lunt.
- usb_msd.cc: The Device Qualifier is valid for high speed devices only.
- uhci_core.cc: Don't report BX_DEBUG message if the current TD belongs to an
  async operation that is still not complete.
2017-08-26 08:10:21 +00:00
Volker Ruppert
726e39f854 Some work on the USB device plugin code.
- usb_common: init_device() now splits device name and primary option before
  detecting device type.
- usb_hub: now completely handle port option in constructor.
- plugin.h: removed obsolete defines.
2017-06-01 20:04:10 +00:00
Volker Ruppert
1de56aa05e Fixed plugins case (unloading module). 2017-05-28 08:45:23 +00:00
Volker Ruppert
bd1eb0f862 Rewrite of the USB devices plugin code similar to the network driver code.
- Removed "pseudo device plugin" containing common code and all connectable
  USB devices.
- Moved USB device base class and module handling to the Bochs core.
  Now loading USB device plugins in usb_common.cc.
- Created separate plugins for each USB device implementation.
- Modified Bochs plugin system to support new plugin type PLUGTYPE_USBDEV.
- Added entries for the non-plugin case similar to the network and sound stuff.
2017-05-28 08:13:06 +00:00
Volker Ruppert
f7b1d77136 Fixed keypad event reporting.
FIXME: Keypad mouse function fails (cannot enable it as removable mouse yet).
2017-04-02 08:47:14 +00:00
Volker Ruppert
bd77824db6 Store configuration and interface values in the USB device object. 2017-04-01 10:35:38 +00:00
Volker Ruppert
e023b5896f Partial rewrite of the optional keyboard handling. Now the BX_KEY_* events are
directly sent to the optional keyboard (USB keypad). It is now independent
from the legacy keyboard and the check for supported keys is simplified. The
legacy keyboard still receives the unhandled key event, but now sent from the
common devices code.
2017-03-31 21:32:58 +00:00