the text console is going to be needed. I believe this will fix
[ 614724 ] SDL can get stuck in full screen mode
I would like to get a little bit of testing feedback before committing
it at this late date.
unsigned 64-bit integer and 64-bit double precision floating point. It
knows how to convert Bit64s to double, but it refuses to convert Bit64u
to double. The macros: F2I converts from floating point to integer, and
I2F converts the other way, using Bit64s as a transition step.
F2I: double -> Bit64s -> Bit64u
I2F: Bit64u -> Bit64s -> double
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
Description/justification:
Endian Host byte order Guest (x86) byte order
======================================================
Little FFFFFFFFEEAAAAAA FFFFFFFFEEAAAAAA
Big AAAAAAEEFFFFFFFF FFFFFFFFEEAAAAAA
F - fraction/mmx
E - exponent
A - aligment
- descripton of bochsrc option "user_shortcut" updated
- bios names in the bochsrc sample updated
- FAQ question: cdrom is supported on BeOS, too
- the default for the cdrom support is "yes"
- the default for the e9 hack is "yes"
- serial port UART name is 16450
- fixed a typo (PPC)
- 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.)
. read port 0x70 (cmos) : return index
. atapi function 46 and 4a : return error
- put back the log prefix for cmos that disappeared when we did the plugins
- 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.
doesn't get put in the dependency list. It's not clear what is the best way
to handle this header conflict anyway, other than to rename vga.h to bxvga.h
or something.
This information was quite obsolete. Anything useful in here should be
merged into the documentation some day. It certainly should not be
sitting in the main directory where it might confuse people.
Modified Files:
doc/docbook/misc.txt
Removed Files:
macintosh.txt win32.txt
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.
bochs.h. Bernd Korz reported redefinition of Bit32u in the system header
files, which I never saw before I moved bochs.h up above the other includes.
- The exact errors:
/boot/develop/headers/posix/be_prim.h:23: error: conflicting types for
`typedef long unsigned int Bit32u'
/boot/home/Entwicklung/Sourcecodes/bochs/config.h:474: error: previous
declaration as `typedef unsigned int Bit32u'
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
debugger, SMP, and x86-64. A few macros were missing the CPU_ID argument,
and a few passed nonexistent variables to the instrumentation macros.
- I changed CPU_ID into a plain old macro instead of an inline call to a
trivial which_cpu() function, and removed which_cpu().
Modified Files:
cpu/cpu.h cpu/ctrl_xfer64.cc debug/dbg_main.cc
Step 1, the compile, must be done locally on a MacOSX machine. This
gives us the contents of the resource fork, which will be checked into
CVS as script_compiled.rsrc every time the script sources change. Step 2
can be done remotely on the SF compile farm: reconstruct the script
from the separate data and resource fork files.
- not all filesystems support resource forks! I added a test in the
makefile to check that the resource fork is accessible, so that at least
we will get a clear error message if the filesystem doesn't support it.
In bx_cpu_c::reset method I set bx_cpu->async_event to 2
so execution in the cpu_loop gets stopped early.
Previously, async_event was set to 0, and with repeatable
instructions, after reset, eip was incremented by the instruction
length, so execution would resume at 0xffffX (X being >0, the current
instruction length).
In halt state I check now for reset with async_event is 2, so
reset works also when the cpu is halted. (update to Peter change)
I hope I fixed this the right way, please report any strange behaviour.
script will still work.
- specify the config file in run.bat since now it ends with .bxrc
- rename the link on the desktop to "Linux Demo in Bochs 2.0.pre2"
- rename "Bochs Shell Extensions" to "Register .bxrc Extension" and
make it required. I want to document how it works, so I don't want
it to sometimes work like the docs and sometimes not. Use .bxrc
instead of .bxr.
- create registry keys for Run, Configure, Edit, and Debugger.
packages. Michael Rich made this installer setup based on initial work
by Robert (segra) and an example by Joost Verburg.
Added Files:
Makefile ModernUI.nsh WinMessages.NSH bochs.ico bochs.nsi
modern.bmp modern2.exe penguin.ico
Author: Bryce Denney
Date: Wed Nov 20 19:26:24 EST 2002
For any software interrupt, hardware interrupt, or exception, Bochs
calls the instrumentation macro BX_INSTR_INTERRUPT(). For each call
to BX_INSTR_INTERRUPT(), this patch adds instrumentation code that
looks up each interrupt in the Ralf Brown x86 interrupt list and
prints the name of the interrupt in English. This output can be very
useful in telling what a user space program is doing.
out the cross ref to router setup and tun/tap. Also, on windows you can talk
to the host and the internet without any extra effort (this was wrong
before).
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
to make Bochs compile on DJGPP.
- put references to SIGSTOP and SIGTSTP in #ifdefs
- add definition of BX_CD_FRAMESIZE and CD_FRAMESIZE
- look for curses functions in -ldcurses
Modified Files:
gui/term.cc iodev/cdrom.cc configure.in configure
> Attached is script_compiled.rsrc. This is the end result of running
> osacompile on bochs.applescript and merging it with the resources in
> script.r. (At which point I did cp bochs.scpt/rsrc script_compiled.rsrc
> to get the resource fork as a single file)
>
> To actually turn script.data and script_compiled.rsrc into one single
> application, you still need to run the following
>
> cp script.data bochs.scpt
> cp script_compiled.rsrc bochs.scpt/rsrc
> SetFile -t "APPL" -c "aplt" bochs.scpt
Now I hope I have it right. After the sed script it should look like
%attr(-,root,root) %dir /usr/lib/bochs
I was having trouble getting the initial / on "/usr/lib/bochs"
files specified as before. This solves the problem of
"error: cannot remove /usr/share/doc - directory not empty"
which I was getting when I tried to remove the RPM.
- moved ne2k presence check to devices.cc
- added special make rules for the ne2k and the lowlevel network support
- added macro for the debug feature of the ne2k
- leave just the two configurations that I plan to build binary RPMs with:
one is conservative with just X11 and the options we used before,
and the other includes plugins, lots of display libraries, etc.
- My previous rev to dbg_main.cc caused the debugger to fail when readline
was disabled. With these changes I have tested more thoroughly and it works
with readline enabled or disabled, and with wxWindows enabled and disabled.
- 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
For a whole lot of configure options, I put #if...#endif around code that
is specific to the option, even in files which are normally only compiled
when the option is on. This allows me to create a MS Visual C++ 6.0
workspace that supports many of these options. The workspace will basically
compile every file all the time, but the code for disabled options will
be commented out by the #if...#endif.
This may one day lead to simplification of the Makefiles and configure
scripts, but for the moment I'm leaving Makefiles and configure scripts
alone.
Affected options:
BX_SUPPORT_APIC (cpu/apic.cc)
BX_SUPPORT_X86_64 (cpu/*64.cc)
BX_DEBUGGER (debug/*)
BX_DISASM (disasm/*)
BX_WITH_nameofgui (gui/*)
BX_SUPPORT_CDROM (iodev/cdrom.cc)
BX_NE2K_SUPPORT (iodev/eth*.cc, iodev/ne2k.cc)
BX_SUPPORT_APIC (iodev/ioapic.cc)
BX_IODEBUG_SUPPORT (iodev/iodebug.cc)
BX_PCI_SUPPORT (iodev/pci*.cc)
BX_SUPPORT_SB16 (iodev/sb*.cc)
Modified Files:
cpu/apic.cc cpu/arith64.cc cpu/ctrl_xfer64.cc
cpu/data_xfer64.cc cpu/fetchdecode64.cc cpu/logical64.cc
cpu/mult64.cc cpu/resolve64.cc cpu/shift64.cc cpu/stack64.cc
debug/Makefile.in debug/crc.cc debug/dbg_main.cc debug/lexer.l
debug/linux.cc debug/parser.c debug/parser.y
disasm/dis_decode.cc disasm/dis_groups.cc gui/amigaos.cc
gui/beos.cc gui/carbon.cc gui/macintosh.cc gui/rfb.cc
gui/sdl.cc gui/term.cc gui/win32.cc gui/wx.cc gui/wxdialog.cc
gui/wxmain.cc gui/x.cc iodev/cdrom.cc iodev/eth.cc
iodev/eth_arpback.cc iodev/eth_fbsd.cc iodev/eth_linux.cc
iodev/eth_null.cc iodev/eth_packetmaker.cc iodev/eth_tap.cc
iodev/eth_tuntap.cc iodev/eth_win32.cc iodev/ioapic.cc
iodev/iodebug.cc iodev/ne2k.cc iodev/pci.cc iodev/pci2isa.cc
iodev/sb16.cc iodev/soundlnx.cc iodev/soundwin.cc
reports that on some Linux systems, once you restart the font server
you have to restart X as well. At least with this change it only happens
once, not every time you install.
For a whole lot of configure options, I put #if...#endif around code that
is specific to the option, even in files which are normally only compiled
when the option is on. This allows me to create a MS Visual C++ 6.0
workspace that supports many of these options. The workspace will basically
compile every file all the time, but the code for disabled options will
be commented out by the #if...#endif.
This may one day lead to simplification of the Makefiles and configure
scripts, but for the moment I'm leaving them alone.
More details inside the file itself.
- 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
- 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.
> Dlltool creates a useless file called 'mingwex'.
> I think the first dlltool call should only contain bochs object files and
> no link options or external libraries.
For years we have been writing beyond the end of this array in the VGA code:
bx_bool vga_tile_updated[BX_NUM_X_TILES][BX_NUM_Y_TILES];
and doing who-know-how-much damage to other memory structures in the process.
I changed every reference to vga_tile_updated[][] into calls to two macros
GET_TILE_UPDATED and SET_TILE_UPDATED, and defined the macros to check
the bounds of the array before referencing it. At first I used an
assert, then a panic, then an error, and now I'm not printing any message
at all because there were thousands and thousands of messages during
a boot of win95 when it's updating the win95 logo screen.
- I couldn't resist cleaning up a few confusing-looking things like
"if (condition) { // }". There are no functional changes except for
bounds checking on the vga_tile_updated array.
needs to include the .o's and .a's that are part of the Bochs source code
so that it can create a list of Bochs symbols that need to be exported.
I started out using the same list as the link line, but dlltool
doesn't accept all the same options as the link such as -I and -L.
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.)
textconfig.cc. I can't quite explain why it wasn't a problem before,
but it's certainly a problem now. In fact VC++ does define off_t, so
I removed the #define entirely.
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.
- since rombios.c also supports 8 processors, go ahead and build an 8 cpu
bios as well.
Modified Files:
BIOS-bochs-2-processors BIOS-bochs-4-processors
BIOS-bochs-latest
Added Files:
BIOS-bochs-8-processors
Instead, just build all 4 bioses for 1,2,4,8 processors all the time.
Now they should all stay in sync without any special effort.
Modified Files:
rombios.c Makefile.in
- plugins are installed into ${plugdir} which is defined to be
${libdir}/bochs-${VERSION}/plugins.
Modified Files:
Makefile.in plugin.cc configure.in configure gui/Makefile.in
iodev/Makefile.in
The cmos function get_timeval is only used by the pc_system
to print the last system time on exit. We should remove the
STUBFUNC() macro and simply return 0.
. 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.
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
interface at runtime. The behaviour of the button handlers was wrong if bochs
is configured with plugins and all display libs enabled, wxWindows is present
and a gui using textconfig is selected.
The wx cdrom button still doesn't work since get_first_cdrom() always returns
NULL.
I am somewhat unhappy about the fact that this patch relies (at the
top) on finding rpmbuild in /usr/bin/. A better patch would search the
user's path properly, or perhaps be generated via configure to know
the correct rpmbuild path.
by default.
Rearranged the output to make the output instructions always appear in
the same column, which makes them considerably easier to read.
I have *not* done the physical address display changes -- plan to do
that separately.
stack limits. This is needed for EROS, and probably for L4, as both
rely on this SS fault (and the corresponding GP fault) to trigger the
switch from small address spaces to large address spaces. The
push_16() code was already correct, and I find the inconsistency a bit
odd.
I'm not 100% sure about the push_64() change, so I made the change
with a comment but left it a BX_PANIC() rather than switching it to
BX_INFO. I'll ask Peter momentarily to have a look and let me know.
While I was added, changed the push_16() BX_INFO message to be
consistent with the others -- all now say 'push outside stack limits'.
- add new keyboard init code from Adam Sulmicki
- changed last cli() to #asm cli #endasm
- remove unused cli() function
- don't panic on shutdown status 0x09. just do the normal post
- Now compiles for plain ia-32
- Fixed some printf formatting for ia32 only.
- Update to latest Win32 DLL
- Added an ICEBP (Undoc 0xF8, INT 01) facility.
- updated to use latest VGA refresh routine
Changed "License" to "Bochs License"
Added "Third Party License" section, taken from old docs.
Authored "Will it Work for Me?" section according to instructions in user.dbk comments.
- 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
I believe that if we had correct BOCHSAPI macros on everything then it
would not be necessary, and on my cygwin box it isn't necessary. However
it seems that on other versions of cygwin it is necessary. The trouble with
--export-all-symbols is that it's making bochs.exp much bigger so the binary
grows by 900k, compared to exporting only the symbols that are marked. If
someone with that "other" version of cygwin can figure out where BOCHSAPI is
needed, this can be removed.
a control panel, but now we're calling it a text configuration interface.
Modified:
.bochsrc Makefile.in bochs.h main.cc cpu/Makefile.in
debug/Makefile.in disasm/Makefile.in fpu/Makefile.in
gui/Makefile.in iodev/Makefile.in memory/Makefile.in
Update Makefile.in to compile it that way.
This fixes a VisualAge problem which prevented bximage from compiling.
I still use the C++ linker for bximage since I don't think it
makes any difference. If it does, that should be changed also.
These files are part of the wx plugin, and they should not be linked
into a separate plugin. I have changed gui/Makefile.in and configure.in
to correct this.
- This fixes bug [ 628667 ] don't build plugin for wxdialog, wxmain
- modified: gui/Makefile.in configure.in configure
- 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
- implement "large" "r-echs" "lba" disk translations
- fix if ( (sc==0x01) && (sn=0x01) ) bug
- fix option field in int13 function 0x48 for harddisks
- fix option field in int13 function 0x48 for cdrom
- add "%u" in printf to handle unsigned values
- remove UDIV
- asm helper asm function ldivul idiv_ and idiv_u
one for --disable-cdrom, and one for the defalt if it's not specified. The
enabled action and default are supposed to be the same, but they were
slightly different, and Bochs on BeOS was able to compile with --enable-cdrom
but not with the default action. Solution: now the autoconf actions only
sets bx_cdrom=0 or bx_cdrom=1. Then afterward, it tests $bx_cdrom and does
the enable or disable action. This will be easier to maintain because there
is just one copy of each action, instead of two copies that are supposed to
be kept identical to each other.