There was a POTENTIAL RISK for your HARDDISKS with the previous
patch because it updated the concat_image_t object (BX_SPLIT_HD is on
by default). The behaviour of BX_SPLIT_HD is to open all filenames
incrementing the last letter. Guess what follows /dev/hda ?
You may now access block devices from within bochs, only
if --disable-split-hd is configured.
It has only been tested on linux and a WinNT guest.
There are issues with the current bios CHS translating scheme and
the guest OS translating scheme. For example my compaq system translates
a physical 38792/16/63 20GiB harddrive to
a logical 2586/240/63, which does not follow the bitshift algorithm.
I had to find a different PCHS that would translate in a compatible LCHS
I still have to investigate further, but I'm afraid everything I can do
will break some systems or the others.
Those issues should be explained in the documentation.
created in the first rev. When you're talking to Carbon libraries,
of course you should use Boolean instead of bx_bool. My global
search and replace missed such subtleties.
This avoids naming conflicts, since no other library is likely to
use bx_bool.
- I will apply this before release 2.0, but not until the feature freeze
has begun, because it will break almost every patch.
different versions of the code for wxWindows and non-wxWindows and the GDB
stub did not accept any command line options at all.
- IMPORTANT CHANGE: the quick start option used to cause two things:
1) read the bochsrc immediately, 2) start simulation immediately without
going into the config interface. This has changed in a subtle way.
Now, we always try to read the bochsrc immediately. Then if the quick
start option is on, we start the simulation immediately.
- add "Restore Factory Default Configuration" in text config menu. It was
already there in wx. Now the default choice is always "5. Begin simulation"
and because the bochsrc is always read now, this works.
- When the user chooses "Read configuration file" from either text mode
or wx interfaces, reset all bochs parameters first, then read in the
new file. This means that every time you read a configuration file
you are starting from a consistent "blank slate".
- move much of the code from bx_do_text_config_interface into bx_init_main
so that wxWindows and non-wxWindows code uses the same logic. There was
only a tiny bit left in bx_do_text_config_interface so I eliminated it.
- move the "help" message into a separate function print_usage()
- detect all flags (cmdline args that start with -) in a loop, instead of
a big if/else. This makes it easy to add others.
- fix problem with Carbon gui, so that -psn arg gets ignored
- print usage if you type -h, --help, or if flags are not recognized
- code that called io->set_log_action (that sets the log action for all
devices) was only called if the configuration interface was on; I'm not
sure why. Now it is called all the time.
- the wxWindows equivalent of main() is called MyApp::OnInit. Now OnInit
and main() are very similar. They both call bx_init_siminterface, then
bx_init_main (and quit if it fails), then show the config interface if
quickstart is off, and then simulate.
- modified: main.cc gui/control.cc gui/wxmain.cc
- default value of the sequencer reset bits is 1 (no reset)
- sequencer reset flag 1 resets the charmap select register when cleared
- skip the screen update when the sequencer is in reset mode (h/v sync and
video ram refresh are disabled in that case)
- don't clear the memory update flag before the update is done
- skip the text screen update when the character height is set to 1 (MSL = 0)
- sequencer debug messages updated
SSE/SSE2 for Stanislav. Also, some method prototypes and
skeletal functions in access.cc for read/write double quadword
features.
Also cleaned up one warning in protect_ctrl.cc for non-64 bit compiles.
There was an unused variable, only used for 64-bit.
This card has 2 ata channels, so this would be better
than the promise DC2300. It also has drivers for win95,
available on tekram website.
Many thanks to Volker for fixing the interrupt bug!
It solved the problem I had with this patch...
This is an interim update to allow others to test.
We have userland code running!!! (up to a point)
Able to start executing "sash" as /sbin/init in userland from linux 64 bit
kernel until it crashes trying to access a null pointer. No kernel panics
though, just a segfault loop.
specific to X windows. I changed a few names of variables and methods to
sound less X windows specific, for example in the BXKeyEntry struct
the "xwinKey" field is now called "hostKey".
- remove the hacks in bx_keymap_c::loadKeymap that checked that every
keysym started with "XK_". Now I can still make that check, but it
is done in x.cc's convertStringToXKeysym() instead.
- in sdl.cc, load the keymap in specific_init function. I had to
create a conversion function from SDL key names to SDLkey values.
I created a table of key names and associated values, and I just
do a strcmp on each name. It's not a fast algorithm obviously but this
conversion only has to be done for maybe 200 keys at startup time.
- added a key map file for SDL called sdl-pc-us.map. Since this has
basically all the SDLK_* symbols defined, it is a good starting point
if you need to make any other keymaps.
- modified: gui/keymap.cc gui/keymap.h gui/sdl.cc gui/x.cc iodev/keyboard.cc
- added: gui/sdlkeys.h gui/keymaps/sdl-pc-us.map
into inline functions with asm() statements in cpu.h. This cleans
up the *.cc code (which now doesn't have any asm()s in it), and
centralizes the asm() code so constraints can be modified in one
place. This also makes it easier to cover more instructions
with asm()s for more efficient eflags handling.
wxLog::SetActiveTarget (new wxLogStderr ());
which used to be inside #ifdef __WXDEBUG__ ... #endif. This fixes the
problem of tons of little debug message dialogs appearing in wxwindows
libraries built without debug support.
- This reverts revision 1.61. I cannot figure out why I had trouble back on
Sept 27, because now both my debug and release libraries work ok with the
SetActiveTarget line.
the toolbar button and the mouse capture shortcuts (F12 and middle button)
call ToggleMouse(). The only difference is that the first time you
press the toolbar button it gives a little message about mouse capture
and how to turn it off.
- modified: gui/wx.cc gui/wxmain.cc gui/wxmain.h
Quit while the simulation was running. I used to just do
wxFrame::Close(TRUE) in the wxwindows thread, but the simulation
thread would keep on running even after the window had disappeared.
If the simulation thread sent any messages to the gui, it could
segfault. Now, when you click on Quit it asks the simulator to
quit, but does not close the gui. When the simulator thread finally
quits, THEN it calls wxFrame::Close(TRUE) from the sim_thread (with
appropriate gui mutex). Such tricks are only needed when the
simulation is running. I hope this will fix bug #616142: "wx: crash
from events after gui shutdown".
- move MyFrame::closing flag out into a global variable wxBochsClosing
so that it will be valid even when the MyFrame is deleted. See
comments on in wxmain.h.
- when wxBochsClosing is set, don't create any new windows. If any
errors appear, just print them to stderr because the gui is just
about to be closed.
- fix comment in SimThread::Entry to talk about longjmp instead of
kill_bochs_request
- (minor) move contents of DefaultCallback2 into DefaultCallback. It
doesn't refer to the wxApp at all. This is a bit safer in case it
gets called when the wxApp is in the process of being deleted.
- modified: gui/wxmain.cc gui/wxmain.h