Patch name: patch.macosx-console-launch-script
Author: Jeremy Parsons <brefin@mac.com>
Date: Wed Oct 16 2002
Detailed description:
Since the Carbon gui does not yet have a console window of its own, then it
can't be configured from the gui (only the command line) and stdout/stderr both
go to the console. As a shortcut, I offer this patch consisting of this file and
build/macosx/script.data
build/macosx/script.r
build/macosx/bochs.applescript
script.data and script.r are taken from a script compiled into an application.
Flattened out to be checked in. (osacompile can produce runnable scripts, but
wants to create them for the classic environment, so I use these files as part
of a workaround)
When bochs.app is built, it also builds bochs.scpt. To use bochs.scpt you put
both bochs.app and bochs.scpt into the directory with your bochsrc.txt.
bochs.scpt is an applescript that when run notes the current directory, then
tells the terminal application to open a window, cd to the current directory,
and run bochs from the commandline.
----------------------------------------------------------------------
Modified Files:
Makefile.in
Added Files:
build/macosx/bochs.applescript build/macosx/script.data
build/macosx/script.r
when making windows releases, and copy it into the build directory.
However, since some make programs (e.g. freebsd) are giving errors when
bochsdbg is not found (in Linux it just gives a little warning), I have tried
to do it in a more clean way. I put bochsdbg into an "optional" install
list, and put a minus before the line that installs optional files. This
should cause make to ignore any errors that occur while trying to install the
optional ones.
empty pathnames, zero cylinders, etc. It doesn't seem fair to allow
people to write out bochsrcs that they cannot read back in without
patching them up by hand!
- in harddrv.cc add the equivalent checks with BX_PANICs so that at least
we don't start simulating with incomplete device configuration.
- make a few error messages more clear
- modified: main.cc iodev/harddrv.cc
constructors around. The min,max that were being passed to the parent
class constructor had junk in them. In config.h.in, I defined the minimum
and maximum values for each integer datatype so now we pass correct
min and max values to the parent class. These replace the BX_MAX_[U]INT
and BX_MIN_[U]INT values.
- modified: main.cc config.h.in gui/siminterface.cc
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
decided to make bx_param_num_c::get() return 32bit integers again
instead of trying to find every single case that was broken when
I changed bx_param_num_c::get() to return a 64bit integer.
- as soon as get() returns 32 bit values again, the changes in the previous
rev is are unnecessary.
- change int 15 function to get a pushad_regs_t parameter
instead of the registers enumeration
- change in int 15 references to 32bits,16bits and 8 bits
registers to their pushad_regs_t counterpart
Patch name: patch.macosx-ui-polishing
Author: Jeremy Parsons <brefin@mac.com>
Date: Wed Oct 16 2002
Detailed description:
A number of changes to the Carbon Code to improve how well it meshes with the
MacOS X user experience as well as to make sure that all of more recently added
toolbar buttons actually work.
Specific changes include:
Added partial keymap support. (Keymaps don't yet affect what the user types
but an X11 keymap can be used to enable pasting)
Copying of text screens added
Pasting of text as keyboard input added
Copy, Paste, Reset, and Snapshot menu items now work the same as the
corresponding toolbar elements
Revamped icon handling to use Control Manager IconControls,
thus removing icon display code and greatly simplifying icon click handling code
while adding better behaviours (icons that darken when clicked, track mouse movement,
and only do something if the mouse is released atop of them as well as gaining
the ability to be disabled)
Tweaked Paste toolbar and menu items to only be enabled if key mapping is in use AND the
clipboard contains text
Tweaked Copy and Snapshot toolbar and menu elements to only be enabled if
the screen mode is text.
Tweaked User Keys toolbar element to only be enabled if there are user keys
defined to be sent
Tweaked Configure toolbar element to only be enabled if a tty is available
(as in the emulator was started from a terminal)
Respaced toolbar icons to match Aqua Toolbars
Disabled menu items that are not currently handled (undo, clear, cut, disk eject)
Full screen backdrop resettled all across the screen
Fixed the callback interface so that when a Panic needs to ask the user about continuing
it actually works appropriately.
----------------------------------------------------------------------
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
X11 keymap files. This okay since the keysym values are identical. The "AltGr"
key on European keyboards doesn't work with wxGTK 2.3.3 because the keysym
GDK_Mode_switch is not handled in wxGTK.
- German keymap table for wx and wxgtkkeys.h are no longer needed
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