Hubbry Logo
logo
EDSAC
Community hub

EDSAC

logo
0 subscribers

Wikipedia

from Wikipedia

Electronic Delay Storage Automatic Calculator (EDSAC)
EDSAC I in June 1948
DeveloperMaurice Wilkes and his team at the University of Cambridge Mathematical Laboratory
ManufacturerUniversity of Cambridge
Generation1
Released6 May 1949; 76 years ago (1949-05-06)
Lifespan1949–1958
Discontinuedyes
Units shipped1
Operating systemNone
CPUDerated thermionic valves
Memory512 17-bit words, upgraded in 1952 to 1024 17-bit words (temperature-stabilized mercury delay lines)
DisplayTeleprinter
Inputfive-hole punched tape
Power11 kW
Backward
compatibility
None
SuccessorEDSAC 2 and LEO I
RelatedEDVAC

The Electronic Delay Storage Automatic Calculator (EDSAC) was an early British computer.[1] Inspired by John von Neumann's seminal First Draft of a Report on the EDVAC, the machine was constructed by Maurice Wilkes and his team at the University of Cambridge Mathematical Laboratory in England to provide a service to the university. EDSAC was the second electronic digital stored-program computer, after the Manchester Mark 1, to go into regular service.[2]

Later the project was supported by J. Lyons & Co. Ltd., intending to develop a commercially applied computer and resulting in Lyons' development of the LEO I, based on the EDSAC design. Work on EDSAC started during 1947,[3] and it ran its first programs on 6 May 1949, when it calculated a table of square numbers[4] and a list of prime numbers.[5][6] EDSAC was finally shut down on 11 July 1958, having been superseded by EDSAC 2, which remained in use until 1965.[7]

Project and plan

[edit]

The conception of the EDSAC I can be traced back to 1945, during early planning of the EDVAC. In June of that year, John von Neumann wrote his First Draft of a Report on the EDVAC after taking on a consulting role while J. Presper Eckert and John Mauchly were the designers. The document described the concept of a stored-program computer, where both the program and data are stored in the same memory, which is now known as the Von Neumann architecture; it briefly explains the idea that computer instructions, or the program, could be stored in the same memory as the data, allowing for flexibility and automation in computation.

Later in August 1946, when Wilkes participated in the final weeks of the Moore School Lectures, he was exposed to the principles of the ENIAC – Eckert and Mauchly's previous invention – and their proposed next project, the EDVAC.[8] He proposed the concept of microprogramming, a system that simplifies the logical design of computers, which later became widely adopted in the industry. Using the knowledge he gathered about the EDVAC's working concept in the lectures, he began development of the EDSAC I in October of that year.[9][10]

Technical overview

[edit]

Physical components

[edit]
9-inch tubes used for monitoring
William Renwick with 5-hole tape reader and Creed teleprinter

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.[11][12] 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.[12]

Until 1952, the available main memory (instructions and data) was only 512 18-bit words, and there was no backing store.[13] The delay lines (or "tanks") were arranged in two batteries providing 512 words each. The second battery came into operation in 1952.[12]

The full 1024-word delay-line store was not available until 1955 or early 1956,[14] 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".[15]

Memory and instructions

[edit]
Maurice Wilkes inspecting the mercury delay line of the EDSAC in construction
Maurice Wilkes and Bill Renwick in front of the complete EDSAC

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 five-bit instruction code, one spare bit, a 10-bit operand (usually a memory address), and one 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 discussed relative addressing modes for the EDSAC in a paper published in 1953. He was making the proposals to facilitate the use of subroutines.[16]

System software

[edit]

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.[17]

The first calculation done by EDSAC was a program run on 6 May 1949 to compute square numbers.[18] The program was written by Beatrice Worsley, who had travelled from Canada to study the machine.[19][18]

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.[citation needed]

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 cathode-ray tube 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.[20] This is alluded to by Fred Hoyle in his novel The Black Cloud

Programming technique

