Please note: the following text was OCRed from an unidentified source.
I will be delighted to give credit, and ask for permission if and when
the source is identified.
Please excuse the "ask later" attitude, but I think the public is better
served this way since the article seems more than 50 years old and the likely
hood of cheating the authors (or their decendents) and the publisher is rather remote.

The article is from The Origins of Digital Computers, Selected Papers,
2nd Edition, Edited by Brian Randell, Springer-Verlag, 1975.
It's printed in Germany, and the frontispiece implies a payment to
Springer-Verlag Berlin.
However, the book reprinted it from Review of Electronic Digital Computers.
Joint AIEE-IRE Computer Conference. 10-12 Dec 1951, pp.30-36.
New York: American Inst. of Electrical Engineers, 1952.
Reprinted by permission of IEEE, NY.
One option is to find the original (ask IEEE librarians?) and get permission from IEEE.
- Robert

The IBM Card-Programmed Electronic Calculator

JOHN W. SHELDON & LISTON TATUM

JOHN W. SHELDON and LISTON TATUM are with International Business Machines Corporation,
New York, N. Y.

TRACKING a guided missile on a test
range now is the only way
to make sure of its performance. At one
Department of Defense facility this is done by planting batteries
of cameras or phototheodolites along a
100-mile course. During its flight, the missile position is recorded
by each camera at 100 frames per
second, together with the camera training angles. Formerly these
thousands of pictures from each of
many cameras were turned over to a crew of computers, to determine
just what happened. It took 2
weeks to make the calculations for a single flight. Now this is done
on the International Business
Machines (IBM) Card-Programmed Electronic Calculator in about 8 hours,
and the tests can proceed.

Several dozen of the CPC's, as they are called, have been delivered and
are already turning out answers
as of the date of writing. This paper will then concern a field-tested
and proved, massproduced
electronic calculator.

The forerunner of this machine appeared in the spring of 1946. It was the type 603 electronic calculator,
the first mass-produced, commercially available digital electronic calculator. Input and output were on
standard 80column punched cards. This machine was followed two years later by the improved type 604
electronic calculator, like its predecessor designed primarily for commercial usage.

Engineers were quick to see, however, that these two machines were as powerful for technical as for
commercial calculations. They offered the advantages of electronic computing speeds, rapid input and
output via standard media, and availability; that is, they had already been delivered and were being
maintained in proper operating condition. Their chief disadvantages were only a lack of memory
capacity for larger problems and a lack of a line printing unit to permit immediate inspection of
instructions and results.

These two facilities were first provided by an experimental combination of the
older type 603 electronic calculator with a type 405 electric accounting machine. This proved to be so
successful that the latest type 604 electronic calculating unit was combined with the latest type 402-417
electric accounting machine for printing and a proved electromechanical memory unit to form the
Card-Programmed Electronic Calculator. Deliveries were begun in 1949, almost 3 years ago, and
production is continuing at a steady rate.

The CPC has proved to be truly a general purpose machine. The following examples may serve to
illustrate this point:

Neutron shielding calculations: determination of average penetration of neutrons
into various types of materials. This important calculation was begun on the original 603-405
combination, and has been continued on the CPC.

Production control calculations: determination of material requirements from so-called explosion
calculations.

Helicopter vibration analysis: determination of the normal modes and frequencies of vertical
oscillations and coupled side bending and torsional oscillations of helicopter fuselages.

Data reduction calculations of a wide variety of types.

The Card-Programmed Electronic Calculator, hereinafter called the "CPC," achieves its great flexibility
and high output in a number of ways. Chief among these is the design of the arithmetic unit, which is
also the logical place to begin a description of the machine.

Figure 1. Arithmetic unit

The Arithmetic Unit PLUGGABLE CONTROL PANEL

