Commit Graph

317 Commits

Author SHA1 Message Date
Volker Ruppert
050de9ef04 - use the bochsrc path for the initial directory of the win32 file dialogs
- runtime config: update the options of the modified tab items only
- removed brackets from the device prefixes in the log options listbox
2004-02-04 19:54:58 +00:00
Volker Ruppert
c3d9a977f8 - new symbol BX_USE_TEXTCONFIG controls the presence of the text mode configuration
interface. It should be set to 1 unless Bochs is compiled for wxWindows only.
- 'user_shortcut' is now available at runtime (wx version only)
2004-01-29 18:50:33 +00:00
Daniel Gimpelevich
6c26e6a65f Introduced Frank Cornelis's PCIDEV patch. 2004-01-15 02:08:37 +00:00
Michael Brown
299947f64f Added the PCI Pseudo-NIC (pnic). Mainly useful for running Etherboot
inside Bochs.
2004-01-13 19:21:21 +00:00
Christophe Bothamy
4374561364 - comment out compressed disk references, as they interfere with wx.
- Enable/disable the redolog path field in the wx config interface,
  depending on the selected disk image type.
2004-01-05 22:18:01 +00:00
Volker Ruppert
84c1e3ed15 - bx_param_num_c: new flag USE_SPIN_CONTROL controls whether a spin control should
be used instead of a simple text control (implemented in wx)
- the new flag USE_SPIN_CONTROL is used by the memory size and the irq parameters
- special bx_list_c for the "Other options" menu in the wx configuration added
2003-09-05 22:07:54 +00:00
Volker Ruppert
e7e5f1b518 - bx_param_c: formerly unused member 'runtime_param' now indicates parameters
available at runtime
- wx: 'runtime' flag added to ParamDialog. If this flag is set, all options
  with the flag 'runtime_param' clear will be disabled.
- only the runtime options for cdrom's are now enabled in the ATA dialogs at runtime
- the options 'keyboard paste delay', 'mouse' and 'vga update interval' are now
  available at runtime
- wxdialog.h: unnecessary comments removed
2003-09-02 19:34:48 +00:00
Volker Ruppert
3d28df0b78 - new methods set_label() and get_label() for text menus and gui dialogs
- ParamDialog now uses get_label() instead of get_ask_format()
2003-08-30 11:21:56 +00:00
Christophe Bothamy
a6f0158745 - add possibility to have both sync method active at the same time 2003-08-26 20:24:36 +00:00
Volker Ruppert
63e67d7bcc - ParamDialog: support for bx_param_string_c::RAW_BYTES added (grabbed from textconfig.cc)
- bx_param_string_c: new methods get_separator() and get_maxsize()
2003-08-25 15:21:19 +00:00
Volker Ruppert
d29016ff20 - loader hack definitions moved from bochs.h to siminterface.h
- ParamDialog::EnumChanged(): hard disk mode item added, loader hack stuff added
- dependent_list for the ne2k options added
2003-08-24 10:08:49 +00:00
Volker Ruppert
be5bd5dca4 - wx: most of the config dialogs are now generated from a parameter list
- new bx_list_c for keyboard options (used in wx, TODO in textconfig)
- new flag USE_BOX_TITLE controls the usage of the list name for the group box label
- wxdialog.cc: unused variable removed
2003-08-23 15:28:06 +00:00
Christophe Bothamy
4942684e51 - remove unused "split" disk mode
- fix value displayed in wx for clock.time0 parameter
2003-08-22 01:00:58 +00:00
Christophe Bothamy
e555765d75 - add a "clock: sync=[none|slowdown|realtime], time0=[timeValue|local|utc]"
- pit: and time0: options are still supported but deprecated
- warn when parsing deprecated directives
- fix wrong number of ata_device_translation_names
- still to do:
  - setting time0 to utc is not yet supported
  - the man page, user guide and .bochsrc still need to be updated
    with the new options
2003-08-19 00:10:39 +00:00
Christophe Bothamy
1583a2ebb2 - add ATA device parameters access macros
- add handlers called when a parameter is enabled or disabled.
  This is useful for parameter dependent on another, that may
  not wish to be enabled when its father parameter is enabled.
2003-08-09 22:17:38 +00:00
Christophe Bothamy
974d3538a1 - change disk image mode name "growable" to the more accurate "growing" 2003-08-01 01:20:00 +00:00
Volker Ruppert
04ad96b585 - don't wait for the 'enter' key on the win32 console if the user has pressed
the power button or has chosen "kill simulation" in the "ask" dialog
2003-05-27 18:19:13 +00:00
Christophe Bothamy
f43d2fe3e9 - backport of the BRANCH_HARDDISK_MODES to the main branch.
You can now choose for each disk on the ata interfaces the
  disk mode, between :
    - flat : one file flat layout
    - concat : multiple files layout
    - external : developer's specific, through a C++ class
    - dll : developer's specific, through a DLL
    - sparse : stackable, commitable, rollbackable
    - vmware3 : vmware3 disk support
    - undoable : flat file with commitable redolog
    - growable : growing file
    - volatile : flat file with volatile redolog
    - z-undoable : gziped flat file with commitable redolog
    - z-volatile : gziped flat file with volatile redolog
  A new "bxcommit" utility can merge commitable redologs to
  flat images.
2003-05-03 16:37:18 +00:00
Christophe Bothamy
579f3c0539 - apply Ben Lunt's 160k, 180k, 320k floppy patch 2003-02-06 23:16:56 +00:00
Volker Ruppert
f25a3df39b - added minimal USB support (patch from Ben Lunt <fys@cybertrails.com>, updated
and improved by Christophe Bothamy and Volker Ruppert)

Comment from the author:

Attached is a "patch" file detailing what you need to do
to add USB support (UHCI only for now) to your existing
Bochs (2.0.xx) source code.

I use Win32 and VC++ but the source and modifications
should be platform and compiler independant.

Please let me know if this patch some how breaks the
build process of your compilation (Bochs 2.0.0 or above
only).