[edit]
EDSAC monitoring desk[21]

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, Alan 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.[22])

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".[23]

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.[24]

Wheeler and Wilkes, together with Stanley Gill, published The Preparation of Programs for an Electronic Digital Computer in 1951, a book about programming the EDSAC. It was the first programming textbook.[25]

Application software

[edit]

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; 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); nth root; trigonometric functions; counting operations (simulating repeat until loops, while loops and for loops); vectors; and matrices.

The first assembly language appeared for the EDSAC, and inspired several other assembly languages:

Year Name Chief developer, company
1951 Regional Assembly Language Maurice Wilkes
1951 Whirlwind assembler Charles Adams and Jack Gilmore at MIT
1951 Rochester assembler Nat Rochester

Applications of EDSAC

[edit]

EDSAC was designed specifically to form part of the Mathematical Laboratory's support service for calculation.[26] Ronald Fisher, in collaboration with Wilkes and Wheeler, used EDSAC to solve a differential equation relating to gene frequencies; this represented the first application of a computer to research in biology.[27][28] In 1951, Miller and Wheeler used the machine to discover a 79-digit prime[29] – 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 Np) for a large number of primes p on elliptic curves whose rank was known. Based on these numerical results, Birch & Swinnerton-Dyer (1965) conjectured that Np 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 2024.

The "brain" [computer] may one day come down to our level [of the common people] and help with our income-tax and book-keeping calculations. But this is speculation and there is no sign of it so far.

— British newspaper The Star in a June 1949 news article about the EDSAC computer, long before the era of the personal computers.[30]

Games

[edit]

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. This may well have been the world's first video game.[31][32]

Another video game was created by Stanley Gill and involved a dot (termed a sheep) approaching a line in which one of two gates could be opened.[33] The Stanley Gill game was controlled via the lightbeam of the EDSAC's paper-tape reader.[33] Interrupting it (such as by the player placing their hand in it) would open the upper gate.[33] Leaving the beam unbroken would result in the lower gate opening.[33]

Further developments

[edit]

EDSAC's successor, EDSAC 2, 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, a prototype Atlas 2 developed from the Atlas Computer of the University of Manchester, Ferranti, and Plessey.

EDSAC Replica Project

[edit]
EDSAC replica in October 2018

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) on the Bletchley Park campus. The project is led by Andrew Herbert, who studied under Maurice Wilkes.[34] The first parts of the replica were switched on in November 2014.[35][36] The EDSAC logical circuits were meticulously reconstructed through the development of a simulator and the reexamination of some rediscovered original schematics. This documentation has been released under a Creative Commons license.[37] The ongoing project is open to visitors of the museum. In 2016, two original EDSAC operators, Margaret Marrs and Joyce Wheeler, visited the museum to assist the project.[38] As of November 2016, commissioning of the fully completed and operational state of the replica was estimated to be the autumn of 2017.[39] However, unforeseen project delays have resulted in an unknown date for a completed and fully operational machine.

See also

[edit]

References

[edit]

Further reading

[edit]
[edit]

Grokipedia

from Grokipedia
The Electronic Delay Storage Automatic Calculator (EDSAC) was the world's first practical general-purpose stored-program electronic computer, designed and built at the University of Cambridge Mathematical Laboratory under the leadership of Maurice Wilkes, and it became operational on 6 May 1949.[1][2][3] This pioneering machine used mercury delay lines for memory storage, enabling it to hold both instructions and data electronically, and it executed approximately 650 instructions per second using thermionic valves (vacuum tubes) for processing.[1][4][5] EDSAC's development began in 1946, inspired by John von Neumann's EDVAC report, with Wilkes assembling a team including key contributors like Bill Renwick as chief engineer and David Wheeler as a research student who helped innovate programming techniques such as subroutines.[4][1] Initially equipped with 512 17-bit words of memory (expandable to 1024), it accepted input via punched paper tape and produced output on a teleprinter, supporting 18 basic operation codes for arithmetic and control functions.[1][2] Its first program, written by Wilkes, computed a table of squares, while Wheeler's early effort generated prime numbers, demonstrating its utility for scientific calculations.[3] The machine's significance lay in transforming computational research at Cambridge, where it ran continuously until 1958 and supported groundbreaking work, including simulations for Nobel Prize-winning discoveries in molecular biology by John Kendrew and Max Perutz, as well as in astronomy by Antony Hewish and Martin Ryle.[1][4] EDSAC also pioneered practical software innovations, such as relocatable subroutines in 1951, which facilitated code reuse and influenced the design of later systems like LEO I, the first commercial computer.[4][1] By providing a reliable service for university users from early 1950, it established stored-program computing as a viable paradigm, paving the way for modern digital computers.[2][5]

