Emulatron E6
A browser-based retro BBS terminal emulator for connecting to classic bulletin board systems.
Emulatron E6 brings the nostalgia of 1980s and 1990s bulletin board systems to your modern browser. Connect to classic BBSes, run vintage software, and experience the text-based interfaces, ANSI art, and door games that defined early online communities.
What It Does
This isn’t just a terminal emulator—it’s a full retrocomputing platform. You can dial into real BBSes over Telnet, but you can also boot standalone systems: a TI CC-40 calculator, a Commodore VIC-20, an Altair 8800. Each backend runs its own CPU emulator, storage system, and peripheral simulation.
The project grew from “let’s make modem sounds” to a 150,000+ line codebase with five CPU architectures, three interpreted languages, a packet-switched network simulation, and a multiplayer game about being a goose.
Technical Deep Dives
I’ve written extensively about the engineering challenges and solutions:
Hardware Emulation
- Inside Five CPU Emulators — Intel 8008, 8080, 8086, Zilog Z80, and MOS 6502
- Anatomy of a Retro BIOS — Building bootable firmware for Z80, 8080, and 8088 systems
- Video Chips and Serial Streams — VIC-II emulation and ANSI framebuffer forwarding
- PETSCII Video Adapter — Commodore 64/VIC-20 character graphics in Canvas
Audio & Modems
- Audio Bus Architecture — Routing, mixing, and Web Audio gotchas
- Bell 103 Modem — FSK modulation and audio-based data transfer
- Modem Handshakes — Bell 212A and V.32bis training sequences
- CTS Flow Control — Hardware flow control simulation
Storage & Peripherals
- KCS Cassette Interface — Kansas City Standard tape storage
- Assemblers, Memory Maps, and Madness — 6502/Z80 assemblers and memory mapping
Languages & Interpreters
- Three Languages, One Weekend — BASIC, Forth, and Scheme interpreters
- Z-Machine Interpreter — Running Infocom text adventures
Networking & Protocols
- Simulating DATAPAC — Canada’s X.25 packet-switched network
- Serving Gopherspace from Rust — RFC 1436 Gopher server implementation
- Microservices Architecture — gRPC, NATS, and backend services
- Lazy Loading 42 Backends — Dynamic imports and bundle optimization
Games & Applications
- Canada Goose: Game Design — Building a multiplayer goose simulator
- Balancing a Goose Game — Achievements, tuning, and the 1077-line manual
Identity & Infrastructure
- Passkey Authentication — WebAuthn implementation
Development Journey
The project evolved over several intense weeks. These journey logs capture the day-to-day decisions, rabbit holes, and breakthroughs:
- The Small Day That Mattered — UI polish and peripheral cleanup
- Build System and Modem Plumbing — Turbopack migration and modem state machines
- Repository Restructure — Monorepo organization and backend extraction
- Milestones and TypeScript Migration — Version 1.0 and type safety
- Dungeon, Forth, and Core Polish — Z-Machine and Forth interpreter work
- Z-Machine and Storage Sync — Save/restore and cloud synchronization
- Web Move and Parser Migrations — Moving parsers to the web worker
- Deployment Prep — Production infrastructure and backend expansion
- Storage, Peripherals, and Audio Realism — Cassette deck and audio polish
- CC-40 Completion and IVR Launch — Calculator emulation and phone system
- Identity, SEO, and Polish — Authentication and production readiness
- Server, Backends, and Peripherals — Final backend work and launch prep
Tech Stack
- Frontend: TypeScript, React, Next.js, Canvas API, Web Audio API, Web Workers
- Backend Services: Rust (Axum), gRPC, NATS messaging
- CPU Emulation: Rust compiled to WebAssembly
- Parsing: Pest parser generator (Rust)
- Infrastructure: Docker, Kubernetes, PostgreSQL
Whether you’re a BBS veteran looking to revisit the old days or a newcomer curious about pre-web online culture, Emulatron provides an accessible gateway to this fascinating piece of computing history.