ENIAC                             U. S. Army

A REPORT ON THE ENIAC -- Part I, Chapter 1



1.1.1. What the ENIAC Does

The Electronic Numerical Integrator and Computer (ENIAC) is a high-speed electronic computing machine which operates on discrete variables. It is capable of performing the arithmetic operations of addition, subtraction, multiplication, division, and square rooting on numbers (with sign indication) expressed in decimal form. The ENIAC, furthermore, remembers numbers which it reads from punched cards, or which are stored on the switches of its so called function tables, or which are formed in the process of computation, and makes them available as needed. The ENIAC records its results on punched cards from which tables can be automatically printed. Finally, the ENIAC is automatically sequenced, i.e., once set-up (see Sections 1.1.4 and 1.4. and subsequent chapters) to follow a routine consisting of operations in its repertoire, it carries out the routine without further human intervention. When instructed in an appropriate routine consisting of arithmetic operations, looking up numbers stored in function tables, etc., the ENIAC can carry out complex mathematical operations such as interpolation and numerical integration and differentiation.

The speed of the ENIAC is at least 500 times as great as that of any other existing computing machine. The fundamental signals used in the ENIAC are emitted by its oscillator at the rate of 100,000 per second. The interval between successive signals, 10 micro-seconds, is designated by the term pulse time. The time unit in which the operation time for various parts of the ENIAC is reckoned is the addition time. An addition time is 20 pulse times or 200 micro-seconds (1/5000 th of a second). An addition time is so named because it is the time required to complete an addition. Other operations require an integral number of addition times (see Table 1-1 ).

1.1.2. The Units of the ENIAC

The ENIAC proper consists of 40 panels arranged in U shape, 3 portable function tables, a card reader, and a card punch (see PX-1-302 ). The term unit of the ENIAC is used to refer to one or more panels and associated devices (such as the portable function tables, for example) containing the equipment for carrying out certain specific related operations.

The units of the ENIAC can be classified functionally into 4 categories: arithmetic, memory, input and output, and governing. The arithmetic units include 20 accumulators (for addition and subtraction), 1 high-speed multiplier, and 1 combination divider and square rooter. There are two primary memory aspects in the ENIAC: memory for numbers and memory for programming instructions. The constant transmitter, 3 function tables, and the 20 accumulators provide numerical memory. The constant transmitter with its associated card reader reads from punched cards, numbers that are changed in the course of a computation and makes these numbers available to the computer as needed. Numbers that remain constant throughout a computation are stored on the switches of the constant transmitter or of the portable function tables and emitted when needed. The accumulators, not only function arithmetically, but also can be used to store numbers which are computed in one part of a computation and required in other parts. All units have program controls (see Sections 1.1.4. and 1.3.1.) which contribute to the programming memory in the following ways:

The kind of programming described in points 1, 2, and 3 above is described as local programming memory because it taken care of locally at each unit for that unit. The master programmer provides a certain amount of centralized programming memory by coordinating the local programming of the other units.

The input devices for the ENIAC consist of the card reader and the constant transmitter mentioned above in connection with numerical memory. The printer and card punch record computed results.

The governing units of the ENIAC are the initiating unit and the cycling unit. The initiating unit has controls for turning the power on and off, starting a computation, initial clearing, and other special functions. The cycling unit converts 100 kc sine waves emitted by its oscillator into a fundamental train of signals repeated every addition time (i.e., repeated 5,000 times per second). These signals include various sequences of pulses and a gate. The term pulse is used to refer to a voltage change (either positive or negative) from some reference level and the restoration to the reference level which takes place in a short time, between 2 and 5 microseconds. The term gate also refers to a voltage change and the restoration to the reference level but differs from a pulse in duration. In the ENIAC a gate lasts for at least 10 micro-seconds. The nomenclature for and the temporal order of the cycling unit pulses and gate are shown on PX-9-306.

Table 1-1 lists the units of the ENIAC, their operations, and operation times.

1.1.3. Representation of Digits by Pulses

