A list of emulators written in the JavaScript programming language.
If you know about any emulators not on this list, please let me know in the comments section.
And be sure to check out our other comprehensive JavaScript lists of free javascript books and JavaScript data visualization libraries.
Acorn
- ElkJS – JavaScript based Acorn Electron emulator (Source)
- Acorn Atom Emulator – by Phil Mainwaring. Type “OLD” for an Easter Egg
- JSBeeb – JavaScript BBC Micro emulator (Source) (Development blog)
Amstrad
Apple
- Apple 1js – by Will Scullin
- Apple IIjs – An Apple ][ Emulator in JavaScript
- a2 – A fast, WebGL optimized Apple ][+ emulator.
- Apple2JS – A JavaScript emulator for the Apple II
- Yet Another Apple 2+ in JavaScript – by Thomas Skibo
Atari
- EstyJS – A pretty fast and functional JavaScript Atari ST emulator (Source)
- Javatari.js – Atari 2600 emulator by Paulo Augusto Peccin. (Example cartridges online) (Source)
- jsA8E – JavaScript version of the A8E Atari 800 XL Emulator
Commodore
- Commodore LCD emulator – by Gabor Lenart
- Commodore PET – by Thomas Skibo
- JSC64 – Commodore 64 emulator written in JavaScript (Source)
- c64js – Commodore 64 emulator written in JavaScript by Mikael Borgbrant (Source)
- jsSID – SID player with minimal necessary C64 emulation (Source)
- Kim1 – emulation in JavaScript by Rob Sayers (Source)
- SAE – Scripted Amiga Emulator (Source)
- VIC-20 Emulator – JavaScript VIC-20 emulator
- VICE.js – Versatile Commodore Emulator for JavaScript (Source)
DEC
- PDP-1 running the SpaceWar game and the Minskytron demo – by Norbert Landsteiner
- PDP-8I emulator running FOCAL,1969 – by “Warlockd”
- Javascript PDP 11 – PDP-11/70 emulator with simulated front panel and a choice of operating systems. By Paul Nankervis
- PDP-11 Emulator – A JavaScript PDP-11 emulator running UNIX Sixth Edition. By Julius Schmidt
- pdp11-js – PDP-11 emulator with UNIX V6. By Takahiro Aoyagi
Nintendo
- 1964js – JavaScript port of the 1964 N64 emulator for Windows
- CycloaJS – JavaScript NES Emulator (Source)
- GBA.js – Game Boy Advance in the Browser
(Source) - GameBoy Online – JavaScript GameBoy Color emulator (Source)
- IodineGBA – A GameBoy Advance emulator written entirely in JavaScript (Source)
- JS-VBA-M – JavaScript port of VisualBoyAdvance-M, a Game Boy Color / Advance emulator
- JSNES – A JavaScript NES emulator (Source)
- NESNES – JavaScript NES emulator, also available as a web component (Source)
- Nezulator – A NES emulator in JavaScript
- XNES – Experimental JavaScript Super Nintendo emulators (Source)
- fam – JavaScript NES emulator (Source)
- jsGB – A GameBoy emulator in JavaScript (Source)
- mupen64plus – A port of the popular Nintendo 64 emulator for the Web (Source)
- n64js – An N64 emulator in JavaScript (Source)
Robotron / VEB Mikroelektronik
- KC85_Emu – KC85/3 and KC85/4 emulator by Alexander Lang
- YAKC – Yet Another KC emulator by A.Weissflog (KC85/2..4, KC87, Z9001, Z1013)
Sega
- jsSMS – JavaScript Sega Master System & Game Gear emulator (Source)
- Miracle – Sega Master System emulator (Source)
Sinclair
- Enterprise-128 JavaScript Emulator – by Gábor Lénárt, based on JSSpeccy
- JSSpeccy – A ZX Spectrum emulator in JavaScript (Source)
- JtyOne Online ZX81 Emulator – by Simon Holdsworth
- Qaop/JS – ZX Spectrum emulator
- ZX80 Emulator – JavaScript ZX80 Emulator
- jBacteria – The smallest JavaScript Spectrum emulator
Tandy
- MC-10 Emulator – Emulator for the TRS-80 MC-10 microcomputer
- TRS-80 Model III Emulator a Javascript emulator for the TRS-80 Model III
- JS Mocha – The HTML5 CoCo 2 Emulator
- jTandy – Another JavaScript TRS-80 emulator
Multi-system Emulators
- JSMESS examples – The JavaScript MESS (Multi Emulator Super System) (Source) (Notes)
- PCE – PC emulators in JavaScript (Atari ST, IBM PC 5150, Macintosh, RC759 Piccoline)
- RetroArch – JavaScript port of RetroArch (bundles Gambatte (Gameboy), Genesis Plus GX, Handy (Lynx), Snes9x Next, VBA Next (GameBoy Advance), Tyrquake and FinalBurn Alpha)
- RetroWeb – collection of Javascript emulators and boot media, including Apple-IIe (VisiCalc), Macintosh (System 1.0), Atari 1040ST, Commodore 64, Amiga 500 (Workbench 1.3), IBM PC Model 5150 (PC-DOS, CP/M-86, Cassette Basic), IBM PC XT (DOS, GEM 1.2, VisiCalc, Windows 1.01, 8088 Corruption demo), RC759 Piccoline (Eliza, Bil-simulation, Concurrent CP/M-86), TRS-80.
PC Emulators
- JS/Linux – JavaScript PC emulator
- JsDOSBox – JavaScript PC DOS emulator (Source)
- PCjs – IBM PC Model 5150 emulator
- Virtual x86 – An x86 emulator written in JavaScript (Source)
- jemul8 – An object-oriented JavaScript x86 emulator for Node.js and the Browser (Source)
- jsbochs – Bochs PC emulator for the Browser (Source)
Bare CPUs
- 8008 running SCELBAL by Mark G. Arnold. (“SCELBAL is the only open-source, floating-point, high-level language ever implemented on the 8008”)
- 8080 CPU emulator – Intel 8080 CPU emulator running Space Invaders ROM (Source)
- Angel – JavaScript RISC-V ISA simulator booting linux in a web-browser (Source)
- Angular 2 6502 written with TypeScript and Angular 2, by Jeremy Likness
- ARM-js – An ARM emulator written in JavaScript (Source)
- ASM80 – Online assembler for 8-bit microprocessors by Martin Malý. Includes emulation of several machines: 8080, Z80, 6502, 6809. (Sources)
- Basic MIPS functional simulator and Basic MIPS pipelined simulator by Mianzhi Wang (morriswmz). (Source)
- Easy6502 – JavaScript 6502 tutorial and emulator (Source)
- EduMIPS64 – educational MIPS64 CPU, ported from Java by Andrea Spadaccini using GWT (see blog here.) (Source)
- Imaginary 6502 – 6502 Emulator and Assembler
- Intel 4004 emulator – by Maciej Szyc. Includes assembler and disassembler.
- Intel 8080 CPU Emulator – Emulates a minimal Intel 8080 Microcomputer that runs CP/M
- JavaScript 8080 Emulator – 8080 arcade game emulator in JavaScript
- Simple 8-bit Assembler Simulator – Provides a simplified assembler syntax (based on NASM) and is simulating a x86 like CPU (Source)
- Visual ARM1 – JavaScript/WebGL for ARM’s first CPU, modelling 25000 transistors at switch level and animating the original chip layout – in 3D. See the blog post
- Visual 6502 – JavaScript simulator for the 6502 CPU, modelling thousands of transistors at switch level and animating the original chip layout. See also expert mode.
- Visual 6800 – JavaScript simulator for the Motorola 6800 CPU, modelling thousands of transistors at switch level and animating the original chip layout.
- Visulator – x86 machine emulator that visualizes how each instruction is processed (Source)
- YAMD – Yet Another MIPS Debugger (Source)
- jor1k – OpenRISC OR1K JavaScript emulator running Linux with network support (Source)
- jslm32 – JavaScript LatticeMico32 emulator running Linux (Source)
Early machines
- Babbage’s Difference Engine (First funded 1823, first full build in 1855, first full rebuild in 1991)
- Turing machine simulated in JavaScript. See here for more information. (1936)
- Z1 machine’s adder in 3D JavaScript/WebGL interactive simulation of the mechanical adder of Zuse’s first machine. By Jakob Mischek (Source) (1938)
- Z3 machine’s adder – ripple-carry electromechanical adder simulated in JavaScript, by Henry Raymond, Patrick Seewald and Vijeinath Tissaveerasingham. Explanation (1941)
- JsSSEM – Manchester Small-Scale Experimental Machine emulator (Also check Computer/zero which is very loosely based on the SSEM, and its tutorial) (1948)
- C88 – C88 computer simulation (The Homebrew CPU inspired by the SSEM) (1948)
- EDSAC on Browser – by NISHIO Hirokazu (Programming guide) (1949)
- WITCH Emulator – The Harwell Dekatron Machine, by Justin King. (Source and example programs) (1951)
- UNIVAC I emulator – by Nobert Landsteiner (1951)
- ElectroData/Burroughs Datatron 205 Emulator – by Paul Kimpel (Source) (1954)
- Digi-Comp 1 – educational plastic computer from 1963. Emulator by Larry Groebe and Kevin Williams. (1963)
- Burroughs B5500 emulator – Burroughs B5500 emulator in JavaScript (Source) (1964)
- Apollo Guidance Computer – Moonjs a port by Shahriar Iravanian of Ronald Burkey’s Virtual AGC. (1966)
- CARDIAC – Bell Labs’ CARDIAC cardboard computer from 1969. Instructions (1969)
- Kenbak-1 – John Blankenbaker’s TTL-based 256byte personal computer. More information (1970)
- Ordinapoche – A paper computer from France, invented 1969, popularised in 1981 and 1985. (More here and see also the 1981 magazine)
- NRI 832 Emulator by Paul Robson. (See blog for source.) (1971)
Calculator emulators
Microcode-level calculators
- HP-35 – bug-compatible emulator by Ashley Feniello explained here using Eric Smith‘s and Jacques Laporte‘s work
- HP-35, HP-45, HP-55, HP-65, HP-80 – collection of HP Classics, based on Feniello’s work, by Francois Roulet
- HP-45 – statically recompiled ROM by Norbert Kehrer
- HP-65 and HP-67 – with extra debug menu, by Greg Sydney-Smith
- Sinclair Scientific and TI-1500 – calculator simulations including full description of the algorithms and the reverse-engineering process. By Ken Shirriff
- TI-92 Plus emulator – JavaScript emulator for the TI-92 Plus
Workalike calculators
- HP-11C, HP-12C Platinum, HP-16C – by Elvis Pfützenreuter
- HP-15C – by Greg Hewgill. (Source)
- HP-21 and HP-29 by Greg Sydney-Smith (See here and here)
- HP-25 – by John Clenance
- HP-35 – JavaScript emulator by Neil Fraser
- HP-35 SOS – modified HP-35 with stack overflow sensing LED, by Hans Klaver, based on Fraser’s work
- HP-48 – JavaScript implementation of the most commonly used HP-48 functions. More info here, by Josh Poley
Miscellaneous
- C1Pjs – JavaScript simulation of the Challenger 1P
- CFT – JavaScript simulation of Alexios Chouchoulas’ 16-bit homebrew TTL machine. (More information including documentation and a video.)
- Chip-8 virtual machine by Alexander Dickson – see blog entry
- Chip-8 virtual machine by Brian Milton (Source may target several CPUs)
- Compucolor II Emulator – JavaScript Compucolor II Emulator
- Compukit UK101 – by David Stevenson
- COSMAC Elf-ish – simulator by William Donnelly
- DCMO5 Online – Thomson MO5 JavaScript emulator
- Heathkit ET3400 – by Phil Mainwaring. Click “Do” then “0000”. (Instructions)
- IBM 5110 Emulator by Norbert Kehrer runs Basic or APL.
- jsH89 – Heathkit H89 emulator (runs CP/M) by Mark Garlanger
- JS99’er – TI-99/4A emulator written in JavaScript (Source)
- JSVecX – JavaScript port of the VecX Vectrex emulator
- JsPspEmu – JavaScript PSP emulator (Source)
- Little Man Computer a minimal CPU for teaching – emulator by Matthew Krutar. (Background)
- Little Man Computer a minimal CPU for teaching – emulator by Peter Higginson. (Background)
- NanoWasp – A MicroBee emulator
- Nascom 2 emulator by Tommy Thorn. (J to start Basic) (Source)
- PC-01 Lviv – An emulator for the PC-01 Lviv (Ukrainian home computer) (Source)
- RockyJS – Pebble watch interpreter/emulator
- Radio-86RK Radio-86RK emulator in JavaScript (Intel 8080 based 8-bit Russian home computer) (Source)
- KM-Z80 web emulator for Sharp MZ-80K, by Katsumi Morimatsu. GOTO $1200 to start KM-BASIC. (More information)
- Turbo Pascal – A web-based Pascal compiler that runs a subset of Turbo Pascal 5.5 code
- Virt.js – JavaScript emulation library (Source)
- jsMSX – The first MSX emulator 100% written in JavaScript
- jupiler – Jupiter Ace emulator written in JavaScript
- Visual Computer a minimal CPU for teaching by Shimon Schocken. (Web site)
- WebMSX – WebMSX, or simply WMSX, is a new MSX emulator designed for the Web (Source)
I have resurrected my Digi-Comp I emulator and moved it to Google Cloud Platform. The new URL is http://digicomp-1.appspot.com/
Thank you.
You forgot 6502.ts 🙂
https://github.com/6502ts/6502.ts
https://6502ts.github.io/stellerator/
emulator for the Texas Instruments MultiView caluclators:
http://ti-multiview.github.io/
There is also a JavaScript emulator for Project Oberon http://www.projectoberon.com at http://schierlm.github.io/OberonEmulator/
Project Oberon is a project by ETH Zurich to develop a minimal CPU to be run on a FPGA in Verilog (the RISC5 CPU), a compiler for it (for the quit minimal Oberon programming language) and a minimal but still usable graphical mouse-controlled operating system. Those who don’t have a FPGA can use one of the emulators available for it.
Paul Kimpel has also done a Burroughs 220 emulator here: https://github.com/pkimpel/retro-220
I forgot to add that Donald Knuth helped write the Burroughs ALGOL compiler for the Burroughs 220.
There is https://github.com/KnightOS/OpenTI, an asm.js wrapper for z80e (a z80 emulator)
Don’t leave out jsTIfied! Emulator for the TI-83+/84+: https://www.cemetech.net/projects/jstified/
You can add https://github.com/ethereumjs/ethereumjs-vm
It is also an emulator!!
You forgot Commodore Clicker, at c64clicker.com 😉
Granted, I haven’t finished it yet, and may never have the time to pick it back up, but it runs a few disks already. It’s conceptually based on Cookie Clicker, which is why it may’ve escaped your attention.