Wednesday, 17 February 2010

Typewriter Hacking

There's been some recent interest in typewriter hacking. Some guys figured out how to hack a Brother SX-4000 electronic typewriter so that you can turn it into a printer. They do it by simulating key presses on the keyboard matrix using a microcontroller.

I think I can go one better with the Smith Corona SL470. The SL470 was an early 90s electronic typewriter with some facilities for tabs, word wrap and word correction. It's based on a daisywheel printhead which made me think that it might be possible to turn it into a simple printer. SL470s can often be found on ebay.

But why? Well, the major reason is because of my interest in retro-hardware. Libby8 for example will be a computer with only 26Kb of usable RAM so hooking up a printer (if I ever did) would mean hooking up a simple printer, because I wouldn't be able to fit in a driver for a modern USB printer.

I opened up the typewriter. The hardware is amazingly simple and the circuit is fairly minimal. Basically it's all controlled via an Intel 80C52 Microcontroller (the big chip on the left) and a few buffers. The cables at the top control the various LEDs; carriage and daisywheel print mechanism.

The keyboard ribbon is on the right and I spent a bit of time trying to map it. It looks like it'll be a normal matrix keyboard, but it's not. After 30+ mins of work I only managed to figure out the left-hand side. The other side (which certainly works) isn't so straight-forward it seems.

The 80C5x series were very popular MCUs from the 1980s and 1990s. Like many MCUs they have terribly awkward architectures, but hey - you can get them to do some work. This one has 8Kb of ROM and an internal 256b of RAM - which is why its word-processing features weren't that great (no RAM to store more than one line of text in).

I had a hunch that if I'd built the typewriter I'd use the same circuit for both a simple typewriter and a typewriter/printer. In fact when you open the case it looks like there's a gap on the left for a suitable expansion circuit. The 80C52 has a built-in serial port, so when I downloaded the 80C52 manual I took a look at its serial pins; which are pins 10 (RXD) and 11 (TXD). I found out that these lines had special tracks on the PCB that lead to pins marked H5 and H6 which aren't connected to anything.

It looks to me like my hunch might be correct to some degree. The SL470's serial port might be used for something... :-)