With a few exceptions digits are communicated from one unit of the ENIAC to another in pulse form. Digit trays stacked above the front panels running from accumulator 1 to the second panel of the constant transmitter are used for this transmission. A digit tray has 11 wires and a ground. Each of ten wires carries the pulses for one place of a 10 place decimal number. To represent the digit n (where 0 less than or equal to n less than or equal to 9) in a particular decimal place, n pulses are transmitted over the wire associated with that particular decimal place. The 11th wire is used for the transmission of sign information. No pulses are transmitted for sign plus and 9 pulses for sign minus (see the discussion of complements below). Pulses are transmitted over all 11 conductors simultaneously.

Each digit tray is 8 feet long and runs past 4 panels of the ENIAC. A 12 point terminal at each end of a tray makes it possible to connect a number of trays serially by means of jumper cables so as to form a digit trunk passing as many units of the ENIAC as desired. Spaced at two foot intervals on the digit trays are additional 12 point terminals. Units which are to communicate with one another in the course of a computation have their digit input and/or output terminals connected by means of digit cables to these 12 point terminals on a digit trunk. A resistance load box is plugged into an unused terminal on either the first or last tray of a digit trunk. This makes it possible to connect varying numbers of units in parallel into a digit trunk. At any given time, only one 10 digit number with its sign may be transferred over a particular digit trunk. More than 1 unit may listen to this number. Through the use of more than one digit trunk, several different numbers may be transferred simultaneously (also Section 1.1.5.).

The units of the ENIAC transmit numerical information by emitting appropriate numbers of the 9 pulses or of the 1, 2, 2' and 4 pulses and the 1' pulse (see PX-9-306 ) which they receive from the cycling unit. Addition is performed in accumulators by means of 10 decade counters (see Section 1.2.2.), one counter for each decimal place of a 10 digit number, and a binary counter for sign plus (P) or minus (M). These counters are advanced one step by each pulse received. The decade counters and PM counter of an accumulator are so interconnected that provision is made for carry over. Subtraction is performed by adding the negative of the subtrahend to the minuend.

In order to avoid the necessity for cycling counters backwards, the negative of a number is represented as a complement with respect to a power of ten. Let us consider the decimal point to be located at the extreme right of an accumulator. Then the complement with respect to 10**10 of the positive number stored in an accumulator as
P + sum {i=0..9} a[i] . 10**i
is formed by transmitting 9 pulses for sign M and by transmitting the digit pulses for 10**10 - sum {i=0..9} a[i] . 10**i. Similarly, the complement with respect to 10**10 of the negative number stored as M + sum {i=0..9} b[i] . 10**i is formed by transmitting no pulses for sign P and by transmitting the digit pulses for 10**10 - sum {i=0..9} k[i] . 10**i. For example, the complement with respect to 10**10 of P0 000 023 407 is M9 999 976 593; the 10**10 complement of M9 307 504 000 is P0 692 495 000. As will be shown in the chapter dealing with the accumulator (Chapter IV), the mechanics of transmitting the digit pulses for a complement with respect to 10**10 actually consist of transmitting first the pulses for
sum {i=0..9} (9-a[i]) . 10**i
and then of transmitting one more pulse in the 10**0 decade place. The terms 9-a[i] are called nines complements.

If desired, operations may be performed on n digits where n is less than or equal to 10. Here we consider the significant figures to be located as far to the left as possible in the accumulator with the decimal point to the immediate right of the last significant figure at the right. Then, the digits for a complement with respect to 10**n are formed by emitting nines complements in all decade places and then by emitting an additional pulse in the n**th decade place from the left.

Because the counters in an accumulator are so connected that there is carry over not only from each decade counter to the one on its left but also from the 10**th decade counter to the binary counter for sign, the usual arithmetic properties obtain when complements are used in addition and subtraction. In this connection, it should be noted that even though, in the above discussion, we implied that sign P indicates a positive number and sign M a negative number, these signs may have another meaning. For example, if an accumulator holds P9 999 999 999, the carry-over to the PM counter which results when a positive number not in excess of 10**10 is added to this number, causes the accumulator to register sign M. Here the M indicates that the sum is off scale.

1.1.4. Programming by Means of Pulses, Switches, and Cables

Before a computation can be performed on the ENIAC, not only must the digit input and output terminals of the units be connected into digit trunks for the communication of numerical data, but also the units must be set up so as to recognize when they are to operate and which particular operations are to be performed. Program controls and program trays and cables are used to instruct the ENIAC in the programming requirements for a particular computation.