The heart of the CPC is the type 604 arithmetic unit, shown in Figure 1. This is an electronic unit of
approximately 1,400 tubes containing electronic storage units, an elec tronic accumulator of 13
positions, and electronic timing and control circuits which will control the operation of the unit at an
operating frequency of 50,000 pulses per second. The fundamental electronic operations provided are
addition, subtraction, multiplication, and division, which may be used singly or in any combination
under control of a wired program established by the user of the machine.

The extreme flexibility of the arithmetic unit itself arises from the use of a pluggable control panel; that is,
a control panel for which all connections can easily be made by hand. This makes it possible to have
one control panel wired for floating decimal operations, with factors carried as significant figures times a
power of ten; one for fixed decimal operations; one for special functions such as trigonometric and
logarithmic; one for matrix inversion; one for selfchecking, for example, by casting out 99's; et cetera.
Often a considerable saving in time for a specific purpose can be obtained by wiring a control panel
specially tailored for the problem. These control panels are separate units inserted into the calculator, so
they may be interchanged readily. Effectively, they tell the arithmetic unit what to do at electronic
speeds with the factors it has received at electromechanical speeds. In other words, operation of the
arithmetic unit may be thought of as taking place in two phases:

Reading factors and instructions to and from the electromechanical units of the calculator, at
electromechanical speeds.

Executing 60 program steps one or more times at electronic speeds.

Figure 2. Control panel layout

Figure 2 shows the layout of the control panel, built up by plugging the necessary wires into the
connection holes. On it 60 single-address commands or program steps are provided for manipulating the
factors read into the arithmetic unit. To carry these out there is an electronic counter of 13 decimal
positions and 37 positions of electronic memory, all interconnected by an 8-digit channel system.
A typical command may then be, "add the contents of electronic storage unit number 4 into the
counter." This is illustrated in Figure 2 for program step number 36.

The following commands are available:

Storage read in

Storage read out

Multiplier quotient unit read in

Multiplier quotient unit read out

Counter read in plus

Counter read in minus

Counter read out

Counter read out and reset

Multiply plus

Multiply minus

Divide

One-half adjust

Zero test for step suppression

Column shift

Sign test for step suppression

Group suppress

Program repeat

Zero test, sign test, and group suppress enable designated groups of program steps to be suppressed
selectively. These commands are specified by inserting a properly wired control panel into the machine.
Various combinations of them may be selected by means of relays picked up by the operation
instruction in each line of instruction. These relays are called calculate selectors, abbreviated calc. sel. on
the wiring diagram. The wiring shown passing through calculate selector number 6 will make program
step 36 active with an operation 6 instruction.

The wiring diagram, still Figure 2, shows how groups of steps are associated with calculate selectors to
form operations in a general purpose 8-digit control panel. Thus it is possible for a single general-purpose
control panel to offer a choice of the following: add, subtract, multiply, divide, sin x, cos x, hyperbolic
sine, hyperbolic cosine, exponential, logarithmic, or square root functions, and other functions.

Ten by ten multiplication is performed by a partial products expansion. Ten by ten division is done by a
quotient expansion. The calculation of special functions such as sin x and square root is effected by series
expansions or iteration formulas.

The program repeat feature of the machine enables one to carry out these series or formulas at
electronic speeds. This provides for a repetition, at electronic speeds, of all 60 program steps if specified
conditions are not met. For example, if an approximate value generated for the square root does not
agree closely enough with the previous approximation, the iteration will be carried out again.

A control panel utilizing all 60 program steps can be wired from a planning chart in 2 hours. Having a
pluggable interchangeable arithmetic control panel best enables the user to tailor his own machine to
his own problem.

STORAGE UNITS AND THEIR
INTERCONNECTIONS

The directing center of the arithmetic unit, which is itself of course the calculating center of the CPC, is
the pluggable
control panel, already described. The commands and operations specified by wiring on this panel are
carried out by the various storage units, the counter unit, and their interconnections.

The arithmetic unit contains nine separate storage units with atotal capacity for 37 digits and 9 algebraic
signs. There is a 13-position electronic counter where additions and subtractions of algebraic numbers
may be performed. Multiplication and division are performed by repeated addition and subtraction.

