I'm trying to make a simpler version of CARDIAC for only performing addition. Now, I am encountering several problems in making something similar and looking for some ideas (I'm new to Computer Architecture).

Here's an excerpt of what CARDIAC is (Wikipedia):

CARDIAC (CARDboard Illustrative Aid to Computation) was a learning aid developed by David Hagelbarger and Saul Fingerman for Bell Telephone Laboratories in 1968 to teach high school students how computers work. The kit consisted of an instruction manual and a die-cut cardboard "computer". The computer "operated" by means of pencil and sliding cards. Any arithmetic was done in the head of the person operating the computer. The computer operated in base 10 and had 100 memory cells which could hold signed numbers from 0 to ±999. It had an instruction set of 10 instructions which allowed CARDIAC to add, subtract, test, shift, input, output and jump.

Basically it's a simple illustration of how a computer works internally to do basic stuff(as explained in the excerpt). I'm only trying to do addition but I am trying to find a way to show what the output is. Here's how I thought it would be: I would use a 16-bit register with binary base and 10 memory cells. I guess this should be more than enough for a basic addition illustration.

Now my problem is, I'm not very sure how to output the values. Let's say for example, I input 10(binary for 2) in register R1 and 1(binary for 1) in register R2. Now this goes to the ALU, which calculates the addition immediately and places it in register R3. This would be represented using arrows and sliding cards(values for R1, R3 and R3) in specific slots on the illustration.

My problem is, now that I have the value in R3, how do I output it using that cardboard illustration? Also, does the ALU work as logic gates to calculate the sum?

  • $\begingroup$ Can you give some more background? I (and, I guess most people) aren't familiar with CARDIAC so the question makes no sense to me without me having to do a lot of reading up. Also, I'm a little worried (admittedly, from my position of near-total ignorance) that your question is essentially, "Hey, I have this esoteric programming language. Help me write a program to do X", which is off-topic. $\endgroup$ Oct 12, 2015 at 11:16
  • $\begingroup$ @DavidRicherby I updated it. It's not an esoteric programming language. It's just to illustrate how the ALU works for a simple binary addition. The CARDIAC was made for this purpose, however, there is too much complexity in it. The Wikipedia page is a very short read, I included an excerpt(which I think was most important). You can see the picture on the page. I can draft up a diagram and include it here if necessary. $\endgroup$
    – nTuply
    Oct 12, 2015 at 11:30
  • $\begingroup$ Thanks -- the edit makes things much clearer. People can now see roughly what the question is about and, if they think they might be able to answer it, they can follow the link. I realise it's not literally a programming language but the question is quite similar to "How do I write a program in this computer's machine language that outputs the value in R3." $\endgroup$ Oct 12, 2015 at 11:38
  • $\begingroup$ It's not similar to that question you referred at all. It's basically an illustration of how addition works inside the CPU, how it goes from the register, to the ALU and the result back to another Register. I am trying to find a simple way to illustrate it on a diagram that works in a similar fashion to CARDIAC. :) $\endgroup$
    – nTuply
    Oct 12, 2015 at 21:18
  • $\begingroup$ IMO, switching to the binary base is a mistake. Newcomers are not familiar with it and that adds a useless layer of complexity. $\endgroup$
    – user16034
    Jul 3, 2023 at 7:15

2 Answers 2


The wikipedia page you referenced has a link to a much more in-depth instructions on how to use CARDIAC. https://www.cs.drexel.edu/~bls96/museum/cardiac.html There is also a CARDIAC simulator here: https://www.cs.drexel.edu/~bls96/museum/cardsim.html

The answer to your first question

My problem is, now that I have the value in R3, how do I output it using that cardboard illustration?

is in the table of instructions. The OUT instruction (the instruction with opcode 5) writes the value from a memory location to the output card.


You want to make a binary adder. You can make one out of boolean logic gates. Your register will be based on your binary adder. It is not a more simple computer than the CARDIAC computer, because the CARDIAC works with base ten and the beginner does the arithmetic by hand. Boolean logic is taught much later in school than addition in base ten.

  • $\begingroup$ Welcome to ComputerScience@SE. I do not understand Your register will be based on your binary adder. I see nTuply using register where with CARDIAC(cardiac?!) it is MEMORY CELL. Did you intend The value in your register will be based on the output of your binary adder? (Which register?) CARDIAC's ALU output is captured in an ACCUMULATOR. I find no hint to same in nTuply's question. $\endgroup$
    – greybeard
    Jan 19, 2020 at 11:53

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.