Each unit of the ENIAC has one or more program controls. These controls are either of the repeat or non-repeat type. Non-repeat program controls have an input terminal for a program signal and a receiver (see below and Section 1.2.4.). Repeat controls have both an input and an output terminal for a program signal and a transceiver (see below and Section 1.2.4.) or some logically equivalent device. Each program control on a unit which is capable of more than one operation or which is capable of performing operations in a variety of ways has a set of program switches.

Receivers and transceivers alike have the following properties: (1) they have two stable states which will be referred to as the normal and abnormal state; (2) when a program input signal is received, they are set into the abnormal state; (3) they are so connected (through the program switches, if any) to the programming circuits (see Section 1.3.) that, in the abnormal state, they cause the programming circuits to function appropriately; and (4) when the required routine has been completed, they are reset to the normal state so that activity in the unit ceases. When the set of instructions either set up on the program switches of a repeat control or built into the programming circuit have been completed, moreover, the transceiver of a repeat program control causes a central programming pulse (CPP on PX-9-306 ) to be emitted as a program output pulse from the program control's output terminal.

The program trays, like the digit trays are 8 feet long, contain 11 wires and a ground, and have 12 point terminals at each end, so that as many trays as desired can be jumper connected to form a program trunk. As in the case of digit trunks, too, a resistance load is plugged into an unused terminal at one end of a program trunk. Each of the 11 lines running the length of a program trunk is referred to as a program line. The program trays differ from the digit trays only in that at two foot intervals the program trays have a set of 11 two point program terminals (1 wire and a shield) instead of a 12 point digit terminal. Input and output terminals of program controls are connected to the program lines by means of program cables.

The procedure for instructing the ENIAC in its routine, then, consists of setting program switches on the units so that, when stimulated by a program input pulse, the program controls will cause the units to carry out a set of specific operations. The temporal order in which the operations are to follow one another is determined by the manner in which program pulse input and output terminals are connected to program lines. All program controls whose program pulse input terminals are connected into the same program line start to operate simultaneously when that program line carries a program signal. If one of the program controls thus stimulated is a repeat program control and if its program pulse output terminal is connected to a second program line all program controls whose program input terminals are connected to this second program line start to operate when the routine set up on the repeat program control has been completed.

The schematic diagram of Figure 1-1 illustrates the method of setting up an extremely simple computation. Each rectangle within the square that symbolizes a unit of the ENIAC represents a program control with program pulse input terminal and output terminal and possibly program switches. The instruction set up on the program switches of a program control are described inside the box representing the program control. 1.1.5. Synchronized System

All units of the ENIAC operate in synchronism with one another, i.e., all units that start to operate at the same time complete their operations either at the same instant or at times that differ by an integral number of addition times. The phrase "complete and operation" covers not only finishing the numerical processes involved in the operation but also the emission of a program output signal.

The basis of this synchronization is the fundamental train of pulses and a gate emitted by the cycling unit and delivered to all units of the ENIAC by means of a set of jumper connected trays called the synchronizing trunk. These trays are physically the same as the digit trays. The central programming pulse (CPP) emitted by the cycling unit in pulse time 17 of every addition time cycle plays a major role in such synchronization since the program output pulse which a repeat program control emits upon the completion of a program results from allowing a CPP to pass. The units of the ENIAC, moreover, have been so designed that in order to complete their operations they require the pulses and gate of either one addition time cycle or of an integral number of addition time cycles.

Even though the electromechanical devices used with the ENIAC, the reader and the card punch, do not take an absolutely definite number of addition time cycles to complete their operations, these units have been integrated into the synchronized system since they have been provided with program controls which emit a CPP as a program output pulse. Units of the ENIAC can even operate in parallel with the card reader since the reader does not emit a program output pulse signifying the completion of reading until it has received as an interlock pulse a program output pulse from some other unit of the ENIAC to indicate that the sequence carried on in parallel with reading has been completed.

In this report incidentally, we will follow the convention that an addition time has its origin 3 pulse times after the CPP as shown on PX-9-306. This means that we will talk about a program's being stimulated at the end of addition time i and being carried out in addition time i + 1 by means of the cycling unit pulses and gate emitted during addition time i + 1.

