# EDSAC

EDSAC Electronic Delay Storage Automatic Calculator was conceived in 1946, the machine did its first calculation in the summer of 1949

The EDSAC order code

The action of the machine proceeds in two stages; in stage I an order passes from the store into the control unit; in stage II the order is executed. The machine then proceeds automatically to repeat stage I, in general taking the order from the storage location following that containing the order just executed. (add exception note here) Each order calls for one simple operation to be performed; for example, it may cause some number to be extracted from the store and added to whatever happens to be in the accumulator, the sum being left in the accumulator, or it may cause the contents of the accumulator to be transfered to the store. Some orders, for example left or right shift orders, do not involve the use of the store at all.

There are in the EDSAC code eighteen orders from which the programmer can build up his program. They are written in the form of a letter indicating the function of the order, and a number (the address) specifying the location (if any) in the store concerned. The address is followed by the code letter F if it refers to a short storage location, and by the code letter D if it refers to a long storage location, The full order code for the EDSAC is as follows:

Order Code

Where the code letter terminating an order is not shown it may be either F or D.

 Order Description 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 Copy the number in storagae location n into the multiplier register V n Multiply the number in storage location n by the number in the multiplier register and add the product into the accumulator N n Multiply the number in storage location n by the number in the multiplier register and subtract the product into the accumulator T Transfer the contents of the accumulator to storage location n and clear the accumulator U Transfer the contents of the accumulator to storage location n and do not clear the accumulator C Collate the number in storage location n with the number in the multiplier register and add the result into the accumulator; that is, add a "1" into the accumulator in digital positions where both numbers have a "1" , and add a "0" in other digital positions * R D Shift the number in the accumulator one place to the right; that is, multiply by 2-1 ** R 2p-2 F Shift the number in the accumulator p places to the right; that is, multiply it by 2-p (2≤p≤12) R F Shift the number in the accumulator 15 places to the right; that is, multiply it by 2-15 * L F Shift the number in the accumulator 1 place to the left; that is, multiply it by 2 ** L 2p-1 F Shift the number in the accumulator p places to the left; that is, multiply it by 2p (2≤p≤12) L F Shift the number in the accumulator 13 places to the left; that is, multiply it by 213 E n F If the number in the accumulator is greater than or equal to zero, execute the next order which stands in storage location n; else proceed serially G n F If the number in the accumulator is greater than zero, execute the next order which stands in storage location n; else proceed serially I n Read the next row of holes on the input tape and place the resulting integer, multipled by 2-16, in storage location n O 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 now set up on the teleprinter in the five most significant digits in storage location n, clearing the remainder of this location * X Ineffective; machine proceeds to the next order * Y Round-off the numberin the accumulator to 34 binary digits; that is, add 2-35 into the accumulator * Z Stop the machine
```*  The addresses in these order codes need not be zero.
** The addresses in these orders may be k.2p-1 where k is odd, provided that the addresses do not exceed 2047.
```