Figure 3. Interconnections between storage unit:

Figure 3 shows the interconnections between two typical storage units, the
multiplier quotient (MQ) unit, and the counter. There is an eight digit channel for entry and exit from the
storage and multiplier quotient units. These units may be connected into the channel in various ways by
wiring on the control panels. The so-called normal assignment is the one shown. Information leaving a
storage unit passes to the column shift unit where a shift left of zero to five digits may be effected before
the information enters the counter or another storage unit. The column shift unit is controlled by the
tertiary timer, to be discussed later, during multiplication and division and
by control panel wiring during other operations. Information leaving the counter also passes
into the shift unit, with the shift homed on the high positions of the counter, that is, position 6 of the
counter connected to the units position of the channel. Thus a shift of from zero to five digits right may
be effected. In this way the same shift unit serves for both right and left shifting.

TIMING

The pluggable control panel and, to some extent, the interconnections between storage units serve to
make
the arithmetic unit of the CPC extremely flexible. At the same time it is recognized that certain functions
of this unit not only do not need to be changed, but should be completely automatic, requiring no
attention from the programmer.

Among these functions is that of timing, carried out by internal circuits as described in the following text.

Timing during calculation is governed by three timing circuits constructed from flip-flops. These are: the
program control timer, the secondary timer, and the tertiary timer.

The program control timer steps the machine through the 60 program steps described above.
Instructions are executed at each of these steps as specified by wiring on the control panel.

The secondary timer takes control each time the program control timer advances to a new step. It has
25 steps itself, which are executed at the fundamental frequency of the machine, 50 kc. This timer
controls the actual execution of those orders which are wired on the control panel at the appropriate
step
in the program control timer. For example, if the number " 5" is to be transferred into a certain storage
unit, the secondary timer will control the reading of a pulse into the storage unit at one time, second
pulse at two time, et cetera, up to a fifth pulse at five time, at which time the impulses will be cut off.

The tertiary timer controls the functions of the secondary timer during multiplication and division. It
determines the number of times the multiplicand is to be added into the counter for each multiplier
digit, when a shift should take place, et cetera. Since the calculator operates at a fundamental
frequency of 50 kc, and since there are 25 steps in the secondary timer, one program step not involving
multiplication or division takes 0.5 millisecond. This time includes that for all switching, column shifting,
resetting, and adding. This is the fundamental time for addition, subtraction, and logical operations. The
average time for multiplication (5 by 8) is 12.5 milliseconds; for division it is 16.3 milliseconds. These also
are overall times.

SPECIAL FEATURES OF CONSTRUCTION
AND SERVICING

Much attention has been given in calculator design to matters of flexibility, control, and execution such
as those previously described. If the resulting machine is to offer the greatest economy and utility,
however, it is equally important that it be carefully designed for ease of construction and maintenance.
This has been achieved in the arithmetic unit of the CPC through the use of gates mounting detachable
rows of circuit components, and through pluggable circuit units.

Figure 4 shows a rear view of the.arithmetic unit with the left gate open as for servicing. The program
steps are located in the detachable rows of panel 2. Storage units are similarly located in panels 4 and 6.
Panels 1, 3, and 5 in the right gate contain the secondary timer, tertiary timer, counter, and other special
circuits.

Figure 5 shows one of the pluggable circuit units used in the arithmetic unit. The resistors and condensers
in the circuit associated with a given tube are mounted in the assembly with that tube. Connections are
made with the row chassis by means of a f3-prong plug. These pluggable units facilitate mass
production. They also facilitate maintenance because the IBM customer engineer can trace difficulties by
functional failure and easily replace the entire unit.

Over-all Operation of the CPC

Thus far the arthmetic unit, the heart of the CPC, has been described. As an independent unit, it is fully
capable of handling problems requiring no more than 50 digits of machine capacity at a time, with
limited sequencing. Indeed, provision is made for disconnecting it from the other units for separate
operation. This leaves the electric accounting machine and the auxiliary memory unit free for work on an
entirely different problem if desired.

