===== Emulators ===== Two kinds of emulator are relevant to Alpha: emulators of Alpha systems, which run Alpha operating systems on other hardware, and emulators that run on Alpha, allowing Alpha systems to run software built for x86. ^ Emulator ^ Emulated system ^ Host ^ License ^ Status ^ Linux guest ^ | [[#qemu|QEMU]] | DP264/Clipper (AlphaServer ES40 class), Linux user mode | Many | GPL | Maintained | Current distributions | | [[#es40_and_axpbox|ES40, AXPbox, ES40-Emu]] | AlphaServer ES40 | Linux, Windows, macOS | GPL v2 | AXPbox and ES40-Emu maintained | Old distributions only | | [[#avanti_and_freeaxp|FreeAXP, Avanti]] | AlphaServer 400 | 64-bit Windows | Freeware; proprietary | Sold | No | | [[#charon-axp_and_personal_alpha|Charon-AXP, Personal Alpha]] | Various; AlphaServer DS10 (Personal Alpha+) | Windows | Proprietary; freeware | Sold; Personal Alpha withdrawn | No | | [[#alphavm|AlphaVM]] | Tsunami/Typhoon systems | Windows, Linux | Proprietary | Sold | Boots, unsupported | | [[#vtalpha|vtAlpha]] | AlphaStation 200 to AlphaServer GS1280 | x86 hardware, virtual machines, cloud | Proprietary | Sold | No | | [[#incomplete_emulators|SimH, GXemul, DECaxp, MSE]] | Various; incomplete | Many | Open source | Incomplete | No | | [[#em86|EM86]] | Linux/x86 programs, on Alpha/Linux | Alpha/Linux | Proprietary x86 core | Discontinued | n/a | | [[#fx32|FX!32]] | Win32 x86 programs, on Windows NT/Alpha | Windows NT/Alpha | Proprietary | Discontinued | n/a | ==== Choosing an emulator ==== * **Running or developing Alpha/Linux:** QEMU's system emulator. It is the only emulator on which current Linux distributions are known to install and run, and Debian uses it to build packages. See [[documentation:qemu|QEMU]] for how to install and boot a distribution. * **Building or repairing an Alpha/Linux file system from another machine:** QEMU's user-mode emulator, ''qemu-alpha'', with ''binfmt_misc'', to run Alpha programs in a chroot. See [[documentation:qemu#user-mode_emulation|QEMU: User-mode emulation]]. * **Running the real SRM console:** AXPbox and ES40-Emu run the firmware from an AlphaServer ES40 ROM image, which QEMU does not. Of Linux distributions, only old ones are known to work on them. * **OpenVMS or Tru64 UNIX:** neither runs under QEMU. Free options are FreeAXP, AlphaVM-Basic, AXPbox, and ES40-Emu; commercial ones are Avanti, Charon-AXP, AlphaVM, and vtAlpha. * **Windows NT or Windows 2000 for Alpha:** ES40-Emu, which runs the ARC firmware. ==== Emulators of Alpha systems ==== === QEMU === QEMU is the emulator most used to run Alpha/Linux today. Its default Alpha machine, ''clipper'', models a DP264-family system, the platform of the AlphaServer ES40, with up to 4 CPUs, EV67 by default; see [[documentation:qemu#the_machine|QEMU: The machine]]. [(>[[https://gitlab.com/qemu-project/qemu/-/blob/v11.1.0/hw/alpha/dp264.c|hw/alpha/dp264.c]], QEMU 11.1.0)] QEMU also emulates the older ev4, ev5, ev56, and pca56 CPUs, [(>[[https://gitlab.com/qemu-project/qemu/-/blob/v11.1.0/target/alpha/cpu.c|target/alpha/cpu.c]], QEMU 11.1.0)] but since Linux 6.10 a current kernel needs ev56 or later. [(>[[https://git.kernel.org/torvalds/c/a4184174be36|"alpha: drop pre-EV56 support"]], Linux 6.10)] QEMU uses its own firmware, [[https://gitlab.com/qemu-project/qemu-palcode|qemu-palcode]], instead of Digital's [[software:firmware:srm|SRM console]]. It implements the PALcode and HWRPB interfaces that Linux expects from SRM, [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/debian-alpha-mbox/2011-May.mbox#L823|"Re: QEMU Alpha system status"]], Richard Henderson, debian-alpha, 5 May 2011)] but not SRM's I/O callbacks or command line. [(>[[https://raymii.org/s/articles/NetBSD_on_QEMU_Alpha.html|"Install NetBSD 9.2 on a DEC Alpha CPU in QEMU with X11"]], Remy van Elst, 18 Aug 2021)] Boot loaders such as [[software:boot_loaders:aboot|aboot]] therefore cannot be used, and the kernel and initrd are passed to QEMU directly with ''-kernel'' and ''-initrd''. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/debian-alpha-mbox/2021-March.mbox#L470|"Bug#986009: installation-reports: document qemu workarounds and bug in newer d-i image (fwd)"]], Thorsten Glaser, debian-alpha, 27 Mar 2021)] The firmware sets the system serial number to "QEMU". Generic Linux kernels detect this and use a high-resolution clock and alarm that the firmware provides, and kernels built for QEMU alone can select ''CONFIG_ALPHA_QEMU''. [(>[[https://git.kernel.org/torvalds/c/994dcf7055df|"alpha: Notice if we're being run under QEMU"]], Linux 3.13)] [(>[[https://git.kernel.org/torvalds/c/4914d7b458e3|"alpha: Use qemu+cserve provided high-res clock and alarm."]], Linux 3.13)] == Linux under QEMU == Current versions of Debian install under ''qemu-system-alpha'', [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/debian-alpha-mbox/2020-March.mbox#L126|"Re: [Sbcl-devel] Alpha, HPPA support at risk"]], John Paul Adrian Glaubitz, debian-alpha, 12 Mar 2020)] and Debian's Alpha port builds packages on QEMU build daemons as well as on real hardware. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/debian-alpha-mbox/2020-January.mbox#L2472|"Re: Booting Debian in qemu-system-alpha"]], John Paul Adrian Glaubitz, debian-alpha, 24 Jan 2020)] [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/debian-alpha-mbox/2023-September.mbox#L1|"Bug#1051650: cmake: Problems finding libraries on Alpha"]], Adrian Bunk, debian-alpha, 11 Sep 2023)] Build machines need at least 2 GiB of memory. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/debian-alpha-mbox/2020-January.mbox#L2582|"Re: Booting Debian in qemu-system-alpha"]], Philippe Mathieu-Daudé, debian-alpha, 27 Jan 2020)] QEMU's own test suite boots a Linux kernel on the ''clipper'' machine. [(>[[https://gitlab.com/qemu-project/qemu/-/blob/v11.1.0/tests/functional/alpha/test_clipper.py|tests/functional/alpha/test_clipper.py]], QEMU 11.1.0)] QEMU's user-mode emulator, ''qemu-alpha'', runs Alpha/Linux programs on other architectures. It can be used to prepare disks for real Alpha systems, by running the first stage of debootstrap on an x86-64 system and the second stage under ''qemu-alpha''. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/debian-alpha-mbox/2019-July.mbox#L1219|"Re: systemd woes continue"]], Michael Cree, debian-alpha, 17 Jul 2019)] See [[documentation:qemu|QEMU]] for complete instructions. == Other operating systems == NetBSD runs under QEMU 6.1 and later, after Jason Thorpe added the PCI-ISA bridge device node that some operating systems need to find the ISA bus. [(>[[https://gitlab.com/qemu-project/qemu/-/commit/5ec4f1d348e164355ff0e50486d537973e517e19|"hw/alpha: Provide a PCI-ISA bridge device node"]], Jason Thorpe, 16 Jun 2021, QEMU 6.1)] OpenVMS and Tru64 UNIX do not run under QEMU. [(>[[https://raymii.org/s/articles/NetBSD_on_QEMU_Alpha.html|"Install NetBSD 9.2 on a DEC Alpha CPU in QEMU with X11"]], Remy van Elst, 18 Aug 2021)] == History == Alpha user-mode emulation first shipped in QEMU 0.9.1, [(>[[https://gitlab.com/qemu-project/qemu/-/commit/4c9649a967e45bc3086d2e752871878e08d6cdf2|"Alpha architecture emulation core."]], Jocelyn Mayer, 5 Apr 2007, QEMU 0.9.1)] and system emulation, with the ''clipper'' machine, in QEMU 1.0; [(>[[https://gitlab.com/qemu-project/qemu/-/commit/80bb2ff770e3e6ff2922a7b60978394571ec64cb|"target-alpha: Add CLIPPER emulation."]], Richard Henderson, 25 Aug 2011, QEMU 1.0)] Richard Henderson maintains QEMU's Alpha code. [(>[[https://gitlab.com/qemu-project/qemu/-/blob/v11.1.0/MAINTAINERS|MAINTAINERS]], QEMU 11.1.0)] === ES40 and AXPbox === The ES40 emulator, written by Camiel Vanderhoeven, emulates an AlphaServer ES40 and runs its firmware from an ES40 ROM image. [(>[[https://github.com/lenticularis39/axpbox/wiki/Guest-support|"Guest support"]], AXPbox wiki)] It has not been actively developed since 2008, [(>[[https://raymii.org/s/blog/Installing_the_es40_AlphaServer_emulator_0.18_on_Ubuntu_16.04_and_trying_to_install_openVMS_8.4_on_es40.html|"Installing the es40 AlphaServer emulator 0.18 on Ubuntu 16.04, and trying to install OpenVMS 8.4 on es40"]], Remy van Elst)] and has several forks. [(>[[https://www.avanthar.com/healyzh/decemulation/Alpha.html|"The DEC Alpha Emulation Webpage"]], updated 20 Feb 2021)] [[https://github.com/lenticularis39/axpbox|AXPbox]] is a fork of the ES40 emulator, renamed to avoid confusion with the AlphaServer ES40. It emulates SCSI, sound, IDE, serial ports, Ethernet (using pcap, or TUN/TAP on Linux), and VGA graphics (using SDL). [(>[[https://github.com/lenticularis39/axpbox|AXPbox README]])] Version 1.0.0 was released on 23 January 2021 and 1.2.0 on 11 July 2026. [(>[[https://github.com/lenticularis39/axpbox/releases|AXPbox releases]])] Its guest support table lists OpenVMS 8.4 and NetBSD 9.2 as working, and Debian 5.0 as hanging on boot. [(>[[https://github.com/lenticularis39/axpbox/wiki/Guest-support|"Guest support"]], AXPbox wiki)] The ROM image is not included: AXPbox's OpenVMS installation guide has the user download the ES40 SRM console image ''cl67srmrom.exe'' separately and name it in the configuration file. [(>[[https://github.com/lenticularis39/axpbox/wiki/OpenVMS-installation-guide|"OpenVMS installation guide"]], AXPbox wiki)] AXPbox backports features from the ES40-Emu project, where its README says active development now happens. [(>[[https://github.com/lenticularis39/axpbox|AXPbox README]])] [[https://github.com/ES40-Emu/es40|ES40-Emu]] added a JIT compiler, S3 graphics, and the ARC firmware, so it can run Windows NT and Windows 2000 for Alpha. [(>[[https://www.osnews.com/story/145445/|"Improved DEC Alpha emulator runs Windows 2000 for Alpha and OpenVMS and Tru64 with X11"]], Thom Holwerda, OSnews, 5 Jul 2026)] The only Linux distribution its README reports working is Red Hat 7.2; no current distribution is known to run on either emulator. [(>[[https://github.com/ES40-Emu/es40|ES40-Emu README]], 7 May 2026 entry)] === Avanti and FreeAXP === Migration Specialties' FreeAXP provides a virtual AlphaServer 400 with one CPU, 128 MiB of memory, seven disk drives, two network interfaces, and two serial ports, hosted on 64-bit Windows, and its use is unrestricted. [(>[[https://migrationspecialties.com/index.php/products/freeaxp|"FreeAXP"]], Migration Specialties)] The beta was announced in March 2010. [(>[[https://comp.os.vms.narkive.com/0eBzgyoE/freeaxp-a-free-virtual-alpha-system|"FreeAXP - A Free Virtual Alpha System"]], Ian Miller, comp.os.vms, 22 Mar 2010)] FreeAXP is a demonstrator for the commercial Avanti and AvantiFlex, which support EV4, EV5, and EV6 instruction sets [(>[[https://migrationspecialties.com/index.php/products/avanti|"Avanti"]], Migration Specialties)] and run OpenVMS and Tru64 UNIX. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/tru64-unix-managers-mbox/gmane-2010-April.mbox#L581|"Call for Alpha Emulator Beta Testers using Tru64 UNIX, Digitsl UNIX, and DEC OSF/1"]], John Manger, tru64-unix-managers, 12 Apr 2010)] Avanti and FreeAXP V5.0.0.702 was released on 13 February 2023. [(>[[https://migrationspecialties.com/index.php/products/freeaxp|"FreeAXP"]], Migration Specialties)] Linux is not listed as a supported guest. === Charon-AXP and Personal Alpha === Stromasys, formerly Software Resources International (SRI), [(>[[https://www.avanthar.com/healyzh/decemulation/Alpha.html|"The DEC Alpha Emulation Webpage"]], updated 20 Feb 2021)] sells Charon-AXP, a commercial Alpha emulator that runs unmodified OpenVMS and Tru64 UNIX. Its free Personal Alpha was followed by Personal Alpha+, which provided a virtual AlphaServer DS10 on 64-bit Windows. [(>[[https://www.chipestimate.com/Stromasys-Boosts-CHARON-Performance-by-Introducing-AXP-and-Free-Personal-Alpha/Semiconductor-IP-Core/news/14777|"Stromasys Boosts CHARON Performance by Introducing AXP+ and Free Personal Alpha+"]], Stromasys, November 2011)] Personal Alpha is no longer distributed. [(>[[https://raymii.org/s/blog/The_sad_state_of_Alpha_emulators_for_OpenVMS.html|"The sad state of Alpha emulators (for OpenVMS)"]], Remy van Elst, updated 30 Jun 2023)] === AlphaVM === EmuVM's commercial AlphaVM emulates Tsunami/Typhoon systems, and AlphaVM-Pro 2.0 also supports Gamma, Rawhide, Titan, and Wildfire systems with up to 32 CPUs. It runs OpenVMS and Tru64 UNIX; Linux boots, but is not supported. [(>[[https://emuvm.com/products/alphavm-pro/|"AlphaVM-Pro"]], EmuVM)] The hobbyist AlphaVM-Basic emulates a system with one CPU and up to 1 GiB of memory. [(>[[https://emuvm.com/products/alphavm-basic/|"AlphaVM-Basic"]], EmuVM)] === vtAlpha === AVTware sells a further commercial emulator, vtAlpha, which has no free version, although AVTware provides evaluation licenses on request. [(>[[https://raymii.org/s/blog/The_sad_state_of_Alpha_emulators_for_OpenVMS.html|"The sad state of Alpha emulators (for OpenVMS)"]], Remy van Elst, updated 30 Jun 2023)] Its variants cover systems from the AlphaStation 200 and AlphaServer 300 to the AlphaServer GS1280, and it runs OpenVMS and Tru64 UNIX on x86 computers, virtual machines, or cloud hosts. Linux is not listed as a supported guest. [(>[[https://www.avtware.com/vtalpha|"vtAlpha: Alpha computer replacement"]], AVTware)] === Incomplete emulators === SimH, [(>[[https://github.com/open-simh/simh/blob/master/alpha/alpha_sys_defs.h|alpha/alpha_sys_defs.h]], Open SIMH)] GXemul, [(>''HISTORY'', GXemul)] and [[https://gitlab.com/JonathanBelanger/DECaxp|DECaxp]] [(>[[https://gitlab.com/JonathanBelanger/DECaxp/-/commits/master|DECaxp commit history]])] have partial Alpha emulation, but none boots an operating system. Timothy Stark began adding Alpha support to his [[https://github.com/fsword7/mse|Multi-System Emulator]] (MSE) in February 2021. [(>[[https://www.avanthar.com/healyzh/decemulation/Alpha.html|"The DEC Alpha Emulation Webpage"]], updated 20 Feb 2021)] ==== Emulators on Alpha ==== {{anchor:em86}}{{anchor:fx32}} Digital's FX!32, announced in November 1995, ran 32-bit x86 programs on Windows NT for Alpha. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/biz-digital-announce-mbox/googlegroups-1995-November.mbox#L587|"Press/X86 Software Translation Breakthrough On Alpha"]], Digital Press and Analysts News, biz.digital.announce, 8 Nov 1995)] It was not available for Linux, but Digital's EM86, announced in April 1997, used its x86 core to run Linux/x86 programs on Alpha/Linux. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1997-April.mbox#L10643|"EM86: Official Announcement"]], Jim Paradis, axp-list, 4 Apr 1997)] [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1998-February.mbox#L12214|"Re: EM86"]], Jim Paradis, axp-list, 18 Feb 1998)] EM86 stopped working on later systems and could not be fixed, because the FX!32 code it used was closed-source, [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/debian-alpha-mbox/2006-February.mbox#L14578|"Re: em86"]], Steve Langasek, debian-alpha, 22 Feb 2006)] and Linux 5.14 removed its binary format support. [(>[[https://git.kernel.org/torvalds/c/6208721f1399|"binfmt: remove support for em86 (alpha only)"]], Linux 5.14)] QEMU has no code generator for Alpha hosts, so on Alpha it builds only with its slower TCG interpreter (''--enable-tcg-interpreter''), and the QEMU project does not guarantee that it compiles or works there. [(>[[https://gitlab.com/qemu-project/qemu/-/blob/v11.1.0/meson.build|meson.build]], QEMU 11.1.0)] {{tag>software}}