Welcome to the first in a series of articles describing the creation of a computing engine called The Heath Robinson Rube Goldberg (HRRG) Multifarious Technology Computer. This machine will be built using a variety of implementation technologies, including (but not limited to) relays, vacuum tubes, transistors, and simple integrated circuits -- also mechanical, magnetic, pneumatic, and fluidic logic -- and possibly some even more esoteric technologies.
In case you were wondering, this contraption (affectionately known as "The Beast") is named after British cartoonist and illustrator William Heath Robinson (1872-1944) and his American counterpart Reuben Lucius Goldberg (1883-1970). Robinson and Goldberg were both famous for creating illustrations of machines that were intended to perform relatively simple tasks, but whose implementations were incredibly complex such that they performed their tasks in exceedingly convoluted and indirect ways.
As you will come to see, it's probably safe to say that Heath and Rube would have been proud of us! In fact, this is such a multilayered project with so many diverse aspects, that it's easy to become lost in a maze of possibilities, so please bear with me while I explain how this all came to be and -- more importantly -- how anybody (including you) will be able to play a part in the creation of The Beast.
As a starting point, glance at Figure 1 below. This is a relay computer, created fairly recently by Professor Harry Porter III (standing next to the machine in the photograph). Professor Porter is a lecturer at Portland State University in the USA. You can discover more about Harry's computer by visiting his Web site, which provides photos and videos along with audio of the relays clattering away (see Resources for more details).
Figure 1. Professor Harry Porter's relay computer (courtesy Harry Porter)
Doesn't this look amazing? Wouldn't you like to have one? Well, this is what sparked the HRRG project. I had long planned on creating a relay-based computer of my very own, but once I saw Harry's magnificent creation, there didn't seem to be much point because he'd already done such a fine job.
And then I started thinking -- imagine a series of cabinets like Harry's mounted around the walls of a large room. In the case of The Beast, however, the contents of each cabinet will be implemented using a different technology. Take the system clock, for example; this could be formed from a cabinet containing an antique clock. The swinging of the pendulum could be detected and used to provide the main system clock signal.
Alternatively, consider the famous old black-and-white horror film with the mad scientist crying: "It's alive, it's alive!" In the background, you may recall, there was a "Jacob's Ladder" formed from two vertical metal electrodes with a series of electric arcs buzzing their way from bottom to top.
Figure 2. An example home-made Jacob's Ladder
One of these could form the system clock cabinet; a photo-detector could detect the arcs, where alternate arcs would represent "tick" and "tock" signals -- following a power-on-reset (or a hard or soft reset), the first arc will be taken to be a tick of the clock. (Find home-built Jacob's Ladders -- along with many other interesting items -- on Mike Harrison's "Electric Stuff" Web site; see Resources).
The more one thinks about this, the more fun it becomes. Over the last few months, numerous people have offered ideas such as using relay-based memories from old jukeboxes or mechanical memories from old church organs (these suggestions are gathered in an ever-evolving paper on the HRRG project -- see Resources).
In fact, the memory and input/output (I/O) cabinets provide a simple starting point from whence you can really let your imaginations soar. Consider a cabinet containing a number of eight-bit output ports, for example. Each of the bits could be represented by a servo-controlled puppet: logic 0 and 1 values could cause the puppets to wave small yellow and blue flags, respectively.
Alternatively, consider a memory cabinet employing some form of pneumatic system that uses a ping-pong ball and two adjacent plastic cone-shaped receptacles to represent each bit. A ball in its associated left-hand receptacle could represent a logic 0, while the right-hand receptacle could represent a logic 1 (or vice versa) as illustrated in Figure 3.
Figure 3. An eight-bit word implemented in a pneumatic memory cabinet
In this case, when the system writes an eight-bit byte of data to one of these memory locations, the pneumatics could "puff" the ping-pong balls associated with that byte into their appropriate receptacles. The value in a memory location could be read back again in a number of ways. For example, the ping-pong balls could be sprayed with conductive metallic paint, and each non-conducting plastic cone could have two bare conducting wires inside it. These wires (which, for simplicity's sake, are not shown in Figure 3) would be close to each other, but not touching. When a ball is inside a cone, it will short the wires and complete that circuit. Thus, when the system reads a byte from one of these memory locations, it would actually be determining the location of the conductive balls.
How exciting! The only problem is that actually creating an entire computer system as a mixture of different implementation technologies from the ground up would be an incredibly time-consuming and resource-intensive project to be undertaken by a single person, organization, or academic institution. What is required is a cunning solution... which brings us to the point of this article series.
When virtual and physical worlds collide
Before leaping into the fray, you should know that a number of folks are involved in various aspects of this project; you can find out more by visiting the "Who is to Blame" Web page described in Resources.
One key consideration is that anyone should be able to get into the game and share in the fun, especially interested individuals and young people at high school and college. As I previously noted, however, building the entire machine would be a tremendous undertaking. On the other hand, constructing a single cabinet containing (for example) only a few memory locations would be a much simpler task.
Thus, the idea is to split the HRRG computer into a number of well-defined functions. For reasons that should be obvious after seeing Harry's computer at the beginning of this article, these functional units are often referred to as "cabinets." In the case of memory (ROM and RAM) and input/output (I/O) ports, the system can have as many cabinets as one might wish, where each of these cabinets will have a range of memory addresses associated with it. Of course, a key element in this project is defining the interface and the protocol that the various physical cabinets will use to communicate with each other and with the outside world.
The next task will be to create a program called "The HRRG Emulator" that will run on an IBM-compatible PC.
Amongst many other things, this emulator will include virtual representations of the default cabinets (you will be able to add your own virtual cabinets -- including nice graphical interfaces -- as you wish). As soon as it's finished, this emulator (and an associated assembler) will be made freely available. This means that you will be able to immediately create a program in the HRRG's simple assembly language, assemble it, and run it on the emulator.
If you subsequently decide to create a physical version of any of the cabinets, you can do so in the technology of your choice. By means of a USB port, you can then connect this physical cabinet to your PC, and the physical cabinet will run in conjunction with the virtual cabinets running in the emulator. As you create more and more physical cabinets, these will replace their virtual counterparts, until you eventually have the entire HRRG implemented in the physical domain.
But wait, there's more, because the emulator will use the Internet to support both virtual and physical units located around the world. This means that if you create a relay-based ALU cabinet located in America, for example, you will be able to run your cabinet with a physical memory cabinet implemented in fluidic logic located in say, Australia, with other physical cabinets located in other countries, and with any "missing" cabinets running in the virtual world.
The mind boggles! There are so many ramifications to this that it makes your head spin. Take the Central Processing Unit (CPU) to be used as a basis for the HRRG, for example. As it happens, a small calculator circuit board featuring an FPGA-based version of this CPU is currently under development (see the "Who is to Blame" Web page in Resources). Eventually, it might be possible for you to build, say, an Arithmetic Logic Unit (ALU) cabinet out of relays, mount it on your office wall, and connect it into this calculator circuit board, where it would replace the ALU running in the FPGA.
You've probably got enough to be thinking about for now. Part 2 of this series will consider the various functional units forming "The Beast," including discussions on the CPU to be used along with any decisions with regard to splitting this CPU into functional units (cabinets). Part 3 will introduce the emulator software, and Part 4 -- well, you'll just have to wait and see...
- Get an RSS feed for this series or subscribe to the zone newsletter IBM microNews and be notified each time a new installment is published. (Find out more about RSS feeds of developerWorks content; find out more about IBM microNews.)
- See all of the articles in this series to date.
- Harry Porter's Web site describes his relay-based computer in detail.
- Find home-built Jacob's Ladders -- along with many other interesting items -- on Mike Harrison's Electric Stuff Web site.
- Find numerous suggestions for "The Beast" on the HRRG Project Web page.
- The various folks involved in the HRRG project in one way or another are introduced in this Who is to blame? Web page.
- Get the book, How Computers Do Math, which features the same CPU that will be used to form the basis for the HRRG, from Amazon.com.
- Download a virtual version of the same CPU that will be used to form the basis for the HRRG for free from the "Downloads" page on the DIY Calculator Web site.
- The "More Cool Stuff" page on the DIY Calculator Web site contains a treasure trove of topics, including A History of Calculators and Computers, A Timeline of Calculators, Computers, and Other Stuff, The Computing Universe, Rounding Algorithms 101, and a rather interesting paper on Color Vision.
- One of the last bastions of mechanical computing was the mercury delay line memory (this link is to an operations manual for a representative example of the technology).
- Hydraulic computing is a highly visual way of simulating certain sorts of problems. MONIAC is a hydraulic computer that simulates an economy. By adding ink to the system at one point, you can observe how a droplet of money added to any point in an economy will gradually spread to the entire system.
- The IBM Semiconductor Solutions Technical Library hosts a wealth of information -- from specifications and user manuals to product briefs and errata and much more.
- Keep abreast of all the Power Architecture-related news that's fit to print: subscribe to IBM microNews.
Get products and technologies
- See all Power-related downloads on one page.
Dig deeper into developerWorks
Get samples, articles, product docs, and community resources to help build, deploy, and manage your cloud apps.
Experiment with new directions in software development.
Software development in the cloud. Register today to create a project.
Evaluate IBM software and solutions, and transform challenges into opportunities.