Back in the 1960's and early 70's Bell Labs made some very sophisticated educational kits available to high schools and colleges. Designed for classroom use, they included wonderful manuals written by some of Bell Labs best minds. One of these kits, introduced in 1968, was CARDIAC: A CARDboard Illustrative Aid to Computation.
There are many great references available describing the CARDIAC,
- The obligatory Wikipedia Entry. Many additional informative links can be found here.
- A very good overview of the CARDIAC architecture and operation from Drexel University.
- The Paper Computer Unfolded: A Twenty-First Century Guide to the Bell Labs CARDIAC
so I won't go into a lot of detail here, however I do want to set expectations. The CARDIAC Instructable presented here is not a computer, it's a device to help you understand how a computer works. You the user will:
- decode instructions by sliding panels up and down,
- move the program counter "lady bug" from one memory location to the next,
- perform the duties of an arithmetic logic unit (ALU),
- read inputs from one sliding strip,
- and write output results to another (with a pencil).
Along the way you will you will learn the internal workings of a typical Von Neumann architecture computer. Some fairly sophisticated programs can be executed (by you manually remember) on the CARDIAC. Stacks, subroutines, recursion, and bootstrapping for example can all be demonstrated.
I remember working with a CARDIAC in high school. It must have been 1969 or 1970. We were lucky enough to have a couple of keypunch machines at our school, and our card decks of FORTRAN programs were run at the local board of education with only 2 days turnaround (instilled a lifelong habit of thoroughly checking my work before submitting it). So while I was learning the ins and outs of writing programs, the CARDIAC helped me to understand what was going on inside the machine that I was running them on.
Along with all the files needed to print and make your own CARDIAC, you will find a PDF of the "instructional manual" that came with the kit. I am indebted to the CARDIAC Computer Facebook group for this wonderful reproduction of the original. I also used the scanned images that they posted as a basis for this Replica.
If you are printing and cutting the pages out yourself you will need:
- 7 sheets of 110 lb cardstock (recommended)
- laminator (optional)
- scissors or hobby knife
- glue or tape
Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.
Step 1: Print the CARDIAC Pages
I was lucky enough to have access to a color printer through my makerspace (kwartzlab) so I used 110 lb cardstock to print out the seven pages. The main thing to keep in mind is to print the images at 100%. That usually means NO margins, shrink to fit, or best fit settings are enabled. My technique was to load each SVG file into the Chrome browser and print from there. Above is a screen shot of the print menu from Chrome showing the settings that I used.
You can optionally laminate the printed pages. The original CARDIAC was not laminated but I remember it being a little glossy. With the original you would write into the accumulator, memory locations, and input/output sliders with a lead pencil while you were coding and executing "programs" then erase them when done. What I like about laminating is that you can do the same thing with a fine tipped dry erase marker with better visibility and easier cleanup. So I laminated each page with 5 mil sheets.
Of course you can just bring the pages to your local copy center and have them do the printing and lamination. I priced printing alone at only $.84/page Canadian, but lamination drove the price up to $3.54/page at my local shop. Your mileage may vary.
If you are just looking to experience CARDIAC and aren't interested in a keepsake you can just print the pages on standard 20 lb paper in black and white. I did this for my test builds and they worked fine.
Step 2: Cut Out the CARDIAC Pieces
On the printed pages, all of the solid black lines represent cuts. Dashed black lines show places where the paper needs to be scored so do not cut these. Most of the cutting is pretty straightforward. All of the panel pieces, sliders, and the lady bugs need to be cut out.
Cutting out he small "windows" on the Computation Panel, Memory Panel, and OP Code Slider can be a little tricky. This can be accomplished with a hobby (xacto) knife and a little patience. I found that it helped if I placed the part being cut on a softish surface (I used a thin sheet of scrap cork I had lying around) so that I could push the blade down into that material through the piece being cut. Use short "saw like" motions. Take your time.
Now you might be looking at the 100 holes on the Memory Panel and saying no way. Well the good news is that unlike the other "internal" cuts it is not necessary to the operation of CARDIAC for these to be done. You can simply lay the instruction pointer (lady bug) beside and pointing to the appropriate memory location. If you are a little more ambitious one thought I have is to place a "magnetic sheet" behind the Memory Panel and attach small magnets to the tip of the lady bugs. This will prevent an errant sneeze from causing you to lose your place while executing a program.
If you are fortunate enough to have access to a laser cutter there is an easier way. You will notice that there are plus (+) signs in the four corners of each page. These are registration marks. I have included a DXF cut file for each of the printed pages here. I used the technique described in this Instructable:
to align and cut the pages using the corresponding DXF file loaded onto the makerspace laser cutter. Worked great!
Step 3: Assemble Your CARDIAC
Begin by scoring the tabs (dashed lines) at the top and bottom of the Computation and Memory panels and folding them back behind the panel. If you have laminated the parts, try not to cut through the lamination. I used a dull pizza cutter to do this.
Use the photos and the original Assembly Instructions above to insert the sliders into their appropriate slots. Check to make sure that the sliders have a full range of motion. That means:
- Accumulator Test - You should be able to switch between the + and - positions.
- OP Code - You should be able to see all ten OP codes (0-9).
- Address 1 & 2 - You should be able to see all ten numbers (0-9).
I connected the Computation and Memory panels together with some black plastic tape, but I was also OK with keeping the two panels as separate units, Your call.
Finally attach the Cover and Back panels. The Cover is attached to the Computation panel and the Back to the Memory panel. You can glue these to the bent back tabs (being careful not to get an glue on the sliders) or as I chose to do apply some small velcro strips to do the job. I never like locking things down in my projects I case I ever want to go back and tweak them.
Step 4: Final Thoughts
That's it. You should now have a fully functional computer simulator. Work your way through the instruction manual. The first program, adding two numbers together, begins on page 20. Have fun.
The SVG and DXF files included in this Instructable were all produced with Inkscape. I had never used this application seriously before but you can bet I will be in the future. Very capable. Bit of a steep learning curve (at least for me - I am not an illustrator) but so well supported in the community that I never had a problem finding answers to my questions. Another example of the power of open source.
I have no idea how many CARDIACs were distributed in total, but if my small high school in Northern Ontario got enough of them for our whole class it must of been a LOT. Despite this, CARDIACs are all but impossible to find today. Something this impactful deserves to be remembered. While there are a number of great CARDIAC simulators out there (see Building a CPU simulator in Python for instance) and even an FPGA implementation (Al Williams - Paper to FPGA) there is nothing like holding and operating a physical device.