This proposed HRRG computer project is named in honor of 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.

Note that this project is a "work in progress" and this paper is constantly being updated. Also note that we are writing a series of articles on the building of the HRRG computer on IBM's DeveloperWorks website (Click Here to see the current articles).

View Topics



 
Example Relay-Based Computer
Just to set the scene, take a look at the photo below. This shows a relay-based computer created by Professor Harry Porter III, who is a lecturer at Portland State University. (You can find out more about this little rapscallion on Harry's Website).

Harry Porter's Relay-based Computer

Isn't this ultra-cool? Can't you just imagine the relays clattering away in the background while this little rascal (the computer, not Harry) performs its cunning calculations? In particular, observe the way in which Harry has split his computer across a collection of handsome, wall-mounted, glass-faced wooden cabinets (we'll be returning to this point in a little while). "A thing of beauty is a joy for ever," as the old saying goes.




 
Our Cunning Plan
Our cunning plan is to design – and hopefully one day build – what we are calling the Heath Robinson Rube Goldberg (HRRG) computer. This would be a (possibly cut-down) version of our DIY Calculator. However, we don't intend to simply replicate Harry's work – where would be the fun in that? Instead, we wish to create something even more on the "Cool Beans" side (if that's possible).

What we're pondering is a beast that combines multiple technologies (relays, vacuum tubes, transistors, silicon chips, etc.). Imagine a row of glass-fronted wooden cabinets on the wall. Each is implemented in a different technology, and each contains some portion of the computer, such as the system clock, the ROM, the RAM, the ALU, the CPU's status and control logic, the CPU's addressing logic, and so forth.

We will elaborate on this core concept in the following topics – what we're trying to do here is to convey our "vision." The idea is to first come up with a specification for the functionality to be represented by each of the cabinets along with a well-defined interface into – and out of – each function/cabinet. This would facilitate different design teams tackling the different cabinets.

Furthermore, as opposed to having the cabinets linked by bunches of cables, we were thinking of providing each cabinet with a wireless communications system (or maybe they could communicate via the building's power cables, since each cabinet will require a power supply anyway). This would (a) make things look nice and (b) allow the various cabinets to be located at arbitrary distances from each other. Note that this project could grow to such a size that we'd need a big facility to host the final machine and display it to its fullest effect (possibly a museum or an airport or ... Contact Us if you have any ideas ... all suggestions will be very gratefully received).




 
The System Clock
The first cabinet will contain the system clock. There are many ways in which this could be implemented, but we think it would be appropriate to use an antique clock – clockwork of course – with a swinging pendulum that could be used to trigger an optical sensor. Also, we would probably want to include a sound system to amplify and present the tick-tock, tick-tock sound of the clock.

Things would be arranged such that one could select between running the machine directly at this sub-Hertz frequency, or – by means of some frequency multiplication and/or division circuits – one could speed things up or slow them down as required.

One rather "Cool-Beans" alternative to the above might be to use a cabinet containing a Jacob's Ladder as the system clock. You know what we're talking about – you see them in the mad scientists' labs in every black-and-white Frankenstein-type horror film (it's alive... it's alive..."). That is, the two metal rods with a series of electric "lightning" arcs rising up between them.

Jacob's Ladder

In this case, we could use some sort of photo-detector to sense the arcs as they reach the top of the wires. Each arc would equate to a single beat of the system clock (once again, it would be nice to have a sound system to slightly amplify the buzz-hiss-crackle effect of the electric arcs). (Note that the above images came from the Mike's Electric Stuff website and are provided courtesy of that site's owner, Mike Harrison.)




 
ROM (Switches)
We're going to need some form of read-only memory (ROM) in which to store a (very) simple boot (start-up) program. One way to achieve this would be to have a cabinet containing a number of banks of up/down on/off switches (preferably cool-looking antique ones). Each bank of eight switches would represent an 8-bit byte in the ROM. A switch in the up position could represent a logic 1, while a switch in the down position could represent a logic 0 (or vice versa).

An additional thought is that we need some way to specify the range of memory addresses represented by this type of (memory) cabinet. For example, suppose the cabinet contained 32 banks of switches (just to pick a number out of the air). In this case, we need to be able to specify whether these 32 banks equate to addresses $0000 through $001F, or addresses $0020 through $003F, or addresses $0040 through $005F, and so forth (where the dollar '$' characters represent hexadecimal values). This will allow us to (a) have as many of these cabinets as we wish and (b) to mix-and-match different ROM technologies (see also the following topic).

With regards to the idea of forming a portion of our ROM from switches, Paul from New Boston, NH, emailed us to say: "Sure, an arrangement of switches makes perfect sense. You can point to the example set by no less than Seymour Cray in the CDC 6600's Deadstart Panel (what we'd call a Boot ROM these days)."

CDC 6600 Deadstart Switch Panel

Paul was also kind enough to facilitate our getting hold of the above photo taken by Dave Redell showing the Deadstart Panel of the CDC 6600 serial number #1 (this machine currently resides at the Computer History Museum in Mountain View, Califonia). As we see, in addition to some control switches at the bottom, this panel comprises 12 words, each containing 12 bits.

As a point of interest, the CDC 6000 was a mainframe computer that was designed by the legendary Seymour Roger Cray (1925-1996) and his colleague Jim Thornton. Manufactured by the Control Data Corporation – and considered by many to be the world's first supercomputer – the first CDC 6600 was manufactured in 1964. The CDC 6600 remained the fastest computer in the world until 1969, at which time it was surpassed by its successor, the CDC 7600. For around 30 years, there used to be a joke that if anyone asked "Which company makes the fastest computer?" the short answer was "Wherever Seymour Cray is working now!"




 
ROM (Plug Panel)
Another form of ROM could be a cabinet containing a big "plug board" – something like the panel a human telephone operator used to use in ye olden days (the sort of thing you see in old black-and-white films).

In reality, this would be simply a giant plug board. Each 8-bit location would have eight sockets and eight corresponding plugs, where each of the plugs would look a bit like an audio jack and would be on the end of a spring-loaded retractable wire. A plug in its socket could represent a logic 1, while a socket without its corresponding plug could represent a logic 0 (or vice versa).




 
ALU/CPU (Relays)
Towards the end of the nineteenth century – when Queen Victoria still held sway over all she surveyed – the most sophisticated form of control for electrical systems was the electromechanical relay.

For the uninitiated, a relay is an electromechanical switch that consists of a coil of wire wrapped around a rod of iron or some other ferromagnetic material. When an electrical potential is applied to the coil, it generates a magnetic field that is used to close/activate a switch [see (a) in the figure below); when the electrical potential is subsequently removed from the coil, a spring is used to return the switch to its open/inactive state [see (b) in the figure below].

An electromechanical relay

The point is that the output from one relay – or from a number of relays – can be used to control other relays, and the output from these other relays can be used to control yet more relays, and so forth. Thus, by connecting relays together in different ways, it's possible to create all sorts of things, such as the first automatic telephone switching exchange. This little scamp was invented in 1888 by the American undertaker Almon B. Strowger (1839-1902).

We know this sounds a bit weird, but the local telephone operator was married to a competing undertaker. Strowger became somewhat disgruntled when he discovered that she was redirecting calls from his potential clients to her husband, so he invented the automatic telephone exchange to get her out of the loop!

Perhaps the most ambitious use of relays was in the construction of electromechanical computers, such as the first large-scale automatic digital relay-based machine – the Harvard Mark 1 – which was constructed between 1939 and 1944. This beast was 50 feet long, 8 feet tall, and contained over 750,000 individual components.

The Harvard Mark 1

Returning to our HRRG computer, our next cabinet (or several cabinets) could contain a portion of the CPU (maybe some or all of the ALU) implemented using relays. One consideration is that every technology has cunning tricks associated with it. We (the authors of this paper) have never actually designed arithmetic and control logic using relays before. Thus, as an alternative to our trying to work everything out from first principles (which could be fun, but which would certainly be time-consuming), if anyone has any expertise in this area and/or can recommend any good books, please feel free to Contact Us because we'd love to hear your thoughts.

Further to the above plea, Paul from New Boston, NH, pointed us in the direction of a book on relay logic called The Design of Switching Circuits by Keister, Ritchie, and Washburn (apparently, the Ritchie who wrote this book is the father of Dennis Ritchie, who was the co-creator of Unix). A few moments ago (as I pen these words), there were three used copies available from www.Amazon.com. Now there are only two, because I [Max] just ordered one of them!

Furthermore, we also heard from Mike, Carlisle, MA, who told us: "As far as a text for designing relay logic, the reference that comes to mind is Switching Circuits and Logic Design by Samuel H. Caldwell, published by John Wiley and Sons. The third printing appeared in November 1960 (its first printing was 1958) and its Library of Congress catalog card number is 58-7896." Sadly, we haven't been able to track one of these little rapscallions down, so if you know of one that's available, please Contact Us us and let us know.




 
ALU/CPU (Vacuum Tubes)
In 1879, the legendary American inventor Thomas Alva Edison (1847-1931) publicly demonstrated his incandescent electric light bulb for the first time. This was based on a filament mounted inside a glass bulb, from which all of the air was removed leaving a vacuum. When electricity was passed through the filament, it began to glow brightly (the vacuum stopped it from bursting into flames).

Thomas Alva Edison

A few years later in 1883, one of Edison's assistants discovered that he could detect electrons flowing through the vacuum from the lighted filament to a metal plate mounted inside the bulb. Unfortunately, Edison didn't develop this so-called Edison Effect any further. In fact, it wasn't until 1904 that the English physicist Sir John Ambrose Flemming (1849-1945) used this phenomenon to create the first vacuum tube. (Vacuum tubes are known as valves in England. This is based on the fact that they can be used to control the flow of electricity, similar in concept to the way in which their mechanical namesakes are used to control the flow of fluids.) Flemming's device, which was known as a diode, had two terminals and conducted electricity in only one direction (a feat that isn't as easy to achieve as you might think).

In 1906, the American inventor Lee de Forest (1873-1961) introduced a third electrode into his version of a vacuum tube. The resulting triode could be used as both an amplifier and a switch. De Forest's triodes revolutionized the broadcasting industry (he presented the first live opera broadcast and the first news report on radio). Furthermore, their ability to act as switches was to have a tremendous impact on digital computing.

One of the most famous early electronic digital computers was the Electronic Numerical Integrator and Calculator (ENIAC), which was constructed at the University of Pennsylvania between 1943 and 1946. Occupying 1,000 square feet, weighing in at 30 tons, and employing 18,000 vacuum tubes, ENIAC was a monster ... but it was a monster that could perform fourteen multiplications or 5,000 additions a second, which was way faster than the relay-based Harvard Mark 1.

Returning to our HRRG computer, the next cabinet (or several cabinets) could contain a portion of the CPU (maybe some or all of the status and control logic) implemented using vacuum tubes. The sort of tubes we're thinking of here are the little dinky ones (about 1 cm in diameter and around 3 or 4 cm tall).

Once again, we (the authors of this paper) have never actually designed arithmetic and control logic using vacuum tubes before. So, once again, if anyone has any expertise in this area and/or can recommend any good books, please feel free to Contact Us; we'd very much appreciate hearing from you.




 
ALU/CPU (Transistors)
The next cabinet could contain a portion of the CPU (maybe some or all of the addressing logic) implemented as circuit boards populated with logic gates formed from individual transistors.

Depending on the number of transistors and circuit boards, it may be that this cabinet is combined with the next cabinet; that is, the top portion of the cabinet could contain circuit boards populated with individual transistors, while the bottom portion of the cabinet could contain circuit boards populated by simple (jelly-bean) silicon chips.




 
ALU/CPU (Silicon Chips)
The next cabinet could contain a portion of the CPU (maybe some or all of the addressing logic) implemented as circuit boards populated with logic gates in the form of simple (jelly-bean) silicon chips. For those who remember this sort of thing, we're thinking about something like the old 74-series TTL logic from Texas Instruments; for example, a 16-pin dual-in-line (DIL) plastic package containing four 2-input AND gates.

As was noted above, depending on the number of silicon chips and circuit boards, it may be that this cabinet is combined with the previous cabinet; that is, the top portion of the cabinet could contain circuit boards populated with individual transistors, while the bottom portion of the cabinet could contain circuit boards populated by simple silicon chips.




 
RAM (Pneumatic)
And what about the main random access memory (RAM)? It would – of course – be easy to throw a modern semiconductor memory chip into the fray, but surely we're made of sterner stuff than this!

Actually, the memory is where we can let our imaginations soar. Consider a cabinet employing some form of pneumatic system, for example, that uses a small metal ball bearing and two adjacent cone-shaped receptacles to represent each bit. A ball bearing in its associated left-hand receptacle could represent a logic 0, while the right-hand receptacle could represent a logic 1 (or vice versa).

Pneumatic logic (RAM Memory)

When the system writes an 8-bit byte of data to one of these memory locations, the pneumatics could "puff" the bearings associated with that byte into their appropriate receptacles. Each non-conducting (plastic) cone could have two bare conducting wires inside it; these wires (which are not shown in the above illustration for simplicity) would be close to each other, but not touching. When a (metal) ball bearing is inside a cone, it shorts the wires and completes that circuit. When the system reads a byte from one of these memory locations, it would actually be determining the location of the ball bearings.

As we discussed in the ROM (Switches) topic earlier in this paper, we need some way to specify the range of addresses represented by each memory cabinet. This will allow us to (a) have as many of these cabinets as we wished and (b) to mix-and-match different memory technologies (see also the following topics).




 
RAM (Fluidic)
As we noted a little earlier, the memory is where we can really let ourselves run wild and free. Suppose, for example, we had a cabinet in which each bit was represented by a small fountain of colored water; red water could represent a logic 1 and green water could represent a logic 0 (or vice versa).

When we store a byte of data into one of these memory locations, the different colored fountains could be activated. By comparison, when we come to read a byte of data from one of these locations, we could use light-emitting diodes and photo-transistors (and maybe colored filters) to detect the different colored fountains.

As an added frill, when we write to – or read from – a memory location, the system could present us with some audible indication. Perhaps one tone for a write and another tone for a read; or perhaps we could divide the 256 different combinations of 0s and 1s that can be represented by a byte into some number of sub-groups, each of which is associated with a different semitone.

Of course, this could quickly start to wear on the nerves, so there would have to be a "mute" switch. On reflection, maybe we should relegate any audio output to the I/O ports as discussed later in this paper.




 
RAM (Delay Line)
Some of the early computers stored data in mercury delay lines. These delay lines were constructed using a thin tube containing mercury and sealed with quartz (piezoelectric) crystals at each end. Applying an electric current to a quartz crystal causes it to vibrate. Similarly, vibrating a quartz crystal causes it to generate an electric current. Thus, the principle behind the mercury delay line was to briefly apply a current to the crystal at one end of the tube, which generated a pulse that propagated through the mercury at a known speed. When the pulse reached the far end of the delay line, it caused the crystal at that end to generate a corresponding current.

Computer memory: Mercury delay lines

By amplifying the output from the second crystal and feeding it back to the first crystal, a continuous loop could be established. Moreover, a number of individual pulses could be maintained in a single delay line, similar in concept to a column of people marching down a corridor in single file. In fact 1000 bits could be stored in a delay line five feet long.

Now mercury is expensive (and dangerous), but maybe we could construct a cabinet containing a number of shorter delay lines filled with some other substance (preferably something that wouldn't kill the operator – or any visitors – if it leaked out). Also, each of the delay lines could have some sort of display associated with it to reflect its contents and to provide some "eye candy" – maybe a white plastic tube containing colored light-emitting diodes (LEDs) arranged such that the pulses of light seem to race through the tube. (See also the related suggestions in the More Ideas topic later in this paper.)




 
RAM (Core Store)
Another form of memory used by early computers was something called magnetic core memory (also known as core store or simply core). Invented in 1950 by Jay Forrester at MIT, this was based on an array of ferromagnetic beads shaped like miniature donuts.

First, let's consider the case where such a bead has a single wire threaded through it [see (a) in the illustration below]. If a small current is passed through the wire then nothing happens. But if a current of sufficient magnitude, which we will call Ia, is passed through the wire, it causes the bead to be magnetized in the direction Ma. Similarly, if the first current is removed and a new current of equal magnitude called Ib is passed through the wire in the opposite direction, the bead will be magnetized in the direction Mb. A bead magnetized in direction Ma can be used to represent a logic 0, while a bead magnetized in direction Mb can be used to represent a logic 1 (or vice versa).

Computer memory: Magnetic core store

The point is that a magnetized bead will remain magnetized after the current is removed, and will therefore "remember" the logic value it is being used to represent. (In this respect a core store is similar to a ROM, because it is non-volatile and any stored data is retained even after power has been removed from the system.) In reality, this single-wire scheme is not particularly useful to us, because if we were to string a number of beads on the wire, then every time we applied a current to the wire they would all be magnetized in the same direction.

In order to solve this problem, consider the case in which a bead has two wires threaded through it [see (b) in the above illustration]. If a current of ˝Ia is passed through each wire, the total effect is identical to that of a single wire carrying a current of Ia, and the bead is again magnetized in the direction Ma (similarly, if each wire were used to carry a current of ˝Ib, the bead would be magnetized in direction Mb).

This dual-wire scheme is of use, because it allows us to construct an array of such beads [see (c) in the following illustration, each of which can be individually magnetized by applying signals to its associated row and column wires.

Magnetic core store: arrays of cores

The ability to individually magnetize each bead in direction Ma or Mb is only part of the story, because it is also necessary to be able to "read" a bead to determine the direction in which it was magnetized; that is, to see whether it is currently storing a logic 0 or a logic 1. This is where the sense wire comes into play [see (d) in the above illustration].

Let's assume that a bead magnetized in direction Ma represents a logic 0, while a bead magnetized in direction Mb represents a logic 1. Now, let's suppose that we want to detect which logic value is currently being represented by the bead in the middle of our array (the one located in row 1, column 1). One technique is to apply signals of ˝Ia to the wires Row-1 and Col-1 which, irrespective of the bead's current state, will cause it to be magnetized in direction Ma. However, there is a cunning trick here, because if the bead was already magnetized in direction Ma then nothing will happen, but if the bead was initially magnetized in direction Mb, then causing it to reverse its state results in a pulse of current appearing on the sense wire.

Thus, by detecting the absence or presence of a pulse on the sense wire, we can determine whether the bead was originally storing a logic 0 or a logic 1, respectively. The only problem with this technique is that if the bead was initially storing a logic 1, then we've just overwritten it with a logic 0 (that is, if the bead was originally magnetized in direction Mb, then it's now magnetized in direction Ma). This is referred to as a destructive read, which means that each read operation in a core store is normally followed by a write cycle to restore the original data.

Note that the previous illustration showed only a small portion of a core store array being served by a single sense wire. In order to represent an 8-bit wide memory, we would divide a much larger array into eight sections, each with its own sense wire. Also, the core store itself would be surrounded by the electronics circuits used to write data into the store and read it back out again (in the days of yore, these circuits would have been implemented using circuit boards populated with lots of individual transistors, resistors, capacitors, and so forth.

The invention of the core store meant that, for the first time, a reasonably useful form of memory was available to computer designers. Although the idea of core stores seems rather strange today … they worked. If you think that these are bad, you ought to have seen what designers were obliged to use before! Many of the early techniques – such as the mercury delay lines discussed in the previous topic – were sequential in nature (you typically had to read a lot of unwanted data out before you reached the data in which you were interested). Thus, in order to differentiate core stores from these sequential techniques, the term random access memory (RAM) was coined to emphasize the fact that data could be written to and read from any part of the core's array. This is why we use the term RAM to this day, as opposed to the possibly more meaningful appellation read-write memory (RWM) that no one actually uses.

In addition to being a lot slower than today's semiconductor memory devices (but faster and much more convenient to use than mercury delay lines), core stores were physically much larger and they could only hold a relatively small amount of data. The first core stores were effectively "knitted" together by teams of ladies with the appropriate skills, although automated techniques soon took over. The outer diameter of the original beads was around 2 mm (which is actually quite small), and they eventually shrank to around 0.2 mm (which is really, really small), but it still took a whole bunch of them to make a memory that could hold a reasonable amount of data.

But we digress... The point is that (in tribute to the early pioneers) at least one of our cabinets should contain a home-made core store, even if it only contains say eight bytes of memory. Of course we could "tart" things up a bit; for example, we could have a green and red LED associated (both logically and physically) with each core; the appropriate LED would be activated to reflect the contents of its corresponding core.


Further to the above, I recently took delivery of 50,000 antique ferromagnetic cores. I purchased them on eBay from a company in Bulgaria. Truth to tell, I thought the 50,000 quantity was a misprint until they arrived. I only want 64 cores to build a small 8 × 8 array for use in a magnetic core store memory cabinet for the HRRG, so I would have been more than happy with a hundred or so cores. The last cores I recall seeing "in the flesh" were maybe a couple of millimeters in diameter, so that was sort of what I was expecting. But these things are absolutely tiny – so small in fact that it's difficult to see that they are indeed donut-shaped and have holes in the middle with the naked eye:

These magnetic cores are really tiny

I've also received messages from a number of folks who are all generally in agreement when they tell me that I haven't got a clue as to how tricky it will be to construct the drive and sense amplifiers that will be required to write data into my array and read it back out again. This is because creating the analog circuits to do all of this is something of a black art (see also the Interesting Books topic).

But I remain undaunted, largely because I have no intention whatsoever of implementing my drivers and sensors using analog circuits. Instead, I think I'll use simple digital microcontrollers containing D/A and A/D converters that can generate and monitor analog signals under digital control. On the other hand ... it would be interesting to see an 8 × 8 array whose drivers and sensors were implemented using the techniques of yesteryear. Does anyone out there still have the expertise to do this? If so, I'd love to hear from you.

On a related topic, a few weeks ago as I pen these words I received an email from a guy called Steve Marum who said:

I just read an article on your HRRG Mixed Technology Computer and your purchase of 50,000 ferromagnetic cores.

Many years ago, about 30, I was planning to build a core memory since back then it was "do it yourself" or "do without". I never did (technology got ahead of me and I bought a surplus mini), but in preparation I stockpiled some vintage 1974 core sense amps (TI part SN7528).

As you can imagine, I was all aquiver with excitement. Maybe Steve could be persuaded to build a core store for "The Beast"? I immediately emailed him back with promises of fame beyond his wildest dreams and awaited his response in dread anticipation. Before long, I was eagerly perusing his answer:

In answer to your "big question", sorry, but no, I'm not interested in restarting that project. I'm heavily involved in a high school robotics competition (www.bestinc.org), I'm one of the founders so I just don't have the time. As they say, sometimes you have to learn to say "no".

But ... I hate to see all my good scrounging go for naught :-) I would be delighted if someone else could use the SN7528 chips. They are dual-channel so you would only need four for your eight word × 8-bit core store. How about I send you eight so you will have some spares? They have been obsolete for so long now I'm sure they are hard to obtain.

Wow! How cool. I love the smell of a fresh silicon chip in the morning (who amongst us doesn't?), but I also love vintage chips from yesteryear (it won't be long before we're calling them "antique"). I of course answered with a resounding YES PLEASE. About a week later, a small package meandered its way through the office and arrived on my desk. In addition to photocopies of the original datasheets from an old TI Integrated Circuits Catalog, the package contained nine devices – eight were intact while one had its top stripped off.

SN7528 sense amplifiers for use in a magnetic core store

When I queried Steve, he explained that when he had come to look more closely at his bag of core sense amps, he found they were symbolized as "10125". Also, there was a 30-year old note he'd written to himself saying: "7528, not 10125". (This note probably appeared less cryptic when Steve originally penned it, but at the time he didn't anticipate a delay of 30 years before he opened the bag again.)

Not recalling how he knew to write the note, Steve took one of the devices into work and – with the help of his friend, Rick Watson – opened it up to look inside. Below is the photo taken by Rick:

Inside a Texas Instruments (TI) SN7528 sense amplifier

Steve explained that back in the 70's he was designing ECL circuits, specifically the "10K" series, of which the 10125 was one. They sent some chips off to be assembled and they must have gotten mixed up with another order in the assembly process.

As we see, the die is marked 7528. Steve even went so far as to trace out part of the circuit and compare it to the schematics in the datasheet to ensure that the devices are indeed 7528s. As Steve says:

I thought you might get a kick out of the chip photo and even the decapped chip so I included it. It might still work if the bond wires are all intact, but I wouldn't rely on it.

These chips are a real "blast from the past". The input NPN transistors of the sense amps are huge – about 2/3 the size of a bond pad! What a difference 30 years makes. It kind of snuck up on me, happening a little at a time (kind of like watching kids grow up).

I know just what he means ...




 
Input/Output (I/O) Ports
Let's consider the output ports first. One idea would be to have a cabinet with some number of rows, where each row – corresponding to an output port – contained eight small puppets. Each puppet could be holding a flag saying '0' in one hand and a flag saying '1' in the other. When we write a value to one of these output ports, the eight puppets on that row each raise (and wave) the appropriate flags.

Another idea would be to take the colored water fountains discussed in the RAM (Fluidic) topic earlier in this paper and used that concept to implement a cabinet of output ports.

Yet another idea would be to divide the 256 different combinations of 0s and 1s that can be represented by a byte on an output port into some number of sub-groups, each of which is associated with a different semitone (a value of all zeros would correspond to no tone at all), and to then play that semitone. Alternatively, maybe we could use five bits from each port to represent one of 32 different semitones (corresponding to a little under three full octaves) while the remaining three bits from each port are used to control the volume of that semitone. By writing different values to a number of these ports, we could build chords and suchlike.

Maybe the previous two ideas could be combined. That is, each of these output ports could have both the colored fountains and a corresponding tone.

And what of the input ports? Well, what do you think? As I [Max] pen these words I'm on a plane flying at 30,000 feet, I've been up since 3:00 am, and my brain is "fluffy." So I'll leave you to come up with something cunning here (perhaps some random element, or a biological component involving trained hamsters juggling with miniature chainsaws ... ?)




 
More Ideas?
Settle down, the hamster scenario mentioned in the previous topic was a joke (I've never met a hamster who could juggle, although I once saw a man juggling with hamsters, but that's another story). Having said this, we have been contemplating employing a biological element somewhere in the system (see the discussions on aquariums later in this topic).

The point is that "the world is our lobster!" We can have lots of fun coming up with a variety of wild and wacky ideas ... and maybe we'll even get around to building some of them (or persuading someone else to do so). So, if something pops into your mind, write it down and Send It to us, and we'll include it in this paper (along with your name and general location – for example, Prof. Cuthbert Dribble from Armpit, Arkansas – so that everyone knows exactly who to blame).

Good Grief! We'd no sooner penned the above words when the floodgates opened as follows:


Larry, Berkeley, CA: "It sounds like you will need a lot of DC power, so you might consider using mercury vapor rectifiers in the power supplies. They will definitely give you the mad scientist vibe.

Max: Great idea. The following image provides an example of what Larry is talking about. This image came from the Mike's Electric Stuff website and is provided courtesy of the site's owner, Mike Harrison.

Mercury Arc Rectifier


Joe, Alconbury Weston, UK: "How about building a software emulator once the design is settled on. This emulator would run on a PC. The idea is that each group could take the emulator, switch off the bit they are physically building, and replace it with their hardware cabinet, which would be connected to the PC via a USB interface (for example)."

Max: I think this is a brilliant idea. This would allow folks to prove that everything in their particular cabinet interacts correctly and works as planned without being obliged to truck their portion of "The Beast" around the world. It would also allow folks to maybe implement just one or two cabinets to hang on their own wall rather than having to build the whole thing (hopefully they would make copies of these cabinets for the main project/installation ... or at least provide photos and plans).

Actually, taking this one step further, if this whole thing really takes off (and I'm becoming more optimistic by the minute), I can imagine us one-day organizing a huge get-together somewhere. Everyone could bring their cabinet(s), and we could spend a happy few days connecting them together in different combinations and permutations. We might even get around to quaffing a few beers! (For those for whom the mother tongue is a second language – Americans, for example – "quaffing" is just like regular drinking, except that you tend to be more exuberant and spill more down your chest.)


Max: Several folks emailed me asking if I'd seen the Difference Engine created out of LEGOŽ by a guy called Andy Carol. I immediately bounced over to Andy's Website to take a look. Wow! What a cool idea. It would be great if we could incorporate something like this into our system; maybe as an add-on coprocessing unit that talks to our main system via our input/output (I/O) ports.

Andy Carol's Lego Difference Engine

For more information on mechanical computers in general and diifference engines in particular, check out the First Mechanical Computers paper on our More Cool Stuff page.


Tom, Boston, MA: "With regard to your delay-line memory idea [Max: see the RAM (Delay Line) topic], if you want a non-toxic delay line, hunt down a Wurlitzer organ circa 1965. The reverb effect was implemented by sending a signal down a spring, something like 50-75cm long and 7-10mm diameter, loosely strung between the input and output transducers. It's the same basic technology as kids talking over a string and two tin cans, but used for data storage rather than communication."

Max: What a good idea. Of course we could use any old spring, but it would be way-cool to actually employ an original Wurlitzer reverb unit with the transducers and associated circuitry (does anyone have one they would like to contribute to the cause?). We could also use an oscilloscope to reflect the sounds in the spring; maybe even amplify them and play them back (but, as with all of the audio features discussed here, there should be a mute switch).


Erik, Cardiff, CA: "How about using some magnetic logic of the type found in the Univac SS-80 and SS-90 computers?"

Max: Truth to tell, I'd never even heard about this, but Erik found an interesting reference for this Magnetic Logic concept. Apparently, this form of logic is virtually indestructible and it draws no power when not in use. Erik also informed us that McGraw-Hill published a book called Digital Magnetic Logic by Crane, Dave Bennion, and David Nitzan in 1969 (the year man first walked on the moon). As I pen these words, there was one used copy available from www.Amazon.com ... and I just ordered it!


Don, Lake Arrowhead, CA: "Don't forget 'neon bulb' logic. Awards in simplicity have been won by this technology, which is rarely used."

Erik, Cardiff, CA: "Back in the mid-60's, either Electronics Illustrated magazine or Popular Electronics magazine had a cover article on using neon bulbs to make an adding machine. If I recall correctly, the neon bulbs were fed through a resistor from a voltage source lower than the ignition voltage but higher than the sustain voltage – a positive voltage pulse would cause them to turn on and a negative pulse would cause them to turn off. In the adding machine from the article, the bulbs were both the logic elements and indicators. It seems to me that this would be a good technology for one of the RAM cabinets for your proposed machine, being both retro and giving a visual indication of the memory contents."

Max: Hmmm, interesting. Here's something else I know nothing about (the list grows daily). Does anyone have any reference to this sort of thing on the web, or even a copy of the magazine mentioned above that they would be prepared to donate to the cause?


Joe, Alconbury Weston, UK: "I was thinking about the cabinet sizes. As you say, an ALU even built from transistors is probably going to be smaller than 64 bytes of RAM built using fluidic (hydraulic) technology. I'd probably take a leaf out of the 19-inch rack people or – perhaps being more up to date – from the PC Server people. The idea is that they have a standard width and different heights; in your case, I think you should settle on a standard height but have several different widths available."

Max: I think this is a great idea – sold! (Although actually coming up with the specifications will take a little time, because there's so much else to do at the moment.)


Larry, Berkeley, CA: "I don't know if you're familiar with telephone stepping relays ... they might be useful in your computer and make a very satisfying chatter when indexing. They have about the same function as a CD4017 Johnson counter."

Walter, Roseburg, OR: "There might still be some telco (telecommunications) selector relays available in junk bins somewhere. They would be nice for memory and register stuff as they would be directly adaptable to decimal rather than binary."

Ken, Bloomingdale, IL: "It has been claimed that the telephone network is the world's largest computer. So it would make sense to include one or two Strowger stepping switches. They would be great for both visual and audible effects. There's an article about them on the PrivateLine.com website. Also, there are articles that include the recorded sounds of Strowger and other telephone relays at the SEG Communications and The Strowger Appreciation website. And if you include Strowger switches, you could have an antique telephone dial for one of your inputs."

Max: I remember purchasing lots of these from the "scrap box" at my local electronics parts supplier in Sheffield, England, 30 years ago when I was a lad (I wish I knew where they were now – lost somewhere in the mists of time along with my youth, no doubt). I agree that we should use some Strowger switches somewhere in the system, and I really like the idea of using an antique telephone dial as one of the inputs.


Jay, Nashua, NH: "For ROM you could use a Lite-Brite panel and a color digital camera, each color would be a different bit level so you could have more than binary logic (I don't know how many colors come in a Lite-Brite set). The color camera could digitize each Lite-Brite location and given an X/Y address could return the multilevel logic. It would look cool too. Furthermore, having seen the new cube version [Max: see image below], you could have four different programs, put it on a Lazy Susan, and rotate which side faces the camera so as to select from them. I know that one of the most interesting computers to watch was a Thinking Machines Cube; this was a huge array of 8086 CPUs, and when one of them was active its led would be on (the patterns were very cool)."

Max: This is a very cunning idea. It would make for a very interesting form of ROM. I will have to ponder this some more – especially the fact that the different colors could be used to represent more than binary values.

Lite-Brite Cube


Ken, Bloomingdale, IL: "The old pipe organs had a lot of primitive logic in them. There were banks of either electrical or pneumatic relays for connecting the keys to various ranks of pipes as controlled by the stop tablets. Sometimes they filled whole rooms in the basement. The larger organs also had a non-volatile "RAM" for storing the preset combinations. The organist could save his combination of stops by pressing a button called a "piston". The organ had many of these buttons. The actual memory was a mechanical contraption that consisted of pneumatic bellows or solenoids controlling sliding rods with movable levers on them. This could be part of the console, or for a large organ it would be in its own room in the basement. The world's Largest Organ was so massive, it was never totally operational. And the 'remote combination action' was so complicated it possibly never worked right – and then it was flooded.

Max: Now you have me visualizing Dracula in an old black-and-white horror film manically playing the organ whilst looking over his shoulder. I'm also thinking of the lead-in sequence to the old Monty Python shows. But I agree that it would be really cool to use something like the organ's mechanical memory as part of our system.


Jay, Nashua, NH: "When I was a kid we use to play with a game called Mousetrap. We didn't play the game itself – we just put it together and made it do its thing. You could use it to trigger a power switch for your computer since it is the ultimate in Rube Goldberg."

Max: Hmmm, not a bad idea. However, when it comes to the main power switch, I was thinking more along the lines of the original black-and-white Flash Gordon films starring Buster Crabbe. You know, when someone said something like Quick, turn the light on!" and it took two guards straining their muscles to rotate a 5-foot diameter switch that looked like a giant ship's (steering) wheel.


Paul, New Boston, NH: "If you don't mind some mechanism building, here's a notion. The University of Illinois PLATO system had terminals with plasma panel display screens, and an option to rear-project microfiche slide images. The projector took a 16 by 16 grid microfiche. The projector mechanism has an X/Y carriage, driven by two sets of 4 pistons, with 1/2/4/8 stroke ratios (compressed air drive). So the eight bits of slide address would go to solenoid valves for the 8 pistons, and in a modest fraction of a second the slide would be in place. You could take something like that, with either one bit or several bits worth of mechanical storage – say, the balls you mentioned, or something similar. Do the addressing this way, to position the "bits" under the read/write mechanism. 256 bytes per slide should be quite doable; possibly more."

Tom, Boston, MA: "With regard to Paul's PLATO terminals, which were also examples of Don's "Neon bulb" memory (check out the corresponding Wikipedia Entry): these were neon-orange plasma panels made for the education market. Each pixel was a memory element, based on the fact (as another submitter described) that the voltage needed to sustain a pixel was less than the voltage needed to light one. Pulse-on, negative-pulse-off. The panels themselves were translucent, so they also acted as rear-projection screens for 35 mm slides etc."

Max: This sounds like a really cool idea. I'd love to get a photo of this type of mechanism if anyone has one available so we can all better visualize what Paul and Tom are talking about.


Jay, Nashua, NH: "For your system clock, you could use an all-wooden clock like the ones at www.woodenclocks.co.uk and a photo-interrupter that works with the pendulum."

Max: I really like this idea, because it means that the first part of the system is as non-electronic as one can get. On the other hand, I also really like my idea [go figure] of using the Jacob's ladder as discussed in the System Clock topic earlier in this paper. Maybe we could end up with several clock cabinets and swap (switch) them in and out of the system as required...

Wooden Clock


Joe, Alconbury Weston, UK: "There's one thing that everybody seems to have steered clear off thus far – organics. I have no idea, at the moment, how you would incorporate an organic element into the beast, but it would make it truly unique if you could. Perhaps it could form part of a truly random number generator. I know, I know, this sounds very much like the Hitch Hikers Guide to the Galaxy, but would be so 'kewl' if it could be done ... I'm sorry my dear, I just need to pop out and water the computer, back in a moment..."

Tom, Boston, MA: "There's probably some amusement to be had in a genuine Turing machine – robotically walking back and forth along a row of coded beads. Also, I wouldn't turn down any inspiration available in Terry Pratchett's computer, currently operating at the Unseen University.

Max: By the time we've finished, the "Beast" will probably look very similar to the machine Terry Pratchett had in mind. [For those who haven't read Terry's incredibly funny Diskworld series, amongst myriad other elements, Unseen University's computing machine – which is called Hex – features ants as a biological element, a "wobbly thing with a cuckoo that acts as an unreal time clock," "a ram's skull in the middle (for occult transformations)," and "some cogwheels and springs because the ants aren't very good at differential analysis"]. Actually, we have been toying with the idea of some biological component. I don't think we'd go as far as ants and a ram's skull, but mayhap an aquarium cabinet containing fish with some way to detect their movement – this could be used to provide a random number generation capability, for example.


Doug, Bethel, CT: "How about using black balls ('0') for memory in a vertical tube with a white background ('1'). A light-emitting diode (LED) beam and photocell would detect the presence or absence of the black ball ('0'). If light passed through, then the data would read as '1'. A relay operated trapdoor at the bottom could allow the '0' to roll out; an open top could allow the balls the roll in. Clock times would be long enough to allow the balls to settle into place before their states were read."

Max: I think this would look really interesting. Maybe we could go one better and have different colored balls – sort of like the ones used in the lotto. I'll have to ponder this some more.


Ken, Bloomingdale, IL: "Don't forget to include lots of tungsten and neon lights, and maybe some RCA numitrons (tungsten filament display), and Nixie tubes, plus a few actual 'bells and whistles.' If you have vacuum tubes, you also need a few 'magic eye' tuning indicators, and – of course – some analog meters."

Max: I love all of this stuff. For those "youngsters" who don’t remember this sort of thing, Nixie tubes (also known as "numicators") are neon-filled numeric displays that consist of an outer mesh anode and ten cathodes shaped so as to form numbers (there might be an additional cathode for a decimal point). These displays were very popular in the 1960s and the early 1970s when the first digital logic silicon chips became available. The image below came from the Mike's Electric Stuff website and is provided courtesy of that site's owner, Mike Harrison. There are loads more mega-cool images on Mike's site. Also, Mike can custom-build Nixie Tube-based displays for TV and Film projects.

 
   Nixie Tube   
 


Dan, Merriam, Kansas: "I have a suggestion that may be applicable to your project. I had a clock many years ago that was made of plastic and marbles. An arm would rotate and scoop up a marble once a minute and – when the arm reached the top of its arc – it would deposit the marble onto an inclined channel. The marble would then roll down the channel until it bumped into the previous marble. When 60 marbles had accumulated, one would progress to the hour's channel and the rest would be released to the bottom of the system to be recycled. Perhaps this could be used as an accumulator/timer in the system you are considering?"

Max: I've seen these before and they do look cool. This is a really good suggestion for implementing a counter/timer. One of the computer's output ports could be used to reset this timer, and then one or more input ports could be used to read the time in terms of minutes and hours (and days?).


Ken, Bloomingdale, IL: "Do you remember fluidic computers? Your ball bearings and air jets are similar to those."

Ron, Ottawa, Canada: "I remember fluid logic being discussed in the 60's. It was proposed as radiation resistant for space use and reliable for simple appliances such as washing machines. A bistable was a Y with the fluid being switched by a 'puff' of fluid at the base of the junction of the top tubes. The fluid would then flow down the other side of the junction until another 'puff' from the opposite side to the original 'puff' flipped it over. If this logic was made from clear plastic and used a colored fluid, the operation of the machine would be visible from a distance unlike relays where the operation is mainly heard."

Max: Looking back, my original suggestions for using fluidics were a little simplistic. Now that you mention it, I do recall this fluidic logic. In fact, you used to be able to purchase devices that looked like large integrated circuits, but the legs were narrow tubes. Different devices provided different primitive logic functions, and the output(s) from each device could be fed as input(s) to downstream devices (actually, I can’t remember if these were fluidic and/or pneumatic). I very much like the idea of building a "chunk" of logic using transparent tubes with different colored fluids running through them – maybe also have "sprinkles" of silver foil in the fluid to aid the observer see what is happening.


Greg, Palo Alto, CA: "With regard to your suggestion for pneumatic RAM, the bearings could be 'huffed' from one side to the other through check valves. This would allow drawing a vacuum on the funnels to test for which funnel currently carries the bearing (vacuum = ball present = 1; no vacuum = no ball present = 0). A weighted bellows could retract a flag from an optical interrupter. If a funnel were not covered by a ball, the bellows would never retract under vacuum. Of course, an independent weighted bellows with its own interrupter and calibrated vacuum leak would act as a valid data signal; it would fully retract well after all the others to indicate the complete travel of any of the other bellows."

Max: This is a great suggestion. First, it makes both the writing and the reading pneumatic, which is much more in keeping with what we're trying to do in this cabinet. Second, by removing the need to test for the presence of the ball bearings electrically, we remove the need to use metal balls, which means that we could use larger, brightly-colored ping-pong balls, for example.


Douglas, Lansing, MI: "I don't know what they call it, but that Drinking Bird science toy would make a great clock. This is the bird-looking thing that pivots in the middle. You start off by setting its beak in a small glass of water. Once it's absorbed a certain amount of water it stands up straight. Then the internal fluids condense and it falls face first back into the water. And it cycles forever. The bird bobbing up and down regularly could be detected as a clock. Plus, I suspect one could add some alcohol or other contaminant to the water to alter the evaporation rate to adjust the clock speed."

Max: This is a cool suggestion, but at the moment I think I have my heart set on a Jacob's Ladder-based clocking system as discussed in the main System Clock topic.


Patrick, Xenia, Ohio: "Why not make your computer decimal based? I worked my way through college writing assembly programs for the IBM 1620 computer. As far as I know, the IBM 1620 was the only decimal based computer commercially produced. The machine I programmed on had 60,000 memory locations, each capable of storing one 6-bit digit (each memory location had 6 bits of magnetic core memory)."

Joe, Fort Lawn, SC: "Is it really necessary to limit yourself to the binary system when reinventing the computer? There must be a huge supply of now unused telephone stepping relays which used the decimal system, being capable of stepping from 0-9 in response to the pulses generated by a telephone dial. Can you envision the great advantage of memory cells which could store such a comparatively huge amount of data? Or circuits which could manipulate decimal numbers? Think of the simplification of readout! One of the regrets I have in life is never visiting a telephone exchange and actually seeing banks of those marvelous devices doing their job."

Max: Generally speaking this isn't a bad idea (making computers work in decimal is underrated by a lot of folks). However, our plan is to make this a (drastically) cut-down version of the 8-bit CPU powering our virtual DIY Calculator, because (a) we own the rights to this little rascal (see also the Specification topic below) and (b) this will allow us to leverage existing tools like our assembler and simulation environment. However, we might consider creating a special block of memory based on telephone stepping relays that stores values in decimal.


Douglas, Lansing, MI: "Juke boxes used a variety of memory schemes. Some actually did have a magnetic core memory under the row of records, while others used mechanical levers. The popular Rockola had a large circular mechanism called the 'wobble plate' with dual rows of little levers – they stuck out each side. A mechanical carriage (the 'read-out carriage') scanned one side until it felt a raised lever. It then stopped, fired a small solenoid to push the lever back down, and the rest of the system took it from there. On the opposite side of the plate was a similar 'write-in carriage' that scanned around until a series of feelers on a printed circuit board felt livened contacts. It then stopped and a solenoid tripped a lever for the read-out to find. (No one ever took you seriously when you told them that the problem with their juke box was 'dirt on the wobble plate!')"

Max: I know what you mean; no one takes me seriously when I say things like that either. But I love the idea of incorporating the memory from an old juke box as part of our system, especially this 'wobble plate' version.


Joe, Alconbury Weston, UK: "I'd avoid inter-cabinet communications by radio or over the mains wiring. The mains can be a very noisy place, and if you ever build this beast you can't be sure what environment it will be housed in. If it were a science museum for example, with all their exhibits running, I'd have to wonder how dirty the mains supply would be. You also get problems with voltage difference in different countries. The electronics would have to change if a cabinet was moved from Europe to the USA for example instead of just changing a jumper on the transformer (you will also get into issues such as capacitor max-rated voltages and approval issues for mains-rated electronics). Safety is probably the biggest issue here. Radio is nice, but again you may have several problems. One is that what's legal in the USA isn't in say the UK or any other country for that matter. There are limited bands available so congestion is a problem, but – perhaps more importantly – if you have relays chattering in the background, the RF kicked out by them is terrible. It could seriously affect the comms range and data integrity. If it were me, I'd link everything with a single optical fibre. New meets old…. ODN (optical data networks) provided a foolproof level of voltage isolation between each cabinet which makes everything very safe (for the people and the hardware) – it's also proven technology, immune to outside interference/RFI, doesn't give off any interference/RFI and is cheap. Cabinets can be 1, 10, 100, 1000 feet apart with no real loss in signal, all of which may be important as you don't know where the beast is going to live. Also, if you designed the protocol correctly, groups could connect each of their cabinets (hundreds or thousands of miles apart) to a PC via a fairly simple ODN to USB converter (it's not like you're going to get to the teraflops speed with this beast). This would allow different groups' cabinets to communicate with each other over the internet whilst in development. Hmmm... an antique distributed computer... just a thought..."

Max: I'll have to ponder this. The problem with optical fibre is that you still have to physically trail it around the place; by comparison, using wireless connections makes each cabinet totally standalone. (Alternatively, we could use line-of-sight infrared links.) Also, I think trying to connect remote cabinets via the Internet is getting a bit ambitious; how would we mediate between different folks trying to do different things at the same time (see also Joe's Emulator idea earlier in this topic).


Lucien, London, UK: "Here's a novel kind of electromechanical dynamic RAM for your calculator. Each bit could be stored in a flywheel attached to the shaft of a small, low cost, permanent-magnet DC motor. To set the bit, apply a current pulse of one polarity to spin the flywheel one way. To clear it, apply the opposite polarity to spin it the other way. To read the bit, simply test the polarity being generated by the motor as it continues to spin. Depending on your choice of motor it would be practical to achieve refresh times as long as perhaps 10 seconds, with write-pulses in the order of 1/4 second. If you attach a paper disc printed with a spiral to each flywheel, it becomes human-readable by watching the spiral progress inward or outward. If there is enough shaft projecting to be spun between the fingers it becomes human-writeable. This would be very handy during code development. I suspect that a rack of these would make an interesting buzzing noise like a hive of bees. To avoid the need to refresh, the flywheels could be replaced by a miniature 2-cycle gasoline engines such as you find powering small model planes. These will run in either direction and could be direct-coupled to the electric motors. The latter would need to provide enough peak torque to stop and reverse the engines (which would be set at minimum possible throttle), but then you would have a dynamic memory capable of retaining its contents even during an electrical power outage. In this case the sound would be that of a hive of big, vicious, angry bees. Incidentally I do not know of any other memory technology that incorporates carburetors."

Max: Yet another interesting idea for me to ponder. I love where Lucien says: "This would be very handy during code development" (grin).




 
Interesting Books
It might not surprise you to discover that designing with a lot of technologies we intend to use on the HRRG is rapidly becoming a forgotten art. Most of the digital logic designers I know are as clueless as I am in this arena. So I started rooting around secondhand bookstores on the Internet, and I've come up with some real gems (there are still copies out there if you look hard enough).

  • In the case of relay-based logic circuits, I've acquired two tomes: Switching Circuits and Logical Design, by Samuel H Caldwell (I have the 1960 edition published by John Wiley and Son; Library of Congress Catalog Card Number 58-7896) and The Design of Switching Circuits, by William Keister, Alistair Ritchie, and Seth Washburn (I have the 1951 edition published by Van Nostrand). (As a point of interest, Alistair Richie was the father of Dennis Ritchie, who is famous for co-creating UNIX and developing the C programming language.) 
     
  • With regard to logic implemented using vacuum tubes, I think we'd be hard-pushed to find anything that could beat Pulse and Digital Circuits, by Jacob Millman ad Herbert Taub (I have the 1956 edition published by McGraw-Hill; Library of Congress Catalog Card Number 55-11930). This little scamp covers everything from nonlinear wave shaping to electromagnetic delay lines to digital logic circuits and registers (and much, much more). It even has a section entitled Magnetic Core Binary Elements. Now, I know what you're thinking, but we aren't talking about magnetic core memory stores; instead, the book shows how the same ferromagnetic cores can be used to realize logical functions like shift registers and binary counters. 
     
  • Further to the last point in the previous topic, have you ever heard of this form of magnetic logic? I certainly hadn't until several readers suggested that we implement one of the HRRG cabinets using these techniques. This is how I came to find myself in the possession of Digital Magnetic Logic, by David Bennion, Hewitt Crane, and David Nitzan (I have the 1969 edition published by McGraw-Hill; Library of Congress Catalog Card Number 68-28411). This stuff is just so amazing; the book describes how to use ferromagnetic cores to realize all types of functions, including combinational (or combinatorial if you prefer) and sequential logic.



 
The Specification
Our first task (if we decide to go ahead with this) will be to come up with the specification. This will include the dimensions of – and materials to be used for – the cabinets; the inter-cabinet communications mechanism (wireless, other?; the way in which we specify the address ranges covered by the various memory and I/O cabinets; the definition of the CPU; and the partitioning of the CPU functions across the various cabinets and implementation technologies.

With regard to the definition of the CPU, we already have a full definition of the DIY Calculator's 8-bit CPU broken out into excruciating detail in The Official DIY Calculator Data Book that's supplied on the CD ROM accompanying our book How Computers Do Math. Ideally, we would implement this machine (or a sub-set thereof), because this way we already have a lot of support tools (like our assembler) already available.

One big consideration to keep in mind is to partition the CPU portion of the design such that the same amount of logic is contained in each cabinet (by "same amount," we mean in terms of physical size/volume, because we don’t want one cabinet to be jam-packed full while another is half empty).

Further to the above, in fact the specification is now well underway. It's being defined as part of a series of articles on the building of the HRRG computer on IBM's DeveloperWorks website (Click Here to see the current articles).




 
Finding Funding
When we come to look back on the above, its obvious that this is going to be a HUGE amount of work. We could do it on our own, but it will probably take the next 20 years (if we're lucky).

Alternatively, if we get a team together (over the internet) and come up with a good specification, different groups could tackle different cabinets. In this case, we would need to agree on a home for the final product as discussed in the next, and final (hurray!) topic.

Yet another thought would be to find some entity like a museum or a big corporation that would be interested in funding such a project. This way we could create the specification, and then pay someone else to do the grunt work. If you have any thoughts as to anyone who would be interested in funding such an effort, please Contact Us and let us know (or if you're Bill Gates, feel free to contribute anonymously by sending us a big crate of $100 bills – just to make it fair, we'll pay for the shipping).




 
A Home for the Beast!
Last but not least, we're going to need a home for the beast (we know for sure that our wives aren’t going to let us display it at home).

How about a museum, or an airport concourse, or a hotel lobby? Once again, we'd be very interested to hear any ideas you may have in this direction, so Contact Us us if you have any thoughts.



Homebuilt CPUs WebRing

JavaScript by Qirien Dhaela

Join the ring?

The Homebuilt CPUs WebRing is maintained by David Brooks. If you wish to join the ring, use your browser to view this page's source, scroll to the bottom of the page, copy the code fragment between the "Start" and "End of WebRing" comments, and paste this code into your page. Once you've done this, Email David mentioning your page's URL and he'll check it out and add it to the ring.