ENIAC                             U. S. Army

A Logical Coding System Applied to the ENIAC


We have seen that there are five kinds of storage places used in the ENIAC. Numbers may moved between these places but not arbitrarily. From a card in the reader numbers may only be sent to the constant transmitter; from the constant transmitter numbers may only be sent to 1 of the 20 accumulators; likewise numbers in the function tables can only go to the accumulators; numbers in accumulators may be sent to other accumulators or from certain special accumulators to the printer; from the printer the numbers may only be taken by carrying away the IBM cards. It is accordingly clear that a considerable number of the 60 available orders must provide for moving numbers about. In fact there are 50 orders used for this purpose. Before describing them we should remark that actually 67 orders are set up on the ENIAC making 2 sets of orders possible; 53 are common to both sets. Of the dual orders we shall name those of the first set 73, 74, 91, 92, 93, 94, 95, and those of the alternate set 73a, 74a, 91a, 92a, 93a, 94a, 95a.


The order which sends the 8 10-digit numbers from the reader to the constant transmitter we call the read order, order 62 (code name: Rd). It requires a little over a half second to complete.


Since there are 10 10-digit numbers in the constant transmitter (In addition to the 8 coming from the reader, there are 2 fixed 10-digit numbers set with switches.) and 20 accumulators, 200 orders would be required to make it possible to send any number immediately to any accumulator. It would be possible to have 1 order which caused all 10 numbers to go to a specific set of 10 accumulators. However, this would mean that all 10 accumulators had to be clear before the order could be given. The compromise agreed upon for these 2 sets of 60 orders is a set of 5 "constant transmitter" orders, 80-84 (code names: AB, CD, EF, GH, JK), each of which sends 2 numbers, A&B, C&D, E&F, G&H, or J&K to accumulators 11 and 15 respectively. J&K store the 2 10-digit arbitrary constants.

Consider order 80 for example: From Table 2.I we see that order 80 starts with pulse D-7 which via the pulse amplifiers blossoms into pulses D-4, B-3, C-5, J-3, D-6, J-2, and E-1.

Figure 3.2

From Figure 3.2 we see that pulse D-7 causes the constant transmitter to send out B, then A on digit tray one (see digit tray hook-up). B-3 causes accumulator 15 to receive B from digit tray 1, adding it to its previous contents; J-3 causes accumulator 11 to clear, then receive A from digit tray 1. C-5 causes the basic sequence for the next order to start while A and B are moving from the constant transmitter to accumulators 11 and 15. This is a 7 add-time order.


There are, in the first and alternate sets of 60 orders, 39 and 38 orders respectively which move numbers from one accumulator to another. We shall discuss first the 34 orders in this category common to both sets.

There are 16 orders 01, 02, 03, 04, 05, 10, 11, 12, 13, 14, 15, 21, 22, 23, 24, 25, controlling accumulators 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 14, 15, 17, 18, 19 respectively which we may name "accumulator X listen", "X[l]", orders. Of these, order 0.1 is typical. Order 01 starts (see Tables 2.I and 2.II) with S-1, which leads to C-1, C-5, D-6, J-2, and E-1. S-1 (see Figure 3.3) causes accumulator 1 to clear and then receive from digit tray 2; C-1 stimulates a dummy in the constant transmitter whose only purpose is to delay J-1 which causes accumulator 15 to transmit positively onto digit tray 2 then clear; C-5, of course, starts the basic sequence for the next order. The effect, then, or order X[1] is for accumulator X to clear, then receive from accumulator 15 which then clears.

Figure 3.3

Order 20 (code name: 13[l]) differs from these orders in that accumulator 13 does not clear before receiving from accumulator 15.

There are likewise 16 orders, 31, 32, 33, 34, 35, 40, 41, 42, 43, 44, 45, 51, 52, 53, 54, and 64 controlling accumulators 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 14, 15, 17, 18, and 19 respectively, which we may name "accumulator X talk" or "X[t]" orders. The effect of X[t] is for accumulator X to send its number positively to accumulator 15 with both accumulators holding. This leads to addition in accumulator 15.