Because the units of the ENIAC operate in synchronism with one another and because multiple digit and program trunks have been provided, the operator can schedule parallel operations when planning the set-up of a problem. For example, the multiplier can be operating while several accumulators are performing additions and subtractions and while the divider is finding a quotient. Naturally the scheduling of parallel operations requires that the operator plan for the use of separate digit trunks for the various operations and, in some cases, requires that attention be given to the number of addition times needed for the operations.


The circuits of the ENIAC are designed around a relatively small number of basic electronic elements. The following discussion, while wholly inadequate to convey any real knowledge of vacuum tubes or their action, is intended to enable the reader to obtain a formal acquaintance with some of the phenomena and terminology connected with the ENIAC.

The simplest tube used is the triode so called because it has 3 characteristic elements, namely the cathode (surface which gives off electrons), the plate or anode (surface which receives electrons), and the grid (which controls the current passing through the tube). In addition, there is a heater to bring the cathode to the temperature required for it to emit electrons. Sometimes, 2 triodes are housed in one envelope. We shall refer to these as two tubes. Other tubes used in the ENIAC are multigrid tubes, for example, the pentode which has 3 grids.

To say that a tube is "on" or conducting means that with the usual convention of sign, current is flowing from the plate to the cathode. This implies that the plate is at a slightly higher voltage than the cathode, but that this voltage drop is trifling compared to the drop when the tube is "off" or non-conducting. Thus, if a tube is turned "off", i.e., changes from conducting to non-conducting, the voltage of the plate is raised and that of the cathode is lowered. Hence the plate emits a positive signal and the cathode one that is negative. If the tube is turned on these signs are reversed. Within appropriate limits, a tube is conducting if its grid (or grids) is (or are) kept above a certain voltage, non-conducting if below that voltage. Thus a tube is turned on by applying a positive signal to its grid (or grids), turned off by a negative signal.

In all cases, vacuum tubes in the ENIAC circuits are used only as on-off devices instead of as amplitude sensitive devices, i.e., the presence or absence of a signal depends on whether a tube is conducting or not-conducting and not on any measured magnitude of current and voltage. Furthermore, the machine has been so designed that signals are not constantly being degenerated but instead are regenerated from time to time out of the fundamental train of pulses and a gate emitted by the cycling unit.

1.2.1. Single Tube Elements Buffers and Cathode Followers

Buffers and cathode followers are normally non-conducting tubes with a single input and a single output. When a positive signal is applied to the grid of a buffer, the output, taken off the plate side, is negative. In the cathode follower, where the output is taken off the cathode, the application of a positive signal to the grid results in the emission of a positive signal.

When the outputs of a number of buffers or cathode followers are connected together to a common load resistor, the resulting circuit provides for the logical "or" since when any one of the buffers or cathode followers receives a positive signal, the circuit emits a negative or positive signal respectively. Inverters

An inverter is a tube whose grid is normally at a positive potential so that the tube is conducting. When a negative signal, applied to the grid, drives the tube to cut off, the output taken off the plate, is a positive signal. A positive signal is necessary to operate a gate tube as will be described in Section Gate Tubes

A gate tube is a multiple grid tube with two inputs and an output normally taken off the plate. A gate tube emits a negative signal when both of its input grids are brought from a negative cut off voltage to a positive voltage. Thus, a gate tube is used to note the coincidence of two positive signals and hence corresponds to the logical "and".

A positive signal applied to one grid of a gate tube is said to "open the gate", since when this happens a positive signal reaching the other grid makes the tube conduct and hence emit a signal. The term "gate" is used in two senses: In one it means a gate tube (as described above) and in the other, the signal, lasting 10 microseconds or longer, which is used to open a gate tube (see Section 1.1.2.).

1.2.2. Multi-Tube Elements Flip-Flops

The basic electronic memory device of the ENIAC is the flip-flop. A flip-flop consists essentially of a pair of triodes so connected that at any given time only one of the pair can be conducting. When a certain one of the tubes is conducting (and the other is not), the flip-flop is said to be in the normal state; when the other tube is conducting (and the first is not), the flip-flop is in the abnormal state. A flip-flop has two inputs and two outputs. A pulse received on one input (the set input), throws the flip-flop into the abnormal state in which state it remains until restored to the normal state by a pulse received at its second (or reset) input. When the flip-flop is in the normal state, one output is positive and the other negative. In the abnormal state, the polarity of its outputs is reversed.

