The EDSAC (electronic delay storage automatic calculator) is a serial electronic calculating machine working in the scale of two and using ultrasonic tanks for storage. The main store consists of 32 tanks, each of which is about 5 ft. long and holds 32 numbers of 17 binary digits, one being a sign digit. This gives 1024 storage locations in all. It is possible to run two adjacent storage locations together so as to accommodate a number with 35 binary digits (including a sign digit) ; thus at any time the store may contain a mixture of long and short numbers. Short tanks which can hold one number only are used for accumulator and multiplier registers in the arithmetical unit, and for control purposes in various parts of the machine.
A single address code is used in the EDSAC, orders being of the same length as short numbers. The complete order code is as follows:-
A n | Add the number in storage location n into the accumulator. |
S n | Subtract the number in storage location n from the accumulator. |
H n | Transfer the number in storage location n into the multiplier register. |
V n | Multiply the number in storage location n by the number in the multiplier register and add into the accumulator. |
N n | Multiply the number in storage location n by the number in the multiplier register and. subtract from the accumulator. |
T n | Transfer the contents of the accumulator to storage location n and clear the accumulator. |
U n | Transfer the contents of the accumulator to storage location n and do not clear the accumulator. |
C n | Collate the number in storage location n with the number in the multiplier register, i.e. add a "1" into the accumulator in digital positions where both numbers have a "1", and a "0" in other digital positions. |
R 2^{n-2} | Shift the number in the accumulator n places to the right; i.e. multiply it by 2^{-n}. |
L 2^{n-2} | Shift the number in the accumulator n places to the left; i.e. multiply it by 2^{n}. |
E n | If the number in the accumulator is greater than or equal to zero execute next the order which stands in storage location n; otherwise proceed serially. |
G n | If the number in the accumulator is less then zero execute next the order which stands in storage location n; otherwise proceed serially. |
I n | Read the next row of holes on the tape and place the resulting 5 digits in the least significant places of storage location n. |
0 n | Print the character now set up on the teleprinter and set up on the teleprinter the character represented by the five most significant digits in storage location n. |
F n | Place the five digits which represent the character next to be printed by the teleprinter in the five most significant places of storage location n, |
X | Round off the number in the accumulator to 16 binary digits. |
Y | Round off the number in the accumulator to 34 binary digits. |
Z | Stop the machine and ring the warning bell. |
It will be seen that most orders consist of a functional part which defines the operation, and a numerical part which defines a storage location; some orders, however, consist of a functional part only.
Ordinary 5-hole punched tape of the kind used in telegraphy is used for input. Each row of holes represents a 5-digit binary number and the basic input operation is to transfer this number to the store. Similarly, the output mechanism is a teleprinter, and the basic output operation is to transfer a 5-digit binary number to the printer, and to print the corresponding character. The teleprinter code is chosen so that binary numbers up to nine are printed as the corresponding figures, and a similar code is used for input. This enables the operation of conversion to and from the decimal system to be programmed as part of the calculation.
The purpose of the F order is to enable the operation of the printer to be checked. Apart from this no special checking facilities are provided in the EDSAC, it being left to the programmer to incorporate in the programme such checks as he considers necessary.
When the machine is in operation, orders are executed automatically in the order in which they stand in the store. The only exception is when a conditional order (E or G) is encountered, and the condition is satisfied; the next order to be executed is then the one which stands in the storage location specified in the conditional order.
Count is kept of the orders as they are executed by means of a short tank - known as the sequence control tank - which has associated with it an adding circuit through which unity is added to the number stored in the tank each time an order is executed. During a conditional order (when the condition is satisfied) unity is not added, but instead the number in the tank is replaced by the numerical part of the conditional order.
The control sequence of the machine falls into two parts. In stage I, an order is transferred from the location in the store given by the number in the sequence control tank to a short tank known as the order tank. In stage II the order in the order tank is executed.
The various constituent units of the machine store, arithmetical unit, input unit, output unit, sequence control tank., and order tank - are connected together through gates, so that the interconnections proper to each successive part of the control sequence can be made by opening the appropriate gates. The gates are operated by waveforms supplied either by the main control unit, or by a part of the machine given, for the purpose of this description, the name order interpreter. In the machine itself the order interpreter consists of a number of separate units. In the diagrams that follow, wires which carry pulses are shown as continuous lines, while those which carry control waveforms are shown dotted.
Figure 1 shows the state of the machine during Stage I of the control sequence, it being assumed that the storage location specified by the number in the sequence control tank is in tank 1 of the main store. The wire along which the order passes from this storage location to the order tank is shown by a heavy line in the diagram, and similarly the wires along which the control waveforms pass are shown as heavy dotted lines. The location section of the order interpreter receives the number in the sequence control tank, and proceeds to emit a waveform which opens the output gate of tank 1. There are 32 orders (or short numbers, or a mixture of orders, short numbers and long numbers) circulating in the tank, and this gate is opened as soon as the required number becomes available and closed again when it has passed through. In this it is treated differently from the other gates in the machine which remain open or closed during the whole or stage I; the difference is indicated in the diagram by the different form of shading used. The switching and timing necessary for the operations detailed above are carried out within the order interpreter.
Stage II is very similar to stage I except that the type of operation performed is not restricted to a simple transfer from the store to the order tank. During stage II the order tank is connected to the order interpreter in place of the sequence control tank, and the numerical part of the order is dealt with in the same way as the number in the sequence control tank during stage I. A new feature, however, is that the function section of the order interpreter comes into action, and interprets the functional part of the order; it proceeds to emit waveforms which (a) set up connections between the units ready for the passage of numbers and (b) place the arithmetical unit (or input or output units as the case may be) in a state of readiness for executing the order. Figure 2 shows the various gates set up for the execution of an add order calling for the transfer of a number from tank 2 of the main store to the arithmetical unit. One of the control wires passing from the order interpreter to the arithmetical unit is shown as a heavy (dotted) line to indicate that the arithmetical unit has been prepared for some operation such as addition.
The above description has been written with the case of an arithmetical order involving the store in mind. In the case of other orders (e.g. left or right shift, or a conditional order) stage II is simplified in that the location section of the order interpreter is not used. For example, during stage II for a conditional order, the order tank is connected to the sequence control tank through the gate shown in the diagram and the whole order transferred from one tank to the other. When it is in the sequence control tank, only the numerical part is used, the function part being irrelevant.
From what has been said, and from an examination of the order code, it will be seen that the input mechanism is controlled by programme orders. Unless, therefore, there are some orders in the store to begin with, nothing can be taken in through the input, and the machine cannot start. For this reason there is a sequence of orders - known as initial orders - permanently wired onto a set of uniselectors (rotary telephone switches). These orders can be transferred to the store by pressing a button.
There is considerable latitude in the choice of the initial orders, although once they have been wired onto the uniselectors it is not easy to change them. The initial orders at present used in the EDSAC enable orders punched in the following form to be taken in from the tape. First a letter indicating the function is punched, then the numerical part of the order, in decimal form, and finally the letter L or S indicating, respectively, that the order refers to a long or a short number. If the order has no numerical part it is punched simply as a letter followed by S. Under the control of the initial orders the machine converts the numerical part of the order to binary form, and assembles the order with the function digits and the numerical digits in their correct relative positions.
1. Wilkes, M.V. "The Design of a Practical High-Speed Calculating Machine. The EDSAC". Proceedings of the Royal Society 195, 274, (1948).
2. Wilkes, M.V. "Programme Design for a High Speed Automatic Calculating Machine", Journal of Scientific Instruments 26, 217, (1949).
3. Wilkes, M.Y. and Renwick, W. "An Ultrasonic Memory Unit for the EDSAC", Electronic Engineering 20, 208, (1948).