After we subtract 3 the third time, the result becomes negative,-6; in the next column, after we add 3 twice, the result becomes 0. The quotient is
- _
- 32, which is the same as 30 - 2, or 28;
and 3 × 28 is 84. Thus the process checks.
Consulting a Table
Eniac has three Function Tables. Here you can store numbers or instructions for the machine to refer to. Each Function Table has 104 arguments ([see Supplement 2]). For each argument, you can store 12 digits and 2 signs that may be plus or minus. This capacity can be devoted to one 12-digit number with a sign, or to two 6-digit numbers each with a sign, or to six 2-digit instructions. The three Function Tables are panels 43, 44, and 45. To put in the numbers or instructions, you have to go over to these panels and set the numbers or instructions, digit by digit, turning dial switches by hand. It is slow and hard to do this right, but once it is done, Eniac can refer to any number or instruction in any table in ¹/₁₀₀₀ of a second. This is much faster than the table reference time in any other of the giant brains built up to 1948.
Programming
We said above that Eniac has over 100 control lines or program trunks along which instructions can be sent. These instructions are expressed as pulses called program pulses. Now how do we make these pulses do what we want them to do? For example, how can we instruct Accumulator 11 to add what it holds into Accumulator 13?
On each unit of Eniac there are plug hubs or sockets (called program-pulse input terminals) to which a program trunk may be connected. A program pulse received here can make the unit act in some desired way. On each accumulator of Eniac, we find 12 program-pulse input hubs. Corresponding to each of these hubs, there is a nine-way switch, called a program-control switch. The setting of this switch determines what the accumulator will do when the program-pulse input hub belonging to the switch receives a program pulse. For instance, there are switch settings for: receive input on the α line, receive input on the β line, etc.; and transmit output on the add line, etc. There is even a switch setting that instructs the accumulator to do nothing, and this instruction may be both useful and important.
Now, in order that Accumulator 11 may transfer a number to Accumulator 13, we need: (1) a digit tray, say B, for the number to travel along; (2) a program trunk line, say G3, to tell Accumulator 11 when to send the number and Accumulator 13 when to receive it; and (3) certain plugging as follows:
1. We plug from program trunk G3 into a program-pulse input hub, say No. 5, of Accumulator 11;