An AlphaServer ES40 emulator.
AXPbox emulates an HP/DEC AlphaServer ES40 — one to four Alpha EV68 CPUs on the Tsunami/Typhoon chipset — well enough to run the operating systems of the Alpha era: OpenVMS, Tru64 UNIX, NetBSD and Windows NT/2000. It runs on x86-64 and AArch64 hosts under Linux, macOS and Windows.
| OpenVMS 8.4 with the CDE desktop | Windows 2000 (build 2128) |
|---|---|
![]() |
![]() |
- Real firmware. Boots the genuine SRM console and, from it, the ARC/AlphaBIOS console; graphics cards run their real VGA BIOS.
- Fast. An asmjit-based JIT for x86-64 and AArch64 hosts (Apple Silicon included), with block chaining and register pinning. An interpreter build is always available too.
- Quiet when idle. Idle pacing recognizes the guest's idle loops and sleeps until an interrupt arrives, so an idle guest costs a few percent of a host core.
- SMP and large memory. Up to four CPUs and up to 32 GB of RAM, presented to the firmware with matching memory arrays and DIMM data.
- Removable media done carefully. CD and floppy images are validated before insertion, swapped between guest commands, and respect guest drive locks; BIN/CUE images are supported.
- Scriptable. Runs without a window, dumps the screen, and accepts scripted keyboard and mouse input — handy for automated installs and tests.
| Area | Devices |
|---|---|
| CPU | 1–4 × Alpha EV68CB (21264) |
| Chipset | Tsunami/Typhoon: Cchip, Dchip, 2 × Pchip, TIG, DPR/RMC |
| Memory | 64 MB – 32 GB |
| Storage | Symbios 53C810 / 53C825 / 53C875 / 53C895 SCSI, ALi M1543C IDE (disks and ATAPI CD-ROM), 82077AA floppy, RAM disk |
| ISA bridge | ALi M1543C: 8259 PIC, 8254 PIT, MC146818 RTC, 8237 DMA, SuperIO, PMU |
| Graphics | S3 Trio64 (with IBM 8514/A acceleration); Cirrus Logic CL-GD5430 / CL-GD5434 (with BitBLT) |
| Network | DEC 21143 (Tulip) — host access through pcap, TUN/TAP (Linux) or a null back end |
| Sound | Ensoniq AudioPCI ES1370 |
| Other | OHCI USB, 2 × 16550 serial ports (telnet or unconnected), keyboard and PS/2 mouse, flash and NVRAM persistence |
docs/peripherals.md lists every device the ES40 firmware knows and which ones are coming next.
| Guest | Notes |
|---|---|
| OpenVMS | Boots, including the CDE desktop (installation guide) |
| Tru64 UNIX | Boots |
| NetBSD | Boots (installation guide) |
| Windows NT / 2000 | Through AlphaBIOS, on the S3 or Cirrus graphics card; Windows 2000 with up to two CPUs (installation guide) |
See also the upstream guest support page.
git clone --recurse-submodules https://github.com/artur/axpbox
cd axpbox
cmake -S . -B build
cmake --build build -j
./build/axpbox configure # writes es40.cfg
./build/axpbox run
You also need an SRM console ROM image, and a VGA BIOS for the graphics card. The documentation covers the details:
- Building on Linux, macOS and Windows, and enabling the JIT
- Running and configuring: firmware, consoles, networking, media, hotkeys
- Headless operation and debug hooks
- Development and testing
With the JIT build on an Apple M-series host, Windows 2000 runs at roughly
2250 MIPS per emulated CPU. That is an upper bound, measured on the guest's
idle loop; a CPU-bound 25-million-iteration cmd loop inside the guest takes
about 110 s. An idle two-CPU Windows desktop uses about 3–6 % of one host
core.
- More than two CPUs in a guest: SRM runs with four, but Windows 2000 Professional is licensed for two, and the Windows 2000 Server beta HAL only sends inter-processor interrupts to CPUs 0–1. OpenVMS and Tru64 are untested with more than one CPU.
- Big-endian hosts.
- Some SCSI and IDE commands; copying large files from an IDE CD-ROM to an IDE disk can fail (this rarely affects an OpenVMS installation).
- Cirrus screen-to-system BitBLT transfers (Windows 2000 does not use them).
AXPbox began as es40, the emulator by Camiel Vanderhoeven and the ES40 Emulator Project (2007–2010), with later work by Tim Stark (fsword7). Tomáš Glozar revived it as AXPbox — CMake, a single binary, modern C++ threading and many crash fixes — with Remy van Elst. The ES40-Emu project (gdwnldsKSC) continues es40 in parallel and is a welcome source of ideas: each of its changes is reviewed on its merits here and adopted, adapted or improved.
This repository continues AXPbox as its own project. Its work includes the AArch64 JIT, idle pacing, SMP and memory fixes, the Cirrus Logic cards and their blitter, removable-media handling, configurable hotkeys, and the headless test tooling.
AXPbox builds on the work of others:
- MAME — the VGA core and IBM 8514/A emulation (Barry Rodewald, Aaron Giles, Vas Crabb, Olivier Galibert; BSD-3-Clause).
- Bochs — the GUI layer (MandrakeSoft) and parts of the disk and CD-ROM command handling.
- QEMU — the ES1370 sound device (Vassili Karpov); its Cirrus model was the behavioural reference and the test oracle for the Cirrus blitter.
- POCO — the original threading wrappers (Applied Informatics).
- 86Box — its ROM set supplies the VGA BIOS images, and its Cirrus model was a reference.
- SDL3, asmjit, libpcap and Npcap.
Guest-visible identifiers (disk serial numbers, the es40.cfg file name, the
machine type) deliberately keep their ES40 names.
GNU General Public License, version 2 or later — see LICENSE. Third-party code keeps its original license, as noted in the source file headers.

