Industry#Game porting#Virtualization

A developer rebuilt a complete 486 PC in pure JavaScript: boot FreeDOS in the browser, swap video and sound cards at will

GitHub user jandej released Retro486 v0.1 on October 21: a dependency-free JavaScript recreation of a 486 PC with one-click FreeDOS and DOS-game floppies.

The emulator's motherboard view with an Intel i486 DX2-66 processor, four 4 MB SIMM banks and a VLB graphics slot

GitHub user jandej released e486-web on October 21, 2026 — the interface calls itself Retro486, and the version is v0.1. It is a full Intel 80486DX2-66 PC written in pure ES6 JavaScript: no WebAssembly, no build step, no dependencies. Clone the repo, start any static server, and the machine boots in a browser tab. It runs real SeaBIOS and a VGA BIOS, mounts a FreeDOS 1.3 floppy and a 250 MB MS-DOS hard-disk image by default, and its storage tab ships a disk library where Commander Keen 4, Wolfenstein 3D, Duke Nukem II and DOOM shareware floppies mount in one click. Tom’s Hardware tested the live demo on October 31 and found FreeDOS boots fine, but several games in the library threw errors — the project is at v0.1, and it shows.

Key points

  • The e486-web repo was created on 2026-10-21 with a “Release v0.1” commit the same day; the last push came on October 29 — the merged PR #1 does the GitHub Pages deployment only, while the NE2000 network card landed in a separate commit on October 23. As of 2026-11-01 it has 53 stars, 6 forks and 7 commits, and no LICENSE file (package.json declares MIT).
  • The CPU core implements real mode, 16/32-bit protected mode, virtual 8086 mode, demand paging and hardware task switching, plus an 80487 FPU; the bus layer carries dual 8259A PICs, an 8254 timer, MC146818 CMOS and an 8042 keyboard controller, with sound from an SB16 + AdLib OPL3 card synthesized through WebAudio.
  • The interface has five tabs — CRT monitor, motherboard and slots, storage bay, custom card studio, system diagnostics — with five CRT filters including green- and amber-phosphor modes; ROMs and floppy images cache automatically in IndexedDB and survive a reload.

How far the emulation goes

The CPU core lives in js/cpu_486.js, about 5,700 lines, and covers the 486’s three operating modes plus demand paging with a 4,096-entry TLB. Instructions from the era — CPUID, BSWAP, CMPXCHG, XADD — are all implemented. The motherboard layer follows the AT / i440FX layout, and the motherboard view draws live address and data buses, IRQ lines and a seven-segment POST code display. The default video card is an SVGA on the VLB bus with Bochs VBE support; EGA and CGA cards are also in the box. Mode 13h — 320×200 at 256 colors — is the mode DOOM and most DOS games actually paint.

Every expansion card is a hot-pluggable module. The js/cards/ directory holds SVGA, EGA and CGA cards, the SB16 + OPL3 sound card, a multi-I/O storage controller (dual-channel ATA plus floppy), a POST diagnostic card, an MPU-401, and the NE2000 NIC added on October 23. The repo also bundles a period-correct sample project: an AI chat client that runs inside DOS and calls Gemini, GPT-4o and Claude through a gateway, source and Makefile included under projects/.

How to try it

The shortest path is the live demo at jandej.github.io/e486-web: click the FreeDOS floppy and you land at a DOS prompt, nothing to install. To run it locally, clone the repo and run npm start (it starts a Python static server), then open http://localhost:8080/; npm test runs three Node test suites covering the CPU, the cards and storage. Your own .img or .iso files mount by drag-and-drop, and writes to floppies are cached in the browser. The “1-Click Bundled & Cached Disks” shelf in the storage tab is where the game disks live — though per Tom’s Hardware’s testing, game compatibility at v0.1 is rough and several titles error out.

What others say

Tom’s Hardware ran the only independent hands-on. The detail it seized on is the development credit: Claude appears in the Co-Authored-By trailer of the October 29 merge that deployed the site, and from that the author infers “we guess you could say e486-web was (partially) vibe-coded,” closing on the hope that the wrinkles are being ironed out by de Jager and Claude. Fast Technology (快科技) carried a Chinese write-up on November 1 that adds nothing beyond the original. A Hacker News repost went up on October 31; as of November 1 it sat at 7 points and 1 comment, so the project has not traveled far yet.

JavaScript x86 emulation has prior art: Fabian Hemmer’s v86 has run Linux in the browser for years, and archive.org’s DOS collection runs on a WASM build of DOSBox. The differentiator here is the hardware presentation — the motherboard visualization, the swappable cards and the custom-card studio are built for teaching, a layer v86 never had.

Our take

The most interesting use of this project is as a hardware-teaching sandbox. To show a student what happens between the power switch and a DOS prompt — POST codes, BIOS checks, the boot sector — every step is visible, and you can pull the video card out to see what breaks. That beats a slide deck drawing buses in PowerPoint. The custom card studio ships templates and a live I/O test bench, so the hands-on part is real, not decorative.

Three caveats belong in any write-up, including this one. First, this is v0.1: Tom’s Hardware hit errors in the game library, so treating it as a working DOS gaming machine is premature. Second, the repo has no LICENSE file while package.json says MIT — at v0.1 the repository tracked shareware floppy images of DOOM, Wolfenstein 3D and other commercial games; an October 23 commit removed them from the repo (the storage tab’s disk-library entries remain, but the images no longer download from Pages), and nobody involved has addressed their redistribution terms. DOS Zone’s browser version of Vice City was taken down in October after a Take-Two request; we covered that wave of browser ports and the same question hangs over this project. Third, no second outlet has written this up, so treat the attention accordingly.

AI-assisted development is no longer news either, but the depth here is worth noting: a 5,724-line CPU core and a 1,793-line bus implementation, with Claude in the commit trailer — Tom’s Hardware calls the project partially vibe-coded, which is per its own wording the outlet’s inference, not the author’s self-label. When Epic rebuilt its game launcher this way we wrote it up, and Google opened a Play Store lane for vibe-coded apps shortly before that. The line of work keeps moving down the stack, from web toys toward full machines.

What to watch

The October 29 merge brought the project to GitHub Pages; the October 23 commit left behind the NE2000 card — networking is the foundation for whatever comes next in a DOS emulator. There is no published roadmap; the commit log is the only signal. If you care about game compatibility, wait for a patched release before trying the disk library. If you just want to watch a 486 boot, it is one click away today.