This is bochs-080294, the first release of the Intel 80x86 emulator program, "bochs". Bochs, when finished, will allow binaries compiled to run on the Intel 80x86 with related hardware, to run on workstations of a different architecture. (Where x will be say '4' or so - the intent is not to create another 8086 emulator!) I'm hoping that in the future, I can interface with code from the "Wine" project, to create an efficient MS-Windoze emulator. Currently, bochs is no where near useful as an x86 emulator. I've implemented all the 8086 instructions in both 16bit & 32bit modes. Well, with the exeption of DIV/IDIV in 32bit mode on systems whose compilers can't handle 64bit numbers. All CPU constructs are 32bit. 32bit mode MOD R/M bytes can already be handled as can 32bit address/opsize prefixes, and the extended segment registers (fs & gs) can be used. Support for a simple test script language for setting/examining various CPU/memory structures and embedding instructions is included, so that each of the opcodes, prefixes, etc can be tested as part of a first phase. I've also implemented a pretty modular direct IO interface, so that support for IO devices can be added without knowing much about the emulation code. All IO relating code is in a separate directory (iodev). There are stencils made out for almost every type of common hardware, so that it will be even easier for people who wish to help. There is a good start to code which allows for the interception of interrupts, so they can be remapped accordingly. My first major goal is to get enough working to boot MSDog. Here are some of the things which must be done before that's going to happen: 1) test the buggers out of each 8086 opcode. 2) add support for at least text mode though curses or VGA via Xwindows. 3) add BIOS interrupt services. 4) add support for at least a floppy drive via a hard-disk image. 5) much else... There's enough happening in the world of emulators these days, that I'm hoping to "share" code for the hardware support; VGA, floppy, harddrive, keyboard, etc. I haven't yet got documentation together for developers to understand how bochs is structured or even a list of functions to use and their purpose. That will come soon. For now, I think this release will be useful for ironing out compile problems on various systems. I've included the few test scripts which I've created so far, but they're enough to run the executable against, to see if there are any fundamental problems. The CPU emulation code is shareware. Please read the LICENSE file if you're interested in helping. Basically, I dup'd alot of the wording from "XV", the excellent graphics file viewer by John Bradley. If XV's license doesn't bother you, this one shouldn't either! The IO devices code, I stamped with the GPL. This is for the following reasons: 1) I'm hoping there will be alot of help from developers in this department and its only fair that their contributions are GPL'd. 2) If I can share IO device code with other emulator programs, they'll probably be GPL'd to. 3) So you realize I'm all for freely distributing source code. PERIOD! ---------------------------------------------------------------------- Please help out, even if you can only compile bochs and run the "make test" target to see if it works for you. I'd like to get a good start at being able to compile on many systems. I've compile and ran the tests successfully on the following systems: 1) PC 486/Linux 2) PC 486/NetBSD 3) ALPHA AXP/OSF1 4) Sparc/Solaris & SunOS The INSTALL file in the distribution contains information on how to compile bochs and run a few test scripts. Thanks for your interest. Kevin P. Lawton bochs@tiac.net