History and Development

Origins and Inspiration

The development of EDSAC originated in 1946 at the University of Cambridge Mathematical Laboratory, led by Maurice Wilkes, who had been profoundly influenced by his attendance at the Moore School lectures in the United States during the summer of 1946. These lectures, organized by the University of Pennsylvania, covered the principles of electronic computing exemplified by ENIAC and introduced the stored-program concept detailed in John von Neumann's First Draft of a Report on the EDVAC. Upon his return to Cambridge in late 1946, Wilkes obtained a copy of von Neumann's report through a colleague, which catalyzed his decision to pursue the construction of a practical stored-program computer despite the laboratory's constrained resources and postwar limitations on materials and expertise.[4][6][2] Wilkes assembled a small team to realize this vision, including chief engineer Bill Renwick, graduate students David Wheeler and Stanley Gill, who contributed significantly to the design and early programming efforts.[1] The project emphasized creating a reliable computing machine tailored for mathematical and scientific calculations within the Cambridge academic community, prioritizing dependability and ease of use over raw computational speed. This approach contrasted with more ambitious but resource-intensive American projects, reflecting the practical constraints at Cambridge.[6][7] Initial planning focused on a minimalist architecture, including the adoption of mercury delay lines for memory storage—a technology inspired by the work of J. Presper Eckert and John Mauchly on acoustic delay lines for radar applications during World War II. This choice allowed for economical implementation of the stored-program paradigm outlined in the EDVAC report, enabling instructions and data to be held in the same memory system. The effort was supported by external grants, notably from J. Lyons & Company, which sought computing solutions for business applications and helped sustain the project through its early phases.[4][1][8]

Construction and Initial Operation

The construction of EDSAC began in early 1947 at the University of Cambridge Mathematical Laboratory, led by Maurice Wilkes. The project spanned roughly two years, during which the team designed and assembled the machine's components from basic principles, including custom electronic circuits and storage mechanisms. By May 1949, the hardware was sufficiently complete to attempt initial operations, marking the transition from theoretical planning to a functional stored-program computer.[2] A major engineering effort focused on procuring around 3,000 thermionic valves to power the logic and arithmetic units, arranged across 12 chassis racks, while post-war shortages complicated component availability. Equally demanding was the fabrication of 32 mercury delay line tanks for the main memory, each consisting of a 5-foot steel tube filled with mercury to circulate acoustic pulses representing data bits. These tanks, maintained at a constant temperature to ensure signal stability, formed the core of EDSAC's 512-word storage capacity and required meticulous construction to minimize attenuation and reflections.[9][10] EDSAC achieved its first successful program execution on 6 May 1949, when it computed and printed a table of squares for the integers from 0 to 99, validating the integration of its serial binary processing at a 500 kHz clock speed. The machine drew approximately 12 kW of power during operation, supporting continuous use for computational tasks. It remained in service for nearly a decade, contributing to various research efforts until its decommissioning on 11 July 1958 to make way for the more advanced EDSAC 2.[10][11][12]

Technical Design

Hardware Architecture

