EDSAC (Electronic Delay Storage Automatic Calculator) was an early British computer (one of the first computers to be created). The machine, having been inspired by John von Neumann's seminal EDVAC report, was constructed by Professor Sir Maurice Wilkes and his team at the University of Cambridge Mathematical Laboratory in England.
EDSAC was the world's first practical stored program electronic computer, although not the first stored program computer (that honor goes to the Small-Scale Experimental Machine).
The project was supported by J. Lyons & Co. Ltd., a British firm, who were rewarded with the first commercially applied computer, LEO I, based on the EDSAC design. EDSAC ran its first programs on May 6, 1949, calculating a table of squares and a list of prime numbers.
As soon as EDSAC was constructed, it began serving the University's research needs. None of its components were experimental. It used mercury delay lines for memory, and derated vacuum tubes for logic. Input was via 5-hole punched tape and output was via a teleprinter.
Initially, registers were limited to an accumulator and a multiplier register. In 1953, David Wheeler, returning from a stay at the University of Illinois, designed an index register as an extension to the original EDSAC hardware.
Memory and instructions
The EDSAC's memory consisted of 1024 locations, though only 512 locations were initially implemented. Each contained 18 bits, but the first bit was unavailable due to timing restrictions, so only 17 bits were used. An instruction consisted of a five-bit instruction code (designed to be represented by a mnemonic letter, so that the Add instruction, for example, used the bit pattern for the letter A), eleven bits for a memory address (although with 1024 words, only 10 bits were needed), and one bit (for certain instruction) to control whether the instruction operated on a number contained in one word or two.
Internally, the EDSAC used twos complement, binary numbers. These were either 17-bit (one word) or 35-bit (two words) long. Unusually, the multiplier was designed to treat numbers as fixed-point fractions in the range -1 = x < 1, ie the binary point was immediately to the right of the sign. The accumulator could hold 71-bits, including the sign, allowing two long (35-bit) numbers to be multiplied without losing any precision.
The instructions available were: add, subtract, multiply, collate, shift left, shift right, load multiplier register, store (and optionally clear) accumulator, conditional skip, read input tape, print character, round accumulator, no-op and stop. There was no division instruction (though a number of division subroutines were available) and no way to directly load a number into the accumulator (a "store and zero accumulator" instruction followed by an "add" instruction were necessary for this).
The initial orders were hard-wired on a set of uniselector switches and loaded into the low words of memory at startup. By September 1949, the initial orders had reached their final form and provided a primitive relocating assembler taking advantage of the mnemonic design described above, all in 41 words.