Boot from CDROM! Christophe Bothamy added partial El Torito support in
rombios.c, which allows Bochs to boot cdroms. Booting from win2k or winXP
cdrom is not supported yet. The default BIOS includes El Torito functions.
the boot line must say "cdrom".
Example:
boot: cdrom
implementation of int13 diskette function 5 (format track) (Volker)
initialisation of PIC and DMA-2 added to POST code (Volker)
configure script (Bryce Denney)
the configure script now detects your platform and provides a default
GUI and the required compiler flags. All supported platforms should
compile with simply "configure" and "make".
the --with-GUINAME configure option is only needed if you want to override
the default GUI. This is the only way to use the Term, RFB, and SDL
GUIs.
VGA
added VESA BIOS Extensions code by Jeroen Janssen (banked mode only, LFB
support in patches)
vga memory read/write functions in text mode fixed
implementation of CGA mode 320*200*4 (patch from Sebastien Bechet)
VGA BIOS
updated Christophe Bothamy's LGPL VGA BIOS to version 0.3a. This consists
of a bug fix for function ah=13 and VBE support by Jeroen Janssen.
networking
chipmem read/write limit fixed (Mike Lerwill)
writing a byte in 16-bit mode now possible (Mike Lerwill)
new ethertap interface for Linux, which allows Bochs to talk to
the local machine and the internet (Bryce Denney)
NE2000 is now enabled by default on Win32, Cygwin, and Linux compiles
in the .conf.* scripts and release binaries.
fix check for auto transmit disable, which was checking the wrong bit
(Peter Tattam)
Win32 only
niclist.exe has been revised to work on more Windows versions, and it
suggests a usable ne2k line (Dean Payne)
fix timeout setting so that ne2000 does not slow down the whole
simulation (Don Becker)
bug fix: be able to handle multiple packets that arrive at once
(Mike Lerwill)
GUI changes
cdrom button: click this to notify Bochs when you changed the CDROM (Volker)
snapshot button: saves the text on the Bochs screen into a file called
snapshot.txt (Volker)
copy button: on Win32 and X windows, copy the text on the Bochs screen
to the clipboard (Volker)
paste button: on Win32 and X windows, paste the characters on the
clipboard into the Bochs window. This requires keyboard_mapping to
be enabled. (Bryce Denney)
improved text mode cursor for Win32, X11, and SDL (Volker)
new SDL interface (Dave Poirier, debugging by Christophe, Volker, Bryce)
SDL is a graphics library that has works on many platforms. This interface
is experimental, and is missing a few features of the standard Bochs
interfaces: extended keys (arrows, keypad).
MacOS X: add MacOS X carbonized event handlers by Jeremy Parsons
X windows: when not enough colors can be allocated, force use of
private colormap (Bryce Denney)
bug #490570 fixed: OUTB set and command 0xaa encountered (Dave Poirier)
keyboard
completed keyboard emulation with the implementation of the three scancodes
sets (mf1, mf2, mf3) with or without translation. This is based on Ludovic
Lange's plex86 keyboard patch. (Christophe Bothamy)
added a "keyboard_type" option, that defines the answer to an "identify
keybord" request to the keyboard controller. The available values are
"xt","at","mf". (Christophe Bothamy)
added an optional keyboard_mapping option that enables to use your
country specific keyboard with Bochs. If enabled, the keymap file must be
specified in bochsrc. The available keymaps are US, German, Spanish and
French for PCs running X11. Contributions are welcomed. (Christophe
Bothamy)
added paste button, which causes the emulated keyboard to type characters
from the system clipboard. This only works when keyboard_mapping is
enabled. (Bryce Denney)
cdrom
bug fix: win32 could not read a cdrom image file
eject cd support for linux (patch from Petr Stehlik)
BeOS fixes
changing cdrom media is possible now with CDROM button
sound blaster(tm) emulation (Volker)
you can use --enable-sb16=freebsd now
16-bit DMA controller added
16-bit mode of the SB16 implemented (output to file works)
floppy drive (Volker Ruppert)
implementation of the floppy command 'format track'
implementation of read / write operations with MT=0
behaviour of a few floppy commands fixed
floppy reset behaviour fixed
lots of other fixes
fixed bug [ #468340 ] pic:slave: OCW3 not implemented. Now the slave PIC
supports all the modes that the master PIC does, and nobody will see this
message again.
serial port (by Volker Ruppert unless noted)
improved IRQ handling
now Windows 95 serial driver works correctly
fixed the return value of the MCR (loopback bit)
interrupt reasons LSR change and MSR change implemented
the number of data bits is considered when sending data
all serial port changes are tested in loopback mode only
serial port emulation fixed for FreeBSD and OpenBSD (Stu Grossman)
fix receiver poll frequency so that it doesn't slow emulation (Stu Grossman)
Bochs debugger
when tracing, print the instruction just before it is executed, instead
of just after (Greg Alexander)
after a triple-fault panic, you can now return to the debugger
symmetric multiprocessor (SMP) simulation
no more panic if you read the EOI register
fixed default destination format in local APIC
fix SMP instruction tracing in bochs debugger
fix deadlock when debugger enabled and all processors HLT
MSR support added by Zwane Mwaikambo
simulation of interrupts is more accurate (Volker)
implemented edge triggered interrupt mode
added functions raise_irq() and lower_irq()
programmable interrupt timer (Greg Alexander)
fixed the PIT gate and improved the PIT printing options
experimental real-time PIT
parallel port improvements (Volker Ruppert)
bug fix: hard disk errors caused by overflowing imul in the BIOS code.
Sebastian Bechet and Peter Tattam tracked it down and fixed it.
fix some memory leaks (patch from Darko Tominac)
Double-Word IO is supported for ATA devices
fix bash-specific syntax in install-x11-fonts script
print stack_return_from_v86 error only the first 100 times
emulated cdrom can now read from ISO image files, on any platform.
new PIT model by Greg Alexander which is much more complete than the
old one. The new PIT is used by default, but you can switch back to
the old one if you configure with --disable-new-pit.
(PIT = 8254 programmable interrupt timer)
new configuration menus by Bryce Denney, which allow you to change any
bochsrc option using text menus, then save the configuration into
a new bochsrc file for later use. You can disable the new code using
configure --disable-control-panel. Also you can use the command
line arguments -nocp or -nocontrolpanel. Also, there is a new
"Config" button on the GUI that allows limited changes to the
configuration at runtime, such as changing the floppy disk.
add docbook documentation directory in the sources under doc/docbook.
The transition from HTML to docbook documentation is still in progress.
Add new log action "ask", as shown in these example bochsrc lines:
panic: action=ask
error: action=ask
When an event occurs which is set to "ask", you get a beep and message
on the text terminal that asks what you want to do. Choices are: continue,
continue and disable future messages from this device, quit immediately,
or segfault (where abort() function is available). If compiled with
--enable-debugger, you can also choose to enter the debugger.
Parallel port emulation cleaned up by Volker Ruppert. See .bochsrc for
syntax of new parport1 line in bochsrc.
PCI support improved by Volker Ruppert, including BIOS changes. Still
not complete.
floppy controller returns a proper error response if you try to write
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).
the ROM BIOS now prints panic messages to the console. Thanks to Cliff
Hones for his console display code.
the ROM BIOS detects nonbootable disks (Barry Allard), and prints a message
on the console. Barry Allard's patch who helped with checking the boot
signature.
LBA support added for hard disks. (Not tested very much.)
X Windows specific:
commit patch from David Haslam
[ #455763 ] Cursor trail with DOS Edit/Minix vi
error for missing fonts now points to the documentation
new option --enable-idle-hack, by Roland Mainz, which makes Bochs more
friendly toward other processes when its CPU is idle. Presently,
this option is specific to X windows.
Win32 specific:
now Windows 95/98/ME can read the physical cdrom (Don Becker)
The default configuration for Win32 VC++, given in .conf.win32-vcpp,
now enables the NE2000 and renames all .cc files to .cpp. This keeps VC++
happy but may make it hard to use CVS.
The default configuration for Cygwin, given in .conf.win32-cygwin, now
enables cdrom and SB16.
See "new docs" on the web site for compile instructions for VC++ and Cygwin.
The sources include a VC++ workspace, in addition to the old "nmake"
makefile.
ethernet support (emulated NE2000 card), coded by Don Becker. This
implementation requires a library called WinPCap, which you can
download from http://netgroup-serv.polito.it/winpcap.
new utility called niclist.exe which lists the ID number of all your network
cards (well probably you just have one). The ID be used when setting up your
.bochsrc.
patch [ #466403 ] make text colors more accurate. The author did not leave
his/her name.
fix GUI bug [ #452159 ] win32: mouse stuck if bochs win partly off screen
Now we center the mouse periodically, whether or not the mouse has
wandered outside of the window or not.
event handler recognizes the extended keycode flag
fixes for raw floppy and floppy disk images (Don Becker)
Linux specific:
Ethernet (emulated NE2000 card) now works in Linux! Contributed by
splite@purdue.edu. This has been tested using host OS kernel 2.2.14, and
works with telnet, ftp, irc, lynx, etc. Because it is a packet filter
solution, you aren't able to talk to the host machine, only to other
machines on the network.
The default configuration for Linux, given in .conf.linux, now enables
the NE2000 model.
RPM build process configures with --prefix=/usr so that everything is
installed in /usr/bochs instead of /usr/local/bochs.
DLX Linux disk image is now installed so that only root can write it, to
avoid security problems. When you run the bochs-dlx script, it creates a
local copy in your home directory and then runs it.
code that determines the capacity of a cdrom now works for both ATAPI
and SCSI drives (splite@purdue.edu)
applied patch from bochs@sigint.cs.purdue.edu. The comments are:
> The Linux 2.4.5 CD-ROM driver sends a READ_DISC_INFO command which caused
> an "unrecognized ATAPI command" panic. Looks like READ_DISC_INFO is only
> recognized by CD-R and CD-RW drives, so I ignore it for now.
Amiga MorphOS specific:
Bochs now compiles and works on Amiga MorphOS. Configure with
--with-amigaos. For AmigaOS only, see .bochsrc for use of fullscreeen and
screenmode options. The Amiga MorphsOS is written and maintained by
Nicholai Benalal .
raw cdrom supported if you configure with --enable-cdrom
BeOS specific:
Bochs compiles and works on BeOS. Configure with --with-beos.
Bernd Thorsten Korz maintains the BeOS port.
raw cdrom supported if you configure with --enable-cdrom
MacOS X specific:
Bochs now compiles and works on MacOS X. Configure with --with-carbon.
Emmanuel Mailliard ported the Macintosh code to the
Carbon API.
The MacOS X application is built using (gasp) mkdir, copy, and rez.
Surely this is not the right way, but it works.
raw cdrom supported if you configure with --enable-cdrom
RFB mode:
apply patch.rfb-mouse by MURANAKA Masaki (monaka@users.sf.net)
see this source forge bug [ #457968 ] Strange mouse motion on RFB
add a retry loop in RFB code, so that if port 5900 is not available
it can try 5901, etc.
Bochs Debugger:
do a vga update whenever you print a debugger prompt.
added debugger command "info fpu" that prints the FPU registers. If you
do "info all" you get cpu and fpu registers.
added debugger command "info ne2k" which prints all the registers
of the NE2000 model
add ability to do register tracing and flag tracing (Dave Poirier).
Try the trace-reg-on and trace-reg-off commands.
instruction trace now includes time ticks
fixed problems in which bochs compiled with debugger measured time
differently from bochs compiled without debugger. Also when instruction
trace was enabled, breakpoints and control-C did not work. Also,
breakpoints at the beginning of an interrupt handler did not work.
add dependencies to makefiles
logging code moved into a separate file, logio.cc
new option --enable-slowdown-timer, by Greg Alexander, which kicks in if
Bochs simulation time starts to run faster than real time. This helps to
keep the Bochs clock in sync with the real clock when the CPU is mostly
idle.
new option --enable-iodebug, by Dave Poirier, which creates an I/O
interface to the debugger. This lets you write software to be emulated
in Bochs which can turn on instruction, register, or memory tracing
using I/O accesses.
improved detection of readline in configure script
configure substitutes the version number into many files, instead of
using sed in the makefile. There are still a few uses of sed remaining.
you can now use environment variables in bochsrc values. For example,
diskd: file="$BOCHS_IMG/diskd.img", cyl=615, heads=6, spt=17
configure with --prefix=PATH works now
running configure from a different directory works now, thanks to
a patch from Edouard G. Parmelan
fix [ #433759 ] virtual address checks can overflow.
> Bochs has been crashing in some cases when you try to access data which
> overlaps the segment limit, when the segment limit is near the 32-bit
> boundary. The example that came up a few times is reading/writing 4 bytes
> starting at 0xffffffff when the segment limit was 0xffffffff. The
> condition used to compare offset+length-1 with the limit, but
> offset+length-1 was overflowing so the comparison went wrong.
cmpxchg8b patch from Michael Hohmuth
apply patch from Thomas Fitzsimmons to fix compile
problems when BX_SUPPORT_PAGING and BX_USE_TLB are turned off
fix bug introduced in 1.2.1 which caused spurious exceptions.
See patch #439314, Exception 1 (debug) on HALT, from
thomas.petazzoni@meridon.com.
add panic in ctrl_xfer32.cc where the IRET32 implementation is broken.
This only happens if you are NOT in vm8086 mode or protected mode.
The intent is to warn people when they are getting bad emulation, and
encourage people to report how they got to that point.
apply patch from Santiago Bazerque. See this bug report:
[ #463018 ] retf not removing parameters sometimes
fix bug [ #461730 ] IRETD causes problems if NT-flag is set
reported by Peter Lammich.
apply patch [ #455014 ] CR0 bug in 80486, described as:
> In the register CR0, when the bit PM is enabled, the bit 4 is 0
> when should be 1.
apply patch from Mike Rieker associated with this bug
report: [ #480422 ] gdt 'accessed' bit
in task_switch when it tried to ensure that the old TSS was paged in,
it actually used the new TSS address, fixed.
updated the instrumentation code, and added a working example. To try
it, configure --enable-instrumentation=instrument/example1. Then when
you run bochs, you will get one line for each instruction PC and for
each I/O access in a new file called bxevent.txt.
set a bit in the CMOS that says the processor has an FPU. This is
from patch [ #455006 ] Device byte is not initialized aptly.
Author did not leave their name.
add logging code to the "null ethernet" which does not require host OS
support. All this does is print the outgoing packets from the guest OS.
cleanup of log functions (Todd Fries)
add BX_ERROR for every command in ATAPI-6 that bochs does not support.
I still need to do add some commands from older specs that are obsolete
(and not listed) in ATAPI-6. Commands that aren't in the spec will still
panic.
only put 0xf into the 2nd hard disk field when the cdrom is not present.
This is a patch from Volker Ruppert , who
comments: "The fdisk command reports an unusable second harddisk if the cdrom
is enabled. This patch helps, but I don't know if it is the right way."
make hard disk code return error codes when data is not available instead
of just panicing. In particular, if the logical sector is out of bounds
or the disk image cannot be read/written at the desired offset, we now
abort the ATA command and return an error code. Many of the old BX_PANIC
messages are turned to BX_ERROR, so they will still appear in the
log, but now the device model will try to communicate this fact to
the OS instead of simply giving up.
don't blindly reject odd length atapi commands. There are cases when
it's really ok according to ATA-4.
for big endian machines, reversed the bit fields in interrupt_reason.
This was pointed out by Nicholai Benalal.
extended keyboard improvements by Dave Poirier
major mouse patch from Dave Spring, that implements several missing
mouse modes.
commit keyboard patch from David Haslam
posted to mailing list, that addresses the problem of each key press
printing ^@. See cvs log for details.
mouse performance fixes by Greg Alexander and Robb Main
NE2000 fixes by Frode Vatvedt Fjeld, ecelca@yahoo.com, Greg Alexander,
and angelos@openbsd.org.
fix bug [ #468340 ] pic:slave: OCW3 not implemented. Some event handling
code appeared in the master pic but not the slave pic.
fix compile problems in SB16 code, related to fpos_t being treated as
an integer.
patch from Volker Ruppert to fix
midi output file so that winamp can play it.
some cleanup of serial code by Todd Fries and Volker Ruppert, but it
doesn't work yet.
[ #432382 ] build debian packages patch
add build/debian directory from Rob Lemley
which allows us to make Debian packages!
optimize for speed when simulating one processor. Now 1-processor
performance should be equivalent to 1.1.2.
[ #425640 ] sb16 assumes fpos_t is long int
This fixes compiles of iodev/sb16.cc on linux systems with newer libraries
in which fpos_t is not an integer.
[ #432488 ] SMP:assert "n_logfn < MAX_LOGFNS" fails
increase MAX_LOGFNS since we ran out of them on an SMP simulation with
4 processors
changes to compile clean on cygwin:
don't use the WIN32 snprintf define for cygwin
add ssize_t definition for cygwin
only compile "struct timeval tval" if select is available
on that platform.
[ #432491 ] SMP: CPUID says no APIC feature
clean up inconsistent use of BX_SUPPORT_APIC and BX_APIC_SUPPORT, which
caused the CPUID to report no APIC was present
[ #431025 ] --enable-external-device-models broken
removed configure options for external-device-models and
external-cpu-memory. These don't work and aren't going to be fixed.
[ #429448 ] configure: -lreadline when not there
Now configure allows you to choose not to use readline, even if it's found
on your system.
[ #428915 ] apply extended keyboard patch
extended keyboard patch by Dave Poirier
[ #428626 ] if no X11 found, configure&make fails
Now configure halts if X windows is selected but no X libraries are found.
updated rombios to version 1.13. This fixes several problems:
[ #430472 ] DOS HIMEM "A20 line" error
This problem was apparantly caused when Bryce added a function that prints
the BIOS version, and he called it too early in the boot process. Now the
same function is called later, and it doesn't break the A20.
[ #431010 ] SMP structure overwritten in v1.2
SMP structures were getting overwritten by BCC-generated data,
preventing SMP operating systems from detecting that other processors
were available.
[ #431016 ] bios: SMP struct has wrong entry count
SMP structure had the wrong entry counts
very minor doc updates (typos, replace broken link to mtools info)
quit when the user clicks the power button, even if they have disabled
panics.
win32 now defaults to having mouse capture mode turned off. For new users,
it would be distressing for their mouse cursor to disappear until they
pressed F12.
[ #428222 ] vga font not installed
added script called "install-x11-fonts" which should help people install
the VGA font on X windows systems, if it isn't already there.
This version is the first feature release from the Bochs project on Sourceforge.
The following list describes the changes since 1.2.pre1.
[ #427259 ] rombios HALT calls don't print
Fixed bios/rombios.c HALT macro so that it writes the line number of the
panic to the PANIC_PORT (port 0x400) and then does NOT do a halt
instruction. Also changed iodev/unmapped.cc so that the line number written
to PANIC_PORT is displayed as a BX_PANIC message. Because the HALT
macro now triggers the normal panic behavior, it can be controlled by
the bochsrc.
[ #429016 ] crash if no hard drive
rombios used to call HALT macro if no hard drive was found. Now it only
calls HALT if a hard drive has an illegal geometry.
[ #425388 ] include source for simple disk img tool
[ #428478 ] mkimg tool creates image 1 byte too big
Added bximage tool, which makes empty floppy and hard disk images.
It is now included in the top level Makefile, so it will get built
by default on all platforms.
[ #426036 ] eth_fbsd.cc compile problem on solaris26
added configure test so that "configure --enable-ne2000" only
includes the Berkeley Packet Filter code (eth_fbsd) if the header
file can be found. If you don't have BPF the ne2000
will not actually move packets, but at least it will compile clean now.
[ #428214 ] 1.2.pre1 need documentation for binaries
Write windows and linux specific documentation to be installed in
binary releases.
[ #429258 ] disable RESET for version 1.2
Since soft reset was not completely working, I reverted the reset patch.
Now it does panics on reset instead of trying to reboot, as the old
bochs versions did.
[ #428222 ] Should the linux RPM install vga font?
now font/vga.pcf will be installed in the RPM package
[ #429020 ] stop renaming the BIOS!!!
new BIOS changes are now in BIOS-bochs-latest, instead of a BIOS
whose name changes every time we change anything! To help distinguish
different BIOS versions, the BIOS now prints its RCS Id into the
log file.
[ #428625 ] compile problem if SHOW_IPS is on
removed extra paren that broke SHOW_IPS
This version is the first feature release from the Bochs project on Sourceforge. It is marked "pre1" because some of the new features have not had widespread testing yet. When more features/platforms/OSes have been tested (and bugs fixed) we will make a real 1.2 release.
major cleanup of .bochsrc
major cleanup of stderr output: prints bochs version information when
starting, and at the end it tries to print the message that caused
bochs to quit.
two hard disk support (diskd). At present, you cannot have two
hard drives and a cdrom at the same time, because there is only
one IDE controller with two channels.
split hard disk support allows different partitions to be stored in
different image files
two new GUI choices: term mode and RFB mode. Term is a text-only
interface, and RFB creates a server that can be accessed using
the AT&T VNC viewer.
now Bochs can simulate an SMP machine, if you configure with
--enable-processors=N. Configuring more than one processor has
a major performance impact, so the default is 1 processor.
See SMP documentation for more details.
to make SMP work, bx_mem and bx_cpu have been replaced with
bx_mem_array[] and bx_cpu_array[]. The cpus are referenced through
the BX_CPU(n) macro and memories through the BX_MEM(n). Normal
mode has one cpu and one memory, SMP mode has multiple cpu's and
one memory, cosimulation mode has multiple cpus and multiple memories.
use --enable-cpu-level=6 to make Bochs claim to be a Pentium Pro.
The only feature that requires CPU level 6 is apic support.
new logging system by Todd Fries, which has 4 levels of event
severity (panic, error, info, debug). There are new .bochsrc
options that control what action to take when a
panic/error/info/debug event occurs.
now searches for .bochsrc, bochsrc, bochsrc.txt, and (on unix only)
$HOME/.bochsrc.
use GNU readline library if --enable-debugger is on, as long as readline
can be found on the machine
configure checks for existence strtoull and strtouq. if neither exists,
Bochs uses its own implementation
applied patches from Cliff Hones to fix up the
rombios. This includes many improvements, which you can list by
doing "cvs log -r 1.6 bios/rombios.c" or looking at cvsweb.
added suggested geometries of larger disks to the documentation
this is the first release to have official binary packages for win32
and Linux. There is a new "make rpm" in the top-level Makefile which
will create an RPM of the current bochs directory. To use this,
become root and type "configure; make rpm".
applied some FreeBSD patches from Maxim Sobolev (cdrom and serial).
updated Elpin VGA BIOS to version 2.40, and changed pointer in .bochsrc
fixed .conf.x86 script so that it uses c++ instead of egcs for C++ files
now Makefile targets that recurse into subdirectories use double colons,
so that it will always recurse into subdirectories. Now a single make
command should notice a modified source file in a subdir.
fixed bug in bx_panic. If BX_PANIC_IS_FATAL==0 and a (non-fatal) panic
occurs, it used to call bx_atexit() and then return. It should never
call bx_atexit, which starts to shut down the simulator, unless it's
really going to quit!
support 2.88 MB floppy disks (Todd Fries)
since dataseghack is checked in as non-executable, invoke it with
"csh dataseghack"
This was the first SourceForge release by Bryce Denney, with patches from many sources on the bochs-developers list.
add BX_PANIC_IS_FATAL option. WARNING: Due to a implementation bug, nonfatal panics can create problems. If you need to use BX_PANIC_IS_FATAL=0, move the bx_atexit() after the return line. This problem was corrected in CVS after 5/2/2001, and appears in version 1.1.2 and later.
win32:
CDROM drive letter is no longer hardcoded
bypass fstat when opening WIN32 raw floppy disk
device models:
support sun cdrom
mouse: fix panics on 0xd3, 0xeb commands
harddrv: implement aborts on a few SET FEATURE commands
vga: implement VGA enable register 0x3c3
pit: allow modes 0,2,3 on any timer
many portability fixes
fix compile problems in FPU related to inline keyword
configure checks if compiler allows "LL" for 64-bit constant
renamed fpu function fabs, conflicts with math library
fix pointer crashes in FPU on 64-bit machines
provide libc functions snprintf, strtoull if missing
check if compiler allows __attribute__
comment out sigcontext struct definition because it conflicted with sigcontext on host system
Started work on special guest driver to host interface, which
will ultimately be used by disk/video/network etc drivers
to enhance performance in bochs. Not usable yet.
Fix to mouse BIOS code (int15h:c2:06:00). The use of
local code block/variables is not handled correctly by
the bcc compiler. Removed braces, and moved local variable
to top level of function.
Fix to extended mem access BIOS function (int15h:87).
This was killing Minix.
Fix to floppy.cc, was reading one extra sector.
Fix to Makefiles etc for compiling without floating point.
Minix boots again inside bochs. Though, the keyboard code
is not yet right for running Minix. For some reason, if
you comment out the 2 keyboard ACKs at lines 947 and
966 in iodev/keyboard.cc, it works.
Bochs now can be compiled to use wm-FPU-emu,
the x87 FPU emulator included in the Linux kernel. It
was written by Bill Metzenthen. Look in fpu.html for
more info. Added "--enable-fpu=" to configure. For now,
this will only work on x86, since wm-FPU-emu has some
assembly components.
Coded illegal instruction exception for old XBTS and IBTS
opcodes.
Moved default cpu level to 486.
Decoupled main web page from user documentation in "docs-html".
bochs-990907a
Fixed bug in rombios.c, new bios is bios/BIOS-bochs-990907a
Commented out load32bitOSImage directive in .bochsrc,
should not have been left uncommented.
integrated mega patches which allow bochs to boot
and run NT4/SP4 (simulating a 486sx)
- Magic breakpoint
- IDE CD-ROM (needs low-level OS stuff for all OSs)
- Current time in time0
- Instruction based simulation clock
- Time breakpoints
- Bios improvements [rombios-new.c]
- Read/write breakpoints
- Mode switch breakpoints
- Bugfixes in iret
- Bugfixes in the fetch/decode tables
- CPUID instruction implemented
- Additional support for the AC and ID bits
- Intel division 'emulation'
- Floating point fixes
- INVLPG instruction implemented
- Read-modify-write fault behavior fix
- Paging bugfixes
- Minor LES fix
- Interrupt handling bugfix
- V86 mode bugfixes
- Debugger bugfixes
- Sync on cpu implemented
- Sync on memory implemented
- New debugger commands:
trace-on
trace-off
ptime
sb
sba
diff-memory
sync-memory
sync-cpu
fast-forward
info-addr
record
playback
modebp
where
print-string
show
print-stack
load-symbols
watch
unwatch
phy2log
force-check
- Mouse support through PS/2 interface
- IDE improvements and bugfixes
- External disk simulation interface
- Keyboard bugfixes
- Mouse support in the X11 gui
- Improved debug support in I/O devices
- VGA improvements and bugfixes
New .bochsrc directives: "time0", "magic_break", "ne2k", "cdromd".
Task switch bug fixed
Integrated Mac port enhancements
bochs-990312b
(ftp://ftp.bochs.com/pub/DT/bochs-990312b.tar.gz)
First teaser release with dynamic translation framework!
Only a few instructions translated, but the framework
is coming along nicely. Read "readme.990312b" in the
ftp directory above for more info. I include some
preliminary performance tests, and you can benchmark
bochs with dynamic translation on your own machine.
Converted all read-modify-write instructions to use
RMW versions of write_virtual_xyz() & read_virtual_xyz().
Addition of Linux/PPC to successful port matrix.
Dynamic translation framework is coming along nicely,
but not included here yet. I'll include it soon in
an upcoming release.
Roadrunner OS booted.
Integrated many patches from bochs users:
Floppy: change line support.
Beos: BX_KEY_{LEFT,RIGHT}_ARROW, omitted _ARROW.
Bochs port to Cygwin32 without cygnus layer (pure win32 mode).
New version of win32.cc, fixes to fetchdecode.cc for win32.
Fixes to keyboard.
Fixes to X11 cursor problem.
Added --enable-port-e9-hack for sending port output to console.
New version of macintosh.cc.
Changes to allow quoting pathnames in .bochsrc so you
can have filenames with spaces.
Harddrv.cc: implemented command 0x21 as 0x20.
bochs-990127d
Rehashed CPU code in preparation for dynamic translation.
Fetch-decode, address resolve, and execute phases are
all distinct now.
Each instruction gets it's parameters from a pointer to
a structure passed to it.
Added '--enable-time0' option to configure. Use this only
if you want to always start the cmos clock at the same
value every time. This is valuable for reproducable runs.
It was invaluable to me during cosimulation of this version
of bochs against an older one to find bugs.
Fix in cpu/paging.cc. Set all segment register descriptor
caches to invalid, until they were properly loaded.
bochs-990110b
Fixed handling of CR0.val32 shadow to individual flags.
Oops, I goofed in bochs-990110a.
Redhat 5.2 boot floppy image works again.
Incorporated new serial port diffs.
Configure senses if you have select(). New macro BX_HAVE_SELECT.
Added future configure option '--enable-dynamic-translation'.
Don't use this, as its not yet supported.
bochs-990110a
Direct floppy disk access fix. I was only checking if
file was a character-special file. Added check for
block-special file.
Minor fixes for Macintosh platform.
Small changes to compile bochs on BeOS R4 for x86 using gcc.
Fix to timer framework code in pc_system.cc.
Fix to iodev/floppy.cc, was using AND instead of OR.
Fix to handling of IOPL flag in real-mode.
change CR0 reserved bits handling to model actual x86
added .conf.beos-x86-R4 script
completely rehashed INT 1A BIOS time-of-day services.
LOADLIN.EXE no longer complains about being in v86 mode.
bochs-981229a
Changed configure option '--with-win32-vc50' to '--with-win32-vcpp'
Changed script file '.conf.win32-vc50' to '.conf.win32-vcpp'
Integrated Macintosh port of bochs by David Batterham
Added '--with-macos' option to configure.
Updated web pages with pointer to MacBochs site and local info.
bochs-981222a
Generated new bios 'bios/BIOS-bochs-981222a'
Serial port: integrated diffs I received which implement a single
8259 UART with IO attached to console
Partially integrated mods from some limited i440fx PCI support
A few more mods to integrate, DON'T USE YET
Added '--enable-pci' to ./configure and BX_PCI_SUPPORT macro
Added 'i440fxsupport: enabled=' option to .bochsrc
Added settable BX_SHADOW_RAM macro to config.h.in, in case
your software counts on C0000..FFFFF being writable.
Added 'cmosimage:' option to .bocshrc. If you use this,
an image file is read into CMOS registers upon startup.
Then certain values are written over, as the IO devices
initialize. Not complete yet. DON'T USE YET
Added 'newharddrivesupport: enabled=' option to .bochsrc.
Set this to 0 or 1. If set to 1, some new hard drive commands
are accepted and some behaviour is changed per some diffs I
received. After I have time to look at these more, I'll
integrate them permanently and get rid of this option.
Some fixes to keyboard/floppy/hard-drive support.
Rehashed the CMOS code. Now support the RTC, interval timer
and alarm clock. This code has not been tested properly.
Rehashed the bochs native timer support which some of
the IO devices use.
bochs-981102b
Rehashed paging.cc and TLB. Fixed problem with dirty bit not
being set after a read operation cached an entry in the TLB.
Also, added in legwork for supporting 486+ syle paging behaviour
for use with OS's which have copy-on-write strategies.
bochs-981015a
cosimulation support for verifying a 2nd CPU simulator (lot's of files touched)
moved web pages and ftp to bochs.com
developer's email list now hosted by RedHat
planning dynamic translation
bochs-980707a
added commands to debugger
CRC debugger command to checksum regions of memory
"info dirty" command, to display pages dirtied since last display
"take dma" now takes optional count.
rehashed phyical read/write routines for effeciency
Winstone'98 success so far:
Access 97
CorelDRAW! 7
Excel 97
Lotus 1-2-3 97
Word 97
PowerPoint 97
Quattro Pro 7
WordPerfect 7
Winstone'98 tests remaining:
Netscape Navigator
Task Switching 1
Task Switching 2
bochs-980629a
much in the way of x86 validation; many x86 emulation fixes!
you can now pass all .bochsrc options on command line
deleted breakpoints can now be reused, in debugger
added user-level 486 instructions (set config.h:BX_CPU_HACKED to 4 to use)
some minor speed-ups
Unix machine can generate complete Win32/MS Visual C++ Makefiles, config files
You may now create your own instrumentation library, with
--enable-instrumentation="instrument/mydir"
Winstone'98 success so far:
Access 97
CorelDRAW! 7
Excel 97
Lotus 1-2-3 97
Word 97
Winstone'98 tests remaining:
Netscape Navigator
PowerPoint 97
Quattro Pro 7
WordPerfect 7
Task Switching 1
Task Switching 2
bochs-980512a
added disassembly commands to debugger interface
fixed bx_panic() calls when using debugger
bochs-980512a
more debugger commands and features
co-emulation debugger commands
added more instrumentation macros to CPU code
added handling of EEh (echo) from keyboard ctrl to keyboard
bochs-980407a
added some instrumentation features:
added '--enable-instrumentation' to configure
added "instrumentation.h" that defines instrumenation macros
added macros to some main decode loop and some instructions in cpu/
added "win32.txt", updated "gui/win32.cc", added "bochsrc.win32"
from David Ross (dross@pobox.com). win32 GUI code now filled out.
bochs-980331a
added '--with-nogui' option to configure to run without any GUI. Also provides
documentation for the GUI specific functions.
recoded the PS2 mouse BIOS and some mouse hardware emulation. Mouse now
works on X11. Haven't implemented it for BeOS yet. Double click timing
doesn't work yet though.
(possibly) fixed the panic during Win'95 install due to keyboard.
added private_colormap option to .bochsrc. requests a non-shared
colormap from your GUI. Only implemented on X11 so far.
added mouse option to .bochsrc. Not implemented yet for any of
the GUI specific modules, but it will request that mouse events not
be generated by the GUI.
changed palette change technique to tell GUI of each individual
palette element change. The GUI has a chance now, to tell
the VGA code if a redraw of the screen is necessary. Redraw
is not necessary if using a private colormap.
bochs-980311d
configure works with any permutation of disassembler and debugger
fixed endian changes, messed up on 980304a
Makefiles now use CC, CXX, CFLAGS, CXXFLAGS
added --enable-cpp option to configure for use with that C++ suffix
got BeOS code up to speed on the cursor changes.
bochs-980304a
changed BIG_ENDIAN & LITTLE_ENDIAN to use BX_ prefix
added text mode video block cursor
added vi package to Redhat install script
bochs-980303a
debugger command "info break" to display breakpoints
debugger command "d[elete] xyz" to delete breakpoints
patch to gui/x.cc for 24bit displays
added instructions and script for installing RedHat 5.0 from CD
rehashed CMOS RTC code so Linux works
bochs-980224a
added 32bit hardware task switching (only from jump's so far)
fixes to floppy emulation
created new optional debug interface, similar to GDB
rehased disassembler for use in debug environment
added hardware scrolling to VGA
fixed handling of errorcode returned for paging errors
Linux now boots!!!
bochs-980124c
BIOS floppy read/write fix. AH was not being set.
moved config.h:BX_PROCESSOR_IPS to .bochsrc 'ips' directive.
Now you can run the same binary on different speed machines
of the same type. Just tune the 'ips' directive.
converted vga.bdf font to bitmaps for use with BeOS.
The BeOS module no longer uses any BeOS system fonts,
but just includes the bitmaps in the source code.
included patches for 980118.
Changed 'mips' field to 'm_ips'. Hopefully, this
will fix compiles for MIPS processor based machines.
bochs-980118a
Added toolbar to top of GUI
Floppy drive can switch between 1.44M & 1.680M formats
Implemented Int15 function 87h in real BIOS
bochs BIOS is now 100% clean of any 'C' hacks.
bochs-971216b
Several optimizations
Added prefetch queue
Made all device models into C++ classes
Moved state information for each device model into state
structure within class for future save/restore of device state.
bochs-971118a
Moved all GUI specific files (X11 and BeOS) into gui/ subdir
Put in temp fix for exception handling restoring original eSP
Began process of removing any knowlege of scancodes from GUI code