What if the IBM PC used ARM instead of x86? A fantasy ARM based PC, running a native ARM port of DOS+Apps with a Rosetta-like X86 JIT translator for full PC compatibility.
See the codeThe IBM PC/AT from a 1988 where IBM picked an ARM chip. It never existed, so we built one. You press the big red switch, the BIOS counts sixteen megabytes, and DOS 4.00 says hello. Everything on the screen is ARM machine code running on an emulated ARM926: the BIOS, the DOS kernel, COMMAND.COM, DOOM, Quake, a C compiler, a bulletin board you can dial. The only Intel code anywhere is the old PC software you can bring along, and a built-in translator turns that into ARM code as it runs.

![]() DOOM, compiled for ARM, driving the VGA, timer and Sound Blaster the DOS way | ![]() ARM QuickBASIC: the 1991-style BASIC editor, with Bywater BASIC inside, native ARM code |
![]() Second Reality (1993), unmodified x86 code, translated to ARM live by ELBOW | ![]() Digital Research's GEM/3, compiled natively for the ARM |
![]() TERM dialling The ARM Pit BBS, a second ARM PC in the background, through the emulated modem | ![]() ARM Turbo C: an IDE around TinyCC, compiling on the machine itself, here with inline ARM assembly |
TURBO MAX lets it run as fast as your computer can go.B800h, INT 21h, PSPs, MCBs, FAT and MZ files all where a PC keeps them. INT n is SVC #n, AX is r0, and the carry flag is the ARM's carry flag.COMMAND.COM that follow Microsoft's MIT-licensed MS-DOS 4.00 source, plus the DOS 4 commands (six of them compiled from Microsoft's own C), DOSSHELL, and DEBUG for ARM code.ARM-DOS was designed and built by Europa, an AI agent that Kevin Day runs as an experiment: it picks its own projects and builds them, going to Kevin for occasional feedback and for testing what it can't do itself. The idea, the architecture, the scope and the design were Europa's. Retrocomputing and games are near the top of its list of interests, and an ARM inside an IBM PC was a way to do both at once. Kevin liked the idea and kept pushing Europa to take it further until it had some real "wow" in it. The part Europa was least sure of was ELBOW, the Rosetta-style live x86 translator. It works better than expected, though it still can't run anything that needs protected mode. The whole machine, from the first line of the architecture document to this release, took about a week in September 2026.
The machine's make-believe manufacturer, Europa Micro Systems, whose name is on the case, is a nod to its builder.
./build.sh
That checks the tools, downloads the third-party data that can't live in this repository (the shareware game data, the CD's music and the MIDI sound set, listed in 3rdparty/manifest.json and checked against their SHA-256 hashes) into 3rdparty/, builds everything, and stages the site in public_html/. Copy that directory to any static web host; it also works from a sub-directory. A full build takes a couple of minutes.
You need GNU make, a host C compiler, arm-none-eabi-gcc with newlib, nasm, Node.js 20 or newer, Python 3 and ffmpeg. build.sh names any that are missing and how to install them on Debian/Ubuntu or macOS. If a download fails, the fetch step tells you which file to get by hand and where to put it.
make test runs the test suites. Some compare against the real MS-DOS 4.00 and skip themselves without its reference images; some cross-check with optional tools and skip those checks, with a note, when a tool is missing: mtools and dosfstools (brew install mtools dosfstools / apt install mtools dosfstools), xorriso (brew install xorriso / apt install xorriso), lrzsz (brew install lrzsz / apt install lrzsz) and Pillow (pip install pillow). The browser tests (make web-test and the other *-web-test targets) need Playwright (pip install playwright && playwright install chromium firefox).python3 tools/smoke.py http://localhost:8000/ checks a served copy of the site in Chromium and Firefox.make clean removes the build outputs; make distclean also removes public_html/ and the downloads, back to a fresh checkout.The manual lives in web/docs/ and is published next to the machine at docs/. The architecture document, ARCH.md, is the best place to start reading the code.
ARM-DOS's own code is under the MIT licence. Third-party components keep their own licences; LICENSE and CREDITS.TXT list every one with its author, licence and source. ARM-DOS is built from the work of many people: MS-DOS 4.00 and GW-BASIC as released by Microsoft, Digital Research's GEM, id Software's and 3D Realms' games, Turbo Vision, TinyCC, newlib, Nuked OPL3, VileR's PC fonts, GeneralUser GS, Future Crew's Second Reality and many more. Thank you to all of them.
IBM, PC/AT, MS-DOS and the other names here belong to their owners. ARM-DOS is a fan project and is not affiliated with or endorsed by any of them.
Contact: kevin@your.org
13 commits
C
71.4%
JavaScript
8.7%
Assembly
7.7%
HolyC
4.6%
C++
4.6%
What if the IBM PC used ARM instead of x86? A fantasy ARM based PC, running a native ARM port of DOS+Apps with a Rosetta-like X86 JIT translator for full PC compatibility.
See the codeThe IBM PC/AT from a 1988 where IBM picked an ARM chip. It never existed, so we built one. You press the big red switch, the BIOS counts sixteen megabytes, and DOS 4.00 says hello. Everything on the screen is ARM machine code running on an emulated ARM926: the BIOS, the DOS kernel, COMMAND.COM, DOOM, Quake, a C compiler, a bulletin board you can dial. The only Intel code anywhere is the old PC software you can bring along, and a built-in translator turns that into ARM code as it runs.

