HOME

TheInfoList



OR:

CARDIAC (CARDboard Illustrative Aid to Computation) is a learning aid developed by David Hagelbarger and Saul Fingerman for
Bell Telephone Laboratories Nokia Bell Labs, commonly referred to as ''Bell Labs'', is an American industrial research and development company owned by Finnish technology company Nokia. With headquarters located in Murray Hill, New Jersey, Murray Hill, New Jersey, the compa ...
in 1968 to teach high school students how
computers A computer is a machine that can be programmed to automatically carry out sequences of arithmetic or logical operations ('' computation''). Modern digital electronic computers can perform generic sets of operations known as ''programs'', ...
work. The kit consists of an instruction manual and a die-cut cardboard "computer". The computer "operates" by means of pencil and sliding cards. Any arithmetic is done in the head of the person operating the computer. The computer operates in
base 10 The decimal numeral system (also called the base-ten positional numeral system and denary or decanary) is the standard system for denoting integer and non-integer numbers. It is the extension to non-integer numbers (''decimal fractions'') of t ...
and has 100 memory cells which can hold signed numbers from 0 to ±999. It has an instruction set of 10 instructions which allows CARDIAC to add, subtract, test, shift, input, output and jump.


Hardware

The “
CPU A central processing unit (CPU), also called a central processor, main processor, or just processor, is the primary processor in a given computer. Its electronic circuitry executes instructions of a computer program, such as arithmetic, log ...
” of the computer consists of 4 slides that move various numbers and arrows to have the flow of the real CPU (the user's
brain The brain is an organ (biology), organ that serves as the center of the nervous system in all vertebrate and most invertebrate animals. It consists of nervous tissue and is typically located in the head (cephalization), usually near organs for ...
) move the right way. They have one flag (+/-), affected by the result in the accumulator.
Memory Memory is the faculty of the mind by which data or information is encoded, stored, and retrieved when needed. It is the retention of information over time for the purpose of influencing future action. If past events could not be remembe ...
consists of the other half of the cardboard cutout. There are 100 cells. Cell 0 is “
ROM Rom, or ROM may refer to: Biomechanics and medicine * Risk of mortality, a medical classification to estimate the likelihood of death for a patient * Rupture of membranes, a term used during pregnancy to describe a rupture of the amniotic sac * ...
”, always containing a numeric "1"; cells 1 to 98 are “
RAM Ram, ram, or RAM most commonly refers to: * A male sheep * Random-access memory, computer memory * Ram Trucks, US, since 2009 ** List of vehicles named Dodge Ram, trucks and vans ** Ram Pickup, produced by Ram Trucks Ram, ram, or RAM may also ref ...
”; available for instructions and data; and cell 99 can best be described as “
EEPROM EEPROM or E2PROM (electrically erasable programmable read-only memory) is a type of non-volatile memory. It is used in computers, usually integrated in microcontrollers such as smart cards and remote keyless systems, or as a separate chip d ...
”. Memory cells hold signed
decimal The decimal numeral system (also called the base-ten positional numeral system and denary or decanary) is the standard system for denoting integer and non-integer numbers. It is the extension to non-integer numbers (''decimal fractions'') of th ...
numbers from 0 to ±999 and are written with a pencil. Cells are erased with an eraser. A “bug” is provided to act as a program counter, and is placed in a hole beside the current memory cell.


Programming

CARDIAC has a 10 instruction
machine language In computer programming, machine code is computer code consisting of machine language instructions, which are used to control a computer's central processing unit (CPU). For conventional binary computers, machine code is the binaryOn nonb ...
. An instruction is three decimal digits (the sign is ignored) in the form OAA. The first digit is the op code (O); the second and third digits are an address (AA). Addressing is one of accumulator to memory absolute, absolute memory to accumulator, input to absolute memory and absolute memory to output. High level languages have never been developed for CARDIAC as they would defeat one of the purposes of the device: to introduce concepts of assembly language programming. Programs are hand assembled and then are penciled into the appropriate memory cells.


Instruction Set

{, class="wikitable" , + CARDIAC Instruction Set , ----- ! Opcode !! Mnemonic !! Instruction !! Description , ----- , 0 , , INP , , Input , take a number from the input card and put it in a specified memory cell. , ----- , 1 , , CLA , , Clear and add , clear the accumulator and add the contents of a memory cell to the accumulator. , ----- , 2 , , ADD , , Add , add the contents of a memory cell to the accumulator. , ----- , 3 , , TAC , , Test accumulator contents , performs a sign test on the contents of the accumulator; if minus, jump to a specified memory cell. , ----- , 4 , , SFT , , Shift , shifts the accumulator x places left, then y places right, where x is the upper address digit and y is the lower. , ----- , 5 , , OUT , , Output , take a number from the specified memory cell and write it on the output card. , ----- , 6 , , STO , , Store , copy the contents of the accumulator into a specified memory cell. , ----- , 7 , , SUB , , Subtract , subtract the contents of a specified memory cell from the accumulator. , ----- , 8 , , JMP , , Jump , jump to a specified memory cell. The current cell number is written in cell 99. This allows for one level of subroutines by having the return be the instruction at cell 99 (which had '8' hardcoded as the first digit. , ----- , 9 , , HRS , , Halt and reset , move bug to the specified cell, then stop program execution.


Operation

Programs are run by first sliding three slides so that the number in the instruction register equals the number in the memory cell the bug is sitting in. Once that is done the bug is moved to the next memory cell. The user then follows an arrow which will then tell them what to do next. This continues for all of program execution.


See also

* Little man computer (another instructional model) *
WDR paper computer The WDR paper computer or Know-how Computer is an educational model of a computer consisting only of a pen, a sheet of paper, and individual matches in the most simple case. This allows anyone interested to learn how to program without having a ...


External links


a discussion of the CARDIAC
with examples and a simulator in
JavaScript JavaScript (), often abbreviated as JS, is a programming language and core technology of the World Wide Web, alongside HTML and CSS. Ninety-nine percent of websites use JavaScript on the client side for webpage behavior. Web browsers have ...

an interpreter and interactive debugger on the .NET platform
on GitHub
cinc/jcinc
– a simulator for the
Java platform Java is a set of computer software and specifications that provides a software platform for developing application software and deploying it in a cross-platform computing environment. Java is used in a wide variety of computing platforms fr ...
with both command-line and GUI interfaces on
SourceForge SourceForge is a web service founded by Geoffrey B. Jeffery, Tim Perdue, and Drew Streib in November 1999. SourceForge provides a centralized software discovery platform, including an online platform for managing and hosting open-source soft ...

Software Emulator for the CARDIAC
– hosted on Macintosh, Windows (untested), and Linux (untested); provides editor, simple assembler, and examples; opcodes 0 and 9 are interchanged as described on the page; source code appears to be proprietary; free downloads
Quick Tour of the Built CARDIAC computer
on YouTube
CPU Design on Paper
– Al Williams' spreadsheet version of CARDIAC on the Dr. Dobb's site
Paper to FPGA
– Al Williams' FPGA implementation of CARDIAC on an FPGA board (final article of a series on Dr. Dobb's web site)
Emulator written in RUST
- This is a RUST implementation of an emulator for the CARDIAC Models of computation Educational abstract machines Educational programming languages