For many problems, however, additional memory and sequencing capacity is desirable. For more
complicated problems, it is almost essential to have a printing unit as well to record the results for
immediate inspection. All these functions are provided by the connection of additional units to the
arithmetic unit as shown in Figure 6, to form the complete Card-Programmed Electronic Calculator.
From left to right these units are the type 941 auxiliary memory unit (two more could be attached), the
type 402-417 electric accounting machine, and the tube and the card-handling units of the type 604
arithmetic unit.

Figure 7. Connections between units by function

Figure 7 shows the connections between these units arranged by function. The electronic calculating unit
at the right has already been described as the center of the CPC. The counter group storage, the line
printer, the card reader, the column-shift unit, and the program control are located physically in the type
402-417 electric accounting machine. Normal operation is with numbers of ten decimal digits and
algebraic sign. There are 80 counter positions in the counter group storage. Each type 941 auxiliary
memory unit has a capacity for 16 such numbers, and up to three type 941's may be provided, for a total
auxiliary memory of 480 digits plus 48 signs.

Both the electric accounting machine and the auxiliary memory unit operate by means of relays, cams,
counter wheels, et cetera, and may be classified as electromechanical devices. The fundamental cycle
for the operation of these units is 400 milliseconds. Thus there are two basic periods for operation in the
CPC, namely, 400 milliseconds when dealing with the electromechanical units of the calculator, and 0.5
millisecond when dealing with the electronic component.

Clearly it is the object of the programmer to load up the electronic unit with as much information as
possible, so as to minimize the number of electromechanical cycles. For problems which do not involve
the calculation of special functions, the average time per operation can often be reduced to 150
milliseconds. When the program repeat feature of the arithmetic unit is being used to calculate special
functions, the average time per operation may become as low as 10 milliseconds.

The electromechanical units are connected to the type 604 electronic calculator (arithmetic unit) by
three channels, each carrying 10-decimal-digit numbers with sign (see Figure 7). The first two of these,
channels A and B, carry factors and instructions to the electronic unit. The third, channel C, brings
information from the electronic unit. Thus a series of calculations is normally reduced to steps of the
logical form: a (operation) b yields c, where a and b are any numbers (constants, data, and previous
results) to be combined by a specified operation (arithmetic, trigonometric, exponential, or other), and c
is the result of this combination. In other words, the CPC operates with a 3-address coding system,
normally read from cards. Each line of instruction contains the following:

An address code to direct the calculator
where to find the number a to be read over channel A.

A similar code for locating the number b.

An operation instruction, 0(a,b).

A column shift instruction directing the column shift unit to shift the result c a specified number of
decimal places.

An address code to tell the calculator where to store the result c.

The CPC operates using standard IBM punched cards. These are an economical, reliable, and flexible
medium for intermediate and long-time storage of information. Cards are easy to reorder and merge
using standard IBM auxiliary equipment.

A typical instruction card is shown in Figure 8. Note that it provides a full line of instructions, together with
room for the introduction of one or two factors, variables or constants, to be read into the machine
from the card. This leaves machine memory free for current operations. In effect, the instruction deck and
interfiled data cards serve as an extensive auxiliary memory.

With this brief description of the overall operation of the CPC, and having pointed out some of the
advantages of the arithmetic unit, one may turn to some of the outstanding features of the CPC as a
whole. We shall consider sequencing, choices, parallel operation, and output.

Figure 8. Instruction card

SEQUENCING

