Recently, I was meandering around the Internet when I paused to peruse and ponder the latest newsletter (No. 125) by embedded-systems expert Jack Ganssle at his Web site (www.ganssle.com). Among many other interesting items, I found mention of a relay-based computer created by professor Harry Porter III, who is a lecturer at Portland State University. Of course, I immediately bounced over to Harry's site (www.cs.pdx.edu/~harry/Relay/index.html) to check things out.
What can I say? "A thing of beauty is a joy forever," as the old expression goes. Harry has constructed his relay-based computer in a handsome collection of wall-mounted cabinets. Also included on Harry's Web site are videos of the machine in action. It's a pleasure hearing it clattering away in the background. I want one!
Those who know me won't be surprised to learn that I was so excited I was bouncing off the walls. I immediately contacted Harry, and we dove into a frantic e-mail exchange during which he was kind enough to share some schematics and descriptions of how things work.
As fate would have it, for quite some time I've been vaguely pondering the creation of a relay-based version of our virtual 8-bit DIY Calculator (www.diycalculator.com). I'd never really sat down and thought about this in great detail, but in my musings I'd hazily considered using individual relays to implement AND, OR, NAND, NOR and NOT gates, and then combining them to form memory elements along the lines of SR latches, and . . . onward and upward.
Harry quickly re-educated me. Using a variety of capriciously cunning tricks, his register elements, for example, actually require only a little over one relay per bit (where the "little over" goes to form the enable/load control logic). The system is powered by a 12-volt supply and ground; a logic 1 signal is connected to and/or driven by 12 V, while a logic 0 signal is simply not connected to anything (you have to see it to believe it).
It's all incredibly simple at one level--and yet strangely complicated at another. One might say that the way these things work is so simple that it's difficult to wrap one's brain around it, which is, of course, what makes it so much fun.
So now I'm totally and utterly enthused with the idea of building my own little rapscallion. However, I don't want to simply replicate Harry's work--where would be the fun in that? Instead, I want to create something even more on the "Cool Beans" side--if that's possible. What I'm thinking of is something that combines multiple technologies.
Imagine a row of glass cabinets on the wall. The first contains an antique clock with a swinging pendulum. This would form the system clock, with the pendulum triggering magnetic or optical sensors. Also, I'd arrange things so you could select between running the machine directly at this subhertz frequency or using some frequency-multiplication circuit to speed things up a tad.
Next we'd have something like the ALU implemented in a cabinet of relays. Then we'd have at least a portion of the control logic implemented in a cabinet of vacuum tubes. We'd also have a cabinet of circuit boards populated with individual transistors, and another with boards populated using simple 74-series TTL-type integrated circuits.
But what about the memory? It would--of course--be easy to throw a modern semiconductor chip into the fray, but we're made of stronger stuff than that. For the ROM (only 100 words or so), I'd probably use a bank of toggle switches or an old telephone exchange plug-board type unit. And as for the RAM? Hmm. I'm tending toward some form of pneumatic system that would use a metal ball bearing and two adjacent receptacles to represent each bit. The pneumatics could "puff" the bearing into one of the receptacles to represent a logic 0 and into the other to represent a logic 1. But I'm open to other suggestions; maybe we could have several blocks of memory, each implemented using a different technique?
So, do you know of any books on implementing digital logic using relays and/or vacuum tubes? And do you have any cool ideas for implementing any of the various subsystems? This is going to be a long time in the making, with the most important part being the specification, so all ideas are welcome. If this really gets rolling, I'll be happy to form a special Web site where we can share our thoughts and maintain the plans so that anyone, assuming they're as strange as we are, can build one.
Interested? E-mail me at firstname.lastname@example.org
and let me know what you think.
Clive (Max) Maxfield is editor of Programmable Logic DesignLine, an EE Times sister Web site (www.pldesignline.com), and the author of How Computers Do Math (www.diycalculator.com).