EDSAC was designed as a serial binary computer utilizing one-address instructions, fully implementing the stored-program concept to enable automatic execution of sequences of operations stored in memory.[13] The architecture emphasized simplicity and reliability, with the central processing unit (CPU) handling basic arithmetic operations efficiently for its era; addition and subtraction required 1.5 milliseconds, while multiplication took approximately 4.5 milliseconds, and division was implemented in software over longer durations.[13] Fixed-point arithmetic was employed throughout, using two's complement representation for signed integers to facilitate straightforward handling of negative values in computations.[14] The hardware relied on approximately 3,000 thermionic valves, derated to operate below their maximum ratings for enhanced reliability and reduced failure rates, supplemented by relays for auxiliary control functions.[13] These components were mounted on 12 racks, resulting in a physical footprint occupying a roughly 4.5 by 4.5 meter space within the Cambridge Mathematical Laboratory.[15] Natural air cooling sufficed for the valve-based logic, achieved through strategic rack arrangement to promote airflow, while the system drew about 12 kW of power during operation.[15][13] This configuration prioritized practical construction over maximal speed, allowing EDSAC to become operational by 1949 for early scientific programming experiments.[13]

Memory System and Instructions

EDSAC's memory system utilized mercury delay line technology, which stored data as acoustic pulses traveling through mercury-filled tubes at the speed of sound. Initially configured with 16 such delay lines, the system provided a capacity of 512 17-bit words, where each line held 32 short words (or 16 long 35-bit words) plus additional circulation time for signal refresh to prevent data loss.[16][10] In 1952, the memory was expanded by adding another 16 delay lines, increasing the total capacity to 1,024 17-bit words while maintaining the same per-line structure.[1] This acoustic storage medium operated serially, circulating bits continuously, and required temperature stabilization to ensure reliable pulse propagation and minimize errors from environmental variations.[17] The instruction set featured around 18 basic orders, supporting a one-address architecture centered on an accumulator register for arithmetic operations. Instructions were encoded in short words but could specify either short (17-bit) or long (35-bit) operands via a dedicated length bit, enabling flexible handling of numbers with precisions equivalent to approximately 5 and 10 decimal digits, respectively; arithmetic instructions like addition and subtraction typically used the one-address format to fetch an operand from memory and apply it to the accumulator, while branch instructions employed the address field to transfer control to a specified location.[18][19] Short instructions sufficed for branches due to their single-word addressing needs, whereas long instructions accommodated extended precision for computations by spanning two consecutive memory words.[14] Each 17-bit word included a sign/length bit (most significant bit), a 5-bit operation code specifying the order type, a 1-bit spare field, and a 10-bit address field capable of referencing up to 1,024 memory locations.[20] The machine executed instructions serially bit-by-bit, with an average cycle time of 1.5 milliseconds, though serial processing allowed for parallel addition in the arithmetic unit to optimize performance where possible; multiplication, however, required multiple cycles and took about 4.5 milliseconds.[10][21] To enhance reliability, the delay line system incorporated checks for control errors during data recirculation, aiding in the detection of storage anomalies common to early acoustic memories.[22]

Input and Output Mechanisms

EDSAC's primary input mechanism was a five-hole punched paper tape reader, which loaded programs and data into the machine's memory. Initially operating at 6⅔ characters per second using a teleprinter-style reader, it was upgraded in October 1949 to 16 characters per second and further improved in early 1950 with a photoelectric reader achieving 50 characters per second. Programs were entered as binary-encoded instructions on the tape, read sequentially by the initial orders routine—a short bootstrap program that transferred the content into the mercury delay line memory. The paper tape employed a five-hole Baudot-derived code to represent EDSAC's 17-bit words, with each word typically encoded across five characters for compatibility with the 32 possible hole combinations. Synchronization during reading was maintained by a central sprocket hole that advanced the tape at a uniform speed, ensuring precise alignment of the photoelectric sensors over the data holes. Output was generated via a Creed Model 7B teleprinter, which produced printed results at 6⅔ characters per second. In 1951, an additional punched paper tape output unit was installed, operating at 16 characters per second to enable offline data storage and transfer. For auxiliary storage and intermediate data handling, EDSAC relied on additional punched paper tapes prepared and read manually, as no magnetic tape system was available at launch; an experimental magnetic tape auxiliary store was added in 1952 but suffered from reliability issues and saw limited use. These input and output mechanisms imposed significant limitations on EDSAC's performance, as the I/O rates were orders of magnitude slower than the processor's execution speed of approximately 650 instructions per second, often causing idle time during data loading and result printing. Moreover, tape preparation demanded skilled human operators using keyboard perforators or manual punches, increasing the risk of errors such as missed holes, which required on-the-spot corrections.

Software Ecosystem

Initial Orders and System Software

The initial orders for EDSAC constituted a hardwired bootstrap routine designed to load the first user program from punched paper tape into the machine's mercury delay line memory. Developed by David Wheeler in May 1949, this routine was implemented using uniselectors—telephone-style switches wired to generate the necessary machine instructions—and occupied the first 31 memory locations (0 to 30). Upon powering on EDSAC, the routine began execution at location 0, reading 20 segments of 5-track paper tape containing the program in a symbolic form, assembling 17-bit binary instructions from operation codes and addresses, and storing them starting at location 31 before transferring control to the loaded program.[23][24] The initial orders effectively served as EDSAC's rudimentary loader, combining basic assembly and loading functions without the need for a separate operating system. This loader translated tape codes into executable form, allowing modifications via symbolic letters on the tape to adjust addresses or parameters dynamically during input, which facilitated efficient program preparation and reduced manual errors. No comprehensive operating system existed; instead, these initial orders provided the foundational control mechanism for initiating computations.[24][20] EDSAC's system software encompassed essential utilities for input, tape management, and diagnostics, all developed in machine code to ensure reliability on the nascent hardware. Basic input routines handled the reading of punched tape, synchronizing with the tape reader's mechanical speed and verifying character codes before assembly, while tape handling utilities managed multi-segment loading and error recovery during reads. Error diagnostics, pioneered by Stanley Gill, included innovative checking routines that interrupted execution to inspect memory states, a "peeping" tool for real-time monitoring, and postmortem analysis to trace faults after crashes, significantly aiding early debugging efforts.[10][25] The core system elements were crafted by Maurice Wilkes, David Wheeler, and Stanley Gill, emphasizing modularity to enhance reusability and fault tolerance in an era of unreliable components. A landmark feature was EDSAC's first practical subroutine library, which stored reusable code segments on dedicated tapes for mechanical copying onto user programs, enabling complex calculations through modular assembly; by 1951, this library comprised 87 subroutines covering arithmetic, input/output, and utility functions. This approach, detailed in their seminal 1951 text The Preparation of Programs for an Electronic Digital Computer, the first book on programming, prioritized conceptual efficiency over exhaustive customization, laying groundwork for structured programming practices.[26][27]

Programming Techniques

Programming for the EDSAC initially involved direct binary coding, where instructions were calculated by hand and punched onto paper tape in binary form for the machine's 17-bit word format. This labor-intensive process was used for the very first demonstration program run on May 6, 1949, which computed a table of squares, requiring programmers to manually convert operations into binary sequences without automated aids.[26][10] To alleviate the tedium of binary punching, David Wheeler developed an early symbolic assembly scheme integrated into the EDSAC's Initial Orders, allowing programmers to use alphanumeric notations for operations and addresses, such as single letters for opcodes (e.g., 'A' for addition) followed by decimal digits for addresses. This system, operational from the machine's inception in 1949, enabled relocatable code through symbolic address labels like code-letters (e.g., θ denoting the program origin), marking one of the first practical assemblers and reducing errors in code preparation. Programs were still punched on paper tape but in this symbolic form, which the Initial Orders translated into binary during loading.[10][28][26] A key innovation in EDSAC programming was the systematic use of subroutines, facilitated by the "Wheeler jump" technique, which allowed calls to library routines for common tasks like multiplication or input/output without hardware support for return addresses. In this method, a calling instruction such as A m F (add the contents of location m to the accumulator and jump if negative) was modified in place to store the return address, enabling the subroutine to compute and jump back to the subsequent instruction; returns used a similar jump like G n F. This approach structured programs as a main routine linked to relocatable subroutines via punched tape segments separated by control combinations (e.g., T m K for tape marks), promoting code reuse from a growing library that reached 87 routines by 1951.[10][28][26] The assembly process combined manual symbolic notation with the machine's Initial Orders as a rudimentary assembler and linker, loading the main program and subroutines into memory starting from fixed locations like 0 or 56, while adjusting addresses for relocation. Programmers prepared tapes by hand-punching or using a keyboard perforator, then concatenated library subroutine tapes—duplicated in advance for efficiency—with the main routine tape before submission.[28][10] Debugging relied on manual verification and machine-assisted traces output to the teleprinter, including "peeping" for single-step execution and post-mortem routines like PM5 to print orders from a specified location. Checking subroutines such as C7 provided execution traces by printing control flow and register states after a halt, while C10 offered arithmetical traces of numerical operations; these were appended to programs via tape for automated logging, though systematic bug tracking remained anecdotal rather than formalized.[10][28] EDSAC's programming techniques pioneered practical subroutine libraries and modular code organization, influencing subsequent systems by demonstrating how reusable components could streamline development and reduce redundancy in early computing.[26][10]

Library and Application Programs

The EDSAC featured a substantial library of subroutines that formed the foundation for efficient program development, allowing users to reuse tested code segments for common operations. Initiated in autumn 1949 by staff at the Cambridge University Mathematical Laboratory, the library expanded to 87 routines by 1951, covering essential categories such as arithmetic operations—including square roots and division—and statistical functions for data analysis. These subroutines were stored on paper tapes and organized in a dedicated filing system, enabling programmers to link them seamlessly into custom applications without rewriting basic algorithms from scratch.[10] The library's maintenance and distribution were handled directly by laboratory personnel, who tested and updated routines based on user feedback and operational experience; copies were provided to external users via punched paper tapes, fostering a collaborative computing environment. This approach not only accelerated program creation but also ensured reliability, as subroutines underwent rigorous validation before inclusion.[10] Complementing the subroutine library were early assembly tools, notably the system developed by David Wheeler in 1949, which translated symbolic instructions into EDSAC machine code and represented a pioneering precursor to modern assemblers. While EDSAC lacked high-level languages, Wheeler's assembler streamlined coding by reducing the need for manual binary entry, marking an initial step toward more abstracted software development.[29][27] Among the application programs built atop this ecosystem were those addressing numerical challenges, such as solvers for differential equations and methods for numerical integration, which leveraged library routines for precision and speed.[30][4]

Applications and Usage

Scientific Computations

EDSAC served as a vital tool for university researchers at the University of Cambridge, enabling numerical solutions to differential equations and simulations in physics and engineering fields. Primary applications encompassed orbital calculations for astronomical research and fluid dynamics problems, including analyses of double diffusion processes in oceanic and stellar environments. These computations advanced scientific inquiry through automated processing of complex mathematical models.[4][31][32] EDSAC's contributions included calculations supporting three Nobel Prizes: in Chemistry (1962, for the molecular structures determined by Max Perutz and John Kendrew using X-ray crystallography simulations) and in Physics (1974, for radio astronomy work by Antony Hewish and Martin Ryle).[4] A prominent example of EDSAC's impact occurred in 1950, when statistician Ronald Fisher collaborated with Maurice Wilkes and David Wheeler to solve a differential equation modeling gene frequencies, representing an early application of computing to biological simulations. This work significantly accelerated research timelines, as manual calculations would have required months, whereas EDSAC completed the task in hours, contributing to foundational advancements in population genetics. The machine's capabilities extended to supporting theses, such as those by D.H. Shinn on radio wave propagation and Jack Harwood on related atmospheric studies, as well as publications in journals like the Journal of Atmospheric and Terrestrial Physics and Proceedings of the Royal Society.[4][31] EDSAC operated in batch processing mode, with users submitting jobs via punched paper tape read at 50 characters per second, resulting in queued execution that limited interactivity but ensured reliable throughput. Despite these constraints, the system operated about 35 hours per week, sustaining continuous academic use from its operational start in May 1949 until decommissioning in 1958. Researchers leveraged library routines for standard numerical tasks, such as integration and equation solving, to streamline scientific computations without reinventing core algorithms.[33][34][31][30]

Early Games and Demonstrations

One of the earliest recreational programs developed for the EDSAC was OXO, a graphical implementation of noughts and crosses (tic-tac-toe), created by Cambridge University PhD student Alexander S. Douglas in 1952.[35] This program allowed a human player to compete against the computer on a 35 by 16 dot-matrix display rendered on a cathode ray tube (CRT), marking positions with crosses while the machine responded with noughts.[35] Input was provided via a rotary telephone dial connected to the system, enabling turn-based interaction that simulated strategic gameplay.[35] OXO represented an unbeatable opponent through its programmed logic, making it the first known strategy game on a computer.[36] Beyond OXO, EDSAC supported other demonstration programs focused on visual output, such as pattern generation and simple animations to showcase the machine's graphical capabilities. For instance, a now-lost program called "Highland Dancer" animated a dancing figure on the CRT monitor during the early 1950s, providing an engaging visual test of the system's display potential.[10] Another example was a visualization of the Sieve of Eratosthenes algorithm, which dynamically displayed the elimination of non-prime numbers on the CRT, illustrating computational processes in a graphical format around 1950.[10] These programs utilized the CRT for direct visual feedback, distinct from the standard teleprinter output that handled textual results at a rate of about 6.67 characters per second.[10] Such early games and demonstrations served dual purposes: boosting staff morale within the Mathematical Laboratory and facilitating public showcases of EDSAC's versatility during events like the 1950-1951 summer schools for programmers.[31] They highlighted the computer's ability to go beyond numerical computations, though interaction was not real-time due to the system's processing speed and sequential input-output mechanisms.[35] This marked an initial step toward interactive computing, demonstrating how EDSAC could engage users in non-scientific, illustrative applications.[36]

Legacy and Successors

EDSAC 2 and Further Evolutions

EDSAC 2, the successor to the original EDSAC, was commissioned in 1958 at the University of Cambridge Mathematical Laboratory and remained in operation until 1965, when it was replaced by the Titan computer.[37] Designed under the leadership of Maurice Wilkes, it marked a significant advancement over its predecessor by adopting a parallel architecture and replacing the mercury delay-line memory with magnetic core storage, enabling faster access times and greater reliability.[38] The machine was constructed using vacuum tubes for logic circuitry and featured an initial main memory capacity of 2 × 1024 words, each 40 bits long, which was later expanded with additional core memory modules.[39] Key design innovations in EDSAC 2 included its status as the first full-scale microprogrammed computer, utilizing a bit-sliced organization for the control unit with a microprogram of 1024 steps stored in read-only core memory.[38] This allowed for flexible instruction execution and easier modification of the instruction set compared to the serial architecture of EDSAC 1. Input and output were handled via high-speed paper tape readers and punches, supplemented by magnetic tape units for bulk storage, while the system's performance supported more demanding computational tasks, including complex scientific simulations that built upon routines from the original EDSAC.[38] Programs from EDSAC 1 were adapted and migrated to EDSAC 2, leveraging compatibility in programming concepts to facilitate the transition for users.[40] Prior to the full deployment of EDSAC 2, the original EDSAC underwent intermediate upgrades to extend its utility, notably the experimental introduction of magnetic tape storage in 1952, which improved data handling for larger datasets and paved the way for enhanced I/O capabilities in the successor machine.[40] EDSAC 2 also supported advanced programming environments, including Autocode, a high-level language with features inspired by early ALGOL developments, enabling more sophisticated software for scientific and engineering applications.[41] These evolutions at Cambridge represented a transitional phase in early computing, bridging vacuum-tube technology toward more modular and efficient systems.