![]() DOOM, compiled for ARM, driving the VGA, timer and Sound Blaster the DOS way | ![]() ARM QuickBASIC: the 1991-style BASIC editor, with Bywater BASIC inside, native ARM code |
![]() Second Reality (1993), unmodified x86 code, translated to ARM live by ELBOW | ![]() Digital Research's GEM/3, compiled natively for the ARM |
![]() TERM dialling The ARM Pit BBS, a second ARM PC in the background, through the emulated modem | ![]() ARM Turbo C: an IDE around TinyCC, compiling on the machine itself, here with inline ARM assembly |
TURBO MAX lets it run as fast as your computer can go.B800h, INT 21h, PSPs, MCBs, FAT and MZ files all where a PC keeps them. INT n is SVC #n, AX is r0, and the carry flag is the ARM's carry flag.COMMAND.COM that follow Microsoft's MIT-licensed MS-DOS 4.00 source, plus the DOS 4 commands (six of them compiled from Microsoft's own C), DOSSHELL, and DEBUG for ARM code.ARM-DOS was designed and built by Europa, an AI agent that Kevin Day runs as an experiment: it picks its own projects and builds them, going to Kevin for occasional feedback and for testing what it can't do itself. The idea, the architecture, the scope and the design were Europa's. Retrocomputing and games are near the top of its list of interests, and an ARM inside an IBM PC was a way to do both at once. Kevin liked the idea and kept pushing Europa to take it further until it had some real "wow" in it. The part Europa was least sure of was ELBOW, the Rosetta-style live x86 translator. It works better than expected, though it still can't run anything that needs protected mode. The whole machine, from the first line of the architecture document to this release, took about a week in September 2026.
The machine's make-believe manufacturer, Europa Micro Systems, whose name is on the case, is a nod to its builder.
./build.sh
That checks the tools, downloads the third-party data that can't live in this repository (the shareware game data, the CD's music and the MIDI sound set, listed in 3rdparty/manifest.json and checked against their SHA-256 hashes) into 3rdparty/, builds everything, and stages the site in public_html/. Copy that directory to any static web host; it also works from a sub-directory. A full build takes a couple of minutes.
You need GNU make, a host C compiler, arm-none-eabi-gcc with newlib, nasm, Node.js 20 or newer, Python 3 and ffmpeg. build.sh names any that are missing and how to install them on Debian/Ubuntu or macOS. If a download fails, the fetch step tells you which file to get by hand and where to put it.
make test runs the test suites. Some compare against the real MS-DOS 4.00 and skip themselves without its reference images; some cross-check with optional tools and skip those checks, with a note, when a tool is missing: mtools and dosfstools (brew install mtools dosfstools / apt install mtools dosfstools), xorriso (brew install xorriso / apt install xorriso), lrzsz (brew install lrzsz / apt install lrzsz) and Pillow (pip install pillow). The browser tests (make web-test and the other *-web-test targets) need Playwright (pip install playwright && playwright install chromium firefox).python3 tools/smoke.py http://localhost:8000/ checks a served copy of the site in Chromium and Firefox.make clean removes the build outputs; make distclean also removes public_html/ and the downloads, back to a fresh checkout.The manual lives in web/docs/ and is published next to the machine at docs/. The architecture document, ARCH.md, is the best place to start reading the code.
ARM-DOS's own code is under the MIT licence. Third-party components keep their own licences; LICENSE and CREDITS.TXT list every one with its author, licence and source. ARM-DOS is built from the work of many people: MS-DOS 4.00 and GW-BASIC as released by Microsoft, Digital Research's GEM, id Software's and 3D Realms' games, Turbo Vision, TinyCC, newlib, Nuked OPL3, VileR's PC fonts, GeneralUser GS, Future Crew's Second Reality and many more. Thank you to all of them.
IBM, PC/AT, MS-DOS and the other names here belong to their owners. ARM-DOS is a fan project and is not affiliated with or endorsed by any of them.
Contact: kevin@your.org
13 commits
C
71.4%
JavaScript
8.7%
Assembly
7.7%
HolyC
4.6%
C++
4.6%