Monday, 29 October 2007
The ZX Spectrum laptop is a combination of two old computers: a ZX Spectrum 48k and a Toshiba Libretto 110. The Spectrum is an iconic British computer from the 1980s, selling in huge volumes (although I was brought up on a BBC Micro myself), and the Libretto was one of the first truly tiny x86 laptops, quite amazing when it appeared about a decade ago.
The modification keeps the case and keyboard of the Spectrum and the main circuit board and display unit from the Libretto. Connecting the keyboard was by far the most difficult part. I went through several ideas to try and figure this one out.
The PS/2 port would be an obvious choice, but the Libretto only has a PS/2 connector on the docking station attachment, which was too bulky to fit into the Spectrum case. It’s the same story for the serial and parallel port. The only standard communication options on the mainboard are the PCMCIA slots and the IrDA port, and I wanted to keep the IrDA port free for other communications. So the next idea was to try and replace the Libretto’s keyboard more directly.
Luckily, the Libretto’s keyboard unit contained no active electronics and was just a matrix of contacts on a plastic membrane. Logically then it is possible to simulate the keyboard by shorting various lines at the point they connect to the motherboard. However, the Libretto’s keyboard connects to its main board by a 0.8mm pitch flexible circuit connector, which is rather difficult to connect to. I tried several attempts to connect flying leads to the membrane, using glue and silver paint, which were mildly successful. The two keyboards are logically just arrays of switches with row and column connectons coming out, although the Libretto obviously has more switches, having an 8×13 matrix compared to the Spectrum’s 5×8. The challenge then was to pick out the particular rows and columns to use on the Libretto so that each key on the Spectrum made a valid keypress - some row/column combinations might have been ‘blind’ for the Libretto, for all I knew. I traced the keys to rows and columns on the Lib - mainly using digital photos of the membrane and a flood fill tool.
Meanwhile, the physical construction provided some more challenges. I had to cut away quite a lot of the case to fit in the display, and getting the display straight and closing nicely was quite fiddly. The case also had to be made a bit deeper to fit in the battery, so I made up a frame to separate the top and bottom halves of the Spectrum case.
Having done that I could switch on the Libretto and make a few keypresses on the Spectrum keyboard - nothing very sensible since mapping a letter to the correct one would have been impossible. Before I got very far, though, I realised the connections to the membrane were unreliable and decided to solder directly to the Toshiba’s motherboard. This is a very tricky task with the 0.8mm pitch, and I didn’t get all the connectors but I did manage to get the 5 columns and 8 rows I needed. The result isn’t very pretty, but did look a lot nicer than the rat’s nest made by the membrane keyboard and glue mess. The Spectrum keyboard remains connected by glue and paint, although it was easier to make a robust connection to the wider membrane on its keyboard.
With those all attached reliably, I made up a new keymap for linux so the keys would map correctly, and could actually type properly on the Spectrum keyboard. Getting Debian onto the Libretto was the next challenge. The PCMCIA-attached CD ROM drive that came with it had packed up, and the floppy drive is a nonstandard type that won’t work for Linux installations. There isn’t an ethernet port, even on the dock, so the best option was to make up a bootstrap image on the Lib’s hard disc, return it to the Libretto and boot it from there. This seems to have worked fairly well.
The remaining problem, which I haven’t figured out yet, is how to get some communications so I can download and install new software without resorting to the dock (I have to take the mainboard out of the case to fit it in the dock, so it’s not very desirable.) The PCMCIA ports would seem the best option, but I haven’t been able to bring up an ethernet card in it yet. The IrDA port is also a possiblity, although downloading any data through that might require quite a lot of patience.
So, what use is it? Well, the obvious application would be to load up a ZX Spectrum emulator to have a portable retro games system. It’d also be good for making notes while on the road - the batteries are good for a couple of hours, which surprised me considering they’re ten years old. Otherwise it’s just a bit of an objet d’art.