Preserving digital heritage through living interaction. yaPDP is not just another hardware emulator; it is an open-access web-based museum designed for everyone—including visitors with zero background in 1970s computing. Through intuitive, hands-on experimentation, users explore how the architectural choices and constraints of the past still silently govern the modern digital world we live in today.
Most historic computer emulators require dense technical knowledge just to boot up. yaPDP breaks this barrier. Our mission is public engagement with the history of technology.
Even if a visitor has never heard of a PDP-11, the project's gamified environment invites them to interact, flick switches, and watch historical software come alive. We bridge the gap between generations, revealing how early operating systems (like Unix V5) and programming languages (like C) established foundations that still impact modern smartphones, cloud servers, and consumer software.
- 100% Free & Open (MIT): Free tools for universities, history of science courses, and digital museums worldwide.
I first saw DEC minicomputers as a child, and later worked hands‑on with their Soviet clones — the SM‑4 and SM‑1420 running RSX‑11M. Decades later, thanks to the incredible work of Paul Nankervis, it is possible to boot Unix V5, BSD 2.11, Ultrix‑11, RSX‑11M, RSTS/E and RT‑11 directly in a web browser.
This repository is the result: yaPDP. Welcome to the machine.
yaPDP runs in any modern browser with zero plugins, zero downloads, and zero server requirements.
- Authentic Front Panel: Every switch, LED, and rotary knob faithfully recreated. Toggle in a bootstrap loader or run light-chaser routines the way DEC engineers did in the 1970s.
- Model 33 ASR Teletype: The operator console features a fully animated, authentic Model 33 ASR — featuring 3D keycaps, paper printing with true
nroff/manoverstrike, carriage margin jamming, and an 8-track paper-tape reader/punch unit with real START/STOP/FREE/AUTO switches. - Clattering LP11 Line Printer: Beige/grey cabinet, fanfold paper, ON LINE lamp, ~300 lines/min, DONE handshake, sticky ERROR latching, and realistic soundscapes. Print directly to a physical printer or export as
.txt. - Crisp Vector Terminals: High-definition DECscope VT52 (canvas tube with P4 phosphor, reverse video, CRT simulation) and VT100 (P4 white / P1 green phosphor, VT100 key clicks, SGR attribute rendering, native clipboard integration).
- VT11 Graphics Display Processor: Optional vector-graphics display page running on its own green-phosphor CRT — includes the classic Lunar Lander.
- Guest Operating Systems & Quick Boot: Single-click magic wand boots any guest OS from the preloaded images — Unix V5, BSD 2.9 & 2.11, ULTRIX‑11, RSX‑11M (3.2 & 4.6), RSTS/E (4B‑17 through 10.1), RT‑11 and XXDP diagnostics — applying the machine profile and typing the boot command, prompt-aware. The OS galleries on the landing pages link straight into it: every tile has a RUN button that opens the emulator and boots that system (
pdp11.html?boot=<device>). - Persistent Browser Storage: Disk and tape changes persist across sessions using local browser storage.
- Touch & Mobile Optimized: Responsive layout with custom on-screen keyboards for VT52/VT100/Model 33, special-key bars (
CTRL,ESC,TAB,RUBOUT, control codes), and two-finger pan/zoom for small devices. - Shareable Machine States & Deep Linking: Save, export, and share exact machine states as
.state.zstfiles. Teleport directly into a running historical moment via?state=links—no boot procedure, no disk hunting required. - Instant Play & Hardware Demos Galleries: Curated carousels on the landing page featuring historical games (Space Invaders, Adventure, Dungeon) and peripheral demos (Lunar Lander on VT11, Teletype paper tape reading) that launch instantly into the exact context intended by the author.
DEC VT52 Video Terminal |
DEC VT100 Video Terminal |
Running BASIC-11 on the PDP-11 |
|
The emulator ships with preloaded disk and tape images. To manual boot, type the boot command at the @ prompt:
| Disk | Operating System | How to Boot |
|---|---|---|
| RK0 | Unix V5 | boot rk0 → unix → login as root |
| RK1 | RT‑11 v4.0 | BOOT RK1 |
| RK2 | RSTS V06C‑03 | BOOT RK2 — login 11,70 password PDP |
| RK3 | XXDP (diagnostics) | BOOT RK3 |
| RK4 | RT‑11 3B Distribution | BOOT RK4 |
| TM0 | RSTS 4B‑17 (tape) | BOOT TM0 — follow ROLLIN restore procedure |
| RL0 | BSD 2.9 | boot rl0 → rl(0,0)rlunix → CTRL/D → login root |
| RL1 | RSX‑11M v3.2 | BOOT RL1 — login 1,2 password SYSTEM |
| RL2 | RSTS/E v7.0 | BOOT RL2 — login 11,70 password PDP |
| RL3 | XXDP (extended) | BOOT RL3 |
| RP0 | ULTRIX‑11 V3.1 | boot rp0 → CTRL/D → login root |
| RP1 | BSD 2.11 | boot rp1 — autoboots to multiuser, login root |
| RP2 | RSTS/E v9.6 | BOOT RP2 — answer prompts, login 11,70 |
| RP3 | RSX‑11M v4.6 | BOOT RP3 — auto-logs 1,2 SYSTEM |
| RP4 | RSTS/E v10.1 | BOOT RP4 — answer prompts, login 11,70 |
Full boot session logs for every OS are available in
docs/ExampleBoots.md.
For offline execution, yaPDP is packaged as a cross-platform desktop application using Tauri v2.
- Minimal Installer (~19 MB): Ships core media (
rk0Unix V5,rk1RT-11,bootcode, BASIC-11, ODT-11, ED-11, Lunar Lander). Additional disk images can be drag-and-dropped at runtime. - Full Installer (~103 MB): Pre-packaged with every disk and tape image, so the whole guest‑OS line‑up boots completely offline. Most of that download is the application itself (artwork, audio, fonts), not the images.
- Supported Platforms: Windows x64 (MSI / NSIS / Portable) and Linux x64 (deb / rpm / AppImage).
For build instructions and toolchain configuration, see docs/BUILDING.md and docs/RELEASING.md.
- Open the yaPDP Live Emulator.
- At the
@prompt, typeboot rp1and press ENTER. - BSD 2.11 will autoboot into multiuser mode. Log in as
root(no password). - Run standard UNIX commands (
ls,ps -aux,df) or compile C programs withcc.
- User Manual: Step-by-step user guide with DEC-styled layout and live screenshots:
manual.html. - Feature Deep-Dive: Walkthrough of hardware pages, panel tricks, and peripheral controls:
docs/FEATURES.md. - Historical Fidelity & Limitations: What yaPDP reproduces accurately and where to be cautious:
docs/manual/fidelity.md. - Known Issues: Bugs and their workarounds, honestly listed:
docs/known-issues.md. - Contributing: How to propose code, documentation, historical material, and reproducible machine states:
docs/CONTRIBUTING.md. - Roadmap: Where the machine is heading next:
docs/ROADMAP.md. - DevLog publishing workflow: How to publish articles from a release-based Support branch without deploying untested emulator changes:
docs/DEVLOG.md. - State Format: The
.statecontainer, manifest schema versioning, the newer-snapshot warning and the evolution plan:docs/STATE-FORMAT.md. - Embedding the Emulator: For museums and educators — embed yaPDP in any HTML page via
<iframe>:docs/manual/machine-state.md(see the Embedding subsection).
Building yaPDP involved implementing low-level computer architecture and real-time hardware emulation in JavaScript:
- CPU Core (
src/pdp11.js): Cycle-accurate 16-bit PDP-11 CPU instruction decoder, registers, and trap logic. - Memory & Memory-Mapped I/O (
src/iopage.js): Interconnects CPU execution with virtual hardware peripheral registers. - Application & State Glue (
src/pdp11-app.js,src/config.js): Connects the emulation engine to browser DOM elements, sound players, and state synchronization. - Bootstrap Loader & OS Wizard (
src/bootcode.js,src/osboot.js,src/quickboot.js): Bootloader injection logic and prompt-aware automated OS startup scripts. - Automation & Video Pipeline: Automated screenshot generation via
tools/screenshots-manual.jsand headless promo video assembly viatools/record-video.js/tools/assemble-video.js. The assembled clips are published to the project's YouTube playlist in one command (npm run youtube:publish) — setup and quota rules indocs/YOUTUBE.md. - State Serialization & Video Pipeline (
src/state-format.js,src/step-engine.js): Platform-free container format for machine states (zstd-compressed RAM, CPU, and disk overlays). The shared StepEngine drives both interactive post-restore scenarios and the headless Puppeteer video recording pipeline.
Full directory structure and module descriptions are detailed in docs/ARCHITECTURE.md; the Unibus machine layer has its own deep dive in docs/machine-layer.md and the XXDP diagnostics in docs/xxdp-diagnostics.md.
This project stands on the shoulders of giants:
- Paul Nankervis — Original PDP-11 Emulator: Author of the original pdp11-js engine. His cycle-accurate CPU emulation and curated OS collections made this project possible.
"I met my core objective — I can now see the RSTS/E console light pattern that I was looking for." — Paul Nankervis
- Norbert Landsteiner (mass:werk) — Google60 Teletype: The Model 33 ASR teletype visual engine and audio simulation are adapted from Google60.
- Digital Equipment Corporation (DEC): For creating the legendary PDP-11 architecture.
- Archives & Preservation Communities: Bitsavers, The Unix Heritage Society (TUHS), and RSTS.ORG.
This project is licensed under the MIT License. Copyright (c) 2026 Alexei Eskenazi
| Resource | Link |
|---|---|
| Original pdp11-js | github.com/paulnank/pdp11-js |
| Google60 (mass:werk) | mass.werk.at/google60 |
| Bitsavers Documentation | bitsavers.org/pdf/dec/pdp11 |
| TUHS Archives | tuhs.org |


