--------------------------- TO DO LIST: - (DONE) check logs in debug - check logs in cpu (Bryce is working on this) - check logs in gui - (DONE) carbon.cc - check logs in iodev (Christophe is working on this) - (DONE) check logs in main directory - (DONE) check logs of configure.in - (DONE) Makefile.in - (DONE) main.cc - (DONE) the rest of the directory (Bryce is working on this) - (DONE) check logs in documentation - (DONE) Makefile, Makefile.in logs - (DONE) the rest - summarize SF bugs/features/requests Bug fixes in a newly added feature are not necessary to list. They are just part of the new feature. - when we're nearly done, add last name to the first reference to each person - the docbook docs have a changelog, or at least a link to a changelog. Update this link to point to our latest changes. If docbook is referring to docs-html, figure out some other way to do it. ------------------------ Changes in 2.0 (December 2002): - configure script/compile/porting to other OSes/installation - added plugin architecture - plugin code written by Bryce, Christophe, Volker based on plex86's plugin code by Kevin. Testing help from Psyon and Br'fin. - Plugins are shared libraries that can be loaded on demand. Example: the serial device is implemented as a plugin. In UNIX, the serial plugin is called libbx_serial.so. When Bochs reads its configuration file, if the serial device is enabled it loads libbx_serial.so. - all display libraries, most I/O devices are converted to plugins now - plugins supported on Linux, Solaris, and MacOS X using libtool, Cygwin using dlltool. On MacOSX, you must have dlcompat installed and in your include/library paths at configure time. (See .conf.macosx for an example.) - we use libtool's LTDL library from libtool 1.4.2, with a number of critical bug fixes (Bryce) - the Linux binary RPMs are built with plugin support - to compile with plugins, configure with --enable-plugins - the LTDL_LIBRARY_PATH variable tells Bochs where its plugins can be found. Bochs has a compile-time default for this variable which is correct if you do a make install. You would only need to set the variable if the default is wrong. - for win32 plugins we added "BOCHSAPI" in front of many classes and methods, to aid in building DLLs. This turns into __declspecs which are used when making an export library for Bochs. - allow many display libraries to be configured and compiled at a time. For example --with-win32 --with-sdl --with-rfb. Also, we added an experimental option --with-all-libs which tries to detect which --with-* options will work. If the autodetection fails, just type the --with-* options explicitly. (Bryce) - add #if's around all files which are conditionally compiled such as cdrom.cc and sb16.cc. This makes it possible to compile every source file all the time, which has the potential to simplify the configure script and makefiles. At present we only take advantage of this capability in the win32 VC++ workspace. (Bryce) - the MacOS9 port has been updated so that it works again. It had not been updated in at least 2 years, maybe more. (Christophe) - improve support for FHS standard (Robert Millan, Volker) See patches 551811 and 650066. - keep separate CFLAGS and CXXFLAGS for Bochs (usually a graphical program) and console programs such as bximage and niclist. Some sdl and wx compile flags were making bximage and niclist unusable.(Bryce) - add concept of cross-configuring in the configure script. If you use the --target option to generate makefiles to be used on another machine, some detection of compilers and libraries is disabled. (Bryce) - fix term compile on Cygwin, but it has to be done without -mno-cygwin, which means that several win32 features such as networking do not work. - add "-Wno-multichar" on beos - test for largefile support, and add required CFLAGS (Bryce) - add -lm when it's needed, and not when it's not (Bryce) - add configure support for 8 processors. Bochs can support up to 15 with some work on the BIOS. - fix cdrom detection on BeOS (Bryce) - fix nmake makefile generation (Psyon) - improved pthread detection function from ac-archive project on SF - add installer package for Windows, using Nullsoft - on MacOSX, add startup script that creates a text console and then runs Bochs. Also add make target to create a DMG disk image (Br'fin) - do not restart the font server on Unix/X11, if vga.pcf was already installed. On several modern machines, if you restart the font server the user has to restart X windows. (Bryce) - update most .conf.* files with modern options such as --enable-all-optimizations. - The MacosX .conf script adds /sw/include and /sw/lib to the compile/link path list because it is a common place to put dlcompat. Dlcompat is required when building with plugins. - rpms can now be built without root privileges (Bryce) FIXME: new configure options--should be added in the appropriate sections but I'm listing them here to remind us about them: --enable-dc2300-vlb-ide --enable-4meg-pages --enable-pae --enable-guest2host-tlb --enable-repeat-speedups --enable-icache --enable-global-pages --enable-host-specific-asms --enable-ignore-bad-msr --enable-external-debugger --enable-all-optimizations - command line - fixed up our command line options (Volker, Bryce, Christophe) Usage: bochs [flags] [bochsrc options] -n no configuration file -f configfile specify configuration file -q quick start (skip configuration interface) --help display this help and exit - documentation - manpages updated (Volker, Christophe) - install HTML rendering of docbook documentation instead of docs-html (Bryce) - doc/docbook/Makefile is now generated by configure script. if configure detects docbook2html on your system, it will turn on --enable-docbook and run make in the doc/docbook directory. Also make install will install documentation into $(docdir). You can use --disable-docbook to turn this off, if necessary. (Bryce) - add "make bochsdoc.tar.gz" target to create a documentation tarball. If you do "make webinst" and you have write access on SF shell server, it updates doc/docbook/* on the website (Bryce) - user documentation additions : - new options (Bryce, Volker, Christophe) - Bios tips section (Christophe) - Tuntap section (Christophe) - Serial Port section (Christophe) - "Will it Work for Me" / "Is Bochs Right for Me" sections (N. David) - VESA section (Jeroen) - several documents, previously existing as separate html files, have been included : - internal debugger section (Christophe) - gdb stub debugger section (Christophe) - WinME, WinNT, WinXP, The Hurd, Japanese Win95 install tips (Christophe) - Win95, Win98 install tips (N. David) - SB16 section (N. David) - configuration file (bochsrc) - There are several new options. See the documentation for more details. - config_interface: select text mode menus or wxWindows for configuration - display_library: select which display lib to use - optromimage: load optional rom images - ataN (N=0,1,2,3): up to 4 ATA controllers for hard disks, cdroms - ataN-master, ataN-slave, N=0,1,2,3: defines a hard disk or cdrom. The "ata*" options replace diskc, diskd, and cdromd, which are now deprecated. - floppy_bootsig_check: control the 0xaa55 signature check on boot floppies - logprefix: lets you change the format of log messages (patch by Carl Sopchak, help from Christophe) - debugger_log: log all output from bochs debugger - user_shortcut: allow you to type key combinations like Ctrl-Alt-Del - pit: control the PIT model, including realtime option to try to keep in sync with real time. - Credits: Christophe added optromimage, everything about ATA, floppy_bootsig_check, debugger_log. Bryce added config_interface and display_library. Volker did the user_shortcut button. Greg Alexander wrote the PIT model and added the realtime option. - since v1.3 we've been able to use environment variables in pathnames in the bochsrc file. Now, a few variables have default values, set at compile time, that are used if the user does not set a value. If Bochs is installed correctly, the defaults will be correct and the user will not need to override them. - $LTDL_LIBRARY_PATH is the path name where the plugins can be found. The default value comes from $(plugdir) in the makefile. This is only important if plugins are enabled. (Bryce) - $BXSHARE is the path where the BIOSes and keymaps are installed. The default value comes from $(sharedir) in the makefile. Disk images on the Bochs website will begin to use BIOS pathnames like $BXSHARE/BIOS-bios-latest. On win32, the $BXSHARE default is set by the NSIS installer and read from the registry. On MacoSX, the $BXSHARE default is set to the path containing bochs.app. (Bryce, Volker, Br'fin) - new option in the configuration interface to reset all bochsrc settings to initial defaults. A reset occurs just before reading a new configuration file, so that leftover parameters from a previous configuration do not affect the new configuration. Also, you can request a reset using the configuration interface. (Volker, Bryce) - ne2k line can now specify a script to set up the interface (Christophe) - on Unix, also search /etc/bochsrc (Bernhard Bablok) - you can use #include in the bochsrc to read configuration from other files (Volker) - CPU - speed optimizations from Kevin Lawton - guest2host_tlb : for entries in the paging TLB which point to normal physical memory pages, a pointer to the host address of the emulated physical memory (from malloc()) page is stored in the TLB entry. In many cases, this pointer can be used in memory accesses to directly read/write the guest memory address. In exceptional cases, the physical memory access routines are used. - repeat IO/string : for some variants of repeatable IO and string instructions, the segmentation and paging checks are done in batch along with the data transfers, constrained within page boundaries and the segment limits. - icache : The structure holding instruction decode information was reduced to 32 bytes. 24 bytes for the actual decode data, and 4 each for pointers to the address resolution routine (not always needed) and the instruction emulation routine. With a reasonably small per-instruction decode size, an instruction cache (iCache) was created, which is simply a hash table. The main cpu loop looks in the table first; if the instruction has already been decoded, execution can begin immediately without decoding. - host specific asm : when compiling on an x86 platform, use of x86-specific asms can be enabled to accelerate several facets of emulating instructions. For example, the EFLAGS values are much more efficient to calculate when the actual x86 instructions are used to generate the EFLAGS values. - add support for AMD's x86-64 instruction set. To enable, configure with --enable-x86-64. The AMD x86-64 support is about 90% done and is still experimental. We've implemented the core x86-64 instruction set and the changes to the rest of bochs necessary to operate in long mode, but we've still to implement checking for canonical 64 bit addresses. The code has been tested on a limited number of test programs. It has been able to successfully boot the x86-64 kernel, but hasn't quite been able to run a 64 bit userland application yet. It has also successfully run a dos based 64 bit protected mode test application. (Peter) - add MMX support. To enable, configure with --enable-mmx. (Stanislav) - add SSE and SSE2 support. To enable, configure with --enable-sse=1 or --enable-sse=2. (Stanislav) - fixed the behaviour of the bcd instructions AAM, AAD and DAA based on SF patch #537146 (Volker) - in VERR / VERW function: changed BX_ERROR to BX_DEBUG. According to the i386 opcode description there is no error present. (Volker) - fix bug [ 625878 ] reset doesn't reset something(?). Fix cpu reset when executing a rep instruction (Christophe) - use accessors methods for CFLAGS and several other registers, so that the implementation can be changed transparently later (Bryce, Stanislav) - add support for PSE = page size extension, also known as 4meg pages (Kevin) - add support for PGE = page global extension (Kevin) - add support for PAE = physical address extensions (Peter) - FPU - fixed bug [ 452275 ] fprem emulation bug (Volker) - fixed bug [ 648579 ] Mac OSX >>PANIC<< FPU_printall. There was an endianness issue with the fpu (Christophe) - I/O devices - rewrote pc_system timers (Kevin) - FIXME add detail - biosdev - FIXME - cdrom - implementation of the function READ TOC for cdrom image files. (Volker) - function capacity() for win32 fixed. Now it returns the number of blocks instead of bytes. (Volker) - added multiple cdrom support for win32 (NT/2000 version untested). The ASPI version uses the cdrom drives in the system's order. Drive letters are not used by ASPI. (Volker) - fix physical CD change at runtime (Bryce) - FIXME - cmos - FIXME - dma - DMA register and unregister functions for DMA channels added and macros for DMA functions defined. The changes are based on the Plex86 functions. (Volker) - implementation of the DMA controller reset (Volker) - the value of the command register must be always 0x00 (BX_ERROR fixed) - FIXME - floppy (Volker) - added support for 360k floppy images - the skip flag (SK) in command 'read sector' is ignored now - floppy read and write function do not set the 'seek end' bit in status register 0 (fixes SF bug #553377) - the status of the 'disk changed' line depends on the selected drive. The digital input register is now an array (DIR[4]). - apply patch [ 635021 ] floppy cleanup by Alex Thiel - distinguish between floppy drive type and media type - FIXME - hard drive - missing conditions for lower_irq() added (Volker) - several noncritical pancis replaced with BX_ERRORS and the controller returns an error code until we implement the features (Volker) - FIXME - ioapic - FIXME - iodebug - FIXME - keyboard and mouse - in function mouse_motion(): added parentheses to fix compilation problems with MSVC. See SF bug #575301. (Volker) - added missing register_irq() for the PS/2 mouse IRQ12 (Volker) - fix "AltGr" key on European keyboards wxWindows/win32, SDL (Volker) - FIXME - NE2000 - function reset() clears the IRQ line (Volker) - added TUN/TAP interface (Renzo Davoli, Christophe) - FIXME - parallel - parport1 enable/disable support added (Volker) - FIXME - PCI (Volker) - implementation of the PCI device register mechanism - PCI memory handling moved to the memory code - replaced memcpy() in pci_read() by a more portable code. Problems with PCI on big-endian machines are fixed now (SF bug #638481). - implementation of the PCI-to-ISA bridge started (still incomplete) - PIC - FIXME - PIT - Added realtime PIT support (Greg) - Sound Blaster 16 - it used to enable itself all the time; now only when you ask - FIXME - serial - don't cause problems when serial device is disabled (Volker) - FIXME - unmapped - FIXME - vga - FIXME: these are great cvs log msgs, summarize them... - add charmap change support added (used by SDL, win32 and wxWindows gui) - byte offset for modeX fixed (use value of CRT register 0x13) - calculation of the screen size for some graphics modes fixed - use the start address when calculating the byte offset for standard EGA/VGA modes - sequencer reset with bits 'reset1' and 'reset2' implemented - do a dimension update in text mode when the maximum scan line register has changed. This changes the font height of the gui. - missing VBE support added in function redraw_area() - ROM BIOS - improve compile process. Now bioses for 1, 2, 4 and 8 processors are built at the same time (Bryce) - fixes to be able to compile the bios with gcc2 or gcc3 (Jeroen and Christophe) - changes on boot signature check (Christophe): - never done for cdroms - always done for hard-disks - conditional for floppies - add keyboard int16 functions 0x09 (get keyboard functionality) and 0x0a (get keyboard id) (Christophe) - fix bug [ 629810 ] int 16/ah=01 broken? Enable interrupt on entering int16 handler (Christophe) - new keyboard init in POST (patch from Adam Sulmicki) - flush input and output keyboard buffer before keyboard self test (Volker and Christophe) - fix bug [ 547603 ] kbd up/down arrows in dos install (Christophe) - fix bug [ 549815 ] bios wrongly loads CS,ES. CS and ES are set to 0 before the bootloader code is called. (Christophe) - PCI functions support (Volker) : - BIOS32 service directory - real mode PCI int1a functions - protected mode PCI int1a functions - fix reset for MS-DOS and Win95 (Volker) - 360K floppy support (Volker) - enhanced ata/atapi support (Christophe) : - 4 channels / 8 devices - device auto detection (with help from Adam Sulmicki) - EDD3.0 - 32bits device access - optional disk translation "large", "r-echs" or "lba" (up to 8.4GiB) - re-enable harddisk controller interrupt after reads/writes. Win95 can now use native access to harddisks and cdroms. (Volker) - shutdown status handling (cmos index 0x0f) (Christophe) : - fix bug [ 601166 ] CMOS Problem @ "0x0F Index 0x05 data". After reset execution will resume by a jump to [0x40:0x67] if the shutdown status is 5 - the bios don't panic any more if the shutdown status is 9 - two parallel ports detection in POST (Volker) - two serial ports detection in POST (Volker) - add int15 extended memory function 0xe820 (patch from osmaker) and 0xe801 (patch from Hartmut Birr) - fix return values on some int15 functions (Bryce) - fix int70 handler overlapping int08 handler (Christophe) - simplify 8 processors BIOS for operating systems which don't do paranoia/sanity checks (Zwane) wxWindows - wxWindows is a cross-platform C++ user interface library which you can download for free at http://wxwindows.org. wxWindows provides C++ classes for all sorts of GUI controls (buttons, menubars, etc.) and implements all of them using the native controls on the platform. - The new wxWindows port of Bochs provides both a graphical configuration interface (for editing bochsrc options) and a display. It was written by Bryce Denney, Don Becker, Dave Poirier, and Volker Ruppert. - In release 2.0, we concentrated on making the wxWindows port as stable and functional as the other interfaces. wxWindows provides a great toolbox that we can use to make Bochs easier to learn and use. - wxWindows supports charmap changes, keyboard mapping, cut and paste, text and graphics modes, text mode cursor size, and mouse (Volker, Bryce) - To compile Bochs with wxWindows, you should install wxWindows 2.3.3 or later. Then configure Bochs with --with-wx. - if you have multiple versions of wxWindows installed (e.g. a debug and a release version), you can set $WX_CONFIG before configuring to select between them. (Bryce) - configuration interface - wxWindows config interface now allows you to change every bochsrc option using menus and dialog boxes. There is also the beginning of a wxWindows graphical debugger, but it needs a lot of work before it will be useful. - renamed control.cc to textconfig.cc. Now we're calling it a text configuration interface, instead of a control panel. - display libraries - Even though we've had them for years, the term "display library" is new in release 2.0. In the gui directory, Bochs has a number of different C++ files which you can select to display the text and graphics on the simulated monitor. Each of these is a display library. The display libraries are: x use X windows interface, cross platform win32 use native win32 libraries carbon use Carbon library (for MacOS X) beos use native BeOS libraries macintosh use MacOS pre-10 amigaos use native AmigaOS libraries sdl use SDL library, cross platform svga use SVGALIB library for Linux, allows graphics without X term text only, uses curses/ncurses library, cross platform rfb provides an interface to AT&T's VNC viewer, cross platform wx use wxWindows library, cross platform nogui no display at all - it is now possible to compile Bochs with support for many different display libraries and select the one to use at runtime (even without plugins). See the display_library directive in .bochsrc. - add new svgalib display library by Igor Popik - fix bug [ 614724 ] SDL can get stuck in full screen mode display libraries such as SDL which have a full screen mode can be dangerous, if Bochs does not switch back to normal display mode at the right time. This is fixed for SDL and the new svga. - keymap support added in SDL interface (Bryce, Volker) - new keymap files: SDL keymaps for US and DE keyboards, X11 keymap for Danish keyboard. - use keyboard mapping for keyup messages too - term display library: - support for color terminal, function keys, clear screen (Volker) - win32 display library: - use native win32 toolbar for headerbar, use system palette (Volker) - renamed almost all references to data type "Boolean" to "bx_bool". The Boolean data type was defined in Carbon.h headers, and conflicted with Bochs's definition. See bug [ 618388 ] Unable to boot under MacOS X Exceptions: When talking to the Carbon library, you must use Boolean. Also, siminterface.h uses standard "bool" instead of bx_bool. - many Carbon interface improvements - patch [ 549248 ] Fix Carbon key & menu handling (Chris Thomas) - partial keymap support, copy&paste, menu items fixed, new toolbar behavior, dialog box display for panics (Br'fin) - Bochs debugger - [ 609616 ] remote GDB stub add GDB Stub support from Johan Rydberg, with bug fixes by Stu Grossman - add hooks for external debugger for win32. The external debugger that connects to Bochs is distributed in build/win32/tattam-external-debugger.zip in binary form. (Peter) - add "debugger_log" option to bochsrc, which logs all debug output into a file. feature [ 629068 ] (Christophe) - debugger is now usable in fullscreen SDL and SVGA guis. It will switch back to text mode for each debug prompt (Bryce) - disassembly output cleaned up and improved (Kernel Panic, Peter, Jonathan, Luiz Henrique Shigunov) - fix [ 628806 ] debug: x/c prints unprintable chars (Bryce) - add the beginnings of a wxWindows debugger. Not ready for mainstream use yet. CPU register display is implemented, and you can type any debugger command you want into the Debug Console window. (Bryce) - add help command (Alexander Krisak) - symbol table lookups cleaned up a bit (Bryce) - displays the address of the caught watchpoint, feature #435271 (Dave) - remove obsolete "loader" - utilities - fixed bug [ 487758 ] bximage fails on file creation >2048meg Bximage should now work up to 32gig. (Bryce) - on win32, both bximage and niclist now ask the user to press return before exiting, so that you have time to read the results before the window disappears. (Bryce) ----list of closed bugs since 1.4.1---- We don't want a line of changelog for each of these, but it should help us to remember what has been fixed, and summarize. If someone wants a list of hundreds of bug fixes they can go to source forge. For the changelong we should categorize and summarize them rather than simply list them all. Also, some are closed with no resolution, so we can't be totally sure that they all have been fixed! bug [ 654123 ] $BXSHARE not working in win32 bug [ 653861 ] Win32 build bug bug [ 653868 ] change $BXBIOS to $BXSHARE bug [ 648385 ] rpm dependency errors: glibc_2.3 not found bug [ 652957 ] install docbook docs instead of HTML bug [ 653016 ] bios makefile should not rm bioses bug [ 528018 ] linux/X11 files always installed bug [ 642324 ] MacOSX: Silent failure when run from GUI bug [ 651508 ] not all configurd hd devices are usable bug [ 534546 ] CMOS read error bug [ 625645 ] Font causes PANIC bug [ 644209 ] Password for RedHat bug [ 632034 ] win32: mingw plugins fail bug [ 618974 ] 32bpp fails:XAllocColorCells error bug [ 646438 ] display+configuration lib. setting bugs bug [ 643238 ] PANIC: SuSE 8.1 Kernel needs Pentim+ bug [ 645500 ] Bug in Mac OS X CD-ROM source bug [ 493761 ] Win98se install ends with div 0 error bug [ 634621 ] Access to A: frozes simulation bug [ 628198 ] update makefile dependencies bug [ 640581 ] control-C handling fails with -pthread bug [ 640800 ] rombios.c error bug [ 639873 ] get_first_cd_handle called before init bug [ 625696 ] text config menu: default can be wrong bug [ 640014 ] WinNT doesn't boot anymore in 2.0.pre1 bug [ 642598 ] >>PANIC<< numerical parameter GDTR base bug [ 640867 ] solaris needs -lm to compile bug [ 640829 ] macosx: osacompile requires local access bug [ 630865 ] CDRom icon in toolbar initiall 'ejected' bug [ 626840 ] no 'sin_len' in 'struct sockaddr_in' bug [ 638600 ] need default plugin search path bug [ 635223 ] VGA tiles array access out of bounds bug [ 639016 ] win32: osdep.h should not #define off_t bug [ 638481 ] PCI broken on big-endian systems bug [ 627223 ] check that debug: action=ACTION works bug [ 628783 ] current CVS compilation fails at MS-VC6 bug [ 614171 ] update all bioses before release bug [ 638110 ] sb16 plugin crashes if not enabled bug [ 638552 ] rename plugin libs to avoid conflicts bug [ 628663 ] double panic from cmos get_timeval bug [ 629606 ] BX_WITH_TERM affects ^C handling bug [ 531063 ] crash when CD enabled but not present bug [ 629615 ] keybord not initialized properly bug [ 632169 ] no docs for TUN/TAP bug [ 625901 ] rename control to textconfig bug [ 628806 ] debug: x/c prints unprintable chars bug [ 624853 ] Dos crashes with 256 heads disk bug [ 628957 ] realtime pit spits out lots of printfs bug [ 626261 ] About Box is awkwardly outdated bug [ 628662 ] rename "VGA library" to display library bug [ 628646 ] configure --disable-vga doesn't build bug [ 628645 ] oldpit broken by plugin merge bug [ 628643 ] iodebug broken by plugin merge bug [ 627996 ] CDROM and other compile errors on OSX bug [ 623152 ] MacOSX: Triple Exception Booting win95 bug [ 626357 ] Mac OS X make fails at insert_cdrom bug [ 626412 ] in text snapshot, remove extra spaces bug [ 625676 ] VC++ do not support S_ISBLK bug [ 529781 ] strange colors with vbebios and other bug [ 622786 ] change unimplemented SSE instr to panic bug [ 623831 ] .conf.macosx broken bug [ 623618 ] win32: bximage and niclist quit too fast bug [ 619528 ] Double-Clicking Bochs fails to Run bug [ 622782 ] interpreting cmdline is a mess bug [ 619885 ] on beos, fd_set not found bug [ 620989 ] logical8.cc fails to compile bug [ 493981 ] resetting/cd-rom bug bug [ 619283 ] SDL: os mouse pointer leaves the window bug [ 554949 ] INACCESSIBLE_BOOT_DEVICE on NT4 install bug [ 431804 ] [Wheel] mouse doesn't seem to work bug [ 561181 ] Error in CPU core of Bochs 1.4 bug [ 618697 ] trace-reg-on has bugs bug [ 597737 ] info gdt broken: incorrect segment length bug [ 614192 ] sdl keyboard inconsistent on platforms bug [ 618178 ] include "pic.h" in pci.cc bug [ 539764 ] MacOS/MacOS X missing headerbar icons bug [ 561156 ] --with-x11 does not work on OS X bug [ 529585 ] MDK8.0 install problem bug [ 594723 ] MacOSX: Doesn't compile --with-debugger bug [ 572104 ] VC++: parameter list not sufficiently different bug [ 614175 ] infinite panic loop if bochsrc buggy bug [ 613393 ] solaris: term compile missing color_set bug [ 613390 ] solaris: rfb compile needs -lsocket bug [ 538815 ] cannot preprocess bios with gcc 2.96 bug [ 420671 ] X11 gui generates too many useless packets bug [ 541452 ] Compile problem with MS nmake bug [ 595232 ] POPFD() bug [ 565393 ] Invalid Opcode Exception not called bug [ 536556 ] Logfile messages bug [ 433002 ] Windows Nt wont start installing bug [ 461762 ] multiple processors but only one FPU bug [ 427327 ] 00147166095 [CPU ] UndefinedOpcode: 1ff bug [ 435620 ] Solaris install dies as client bug [ 424589 ] bochs: panic, RDMSR: not implemented yet bug [ 487212 ] Clock in the emulator? bug [ 606349 ] POPFD(): - prevents win31 from running bug [ 500197 ] Win 98 boot failure bug [ 566804 ] screen real-estate and NT + clones bug [ 518917 ] EGA seems to clip 8 lines at bot. screen bug [ 515252 ] Crashes when running in bogus memory bug [ 543274 ] Linux system headers are in makefile bug [ 502492 ] configure fails with enternal script err bug [ 497242 ] New BIOS (in 1.3) and System Commander bug [ 609373 ] OSX STILL DOESN"T COMPILE W/ CDROM!!!!!! bug [ 593340 ] socklen_t test broken. bug [ 612741 ] VBE mem conflicts w/ local APIC address bug [ 612880 ] write_virtual_dword addr ffffe370, crash bug [ 442555 ] booting Gemini Nucleus bug [ 594714 ] Carbon GUI doesn't compile under MacOSX bug [ 594718 ] MacOSX: Carbon GUI doesn't compile bug [ 555100 ] current cvs botched number of parms bug [ 535854 ] commandline param --help is unsupported bug [ 599050 ] Missing dependency bug [ 422457 ] mouse mode not supported bug [ 430444 ] PCI is very broken bug [ 455885 ] Text mode vga colors aren't updated. bug [ 587291 ] Invalid LES opcode -> Bochs loop bug [ 593413 ] FreeLoader fails since Bochs 1.4 bug [ 571988 ] Boot Real floppy bug [ 562025 ] coding error bug [ 538356 ] win32 resize needs cleanup bug [ 530797 ] win32: gui doesn't free bitmaps bug [ 429079 ] can't type some key combos bug [ 553024 ] POST: PIC init too late, INTs lost bug [ 455282 ] [VGA ] unsupported io write to port 3d0 bug [ 537332 ] kbd: OUTB set and command 0xaa encounter bug [ 434638 ] Cursor too big under AIX bug [ 553377 ] Minix 2 no longer works with Bochs 1.4 bug [ 549559 ] floppy drive infinite loop bug [ 583803 ] VGA - scan line width bug [ 586283 ] Mac OS X, will not "make" bug [ 574127 ] Fail to boot isolinux multiboot CD bug [ 582499 ] Reset Function inoperative bug [ 491835 ] Bochs fails on BeOS emulation on floppy? bug [ 467891 ] [HD ] Odd byte count to ATAPI command bug [ 580247 ] CD supp. in 1.4.1 not compiling for OSX bug [ 481170 ] beos cdrom support bug [ 533889 ] 80x43 text mode non-functional bug [ 533112 ] compile error in gui/siminterface.h bug [ 575349 ] Mac OS X cdrom_interface compile error bug [ 430982 ] HD lost ? bug [ 549452 ] bochsrc manpage belongs in section 5 bug [ 419415 ] netbsd 1.5 rescue disk won't boot bug [ 503154 ] Very slow when no network activity bug [ 555562 ] gui.cc includes X windows headers bug [ 549821 ] warning proc_ctrl.cc line 1273: left-shift count >= type width feature [ 427349 ] win32 installer package feature [ 617963 ] "Plugin" devices feature [ 650366 ] bochs1.4.1, 2.0 2 b ported 2 OS X on G4? feature [ 625718 ] log serial output to a file feature [ 618601 ] MacOS X packaging feature [ 648812 ] Specify bochsrc on command line feature [ 589384 ] support to add other ROM images feature [ 640888 ] add default for BXBIOS env variable feature [ 641059 ] Speed feature [ 423108 ] add network device via 2.4 TUN feature feature [ 632434 ] Cocoa Port using SDL feature [ 624077 ] extended bios feature [ 428688 ] plugin architecture feature [ 624508 ] DOS Navigator keyboard support feature [ 627997 ] GUI for OSX feature [ 495560 ] Int 15h 0xE820 - BIOS mem map or 0xE801 feature [ 624507 ] PCI NIC + NetWare feature [ 623520 ] Logging in with Ctrl Alt Del feature [ 579722 ] Ability to send keypresses feature [ 545484 ] XGA/Video 7 mode feature [ 447048 ] vesa 2.0 compliance feature [ 545613 ] ips calculator feature [ 615353 ] Bochs Win32 Integration... feature [ 422143 ] check out plex86 curses.cc feature [ 425559 ] support >1 IDE controller feature [ 515334 ] LBA (extended int 13h) Not Supported feature [ 552233 ] EBIOS Support Int 13 func 41-48 feature [ 539045 ] MacOS X binaries feature [ 535365 ] batch build Bochs with different options feature [ 528874 ] remote gdb protocol support feature [ 500370 ] Emulation in foreground automatically feature [ 518163 ] SVGA, dos floppy, macos X binaries feature [ 490999 ] bochs.app/videocard use feature [ 500371 ] Ability to emulate 8088 etc. feature [ 493453 ] Windows CE for x86 feature [ 486274 ] The Hurd on bochs feature [ 543271 ] Allow some native x86 instructions feature [ 434691 ] com port emulation on x86 machines feature [ 502240 ] Is it hangs up? or not? feature [ 423053 ] too many configure options feature [ 457060 ] Win98 instalation:1436 minutes left feature [ 510226 ] Optimizing feature [ 497073 ] Plex86 development feature [ 545834 ] Mac OS X feature [ 461921 ] cr4, paging extensions flag feature [ 530510 ] better MSVC handling feature [ 543689 ] bochs for pocket pc platform feature [ 431169 ] Text cursor visibility feature [ 450209 ] boot from real disk? feature [ 450209 ] boot from real disk? feature [ 603820 ] support for serial console feature [ 501694 ] cr2 value shown when bochs panics feature [ 609720 ] Disassembler... feature [ 578468 ] command line option for automatic run feature [ 547876 ] console mode interface feature [ 564097 ] mount cdrom file image feature [ 423361 ] need for support reboot feature [ 538579 ] SVGA Emulation feature [ 500368 ] Possibility to cut text output patch [ 645559 ] Set ownership in RPM package patch [ 643874 ] MacOSX: diskimage.pl fix patch [ 642397 ] Applescript:Fix to handle spaces in path patch [ 609616 ] remote GDB stub patch [ 626146 ] Patches for win32 nmake patch [ 623030 ] making bochs compile with DJGPP patch [ 632278 ] Carbon.cc Detabbing patch [ 635009 ] rpm -> rpmbuild patch [ 627804 ] Mode-sensitive disassembly patch [ 628967 ] Fix missing ss(0) exception patch [ 629157 ] MacOSX Carbon Plugin Cleanup patch [ 630863 ] Fix and integrate MacOSX cdrom patch [ 626373 ] About Box Patch patch [ 624337 ] Script to launch OSX from GUI patch [ 624323 ] Carbon UI Patchup and Polishing patch [ 543580 ] NetBSD and --enable-cdrom patch [ 525966 ] vga readability patch patch [ 618071 ] Cleaned up MacOSX Application Icon patch [ 424445 ] apply patches from NetBSD ports patch [ 579972 ] support for -D_FILE_OFFSET_BITS=64 patch [ 549679 ] Even more Mac OS X fun patch [ 426240 ] include Bochs-RFB from psyon.org patch [ 455763 ] Cursor trail with DOS Edit/Minix vi patch [ 466403 ] make text colors more accurate patch [ 414229 ] panic-is-fatal patch [ 597587 ] Extended 8 general registers to 64 bits. patch [ 558422 ] Spool parallel output patch [ 613359 ] danish keymap file patch [ 590426 ] additions to the MAC OS X build scripts patch [ 605815 ] more disasm functions patch [ 600433 ] serial and cmos print incorrect panics patch [ 598545 ] lfb-vbe, missing linear graphics mode patch [ 548866 ] Fix Carbon build patch [ 592081 ] Bug: typo in VBE code patch [ 567606 ] make bochsrc more portable patch [ 593018 ] On Unix-systems, look for /etc/bochsrc patch [ 583002 ] RdDd(), DdRd(), RdTd(), TdRd() and Ms() patch [ 593019 ] A unix-style cmdline-interface to bochs patch [ 563605 ] sysenter/sysexit patch [ 563604 ] more complete apic stuff patch [ 563606 ] sysenter/sysexit pt 2of3 patch [ 563609 ] init.cc needed for new apic.cc patch [ 563607 ] sysenter/sysexit pt 3of3 patch [ 590421 ] additions to the MAC OS X build scripts patch [ 539678 ] ne2k odd count causes PANIC patch [ 580063 ] support for -D_FILE_OFFSET_BITS=64 patch [ 551109 ] PATCH: Add EIP to log file timestamp ------ ------------------------------------------------------------------------- Changes in 1.4.1 (June 22, 2002): - now cdrom is enabled in configure, unless you specifically disable it with --disable-cdrom. (Christophe) - fix compile error in main.cc when SMP or APIC is enabled (Dave) - the runtime menu now displays 11 (continue) by default (Bryce) - initialize DMA controller before floppy and SB16 - fix DMA panic when installing win95 (Volker) - first character of the vga bitmap is blank on win32 (Volker) Before, it was incorrectly coded as a '@'. - AltGr key on European keyboards works now on win32 (Volker) - fix problem with console/serial port on Bochs exit (Volker) - enable serial port for GNU and GNU/Linux (Volker) - small documentation fixes (Volker) - remove unnecessary include statements for X11 (Volker) - italian keymap added (Emanuele Goldoni) - fix win32 ethernet frames error. It will no longer reject packets that are less than 60 bytes long. (Peter Tattam) - BIOS fixes : - win2k cd-boot (Christophe) - emm386 crash (Dave) - cs=0 at boot time (Christophe) - keyboard failure in scandisk (Dave) - fix bug in forming the 64-bit APIC base address from two 32-bit registers. A compiler warning in cpu/proc_ctrl.cc pointed this out. - fix default choice in the runtime options menu ------------------------------------------------------------------------- Changes in 1.4 (March 27, 2002): - ROM BIOS - 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". - default guis by platform: - win32/windows/cygwin: win32 gui - MacOS X: carbon gui - MacOS 9 or earlier: macos gui - BeOS: beos gui - AmigaOS: amigaos gui - all other platforms: X windows gui - compile arguments supplied by configure script - win32: too many to list here; see documentation - cygwin: -mno-cygwin -DWIN32 - MacOS X: -fpascal-strings -fno-common -arch ppc -Wno-four-char-constants -Wno-unknown-pragmas -Dmacintosh - 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 Windows(tm) key definitions (Volker Ruppert) - 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 ------------------------------------------------------------------------- Changes in 1.3 (December 10, 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.