David Hagelbarger and Saul Fingerman created the CARDboard Illustrative Aid to Computation (CARDIAC) in 1968 at Bell Laboratories to teach the basics of computer function. Millions of copies were distributed to high schools, community colleges, and universities.
My CARDIAC is largely made based on the files and plans provided by Johan von Konow. I modified his PDF file to match the dimensions of US Letter size (8.5 x 11") paper and extracted the cutting lines from the new PDF into SVG files for CNC cutting. While the original CARDIAC was made from cardstock, I decided to make mine from laminated paper for durability, water resistance, and ease of use with dry or wet erase markers. I printed the PDF file provided at the bottom of the page on 20 pound US letter-size (8.5 x 11") printer paper and laminated it with 3 mil Scotch laminating sheets. I then used the provided SVG files to cut each page with a Silhouette Cameo CNC die cutter controlled by InkCut 2.1.5 running on a HP t510 thin client with Lubuntu 24.04 installed.
Opcode | Mnemonic | Instruction | Description |
---|---|---|---|
0 | INP | Input | Read number from input card and put it into specified memory cell. |
1 | CLA | Clear and add | Clear accumulator and then add contents of a memory cell to it. |
2 | ADD | Add | Add memory cell contents to accumulator. |
3 | TAC | Test accumulator contents | Perform a sign test on accumulator contents and jump to a specified memory cell if negative. |
4 | SFT | Shift | Shift accumulator contents x places left and y places right, where x is the upper and y is the lower address digit. |
5 | OUT | Output | Write number from memory cell onto output card. |
6 | STO | Store | Copy accumulator contents into specified memory cell. |
7 | SUB | Subtract | Subtract contents of specified memory cell from accumulator. |
8 | JMP | Jump | Jump to a specified memory cell, where the current cell number is written in memory cell 99 and one level of subroutines is possible by using the instruction at cell 99 (8xx) as a return. |
9 | HRS | Halt and reset | Move bug to specified cell and stop program execution. |