As the CPC usually reads its instructions from cards feeding through it, it is not necessary to allocate
storage for program. Thus the CPC may be called an externally programmed machine. In an externally
programmed machine there is no limit to the length of sequences which may be used. In a stored
program machine, on the other hand, it is usually necessary to economize on the length of sequences,
on account of the limited storage available. This usually makes it necessary to perform arithmetic
operations on the address part of the stored instructions, in order to keep sequences short. Thus a stored
program machine often has to keep reassuring itself as it goes along; that is, it has to keep asking itself
questions. For example, in a direct matrix inversion the stored program machine has to keep asking itself
such questions as: "Am I at the end of the row? Have I reached the last row? Should I go to the
calculating sequence now?" In many problems the logical steps required to program a problem in a
stored program machine may-exceed by a factor of ten the actual useful arithmetic operations
performed. External programming often gives the CPC a factor of ten in speed over a stored program
machine with the same basic operation rate.

On the CPC one may choose alternate sequences from the instruction cards based on decisions made in
the calculator. This is accomplished by picking up relays which alter the connections of the program
control circuits to the reading brushes.

On the CPC subprogramming of up through ten lines of instructions may be effected by means of a relay
network called a ten position field selector. Taking timed source pulses from a digit emitter, the field
selector will emit up through ten lines of instruction in sequence.
This device is useful for calculating iteration loops, where a variable number of iterations may be
required. The CPC can store instructions in memory when required.

CHOICES

When choices are necessary, they may be accomplished by wiring relay networks on the electric
accounting machine control panel. For example, a number may have to be called from one of 16
different storage units, depending on a 4-binary-digit or 4-bit code. By using the 4-bit code to pick up four
relays or selectors on the accounting machine control panel, this selection can be effected in one card
cycle (400 milliseconds). To effect the same selection in a stored program machine might take many
cycles.

PARALLEL OPERATION

While one operation is being performed in the arithmetic unit it is often possible to perform the additions
involved in the problem in the electric accounting machine counters. Also, the choices described in the
preceding paragraph take place without loss of time. All this is accomplished by pluggable relays or
selectors together with normal instruction coding.

OUTPUT

The output from the CPC is in the form of punched cards and lines of printing. Output in cards is needed
so as to have results available for future calculations and as intermediate storage in larger problems.
Output of printed information is needed while the calculator is in operation for interpretation by
mathematicians and for problem planning. On the CPC lines of instructions as well as data can be
printed at a speed compatible with computing speeds. A line of printing consists of $9 characters and
takes 400 milliseconds. Print time is simultaneous with other electromechanical functions of the machine,
so that there is no time lost for printing.

This feature makes it easy to program problems for the CPC, and easy to deliver reports of results as
calculations
are completed.

Conclusions

The CPC demonstrates the advantages to be gained from constructing a large calculator of proved,
mass-produced units; from utilizing a pluggable control panel for flexibility; from input and output via
standard media; from external programming for an intermediate speed machine; from a measure of
parallel operation; and from line-printing output operating simultaneously with computing.
A few of the applications for which the CPC has been used successfully are:

Systems of ordinary differential equations.

Systems of hyperbolic and parabolic partial differential equations with two independent variables.

A few of the areas in which the above types of problems have been solved are:

Wind tunnel and phototheodolite data reduction.

Aircraft and missile design and performance calculations.

Heat flow calculations.

Neutron shielding calculations.

Internal and external ballistics, including missile flight.

Chemical dynamics.

Engine design and performance calculations.

These applications are proof of the utility of the CPC as a design and research tool. The flexibilitv of the
machine enables it to make a contribution in any field where calculating is required. Its speed and
simplicity of programming make it well suited to the
computing requirements of many diverse technical groups.

N. H. Taylor (MIT): Will the speaker make a few remarks concerning the percentage of time that the CPC
operates, and then perhaps give an idea of the replacement rate of some of yotor tubes?

L. Tatum: May I say first that the production of these machines is the work of a very large number of
people. For this reason we have asked representatives of other groups in our organization to give you
more information on matters with which they are directly concerned. On this question I would like to
introduce Mr. Dayger from our Endicott Laboratories.

J. E. Dayger (IBM): I would say our experience today is that the "down time," including preventive
maintenance, is running between 10 and 15 per cent.

