------------------------------------------------------------------------- Changes in 1.3.pre1 (November 17, 2001): - networking works on Windows and Linux platforms - 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.) - 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. 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. ------------------------------------------------------------------------- Changes in 1.2.1 (June 12, 2001): - more work on makefile for building RPMs - [ #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. Changes in 1.2 (June 3, 2001): - [ #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 Changes in version 1.2-pre1 (May 25, 2001): - 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). Changes in version 1.1.2 (bugfix3, May 16, 2001): - 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 - since dataseghack is checked in as non-executable, invoke it with "csh dataseghack" - double fault patch from Thomas Petazzoni , 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 from http://sourceforge.net/tracker/index.php?func=detail&aid=418730&group_id=12580&atid=312580 - remove all patches from patches subdir which have already been applied. The remaining ones are under consideration but not applied. Changes in version 1.1.1 (bugfix2, April 9, 2001): - in soundwin.cc, arg 3 should be typecast to LPWAVEFORMATEX - in fpu_entry.c, Bryce mistyped his own initials! - in configure.in and configure, define good defaults for VC++ #define BX_64BIT_CONSTANTS_USE_LL 0 #define inline __inline #define BX_NO_EMPTY_STRUCTS 1 #define BX_NO_ATTRIBUTES 1 #define BX_HAVE_HASH_MAP 0 - in config.h.in, fixed typo in #error message Changes in version 1.1 (bugfix1, April 6, 2001): (FIXED, patch #414360: update copyrights) update headers. Change copyright to 2001, replace config.h.in header with the standard mandrake header that every other file uses. (FIXED, patch #414356: inlines) make macro to replace inline and static/extern keywords. Then make define the macro appropriately based on configure. (FIXED: patch #414234: macos-no-strdup) --with-macos should force HAVE_STRDUP=0. (FIXED, patch #403027: Fix mouse bugs in Linux and BSD) Linux and BSD (maybe others) cause panic in mouse code. (FIXED, patch #413851: const64bit patch) VC++ does not allow "LL" after 64-bit constant. (FIXED, patch #413859: fabs symbol conflict) fpu code contains fabs, which conflicts with math library fabs. (FIXED, patch #403004: Implement aborts on a few SET FEATURE commands...) Implement aborts on a few SET FEATURE commands for ATA. (FIXED, patch #402991: Update to iodev/vga.cc to add 3c3h read support) Implement VGA enable register, at 0x3c3. (FIXED, patch #403027: Fix mouse bugs in Linux and BSD) Mouse panic in linux/BSD: KBD: io write 0x64: command = 0xD3(write mouse outb) (FIXED, patch #414229: panic-is-fatal) Allow user to decide if panic is fatal, or just a warning (FIXED, patch #414230: sun-cdrom) Support Sun CDROM (FIXED, patch #413574: portable1) there are cases where a pointer is cast to a 32-bit int, then later cast to a pointer and dereferenced, which crashes any 64-bit machine. (FIXED, patch #413574: portable1) some machines have no snprintf or strtoull. include a replacement function when needed. (FIXED, patch #413574: portable1) Some compilers don't allow "typedef struct { } foo;" (FIXED, patch #413574: portable1) Some people don't have hash_map.h, used in dbg_main.cc. Disable this code if hash_map.h not found. (FIXED, patch #413574: portable1) Some compilers can't handle labels at the end of a block, as in void main () { /*code*/ label: } (FIXED, patch #413574: portable1) Most compilers can't handle __attribute__. Use macro to define it away. (FIXED, patch #413574: portable1) if --enable-debugger, turn on --enable-disasm too. (FIXED, patch #413574: portable1) ome compilers can't handle any chars after an #endif (FIXED, patch #413574: portable1) wrong type arg1 of bx_dbg_watch and bx_dbg_unwatch. The code in lexer.l was calling it with integers (not booleans) (FIXED, patch #413574: portable1) in fpu code, "setcc" macro was implemented with braces inside parens, which some compilers don't understand. (FIXED, patch #413574: portable1) in fpu_entry.c, FPU_load_int32 was consistently called with arg1 of type (s32 *), but should be (u32 *) (FIXED, patch #413574: portable1) comment out sigcontext structure in fpu/stubs/asm/sigcontext.h because it conflicted with sigcontext of other machines. This struct was never used by bochs anyway. (FIXED, patch #414046: portable2) move definition of missing library functions into osdep.h and osdep.cc, include contents of macutils*. (FIXED, patch #414061: win32-rawcd) CDROM drive letter for WIN32 should not be hardcoded. (FIXED, patch #414060: win32-rawfloppy) Bypass fstat when opening WIN32 raw floppy disk. (FIXED, patch #414226: pit-panic) WinME install dies with panic: bochs: panic, pit: outp(43h): comm Bh, mode 00, bcd 00 unhandled I think I had a similar problem. All three timers should support modes 0, 2, and 3. Other modes really aren't implemented.