CARDboard Illustrative Aid to Computation

Last updated
A power of two program running in a CARDIAC emulator. The program outputs 1, 2, 4, 8, ..., 512 and halts after 277 steps. CARDIAC emulator running power of two program.gif
A power of two program running in a CARDIAC emulator. The program outputs 1, 2, 4, 8, …, 512 and halts after 277 steps.

CARDIAC (CARDboard Illustrative Aid to Computation) is 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 consists of an instruction manual and a die-cut cardboard "computer".

Contents

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 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

Front of CARDIAC device CARDIAC learning aid (front).jpg
Front of CARDIAC device

The “CPU” 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) move the right way. They have one flag (+/-), affected by the result in the accumulator.

Memory consists of the other half of the cardboard cutout. There are 100 cells. Cell 0 is “ROM”, always containing a numeric "1"; cells 1 to 98 are “RAM”; available for instructions and data; and cell 99 can best be described as “EEPROM”.

Memory cells hold signed decimal 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. 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

CARDIAC Instruction Set
OpcodeMnemonicInstructionDescription
0INPInputtake a number from the input card and put it in a specified memory cell.
1CLAClear and addclear the accumulator and add the contents of a memory cell to the accumulator.
2ADDAddadd the contents of a memory cell to the accumulator.
3TACTest accumulator contentsperforms a sign test on the contents of the accumulator; if minus, jump to a specified memory cell.
4SFTShiftshifts the accumulator x places left, then y places right, where x is the upper address digit and y is the lower.
5OUTOutputtake a number from the specified memory cell and write it on the output card.
6STOStorecopy the contents of the accumulator into a specified memory cell.
7SUBSubtractsubtract the contents of a specified memory cell from the accumulator.
8JMPJumpjump 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.
9HRSHalt and resetmove 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

Related Research Articles

<span class="mw-page-title-main">Accumulator (computing)</span> Register in which intermediate arithmetic and logic results of a CPU are stored

In a computer's central processing unit (CPU), the accumulator is a register in which intermediate arithmetic logic unit results are stored.

In computer science, an integer is a datum of integral data type, a data type that represents some range of mathematical integers. Integral data types may be of different sizes and may or may not be allowed to contain negative values. Integers are commonly represented in a computer as a group of binary digits (bits). The size of the grouping varies so the set of integer sizes available varies between different types of computers. Computer hardware nearly always provides a way to represent a processor register or memory address as an integer.

<span class="mw-page-title-main">IBM 1620</span> Small IBM scientific computer released in 1959

The IBM 1620 was announced by IBM on October 21, 1959, and marketed as an inexpensive scientific computer. After a total production of about two thousand machines, it was withdrawn on November 19, 1970. Modified versions of the 1620 were used as the CPU of the IBM 1710 and IBM 1720 Industrial Process Control Systems.

<span class="mw-page-title-main">IBM 650</span> Vacuum tube computer system

The IBM 650 Magnetic Drum Data-Processing Machine is an early digital computer produced by IBM in the mid-1950s. It was the first mass produced computer in the world. Almost 2,000 systems were produced, the last in 1962, and it was the first computer to make a meaningful profit. The first one was installed in late 1954 and it was the most-popular computer of the 1950s.

A one-instruction set computer (OISC), sometimes called an ultimate reduced instruction set computer (URISC), is an abstract machine that uses only one instruction – obviating the need for a machine language opcode. With a judicious choice for the single instruction and given infinite resources, an OISC is capable of being a universal computer in the same manner as traditional computers that have multiple instructions. OISCs have been recommended as aids in teaching computer architecture and have been used as computational models in structural computing research. The first carbon nanotube computer is a 1-bit one-instruction set computer.

MIX is a hypothetical computer used in Donald Knuth's monograph, The Art of Computer Programming (TAOCP). MIX's model number is 1009, which was derived by combining the model numbers and names of several contemporaneous, commercial machines deemed significant by the author. Also, "MIX" read as a Roman numeral is 1009.

<span class="mw-page-title-main">HP-35</span> First pocket scientific calculator

The HP-35 was Hewlett-Packard's first pocket calculator and the world's first scientific pocket calculator: a calculator with trigonometric and exponential functions. It was introduced in 1972.

<span class="mw-page-title-main">Memory address</span> Reference to a specific memory location

In computing, a memory address is a reference to a specific memory location used at various levels by software and hardware. Memory addresses are fixed-length sequences of digits conventionally displayed and manipulated as unsigned integers. Such numerical semantic bases itself upon features of CPU, as well upon use of the memory like an array endorsed by various programming languages.