I do not have the exact figures on tube replacement rate, but I will say that tube life has been a critical
factor, particularly the 6J6, which has been a major source of trouble. Other types of tubes have also
given very poor life. However, there has been some experimentation with still other types which we
believe will very materially improve our 6J6 units. A paper on IBM tube experience in detail will appear in
the April, 1952 issue of Electrical Engineering.

W. P. Byrnes (Teletype Corporation): Can you tell as a little more about the input and output of the CPC?
What is the speed of input?

L. Tatum: The input to the machine is in decimal form, read from a punched card. This card is fed into the
"accounting machine" unit, where it forms an insulator between sets of 80 reading brushes and their brass
rollers. When a brush passes through a hole in the card, it closes a circuit, giving an input pulse timed by
the position of the hole. These cards go in at the rate of 9,000 an hour.

W. P. Byrnes: Is it 80 characters per line for the output?

L. Tatum: Eighty-nine characters per
line at 9,000 lines per hour.

W. A. Ferrand (North American Aviation Company): Just what does the electromechanical memory
consist of?

J. E. Dayger : The memory unit is the same electromechanical arrangement used in the 602-A Calculator.
It is like a mechanical counter. It operates in synchronism with the card feed and has a "stacked"
readout. Each of the 16 units has a capacity of ten digits, plus sign.

F. M. Verzuh (MIT): You people have several general types of computers, the 602, 604, CPC, and your
Selective Sequence machine. How have you determined which machines to use on different types of
problems, and so on?

L. Tatum: Very generally I think that can be determined by the size of the problem and the speed with
which an answer is required. In short, you don't send a boy to do a man's job. On the other hand, if you
are watching dollars and cents, you don't send a man to do a boy's job, either. Usually we try to work
with the people who are using our equipment, to help them determine themselves when they require a
larger or faster machine. It is a problem of many angles, different each time.

L. A. Ohlinger (Northrop Aircraft Company): One of our men by the name of Reiss has developed a
technique for using the CPC to program some of its own operations. A problem formerly requiring an
instruction deck a yard high can now be done with a deck only 7 inches high. We are certainly satisfied
with this, and will be glad to describe it for anyone who might be interested.
L. Tatum: We certainly would like to hear about it. We encourage the dissemination of information such
as this.

The CPC has a 10-position 10-way "relay", by which it can be caused to emit its own programs up to and
including ten lines of programming. Is that what you use?

L. A. Ohlinger: In combination with other things.

M. H. Kraus (Eckert-Mauchly Computer
Corporation): I would like to ask more about components and reliability. Can you give us some ideas of
the relative reliability of tubes and other parts of the computer? What about diodes?

J. E. Dayger: We do not use diodes to any extent. It is principally tubes and relays and circuit breakers
that give trouble, and the main source of difficulty is still tubes.

R. E. Breisemeister (Consolidated Edison Company of New York, Inc.): Is it feasible to read information in
from the punch unit? And, from the user's point of view, is it possible to call out the correct rate
schedules from the auxiliary memory units?

L. Tatum: That depends on the size of your rate schedule. It is not only possible, it is being done on millions
of bills every month, using the 604.

R. E. Breisemeister: We have a number of 604's, but our rate schedules are so complex that no more than
two can be put into a single 60-program-step control panel. Under these conditions it is entirely
impossible to do what you are saying.

L. Tatum: Are your rate tables more complex than an eight place table of logarithms? As mentioned in
the talk, it is often possible to avoid the use of large tables altogether (such as a table of logarithms),
and cut out that memory requirement simply by generating the function at electronic speeds.

G. T. Hunter (IBM): Let us return to the first of Mr. Breisemeister's questions, about reading from cards in the
punch unit. At the present time, you cannot read from the punch unit into the calculator, basically
because the punch unit and the accounting machine unit read the cards in opposite directions.

The second question concerned storing the rate tables. So far, utility companies have not been able to
set up rates in even, geometric patterns. If that could be done, many of our accounting procedures
would be simplified. But the present rate structures must be stored, either in a memory unit internally, or in
the punched cards.