Seems it’s been 10 months since I wrote a blog post so once again it must look like I’ve forgotten about LEO-1. In fact, plenty has happened and I finally have half a CPU core running on breadboards. But it took a long time to get this far, mainly due to being distracted by things that were ‘more interesting’ for a while.
I finished the ALU board back in December and my tests indicated that it was working fine. Then I decided that I would need to test the Control Board design before committing it to a PCB. This is by far the most complicated part of the system and although it was working in Logisim, I didn’t really know if I had transcribed it to an electronic schematic correctly. I had to at least prototype the major parts of it like the state machine and the program counter to verify that I had not made a huge mistake. So I started building it on my PB-503 workstation, starting from the oscillator section and proceeding to the state counter and combinational logic that would generate the main control signals. I managed to generate a few signals but it was already obvious that I was running out of room on the board. I needed a larger work space and far more than 8 LEDs and 8 switches to test this monster properly. So I designed a test board consisting of 16 LEDs , 3 eight-position DIP switches and a rotary DIP switch, and I had four copies of the PCB made. I hoped that would give me enough inputs and outputs to do almost anything.
I also ordered a huge breadboard and started putting down the parts again. But again, I ran out of space — and wires — and the whole thing was already a horrible mess due to using jumper wires. So I ordered another huge breadboard and a few boxes of those nice little pre-cut wire pieces. But while I was waiting for that order to arrive, something happened that made me put this project on the floor in the corner with a dust cover on it for five months.
I don’t remember what started it, but something got me reading about simple video generators; the kind that used a bunch of TTL chips and a character generator and produced displays like this:
These kinds of displays were seen on home computers of the late 1970s and early 1980s such as the Ohio Superboard II and UK 101. I was seized with a great desire to make such a VDU for LEO-1. I had already decided that I was going to use a simple LCD display, but this VDU idea got hold of me and wouldn’t let go. I just had to find out how it was done and give it a try. So I read everything I could about generating video signals and also studied the schematic of the Superboard II, a computer I had actually owned in 1981 or so. I started by bread-boarding a circuit based on the counter chain in that schematic to generate the video signal, and then started improvising the rest of it myself. I spent five months working on this and it drove me absolutely nuts. During this time I found that I was even starting to understand how the game Pong must have worked without actually reading about it. I got so obsessed with this thing that I couldn’t think about anything else — except my day job, of course 😉
By March I had a working display of what was essentially a bitmap of pixels, and I could draw on it using a micro-controller. But then I had to leave it for two weeks and go on holiday in Europe with my wife, during which time I got very ill and had a pretty horrible time, even though my friends and colleagues laid on some nice events for us. But travelling while sick is no fun (actually for me, travelling while not sick is no fun) — so it was rather awful and I managed to lose my phone while I was at it. When I got back home and looked at my breadboard, I found that I couldn’t remember a bloody thing about how it worked! I had to stop and draw the whole thing as a schematic so I could remember what all the wires were for. It looked like this:
I must have built and re-built this thing about three or four times as I refined the design, eventually having to abandon the graphics display as it was too slow to draw all the pixels. I finally settled on a character-based display which would be good enough for text and simple graphics. I also found it necessary to complicate everything by making it possible for the host computer to change the character height and horizontal resolution by writing to a special register. That final detail is why it took so long to finish. Once it was working on a breadboard, I set about designing the PCB. I had it made and put the parts on, and would you believe it… it worked first time.
This is not a very good picture and the display looks much nicer than that. In fact, the quick brown fox picture above is a good photo of my earlier prototype’s display. The board generates a monochrome composite video signal suitable for a CCTV monitor. I found a nice little monitor on eBay brand new and used it for testing, and it’s just the right size to sit on top of the finished LEO-1. Here’s the PCB. Cool things include the use of a real old EPROM for the character font and the fact that the D/A converter is just a bunch of resistors, something I didn’t know was possible before I started researching this.
So when you’ve got a screen, you also need a keyboard. It was already apparent that my original idea of a hex keypad wasn’t going to be enough. I needed a real keyboard, and so began the next project that kept my control board prototype gathering dust in the corner…