- Added gui console support to the rfb and vncsrv guis.
- Started preparing the legacy SDL gui for console support.
- TODO: The sdl and sdl2 guis need a special keyboard handling for shifted keys.
- Moved helper function reverse_bitorder to the common gui code.
- In console_refresh() call flush() after text_update().
- Started preparing rfb, sdl, sdl2 and vncsrv gui for using the console.
- Some other small cleanups.
- vncserv.cc: Fixed sdl font issue.
- Don't check for mouse toggle event if console is active.
- Added support for blinking cursor.
- Added stubs in the gui code to reduce BX_USE_TEXTCONIG usage in x.cc.
code. Now the runtime configuration runs in the Bochs window instead of
console / xterm. The simulation screen is restored when the
simulation continues. This feature can be implemented for all guis
without gui dialog box support (e.g. sdl2/sdl2 on non-win32 platforms, rfb).
- Added new symbol BX_SYNC_EVT_LOG_DLG and method log_dlg() in siminterface to
handle the cases "ask", "warn" and "quit".
- Added support to change action from "warn" to "report in the "warn" dialog
(sdl2, win32 and wx).
- TODO: Add quit message box for the log action "fatal" and add BX_FATAL()
macro for all cases where continuing after BX_PANIC would be dangerous.
- Rewrite of the existing yes/no dialog to support more button options. Now it
can be used with OK/Cancel buttons or as a simple message box with OK or
Cancel. This message box that can be used to show error messages with a
new action "warn" or for critical panics when continuing would be dangerous
("BX_FATAL"). These features are not implemented yet.
- Partial rewrite of the button handling code (e.g. new method add_button()).
- some malloc/free to new/delete changes.
- 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.
- vgacore: double font and screen width at half dot clock.
- X gui: improved font bitmap generation to support width > 9.
- win32 gui: adjust values to use existing stretching feature.
- guis rfb, sdl, sdl2, vncsrv and wx: double pixels if font width > 9.
- Add a special list to the MSD state and add pointers to the runtime-only
options for the cdrom. The restore handler of this list calls runtime_config()
to make sure the media path and status are correctly updated.
- Registering a runtime config handler for the USB cdrom is not necessary since
runtime_config() is always called from the hub it is connected to.
- Restore a string parameter value only if it's different from the initial one.
with devices conected at runtime.
- Added restore handler support for the bx_list_c class. If a handler is
registered, it will be called after restoring all of the list's members.
- USB hub: add special lists to the port state and add pointers to the
runtime-only options for each port. The restore handler of this list calls
init_device() to make sure all connected devices can be restored.
- Call restore_logopts() after restoring hardware to make sure all saved
modules have been created.
- TODO: the USB cdrom also needs a fix for it's runtime-only options.
- 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.
- Force a status bar update after unregistering an item.
- Added status indicators for USB disk and cdrom.
- Handle USB device disconnect in the runtime config handler, too.
devices like USB disk, cdrom or floppy. Using this feature for the new USB
floppy. Removed static indicators for port activity from the USB HC code.
TODO: Implement status LEDs for USB disk and cdrom.
- Beep thread now only started one per simulation.
- Added some more multithreading macros and use them in rfb, vncsrv and soundmod.
- TODO: implement mixer thread and remove beep thread.
- Added framework for polling wave data and use it for beep output in sdl.
- Some work in the beep thread code (to be continued).
- Moved macros required for multithreading to bochs.h.
- If the mouse is captured, use ClipCursor() to keep the cursor in the window.
- After handling mouse motion event in relative mode, move the cursor back to
the window center (similar to other guis).
- feature implemented in the wxWidgets gui
- feature not required for legacy SDL (releases keys on focus change)
- removed duplicate code in keyboard.cc
- TODO: implement feature in the win32 gui if required
The timers now have a new member 'realtime' and they are driven by the
selected engine. The VGA update timer and the status LED timer now always use
the realtime mode, but the PIT and CMOS RTC depend on the clock options.
implemented important CPU statistics which were used for Bochs CPU model performance analysis.
old statistics code from paging.cc and cpu.cc is replaced with new infrastructure.
In order to enale statitics collection in Bochs CPU:
- Enable statistics @ compilation time in cpu/cpustats.h
- Dump statistics periodically by adding -dumpstats N into Bochs command line
the init code. Started with the SeeReg[] array values. Some other setting could
be added later. The parser code is based on the slirp config parser.
Slirp: fixed possible segfault if the value for a parameter is missing.
gui init and string paramter handler. The shortcut keys are now stored in an
array of BX_KEY* values in the gui object.
siminterface.h: Fixed some default return values.
- added new symbol BX_WITH_SDL2 and prepared build system
- TODO #1: add new option --with-sdl2 to configure script
- TODO #2: add new file sdl2.cc (porting seems hard to do - writing from scratch
might be better)
- don't try to resize the simulation window if minimized (iconic)
- handle window size correction in the gui event handler and by calling
resize_main_window(FALSE), since fullscreen mode is not always required
- fixed screen flickering after entering fullscreen for the second time
- now using resize_main_window() directly for leaving fullscreen mode
- dimension_update() now only used for guest display mode change
- TODO: more testing to find cases that can make Bochs crash
- moved fullscreen mode enable/disable stuff to a new function
- now only use dimension_update() for leaving fullscreen mode
- fixed fullscreen issues in text mode
- TODO: check if guest display is too large and add a proper handling for this case
- changing from window mode to fullscreen and back now looks okay
- changing guest resolution in fullscreen mode now also works
- TODO #1: rewrite of the window / fullscreen code to avoid using dimension_update()
to toggle the internal mode
- TODO #2: add size checks in dimension_update() to avoid crash. We could panic
at this point or compress screen to desktop size.
- send lost ALT keyup event after closing notification message box
- disable border of simulation window in fullscreen mode
- TODO #1: fix window sizes after leaving fullscreen mode
- TODO #2: add screen size checks to avoid crash
This fixes the floppy malfunction after restore and maybe other issues. The
buggy code failed to clear the DMA controller mask bits and the floppy DMA
requests never arrived at the CPU.
- device prefix size needed update, but now using log function name instead
- don't use overlapping strcpy() (increment pointer and one single strcpy())
- now using get_logfn_id() to simplify code
TODO: fix floppy access failure after restore
- embedding combined manifest makes BOCHS.EXE usable
- list of DLL plugins now depends on the pci and debugger options
- 'make clean' now removes the generated manifest files
- renamed variable for external rules
- documentation update
terminates the simulation with fatal().
X11 ask dialog: increase string size for device prefix.
TODO: the "format string vulnerability" in fatal() is still not fixed.
sections. A better solution must be found for the basic set of device plugins
in iodev that don't require special rules.
Switched back to the original gui macro naming for linking plugins.
rules can be built now (keyboard, pit, gameport, serial, vga, svga_cirrus,
hdimage, netmod, soundmod, usb_common). The generated DLLs are usable with the
BOCHS.EXE built with the IDE, but the nmake won't work at all yet.
- bx_param_string_c method isempty() didn't work for raw byte strings. Now using
it to check whether or not the current value matches the initial one. The
parameter handling of the network adapters now use this method to check if
the MAC address is already initialized to avoid incorrect BX_ERRORs.
- small documentation update
- added new class LogViewDialog based on the already removed DebugLogDialog
- log output is only sent to the viewer if visible to avoid performance trouble
- text buffer is limited to 48k, older lines are removed if necessary
- red text color is used for error and panic messages and black for others
- minor related code cleanups
for watching the log output at simulation time. This feature has been prepared
and described in the code (BX_ASYNC_EVT_LOG_MSG), but it was never implemented.
A viewer window could be implemented easily in wx. The gui debugger could also
have an option to view the log output while debugging.
- moving ToggleMouse() call to the gui thread fixes two issue: possible deadlock
in wxGTK after showing message box, mouse cursor not hidden in wxMSW
- don't add undefined toolbar events to the queue
- removed unused / unhandled cases from the toolbar code
- in wx we had two logfunctions for the siminterface (removed duplicate init)
- renamed siminterface prefix to "SIM"
- moved variable "pluginlog" to the plugin interface
- fixed / removed some forward declarations
- disable most of the buttons if no simulation is running
- save/restore button calls restore function at configuration time
- disable code related to the config button
- send wheel data to the PS/2 mouse emulation (wx mouse wheel support works now)
- show selected mouse toggle method in toolbar help and message box
- added capability to start the simulation with the power button