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