As we enter our second week of official COVID-19-related lockdown where this is being written, it’s evident that there are some resources we will have to conserve to help get us through all this. Instead of just using all of something because we can nip out to the store and buy more, we have to look at what we’ve got and treat it as though it will have to get us through the next three months. It’s not always certain that on our infrequent trips to the supermarket they’ll have stocks of what we want.
A particular shortage has been of toilet paper. The news was full of footage showing people fighting for the last twelve-pack, and since early last month there has been none to be had for love nor money. To conserve stocks and save us from the desperate measures of having to cut the Daily Mail into squares and hang them on the wall, a technical solution is required. To this end I’ve created a computerised toilet roll dispenser which carefully controls the quantity of the precious sanitary product, in the hope of curbing its consumption to see us through the crisis.
In the midst of a full lockdown it’s difficult to secure immediate delivery of our usual maker essentials, so rather than send off for the controller boards I might have liked it has been necessary to make do with what I had. In the end I selected an older single board computer I had in a box under my bench. The Sinclair ZX81 has a single-core Z80 processor running at 3.25 MHz, dual-channel memory, a Ferranti GPU, and plenty of expansion possibilities from its black plastic case. I chose it because I could repurpose its thermal printer peripheral as a toilet paper printer, and because it has an easily wiped and hygienic membrane keyboard rather than a conventional one that could harbour germs.
Hardware wise I found I was fairly easily able to adapt a standard roll of Cushelle to the ZX printer, and was soon dispensing sheets with the following BASIC code.
10 REM TOILET PAPER PRINTER
20 FOR T=0 TO 44
30 LPRINT ""
40 NEXT T
50 LPRINT "---------- TEAR HERE -----------"
For now it’s working on the bench, but it will soon be mounted with a small portable TV as a monitor on the wall next to the toilet. Dispensing toilet paper will be as simple as typing RUN and hitting the ZX’s NEW LINE key, before watching as a sheet of toilet paper emerges magically from the printer. It’s the little hacks like this one that will be so useful in getting us through the crisis. After all, this Sinclair always has a square to spare.
For owners of home computers in the early 1980s, one of the most important selling points was how much RAM their device would have. Sometimes though there just wasn’t much choice but to live with what you could afford, so buyers of Sinclair’s budget ZX81 computer had to put up with only 1 kiB of memory. The system bytes took up (by this writer’s memory) around 300 bytes, so user programs were left with only around 700 bytes for their BASIC code. They were aided by Sinclair’s BASIC keywords stored as single bytes, but still that was a limit that imposed coding economy over verbosity.
Sinclair sold a 16 kiB upgrade, the so-called “Rampack”, which located on the ’81’s edge connector and was notorious for being susceptible to the slightest vibration. Meanwhile the mainboard had provision for a 2 kiB chip as a drop-in that was never sold in the UK, and enterprising users could fit larger capacities with soldered combinations of other chips piggybacking the original. And this is what the Tynemouth people have done, they’ve replaced their machine’s dual 1 kiB x 4 chips with a single 62256, and with a bit of pin-bending they’ve managed to do it without the track-cutting that normally accompanies this mod.
Adding chips to a 36-year-old home computer for which there are plenty of available Rampacks might seem a bit of a niche, but in doing so they’ve made a standalone ’81 that’s just a little bit more useable. They’ve also brought a few other components up-to-date, with a composite video mod, switching regulator, and heatsink for the rare ULA chip. If you are of a Certain Generation, it might just bring a tear to your eye to see a ZX81 being given some love.
FPGAs (like Xilinx’s Spartan series) are great building blocks. They often remind us of the 100-in-1 electronic kits we used to get as kids. Lots of components you can mix and match to make nearly anything. However, like a bare microcontroller, they usually don’t have much in the way of peripheral devices. So the secret sauce is what components you can surround the chip with.
If you are interested in retro computing, you ought to have a look at the ZX-Uno board. It hosts a Spartan 6 FPGA. They are for sale, but the design is open source and all the info is available if you prefer to roll your own or make modifications. You can see a video of the board in action, below (as explained in the video, the color issues are due to the capture card trying to deal with the non-standard sync rate).
Here are the key specifications:
FPGA Xilinx Spartan XC6SLX9-2TQG144C
Static Memory 512Kb, AS7C34096A-10TIN
Video output (composite)
Stereo audio jack
EAR jack connector (for reading cassette tapes)
Connectors for JTAG and RGB
Slot for SD Cards
Expansion port with 3 male pin strips
Micro-USB power connector
PCB Size: 86×56 mm. (Compatible with Raspberry Pi cases)
In the early 1980s when the 8-bit microcomputer boom was well under way, [Alan Faulds] was a student, and an owner of a Sinclair ZX81. He had ambitions to use it, in his words, “to control the world“, but since the Sinclair lacked an I/O port he was thwarted. He bought an expander board and a couple of I/O card PCBs from the British electronic supplier Maplin in the days when they were a mail order parts stockist rather than a chain of stores chasing Radio Shack’s vacated retail position.
Sadly for [Alan], he didn’t have the cash to buy all the parts to populate the boards, then the pressures of a final year at university intervened, and he never built those Maplin kits. They sat forgotten in their padded envelope for over three decades until a chance conversation with a friend reminded him of his unfinished student project. He sought it out, and set about recreating the board.
The ZX81 had a single port: a PCB edge connector at its rear that exposed all the Z80 processor’s lines. It was notorious for unreliability, as the tiniest vibration when a peripheral was connected would crash the machine. Maplin’s expansion system featured a backplane with a series of edge connector sockets, and cards with bare PCB edge connectors. Back in the 1980s it was easy to find edge connectors of the right size with the appropriate key installed, but not these days. [Alan] had to make one himself for his build.
The I/O card with its 8255 and brace of 74 series chips was a double-sided affair with vias made through the use of little snap-off hand-soldered pins. [Alan] put his ICs in sockets, a sensible choice given that when he powered it up he found he’d put a couple of the 74 chips in the wrong positions. With that error rectified the board worked exactly as it should, giving the little ZX three I/O ports, albeit with one of them a buffered output.
This is a wonderful example of the phenomenon of “feature creep”. [Gert] was working on getting a VGA output running on an mbed platform without using (hardly) any discrete components. Using only a few resistors, the mbed was connected to a VGA display running at 640×480. But what could he do with something with VGA out? He decided to emulate an entire Sinclair ZX81 computer, of course.
With more than 1.5 million units sold, the Sinclair ZX81 was a fairly popular computer in the early ’80s. It was [Gert]’s first computer, so it was a natural choice for him to try to emulate. Another reason for the choice was that his mbed-VGA device could only output monochrome color, which was another characteristic of the ZX81.
[Gert] started by modifying a very lean Z80 emulator to make the compiled code run as efficiently as possible on the mbed. Then he went about getting a picture to display on the screen, then he interfaced an SD card and a keyboard to his new machine. To be true to the original, he built everything into an original ZX81 case.