Corresponding to each flip-flop in the ENIAC, there is a neon lamp. The neon lamp is so connected to its corresponding flip-flop that, with the exception of some neons in the divider and square rooter, the neon is lit when the flip-flop is in the abnormal state. Drawing PX-10-302 indicates when the neons in the divider and square rooter are lit.

These neons provide one of the most important visual checks on the operation of the ENIAC. In addition to the continuous mode of operation at the 100 kc rate, the ENIAC has 2 special modes of operation, 1 addition time and 1 pulse time operation, which permit the operator without disturbing the flip-flop memory, to stop the ENIAC at some point to examine the neons and, thus, to determine whether or not the proper sequence of events is taking place. Counters

The counters of the ENIAC, in general, consist of a number of flip-flops arranged in sequence and interconnected so that the following characteristics result:

Each flip-flop of a counter is called a stage and the reception of a pulse at a counter is said to advance the counter to the next stage. All counters in the ENIAC are ring counters, i.e., the first and last stages are so connected that if the counter is in its last stage and a pulse is received, the last stage is reset and the first stage is flipped into the abnormal state.

In accumulators, a 10 stage (decade) ring counter is used for each place of a 10 place number. Each stage of a decade counter corresponds to one of the digits between 0 and 9 inclusive.

The sign of a number is handled by means of a PM counter which differs somewhat from the other ENIAC counters. The PM counter has 2 tubes, one for sign P and for sign M. Each tube, here, is called a stage. The two tubes are so connected that only one of them can be conducting at a given time. Each pulse received cycles the PM counter 1 stage. Notice, that while the PM counter uses 2 tubes as does a flip-flop, it differs from an ordinary flip-flop in that it has but one input. The PM counter is also a ring counter.

Since each stage of a counter (other than the PM counter) is a flip-flop, one or both of its outputs are available for controlling other circuits. In the decade counters mentioned above, for example, one set of such outputs (which are referred to as the static outputs) can be used to deliver to the printer information about the number stored in a given accumulator. Ring counters are also used in the programming circuits of most ENIAC units. Here the outputs of the various stages are taken to gates. Standard Transmitters

To meet the power needs resulting from the large capacitance associated with the interconnection circuits (digit trays, program trays, digit cables, etc.) and the high speed with which pulses are transmitted in the ENIAC, and also to provide positive output pulses (since positive pulses are required to operate gate tubes in the receiving units), the pulse outputs of all units (except the digit pulse output of the high-speed multiplier and the divider and square rooter) are passed through standard transmitters. A transmitter consists essentially of an inverter tube whose output is fed to the grids of 2 amplifying tubes which have their plates connected in parallel. The cathodes of the amplifier tubes are connected in parallel to ground through a resistor and the output of the transmitter is taken off between cathode and ground. As previously mentioned, varying numbers of output transmitters can be connected to the same program line or digit trunk since a load resistor is not built into each transmitter but is instead plugged into the trunk line.

The answer output circuits of the high-speed multiplier and of the divider and square rooter consist of inverter tubes with built-in load resistance. Therefore, the answer output terminals on these units are connected directly to the appropriate digit input terminals through a cable without resistance load or through a digit tray with no load box plugged into it. No other units may be connected in parallel into such a digit tray. Receivers and Transceivers

Receivers and transceivers are used in the ENIAC to note the reception of a program pulse and to activate the programming circuits when a program pulse is received. As mentioned earlier, receivers are found in non-repeat program controls and transceivers in repeat program controls. In the divider and square rooter and in the high speed multiplier, however, there are a few examples of receivers which are not parts of program controls. Also, the reader, printer, and initiating pulse program controls are exceptional repeat program controls in that they do not contain transceivers.

To describe and illustrate the use of receivers and transceivers we shall refer to the program controls of an accumulator in which these devices are used in typical fashion (see drawing PX-5-304).

