A mechanical keyboard for the ZX81

Originally published at: A mechanical keyboard for the ZX81 | Boing Boing


This old dude killed his ZX81 40 years ago trying to connect a mechanical keyboard to it.


It’s so frustrating not being able to find a simple Dvorak/Qwerty dual legend set of keycaps, or even just four DSA or XDA profile keycaps to support Dvorak home row bumps, while finding multiple elvish keycap sets, niche sets like this one, or all manner of other nonsense.

The keycaps are a fully custom single set, ordered from wasdkeyboards. Download the SVG template, assemble whatever text or art you want, and upload it with your order and get keycaps with your preferred nonsense on them. The github respository includes the art I threw together for these and links to wasd’s site in the readme.


The ZX81 used a slick trick of the Z80 chip to scan the keyboard 8x8 matrix without any extra parts. On an 8080 IN instruction, there were only 256 I/O addresses, so the upper 8 address lines were unused. The Z80 added a hack where the A register contents were output on the upper 8 address lines.

On the ZX81, the upper 8 address lines went to one side of the 8x8 keyboard matrix, then the other side routed back to the 8 data lines. Depend on which address lines were driven, and which keys were pressed, the data would end up in the A register. Depending on how clever the scanning routine was, it could support n-key rollover.

Knowing that trick did come in handy later, when I had to reverse engineer and hack some Joker Poker arcade machines. Weird-shit-in-the-code, oooh, they’re using that hack to save parts!


Nice, thanks!

And that’s just the tip of the iceberg. The crazy hacks involved in making the display work on the ZX80 and ZX81 are really wild. A big innovation of the ZX81 over the ZX80 was adding “SLOW” mode where the screen was refreshed even when the computer was not waiting for input – on ZX80s and in “FAST” mode the screen flickers when you type in BASIC because it’s only being painted while waiting for the next keypress.


It’s been the better part of 40 years, but I STILL have an abiding hatred of membrane keyboards because of these computers.


I just haven’t had much luck figuring out the process for requesting custom keycaps on the sites that offer them.

I never had a ZX81, so maybe those who did can tell me if it had the same quirk as the ZX80… with just 1kB of RAM, the 80 allocated 768 bytes to displaying a full screen of text, leaving 256 bytes for your program. If your program got bigger than that, memory was released by reducing the number of rows in the screen until all you had was a tiny strip of text.

Genius, but very frustrating!

Pretty sure some of the replacement keyboards available at the time had mechanical switches:

I remember using the ZX Spectrum version of this one. It was the ugliest keyboard I have ever seen, and the home-made plywood case didn’t help. Still better than the original.


Uglier than the VIC-20 and Commodore 64? Certainly better built, I’d bet.

ISTR some product back when these were out that was a mechanical keyboard that slipped on top and just pressed the membrane keys for you. Could have been for the Atari 400 though.

Both the ZX80 and ZX81 had 1K RAM standard and a similar design for display vs program memory. Without a memory upgrade they were very limited machines. The ZX81 switched from integer to floating point basic and introduced SLOW mode where it could repaint the display in the background (avoiding that annoying flicker while typing, the display blanking while computations are underway, etc) at a performance cost. The ZX81 reduced cost and complexity by replacing a bunch of discrete 74xx ICs with a single ULA chip with all the glue and display logic.


I knew someone with a horizontal totem pole of add-ons on his ZX-81. 32k ram, modem, printer port, etc.

When he’d type on the original keyboard, jiggling it would frequently crash the thing.


Comes in black or white.

1 Like

I didn’t buy the ZX80 because the fully assembled version was beyond my budget. The DIY version would have been within my budget, but probably outside my capabilities, and blowing all my money on something I might destroy right after unpacking it just wasn’t an option.
Then the ZX81 came out but while considering buying it, Commodore introduced the VC 20 (as it was called over here). At, it must be said, roughly double the cost of the ZX81.
So I launched an all-out campaign to get my parents to give me a VC 20 for christmas. Because I would need it for school, obviously. Successfully, and that was that.
That my parents had heard of Commodore as a computer manufacturer and that it had a “real” keyboard were factors that can not be underestimated.


This topic was automatically closed after 5 days. New replies are no longer allowed.