Skip to content
ameskPublic

About

An immersive PDP-11/70 in the browser. Features an authentic working front panel, Teletype Model 33 ASR, paper tapes, crisp VT52/VT100 terminals, and a clattering LP11 line printer. Built to bring back the machine room.

Topics

Resources

Contributing

Stars

4 stars

Watchers

0 watching

Forks

Latest commit

 

History

805 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

yaPDP — An Interactive Virtual Retro-Museum & Immersive PDP‑11 Ecosystem

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.

CI License: MIT Live Demo


The Strategy: Educational Gamification & Public Accessibility

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.

Foreword: A Personal Note

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.


Key Features & The Machine Room Experience

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/man overstrike, 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.zst files. 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.

Hardware & Guest OS Gallery

DEC VT52 Terminal
DEC VT52 Video Terminal
DEC VT100 Terminal
DEC VT100 Video Terminal
PDP-11 Running BASIC
Running BASIC-11 on the PDP-11

Guest Operating Systems

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.


Desktop Application (Tauri v2)

For offline execution, yaPDP is packaged as a cross-platform desktop application using Tauri v2.

  • Minimal Installer (~19 MB): Ships core media (rk0 Unix V5, rk1 RT-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.


Quick Start & Documentation

  1. Open the yaPDP Live Emulator.
  2. At the @ prompt, type boot rp1 and press ENTER.
  3. BSD 2.11 will autoboot into multiuser mode. Log in as root (no password).
  4. Run standard UNIX commands (ls, ps -aux, df) or compile C programs with cc.

Manual & Feature Walkthroughs

  • 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 .state container, 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).

Project Architecture & Technical Highlights

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.js and headless promo video assembly via tools/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 in docs/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.


Acknowledgments

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.

License & Resource Links

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

About

An immersive PDP-11/70 in the browser. Features an authentic working front panel, Teletype Model 33 ASR, paper tapes, crisp VT52/VT100 terminals, and a clattering LP11 line printer. Built to bring back the machine room.

Topics

Resources

Contributing

Stars

4 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages