The Electronic Delay Storage Automatic Calculator (EDSAC) was an early British computer. Inspired by
John von Neumann's seminal ''
First Draft of a Report on the EDVAC'', the machine was constructed by
Maurice Wilkes
Sir Maurice Vincent Wilkes (26 June 1913 – 29 November 2010) was a British computer scientist who designed and helped build the Electronic Delay Storage Automatic Calculator (EDSAC), one of the earliest stored program computers, and who inv ...
and his team at the
University of Cambridge Mathematical Laboratory in England. EDSAC was the second electronic digital
stored-program computer
A stored-program computer is a computer that stores program instructions in electronically or optically accessible memory. This contrasts with systems that stored the program instructions with plugboards or similar mechanisms.
The definition i ...
to go into regular service.
Later the project was supported by
J. Lyons & Co. Ltd., intending to develop a commercially applied computer and succeeding in Lyons' development of
LEO I, based on the EDSAC design. Work on EDSAC started during 1947, and it ran its first programs on 6 May 1949, when it calculated a table of
square numbers and a list of
prime numbers. EDSAC was finally shut down on 11 July 1958, having been superseded by
EDSAC 2, which remained in use until 1965.
Technical overview
Physical components

As soon as EDSAC was operational, it began serving the university's research needs. It used
mercury delay lines for memory and
derated vacuum tubes for logic. Power consumption was 11
kW of electricity. Cycle time was 1.5 ms for all ordinary instructions, 6 ms for multiplication. Input was via five-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.
A magnetic-tape drive was added in 1952 but never worked sufficiently well to be of real use.
[Some EDSAC statistics](_blank)
Until 1952, the available main memory (instructions and data) was only 512 18-bit words, and there was no backing store. The delay lines (or "tanks") were arranged in two batteries providing 512 words each. The second battery came into operation in 1952.
The full 1024-word delay-line store was not available until 1955 or early 1956, limiting programs to about 800 words until then.
John Lindley (diploma student 1958–1959) mentioned "the incredible difficulty we had ever to produce a single correct piece of paper tape with the crude and unreliable home-made punching, printing and verifying gear available in the late 50s".
Memory and instructions

The EDSAC's main memory consisted of 1024 locations, though only 512 locations were initially installed. Each contained 18 bits, but the topmost bit was always unavailable due to timing problems, so only 17 bits were used. An instruction consisted of a 5-bit instruction code, 1 spare bit, a 10-bit operand (usually a memory address), and 1 length bit to control whether the instruction used a 17-bit or a 35-bit operand (two consecutive words,
little-endian). All instruction codes were by design represented by one mnemonic letter, so that the ''Add'' instruction, for example, used the EDSAC character code for the letter A.
Internally, the EDSAC used
two's complement binary numbers. Numbers were either 17 bits (one word) or 35 bits (two words) long. Unusually, the
multiplier was designed to treat numbers as
fixed-point fractions in the range −1 ≤ ''x'' < 1, i.e. 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-and-add
* AND-and-add (called "Collate")
* Shift left
* Arithmetic shift right
* Load multiplier register
* Store (and optionally clear) accumulator
* Conditional goto
* Read input tape
* Print character
* Round accumulator
* No-op
* Stop
There was no division instruction (but various division subroutines were supplied) 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). There was no unconditional jump instruction, nor was there a procedure call instruction – it had not yet been invented.
Maurice Wilkes
Sir Maurice Vincent Wilkes (26 June 1913 – 29 November 2010) was a British computer scientist who designed and helped build the Electronic Delay Storage Automatic Calculator (EDSAC), one of the earliest stored program computers, and who inv ...
discussed relative addressing modes for the EDSAC in a paper published in 1953. He was making the proposals to facilitate the use of
subroutine
In computer programming, a function or subroutine is a sequence of program instructions that performs a specific task, packaged as a unit. This unit can then be used in programs wherever that particular task should be performed.
Functions may ...
s.
System software
The ''initial orders'' were hard-wired on a set of
uniselector switches and loaded into the low words of memory at startup. By May 1949, the initial orders provided a primitive relocating
assembler taking advantage of the mnemonic design described above, all in 31 words. This was the world's first assembler, and arguably the start of the global software industry. There is a simulation of EDSAC available and a full description of the initial orders and first programs.
The first calculation done by EDSAC was a square-number program run on 6 May 1949.
The program was written by
Beatrice Worsley, who had come from Canada to study the machine.
The machine was used by other members of the university to solve real problems, and many early techniques were developed that are now included in operating systems.
Users prepared their programs by punching them (in assembler) onto a paper tape. They soon became good at being able to hold the paper tape up to the light and read back the codes. When a program was ready, it was hung on a length of line strung up near the paper-tape reader. The machine operators, who were present during the day, selected the next tape from the line and loaded it into EDSAC. This is of course well known today as job queues. If it printed something, then the tape and the printout were returned to the user, otherwise they were informed at which memory location it had stopped. Debuggers were some time away, but a CRT screen could be set to display the contents of a particular piece of memory. This was used to see whether a number was converging, for example. A loudspeaker was connected to the accumulator's sign bit; experienced users knew healthy and unhealthy sounds of programs, particularly programs "hung" in a loop.
After office hours certain "authorised users" were allowed to run the machine for themselves, which went on late into the night until a valve blew – which usually happened according to one such user. This is alluded to by
Fred Hoyle in his novel
The Black Cloud.
Programming technique

The early programmers had to make use of techniques frowned upon today—in particular, the use of
self-modifying code. As there was no index register until much later, the only way of accessing an array was to alter which memory location a particular instruction was referencing.
David Wheeler, who earned the world's first Computer Science PhD working on the project, is credited with inventing the concept of a subroutine. Users wrote programs that called a routine by jumping to the start of the subroutine with the
return address (i.e. the location-plus-one of the jump itself) in the accumulator (a
Wheeler Jump). By convention the subroutine expected this, and the first thing it did was to modify its concluding jump instruction to that return address. Multiple and nested subroutines could be called so long as the user knew the length of each one in order to calculate the location to jump to;
recursive calls were forbidden. The user then copied the code for the subroutine from a master tape onto their own tape following the end of their own program. (However, Turing discussed subroutines in a paper of 1945 on design proposals for the NPL
ACE, going so far as to invent the concept of a return-address stack, which would have allowed recursion.)
The lack of an index register also posed a problem to the writer of a subroutine in that they could not know in advance where in memory the subroutine would be loaded, and therefore they could not know how to address any regions of the code that were used for storage of data (so-called "pseudo-orders"). This was solved by use of an initial input routine, which was responsible for loading subroutines from punched tape into memory. On loading a subroutine, it would note the start location and increment internal memory references as required. Thus, as Wilkes wrote, "the code used to represent orders outside the machine differs from that used inside, the differences being dictated by the different requirements of the programmer on the one hand, and of the control circuits of the machine on the other".
EDSAC's programmers used special techniques to make best use of the limited available memory. For example, at the point of loading a subroutine from punched tape into memory, it might happen that a particular constant would have to be calculated, a constant that would not subsequently need recalculation. In this situation, the constant would be calculated in an "interlude". The code required to calculate the constant would be supplied along with the full subroutine. After the initial input routine had loaded the calculation-code, it would transfer control to this code. Once the constant had been calculated and written into memory, control would return to the initial input routine, which would continue to write the remainder of the subroutine into memory, but first adjusting its starting point so as to overwrite the code that had calculated the constant. This allowed quite complicated adjustments to be made to a general-purpose subroutine without making its final footprint in memory any larger than had it been tailored to a specific circumstance.
Application software
The subroutine concept led to the availability of a substantial subroutine library. By 1951, 87 subroutines in the following categories were available for general use:
floating-point arithmetic
In computing, floating-point arithmetic (FP) is arithmetic that represents real numbers approximately, using an integer with a fixed precision, called the significand, scaled by an integer exponent of a fixed base. For example, 12.345 can be ...
; arithmetic operations on
complex numbers; checking; division;
exponentiation; routines relating to functions;
differential equations; special functions;
power series;
logarithms; miscellaneous; print and layout;
quadrature; read (input); ''n''th root;
trigonometric functions; counting operations (simulating
repeat until loops,
while loops and
for loops);
vectors; and
matrices.
The first
assembly language
In computer programming, assembly language (or assembler language, or symbolic machine code), often referred to simply as Assembly and commonly abbreviated as ASM or asm, is any low-level programming language with a very strong correspondence be ...
appeared for the EDSAC, and inspired several other assembly languages:
Applications of EDSAC
EDSAC was designed specifically to form part of the Mathematical Laboratory's support service for calculation. The first scientific paper to be published using a computer for calculations was by
Ronald Fisher. Wilkes and Wheeler had used EDSAC to solve a differential equation relating to gene frequencies for him. In 1951, Miller and Wheeler used the machine to discover a 79-digit prime – the
largest known at the time.
The winners of three Nobel Prizes
John Kendrew and
Max Perutz (Chemistry, 1962),
Andrew Huxley (Medicine, 1963) and
Martin Ryle (Physics, 1974) benefitted from EDSAC's revolutionary computing power. In their acceptance prize speeches, each acknowledged the role that EDSAC had played in their research.
In the early 1960s
Peter Swinnerton-Dyer used the EDSAC computer to calculate the number of points modulo ''p'' (denoted by ''N
p'') for a large number of primes ''p'' on elliptic curves whose rank was known. Based on these numerical results, conjectured that ''N
p'' for a curve ''E'' with rank ''r'' obeys an asymptotic law, the
Birch and Swinnerton-Dyer conjecture, considered one of the
top unsolved problems in mathematics as of 2022.
Games
In 1952,
Sandy Douglas developed ''
OXO'', a version of
noughts and crosses (tic-tac-toe) for the EDSAC, with graphical output to a VCR97 6"
cathode-ray tube
A cathode-ray tube (CRT) is a vacuum tube containing one or more electron guns, which emit electron beams that are manipulated to display images on a phosphorescent screen. The images may represent electrical waveforms (oscilloscope), pictur ...
. This may well have been the world's
first video game.
Another video game was created by
Stanley Gill
Professor Stanley J. Gill (26 March 1926 – 1975) was a British computer scientist credited, along with Maurice Wilkes and David Wheeler, with the invention of the first computer subroutine.
Early life, education and career
Stanley Gill was bor ...
and involved a dot (termed a sheep) approaching a line in which one of two gates could be opened.
The Stanley Gill game was controlled via the lightbeam of the EDSAC's paper-tape reader.
Interrupting it (such as by the player placing their hand in it) would open the upper gate.
Leaving the beam unbroken would result in the lower gate opening.
Further developments
EDSAC's successor,
EDSAC 2
EDSAC 2 was an early computer
A computer is a machine that can be programmed to Execution (computing), carry out sequences of arithmetic or logical operations (computation) automatically. Modern digital electronic computers can perform gene ...
, was commissioned in 1958.
In 1961, an EDSAC 2 version of
Autocode, an
ALGOL-like high-level programming language for scientists and engineers, was developed by
David Hartley.
In the mid-1960s, a successor to the EDSAC 2 was planned, but the move was instead made to the
Titan
Titan most often refers to:
* Titan (moon), the largest moon of Saturn
* Titans, a race of deities in Greek mythology
Titan or Titans may also refer to:
Arts and entertainment
Fictional entities
Fictional locations
* Titan in fiction, fictiona ...
, a prototype Atlas 2 developed from the
Atlas Computer of the
University of Manchester,
Ferranti, and
Plessey.
EDSAC Replica Project

On 13 January 2011, the
Computer Conservation Society announced that it planned to build a working replica of EDSAC, at the
National Museum of Computing (TNMoC) in
Bletchley Park supervised by
Andrew Herbert, who studied under Maurice Wilkes. The first parts of the replica were switched on in November 2014. The ongoing project is open to visitors of the museum. In 2016, two original EDSAC operators,
Margaret Marrs
Margaret Marrs (née Lewin; born 1929) is an English computer programmer who was the Senior Operator of the original Electronic delay storage automatic computer (EDSAC). EDSAC was an early British computer constructed at the University of Camb ...
and
Joyce Wheeler Joyce may refer to:
People
* Joyce (name), list of people and fictional characters with the given name or surname
*Joyce (singer), Joyce, (born 1948), Brazilian singer-songwriter
* James Joyce (1882–1941), Irish modernist writer
Places
* Joyce, ...
, visited the museum to assist the project. As of November 2016, commissioning of the fully completed and operational state of the replica was estimated to be the autumn of 2017.
However, unforeseen project delays have resulted in an unknown date for a completed and fully operational machine.
See also
*
EDVAC on which much of the design of EDSAC was based
*
History of computing hardware
The history of computing hardware covers the developments from early simple devices to aid calculation to modern day computers. Before the 20th century, most calculations were done by humans.
The first aids to computation were purely mechan ...
*
List of vacuum-tube computers
*
Margaret Marrs
Margaret Marrs (née Lewin; born 1929) is an English computer programmer who was the Senior Operator of the original Electronic delay storage automatic computer (EDSAC). EDSAC was an early British computer constructed at the University of Camb ...
References
Further reading
* ''The Preparation of Programs for an Electronic Digital Computer'' by Professor Sir
Maurice Wilkes
Sir Maurice Vincent Wilkes (26 June 1913 – 29 November 2010) was a British computer scientist who designed and helped build the Electronic Delay Storage Automatic Calculator (EDSAC), one of the earliest stored program computers, and who inv ...
,
David Wheeler and
Stanley Gill
Professor Stanley J. Gill (26 March 1926 – 1975) was a British computer scientist credited, along with Maurice Wilkes and David Wheeler, with the invention of the first computer subroutine.
Early life, education and career
Stanley Gill was bor ...
,
Addison–Wesley, Edition 1, 195
archive.org
50th Anniversary of EDSACnbsp;– Dedicated website at the
University of Cambridge Computer Laboratory.
*
*
*
* reprinted in
External links
An EDSAC simulatornbsp;– Developed by
Martin Campbell-Kelly, Department of Computer Science,
University of Warwick, England.
Oral history interview with David Wheeler, 14 May 1987 Charles Babbage Institute, University of Minnesota. Wheeler was a research student at the University Mathematical Laboratory at Cambridge in 1948–1951 and a pioneer programmer on the EDSAC project. Wheeler discusses projects that were run on EDSAC, user-oriented programming methods, and the influence of EDSAC on the
ILLIAC, the
ORDVAC, and the
IBM 701
The IBM 701 Electronic Data Processing Machine, known as the Defense Calculator while in development, was IBM’s first commercial scientific computer and its first series production mainframe computer, which was announced to the public on May ...
. Wheeler also notes visits by
Douglas Hartree,
Nelson Blackman
Nelson may refer to:
Arts and entertainment
* ''Nelson'' (1918 film), a historical film directed by Maurice Elvey
* ''Nelson'' (1926 film), a historical film directed by Walter Summers
* ''Nelson'' (opera), an opera by Lennox Berkeley to a lib ...
(of ONR),
Peter Naur,
Aad van Wijngarden,
Arthur van der Poel
Arthur is a common male given name of Brythonic origin. Its popularity derives from it being the name of the legendary hero King Arthur. The etymology is disputed. It may derive from the Celtic ''Artos'' meaning “Bear”. Another theory, more wi ...
,
Friedrich Bauer, and
Louis Couffignal.
Nicholas Enticknap and Maurice Wilkes, Cambridge's Golden Jubileenbsp;– in: RESURRECTION The Bulletin of the Computer Conservation Society. {{ISSN, 0958-7403. Number 22, Summer 1999.
The EDSAC Paperwork Collection at The ICL Computer Museum
1940s computers
Early British computers
1949 in computing
Computer-related introductions in 1949
One-of-a-kind computers
Vacuum tube computers
University of Cambridge Computer Laboratory
History of Cambridge
Serial computers