The receiver consists of an input buffer (66), a flip-flop (64, 65), an inverter (the left hand tube numbered 62), a cathode follower (63), a buffer (62), and a reset gate (61). An input pulse received at the program pulse input terminal associated with a receiver, passes through buffer 66 and sets the flip-flop of the receiver. The normally positive output of the flip-flop passes through the inverter and cathode follower and then through a program switch which routes it to a set of gates. Similarly, the normally negative output of the flip-flop, through buffer 62, is routed through program switches to another set of gates. Notice that before the reception of a program pulse, the outputs of the receiver are such that the gates remain closed; when the receiver is set, its output signal open the gates to which they are delivered and cause the unit to carry out the routine specified on the associated program switches. The CPP, which occurs 20 pulse times after the program input pulse which sets the receiver, passes through gate 61 (held open by the normally negative output of the flip-flop through buffer 62) and resets the receiver. Thus, a receiver is always reset one addition time after it has been set. Notice that the same receiver must not be stimulated on successive addition times since one addition time after a receiver is set it attempts to reset itself.

A transceiver, like a receiver, has an input buffer (69), a flip-flop (66, 67), an inverter (65), cathode follower (64), and a reset gate (68). The transceiver, however, has several additional buffers (61), and (63), an extra gate (62) and inverter (65) and a standard transmitter (70, 71, 72). The transceiver elements which resemble receiver elements function in precisely the same fashion. The resetting of a transceiver, however, differs from that of a receiver. Transceivers usually operate in conjunction with a program ring counter or, as in the accumulator case, with a repeater ring counter. In the illustrative example being discussed here, one output of the transceiver is taken to gate K50. When the transceiver is set, gate H50 is open so that a CPP is allowed to pass through and cycle the repeater ring (64-72) each addition time that the transceiver remains in the abnormal state. Each point on the repeat switch (used to specify the number of times in succession that an operation is to be repeated) of an accumulator repeat program control is connected to one stage of this ring. When the repeater ring reaches the stage specified on the repeat switch, gate 62 receives a positive signal from that stage of the ring. The coincidence of a signal from the repeater ring and from the normally negative output of the flip-flop causes gate 62 to emit a signal which is inverted into a positive signal by inverter 65. The output of tube 65, through the buffers 63, goes on to stimulate certain clearing actions in the accumulator, and delivered to gate 68, allows the next CPP to pass through this gate. The output of gate 68 not only resets the transceiver but also passes through the standard transmitter (70, 71, 72) to be emitted from the program pulse output terminal of the program control. Notice that a transceiver remains set throughout the number of addition times required to complete the program specified on its associated switches, is reset at the end of the addition time in which the program is completed and emits a program output pulse when it is reset. At least one addition time should intervene between the transmission of a program output pulse and the next stimulation of a repeat program control in order to allow the control's transceiver to reset itself. Plug-In Units

Wherever possible the design of elements of the ENIAC has been standardized and these elements have been used repeatedly in various units. Furthermore, to increase the ease of testing and replacing faulty components, many of these standardized elements have been designed as plug-in units.

The receivers and transceivers are of this nature. Each receiver plug-in unit has two receivers. A transceiver plug-in unit has just one transceiver. Another type of plug-in unit is the accumulator decade plug-in unit which consists of a decade ring counter, a pulse standardizer for shaping pulse input to the decade, carry over circuits, output transmitters, etc. In all, there are a total of 20 different types of plug-in units. These are enumerated on PX-2-123 where references are also made to detailed drawings of the plug-in units.

1.3. CLASSIFICATION OF ENIAC CIRCUITS: Numerical and Programming

The circuits of most ENIAC units can be conveniently described according to 2 classifications, numerical and programming. The numerical circuits are those which operate on the pulses or static signals which represent digits or sign. For example, in an accumulator the decade and PM counters or in the printer the tubes which are set up by the static outputs of counters whose information is to be punched on a card are classified as numerical circuits. The programming circuits are concerned with the following activities:

In the case of certain units a further subdivision of the programming classification into program controls (see Section 1.1.4.) and common programming circuits is desirable. The program controls, then, are charged with activities 1 and 3 above and the common programming circuits with activity 2. 1.3.1. Program Controls

