# ChangeLog

- ## Version 1.2 (6/3/2001)

  Changes in 1.2.1 (June 12, 2001):
  - more work on makefile for building RPMs
  - [ ] 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.
  - [ ] 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.
  - [ ] 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.
  - [ ] 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
  - [ ] --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.
  - [ ] configure: -lreadline when not there Now configure allows you to choose not to use readline, even if it's found on your system.
  - [ ] apply extended keyboard patch extended keyboard patch by Dave Poirier
  - [ ] 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:
    - [ ] 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.
    - [ ] 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.
  - [ ] 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.

- ## Version 1.2 (6/3/2001)

  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
  - [ #428219 ] PCI doesn't compile with SMF=1
  - [ #429375 ] pthreads detection broken
  - [ #429073 ] configure: if no X11, makes bad config
  - [ #429229 ] install current .bochsrc in binary rels
  - install Tim's man pages on linux RPM
  - BIOS prints messages in log in case of boot failure
  - rewrote instructions for compiling in win32 (win32.txt)
  - fixed link in HTML changelog.html to point to the real sources on SF.
  - added missing LOG_THIS definition to gui/nogui.cc and gui/rfb.cc
  - added additional check for null pointer in debugger exit routine
  - added diskd to .bochsrc

- ## Version 1.2-pre1 (5/25/2001)

  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).

- ## Version 1.1.2 (bugfix3) (5/16/2001)

  - FPU is now compiled in by default.
  - 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"
  - double fault patch from Thomas Petazzoni < thomas.petazzoni@ifrance.com >, sourceforge patch #423726.
  - removed -fno-builtin from fpu makefiles
  - redefine u_char, u_short, etc. in order to not conflict with system definitions of these same types.
  - in cdrom.cc, remove the extern "C" { } structure around some of the header files. This is no longer necessary.
  - do not panic on hard disk command 0x1f2 (read sector count)
  - in keyboard.cc:
    - apply Todd Fries' reset patch
    - recognize most of the "Grey" insert/delete/home/end/etc. keys the same as keypad keys.
    - removed panic on "kbd_ctrl_to_kbd(): got value of 0x??"
    - implement mouse command 0xf6 (set defaults)
  - apply Suboner@aol.com's Xwindows timing patch, #418730.
  - remove all patches from patches subdir which have already been applied. The remaining ones are under consideration but not applied.

- ## Version 1.1.1 (bugfix2) (4/9/2001)

  - fixed type error in win32 soundwin.cc, added typecast to (LPWAVEFORMATEX)
  - now configure --with-win32-vcpp provides correct #defines for VC++

- ## Version 1.1 bugfix1 (4/6/2001)

  - 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

- ## bochs-2000_0315

  - Kevin removed all references to Bochs Software Company and "this is commercial software," and replaced them with Mandrake copyrights and LGPL.

- ## bochs-2000_0104c

  - FPU mods:
    - Integrated new FPU emulator mods from Bill Metzenthen.
    - Bill ported x86 specific assembly files to C.
    - I helped port the FPU emulator to work on big-endian machines. (tested on SPARC so far)
    - The FPU emulator is now integrated into the main bochs source code (in fpu/) for ease of compilation.
    - Tested on x86 and SPARC.
    - The '--enable-fpu' option no longer needs an argument.

- ## bochs-991114a

  - CDROM emulation works on win32. Mods from Nick Behnken.
  - Cleaned up some problems with win32 compile with VC++.
  - Fixed ::call_protected() for protected mode call to same level via call gate.

- ## bochs-991107c

  - Sound Blaster 16 emulation.
    - Integrated Sound Blaster 16 emulation from Josef Drexler.
    - Check out sound.html for SB16 notes.
    - Added configure option --enable-sb16=.
  - 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.

- ## bochs-991102a

  - NT4.0 installs in bochs (Pentium+FPU+CDROM options).
  - Please wait until next release for running NT unless you really need it.
  - Created (incomplete) docs-html/guestNT.html to outline process of installing NT4.0 in bochs.
  - More fixes to ::exception().
  - Fixes to ::stack_return_to_v86().
  - Mods to configure to handle win32 config again.
  - Integrates mods from win32 developers.
  - vga.cc handles variable number of lines in text mode. Updated GUI code for all platforms, to receive number of lines of text in ::text_update().

- ## bochs-991023a

  - Integrated diffs submitted for OpenBSD cdrom support.
  - Fixed up v8086 mode and exception handling.
  - Fixed real-mode handling of IOPL flag WRT POPF/IRET.
  - Fixed handling of a bunch of weird 16/32-bit transitions. In the doing, I ended up recoding the following:
    - Recoded ::exception()
    - Recoded ::interrupt()
    - Recoded ::task_switch()
  - Cleaned up most warnings.
  - Added docs-html/codingguidelines.html. Please peruse it, if you are a code submitter, and would like to comply with my code tyranny. :^)
  - Integrated new submitted Mac build files and gui code.
  - Have a few more issues to take care of before playing in the dynamic translation sandbox again.

- ## bochs-991014a

  - CDROM emulation:
    - New ./configure option '--enable-cdrom'. So far, there is only support for Linux.
    - I created a Linux specific CDROM component. Mostly just ioctl()s needed to access a few functions of the cdrom.
    - Created 'iodev/cdrom.cc' and 'iodev/cdrom.h' which contain the low-level code. Essentially, all the OS specific code is contained in these files.
    - Should be fairly easy to add code for other OSes.
    - Use .bochsrc directive 'cdromd: dev=/dev/cdrom, status=inserted'.
    - Will add an icon for cdrom to the UI later.
    - Tested cdrom emulation running Linux in bochs. Use something like 'mount -r /dev/hdb /mnt/cdrom'. Haven't checked out using it in Windows yet.

- ## bochs-991012a

  - Moved default cpu level to Pentium.
  - Created docs-html/configure.html to explain options to configure.
  - Fixes to high-level CDROM support.
  - Added optional x86 hardware debug support:
    - '--enable-x86-debugger' is a new option to ./configure.
    - This is the debug support offered by an x86 CPU, not the native bochs debugger.
    - Added instruction and data breakpoint capabilities.
    - Added proper RF handling with or without hw debugging.
    - You can configure without this option for more speed.
  - FWAIT now calls FPU emulator like it should.
  - Changes to LMSW.
  - Moved a bunch of initial stderr messages to bochs.out.
  - More Pentium behaviour enhancements.
  - Modified HLT instruction.
  - GRUB now works in bochs and can load programs.
  - Compiled a new wm-FPU-emu version for this bochs version (only very minor mods).
  - Work on further Pentium emulation continues...

- ## bochs-991004a

  - Added partial Pentium emulation:
    - --enable-cpu-level=5 is now possible from ./configure.
    - Default level still at 4 without above option.
    - Win'95 boots and recognizes Pentium emulation.
    - Linux boots and recognizes Pentium emulation.
  - Work on further Pentium emulation continues...

- ## bochs-990925a

  - Generated new BIOS (bios/BIOS-bochs-990925a).
  - 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-990923a

  - Fixes to vga.cc for odd VGA graphics modes. Even the Windows'95 splash screen works now! (Craig Ballantyne)
  - Addition of postfix expression evaluator in the debugger. (Hanish Menon)
  - Support for 1.76MB floppies. (Hanish Menon)
  - Bug fix for debugger. (Hanish Menon)

- ## bochs-990920a

  - Fixed bug in crc command from debug prompt
  - 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.
  - Working on Pentium emulation next...

- ## bochs-990708a

  - integrated submitted mods to BeOS gui stuff
  - integrated ne2k emulation (only FreeBSD low-level implemented)
  - 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.
  - Many more optimizations are possible.
  - Here's an excerpt from the readme file:

                 dynamic translation:        interpreter:
        -------------------------------------------------
        dttest1:      2.4Mips                  1.9Mips
        dttest2:     15.0Mips                  3.2Mips
        dttest3:     10.5Mips                  3.5Mips
        dttest4:     21.2Mips                  3.1Mips

- ## bochs-990219a

  - 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
  - Added better key handling for BeOS