Commit Graph

224 Commits

Author SHA1 Message Date
Volker Ruppert
6b184eb3b5 - better error handling in function load_ROM():
* cause a BX_PANIC if the path of the system BIOS or VGA BIOS is empty
  * open() and fstat() now cause a BX_ERROR if the rom image is optional
2003-04-02 17:03:34 +00:00
Stanislav Shwartsman
7fa75388a1 Added bx_cpuid value to the BX_CPU class to avoid any problems with BX_CPU_ID implementation 2003-02-13 15:51:22 +00:00
Christophe Bothamy
579f3c0539 - apply Ben Lunt's 160k, 180k, 320k floppy patch 2003-02-06 23:16:56 +00:00
Christophe Bothamy
ecbbd25411 - add to log file:
. Bochs version
  . System configuration
  . CPU configuration
  . Optimization configuration
This might be helpful information for bug reports
2003-02-05 18:19:03 +00:00
Christophe Bothamy
b2dbcdb993 - apply Zwane's patch.highmem patch
It can be easily removed if things go wrong on win32
2003-01-29 15:01:16 +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
Christophe Bothamy
04888a1039 - fix [ 661010 ] cannot override ata-settings from cmdline 2003-01-13 17:55:12 +00:00
Volker Ruppert
5840618ceb - function parse_line_unformatted(): stop parsing at the comment sign (#) 2003-01-10 20:33:12 +00:00
Christophe Bothamy
2ed89620af - fix bug reported many times on irc and on the ml. The "pass" log was
mistakenly written as "debug" when the configuration file was saved.
2002-12-24 09:14:54 +00:00
Christophe Bothamy
2b396ed2da - fix [ 657404 ] realtime_pit bug in 2.0 config. 2002-12-23 10:30:13 +00:00
Bryce Denney
91b95cafaf - change pit syntax to "pit: realtime=1" 2002-12-21 17:27:42 +00:00
Bryce Denney
a221d26323 - Br'fin has written this Carbon patch to make the default $BXSHARE
value be the application's directory, no matter where it gets
  installed.  This is consistent with installing the bioses and
  keymaps/* into the same directory as bochs.app.
2002-12-17 20:58:18 +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
Gregory Alexander
b522c1dcf3 Enhanced support for text snapshot checking.
Now CR/LF creation is suppressed in win32 when text
snapshot checking is on.  This allows for creation of
generic text snapshots in win32.
2002-12-16 02:49:55 +00:00
Bryce Denney
d2dcd25ca4 - if BX_SHARE_PATH not defined by a makefile, define it to NULL. This
makes it unnecessary to make get_builtin_variable() conditional on
  existence of BX_SHARE_PATH.  This fixes bug [654123]: $BXSHARE not working
  on win32.
2002-12-15 17:11:13 +00:00
Bryce Denney
8b0a593ed4 - rename BXBIOS to BXSHARE. The problem with BXBIOS is that it needed to
be used for more things than just the BIOS.  Also the keymaps need to
  be located relative to the share path, and maybe other things like
  graphics and icons, later.
2002-12-14 22:18:00 +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
Christophe Bothamy
16ebfdb9e1 - update for macos compile 2002-12-12 15:29:45 +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
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
Volker Ruppert
2b310aeb33 - function get_builtin_variable(): on win32 use the value of the registry key
created by the nsis installer for the BXBIOS variable. The compile time
  default for BXBIOS (e.g. /usr/local/share/bochs) is not usable on win32.
2002-12-03 18:55:23 +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
Volker Ruppert
79db8b0d71 - added missing bochsrc options in function bx_write_configuration() 2002-12-02 20:32:13 +00:00
Volker Ruppert
f3bbde98e0 - define MAX_ARGLEN if it doesn't exist 2002-12-01 14:18:37 +00:00
Volker Ruppert
9f7130c150 - implemented builtin variable BXBIOS for the non-plugin version and platforms
that do not support setenv()
2002-11-26 20:40:50 +00:00
Volker Ruppert
91af460652 - checked in patch.sdl-win32-console from Bryce Denney (see below).
- removed the code for changing the console screen buffer size
- BUG: the gui window receives all keypresses from the console when it gets back
  the focus. We have eliminate all keypresses before the simulation continues.

Bryce wrote:

This untested patch shows how and where to call RedirectIOToConsole() when
compiling with SDL on win32.  I believe this, or something like it, will
fix the problem of having no console window on SDL.

- enable RedirectIOToConsole() when compiling with SDL on win32, so that
  it can be called in main().
- move main() down below the definition of RedirectIOToConsole(), and
  add a call to RedirectIOToConsole()
- in WinMain, Bochs always asked the user to press ENTER before exiting.
  I moved that code to main() with #ifdef WIN32...#endif around it.
  (Maybe this should only be done when Bochs explictly creates a console
  window, though.)
2002-11-26 18:15:56 +00:00
Volker Ruppert
09ffa26383 - the function SetConsoleScreenBufferSize() seems to be the reason for the
console scrolling problems - disabling it for now.
2002-11-25 21:28:19 +00:00
Bryce Denney
59401e9de3 - add comments about win32 main/WinMain and associated functions 2002-11-25 18:17:13 +00:00
Bryce Denney
56b67a6a8d - do feature request [ 640888 ] add default for BXBIOS env variable
- if BXBIOS is not defined, set it to a default value that is produced
  in the makefile.  This allows us to make disk image TAR packages that
  look for the bios images in the $BXBIOS directory.  These packages
  will be able find the current images for future Bochs versions, without
  any modifications.
2002-11-25 18:00:05 +00:00
Bryce Denney
37077c8c1c - check in Br'fin's patch from
[ 642324 ] MacOSX: Silent failure when run from GUI
  This fills in the ensure_text_console_exists() function for Carbon.
2002-11-25 17:53:53 +00:00
Christophe Bothamy
2252507276 - add "-n" option to NOT load any configuration file 2002-11-24 13:41:07 +00:00
Bryce Denney
87baf09bb9 - call new function ensure_text_console_exists before going into the
text config interface.  This function does not have any contents yet...
  the contents need to be filled in for those platforms which sometimes
  have no stdin/stdout.  The default case, in which stdin/stdout is
  usable, is to just return.  But if stdin/stdout is NOT usable, this
  function should display a warning dialog and quit.
2002-11-23 13:26:21 +00:00
Bryce Denney
714924eadc - check in Br'fin's solution to CFURLGetFileSystemRepresentation
compile error on MacOSX.  This patch was attached to an email today.
2002-11-23 12:35:42 +00:00
Bryce Denney
7382b84f8c - A new GUI is born!
add SVGALIB display library by Igor Popik <igipop@wsfiz.edu.pl>
  While it's running, you can press F12 to escape into the runtime config
  menu, and then you can change disks or quit or whatever.

  Better not try it with the bochs debugger...you could get stuck.

Modified Files:
  Makefile.in config.h.in configure configure.in main.cc
  plugin.h gui/Makefile.in
Added Files:
  gui/svga.cc
Removed Files:
  patches/patch.svgalib-gui patches/patch.svgalib-gui-f12
2002-11-21 19:26:07 +00:00
Bryce Denney
919e8a3575 - move call to update_drive_status_buttons until after hardware init.
Before when the debugger was enabled, the update function was called
  before hardware init leading to a panic.

Modified Files:
main.cc debug/dbg_main.cc
2002-11-20 19:34:51 +00:00
Bryce Denney
00c0ff3a5a - call bx_gui::update_drive_status_buttons after all hardware has been
initialized.  This should fix
  Bug #630865: CDRom icon in toolbar initiall 'ejected'
2002-11-20 13:08:17 +00:00
Bryce Denney
ccd006835b - always print header, not just if !wx 2002-11-19 08:54:32 +00:00
Volker Ruppert
35c2be5518 - changed ne2k presence options from "valid" to "present" 2002-11-18 17:16:07 +00:00
Bryce Denney
ab6cb49693 - this fixes bug #638600: need default plugin search path
- configure script adds -DBX_PLUGIN_PATH="${plugdir}" to CFLAGS/CXXFLAGS
  in the Makefile.
- in main.cc, if plugins enabled and the environment variable LTDL_LIBRARY_PATH
  is not set, then it gets set to the value supplied by BX_PLUGIN_PATH.

Modified Files:
  main.cc Makefile.in configure.in config.h.in configure
2002-11-18 02:32:53 +00:00
Bryce Denney
70b69a2a64 - if cmd line is empty, don't touch array index 1 with "*(last_nonspace+1)"
- argc was returning the wrong number of args.  Now I treat null and space
  the same way, except that null causes the loop to exit.
- change "extern "C" int WinMain" to "int WINAPI WinMain".
- in WinMain pause for the user to read the screen before making it disappear.
  This is very useful when there was an error during startup because otherwise
  you can't read it.  However we'll probably want to disable it when the
  user actually asked for Bochs to quit.
2002-11-16 22:50:51 +00:00
Bryce Denney
2b1982bb3a - fix yet another creative spelling of "library" 2002-11-15 22:56:37 +00:00
Bryce Denney
34f8d7e447 - there are 2 definitions of main. I moved the "normal" one to the top so that
it's easier to find.  The other one is for wxWindows on win32 only.
- for wxWindows on win32, I added a function called RedirectIOToConsole() from
  an article in the Windows Developers Journal that creates a console window
  and sets up stdin,stdout,stderr to operate on the console.  This works,
  except for a console freezing problem that I described on the mailing list
  earlier today.
- Once it is working better, we may want to use the WinMain definition for
  other types of compiles on win32, and maybe even for all win32 compiles.  In
  particular when we compile with SDL we should create a console window too.
- comment out some debug output from the command line parser, add \n's in
  a few places.  (I'm using stderr instead of BX_PANIC because I don't think
  the logging system is ready to be used at this early stage.)
2002-11-15 18:53:52 +00:00
Bryce Denney
9022439b17 - fix spelling of "library" 2002-11-15 16:14:01 +00:00
Bryce Denney
3f07ce86d6 - change startup behavior so that if you don't type any command line args,
the bochsrc is loaded by default.
- if you asked for quick start, but the config file could not be loaded,
  print a warning "Switching off quick start, because no configuration file
  was found".
- now the behavior looks like this:
  . no command line arg (most common)
    -> .bochsrc is loaded
      -> if found defaults to "5. Begin simulation"
      -> if not found 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 specifies which conf file to load)
    -> conf file is loaded
      -> if found defaults to "5. Begin simulation"
      -> if not found, print error message on console:
	  >>PANIC<< reading from bochsrc2.txt failed
  . 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, print error message on console:
	  >>PANIC<< reading from other failed
  . after selection of "2. Read options from..."
    -> defaults to "5. Begin simulation"
  . if user wants to create a new conf file:
    -> run bochs with no args
    -> .bochsrc is loaded by default
    -> choose 1. Restore factory default configuration
    -> default is changed to "3. Edit options"
- See bug #625696 "text config menu: default can be wrong" for
  more discussion of this issue.
2002-11-15 14:47:58 +00:00
Bryce Denney
8d7da6be35 - win32 applications get the whole command line in one long string.
Add a new function "split_string_into_argv" that chops up the
  string into individual args, and understands the rules of single
  and double quotes.
2002-11-14 05:12:28 +00:00
Christophe Bothamy
052ee134b7 - fix [ 629606 ] BX_WITH_TERM affects ^C handling :
. if BX_GUI_SIGHANDLER is true and the term gui is selected at run time,
    a new global boolean (bx_gui_sighandler) variable is set to true.
    Special signal handling is done if bx_gui_sighandler is true.
  . if BX_GUI_SIGHANDLER is not true, bx_gui_sighandler is not compiled in.
2002-11-11 17:09:57 +00:00
Volker Ruppert
01027b46c9 - converted devices pci and pci2isa to plugins
- moved PCI presence check to devices.cc
- moved initialization of the PCI register arrays from constructor to init()
- PCI macros updated
2002-11-09 20:51:40 +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