PC emulator
QUOTEWHAT IS BOCHS?Bochs is a highly portable open source IA-32 (x86) PC emulator
written in C++, that runs on most popular platforms. It includes
emulation of the Intel x86 CPU, common I/O devices, and a custom
BIOS. Currently, Bochs can be compiled to emulate a 386, 486,
Pentium/PentiumII/PentiumIII/Pentium4 or x86-64 CPU, including optional
MMX, SSEx and 3DNow! instructions. Bochs is capable of running
most Operating Systems inside the emulation, for example Linux, DOS,
Windows 95/98/NT/2000/XP or Windows Vista.
Bochs was written by Kevin Lawton and is currently maintained by
the Bochs project at “http://bochs.sourceforge.net”.——————————————————————————–
Changes:
Changes in 2.4 (May 3, 2009):Brief summary :
- Added graphical Bochs debugger frontend for most of the supported platforms.
- Thanks for Chourdakis Michael and Bruce Ewing.
- Many new CPU features in emulation
- Support for > 32 bit physical address space and configurable MSRs
- VMX, 1G pages in long mode, MOVBE instruction
- Bugfixes for CPU emulation correctness, debugger and CPU instrumentation.
- New config interface ‘win32config’ with start and runtime menu
- USB: added OHCI support, external hub and cdrom
- Added user plugin interface support.Detailed change log :
- CPU and internal debugger
- Support for VMX hardware emulation in Bochs CPU, to enable configure with
–enable-vmx option
Nearly complete VMX implementation, with few exceptions:
- Dual-monitor treatment of SMIs and SMM not implemented yet
- NMI virtualization, APIC virtualization not implemented yet
- VMENTER to not-active state not supported yet
- No advanced features like Extended Page Tables or VPID
- Support for configurable MSR registers emulation, to enable configure with
–enable-configurable-msrs option
Look for configuration example in .bochsrc and msrs.def
- Support new Intel Atom® MOVBE instruction, to enable configure with
–enable-movbe option
- Support for 1G pages in long mode, to enable configure with
–enable-1g-pages option
- Support for > 32 bit physical address space in CPU. Up to 36 bit could be seen in legacy mode (PAE) and up to 40 bit in x86-64 mode.
Still support the same amount of the physical memory in the memory object,
so system with > 4Gb of RAM yet cannot be emulated.
To enable configure with –enable-long-phy-address option.
- Implemented modern BIOSes mode limiting max reported CPUID function to 3 using .bochsrc CPU option. The mode is required in order to correctly install and boot WinNT.
- Added ability to configure CPUID vendor/brand strings through .bochsrc (patch from @SF by Doug Reed).
- Many bugfixes for CPU emulation correctness (both x86 and x86-64).
- Updated CPU instrumentation callbacks.
- Fixed Bochs internal debugger breakpoints/watchpoints handling.- Configure and compile
- Added ability to choose Bochs log file name and Bochs debugger log file name from Bochs command line (using new -log and -dbglog options)
- Removed Peter Tattam’s closed source external debugger interface from the code.
- Removed –enable-guest2host-tlb configure option. The option is always enabled for any Bochs configuration.
- Removed –enable-icache configure option. The option is always enabled for any Bochs configuration. Trace cache support still remains optional and could be configured off.
- Added configure option to compile in GUI frontend for Bochs debugger, to enable configure with –enable-debugger-gui option. The GUI debugger frontend is enabled by default with Bochs debugger.
- Removed –enable-port-e9-hack configure option. The feature now could be configured at runtime through .bochsrc.
- Added configure option to enable/disable A20 pin support. Disabling the A20 pin support slightly speeds up the emulation.
- reduced dependencies between source files for faster code generation- BIOS
- Added S3 (suspend to RAM) ACPI state to BIOS (patch by Gleb Natapov)
- Implemented MTRR support in the bios (patches by Avi Kivity and Alex Williamsion with additions by Sebastian Herbszt)
- Bug fixes- I/O Devices
- Added user plugin support
- remaining devices converted to plugins: pit, ioapic, iodebug
- added ‘plugin_ctrl’ bochsrc option to control the presence of optional device plugins without a separate option. By default all plugins are enabled.
- added register mechanism for removable mouse and keyboard devices
- Hard drive / cdrom
- PACKET-DMA feature now supported by all ATAPI commands
- ATAPI command 0x1A added (based on the Qemu implementation)
- sb16
- Added ALSA sound support on Linux (PCM/MIDI output)
- FM synthesizer now usable with MIDI output (simple piano only)
- Fixed OPL frequency to MIDI note translation
- Fixed MIDI output command
- keyboard
- added keyboard controller commands 0xCA and 0xCB
- USB
- USB code reorganized to support more HC types and devices
- added USB OHCI support written by Ben Lunt
- added external USB hub support (initial code ported from Qemu)
- added USB cdrom support (SCSI layer ported from Qemu)
- added status bar indicators to show data transfer
- VGA
- VBE video memory increased to 16 MB
- implemented changeable VBE LFB base address (PCI only, requires latest BIOS and VGABIOS images)
- I/O APIC
- implemented I/O APIC device hardware reset- Config interface
- new config interface ‘win32config’ with start and runtime menu is now the default on Windows (‘textconfig’ is still available)
- win32 device config dialogs are now created dynamicly from a parameter list (works like the wx ParamDialog)
- changes in textcofig and the wx ParamDialog for compatibility with the new win32 dialog behaviour
- Bochs param tree index keys are case independent now
- some other additions / bugfixes in the simulator interface code- Misc
- updated LGPL’d VGABIOS to version 0.6c
- Updated Bochs TESTFORM to version 0.4
Get it HERE.