The accumulator, high speed multiplier, divider and square rooter, and function table have multiple sets of program controls. These program controls include not only a receiver or transceiver, program pulse input terminal and possibly program pulse output terminal but also program switches for describing the procedure to be followed when the program control is stimulated. In each of these units, any one of the program controls, when stimulated by the reception of a program input pulse, can activate the common programming circuits. The buffers and cathode followers in the receivers and transceivers of these program controls serve to isolate one program control from the others. In the constant transmitter which has a total of 30 program controls each consisting of a transceiver, program pulse input and output terminals, and a program switch, each group of six program controls operates a set of programming circuits in common. In the remaining ENIAC units the program controls and programming circuits are closely integrated with one another.

If a unit has more than one program control, in general, only one control should be operating at any given time so that inconsistent demands are not made on the common programming circuits or the numerical circuits of the unit.

1.3.2. Common Programming Circuits

In the previous section it was pointed out that the stimulation of a program control of a unit results in activating the unit's common programming circuits. It should be pointed out that in a few cases the common programming circuits of a unit can be entered without going through a program control. For example several accumulators are used in conjunction with the high speed multiplier. These accumulators receive components of the product as they are emitted from the multiplier. Ordinarily, to stimulate reception of a number, a program input pulse must be delivered to an accumulator program control having its program switch set to a receive setting. Then, the output of the receiver or transceiver of the program control activates the programming circuits so that reception takes place. The multiplier, however, has been designed so that it contains receivers which are set when the associated product accumulators should receive components of the product. These receivers in the multiplier are directly connected to the common programming circuits of the associated accumulators so that reception is stimulated when the multiplier's receivers are set even though no program controls on the accumulators are stimulated. Several such examples of direct entry into the common programming circuits of accumulators are to be found in the chapters dealing with the high speed multiplier and the divider and square rooter.


In this portion of the Technical Manual for the ENIAC, Part I, much emphasis will be given to the planning of computations to be performed.

1.4.1. Preparatory Formulation of the Problem

Starting with the mathematical equations which describe a problem, such as the total or partial differential equations for example, the operator must first break the equations down into a form involving the arithmetic operation of which the ENIAC is capable. Another necessary preliminary step consists of planning for the storage of numerical data. The initial conditions and other constants basic to the computation will be given to the ENIAC by means of punched cards and the setting of switches on the constant transmitter. Arbitrary function and other constants can be stored in the function tables. Numbers formed in the course of a computation and required in subsequent parts of a computation can be stored in accumulators. Should the quantity of numbers to be stored for further computation exceed the accumulator storage capacity, such numbers can be punched on cards by the printer unit and later can be inserted into the ENIAC again by means of the card reader and constant transmitter.

1.4.2. Planning the Programs and Program Sequences

For each arithmetic operation in the computation, one or more of the ENIAC's program controls will have to be set-up by the connection of program cables and possibly the setting of program switches. For example, if the numbers a and b are each stored in an accumulator and if a+b is to be formed in the accumulator containing b, then the accumulator which stores a, must be instructed to transmit and the one storing b, must be instructed to receive the transmitted number.

The instructions given to a single program control are referred to as a program. It is possible for a number of programs to be carried out in different units simultaneously. In general, however, only one program at a time can be performed in a given unit.

A unit carries out the program set up on one of its program controls when a pulse is delivered to the program control's program pulse input terminal, i.e., when the program control is stimulated. If a number of programs are to be performed in parallel, all of the program controls involved must be stimulated either by a pulse carried on the same program line or by pulses from different program lines which are activated at the same time.

The operator ties individual programs together into a program sequence in which one collection of programs is automatically stimulated upon the completion of another collection of programs by delivering the program output pulse of the program control used for a program of the first collection to a given program line and by picking up the stimulating pulse for all programs of the second collection from that same program line (see Section 1.1.4.).

1.4.3. Programming on Higher Levels

Certain program sequences of a computation may have to be iterated a number of times. The iteration of a program sequence into a program chain is accomplished through the use of the master programmer. This unit can also link together a number of chains or chains and sequences into a new program sequence which itself is to be iterated into a chain, etc.

