If you study the history of computing you might have heard of the FACOM 128B, a Japanese relay computer from 1958. It holds the distinction of being a contender for the oldest computer that still works in its original form, as it resides in a Fujitsu building in Numazu Japan. [CuriousMarc] visited the old computer and created a video about it as well as painting a picture of other contemporary machines. You can see the video below.
[Marc] explains how a relay machine was already behind the times in 1958, and also shows how the 5,000 relay machine is laid out. The machine on display came from a Tokyo university and did the kind of computations you might use a computer for today to do engineering design.
We are probably all familiar with computing history to the extent that we know the earliest computers were surprisingly simple devices. While early electronic machines such as Colossus or ENIAC were hugely complex racks of tubes, once expressed as a schematic or as a network of logic gates they would be relatively straightforward for today’s electronic engineer to understand their operation. Those who have made an in-depth study of computing history may have heard of the work of Konrad Zuse in the mid-20th century, his relay-based machines predate their fully electronic cousins by several years.
A relay-based computer can be simple enough to be built by a home constructor, and at the recent Electromagnetic |Field hacker camp [Rory Mangles] outlined his TIM relay computer built while he was at school. It’s an engaging story starting from first principles and describing a series of TIM devices from a simple binary adder to the final fully Turing-complete computer. He describes the design process for his ALU, eventually going with a 1-bit serial design to economise on relays.
The machine has a Harvard architecture, with the program pathway consisting of a paper tape from which the code is run directly. The instruction set is called BLT, which of course means Basic Language of Tim, and there is a T++ assembly language. Loops and if statements are handled in a nod to the classical Turing machine by looping the paper tape. The original TIM is a few years old, but he reveals that he’s recently brought it out of storage and added a parallel port. Thus the finale of the talk is a demonstration, printing a “Hello World”.
We’ve placed the full video below the break, meanwhile we were lucky enough that [Rory] brought TIM along to the EMF Hackaday Readers village for our bring-a-hack, so the header image is from when we had a chance to examine it. If you’re curious to know more, he has a web site with some more TIM details.
For this year’s Hackaday Prize, we’re doing something special. We’re introducing achievements for Prize projects. Think of them as merit badges. If your Hackaday Prize project has multiple parts that come together into one unified, awesome whole, you get the Voltron achievement. If you’ve built a musical instrument that unexpectedly blows everyone’s minds, you get the Diva Plavalaguna Achievement. A select few entries will earn the Pickle Rick achievement. What’s this? It’s a jaw-dropping build that makes you shake your head in the totality of engineering perfection.
Here’s a project that nails this achievement. It’s a homebrew computer, made out of relays, that runs a custom instruction set. It’s built on Brainf*ck. It is, by far, the most absurd and amazing homebrew computer you’ve ever seen.
First, the hardware. This CPU is built out of about 800 Soviet reed relays, RES64, RES55, and RES-43 relays, if you want some part numbers. These relays are mounted on logic cards connected to a backplane. Each backplane consists of thirty-two of these cards, and it takes two backplanes to build up a 16-bit full adder. The 16-bit instruction pointer and 16-bit address pointer each fit on half a backplane.
Moving up one level, the instruction set for this computer is based on Brainf*ck, with a few additions. The ‘+’ instruction adds to the current value, the ‘>’ instruction still increases the current memory address, but there are a few new instructions that make this CPU not an interminable world of suffering. There’s now a ‘write current data value to register’ commands, and logical XOR instructions.
Have relay-based computers been done before? Yes, and so have Brainf*ck ISAs. The combination is rarely seen, and we’ve never seen one that performs this well. Below, you can see a video of this computer counting at 500 operations per second (or 500 Hz from a frequency counter). This is really unimaginable with any other relay computer we’ve seen, and it’s all thanks to those really tiny Soviet tubes. If you want a Hackaday Prize project that’s jaw-dropping, here you go.
We all know you can build a computer out of relays, and if you’re a regular reader of Hackaday, you’ve probably seen a few. Actually designing and fabricating a computer built around relays is another thing entirely, and an accomplishment that will put you right up there with the hardware greats.
The biggest consideration in designing a relay computer is the memory. You can implement a CPU in a few dozen relays, but even a small amount of memory is still hundreds of additional components. In this computer, [Jhallen] is sort of cheating. The memory is implemented as 256 32-bit words on a microcontroller alongside a controller for the front panel. The CPU is still all relays, with support for self-modifying code, a bunch of instructions for conditional jumps, and an ‘increment and jump if not equal to zero’ instruction.
Below, you can check out a very in-depth video of the relay computer in action, starting off with some satisfying click and clack of Euclid’s algorithm and a demonstration of the variable clock rate. The video goes on to demonstrate the assembly language of the relay computer itself and a bit of the overall architecture. This is really one of the most educational demo videos for vintage computing we’ve ever seen.
Modern digital computers have complex instruction sets that runs on state-of-the-art ALUs which in turn are a consequence of miniaturized logic gates that are built with tiny transistors. These tiny transistors are essentially switches. You could imagine replacing with electromagnetic relays, and get what is called a relay computer. If you can imagine it, someone’s done it. In this case, [jhallenworld].
The Z3 was the first working programmable, fully automatic digital computer designed by Konrad Zuse. The board employs modern semiconductor devices such as memory and microcontrollers, however, the CPU is all relays. A hexadecimal keyboard allows for program entry and a segment display allows tracking the address and data. The program is piped into serial to the parallel decoder and fed to the CPU where the magic happens. Since the core is electromechanical it is possible to connect the output to peripherals such as a bell as demonstrated near the end of the video.
This project is a good balance of retro and modern to be useful to anyone interested in mechanical computers and should be a lot of fun for the geek kind. Hacking this computer to modify the instruction set should be equally rewarding and a good exercise for students of computing theory.
Recently, [Manuel] did a post on making logic gates out of anything. He mentioned a site about relay logic. While it is true that you can build logic gates using switch logic (that is, two switches in series are an AND gate and two in parallel are an OR gate), it isn’t the only way. If you are wiring a large circuit, there’s some benefit to having regular modules. A lot of computers based on discrete switching elements worked this way: you had a PCB that contained some number of a basic gate (say, a two input NAND gate) and then the logic was all in how you wired them together. And in this context, the SPDT relay was used as a two input multiplexer (or mux).
In case you think the relay should be relegated to the historical curiosity bin, you should know there are still applications where they are the best tool for the job. If you’re not convinced by normal macroscopic relays, there is some work going on to make microscopic relays in ICs. And even if they don’t use relays to do it, some FPGAs use mux-based logic inside. So it’s worth your time to dig into the past and see how simply switching between two connections can make a computer.
How do you go from a two input mux to an arbitrary logic gate? Simple, if you paid attention to the banner image. (Or try it interactive). The mux symbols show the inputs to the left, the output to the right and the select input at the bottom. If the select is zero, the “0” input becomes the output. If the select is one, the “1” input routes to the output.
After seeing an exhibit of an old relay-based computer as a kid, [Simon] was inspired to build a simple two-relay latching circuit. Since then, he’s been fascinated by how relays can function to do computation. He’s come quite a long way from that first latching circuit, however, and recently finished a huge five-year project which uses electromechanical relays to calculate square roots.
The frame of the square root calculator can hold up to 30 identical relay modules, each of which hold 16 relays on PCBs, for a total of 480 relays. The module-based setup makes repair and maintenance a breeze. Numbers are entered into the computer by a rotary dial from an old phone and stored in the calculator’s relay memory. A nixie tube display completes the bygone era-theme of the device and shows either the current number that’s being entered, or the square root of that number as it’s being calculated.
The real magic of this project is that each relay has an LED which illuminates whenever the relay is energized, which shows the user exactly where all of the bits of the machine are going. [Simon] worked on this project from 2009 and recently completed it in 2014, and it has been featured at the San Mateo Maker Faire and at Microsoft Research in Redmond, WA. We’ve seen smaller versions of this before, but never on this scale and never for one specific operation like square roots.