I would also like any feedback on how this code works
(or doesn't work) on your platform and within your
images. If you explain in as much detail as you can on
how it did or did not work, I will try to add to the source
to help it work on all platforms and images.
2003-01-28 16:58:10 +00:00
Bryce Denney
6a44ca37ed Patch name: patch.carbon-startup
Authors: Br'fin, Bryce

- for MacOSX/Carbon, if you start the app by double clicking in the finder,
  there is no text console.  So in logfunctions::fatal(), display the
  final message in a Carbon dialog instead of using fprintf.
- in the text-mode config interface, return an error code if the
  user tries to use the text menus when there's no text console.
  Back in bxmain() this error code causes a panic
  "Bochs needed the text console, but it was not usable"
- if a config file was not found, normally we turn off quick start
  and drop into the text menus.  However in the no-console case the
  text menus won't work, so we added a panic: Unable to start Bochs
  without a bochsrc.txt and without a text console.  This is a much
  more useful error than the generic one above.
- removed ensure_text_console() which was making matters worse instead
  of better.

Modified Files:
  logio.cc main.cc gui/siminterface.cc gui/siminterface.h gui/textconfig.cc
2002-12-17 05:58:45 +00:00
Gregory Alexander
d90c6636ff Added support for a PASS log level. This probably
isn't complete, but it hopefully will do the job.
2002-12-17 03:36:53 +00:00
Bryce Denney
6b21b27e60 - BX_EXIT(exitcode) is called in several places, but the exitcode has been
completely ignored and Bochs has always been returning 0.  Now Bochs should
  exit with the proper exit code.
- implementation: BX_EXIT(exitcode) calls SIM->quit_sim(exitcode).
  quit_sim stores the exit code in the SIM object, then uses longjmp
  to unwind the stack and return to main().  main() calls
  SIM->get_exit_code() to retrieve the exit code and returns it.
- If you are wondering why we don't just call exit(exitcode), it is
  because in the wxWindows interface all of the CPU simulation runs as one
  thread while the user interface runs as another thread.  With the longjmp
  technique the simulation thread ends cleanly and it is possible to
  start a new simulation thread without making a new process.
2002-12-16 06:43:02 +00:00
Bryce Denney
8de8ca24b9 - when changing the physical cdrom at runtime, Bochs would eject, insert,
eject, insert, eject, etc. several extra times before allowing you to
  actually change the CD.  The extra insert/eject cycles were coming from the
  param handlers for cdrom status and for the cdrom pathname.  To fix this, I
  changed wxdialog.cc and textconfig.cc to only call set() on parameters if
  they are different from the original value.  Now it generally does what you
  would expect.
- to change physical CD: change the Bochs CD status to "ejected". On some OSes
  that will actually eject it, but on others it will simply close the file so
  that the eject button will actually work.  Then put the new CD into the
  drive, and change the Bochs CD status to "inserted".

Modified Files:
  main.cc gui/siminterface.cc gui/siminterface.h
  gui/textconfig.cc gui/wxdialog.cc
2002-12-12 18:31:20 +00:00
Gregory Alexander
44e58663bc Working on a testing framework for bochs.
Added an option to do a BX_PANIC when the display
matches a previously recorded text snapshot.
2002-12-12 06:21:43 +00:00
Bryce Denney
16ebed0b1e - since Christophe added the four-ata patch, it is possible to boot from
the first hard drive or first cdrom drive no matter where they are found.
  Now the wxWindows interface recognizes this fact.  It allows you to
  select HD boot if there is a hard drive in any ATA location, and
  select CDROM boot if there is a cdrom in any ATA location.
- this fixes bug [ 616139 ] wx: boot hd/cd must be in ata0 interface

Modified Files:
  gui/siminterface.cc gui/siminterface.h gui/wxmain.cc
2002-12-07 19:43:53 +00:00
Bryce Denney
87f1f3a2e0 Apply patch.safe-fullscreen. Comments from the patch follow:
This fixes bug #614724: SDL can get stuck in full-screen mode, and provides
a framework for fixing the problem on other full-screen display libraries
such as term, svga, etc.

- add virtual method bx_gui::set_display_mode(mode) which can be overridden
  by each display library class, if appropriate.  This method is primarily
  used when you run Bochs full screen, to tell the gui to switch from full
  screen back to a mode where you can use the text console.
- There are two display modes: config and simulation.  The mode is changed to
  config mode during logfunctions::ask, during the runtime configuration menu,
  and before displaying a debugger prompt.  It is changed back to simulation
  mode whenever instructions are running.
- Instead of being called directly through the global bx_gui pointer, the
  bx_gui_c::set_display_mode() method is almost always accessed through
  siminterface, like this:
    SIM->set_display_mode (DISP_MODE_CONFIG);
    SIM->set_display_mode (DISP_MODE_SIM);
  Of course siminterface just passes the call on to bx_gui::set_display_mode().
  I added it to siminterface so that the config interfaces could call it.
  (They don't #include bochs.h so they can't access bx_gui.)

Modified Files:
  logio.cc main.cc debug/dbg_main.cc gui/gui.h gui/sdl.cc
  gui/siminterface.cc gui/siminterface.h
2002-12-06 19:34:32 +00:00
Christophe Bothamy
12f8aec60f - implement feature request [ 629068 ] make a way to log debug output to file
there is one more option in the configuration file "debugger_log"
  if the debugger is compiled in, all debugger output will be also
  written to this file.  Note: wxWindow config interface is not updated yet
2002-12-02 21:26:05 +00:00
Bryce Denney
eff7720ae7 This fixes bug #640549: dbg fails if wx configured but not on.
- The Bochs debugger uses BX_WITH_WX to decide to change to wxWindows debugger
  behavior: sending a synchronous message to the config interface to get a new
  command, sending all dbg_printf output to the config interface, deciding
  whether to trap control-C, etc.  But now that it's possible to compile with
  BX_WITH_WX and BX_WITH_other_things, this isn't quite right anymore.  With
  this change, we now use calls to a new method SIM->is_wx_selected() to decide
  which behavior to use.  This method is equivalent to checking if the display
  library variable is set to "wx", but it's implemented in such a way that it
  only has to check a boolean for each call to SIM->is_wx_selected().
- in siminterface.cc, init some local variables to 0 to avoid compile
  warnings.

Modified Files:
  debug/dbg_main.cc gui/siminterface.cc gui/siminterface.h
2002-11-19 09:27:39 +00:00
Volker Ruppert
35c2be5518 - changed ne2k presence options from "valid" to "present" 2002-11-18 17:16:07 +00:00
Bryce Denney
515ffa8ecc - add BOCHSAPI_CYGONLY to insert DLL export tags in places that only Cygwin
wants them.
- modified: bochs.h config.h.in gui/siminterface.h
2002-11-15 18:31:55 +00:00
Bryce Denney
1bd7226b6f - change definition of BX_QUICK_START and friends into an enum, and
add more detailed comments about what they do.
2002-11-15 13:22:06 +00:00
Bryce Denney
09dc13d0f8 - add BOCHSAPI on a bunch of extern variable declarations 2002-11-14 05:14:10 +00:00
Christophe Bothamy
81eca54b51 - fix [ 625696 ] text config menu: default can be wrong.
New behaviour is:
  . No command line arg (user want to load or create a new conf file)
    -> no .bochsrc is loaded
    -> defaults to "2. Read options from..."
  . command line arg -q (user want to quick start from .bochsrc)
    -> .bochsrc is loaded
      -> if found Run the simulation
      -> if not found defaults to "2. Read options from..."
  . command line arg -f (user want to edit a conf file)
    -> conf file is loaded
      -> if found defaults to "3. Edit options"
      -> if not found defaults to "2. Read options from..."
  . command line arg -qf (user want to quick start from a conf file)
    -> conf file is loaded
      -> if found Run the simulation
      -> if not found defaults to "2. Read options from..."
  . After selection of "2. Read options from..."
    -> defaults to "5. Begin simulation"
- fix "enable-control-panel" behaviour in configure.in.
- check if a romimage was supplied in the conf file.
  If not, print a hint about a missing/corrupt conf file.

  I hope I did not break anything, notably the Carbon gui
2002-11-09 14:12:10 +00:00
Bryce Denney
c6d6b17c9a - fix wxWindows on win32, which was broken when we added plugin support.
- add a new global struct bx_startup_flags which stores argc,argv and
  when necessary, the WinMain arguments hInstance, hPrevInstance, etc.
  The new struct is defined in gui/siminterface.h because it is needed in
  both the main.cc code and in wxmain.cc and textconfig.cc (which don't
  include bochs.h).
- rename main() to bxmain() and create new main() and WinMain().
  main() and WinMain() just fill in the bx_startup_flags and then
  call bxmain().  Only one is defined at a time, of course.
- so far, WinMain is ONLY used when compiling with wxWindows on win32.
  It may be useful in other contexts as well, but I don't want to enable
  it in any other situation without some serious testing of different
  configurations.
- modified:
    main.cc gui/siminterface.cc gui/siminterface.h
	gui/textconfig.cc gui/wxmain.cc
2002-11-01 15:19:48 +00:00
Gregory Alexander
fc61a0522a Added support for run-time configuration of realtime PIT. 2002-10-29 22:26:32 +00:00
Christophe Bothamy
814d8b69ef - add "none", "lba", "rechs", "large", "auto" translation
- if translation=auto :
  . translation=none if cylinders <=1024 and heads <=16
  . translation=large if cylinders * heads <= 131072
  . transaltion=lba otherwise
- changes default translation value to "auto"
- add example in .bochsrc
2002-10-27 21:25:33 +00:00
Bryce Denney
cec9135e9f - Apply patch.replace-Boolean rev 1.3. Every "Boolean" is now changed to a
"bx_bool" which is always defined as Bit32u on all platforms.  In Carbon
  specific code, Boolean is still used because the Carbon header files
  define it to unsigned char.
- this fixes bug [ 623152 ] MacOSX: Triple Exception Booting win95.
  The bug was that some code in Bochs depends on Boolean to be a
  32 bit value.  (This should be fixed, but I don't know all the places
  where it needs to be fixed yet.)  Because Carbon defined Boolean as
  an unsigned char, Bochs just followed along and used the unsigned char
  definition to avoid compile problems.  This exposed the dependency
  on 32 bit Boolean on MacOS X only and led to major simulation problems,
  that could only be reproduced and debugged on that platform.
- On the mailing list we debated whether to make all Booleans into "bool" or
  our own type.  I chose bx_bool for several reasons.
  1. Unlike C++'s bool, we can guarantee that bx_bool is the same size on all
     platforms, which makes it much less likely to have more platform-specific
     simulation differences in the future.  (I spent hours on a borrowed
     MacOSX machine chasing bug 618388 before discovering that different sized
     Booleans were the problem, and I don't want to repeat that.)
  2. We still have at least one dependency on 32 bit Booleans which must be
     fixed some time, but I don't want to risk introducing new bugs into the
     simulation just before the 2.0 release.

Modified Files:
    bochs.h config.h.in gdbstub.cc logio.cc main.cc pc_system.cc
    pc_system.h plugin.cc plugin.h bios/rombios.c cpu/apic.cc
    cpu/arith16.cc cpu/arith32.cc cpu/arith64.cc cpu/arith8.cc
    cpu/cpu.cc cpu/cpu.h cpu/ctrl_xfer16.cc cpu/ctrl_xfer32.cc
    cpu/ctrl_xfer64.cc cpu/data_xfer16.cc cpu/data_xfer32.cc
    cpu/data_xfer64.cc cpu/debugstuff.cc cpu/exception.cc
    cpu/fetchdecode.cc cpu/flag_ctrl_pro.cc cpu/init.cc
    cpu/io_pro.cc cpu/lazy_flags.cc cpu/lazy_flags.h cpu/mult16.cc
    cpu/mult32.cc cpu/mult64.cc cpu/mult8.cc cpu/paging.cc
    cpu/proc_ctrl.cc cpu/segment_ctrl_pro.cc cpu/stack_pro.cc
    cpu/tasking.cc debug/dbg_main.cc debug/debug.h debug/sim2.cc
    disasm/dis_decode.cc disasm/disasm.h doc/docbook/Makefile
    docs-html/cosimulation.html fpu/wmFPUemu_glue.cc
    gui/amigaos.cc gui/beos.cc gui/carbon.cc gui/gui.cc gui/gui.h
    gui/keymap.cc gui/keymap.h gui/macintosh.cc gui/nogui.cc
    gui/rfb.cc gui/sdl.cc gui/siminterface.cc gui/siminterface.h
    gui/term.cc gui/win32.cc gui/wx.cc gui/wxmain.cc gui/wxmain.h
    gui/x.cc instrument/example0/instrument.cc
    instrument/example0/instrument.h
    instrument/example1/instrument.cc
    instrument/example1/instrument.h
    instrument/stubs/instrument.cc instrument/stubs/instrument.h
    iodev/cdrom.cc iodev/cdrom.h iodev/cdrom_osx.cc iodev/cmos.cc
    iodev/devices.cc iodev/dma.cc iodev/dma.h iodev/eth_arpback.cc
    iodev/eth_packetmaker.cc iodev/eth_packetmaker.h
    iodev/floppy.cc iodev/floppy.h iodev/guest2host.h
    iodev/harddrv.cc iodev/harddrv.h iodev/ioapic.cc
    iodev/ioapic.h iodev/iodebug.cc iodev/iodev.h
    iodev/keyboard.cc iodev/keyboard.h iodev/ne2k.h
    iodev/parallel.h iodev/pci.cc iodev/pci.h iodev/pic.h
    iodev/pit.cc iodev/pit.h iodev/pit_wrap.cc iodev/pit_wrap.h
    iodev/sb16.cc iodev/sb16.h iodev/serial.cc iodev/serial.h
    iodev/vga.cc iodev/vga.h memory/memory.h memory/misc_mem.cc
2002-10-25 11:44:41 +00:00
Bryce Denney
5e520261db Add plugin support to Bochs by merging all the changes from the
BRANCH_PLUGINS branch!

Authors:
  Bryce Denney
  Christophe Bothamy
  Kevin Lawton (we grabbed a lot of plugin code from plex86)
Testing help from:
  Volker Ruppert
  Don Becker (Psyon)
  Jeremy Parsons (Br'fin)

The change log is too long to paste in here.  To read the change log, do
  cvs log patches/patch.final-from-BRANCH_PLUGINS.gz

All the changes and a detailed description are contained in a patch
called patch.final-from-BRANCH_PLUGINS.gz.  To look at the complete
patch, do
  cvs upd -r1.1 patches/patch.final-from-BRANCH_PLUGINS.gz

Then you will have a local copy of the patch, which you can gunzip and
play with however you want.

Modified Files:
    .bochsrc Makefile.in aclocal.m4 bochs.h config.h.in configure
    configure.in gdbstub.cc logio.cc main.cc pc_system.cc
    pc_system.h state_file.h bios/Makefile.in bios/rombios.c
    cpu/Makefile.in cpu/access.cc cpu/apic.cc cpu/arith16.cc
    cpu/arith32.cc cpu/arith8.cc cpu/cpu.cc cpu/cpu.h
    cpu/ctrl_xfer32.cc cpu/exception.cc cpu/fetchdecode.cc
    cpu/fetchdecode64.cc cpu/flag_ctrl.cc cpu/flag_ctrl_pro.cc
    cpu/init.cc cpu/io.cc cpu/logical16.cc cpu/logical32.cc
    cpu/logical8.cc cpu/paging.cc cpu/proc_ctrl.cc
    cpu/protect_ctrl.cc cpu/segment_ctrl_pro.cc cpu/shift16.cc
    cpu/shift32.cc cpu/stack64.cc cpu/string.cc cpu/tasking.cc
    debug/Makefile.in debug/dbg_main.cc disasm/Makefile.in
    doc/docbook/user/user.dbk dynamic/Makefile.in fpu/Makefile.in
    gui/Makefile.in gui/amigaos.cc gui/beos.cc gui/carbon.cc
    gui/control.cc gui/control.h gui/gui.cc gui/gui.h
    gui/keymap.cc gui/keymap.h gui/macintosh.cc gui/nogui.cc
    gui/rfb.cc gui/sdl.cc gui/sdlkeys.h gui/siminterface.cc
    gui/siminterface.h gui/term.cc gui/win32.cc gui/wx.cc
    gui/wxdialog.cc gui/wxdialog.h gui/wxmain.cc gui/wxmain.h
    gui/x.cc gui/keymaps/sdl-pc-de.map gui/keymaps/sdl-pc-us.map
    gui/keymaps/x11-pc-de.map instrument/example0/instrument.h
    instrument/example1/instrument.h
    instrument/stubs/instrument.cc instrument/stubs/instrument.h
    iodev/Makefile.in iodev/biosdev.cc iodev/biosdev.h
    iodev/cdrom.cc iodev/cmos.cc iodev/cmos.h iodev/devices.cc
    iodev/dma.cc iodev/dma.h iodev/eth_fbsd.cc iodev/eth_linux.cc
    iodev/eth_null.cc iodev/eth_tap.cc iodev/floppy.cc
    iodev/floppy.h iodev/guest2host.cc iodev/guest2host.h
    iodev/harddrv.cc iodev/harddrv.h iodev/iodebug.cc
    iodev/iodebug.h iodev/iodev.h iodev/keyboard.cc
    iodev/keyboard.h iodev/ne2k.cc iodev/ne2k.h iodev/parallel.cc
    iodev/parallel.h iodev/pci.cc iodev/pci.h iodev/pci2isa.cc
    iodev/pci2isa.h iodev/pic.cc iodev/pic.h iodev/pit.cc
    iodev/pit.h iodev/pit_wrap.cc iodev/pit_wrap.h iodev/sb16.cc
    iodev/sb16.h iodev/scancodes.cc iodev/scancodes.h
    iodev/serial.cc iodev/serial.h iodev/slowdown_timer.cc
    iodev/slowdown_timer.h iodev/unmapped.cc iodev/unmapped.h
    iodev/vga.cc iodev/vga.h memory/Makefile.in memory/memory.cc
    memory/memory.h memory/misc_mem.cc misc/bximage.c
    misc/niclist.c
Added Files:
    README-plugins extplugin.h ltdl.c ltdl.h ltdlconf.h.in
    ltmain.sh plugin.cc plugin.h
2002-10-24 21:07:56 +00:00
Bryce Denney
8047b68ba2 - in a recent revision, I made bx_param_num_c::get() return a 64 bit
value instead of a 32 bit value.  Unfortunately there were many uses
  of bx_param_num_c::get() which depended on its size, and they were
  all broken by this change.  So in this rev I am changing get() to
  return a 32bit unsigned again.  If you really want a 64bit value (which
  is quite rare) you should call get64() instead.
- modified: gui/siminterface.h gui/siminterface.cc
2002-10-21 01:05:53 +00:00
Bryce Denney
f6c637aa8a - upgrade bx_param_num to use 64 bit values, so that I could make
bx_shadow_num_c able to handle pointers to 64 bit values.  This
  allows x86-64 and wxWindows to coexist.
- I had a number of duplicate constructors for bx_shadow_num_c,
  with an without the description arg.  I eliminated the ones
  that had no description, and also removed the min/max arg from
  all.  I still need a bunch of constructors though, for
  Bit64u*, Bit64s*, Bit32u*, Bit32s*, Bit16u*, Bit16s*, Bit8u*, Bit8s*.
  Having all these constructors allows us to write
    new bx_shadow_num (bxid, name, description, &value)
  for basically any integer variable.  They are all handled by the same class.
- these changes led to minor touchups in cpu/init.cc and iodev/keyboard.cc
- modified:
    configure main.cc cpu/init.cc iodev/keyboard.cc
    gui/siminterface.cc gui/siminterface.h
2002-10-16 19:39:27 +00:00
Bryce Denney
346e2747d3 - fixed up ParamDialog to correctly handle "trees" of parameters. A
bx_list_c can now be displayed as either a wxStaticBox with the
  child parameters inside, or as a wxNotebook with each child
  parameter in a separate tab.  (The children can also be lists of
  course.)  The default display is the wxStaticBox type, but if you
  set the option bit bx_list_c::USE_TAB_WINDOW in the list,
  ParamDialog will use the wxNotebook display instead.
- to get the param trees working, I created a new struct
  AddParamContext, which is passed to AddParam().  This struct is
  critical when AddParam calls itself recursively to display lists
  within lists.
- use the wxNotebook display feature for the ATA0,1,2,3 controller
  dialog box.  Now instead of being hundreds of pixels tall, it is
  reasonable height with three different tabs.  This fixed bug
  #619074: "wx: ATA interface editor too tall" and was the whole
  reason I started messing with this at all.

plus some minor cleanups
- when I added the enum constant bx_list_c::USE_TAB_WINDOW, I also
  removed the BX_ prefix from all the other enum constants that are
  used in parameter options in siminterface.cc.  Since these constants
  are enums within a class, there is no possibility of namespace
  conflicts so the prefix is not needed.
- added wxADJUST_MINSIZE to all wxChoice controls, since that tells
  wxWindows to adjust its size to the length of the longest string.
- instead of calling SetSize or SetSizeHints on every textcontrol with
  a hardcoded width, I am using just two wxSize specifications for
  everything: either normalTextSize or longTextSize.
- edit names of a few menus and params.  For example now instead of
  the tab saying "Master ATA device on channel 0" it will say
  "First HD/CD on channel 0".

Modified Files:
  main.cc gui/control.cc gui/gui.cc gui/siminterface.cc gui/siminterface.h
  gui/wxdialog.cc gui/wxdialog.h gui/wxmain.cc
2002-10-06 02:37:28 +00:00
Bryce Denney
fdadda0ba8 - remove tabs 2002-10-05 23:11:59 +00:00
Bryce Denney
e6e2c08809 - make parse_bochsrc return -1 if any parse errors occur.
- make bx_init_main return -1 if any parse errors occur.
- wxWindows: if bx_init_main returns -1, don't even show the application
  window.  You'll get an error dialog and then it exits.  So far this
  only happens if you run with -q and the parse fails.
- non-wxWindows: if bx_init_main returns -1, just exit.  So far this
  only happens if you run with -q and the parse fails.
- with these changes, handling of bochsrc parse errors seems to work
  as you would expect.  And it certainly doesn't go into an infinite
  recursive loop, as it used to!
- a little more testing and I can close
  bug 614175: infinite panic loop if bochsrc buggy
- modified: main.cc gui/siminterface.h gui/wxmain.cc
2002-09-25 19:05:01 +00:00
Bryce Denney
fd2566023a - add enums for the LOG_ASK choices: continue, die, etc. 2002-09-25 18:32:36 +00:00
Bryce Denney
8c3fb9dd1a - add methods to force update of the VGA screen and to force a call
to handle_events.  These are primarily so that when a debugger is
  single stepping, the screen updates immediately instead of after
  thousands of cycles.
2002-09-23 17:41:42 +00:00
Bryce Denney
93311561aa - add get_notify_callback method 2002-09-23 16:57:45 +00:00
Christophe Bothamy
440dffc803 - applied patch.4ata-channels and patch.4ata-channels.bbd
- Features :
 . number of active channels defined at boot-time config
 . new options in bochsrc
 . up to 8 devices support (disks or cdroms)
 . up to 4 cdrom devices can be changed at runtime config
 . wxwindows config interface
2002-09-22 20:56:12 +00:00
Bryce Denney
eca3ef17dc - How to handle default log options has been somewhat confused for a long
time, so I've tried to improve it.  Now the logfunctions class has a
  static field default_onoff[] which represents the default actions for
  each kind of log message.  Default_onoff[] is initialized with static
  data so it should be valid by the time it's used.  This can be reached by
  static accesors logfunctions::set_default_action and
  logfunctions::get_default_action.  It seemed appropriate to put the defaults
  inside the logfunctions class, rather than in bx_options or siminterface.
  However, to make them accessible to the config interface, I added similar
  methods in siminterface that map to the accessors in logfunctions.
- logio.cc had two different definitions of LOG_THIS for different halves
  of the file, which was ugly and confusing.  (LOG_THIS is needed for BX_INFO,
  BX_DEBUG, etc.)  I removed the first definition and fixed the minor compile
  problems that ensued.  In the initializers for iofunctions, everything
  is complicated because of the unpredictable order that constructors get
  called.  They must use this->log to print things, because genlog hasn't
  been initialized yet.
- now if SIM->set_log_action(int mod, int level, int action) is called
  with mod<0, it sets the action for all modules/devices instead of just one.
- modified: bochs.h logio.cc main.cc gui/siminterface.cc gui/siminterface.h
2002-09-20 17:56:22 +00:00
Bryce Denney
f9a1de5a58 - I remembered the real reason why I made an abstract class
bx_simulator_interface_c, so I included that in the comments.
2002-09-20 17:39:07 +00:00
Bryce Denney
a9ad06ec00 - mouse event should have signed deltas: dx and dy 2002-09-18 23:17:47 +00:00
Bryce Denney
ad8bb1023b - move the dependent_list structure up the hierarchy to bx_param_num_c,
instead of bx_param_bool_c.  There are several cases where I need an
  enum to enable/disable some fields, and this change should allow
  that.
- modified: gui/siminterface.h gui/siminterface.cc
2002-09-17 04:47:55 +00:00
Bryce Denney
5af13700e6 - I've added some debugger features recently, but now that I've tested
wxWindows without debugger, I needed to add some more cases of #if
  BX_DEBUGGER to make it work.  All the problems I found were things like
  referencing a debug structure which was never initialized (NULL).  It is
  possible to handle such problems by always compiling in the debug dialogs but
  only instantiating them if debug support is compiled in, but I have chosen
  (for now) to put #if BX_DEBUGGER around things like this.
2002-09-16 15:28:19 +00:00
Bryce Denney
2b388ceddf - rename debug_fputs to debug_puts. Since it doesn't take a file handle,
this is more consistent.
2002-09-16 13:04:13 +00:00
Bryce Denney
00e769f1e6 - fix fputs bug (args were reversed)
- now debugger code always calls SIM->debug_fputs and the siminterface
  code decides what to do with it.
2002-09-15 12:07:09 +00:00
Bryce Denney
bbae3335a2 - add Debug Log dialog, which shows all the text output that is normally
printed to stderr in the text debugger.  Also allows the user to
  type (text) debugger commands directly, which also appear in the log.
- all text output in the debugger now passes through dbg_printf()
  (used to be fprintf to stderr) so that in wxWindows I can redirect
  it all to the wxWindows debug log screen.  Added debug_fputs to
  siminterface which actually sends the text to the GUI by creating
  a BX_ASYNC_EVT_DBG_MSG event.
- changed prefix and msg fields of BxLogMsgEvent to const char *,
  and also in args of logmsg method of siminterface.
- don't trap SIGINT in wxWindows.  There are other ways to stop execution.
  Also, signal handling with multiple threads is very strange and different
  on different platforms.
- minor changes to fix gcc -Wall warnings in dbg_main.cc
- add a new boolean parameter BXP_DEBUG_RUNNING that tells if the debugger is
  running freely or not.  This is used by the wxWindows GUI to enable or
  disable certain choices.
- CpuRegistersDialog has continue,stop,step buttons.  When the sim is running
  freely, I disable continue and step, and enable stop.  When the sim stops
  to wait for the user, I disable stop and enable continue and step.  The
  change of enables used to be triggered by actually pressing the button,
  but then if you started/stopped the simulation in some other way (typing
  in debug log window) the enables were never changed.  Now the enables are
  controlled by the value of BXP_DEBUG_RUNNING, which is set by the debug code
  itself, and the buttons are enabled at the right time.
- ParamDialog::Refresh() is now virtual so that child classes can redefine
  its refresh behavior.
- in safeWxStrcpy, force the last element of the array to be a 0, since
  I noticed that strncpy is not guaranteed to terminate the string!
- modified: debug/dbg_main.cc debug/debug.h gui/siminterface.cc
  gui/siminterface.h gui/wxdialog.cc gui/wxdialog.h gui/wxmain.cc
  gui/wxmain.h
2002-09-15 11:21:35 +00:00
Bryce Denney
565b3846c9 - add infrastructure for sending commands from the wxWindows interface to the
Bochs debugger.  The Bochs debugger calls SIM->debug_get_next_command() which
  does not return until a debugger command is found.  The siminterface sends an
  synchronous event to the wxWindows thread with a blank to be filled in with a
  debugger command.  wxWindows fills in the blank and sends the synchronous
  event back, and the Bochs debugger interprets it as if it was typed on
  the command line.  For the long term I haven't decided whether to stick with
  sending text strings vs. some other method.
- so far the wxWindows debugger consists of one big dialog box that shows
  all the standard registers, and a working Continue, Stop, and Step button.
- modify ParamDialog so that it is more useful as a base class, by moving
  some things to protected members&fields, separating out functionality
  that is most likely to be replaced into virtual functions, and making it
  generally more flexible.  The new CpuRegistersDialog is based on
  ParamDialog.
- in wxdialog.cc, continue the convention of using wxID_HELP, wxID_OK,
  wxID_CANCEL, etc. for the id's of buttons, instead of wxHELP, wxOK, etc.
  which are intended to be ORred together in a bit field.
- cpu/init.cc: put ifdefs around DEFPARAMs for flags in configurations
  where they don't exist.  Add an eflags shadow parameter that represents all
  of the bits of eflags at once.  There are also boolean shadow params for
  each bit.
- modified files: cpu/init.cc debug/dbg_main.cc debug/debug.h
  gui/siminterface.cc gui/siminterface.h gui/wxdialog.cc gui/wxdialog.h
  gui/wxmain.cc gui/wxmain.h
2002-09-13 19:39:38 +00:00
Bryce Denney
be2cdca3e0 - extend bx_shadow_num_c so that it can handle bit fields of variable
length.  (The first guinea pig is the 2-bit IOPL field in eflags.)
  Also it can have a pointer to a Bit8u, Bit16u, Bit32u and signed
  equivalents and do the right thing.
- add lots more CPU fields as parameters: EBP ESI EDI ESP, all segment regs,
  LDTR, GDTR, eflags, DR*, TR*, CR*.  These are all visible on a
  ridiculously tall dialog box that will one day become the debugger.
2002-09-11 03:53:48 +00:00
Bryce Denney
80a3900b8b - apply a patch I've been working on
- modified files: config.h.in cpu/init.cc debug/dbg_main.cc gui/control.cc
  gui/siminterface.cc gui/siminterface.h gui/wxdialog.cc gui/wxdialog.h
  gui/wxmain.cc gui/wxmain.h iodev/keyboard.cc

----------------------------------------------------------------------
Patch name: patch.wx-show-cpu2
Author: Bryce Denney
Date: Fri Sep  6 12:13:28 EDT 2002

Description:

Second try at implementing the "Debug:Show Cpu" and "Debug:Show
Keyboard" dialog with values that change as the simulation proceeds.
(Nobody gets to see the first try.)  This is the first step toward
making something resembling a wxWindows debugger.

First, variables which are going to be visible in the CI must be
registered as parameters.  For some variables, it might be acceptable
to change them from Bit32u into bx_param_num_c and access them only
with set/get methods, but for most variables it would be a horrible
pain and wreck performance.

To deal with this, I introduced the concept of a shadow parameter.  A
normal parameter has its value stored inside the struct, but a shadow
parameter has only a pointer to the value.  Shadow params allow you to
treat any variable as if it was a parameter, without having to change
its type and access it using get/set methods.  Of course, a shadow
param's value is controlled by someone else, so it can change at any
time.

To demonstrate and test the registration of shadow parameters, I
added code in cpu/init.cc to register a few CPU registers and
code in iodev/keyboard.cc to register a few keyboard state values.
Now these parameters are visible in the Debug:Show CPU and
Debug:Show Keyboard dialog boxes.

The Debug:Show* dialog boxes are created by the ParamDialog class,
which already understands how to display each type of parameter,
including the new shadow parameters (because they are just a subclass
of a normal parameter class).  I have added a ParamDialog::Refresh()
method, which rereads the value from every parameter that it is
displaying and changes the displayed value.  At the moment, in the
Debug:Show CPU dialog, changing the values has no effect.  However
this is trivial to add when it's time (just call CommitChanges!).  It
wouldn't really make sense to change the values unless you have paused
the simulation, for example when single stepping with the debugger.

The Refresh() method must be called periodically or else the dialog
will show the initial values forever.  At the moment, Refresh() is
called when the simulator sends an async event called
BX_ASYNC_EVT_REFRESH, created by a call to SIM->refresh_ci ().

Details:
- implement shadow parameter class for Bit32s, called bx_shadow_num_c.
  implement shadow parameter class for Boolean, called bx_shadow_bool_c.
  more to follow (I need one for every type!)
- now the simulator thread can request that the config interface refresh
  its display.  For now, the refresh event causes the CI to check every
  parameter it is watching and change the display value.  Later, it may
  be worth the trouble to keep track of which parameters have actually
  changed.  Code in the simulator thread calls SIM->refresh_ci(), which
  creates an async event called BX_ASYNC_EVT_REFRESH and sends it to
  the config interface.  When it arrives in the wxWindows gui thread,
  it calls RefreshDialogs(), which calls the Refresh() method on any
  dialogs that might need it.
- in the debugger, SIM->refresh_ci() is called before every prompt
  is printed.  Otherwise, the refresh would wait until the next
  SIM->periodic(), which might be thousands of cycles.  This way,
  when you're single stepping, the dialogs update with every step.
- To improve performance, the CI has a flag (MyFrame::WantRefresh())
  which tells whether it has any need for refresh events.  If no
  dialogs are showing that need refresh events, then no event is sent
  between threads.
- add a few defaults to the param classes that affect the settings of
  newly created parameters.  When declaring a lot of params with
  similar settings it's more compact to set the default for new params
  rather than to change each one separately.  default_text_format is
  the printf format string for displaying numbers.  default_base is
  the default base for displaying numbers (0, 16, 2, etc.)
- I added to ParamDialog to make it able to display modeless dialog
  boxes such as "Debug:Show CPU".  The new Refresh() method queries
  all the parameters for their current value and changes the value in
  the wxWindows control.  The ParamDialog class still needs a little
  work; for example, if it's modal it should have Cancel/Ok buttons,
  but if it's going to be modeless it should maybe have Apply (commit
  any changes) and Close.
2002-09-06 16:43:26 +00:00
Bryce Denney
b9bfa8ed7f - fix signal handling in wxWindows. The problem was that a signal gets
delivered to both the GUI and simulator thread, so they both call
  bx_signal_handler.  This can lead to deadlock as multiple threads enter
  BX_PANIC and try to show a dialog box at once.  To solve the problem, I made
  a function isSimThread() which can be called from anywhere.  If the
  bx_signal_handler is called from any thread OTHER THAN the simulation thread,
  it returns without doing anything.  As a result, only one thread is allowed
  to enter the signal handler code, and now control-C works correctly.
2002-09-05 07:48:39 +00:00
Bryce Denney
b79630a14e - Volker introduced the -q command line switch in August 2002, which tells
Bochs to immediately read the bochsrc and start simulating immediately (as
  opposed to going into the configuration interface first).  Now -q does
  the right thing in the wxWindows interface.  It behaves as if you selected
  Read Configuration and then Simulate:Start.
- modified: main.cc gui/siminterface.cc gui/siminterface.h gui/wxmain.cc
2002-09-05 07:01:30 +00:00
Bryce Denney
a768d54939 - the system of using the bx_param_c::set_handler() callback functions
to change the enable/disable status of other parameters worked fine for
  the text mode interface but poorly for the wxWindows gui.  So I
  implemented it a different way.  Now in every boolean parameter, there is
  a field called dependent_list which is a list of parameters which
  are enabled/disabled by that boolean.  Having this list available
  allows both the text mode CI and the wxWindows CI to know which fields
  should be enabled and disabled as a result of a boolean changing value.
- when the set() method of a bool param is called, or when the
  dependent_list is changed, a private method called update_dependents()
  changes the enabled status of all dependent parameters.
- add macros to get parameter ids of serial and parallel port parameters,
  using the port number as an input variable.
2002-09-03 08:46:30 +00:00
Bryce Denney
2c5e29a77b - add get_size() on a bx_list_c 2002-09-03 05:31:42 +00:00
Bryce Denney
329bc47b77 - move BX_BOOT_* constants from bochs.h into gui/siminterface.h 2002-08-31 04:57:21 +00:00
Bryce Denney
645f1a0365 - make the "File:New Configuration" menu item call bx_reset_options(),
with a little "Are you sure?" dialog.
2002-08-30 16:23:36 +00:00
Bryce Denney
3ce8912089 - add CdromConfigDialog to configure cdroms
- HDConfigDialog now uses an EnableChanged() method to set the enabled bit
  on components controlled by the enable checkbox.
- now sets the present bit on hard disks and cdrom
- enforces the rule that you can't have DISKD and CDROMD (just in time for
  Christophe to add another interface)
2002-08-30 06:06:36 +00:00
Bryce Denney
ef4b975884 - add "Create Image" button to floppy dialog, and make it actually work 2002-08-29 20:13:05 +00:00
Bryce Denney
7ce3b36770 - get rid of the not-so-great name CUI which I introduced a few days
ago.  Now we have the simulator, the siminterface, the VGA display
  window (VGAW), and the configuration interface (CI).
2002-08-29 14:59:37 +00:00
Bryce Denney
67f9213460 - eliminate unused BX_ASYNC_EVT_SHUTDOWN_GUI event. 2002-08-28 03:14:53 +00:00
Bryce Denney
6bbf7d5957 - use setjmp() and longjmp() to quit the simulation thread cleanly.
I use setjmp() to save the context just before calling
  bx_continue_after_config_interface().  Then, in
  bx_real_sim_c:quit_sim, I use longjmp() to jump back to that context.
  This happens in main.cc and in gui/wxmain.cc (wxWindows only).
  I haven't tested with the debugger yet.  Possibly with debugger
  the quit longjmp() should jump back to the debugger prompt loop
  instead of actually quitting the program.
- clean up BX_ASYNC_EVT_LOG_MSG implementation by creating a different,
  synchronous event called BX_SYNC_EVT_LOG_ASK.  The async event
  could be used to simply tell the CI that an event has occurred,
  for example if the user wanted to view the events on screen
  (not implemented).  The sync event is used when you want the user
  to respond before the simulation can continue, such as a for the
  "panic=ask" behavior.
- in wxmain.cc, move the updates to the Start,Stop,Pause,Resume menu
  items into a separate method simStatusChanged().  This makes the code that
  does important stuff more readable.
- remove wxMutexGuiEnter()/Leave() from MyFrame::OnSim2CuiEvent().
  This method is an event handler called in the gui thread, so it
  already has the gui lock.  This call caused thread lock on my linux
  box.
2002-08-27 18:11:13 +00:00
Bryce Denney
26385f2866 - I've added lots of comments in siminterface.h, and tried to clean up
the terminology a bit.  In particular, the term "gui" has started
  to mean different things in different contexts, so I've defined
  some more specific names for the parts of the user interface, and
  updated comments and some variable names to reflect it.  See
  siminterface.h for a more complete description of all of these.

    VGAW: VGA display window and toolbar buttons, the traditional Bochs
      display which is ported to X, win32, MacOS X, etc.  Implemented
      in gui/gui.* and platform dependent gui/*.cc files.
    CI: configuration interface that lets the user change settings such
      as floppy disk image, ne2k settings, log options.  The CI consists
      of two parts: configuration user interface (CUI) which does the
      actual rendering to the screen and handles key/mouse/menu events,
      and the siminterface object.
    CUI: configuration user interface.  This handles the user interactions
      that allow the user to configure Bochs.  To actually change any
      values it talks to the siminterface object.  One implementation of
      the CUI is the text-mode menus in gui/control.cc.  Another
      implementation is (will be) the wxWindows menus and dialogs in
      gui/wxmain.cc.
    siminterface: the glue between the CUI and the simulation code,
      accessible throughout the code by the global variable
        bx_simulator_interface_c *SIM;
      Among other things, siminterface methods allow the simulator to ask the
      CUI to display things or ask for user input, and allows the CUI
      to query and modify variables in the simulation code.


    GUI: Literally, "graphical user interface".  Until the configuration menus
      and wxWindows came along, everyone understood that "gui" referred to the
      VGA display window and the toolbar buttons because that's all there
      was.  Now that we have the wxWindows code, which implements both the VGAW
      and the CUI, while all other platforms implement only the VGAW, it's not
      so clear.  So, I'm trying to use VGAW, CI, and CUI consistently since
      they are more specific.
    control panel: This has been used as another name for the configuration
      interface.  "control panel" is also somewhat unspecific and it sounds
      like it would be graphical with buttons and sliders, but our text-mode
      thing is not graphical at all.  I've replaced "control panel" with
      "configuration interface" wherever I could find it.  In configure script,
      the --disable-control-panel option is still supported, but it politely
      suggests that you use --disable-config-interface instead.
- clean up comments in siminterface,wx* code
- add comments and examples for bx_param_* and BxEvents
- remove some obsolete stuff: notify_*_args,
  bx_simulator_interface_c::[sg]et_enabled() methods
- in siminterface.cc, move a few bx_real_sim_c methods to where they belong,
  with the rest of the methods.  No changes to the actual methods.
- remove some DOS ^M's which crept in and confused my editor.
2002-08-26 15:31:23 +00:00
Volker Ruppert
95771fe0e5 - command line parameter --help added
- this changes also fix a carbon gui compile problem (SF bug #594718)
2002-08-25 08:31:16 +00:00
Volker Ruppert
eda0dc5c7e - renamed serial and parallel options "Opresent" to "Oenabled" and "*_PRESENT"
to "*_ENABLED"
- bx_serial_options for all 4 ports moved into an array com[4]
- serial port com1 is enabled by default
- detection of com2, com3 and com4 config options disabled for now
- new parameter "enabled" added to the serial bochsrc options
- error handling for serial and parallel bochsrc options changed. The unhandled
  BX_PANICs are replaced by BX_ERRORs.
- new function bx_write_serial_options() added
- serial destructor restores original terminal settings only when serial port
  is enabled and the tty_id is valid
2002-08-24 17:11:33 +00:00
Volker Ruppert
56952f9132 - parport1 enable/disable support added. Now you can control the presence of
parport1 with the new option "enabled". The old option "enable" only
  controlled the output. The parport1 is enabled with no output by default.
  Changes:
  * bochrc option "enable" replaced by "enabled"
  * parport option "Oenable" replaced by "Opresent"
  * bx_parport_options par1 and par2 replaced by an array par[2]
  * initialize parport1 resources only when enabled
  * renamed variable "parport_init_list" to "par_ser_init_list" since it
    contains parport and serial options
  * documentation and bochsrc updates
- the parport variables "output" and "initmode" now belong to the bx_par_t
  structure
- TODO: add parport2 (disabled by default), parport detection in the bios
2002-08-24 10:20:35 +00:00
Volker Ruppert
1d4d5aa244 - new "user" button added to the headerbar. It can send keyboard shortcuts to
the guest OS. The shortcut can be defined in the bochsrc or in the config
  interface. It is possible to change it at runtime.

  These shortcuts are currently recognized:
  ctrlaltdel, ctrlaltesc, ctrlaltf1, alttab

  Here is the list of changes:

  * userbutton.h and userbutton.xpm added in gui/bitmaps
  * config options for the userbutton shortcut added
  * initialize the new button in the gui.cc
  * the new userbutton handler generates keypresses and relaeses depending on
    the shortcut keyword
  * the gui stops adding buttons to the headerbar if not enough space is left.
    This can happen when the screen width is 320 pixels (done for X11 only).
  * TODO: build a dialog box for the wxWindows gui
2002-08-09 06:16:43 +00:00
Volker Ruppert
c3cda0a919 - separation of floppy device type and media type started. This feature needs
more work in the floppy and bios code.
- floppy and cdrom entries in the runtime config menu can be disabled if the
  drive wasn't defined in bochsrc or start menu
- floppy variable "initial_status" and cdrom variable "inserted" renamed to
  "status"
- unused variable *ips in function build_runtime_options_prompt() disabled
2002-08-04 08:42:34 +00:00
Volker Ruppert
a6d07ad166 - added support for 360k floppy images
* new floppy type 360k can be used in .bochsrc and the config interface
  * media type and geometry can be set for the floppy type
  * BIOS changes to make 360k floppy drives work
  * bximage can create 360k images now
2002-08-01 07:37:56 +00:00
Christophe Bothamy
92839ea2d1 - added options to use up to 4 optional romimages 2002-07-24 17:52:34 +00:00
Volker Ruppert
70eb02913b - trailing comma removed after the last item of enum {} bx_string_opt_bits 2002-07-04 19:24:30 +00:00
Christophe Bothamy
a926744628 I reworked and included Carl's patch to have a new bochsrc directive
to describe the format of the log prefix. This option can be any string
with special tokens being replaced at run time :
  #   %t : 11 decimal digits timer tick
  #   %i : 8 hexadecimal digits of cpu0 current eip
  #   %e : 1 character event type ('i'nfo, 'd'ebug, 'p'anic, 'e'rror)
  #   %d : 5 characters string of the device, between brackets
the default is "%t%i%d", so the logprefix is the same as before.

New tokens can be easily added or changed if needed.


Modified Files:
  .bochsrc bochs.h logio.cc main.cc gui/control.cc
  gui/siminterface.h gui/siminterface.cc
  patches/patch.logfilefmteip
2002-06-26 14:42:35 +00:00
Christophe Bothamy
980364868d - added a script directive in ne2k options of .bochsrc
- added the script directive management for ne2k options
- added the execution of the script (if defined and not 'none') after init of the tun device
2002-05-02 07:54:22 +00:00
Christophe Bothamy
cd50268e2f - added a floppy_bootsig_check option to .bochsrc that will be used to enable/disable the 0xaa55 signature check ONLY for floppy-boot
- stored the boot signature check flag in cmos reg 0x38
- the rombios that is able to handle that flag will be uploaded later
2002-04-23 07:44:34 +00:00
Bryce Denney
30aaf4088e - commit patch.wxwindows.gz in the main branch. Now you can try out
the wxwindows interface by just "configure --with-wx; make"

  Modified Files:
    Makefile.in bochs.h config.h.in configure configure.in
    load32bitOShack.cc logio.cc main.cc cpu/cpu.cc cpu/cpu.h
    debug/dbg_main.cc gui/Makefile.in gui/control.cc gui/gui.cc
    gui/siminterface.cc gui/siminterface.h gui/x.cc iodev/cdrom.cc
    iodev/keyboard.cc memory/misc_mem.cc
  Added Files:
    README-wxWindows wxbochs.rc gui/wx.cc gui/wxmain.cc
    gui/wxmain.h gui/bitmaps/cdromd.xpm
    gui/bitmaps/configbutton.xpm gui/bitmaps/copy.xpm
    gui/bitmaps/floppya.xpm gui/bitmaps/floppyb.xpm
    gui/bitmaps/mouse.xpm gui/bitmaps/paste.xpm
    gui/bitmaps/power.xpm gui/bitmaps/reset.xpm
    gui/bitmaps/snapshot.xpm
  Removed Files:
    patches/patch.wxwindows.gz
2002-04-18 00:22:20 +00:00
Bryce Denney
34e02290eb - apply Christophe's patch.paste-for-dos. I will make minor tweaks as
separate revisions.
2002-03-26 13:51:48 +00:00
Bryce Denney
dd90b7ab46 - add serial port options to the configuration interface, in the same
menu as the parallel port options.
2002-03-03 06:10:04 +00:00
Bryce Denney
e50a1be21b - commit serial port patch from Stu Grossman <grossman@juniper.net>
Here are the patches (without the serial name fix).  Let me know if you want
  me to change that.  Oh, FYI, my changes also open up the com1 terminal in raw
  mode, which makes the emulation much more accurate.  You'll also notice that
  I added infrastructure for com2->4 in the option parsing.  I didn't add it to
  the serial code, as I think a bunch of things need to be untangled before
  that can work.
2002-03-03 06:03:29 +00:00
Volker Ruppert
76fd8a43f9 - keyword 'virtual' added to the destructor 2001-12-22 20:58:25 +00:00
Bryce Denney
cbd68598a3 - apply patch.memleaks-tominac from Darko Tominac <darko.tominac@zg.tel.hr>
which fixes some potential memory leaks
2001-12-21 19:33:18 +00:00
Christophe Bothamy
bd7420ade5 - Added XFree86 keyboard mapping (us, fr, de) 2001-12-14 17:56:37 +00:00
Christophe Bothamy
d7482737a9 . Added a keyboard_type option in the conf file
. Modified answer of keyboard controler to a keyboard-identify command
  depending on keyboard_type
. Added the keyboard_type option in bochsrc man page
2001-12-12 10:38:39 +00:00
Bryce Denney
efc5708ddf - "const char" fixes from Volker 2001-11-14 00:23:08 +00:00
Bryce Denney
c52fbaa3a7 - allow configuration of the parallel port in .bochsrc and the config
interface menus.  Parallel port #1 is implemented, and I left stubs for
  parallel port #2 in case we want to ever add it.  If the parallel port
  is enabled, the init method of parallel.cc does an fopen() on the output
  file.  If disabled, or if the fopen fails, the file handler remains
  NULL and no characters are printed.  There is no attempt to enable/disable
  the operation of the parallel port, only the output to a file.
2001-11-12 02:35:09 +00:00
Bryce Denney
daf2a9fb55 - add RCS Id to header of every file. This makes it easier to know what's
going on when someone sends in a modified file.
2001-10-03 13:10:38 +00:00
Bryce Denney
72d28e5a87 - add string parameter called screenmode
- put #if BX_USE_AMIGAOS...#endif around fullscreen and screenmode, since
  they only apply to amiga
2001-08-16 02:00:31 +00:00
Bryce Denney
eb6a85629e - add option called fullscreen, for Nicholai Benalal's amiga port 2001-08-15 20:17:19 +00:00
Bryce Denney
f5a90eb9c6 - VC++ kept me honest about return values... 2001-06-22 13:37:08 +00:00
Bryce Denney
efa62838bb - add "-nocontrolpanel" command line option. 2001-06-21 21:24:05 +00:00
Bryce Denney
b1b56487c1 - turn the last few options into parameters (cmos, loader, random stuff) 2001-06-21 19:57:21 +00:00
Bryce Denney
1bcdee2301 - add options to the string parameter class that allow it to deal with
raw hex bytes, for the MAC address.
2001-06-21 19:27:05 +00:00
Bryce Denney
8ca273ce73 - converted ne2k and sb16 to new style parameters and control panel,
except for MAC address of the ne2k, which is next.
2001-06-21 18:34:50 +00:00
Bryce Denney
c1f2e6d8c4 - added two new bochsrc and control panel options: max_ips and
system_clock_sync
2001-06-21 16:59:56 +00:00
Bryce Denney
ee2ae90d79 - removed unused functions from siminterface.h and siminterface.cc.
These are obsolete because the bx_options have been changed to
  parameter structures.
2001-06-21 14:55:38 +00:00
Bryce Denney
93f5f8e06b - now the memory options menu, interface menu, and disk menu in the
control panel are all implemented as bx_list_c, and look much like
  they did before.
- removed many hardcoded UI functions from control.cc, since the
  much more general "text_ask" methods have replaced them.
- add range checking on integer parameter values.  This exposed several
  cases where my initial value for an integer parameter was not in range.
- cleaned up behavior of get/set methods.  The get/set methods allow the
  handler to override the value that is returned/set, or perform side
  effects.
- the title parameter of a bx_list_c now defaults to the name.
- now bx_param_c fields that used to be private are protected instead
- removed references to bx_any
- moved definition of set_handler from siminterface.h to siminterface.cc.
  I was considering with doing a "set" of the old value when the
  handler is first installed, but that remains commented out.
- BX_BOOT_DISKA and BX_BOOT_DISKC are now 0,1 so that they can correspond
  with the values of a bx_param_enum_c.  For a while they were 0x00 and 0x80
  corresponding to the numbering convention of the bios, but it didn't
  really matter.
2001-06-21 14:37:55 +00:00
Bryce Denney
ec0fbf18bc - convert nearly all bx_options to parameter form. All options that have
been converted into parameters temporarily have the letter "O" appended
  to their name.  I don't want to keep it this way, but it has helped
  in the conversion process because the compiler refuses to compile the
  old uses of the name.  Before I started using the "O" trick, there were
  many bugs like this:   if (bx_options.diskc.present) {...}
  This was legal with the new parameters, but it was testing whether the
  parameter structure had been created, instead of testing the value of
  the present parameter.  Renaming present to Opresent turns this into
  a compile error, which points out the incorrect use of the param.
- the "--disable-control-panel" no longer works, I'm afraid.  I can no
  longer support this and continue progress.
2001-06-20 14:01:39 +00:00
Bryce Denney
89de2c38aa - now the "memory options" menu is entirely defined using parameter
data structures, see bx_init_options in main.cc.  The implementation
  of this menu and all its choices is 17 lines long, see do_mem_options_menu
  in gui/control.cc.
2001-06-18 14:11:55 +00:00
Bryce Denney
d0f1caa404 - turned rom address and vga rom path into bx_param_c parameters, so that
now the whole "Bochs Memory Options" menu uses new style parameters.
  The next step is to remove the hardcoded stuff that generates and runs
  this menu, and replace it with general menu building code.  All you should
  need to create this menu is the string "Bochs Memory Options", and the
  IDs of the bx_param_c options that should appear on the menu.  The
  bx_param_c structure for each parameter tell what type it is, how to
  display it, constraints on the value, what to do when the parameter
  changes.
2001-06-17 13:50:52 +00:00
Bryce Denney
c3d88c5924 - now ips, mouse_enabled, vga_update_interval, and rom_path are
declared as bx_param_c * types in the bx_options structure.  They are
  initialized in main.cc (bx_init_options) with default values.
  Access to parameters of this type should always be like this:
    bx_options.mouse_enabled->get ();
    bx_options.mouse_enabled->set (newval);
  Eventually I will be transferring all options to this format.
2001-06-16 23:08:32 +00:00
Bryce Denney
8f5bb7419d - now megs, ips, mouse_enabled, vga_update_interval, and rom_path
are using Bryce's experimental parameter structures.
2001-06-16 19:29:59 +00:00
Bryce Denney
945b295c4d - gradually moving toward a set_parameter(param,val) style interface
instead of a set_vga_update_interval(val) style.
2001-06-15 23:52:34 +00:00
Bryce Denney
42f03956f5 - removed string_list_t which was no longer used, and caused AIX compile
problems.
2001-06-11 20:48:12 +00:00
Bryce Denney
7baabf07e6 - eliminated some compiler warnings 2001-06-11 20:27:23 +00:00
Bryce Denney
a56dedb386 - added a new log action "ask" which sends the log message to the control
panel.  It gives the user the option of continue this time, continue
  and never ask again for this type of log message, or die.
- the communication between control.cc and siminterface.cc is still
  somewhat crude.  I'm trying to implement it so that a network
  protocol based on this interface will be simple.  I'll get this cleaned
  up soon.
2001-06-11 14:03:35 +00:00
Bryce Denney
985d4b7923 - implemented bx_write_configuration which, for the first time ever,
writes a bochsrc for you.
- since there were two options related to logging, I moved them both
  into a new struct called bx_log_options.  This follows the pattern
  used by other devices.
- in control.cc: removed option 1 from main menu, the one that said
  "Read options from bochsrc.txt."  This was identical to choosing
  the next option, "Read options from..." and only saved you one
  keystroke, so I removed it.
2001-06-11 06:35:18 +00:00
Bryce Denney
dffe013ff8 - fix interface menu 2001-06-09 21:29:07 +00:00
Bryce Denney
af53a1158e - fixed boot menu in control panel 2001-06-09 21:12:16 +00:00
Bryce Denney
8b7fbca53e - more work on text-mode control panel. Now the control panel starts before
the simulation begins, to give you a chance to choose between bochsrcs,
  choose the boot disk, etc.
2001-06-09 20:01:12 +00:00
Bryce Denney
f2af827a63 - add a layer of abstraction between the text-mode control panel in
gui/control.cc and the simulator.  Now all communication between
  the control panel and the rest of bochs goes through an object
  called bx_simulator_interface_c.
2001-06-08 07:20:07 +00:00