Sorry, java must be enabled.

Running the EDSAC Simulator

At the moment the EDSAC simulator should be loading up in the background. We've tried to make the applet as compatible as is humanly possible although along the way we've encountered a large number of bugs/anomalies with various setups. One in particular can't be fixed as far as we know without the help of the user.

This bug/anomaly involves Netscape 4.0x running under Linux. Loading the applet causes an error "The following images failed to load..." to be shown. To fix this just follow the instructions below.

Find your preferences file, this will usually be called "~/.netscape/preferences.js". Insert the following line: "user_pref("signed.applets.low_security_for_local_classes", true);"

The applet should now load fine.

The rest of the information on this page will allow you to get your first program running and will also cover some of the more advanced features of the simulator.

Basic Windows

The EDSAC 1999 has three components:

A main window: this controls the operation of the simulator. It contains graphical displays of the EDSAC's memory, and control buttons to operate the EDSAC.

An editor window: this contains program source code written in EDSAC assembly code. It is possible to display several editor windows at once, but only one program "tape" can be loaded into the EDSAC 1999 at a time. In the same way it was possible to have several program tapes in the room with the 1949 EDSAC, but only one program tape could be used at a time.

An output window:  this contains the text that has been output from an executing program - the same information that would have been sent to the teleprinter in the 1949 EDSAC.

Applet vs Application

EDSAC 1999 is written in Java. Java is a cross-platform programming language, which means that the EDSAC program can be run on various operating systems. Java also gives us the ability to program both an application version (standalone) and an applet version which can be run from your browser. When a Java program is run as an applet, certain features of the language are disabled for security reasons and other features are not supported at all. Where the applet and application run in different ways the documentation will describe both.

Loading a program

When EDSAC 1999 is run as an applet loading and saving local files is disabled for security reasons. This means that the application can load and save files in a variety of different ways.


The easiest way to run a program from the applet is to use the Examples menu to gain immediate access to the available example programs. These are grouped into categories to distinguish programs written for the original EDSAC from those explicitly developed as examples for the simulator.

The other way to run programs from the applet is to use the File:Open new editor menu option to open a new editor window. Edsac programs can then be pasted into this window using standard cut and paste commands. In order to include standard subroutines in a program, one can simply select the desired routine from the menu Subroutines at the top of the editor window. This automatically inserts the subroutine at the current cursor position.


Aswell as the above methods for loading programs the application can also load local edsac files. To do this use the File:Open menu option. This will bring up a file selector dialog box and will open a new editor window.

Probably need some more here!!!

Executing a Program

The following controls are available when executing a program on the EDSAC 1999:

Control Keyboard Shortcut Operation
Start S Loads initial orders, and loads program tape.  When tape has been loaded, execution of program commences.
Stop Escape Halts execution of the current program.
Reset Enter Continues execution of the halted program at the current execution point.  Some programs will pause until they receive an input from the user, in which case, press reset to continue.
Single Step Space Bar Executes a single program instruction at a time.
Clear C or Delete Clears memory contents (only operates when program is halted)
Dial Numbers 0 to 9 Some programs run interactively, and the telephone dial provides a method for the user to supply a program with a numeric input.

Program Output

The teleprinter output produced by a program is displayed in the output window. The text in this window can be cleared via the menu command "Clear". Some programs also produce a graphical display by arranging for the memory values in a particular long tank to produce a pattern on the Cathode Ray Tube.

Other Features

CRT Selector

A useful feature of the original EDSAC was a Cathode Ray Tube (CRT) oscilloscope that could be patched onto any of the EDSAC's mercury delay tanks. This principle is implemented on the EDSAC 1999 using a display that can be used to show the contents of any of the long tanks

To display a long tank on the CRT, select the tank number using the horizontal arrow selector buttons. The currently displayed tank number is displayed in the CRT Selector.

Short Tanks

There are five other memory tanks on the EDSAC, broadly equivalent in function to registers.  These are known as short tanks, and are useful for monitoring program execution. Updating these displays does slow down the operation of EDSAC 1999 due to the number of screen refreshes necessary. Because of this there is an option to turn the short tanks off, this can be found on the Options menu of the main window. Turning the short tanks off can considerably increase the speed of computationally heavy tasks, and has no effect on the actual operation of the program.


Displaying the contents of the memory tanks on a CRT was termed "peeping" by the original EDSAC users. Extending this metaphor, it is possible to view the numerical contents of any memory tank on the EDSAC 1999 by positioning the mouse over the memory display. The contents of this memory location are displayed in hexadecimal at the bottom of the main menu, as illustrated above.

Initial Orders

The EDSAC had a set of Initial Orders that constituted a rudimentary equivalent of an operating system for the computer. In the same way, computers today may use UNIX, Windows 98 or many other operating systems to produce a system upon which other computer programs are run.

When the EDSAC was first designed, Maurice Wilkes wrote (with subsequent modifications by David Wheeler) a set of Initial Orders that were used from the earliest days of the EDSAC until August 1949. A second version of these orders, which supported the concept of subroutines, was implemented in August 1949 by Wheeler. Programs written for the EDSAC were designed to work on the particular version of the Initial Orders that was being used at the time.

So that programs can be run from either period, India EDSAC supports both sets of Initial Orders, and the correct version should be selected before running an EDSAC program. A common problem with EDSAC programs not running correctly is not selecting the appropriate version of initial orders. To do this, select the Options menu on the main window, and click upon which version of the Orders you wish to use. Since the vast majority of programs run on the EDSAC made use of initial orders 2, this is generally assumed as a default and any program which relies on the first version of the initial orders includes a comment to that effect.


The original EDSAC ran at a clock speed of 500Hz, and took approximately 1.5ms to execute each instruction in a program. The speed of the EDSAC 1999 is dependent upon the computer on which it is run, and certain instructions within a program will be executed at varying speeds. However broadly speaking, a speed increase of between 3 and 15 times that of the original is possible.

To give some idea of the differing speed, the EDSAC 1999 features a clock. The clock runs at the speed of the original EDSAC, hence if it appears to be turning unnaturally fast, this show that the EDSAC 1999 is running considerably faster than the original machine.


In 1952, a telephone dial was added to the EDSAC. This made it possible for users to give programs information at run time, instead of only when the program was written. Although this feature is strictly out of the time scale of our emulation period, it allows some interesting programs to function, so it has been included for completeness.

When input is requested, the program will pause. To operate the dial click on the number with the mouse or type the number using the keyboard.