Rust-hosted VIC-20 sessions, classic text adventures, wide-screen server-console builds, and the STEM emulator under the hood. Every launch card below lands on a live /live/<cart> session.
one Control-C does stop/restore. Five Control-C presses within 3 seconds kills the process.
Vic-20 Server Edition
The server-console path keeps the VIC-20 boot real, then swaps in a resident console extension so the machine can speak wider text surfaces without faking the ROM boot.
Expand for the server-console internals
What we actually did was hook into the live machine after the stock ROM path had already done its work, then install a resident console layer instead of replacing the boot with a fake splash screen.
That meant identifying the right places to jump in, rethinking VIA2 as a terminal-facing device instead of only a physical keyboard-and-peripheral chip, and treating the output surface as something that could be redirected into a browser or SSH session without lying about how the machine started.
On the text side, we map VIC-20 screen codes into PETSCII semantics, then map PETSCII back out into UTF-8 so the browser can show a useful terminal while still preserving Commodore character intent as far as possible.
That gives you the stock machine with or without the border, plus 40x25 and 80x40 modes for SSH, browser play, and carts that want more room than a standard screen can offer.
Text Adventures
The classic Scott Adams adventures belong here. Adventureland, Voodoo Castle, The Count, Mission Impossible, and Pirates Cove still work because terse text, dead-simple prompts, and imagination age better than most graphics stacks.
This section is a shout-out to Scott Adams and Adventure International for proving how much worldbuilding could fit into tiny machines and even tinier memory budgets.
DND40 and DND80
DND40 and DND80 were written for my kids and are still a work in progress. The goal was a wholesome DND-style game that still worked well on a phone, with one layout tuned for 40x25 readability and another for 80x40 map density.
Under the hood it is a 6502 cartridge in BLK5 format, but paired with the server-console VIA replacement so it can target the wider terminal surfaces instead of pretending a stock VIC-20 screen is something it is not.
STEM Emulator
STEM, Stu's Emulator, is the Rust emulator underneath all of this. The design goal is deterministic, cycle-aware emulation with output good enough to compare against multiple external emulators instead of hand-waving timing away.
The project has already been checked against MAME, VICE, perfect6502, floooh chips, Masswerk, and beebjit, can emit cycle traces for differential work, and has already pushed an upstream MAME fix with the interruptible 6502 access work in commit 1afd61fbdbaf30c6c4e8c8ef101492520e3925e8.
Expand for the cool things about STEM
STEM is written in Rust and has been checked cycle-for-cycle against five other 6502 tools and emulators so timing work can be argued from traces instead of guesses.
It runs normal VIC-20 cartridges, but it also has an inbuilt server-console cart that gets loaded when we want a larger text area than the stock machine can offer.
Because we do not have to physically drive a CRT, the renderer watches video RAM, marks regions dirty when they are written, then uses those dirty writes to find update regions that can be delta-encoded and serialized to the TUI instead of repainting everything.
On top of that, the site adds a websocket interface so xterm.js and other tools can connect to a PTY and pass input and output over the socket while the emulator keeps running underneath.
PETSCII and Screen Codes
PETSCII is part character set, part terminal culture, and part machine interface. It is how Commodore systems expressed text, control, and a huge amount of visual personality with very little memory.
For this site, PETSCII matters because the browser terminal has to preserve Commodore intent instead of flattening everything into plain ASCII. That is why STEM keeps explicit screen-code and PETSCII conversion paths.
Pluto Homepage
There is also a Pluto homepage in the mix, because space, terminals, and old machines belong together more often than people admit.
If Neil deGrasse Tyson ever lands here, he should absolutely check it out.
SBASIC in Development
SBASIC is the start of a new minimal BASIC in BLK5 cartridge form, aimed at the server-console side of the VIC-20 rather than pretending the stock screen is all there is.
The direction is a small, approachable language with graphics-friendly commands for the wider terminal surfaces, especially plotting onto the 2x2 sub-character cells so an 80-column screen can act more like a 160x80 square-pixel canvas.
The features in flight are simple plotting and draw primitives, server-console aware screen control, compact string and numeric helpers, and a workflow that still feels tiny and understandable on a phone instead of turning into a fake modern IDE.
Vic-20 Books
I'm currently auditing my collection but I must have a decent chunk of every Vic-20 book printed.
Reminder to myself to upload some photos of my collection.