Bochs Developers Guide

Kevin Lawton

Bryce Denney

Christophe Bothamy

Edited by

Michael Calabrese


Table of Contents
1. Resources for developers
1.1. Setting up SVN write access
1.2. Using SVN write access
1.2.1. Checking in files
1.2.2. Creating a backup of the SVN repository
1.2.3. Setting SVN commit notifications
1.3. Ideas for other sections
2. About the code
2.1. Overview
2.2. Directory Structure
2.3. Emulator Objects
2.3.1. Weird macros and other mysteries
2.3.2. Static methods hack
2.3.3. CPU objects in UP/SMP configurations
2.3.4. The simulator interface
2.3.5. The configuration parameter tree
2.3.6. The save/restore feature
2.4. Configure Scripting
2.5. Log Functions
2.5.1. Methods
2.6. Internal timers
2.6.1. Overview
2.6.2. Timer definitions, members and methods
2.6.3. Detailed functional description
2.7. The Bochs devices base class bx_devmodel_c
2.8. Bochs's CMOS map
2.9. Sound Blaster 16 Emulation
2.9.1. How well does it work?
2.9.2. Output to a sound card
2.9.3. Configuring Bochs
2.9.4. Runtime configuration
2.10. The sound lowlevel interface
2.10.1. Files
2.10.2. Defines and strutures
2.10.3. Classes
2.10.4. The base class bx_sound_lowlevel_c
2.10.5. The waveout base class bx_soundlow_waveout_c
2.10.6. The wavein base class bx_soundlow_wavein_c
2.10.7. The midiout base class bx_soundlow_midiout_c
2.11. Harddisk Images based on redologs
2.11.1. Description
2.11.2. How redologs works ?
2.11.3. Parameters
2.11.4. Redolog class description
2.11.5. Disk image classes description
2.12. How to add keymapping in a GUI client
2.13. The Bochs BIOS
2.13.1. The biossums utility
2.14. The Bochs plugin interface
2.14.1. Introduction
2.14.2. Plugin file names
2.14.3. Plugin types
2.14.4. The plugin entry function
2.14.5. Compatibility with "monolithic" Bochs compilation
3. Advanced debugger usage
3.1. I/O Interface to Bochs Debugger
3.1.1. Commands supported by port 0x8A00
3.1.2. Access to port 0x8A01 (write-only)
3.1.3. Sample
3.2. The instrumentation feature
3.3. Bochs debugger internals
4. Coding
4.1. Coding guidelines
4.2. Building a Bochs release
4.2.1. Preparing source files and SVN
4.2.2. Anonymous SVN checkout and platform-independent sources
4.2.3. Building the release on Linux
4.2.4. Building the release on win32
4.2.5. Creating a file release and uploading files on SF
5. Webmastering
5.1. Bochs project webspace
5.2. Updating the Bochs website content
5.3. Updating the SVN snapshot
5.4. Updating the online documentation
5.5. other content
5.6. available tools
List of Tables
2-1. Directory structure
2-2. Parameter types
2-3. Save/restore parameter types
2-4. Waveout methods
2-5. format bits
2-6. codecs
2-7. wave output types
2-8. Generic header description
2-9. Redolog specific header description
2-10. How number of entries in the catalog and number of blocks by extents are computed
2-11. Plugin file naming
2-12. Plugin types
5-1. Directory structure