The master programmer has a number of program controls each of which has a single input for program pulses and multiple program pulse output terminals. Each time a program input pulse is received, a pulse is emitted from one of the output terminals. The circuits of each control cause a pulse to be emitted from a given terminal a certain number of times which may be specified by the setting of a switch or in some other way and then to be emitted from another output terminal. Thus, the iteration of a program sequence into a chain can be accomplished by delivering the final program pulse of the sequence to a master programmer control and by picking up the initial pulse for the sequence from the program line to which the appropriate master programmer output terminal is connected. Another sequence or chain is linked to the first chain by picking up its initial pulse from the program line to which a second output terminal of the master programmer is connected, etc.

1.4.4. Special Linking of Program Sequences by Magnitude Discrimination

Not only can programs be linked together sequentially as described above in Sections 1.4.2., and 1.4.3. but, in addition, the ENIAC can be instructed to choose one of several program sequences depending on the magnitude of some number. This type of programming is referred to as magnitude discrimination.

In one form of magnitude discrimination, two numbers, a and b, are compared. If a is greater than or equal to b, one program sequence is followed and in the opposite case, a second program sequence is stimulated. It is also possible to carry out more extensive magnitude discrimination programs in which the choice of program depends on a particular digit in some decimal place of a number.

Magnitude discrimination is accomplished by means of an accumulator and the master programmer. In such programs which will be discussed in greater detail in Chapters IV and X, sign or digit pulses are used to stimulate program controls.


In addition to the 40 panels, the portable function tables, the card reader and card punch which constitute the ENIAC proper, the ENIAC has certain associated ventilating, power, and testing equipment.

1.5.1. Ventilating Equipment

The ENIAC's 18,000 vacuum tubes generate a considerable amount of heat. An elaborate system of fans and blowers is used to drive off this heat. Each panel, moreover, has a thermostat which prevents the temperature inside the panel from exceeding 115 degrees Fahrenheit by turning off the power to the ENIAC if this limit is exceeded. The ventilating system uses 240 V, three phase unregulated power.

1.5.2. Power Equipment

In addition to the a-c power for the heaters of its tubes and for the card reader and card punch, the ENIAC requires 78 different d-c voltages. These requirements are met in the following way:

Two hundred forty volt, three phase, regulated a-c is taken to power and auto-transformers which convert it into 110 V, 3 phase a-c. This power is carried on 3 buses in a power trough located along the front and bottom of the ENIAC panels. From this trough, the heaters and also the outlets below constant transmitter panel 3 and printer panel 2 are supplied with a-c power as long as the ENIAC's a-c power is turned on. The outlets below the other ENIAC panels are always alive.

The 240 V, 3 phase, regulated a-c is also taken to gas rectifier tubes in the ENIAC's 29 power supplies. The filaments of these tubes use 240 V, 3 phase, a-c. Through the use of bleeders the 78 d-c voltages are obtained. These voltages are carried to the ENIAC units by means of the d-c cables in the power trough mentioned above.

The power equipment is housed in 7 panels apart from the ENIAC and electrolytic condensers for filtering the d-c from the rectifier circuits are located in three condenser cabinets.

Only the control circuits for the power supplies are discussed at any length in this report (see Chapter II). The ENIAC MAINTENANCE MANUAL can be consulted for further details.

1.5.3. Special Test Equipment

A number of special testing devices are used with the ENIAC. These include a tube tester, a hi-pot test unit, a static tester, and a test table with its own power supplies, synchronizing unit, variable oscillator, and oscilloscope.

The test table and its associated equipment are used to examine the 20 different types of plug-in units. The synchronizing unit, variable oscillator, and a device for varying d-c voltages make it possible to reproduce the operating conditions found in the ENIAC or to generate certain test conditions. The equipment associated with the test table is portable so that it can also be used for testing the ENIAC proper.

The static tester is essentially an adaptor which plugs into the d-c cables so as to make possible measurements of the voltages on tube pins. The hi-pot test unit is used to detect insulation faults in cables. The standard tube tests can be made on the types of tubes used in the ENIAC by means of the tube tester.

In addition to the above special testing devices, the standard electrical measuring instruments are used for the ENIAC. Certain meters have also been built into the initiating unit (see Chapter II) and the cycling unit includes an oscilloscope for rather rough examination of the fundamental train of signals.