2-bit paper processor teaches how they work

Take a few minutes out of your day, grab your scissors, and learn how a simple processor works. [Saito Yutaka] put together an exercise to teach processor operations with paper. After downloading the PDF you can cut out the Address and Data pointer as well as two-bit data tokens for each. The processor has three instruction sets; Increment register by one, Jump if not over flow, and Halt wait for reset.

Once you’ve got your cutouts you can follow along as the program is executed. The INC operation is run, with the JNO used to loop the program. Once the register has reached an overflow the overflow counter halts the program.

One word of warning, we think there’s a typo in one of the captions.  Once the program starts running and gets to address 01(2) the caption still reads 00(2) for both address and data. As long as you compare the values in the picture along the way you should have no problem getting through execution. which has now been fixed.


  1. Leigh says:

    This reminds of the the Bell Labs CARDIAC, a similar concept but base 10. I had one when I was 9 or 10. Later I found a stash of them and bought a few but I believe they may all be gone now; at least, the web site on AOL is gone. But here’s a mirror:


  2. Jonathan Badger says:

    Another similar project is the “Little Man Computer”, which even has Java emulations.


  3. EFH says:

    It does not have three instruction sets: it has an instruction set consisting of three instructions.

  4. t&p says:

    this is cool and all but why does the example program work in the pictures but his instructions are always 00(2)

    >>Fetch the instruction . Read data on address 00(2) .
    Data is 00(2). This means increment register by one

    >>Fetch the instruction . Read data on address 00(2) .
    Data is 00(2). This means jump if not over flow .

    lol wat

  5. Fallen says:

    Agreed EFH

  6. Patrick says:

    Thank you Hackaday. I’m a TA in an Assembly class and I’ve been needing a visual aid to teach to high school students.

    I may have to do some expanding to cover all that I need to though.

  7. Osgeld says:

    This looks to be a good educational tool, Might print one out for fun once I get back home

    Good job

  8. Saito Yutaka says:

    Thanks for your comment.
    Sorry I couldn’t find a typo before wrote page.
    I fix the typo a minute ago.


  9. M4CGYV3R says:

    There are a few errors in the writeup and this page’s description, but overall a very neat way to demonstrate how a processor works at the lowest level.

    Well, I suppose you could get into how the transistors and cache store the data on the silicon, but that’s not so much computing at that point.

  10. This is cool, I will have to teach this to Mike Jr. at some point! =)

  11. Waj says:

    nice one

  12. sirmonkey says:

    explain this:
    Fetch the instruction . Read data on address 01(2) .
    Data is 01(2). This means jump if not over flow . Status register is 0 . So CPU should jump to somewhere .
    But CPU doesn’t know which address to jump .


    Increment program counter .


    Read data on address 10(2) . The data value is 00(2) .
    CPU know a address to jump .

    how does it now know to jump? BUT why does it(jump) when the instruction(00) is to increment the register by one ???

    maybe edit to say “01 = jump if not status else jump to next read data address” or something in programmer speak

    • dutado says:

      Well, you probably took it from the bad end. The 01b is a 2-word (where word means a group of 2 bits for now) instruction. In case the condition is met, the processor jumps to the address specified in the operand in second word of the 01xxb instruction. In case the condition is NOT met, then it jumps to the next instruction. Therefore it jumps 2 words further, effectively jumping to the address 11b. Here it reads the 10b instruction, thereby halting the system.

  13. idisjunction says:

    So when can we expect the Linux port :)

  14. Alex says:

    The captions are a little confusing but if you just look at the picture realizing that some are doubles it makes perfect sense.

  15. F4R4D4Y.dc414 says:

    There’s so much Engrish in this, I just can’t force myself to read it.

    At least use Google Translate from a language you know well.

  16. wsmf says:

    There is a CARDIAC community over on G+ where you can get all the files to make your own CARDIAC as well as the manual. The last place I was able to purchase an original CARDIAC was from Edmunds but even they seem to have run out. Making your own is not hard and it also gives you the chance to skin it to fit your own personality.


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


Get every new post delivered to your Inbox.

Join 97,790 other followers