Replica Project and Modern Reconstructions

The EDSAC Replica Project was launched on 13 January 2011 by the Computer Conservation Society at The National Museum of Computing (TNMOC) in Bletchley Park, UK, with the aim of constructing a functional reconstruction of the original EDSAC as it operated around 1951, relying primarily on surviving photographs, diagrams, and archival documents due to the scarcity of complete original blueprints.[42][1] Significant progress milestones included the powering on of the first hardware modules in November 2014, marking the start of the commissioning phase, followed by steady advancements through 2024, when the project neared physical completion, incorporating simulations for core memory and central processing unit verification to ensure fidelity to the 1949 design.[43][44] The effort was driven by a volunteer team led by project manager Dr. Andrew Herbert, comprising mostly retired engineers and computer scientists, who adhered closely to the original specifications while substituting unavailable period components—such as mercury delay lines—with modern equivalents like magnetostrictive steel wire delay lines to achieve operational authenticity without compromising safety or practicality.[1][45] As of late 2025, the replica is close to physical completion and in an intense commissioning phase, with the aim of executing original programs such as the inaugural square-sum calculation that ran on the first EDSAC in 1949, serving as a cornerstone for educational exhibits on early computing history at TNMOC.[1] Videos documenting the reconstruction and demonstrations became available online, facilitating public access and outreach, while the project's dedicated company was dissolved in August 2025.[46][47] These reconstructions underscore the replica's role in preserving hands-on insights into mid-20th-century computing innovations, with ongoing maintenance ensuring its longevity for future generations of researchers and visitors.[1]

Influence on Computer Science

EDSAC's innovations in stored-program computing marked a pivotal advancement in computer architecture and software engineering. As the first practical electronic stored-program computer to enter regular service in May 1949, it demonstrated the viability of reliable, general-purpose computation for scientific and mathematical applications, shifting computing from experimental prototypes to operational tools.[4][48] EDSAC pioneered the use of subroutine libraries, enabling modular program design by allowing reusable code segments for common operations like arithmetic and input/output, which reduced development time and promoted software reusability—a foundational concept in modern programming.[49][50] This approach, implemented through initial orders that facilitated library integration, influenced subsequent systems by emphasizing structured programming over ad-hoc coding.[51] A key contribution to computer science education and practice was Maurice Wilkes' 1951 publication, The Preparation of Programs for an Electronic Digital Computer, co-authored with David Wheeler and Stanley Gill. This work served as the first comprehensive textbook on programming, detailing techniques for EDSAC including subroutine usage and program preparation, and exerted profound influence on early software development methodologies worldwide.[27][52] The book's emphasis on systematic program design helped standardize practices that informed the evolution of high-level languages and compilers. In historical context, EDSAC was the second electronic digital stored-program computer to achieve regular operation, following the Manchester Mark 1 in 1949, and preceded the UNIVAC I by two years in 1951, underscoring its role in the rapid maturation of von Neumann-style architectures.[53] It directly inspired British computing developments, notably the LEO I, the world's first business computer built by J. Lyons & Co. based on EDSAC's design principles for commercial data processing.[54][55] EDSAC's design, rooted in von Neumann's 1945 EDVAC report, provided an early, working exemplar of the stored-program paradigm, serving as a foundational case study for understanding sequential instruction execution and memory-program integration in computer science curricula today.[56] Despite its academic origins yielding no direct institutional commercial spin-offs, EDSAC's emphasis on practical reliability fostered enduring intellectual impacts, though it remains underrecognized relative to ENIAC's publicity as the first general-purpose electronic computer.[49][57]

References

User Avatar
No comments yet.