1
0
mirror of https://github.com/pkimpel/retro-220.git synced 2026-05-04 07:00:09 +00:00

Wiki updates for versions 1.03, 1.04, 1.05.

Paul Kimpel
2022-06-30 12:25:56 -07:00
parent a8a2e5ffb7
commit 4cd07f6e0c
9 changed files with 52 additions and 25 deletions

@@ -1,4 +1,4 @@
# Getting Started With the retro-220 Emulator
# 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.
@@ -10,9 +10,9 @@ The emulator runs in a standard graphical web browser. It is written entirely in
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](#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](#the-web-server) and [The Emulator Files](#the-emulator-files).
* In your web browser, access the **`webUI/B220.html`** home page from the web server to run the emulator. See the following section on [Starting the Emulator](#starting-the-emulator).
* Use a suitable web browser -- at present that means Mozilla Firefox, Google Chrome, Apple Safari, or the newer version of Microsoft Edge that is based on WebKit. See the following section on [The Web Browser](#the-web-browser).
* Optionally, download and set up the emulator files on a web server. Instead of using your own web server, however, you can run the emulator from our hosting site. See the following sections on [The Web Server](#the-web-server) and [The Emulator Files](#the-emulator-files).
* In your web browser, access the **`webUI/B220.html`** home page on the web server to run the emulator. See the following section on [Starting the Emulator](#starting-the-emulator).
## The Web Browser
@@ -28,11 +28,11 @@ The retro-220 emulator pushes the limits in several areas of current web-browser
* HTML `<meter>` element
* `IndexedDB` API (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).
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 work in Microsoft Internet Explorer or the original versions of Microsoft Edge. It should work with the newer versions of Edge that are based on WebKit.
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.
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 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
@@ -42,7 +42,7 @@ The easiest way to use the emulator is to load it from the web site we have set
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](#setting-up-a-web-server) for the necessary information.
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](#setting-up-a-web-server) for the necessary information. The emulator will likely not run directly from your local file system, although it can be turned into a standalone application using [Electron](https://www.electronjs.org/).
# Starting the Emulator
@@ -66,7 +66,7 @@ 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.
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 of 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.
@@ -114,7 +114,7 @@ Since the retro-220 emulator user interface is designed to mimic the consoles an
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](http://datatron.blogspot.com/2018/02/introducing-burroughs-220.html).
* [Introducing the retro-220 Emulator](http://datatron.blogspot.com/2018/06/introducing-retro-220-emulator.html) gives background on development of the emulator. It also describes how to use the Control Consoles and peripheral input/outut devices.
* [Introducing the retro-220 Emulator](http://datatron.blogspot.com/2018/06/introducing-retro-220-emulator.html) gives background on development of the emulator. It also describes how to use the Control Consoles and peripheral input/output devices.
<!--
* [Using the retro-205 Cardatron](http://datatron.blogspot.com/2015/03/using-retro-205-cardatron.html) describes the interface for punched-card equipment.
@@ -140,7 +140,7 @@ If you need a small, simple web server to host the emulator locally, we have had
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](https://github.com/pkimpel/retro-220). 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:
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](https://github.com/pkimpel/retro-220). You can clone the project with Git or Subversion, or download a ZIP archive of the files. To do this, click the green **Code** button on the right-hand side of the page and select **Download ZIP**:
![GitHub Download](images/GitHub-Clone-Download.png)

@@ -200,14 +200,14 @@ The following conventions are used for operands in the table below:
| u000 07 aaaa`|`PWI`|`aaaa,u` |
| cccc 08 aaaa`|`KAD`|`[aaaa],[cccc]` |
| dnnf 09 aaaa`|`SPO`|`aaaa,nn,[d]` |
| 0000 10 aaaa`|`CAD`|`aaaa` |
| 0001 10 aaaa`|`CAA`|`aaaa` |
| 0000 11 aaaa`|`CSU`|`aaaa` |
| 0001 11 aaaa`|`CSA`|`aaaa` |
| 0000 12 aaaa`|`ADD`|`aaaa` |
| 0001 12 aaaa`|`ADA`|`aaaa` |
| 0000 13 aaaa`|`SUB`|`aaaa` |
| 0001 13 aaaa`|`SUA`|`aaaa` |
| 0000 10 aaaa`|`CAD`|`aaaa,[cccc]` |
| 0001 10 aaaa`|`CAA`|`aaaa,[cccc]` |
| 0000 11 aaaa`|`CSU`|`aaaa,[cccc]` |
| 0001 11 aaaa`|`CSA`|`aaaa,[cccc]` |
| 0000 12 aaaa`|`ADD`|`aaaa,[cccc]` |
| 0001 12 aaaa`|`ADA`|`aaaa,[cccc]` |
| 0000 13 aaaa`|`SUB`|`aaaa,[cccc]` |
| 0001 13 aaaa`|`SUA`|`aaaa,[cccc]` |
| cccc 14 aaaa`|`MUL`|`aaaa,[cccc]` |
| cccc 15 aaaa`|`DIV`|`aaaa,[cccc]` |
| cccc 16 aaaa`|`RND`|`[aaaa],[cccc]` |
@@ -241,7 +241,7 @@ The following conventions are used for operands in the table below:
| sLnn 36 aaaa`|`BZA`|`aaaa,[sL],[nn]` |
| sLnn 37 aaaa`|`BFR`|`aaaa,sL,nn` |
| sLnn 37 aaaa`|`BZR`|`aaaa,[sL],[nn]` |
| u000 38 aaaa`|`BCS`|`aaaa,[u]` |
| u000 38 aaaa`|`BCS`|`aaaa,u` |
| ccc0 39 aaaa`|`SOR`|`[aaaa],[ccc]` |
| ccc1 39 aaaa`|`SOH`|`[aaaa],[ccc]` |
| ccc2 39 aaaa`|`IOM`|`aaaa,[ccc]` |

@@ -254,7 +254,7 @@ The following conventions are used for operands in the op code table below:
| sL00 36 aaaa`|`BZA`|`aaaa[/sL]` |
| sLnn 37 aaaa`|`BFR`|`aaaa/sL,nn` |
| sL00 37 aaaa`|`BZR`|`aaaa[/sL]` |
| u000 38 aaaa`|`BCS`|`aaaa,[u]` |
| u000 38 aaaa`|`BCS`|`aaaa,u` |
| 0000 39 aaaa`|`SOR`|`[aaaa]` |
| 0001 39 aaaa`|`SOH`|`[aaaa]` |
| 0002 39 aaaa`|`IOM`|`aaaa` |

@@ -32,7 +32,7 @@ For more background on magnetic tape for the 220, see the following two posts on
The TSU used a 0.75-inch wide tape with a plastic base, wound on metal reels. Each reel could hold up to 3500 feet of tape. Data was recorded in six tracks -- four data tracks encoded as BCD digits, an even-parity track, and a control track. The tape physically supported 12 tracks, however, so data was recorded in two "lanes" along the length of the tape, with the tracks of the two lanes being interleaved. The 220's tape search, scan, lane-select, and rewind instructions provided the ability to switch between lanes; read, write, and positioning instructions operated on only the currently-selected lane.
Data was recorded on the tape in variable-length blocks that could range in size from 10-100 words. A full reel of tape could store about 6830 100-word blocks per lane. Each word in a block consisted of 11 data digits (including sign) plus a spacer digit. There were an additional 72 digits in each block representing control data and inter-block gap. The tape moved at 120 inches/second, recording at 208.33 bits/inch. Rewind speed was the same as read/write speed, so rewinding a full 3500-foot tape took almost six minutes.
Data was recorded on the tape in variable-length blocks that could range in size from 10-100 words. A full reel of tape could store about 6830 100-word blocks per lane. Each word in a block consisted of 11 data digits (including sign) plus a spacer digit. There were an additional 72 digits in each block representing control data and inter-block gap. The tape moved at 120 inches/second, recording at 208.33 bits/inch. Rewind speed was the same as read/write speed, so rewinding a full 3500-foot reel of tape took almost six minutes.
The Tape Control Unit supported reading, writing, or positioning (skipping) up to 10 blocks with a single instruction. The block format allowed a drive to overwrite existing blocks on a tape reliably, something that was not practical with the variable-length block scheme of IBM tape drives that later became the de facto standard.
@@ -108,6 +108,7 @@ To the right of these lamps is an area that contains a number of annunciators th
* **UNLOADED** -- no tape image is presently loaded in the drive. This annunciator appears in place of the reel icon.
* **LANE _n_** -- indicates the currently-selected lane for the tape image. This annunciator appears only when a tape image is loaded in the drive.
* **_(word index)_** -- indicates the current position of the tape as an offset from the beginning-of-tape (BOT) marker in units of 220 11-digit words, including the space for gap and control information, which amounted to six words per block. In addition, each tape has an area of 2083 words of "flaw markers" between the BOT marker and its first block. Since blocks on the tape could be of variable length, it is generally not possible to convert this index to a block number, although it was common to use a fixed block size on a tape, often 100 words. In that case, reading or writing a 100-word block would advance the index by 106.
* **AT BOT** -- the tape image is currently positioned at Beginning of Tape (also known as the "load point"). The tape cannot be moved further in a backward direction.
* **AT EOT** -- the tape image is currently positioned at End of Tape. The tape cannot be moved further in a forward direction.
* **REWINDING** -- the tape image is currently rewinding.

@@ -97,6 +97,15 @@ The right-most group in this row contains switches used primarily for debugging.
1. After the word at memory address 0000 has been stored, the Processor branches to location 0001 and begins automatic execution.
* **TCU CLEAR** -- Clicking this momentary switch clears the Magnetic Tape Control Unit and allows it to restart an operation after a Magnetic Tape Subsystem error halt. It has the same effect as clicking the **CLEAR** switch on the Magnetic Tape Control Unit.
There are two pseudo buttons on the main panel that were not present on a real 220 and that do not normally display, but are useful for operating the emulator:
![220 Supervisory Panel Pseudo Buttons](images/ControlConsoleHiddenButtons.png)
The "buttons" are actually blank caption boxes over positions where there is no switch or indicator lamp. The captions for these are not normally visible, but will become so when you hover over them.
* **LOAD CARD** -- This "button" is on the right of the **OPERATION** group of indicators in the center of the panel. Clicking this caption box will clear the system, load a read instruction for Cardatron unit #1 (1000 60 0000) into the C register, and set the **EXECUTE** toggle. It is useful for initializing the system to load a program from cards.
* **CLEAR MEMORY** -- This "button" is on the far right of the **COMPARISON** indicators. Clicking this caption box will clear the entire system memory to zeroes. It will not affect any of the registers.
## Interval Timer

@@ -73,8 +73,12 @@ The emulator implements a subset of the controls that a real reader had. The con
* **REMOTE/LOCAL** -- this switch determines whether the reader is on line or off line. The emulator always initializes the reader in **LOCAL** mode. When the reader is on line, the blue **READY** lamp is lit.
* **HI/LOW SPEED** -- this switch controls the speed of the reader. High speed is 1000 characters/second; low speed is 500 characters/second. This switch can be changed at any time, even while the reader is operating. The emulator persists the setting over emulator restarts.
* **REWIND** -- Rewinds the current tape (actually the internal tape image buffer) to the beginning. The rewind speed is ten times the reading speed. This button only works when the reader is in **LOCAL** mode.
* **UNLOAD** -- Unloads the current tape image and clears the tape image buffer. This button also only works when the reader is in **LOCAL** mode.
* **UNIT DESIGNATE** -- this pull-down list specifies the unit number to which the reader will respond. The list has an additional selection, **OFF**, which effectively places the reader off line.
Under the **UNIT DESIGNATE** control is a number that indicates the number of words read from the tape image buffer. This is reset when the **REWIND** or **UNLOAD** buttons are clicked, or when a new tape image is loaded after the current image buffer has been read to its end.
Below these controls is a file picker that is used to load tape image files into the reader. Its use is discussed in the section below on loading a tape image.
Below the file picker is a progress bar. When a tape image is loaded into the reader, the bar will be highlighted across its width. As data is read, the highlighted portion will shrink towards the left, indicating the proportional amount of "tape" left to be read.
@@ -154,10 +158,23 @@ A tape image file with mixed numeric and alphanumeric words looks like this:
Non-printing control characters are represented by certain ASCII substitutions:
* `_` translates to the "blank" (non-printing) character (code 02)
* `^` translates to form-feed (code 15).
* `|` translates to carriage-return (code 16)
* `~` translates to horizontal tab (code 26)
|ASCII|220 Code|IBM 046|Description|
|-----|--------|-------|-----------|
|`_` |02|SP 1|The non-printing character|
|`>` |05|PI 5||
|`\` |06|SP 2||
|`]` |12|PI 2||
|`^` |15|PI 6|Form-feed|
|`\|`|16|CR|Carriage-return (new line)|
|`?` |17|ERROR|Error code (invalid punch pattern)|
|`{` |22|PI 3||
|`}` |25|PI 4||
|`~` |26|SKIP|Horizontal tab|
|`:` |27|EC 2|End card 2|
|`[` |32|PI 1||
|LF |35|PI 7|End-of-Word code (represented by an ASCII line delimiter, CR/LF or LF)|
|`"` |36|EC 1|End card 1|
|\` |37|CT|Correct tab|
The 220 could read paper tapes in two formats. The standard format illustrated above read the sign as the first digit of a word, followed by the digits or characters from highest to lowest sequence. The "inverse" format read the sign as the last digit of a word. This format was implemented for compatibility with certain types of paper-tape equipment. Because the sign is read last in the inverse format, alphanumeric translation is not possible.

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 21 KiB