Emulator Workflows
Pick the shortest emulator path that answers the question: QEMUQEMUThe default fast emulator for automated LainDOS builds, tests, monitor probes, and game smoke runs. for automated proof, 86Box86BoxA PC emulator used here as a period-hardware comparison target when QEMU behavior looks suspicious. for hardware-flavored comparison, real DOSreal DOSA comparison run using MS-DOS, PC DOS, or FreeDOS instead of LainDOS to separate guest bugs from emulator bugs. in QEMUQEMUThe default fast emulator for automated LainDOS builds, tests, monitor probes, and game smoke runs. to split blame, and BochsBochsA debugger-friendly x86 emulator useful as a third opinion when QEMU and 86Box disagree. when you need debugger-grade CPU inspection.
Decision rules
defaultUse QEMUQEMUThe default fast emulator for automated LainDOS builds, tests, monitor probes, and game smoke runs. for fast scripted tests, serial logs, monitor socketsmonitor socketA QEMU control channel used to send keys, capture screenshots, inspect registers, or quit scripted runs., VNCVNCA remote framebuffer protocol QEMU can expose so tests and humans can inspect graphical output headlessly. screenshots, and normal game smokesmoke testA coarse end-to-end run that proves a game or workflow reaches a visible expected state without fatal markers. runs. The repo picks LAINDOS_QEMUQEMUThe default fast emulator for automated LainDOS builds, tests, monitor probes, and game smoke runs. first, then the sibling patched QEMUQEMUThe default fast emulator for automated LainDOS builds, tests, monitor probes, and game smoke runs. build, then qemuQEMUThe default fast emulator for automated LainDOS builds, tests, monitor probes, and game smoke runs.-system-i386 from PATH.
std,retrace=precise for game runs.-serial stdio or a log file when tests need grep-able output.-device sb16 for generic Sound Blaster runs; add -device adlib only for games that need OPLAdLibThe classic Yamaha OPL FM-synthesis sound path. QEMU exposes it with -device adlib, separately from -device sb16; attach it only for games that need that probe path./AdLibAdLibThe classic Yamaha OPL FM-synthesis sound path. QEMU exposes it with -device adlib, separately from -device sb16; attach it only for games that need that probe path. probing.hardware flavorUse 86Box86BoxA PC emulator used here as a period-hardware comparison target when QEMU behavior looks suspicious. when QEMUQEMUThe default fast emulator for automated LainDOS builds, tests, monitor probes, and game smoke runs. looks suspicious or when a game wants period hardware. Keep experiments in copies of build/86box-serial-file/ so the baseline VM profile stays stable.
gfxcard = s3_trio64_pci.cpu_use_dynarec = 0 and fpu_softfloat = 1 as comparison toggles.blame splitterBoot a real DOSreal DOSA comparison run using MS-DOS, PC DOS, or FreeDOS instead of LainDOS to separate guest bugs from emulator bugs. floppy in QEMUQEMUThe default fast emulator for automated LainDOS builds, tests, monitor probes, and game smoke runs. and expose the game tree with QEMU FAT exportQEMU FAT exportQEMU's file=fat:rw drive mode, which exposes a host directory as a DOS FAT drive for quick real-DOS comparisons. when you need to separate a LainDOS bug from a QEMUQEMUThe default fast emulator for automated LainDOS builds, tests, monitor probes, and game smoke runs./game/runtime bug.
specializedUse BochsBochsA debugger-friendly x86 emulator useful as a third opinion when QEMU and 86Box disagree. for short debugger-heavy reproductions when QEMUQEMUThe default fast emulator for automated LainDOS builds, tests, monitor probes, and game smoke runs. and 86Box86BoxA PC emulator used here as a period-hardware comparison target when QEMU behavior looks suspicious. disagree. Use v86v86A browser-hosted x86 emulator used by the site to boot the small LainDOS demo image. for the browser demo and docs smoke, not as the authoritative compatibility target.
Which command proves what?
The source-of-truth commands stay in the Makefile and docs/emulator_workflows.md; this table is the quick selector.
make testmake sitemake test-monkey-demomake test-game-smokesmake test-wolf3d-smokemake test-ascendancy-smokemake test-shortline-smokemake test-norton-commander-smokeProbe before waiting
When a game appears stuck, capture a small discriminator first. The right serial logserial logCaptured COM1 text output, used by tests to detect PASS, FAIL, exceptions, and unhandled DOS calls., monitor socketmonitor socketA QEMU control channel used to send keys, capture screenshots, inspect registers, or quit scripted runs. probe, or framebufferframebufferThe raw pixels currently shown by VGA; smoke tests hash or inspect it when serial output cannot prove gameplay. hash can save hours of guessing.
serialmonitorframebufferCPU sample