Order 50 (code name: 13[t]) is similar except that accumulator 13 clears after sending.

In the alternate set of orders, orders 91a, 92a, 73a and 74a (code names: 20[l], 20[t], 6[l], and 6[t]) are used for accumulator 20 listen, accumulator 20 talk, accumulator 6 listen, and accumulator 6 talk respectively.

In the first set of orders, accumulator 6 is treated essentially like 4 smaller accumulators: respectively digits 1,2,3; digits 4,5,6; digits 7,8; and digits 9,10,11. Order 92 (code name: 6(11,10,9)) adds the numbers in accumulator 6(11,10,9) and accumulator 15(11,2,1) and leaves the sum in both. Order 93 (code name: 6(8,7)) adds the numbers in accumulator 6(8,7) and accumulator 15(2,1), leaving the sums in accumulators 6(8,7) and 15(2,1). All these accumulator orders take 7 add-times. To control accumulator 20, order 91 (code name: 18 <--> 20) is provided which takes 9 add-times and interchanges the numbers in accumulators 18 and 20 via accumulator 15.


Any order which sends a number to accumulator 6(3,2,1) we shall call (with J. von Neumann) a transfer order because the next order will automatically be taken from a different part of the function table, i.e., the control is transferred from one address to another. Order 73 (code name: 6R3) is the simple transfer for the first set. It causes accumulator 6(3,2,1) to clear and receive the number in accumulator 15(3,2,1) and then clears accumulator 15. We might call order 74 (code name: 6R6) the transfer with a rider. It causes accumulator 6(6,5,4,3,2,1) to clear, then receive the number in accumulator 15(6,5,4,3,2,1) and then clears accumulator 15. The purpose of this order is to make it possible to store an extra address in accumulator 6(6,5,4). Both of these transfer orders take 13 add-times.


The first system has four function-table-to-accumulator orders and the alternate system has five, of which two are transfers. Two of these orders are common to both sets. The first is order 72 (code name: FT). Accumulator 11 is cleared, then the function table transmits 12 digits and 2 signs as F (address stored in accumulator 8(3,2,1)). Accumulator 11 receives the left sign and the left 6 digits at far left, and accumulator 15 receives the right sign and the right 6 digits at far left. The argument in accumulator eight is then increased by one. The time consumed is 13 add-times.

Order 70 (code name: N2D) we call the next 2 digits order. It operates to send accumulator 15(2,1) the two digits following the order 70 in the function table. Fourteen add-times are required.

In the first system the orders 94 and 95 (code names: N4D, N6D) operate similarly to send the next 4 and next 6 digits to accumulator 15 in 20 and 26 add-times respectively.

The alternate system contains an order 93a (code name: N3D8) which sends, in 20 add-times, an address from the next 2 order positions in the function table to accumulator 8(3,2,1) to be used as address for order 72. The first digit in the next 2 order positions is added to the digit in accumulator 8(4); accumulator 8(3,2,1) is cleared before receiving.

In the alternate system the transfers 94a and 95a (code names: N3D6, N6D6) send in 20 or 26 add-times 1 or 2 addresses from the next 2 or 3 order positions in the function table to accumulator 6. In order 94a, as in 93a, the first digit in the next 2 order positions is added to accumulator 6(4).


The last transmission order, order 61 (code name: Pr), causes the next IBM card to move into position in the printer and then the numbers in accumulators 1, 2, 15-20 to be printed on the card and held in the accumulators. One second is required.


It is not quite true that each of the 50 transmission orders we have just described accomplishes transmission only. All the "X[t]" orders, for example, are also addition orders; the transfer orders perform the important operation of shifting the control. The following 10 orders, however, are more explicitly operative.