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
connected device. For now this feature is only used by the 'disk' device to
specify an alternative redolog filename of some image modes.
- added new methods set_option() and timer() to the base class usb_device_c.
The timer() method is periodicly called from the HC's frame timer code.
- moved runtime device change stuff from the parameter handler to the end of
timer() methods of all hubs. This makes sure that all parameters for the
device have been set at connect time. TODO: this technique could also be used
for the floppy and cdrom media change.
* added new "pseudo device" for the USB device control (init, send message)
* moved register_state() call from the hubs to the common device init code
- fixed unresolved symbols in usb_msd code
code and the generic USB stuff. Up to now, in plugin mode each host controller
staticly links all this stuff with the plugin library. So it existed twice and
e.g. it wasn't possible to create a unique serial number for disks/cdroms
connected to different HCs. Some other sanity checks could be added now, too.
- Added a register mechanism for the USB device init function in the main
devices code.
- TODO: Some other device plugins could be fixed the same way: network devices
(sharing ethernet modules), harddrive & usb_msd (sharing hdimage and
cdrom)
- new USB device class method get_info() for improved device connect BX_INFOs
- USB printer: output file creation failure now causes BX_ERROR and disconnect
instead of BX_PANIC (similar to usb_msd)
- removed obsolete include statements
to the device and process TD repeatedly until CC is modified (fixes MSD
connected to OHCI with Linux guest)
- fixed CBP calculation and split transfer to memory when crossing the 4k
boundary (makes 8k transfers work according to the specs: fixes Win98 guest crash)
- don't enable the status bar i/o indicator if it's ID is not valid (no space
left in status bar)
- minor debug message fixes
- removed full device name from debug messages, since the device is specified
by it's prefix. Full name is only required in a BX_INFO() in init().
- removed BX_PANIC messages that will never happen
* removed old win32 runtime config dialog since the property sheet isn't
compatible with the win32 ParamDialog
* reorganized runtime parameter lists (usb and cdrom setup in device init)
* renamed win32 StartMenuDialog() to MainMenuDialog() and some related name
changes
* added runtime support to the MainMenuDialog
- win32 start/runtime menu: set keyboard focus to the start/continue button
- win32paramdlg: SetParamList() now checks for list size changes to avoid crash
- added file extension support for bx_param_filname_c
- fixed showing of tab control child lists
- added special disk menu for the win32 ParamDialog
- on win32 use the ParamDialog instead of textconfig submenus (TODO: gui dialog
replacement for the start menus
- create config parameters for USB depending of the defined number of ports
- removed obsolete comment
- bx_param_num_c flag USE_SPIN_CONTROL now available for all config interfaces
* added cdrom support in the usb_msd code (already present in the SCSI code)
* added code for deferring packets in usb_msd and the common USB code (TODO:
cancel packets by the host controller)
* added SCSI cdrom drive lock flag
- clean up SCSI request queues in destructor
- changed type of cdrom path/device parameter to const char
- moved the shared init device code to a common function
- reset hub count if the last external hub has been removed
* ported generic hub code from Qemu
* devices can be connected at runtime only with textconfig
* FIXME: wx ParamDialog doesn't like removing runtime parameters on disconnect
* TODO #1: dynanamic runtime dialog for USB on Windows
* TODO #2: code cleanup: USB code should have one static function only for
most of the init_device() code
* USB runtime options moved to a new dynamic menu
* USB host controllers create own submenus in init()
* USB runtime parameter handlers simplified
* TODO: related changes in the wx and win32dialog code
keyboard and usb_hid code to use them
- removed keyboard handling from the USB host controller code
- removed no longer needed USB stubs from the devices code
- converted removable mouse variables to a structure
- some more registers converted from struct to Bit16u / Bit32u
- some progress with save/restore support
- small interrupt handling rewrite
- report misaligned read/write access
- initialize device pointers in init()
- only connect devices in reset() if not NULL
- don't delete devices in reset_hc() to avoid segfault (update connect status
instead)
- fixed port number calculation in read handler
- fixed enabling interrupts
is already done in reset()
- init_device(): check for device connected to port before creating a new one
(OHCI and UHCI)
- update irq level after clearing status and masking interrupt (same behaviour
as the Qemu implementation)