
The Sinclair ZX81 was built to hit a price point, not a spec sheet. 1K of RAM, a membrane keyboard, a Z80 running just fast enough to be useful, and basically nothing else. If you wanted more, you bought an expansion — assuming you could afford one, which as a kid in the early 80s, you usually couldn’t.
Forty-five years later, Hackaday covered a project by adam.klotblixt called OpenSpand that just… does all of it. One board. RAM expansion up to the full 64K address space (minus ROM), SD card storage that hijacks the original LOAD and SAVE commands, high-res graphics, emulated sound chips, a joystick port, serial ports, a choice of ROMs, and composite video out. The one thing missing is a printer interface, and even that’s arguably solvable through the serial port if someone’s motivated enough.
How it actually works
The clever part isn’t the feature list, it’s the implementation. Instead of stacking discrete expansion boards the way the original ZX81 add-ons worked, OpenSpand runs everything through a single RP2350. The microcontroller disables the ZX81’s onboard RAM and ROM and emulates them itself, along with every peripheral the board claims to support. Given how much horsepower a dual-core RP2350 has compared to an early-80s Z80 setup, there’s plenty of headroom to fake being a dozen different pieces of vintage hardware simultaneously.
I like this approach a lot more than I expected to. Emulating the RAM and ROM instead of physically expanding them means the board can behave like several different classic expansions depending on configuration, without needing several different boards. It’s the retrocomputing equivalent of software-defined radio: one flexible piece of silicon standing in for what used to require a shelf of dedicated parts.
What I’d push back on
The tradeoff nobody’s talking about is timing fidelity. The ZX81’s video generation was notoriously touchy — the CPU had to bit-bang the display in software, and third-party expansions of the era sometimes broke display timing in subtle ways. An RP2350 emulating RAM and ROM access has to hit deterministic timing on every read and write or the display glitches, or worse, corrupts. Getting that right on a general-purpose microcontroller, rather than something with truly predictable cycle timing, is not a small feat. If the project write-up glosses over how it handles worst-case latency on those RAM emulation paths, that’s the part I’d want to see benchmarked before trusting it under load.
There’s also a philosophical question buried in here. Do you want one board that does everything, or do you want the freedom to mix and match the way the original ecosystem allowed? A single do-everything board is convenient, but it also means a single point of failure. If the RP2350 firmware has a bug in the sound emulation, you don’t just lose sound — you’re now debugging a chip that’s also responsible for your RAM, your video, and your storage. The original expansion ecosystem was messier, but a bad add-on for the printer interface never took down your RAM pack.
An alternative worth considering
A different design path would have been a modular version: a small RP2350-based backplane with swappable daughter cards for RAM, storage, and video, each running its own smaller microcontroller or CPLD. That’s more parts, more cost, and definitely more soldering, but it isolates failures and lets you upgrade one subsystem — say, adding better video output — without touching the rest. It’s the difference between an all-in-one printer and a modular audio rack. OpenSpand goes the all-in-one route, which is the right call for a hobbyist project meant to be built once and used, but it’s worth knowing there’s a more robust (and more annoying) alternative if reliability under heavy use ever becomes a real concern.
None of this takes away from what’s a genuinely impressive piece of engineering. Getting a modern microcontroller to convincingly stand in for a decade of ZX81 expansion hardware, in one open-source board anyone can build, is the kind of project that makes we wonder what the ZX81 community would have done with this back in 1985. Probably built a business around it.
Full writeup and comments over at Hackaday.