Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
Getting Started With the retro-220 Emulator
The retro-220 emulator is an implementation of the Burroughs 220 computer system. The 220 was a late-1950s, vacuum tube, decimal, core-memory system. This page describes how to set up the emulator.
To set up and use the web-based emulator, you will need to do the following things, which are discussed in more detail in the sections below:
- Use a suitable web browser -- at present, that means Mozilla Firefox, Google Chrome, or Apple Safari. See the following section on The Web Browser.
- Optionally, download and set up the emulator files on a web server. Instead of using your own web server, you can run the emulator from our hosting site. See the following sections on The Web Server and The Emulator Files.
- In your web browser, access the
webUI/B220.htmlhome page from the web server to run the emulator. See the following section on Starting the Emulator.
The Web Browser
The retro-220 emulator pushes the limits in several areas of current web-browser technology. We are taking advantage of many features in HTLM5, its related DOM APIs, and CSS 3. As a result, not every web browser is capable of hosting the emulator. We rely, at a minimum, on the following advanced features:
IndexedDBAPI (used only with the DataFile tape unit)
The emulator has been tested and works in Mozilla Firefox (version 21 and above) and Google Chrome (version 35 and above) for Windows, Linux, and Apple OS X. Somewhat earlier versions of these browsers may also work. The emulator has also been tested and works in Apple Safari 9.0.2 for OS X, and may work in some versions of Safari 8. The emulator does not presently work in Microsoft Internet Explorer (at least through IE11) or Edge (in Windows 10).
Note that the windows the emulator opens are considered by most browsers to be "pop-ups." Most browsers are configured by default to inhibit pop-up windows from opening, but allow you to override this for specific web sites. Thus, you will need to disable pop-up blocking for the site from which you run the emulator.
You will need a reasonably powerful workstation for the browser. Emulation of the 220 instructions requires almost nothing, but update of the panels and I/O device windows can be very graphics-intensive, and requires a fair amount of horsepower. Any standard PC manufactured since 2010 should be adequate. It also helps to have a good-sized display, as the Control Console window is rather large.
The Web Server
The easiest way to use the emulator is to load it from the web site we have set up on a hosting service. Just point your browser to the following URL:
The web server is needed only to load the emulator into your local workstation. Once the emulator is loaded and running, it requires no further access to the server.
If you choose not to use our hosting site, or some other site that is already set up to serve the emulator files, you will need to configure a web server and load the emulator files to it. See the appendix Setting Up a Web Server for the necessary information.
Starting the Emulator
This section describes how to run the emulator and prepare it to run 220 programs.
To run the emulator from our hosting site:
- In your browser, access the page at http://www.phkimpel.us/Burroughs-220/.
- Click the "220 Emulator Home Page" link on that page.
- On the resulting page, click the blue Start the Emulator button.
To run the emulator from another web server:
- Open the
webUI/B220.htmlpage under the URL for the virtual directory you have set up.
- On the resulting page, click the blue Start the Emulator button.
The emulator home page should look similar to this:
When you start the emulator, it will open an additional window for the Control Console, plus a window for each of the peripheral devices in the system configuration. Some overlap of windows is inevitable, and depending on the size of your display screen, some windows may be hidden by others. All of the windows are resizable, and may be moved around your screen in any way you wish.
You may minimize any of the windows, but do not close them -- there is no way to reopen the windows later without shutting down and restarting the emulator. The emulator may display an alert if you attempt to close one if its windows, but this is browser-dependent. Most modern browsers will display a close alert only if you have previously interacted with the window in some way, e.g., clicked on one of its elements.
In addition, while the emulator is running, it is not a good idea to minimize the emulator home page or make another tab active in the window that contains the home page. Current versions of at least Firefox and Chrome slow down the execution of scripts running from minimized windows or inactive tabs, which in turn will cause the emulator to run very slowly. It is best to open the home page in its own window.
The first time you run the emulator, it will initialize with the following default configuration. This configuration has been designed to work with the software projects initially developed with the emulator.
- 5000 words of memory
- Supervisory teletype printer (the "SPO")
- Paper-tape reader
- No Paper-tape punch
- Cardatron control unit with:
- Card reader unit 1
- Card punch unit 1
- Line printer unit 2
- Magnetic tape control unit with:
- Tape Storage Unit A (no designated unit number)
- Tape Storage Unit B (designated as unit #1)
This default configuration can be changed by clicking the blue Configure System button on the emulator home page. That button is enabled only when the emulator is in a "powered-down" state, i.e., just after it has been initially loaded, or after the red POWER OFF button has been clicked on the Control Console.
See the Configuring the 220 Emulator page for more information on the components of the system configuration and how they can be changed.
The main purpose of the retro-220 emulator is to be able to run 220 software. When you load the emulator, the 220 memory is initialized with a few small demo programs. You can run these from the console, as described in the Using the Control Console page.
A few significant pieces of 220 software have been found and recovered. The source and object code for these are in the software/ directory of our GitHub project site. These can be downloaded individually and run in the emulator. These projects include:
- The Burroughs Algebraic Compiler (BALGOL), an early Algol-58 implementation.
- The four example programs from the Burroughs Algebraic Compiler Reference Manual.
- The SNAP assembler for the 220, recovered by its author, Michael Mahon, and generously made available to this project.
Documentation and References
The Burroughs PDF document archive at bitsavers.org has scans of a few manuals for the 220:
- Burroughs 220 Operational Characteristics.
- Datatron 220 Instructions.
- Handbook of Operating Procedures for the Burroughs 220.
- 220 Pocket Card.
Since the retro-220 emulator user interface is designed to mimic the consoles and control panels of a real 220, you must be somewhat familiar with the way those consoles and panels worked. The best guide is the Operating Procedures manual cited above.
Emulator operation and some background on the 220 system are also described in the following article on Tom Sawyer's 205 and 220 blog:
- Introducing the Burroughs 220.
- Introducing the retro-220 Emulator gives background on development of the emulator. It also describes how to use the Control Consoles and peripheral input/outut devices.
Setting Up a Web Server
This section describes setting up and configuring a web server to host the retro-220 emulator.
Using Your Own Server
If you use your own web server, it can run on your local workstation and serve files from there, or you can access some other server remotely over the Internet.
If you need a small, simple web server to host the emulator locally, we have had good success with mongoose (https://github.com/cesanta/mongoose). It can run on the same workstation as your browser to serve the emulator files using the loop-back port (localhost or 127.0.0.1). Versions are available that run under Windows, Linux, UNIX, and Mac OS. It is easy to set up. Under Windows, it can run either on demand as a user program or as a Windows Service.
The Emulator Files
Unless you are running your web server on the same workstation as your web browser, you do not need to download or store the emulator scripts on your workstation. You load it as you would any other web page.
If you want to set up your own web server, the easiest way to obtain the emulator files is to download them from our GitHub project repository. You can clone the project with Git or Subversion, or download a ZIP archive of the files. To do this, click the green Clone or download button on the right-hand side of the page:
The emulator is hosted in two directories of files:
emulator/contains the Processor module.
webUI/contains everything else you need to run the system. In particular, it contains the Console user interface and the peripheral device drivers.
A third directory,
software/, contains source and object code for the software projects and miscellaneous utilities that have been developed with the emulator. These are described in other wiki articles and the
README files embedded within their directories.
A fourth directory,
webSite/, contains the web pages for the hosting site. You are welcome to use these if you wish. The home page for the hosting site is
index.html and must be located at the root of the project files. Use the "220 Emulator Home Page" link on that page to run the emulator.
Establish the Web Server
The general steps to set up the emulator files are:
- Create a new virtual directory for the web server, e.g.,
/retro-220/, to hold the emulator files.
- Download the emulator release as described above.
- Place the files in the directory on your server's file system to which the virtual directory is mapped. You will need the files from at least the
webUI/directories. Those directories must reside at the root of the virtual directory.
- If you choose to use the
webSite/files, that directory and the
index.htmlfile must also be at the root of the virtual directory.
- To support the web fonts used by the emulator and hosting site, you may need to create a MIME-type mapping in the web server configuration for at least one of the following file extensions: