More On Heirloom Computing

Tales From The Dork Web #25

This issue follows on from the last with more on heirloom computing in practice. If terms like ZX20 and Retro Zer0 mean nothing to you, you might want to read about the 100 Year Computer first.

If you’re reading this online you can get Tales From The Dork Web in your inbox each fortnight by filling in the form below:

There are a lot of links in Tales From The Dork Web. If it gets too much, put it down and come back later. I wrote a guide to help you get the most from it.

If there’s one word I’d use to describe 2020, it’s burning. This issue’s aptly-titled music comes to you from Charles Webster’s Decision Time album. Press play and read on.

Sailing The Ship Of Theseus

The last issue of all I’ve written had the most marmite-like response. People either loved it or hated it. I didn’t particularly promote it but it gained traction in a few communities. I had some really interesting discussions over email, Mastodon and Secure Scuttlebutt. I’d like to capture some of those here. Hopefully you’ll understand a bit more about what’s driving this, what other people have said and where it’s going.

I did have some really excellent feedback from people and I’ve seen some amazing discussions on Mastodon. I would encourage everyone to think about their own ideas for what this could be and to explore them yourself. I have no expectations that your heirloom computer would be anything like mine. I’d be rather disappointed if it was.

There was a lobsters comment thread with some interesting points raised. Most of the discussion focused on points that were never made by people who clearly never read the piece. This is understandable, it’s thousands of words long. For example, the ZX20 is about exploring long-term sustainable computing, not collapse. Still, one point raised was related to the idea of the Ship of Theseus problem, or as I like to call it, Trigger’s Broom. Here’s Trigger himself explaining it:

Some of the lobsters crowd asked about how if parts are replaced, at what point does this stop being the original computer and become a new one? It’s an interesting question but not that relevant to what I’m building. Sustainable computing built from scrap materials comes with an implicit failure expectation.

If an heirloom computer uses a thin emulation layer on top of recycled parts we can swap parts that are close enough, even if they’re not the same. Swapping broken ESP32s for fully functional STM32F4s or future RISC-V MCUs with little work is a desirable feature, not a problem. This isn’t a solution for everyone, or indeed anyone. It’s an exploration of different ways of computing that asks can we build brand new sustainable mid-term computing devices (mid-term being 50-100 years)?

I suspect the elephant in the room is no.

Can we build usable computers without adding to the environmental and human damage already caused by their production? Up to a point, I believe so. That’s an area I’m interested in exploring. Is there a roadmap? No. It’s an exploration of new areas (at least for me). As a broad outline though, what I’d like to do is:

  • Develop a stable hardware platform on new hardware

  • Expand that hardware platform with interchangeability and modularity

  • Build a device entirely from recovered components

  • Settle on an interaction method (OS and Apps if you will)

  • Build heirloom applications (long-term data storage and indexing)

The stable platform is what I’m currently working on. The Retro Zer0 is an implementation of the current concept as a single board computer built on new hardware. It’s a first step, not the destination.

The next step is designing a model for interchangable and modular computing. Some of that work has been done already. The next prototypes will probably be built in February. It would be unwise to order boards from China for delivery to Brexitland right now. Even with a deal I’m still not sure what rules may change, and how our customs and excise departments might cope over the next few weeks.

To meet the ZX20’s interchangeability and modularity requirement I need to build some kind of backplane. I’ve been looking at various architectures from the Amiga Zorro to ISA to the RC-2014. Of these, the RC-2014 option seems the most sustainable. Standard 0.1” pin headers are easier to find than replacing a custom PCB edge connector, although I’ll have to look into possible signal issues. I’ve sketched out ideas for how sound could work. I like the idea of a sound device that also functions as an independent low-powered media device.

Some people were rather confused about the choice of CP/M as opposed to System 7, Amiga Workbench or some other OS. Copyright issues aside, I’m not a fan of an exclusively visual Operating System. While System 7 was great, it’s reliance on proprietary boot roms isn’t. When it comes to Amiga OS and the surrounding legal implications, all I can say is [REDACTED FOR LEGAL REASONS]. CP/M is just something that has a lot of applications already, a decent programming environment and is simple enough for me to play with. Also, Fabrizio Di Vittorio’s implementation is absolutely superb and is easily a better CP/M than CP/M Plus ever was.

My heart isn’t set on a particular OS. CP/M is simply the first one working well enough for me to focus on the hardware side. I’ve tried other options such as booting into my own graphical BASIC interpreter based on TinyBASIC, Forth, Spectrum emulation, even C64 emulation but all had their own issues. I even looked at Project Oberon 2013, shown above. In fact, by the time you read this I’ll be using Plan9 almost exclusively for a week to learn more about it. Some of Plan9 might make it’s way into this. Some people asked why not Unix or an older BSD. There are technical reasons behind it, mostly around the Memory Management Unit (MMU) support and other elements relating to Unix system design. I do actually have a PIC32-based board that runs RetroBSD and you could absolutely use one as a basis for your own explorations if you’d like. I’d also suggest thumbing through VirtuallyFun for OSes to try.

On Mastodon, DJ Sundog put forward the idea that TempleOS was an actual instance of heirloom computing. I like that idea very much. Considering everything Terry Davis faced in his life, TempleOS was actually an exceptional Operating System. A fork, Shrine, is maintained today. Of the TempleOS features that fit my personal view of heirloom computing the DolDoc hypertext model is probably my favourite.

Choong Ng raised some interesting ideas that resonated with me:

Thinking about this some more I see three intertwined applications:
- heirloom hardware - the physical artifact to hand down, as you originally discussed
- heirloom data - preserving stories, pictures, and other data
- stable workspace - the tools you use to create and view that data

I think the three spaces is a great way to look at this. This is why tools like DolDoc are so interesting, along with Plan9’s plumber. Choong also told me that their:

1st "heirloom" machine is the 12" PowerBook I already have

Which I think is great. They can put their data onto the device, store it in hypercard and other applications and access it the way they want. I’d suggest investigating the feasibility of replicating the setup on Sheepshaver or Qemu and periodically backing up to it. That way when something fails, the data can still be managed while waiting for replacement part availability. Eventually parts will no longer be available, but perhaps 2050’s latest Raspberry Pi model could boot into the emulated environment just as well. Maybe by then we’ll have RISC-V and FPGA machines we can build ourselves to run Qemu on.

Alex Barilaro and I had a back and forth about Ted Nelson’s Xanadu. He recommended a book called What The Doormouse Said by John Markoff, which writes about the role of the counterculture movement in the shaping of personal computers. I actually have a half-finished piece about the role of the Grateful Dead and people who took Timothy Leary’s acid test in the modern Internet. I think I’ll finish the draft then have a read.

Using The Retro Zer0

One of the things about the ZX20 project is that I want a rich ecosystem of applications available. Working on emulators for other systems from the Chip-8 to bootable BASIC I found barren digital landscapes and blank canvases. For some this might be perfectly fine but for an heirloom computer you need to have applications. I’m better at hardware than software, and I’m terrible at hardware. It’s much easier for me to get up and running with someone else’s userland applications than write my own suite from scratch. Errors aside, the Retro Zer0 manual (knocked up over a few days) provides an ecosystem tour. It also covers the helpers that make using MultitaskingCPM nicer than on most conventional CP/M systems.

One of those helpers is a standard FAT filesystem used on the SD Card. It’s easy to transfer code and data between systems. Another handy but not so useful helper is the wifi telnet functionality. I’m writing a simple URL downloader negating the need to shuttle SD cards back and forth. After that I’ll make something to upload files and possibly turn these into BDOS calls to enable programs to synchronise files. I don’t want to depend on connectivity, but if it’s there I may as well make good use of it.

Other helpers include support for multiple terminal types, but with the added bonus of ANSI VT Codes working regardless. This lets me easily construct Text UIs with a few characters in any language. There are several dos-type helpers as well. I can copy files with ‘copy’ or ‘cp’ commands, use ‘ls’ to get full-colour directory listings and switch between sessions using function keys.

So far I’ve written code in MS BASIC, C, Turbo Pascal, Lisp, Forth and Z80 assembly. I recently installed R. T. Russell’s BBC BASIC to leaf through the Usborne books archive. Incidentally, BBC Microbot has an excellent browser-based intro to BBC Basic. The version I have doesn’t support the BBC’s graphic modes, but I can rebuild functions for them using custom ANSI control codes. FabGL’s VGA routines are flexible enough to support a variety of modes from 640x200 in 16 colours with SD Card and Wifi support through to 1280x720 widescreen in 2 colours. With a bit of work and some extended ascii code, graphics and sprites are possible. The screenshots show it working in CP/M’s MS BASIC-80 which had no concept of graphics to start with. It’ll also work in BBC Basic, Lisp, Forth, anything on the device.

Once I have a functioning backplane I’ll need to separate FabGL’s VGA tasks from the MCU into a separate card. This should open up more colours at higher resolutions. I like the idea of using ANSI codes for graphics. One day serial terminal emulators may support such extensions.

It’s unreasonable to expect every user of such a system to be an experienced programmer. There’s a broad suite of general purpose utilities available. They’re all professional tools with manuals and documentation. WordStar is probably the most well known thanks to George R.R. Martin’s use when writing his Game of Thrones series. Tools like SuperCalc 2, DBase II and others provide perfectly usable professional spreadsheet, database and general office tools. There are even geneology tools such as Roots/M. These tools don’t have to be used. In the context of exploring different ways of computing they don’t really matter. Still, they’re there if needed.

The Retro Zer0 is also good for playing games. As well as classics from Infocom and various older games such as Gorilla and Pacman, games are still being written for CP/M today. ZCSoli is a Solitaire game last updated in 2020. One of my goals for 2021 is to release a fully functioning game on the ZX20 platform.

While the Retro Zer0 isn’t for sale, the most compatible alternative is Fabrizio Di Vittorio’s FabGL board. This board also has features not present on the Retro Zer0 such as a mouse port and sound. While a future ZX20 board will support sound I expect it to be partially compatible with the FabGL board given what I have in mind. Even so, you’ll still be able to play with Fabrizio’s Vic-20 emulator.

Things You Might’ve Missed

Dave Mound introduced me to Jeremy Piper’s Tape Scratching setup. This makes me wonder how I could’ve lived this long and never known about it. Turns out there’s loads of people doing interesting things with tape that I never could’ve imagined, from the above to experimental artists like the Open Reel Ensemble and Amulets.

Dr Gough wrote some python code to pull HF Radio Fax transmissions from remote WebSDRs. I’ve been pulling weather charts broadcast by Deutscher Wetterdienst over Christmas using an SDR Uno and Black Cat HF Fax but this looks much more interesting. I’ll write something up after trying Dr Gough’s scripts.

Lowrentius built a large 3-colour epaper display for solar-powered site metrics. I’ve been playing with ESP32 and Epaper displays on a smaller scale, so I really enjoyed this. I quite like the idea of linking Mastodon toots as blog post comments as implemented by Carl Schwan. I’m tempted to add this to a digital garden project I want to build in 2021.

Bert Hubert wrote what I think is the best blog post I’ve seen from 2020. Reverse engineering the source code of the BioNTech/Pfizer SARS-CoV-2 Vaccine is a very well thought out breakdown of one of many SARS-CoV-2 vaccines coming online. It’s simple enough for laymen like us to understand. Of particular note: DNA Printers are a thing (and I will definitely be looking more into this). There’s what looks to me like the biological equivalent of an Intrusion Prevention System bypass (Ψ proteins) in the code and there’s a handy substitution trick used to make the spike protein into the right shape using a protein “splint”. I’ve read this several times and it’s just brilliant.

Current Affairs writes about how Amazon destroys intellectual justifications for Capitalism. I found the title’s wording a little odd, but it’s an otherwise good piece on the bad that Amazon does to other businesses. Apple Supplier Lens Technologies have been accused of using Uighur forced labour drawn from Chinese concentration camps. As people we’re largely unaware of the human cost of our electronics and it’s that disturbing that it’s understandable to not want to know it.

Jonas Čeika explains Hauntology as viewed through the prism of 80s nostalgia. When I referred to Wintel Hauntology, I meant the spectre of the Windows-Intel way of doing things that haunts the things we create.

Alex Greene has thoughts on improving online communities. His point on onboarding flow stands out to me. This could greatly improve Mastodon for new users. LittleJohn has founded SMOG, the zine from the free Internet on Gemini. Lukas Mathis writes about user tracking devaluing ads.

Perverts everywhere rejoice, intimate haptics control project Buttplug has reached version 1.0! Check out the awesome-buttplug repo if you’re into this kind of thing, featuring hits like Caveman BIOS Teaches Erotic Typing and a project that asks the question, what if CS:GO was horny? Obviously, NSFW.

Electronicos fantasticos are a Japanese band building their own instruments from recycled parts. This is their amazing cover of Blue Monday by New Order. Mad fer it! I’ll leave you with a quote from punk poet John Cooper Clarke:

Happiness is the target one only has to aim at in order to miss.

I hope you liked this issue. Please do feel free to share it with others, it’s what it’s for. I hope you all have a fantastic New Year and that 2021 is better for everyone. I’ll be back in a no doubt uneventful two weeks time with more Tales From The Dork Web. If you haven’t signed up but would like it in your inbox, you can do so via the box below.