when main.cc no longer had one. Now compiling with debugger is working
with the control panel. To get the control panel, you have to click
the snapshot button, and to get the debugger, you have to press ^C.
These should be better integrated (maybe a control panel menu choice
that jumps into the debugger and a debugger command that starts the
runtime control panel...)
better name given what the options actually are.
- now runtime menu behaves more like the others: it updates its floppy
disk image, etc.
- add "ask" as a legal choice for log action
- now runtime menu has both ways of editing log options
a read-only disk image. For systems such as DOS that actually use the
BIOS services, it was also necessary to add code in int13_diskette_function
to recognize a write-protected error and return the correct error
status code (AH=3, Carry Set).
now floppy.cc no longer crashes if you try to open a write-protected
disk or read-only disk image. Instead, it tries a second time to
open the image read-only and only panics if this also fails. If the
image is opened read-only, a readonly flag is set
(bx_floppy.s.media[drive].read_only). If you try to write the floppy
when this flag is set, the write silently fails except for some messages
into the log. Instead of failing silently we should learn what the
floppy controller would really do in this situation and emulate it.
just being careful what I wrote in the Makefile.in. But now configure
itself is substituting values for prefix and exec-prefix that include
curly brackets, so being careful was no longer good enough. If you
run .conf.win32-vcpp it will remove them.
BX_SUPPORT_APIC were used. To follow the pattern used by other
names like this, I changed them all to BX_SUPPORT_APIC.
Thanks to Tom Lindström for chasing this down!
panel. It gives the user the option of continue this time, continue
and never ask again for this type of log message, or die.
- the communication between control.cc and siminterface.cc is still
somewhat crude. I'm trying to implement it so that a network
protocol based on this interface will be simple. I'll get this cleaned
up soon.
BX_USE_CONTROL_PANEL is set. I put the #if...#endif thing around
the entire file in siminterface.cc and control.cc so that it's safe
to compile them in either case.
writes a bochsrc for you.
- since there were two options related to logging, I moved them both
into a new struct called bx_log_options. This follows the pattern
used by other devices.
- in control.cc: removed option 1 from main menu, the one that said
"Read options from bochsrc.txt." This was identical to choosing
the next option, "Read options from..." and only saved you one
keystroke, so I removed it.
an fpos_t, use ftell which returns an int. Without the patch,
Bochs gets an fpos_t and assumes it is an integer type, but
on some systems (like linux with newer glibc libraries) this
assumption is wrong. Malte Cornils <malte@cornils.net> first
reported this bug, and he warned me that ftell may not be portable
to some platforms which treat binary and ascii streams differently.
I haven't found any alternative yet.
gui/control.cc and the simulator. Now all communication between
the control panel and the rest of bochs goes through an object
called bx_simulator_interface_c.
[ #430472 ] DOS HIMEM "A20 line" error
All I've done is moved the call to print_bios_banner later in the
boot process, and the A20 problem goes away. I wanted it early so
that it would get printed before any panic or halt could happen.
Oh well.
- remove --enable-external-cpu-memory
- Neither of these options were compiling anymore, and Kevin suggested:
> My advice would be to scrap both of these options. I hadn't used
> those in some time. The way to implement 'external' devices
> would be via a modular plugin architecture, which both bochs
> and plex86 should implement.
by BCC generated data. This was pointed out by Tom Lindström
<tom@debet.shh.fi>, and I took his suggestion of moving the MP structures
to the end of the file.
I don't have to list them, and also apparantly fixes a mysterious problem
which occurred when Anders Nielsen was trying to build the RPM for
PPC: his rpm appears to gzip the man pages automatically, and then
complains that /usr/man/man1/bochs.1 is not found!
- start using autoconf/configure's standard of prefix, exec_prefix, bindir,
mandir to control where make install puts things
- added script install-x11-fonts
- make install no longer tries to install DLXlinux (since not everyone will
want it). Now you must do make install_dlx if you want it.
- renamed erase_install to uninstall
- in RPM spec file:
- run .conf.linux instead of .conf.linux-x86. This is just a name change.
- build directory hierarchy in the buildroot
- patch up broken symbolic links in buildroot (ugly)
- run font install script in %post
- clean up dlxlinux directory in %preun to avoid warning about not
removing /usr/local/bochs/dlxlinux/bochsout.txt
- remove /usr/local/bochs if nothing left in it
BX_CPU_C bx_cpu;
BX_MEM_C bx_mem;
and when more than one processor, use
BX_CPU_C *bx_cpu_array[BX_SMP_PROCESSORS];
BX_MEM_C *bx_mem_array[BX_ADDRESS_SPACES];
The changeover is controlled by BX_SMP_PROCESSORS, but there are only
a few code changes since nearly all code uses the BX_CPU(n) and BX_MEM(n)
macros.
- This turns out to make a 10% speed difference! With this revision,
the CVS version now gets 95% of the performance of the 3/25/2000
snapshot, which I've been using as my baseline.
is the first attempt to regain the performance of pre-SMP bochs
(1.1.2). When simulating only one processor, stay in cpu_loop forever
as pre-SMP versions did. The overhead of returning from cpu_loop over
and over was slowing us down.
- all bochsrc option names changed to lower case, since the uppercase
versions will not be recognized.
- BIOS is now named BIOS-bochs-latest instead of by date.
patch.linux-mouse can be applied to current CVS
patch.linux-mouse-for-1.1.2 is what Robb sent originally, which can
be applied to version 1.1.2 (bugfix3)
removed unused variables, initialized things that I had missed before,
added a missing arg to sprintf, and a return at the end of int main.
That's all.
- now the HALT macro in rombios.c writes to panic port but does not actually
execute a "hlt" instruction. This allows the .bochsrc to control
whether the BIOS panic is fatal or not.
His change log says:
- Makefile simplified - no longer uses tools86, dataseghack or ld86.
Also enables warnings (-w-) and checks for undefined labels (-u-).
- Macros used in place of multi-line #defines (so !!! conversion by
tools86 not needed).
- HALT() fixed [previously used ';' instead of '!!!']. Needs port 400 to
be added to iodev to be useful?
- isru removed - doesn't seem to be needed now.
- added UDIV16 (for use by bios_printf).
- bios_printf %d implemented.
- set_enable_a20 changed to use PS2 method, since bochs emulates this.
- Keyboard intercept (int 15h/42h) fixed - should set CF, not assume that
caller already has. [The DOS keyb driver for example doesn't!]
- Memory is scanned from C000 to F4000 for extension ROMs - this
picks up VGA BIOS as before, and allows others to be included.
- Comments improved for bios config table, and bit indicating RTC
present is now set.
- Int 9 (keyboard) now calls Int 15h/42h for key releases too.
[Again, this is what the DOS keyb driver does.]
tries to fix it. The shortcuts to register names such as AX and DL are
#defines in cpu/cpu.h, and they are defined in terms of BX_CPU_THIS_PTR.
When BX_USE_CPU_SMF=1, this works fine. (This is what bochs used for
a long time, and nobody used the SMF=0 mode at all.) To make SMP bochs
work, I had to get SMF=0 mode working for the CPU so that there could
be an array of cpus.
When SMF=0 for the CPU, BX_CPU_THIS_PTR is defined to be "this->" which
only works within methods of BX_CPU_C. Code outside of BX_CPU_C must
reference BX_CPU(num) instead.
- to try to enforce the correct use of AL/AX/DL/etc. shortcuts, they are
now only #defined when "NEED_CPU_REG_SHORTCUTS" is #defined. This is
only done in the cpu/*.cc code.