The Burroughs B2500 through Burroughs B4900 was a series of mainframe computers developed and manufactured by Burroughs Corporation in Pasadena, California, United States, from 1966 to 1991. They were aimed at the business world with an instruction set optimized for the COBOL programming language. They were also known as Burroughs Medium Systems, by contrast with the Burroughs Large Systems and Burroughs Small Systems.

The UNIVAC III, designed as an improved transistorized replacement for the vacuum tube UNIVAC I and UNIVAC II computers, was introduced in June 1962, with Westinghouse agreeing to furnish system programing and marketing on June 1, 1962. It was designed to be compatible for all data formats. However the word size and instruction set were completely different; this presented significant difficulty as all programs had to be rewritten, so many customers switched to different vendors instead of upgrading existing UNIVACs.

<span class="mw-page-title-main">WDC 65C02</span> CMOS microprocessor in the 6502 family

The Western Design Center (WDC) 65C02 microprocessor is an enhanced CMOS version of the popular nMOS-based 8-bit MOS Technology 6502. The 65C02 fixed several problems in the original 6502 and added some new instructions, but its main feature was greatly lowered power usage, on the order of 10 to 20 times less than the original 6502 running at the same speed. The reduced power consumption made the 65C02 useful in portable computer roles and microcontroller systems in industrial settings. It has been used in some home computers, as well as in embedded applications, including medical-grade implanted devices.

An instruction set simulator (ISS) is a simulation model, usually coded in a high-level programming language, which mimics the behavior of a mainframe or microprocessor by "reading" instructions and maintaining internal variables which represent the processor's registers.

NAR 1 or just NAR was a theoretical model of a computer created by Faculty of Mathematics of University of Belgrade professor Nedeljko Parezanović. It was used for Assembly language and Computer architecture courses.

<span class="mw-page-title-main">NCR 315</span>

The NCR 315 Data Processing System, released in January 1962 by NCR, is a second-generation computer. All printed circuit boards use resistor–transistor logic (RTL) to create the various logic elements. It uses 12-bit slab memory structure using magnetic-core memory. The instructions can use a memory slab as either two 6-bit alphanumeric characters or as three 4-bit BCD digits. Basic memory is 5000 "slabs" of handmade core memory, which is expandable to a maximum of 40,000 slabs in four refrigerator-size cabinets. The main processor includes three cabinets and a console section that houses the power supply, keyboard, output writer, and a panel with lights that indicate the current status of the program counter, registers, arithmetic accumulator, and system errors. Input/Output is by direct parallel connections to each type of peripheral through a two-cable bundle with 1-inch-thick cables. Some devices like magnetic tape and the CRAM are daisy-chained to allow multiple drives to be connected.

The Little Man Computer (LMC) is an instructional model of a computer, created by Dr. Stuart Madnick in 1965. The LMC is generally used to teach students, because it models a simple von Neumann architecture computer—which has all of the basic features of a modern computer. It can be programmed in machine code or assembly code.

<span class="mw-page-title-main">Programma 101</span>

The Olivetti Programma 101, also known as Perottina or P101, is one of the first "all in one" commercial desktop programmable calculators, although not the first. Produced by Italian manufacturer Olivetti, based in Ivrea, Piedmont, and invented by the Italian engineer Pier Giorgio Perotto, the P101 used many features of large computers of that period. It was launched at the 1964 New York World's Fair; volume production started in 1965. A futuristic design for its time, the Programma 101 was priced at $3,200 (equivalent to $27,500 in 2021). About 44,000 units were sold, primarily in the US.

Ferranti's Sirius was a small computer released in 1961. Designed to be used in smaller offices without a dedicated programming staff, the Sirius used decimal arithmetic instead of binary, supported Autocode to ease programming, was designed to fit behind a standard office desk, and ran on UK standard mains electricity with no need for cooling. It was also fairly slow, with instruction speeds around 4,000 operations per second, and had limited main memory based on delay lines, but as Ferranti pointed out, its price/performance ratio was difficult to beat.

CPU Sim is a software development environment for the simulation of simple computers. It was developed by Dale Skrien to help students understand computer architectures. With this application the user is able to simulate new or existing simple CPUs. Users can create new virtual CPUs with custom machine language instructions, which are implemented by a sequence of micro instructions. CPU Sim allows the user to edit and run assembly language programs for the CPU being simulated.

The 12-bit ND812, produced by Nuclear Data, Inc., was a commercial minicomputer developed for the scientific computing market. Nuclear Data introduced it in 1970 at a price under $10,000.

The City & Guilds Mnemonic Code and its associated City & Guilds Computer was a specification for an assembler language and a virtual computer system that ran it. It was introduced in 1964 by the City and Guilds of London Institute and used as the basis for a number of computer programming and administration courses. The computer model was deliberately very simple, and operational systems were implemented as interpreters on a number of mainframe computers like the ICL 1900 series and Elliot 900 family. An updated version was released in 1968.