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
Using the 220 Magnetic Tape Storage Unit
The Burroughs 220 supported two types of magnetic tape device:
- The Tape Storage Unit or TSU. This was a traditional, upright, reel-to-reel drive.
- The DataFile. This was a semi-random access device that used multiple tape strips and a moveable tape head.
Both types of devices interfaced to the 220 processor and memory through the Tape Control Unit (TCU). The system supported one Control Unit. The Control Unit could support a total of ten devices, which could be any combination of TSUs and DataFiles.
This page discusses the implementation and operation of the Tape Control Unit and TSU in the retro-220 emulator.
The 220 TSU had an unusual design for its time. Each drive was in a waist-high cabinet, with a slanted cover on top. Raising the cover gave access to the reels, vacuum columns, and tape heads. The control panel was on the front of the cabinet just below the cover latch. This picture from the installation at Georgia Tech shows a typical string of drives.
See Section 2.2 in the Handbook of Operating Procedures for the Burroughs 220 for a description of the drives and their operation, and Section 4 in the Operational Characteristics of the Burroughs 220 for a detailed description of the block format, drive capabilities, and instructions that controlled the drives.
Overview of 220 Magnetic Tape
Physical and Recording Characteristics
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.
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.
The first word in a block was termed the "keyword." If this word was unique and written in ascending order among the blocks, instructions could search bi-directionally for the block whose keyword was greater-than or equal to a specified value. Other instructions could scan the tape in the forward direction for a matching value in any one of the first 10 words in a block. Standard read and write operations tied up the processor for their duration, but tape search and scan proceeded independently and asynchronously of the processor.
Only one read, write, space, search, or scan operation could take place at a time, although multiple drives could be rewinding simultaneously. Attempting to initiate a read, write, space, or search/scan while another such operation was in progress, or to initiate an operation against a drive that was in rewind, caused the processor to wait until the current operation completed. Attempting to access a drive that was not ready or not present caused the processor to halt with a Magnetic Tape Alarm, and generally required manual intervention to recover.
Tapes needed to be pre-formatted before use. This was a two-pass process known as "editing" a tape, and could be performed by the drive while it was off-line. This process erased the tape during the forward pass. In the reverse pass, the drive examined the tape, and if it detected flaws, wrote a special pattern called a "flaw marker" in both lanes for a length longer than the largest possible block. During later operation, the drive automatically skipped over flaw-marked areas when reading and writing.
The retro-220 emulator does not model tape parity or recording errors, and thus does not require editing of tape images. For this reason, it does not support the actual editing process. It is possible, however, to create a new tape image that behaves as if it were an edited tape.
Magnetic Tape User Interface
This section describes the user interface for the Control Unit and TSU as implemented in the retro-220 emulator. See the Configuring the Emulator page for instructions on determining the number and types of tape devices the system will use.
Magnetic Tape Control Unit
The TCU is the interface between the drives and the 220 processor and memory. It controlled all tape operations except rewind, which was handled locally by the drive. Since there was only one TCU per system, there could be only one tape operation (except rewind) active at a time.
In the emulator, the TCU has a window with a number of lamps and a button.
The physical TCU had additional panels that reflected the status of circuits involved with physical recording on tape, parity generation and checking, and maintenance of the unit. None of these have any meaning in the context of the emulator, and thus have been omitted.
The emulator displays the TCU to indicate the status of tape operations. Except to recover from some error conditions, you do not need to interact with it, and can minimize the window if desired.
The CLEAR button is used to reset the TCU. This is often needed to clear status from the unit after attempting to access a not-ready or non-present drive, and to recover from certain tape positioning errors. This button functions identically to the TCU CLEAR switch on the Control Console.
The left-most register on the panel contains a number of "toggles" or flip-flops that indicate the status of a tape operation. This contains the lamps from the left-most register on the Tape Control Unit (see Figure 2-13 in the Operating Procedures manual), plus a couple of lamps that were located in other registers. Some of these are undocumented. Only the ones we have information for are mentioned below:
- TYC -- the "yozzle" toggles. These were used to control automatic tape retry in case of an error. The emulator does not model error retry, but both toggles will be lit (value=3) if the emulator detects Read Check condition.
- TCF -- Tape Comparison Failure. This lamp will be lit if the preface (block length) read from tape does not match the block length in a tape overwrite instruction.
- TF -- tape forward. This lamp will be lit if the tape is moving in a forward direction.
- TB -- tape backward. This lamp will be lit if the tape is moving in a backward direction.
- TPC -- tape preface check. This lamp will be lit if the emulator detects a tape block with a length of 2-9. These are invalid block sizes.
- TX1 ... TX10 -- the X counter. This register indicates certain alarm conditions. For example, TX2 and TX10 will be lit if an attempt is made to access a drive that is not present or not ready.
The C register is a copy of certain digits from the tape instruction in the processor's C register. The digits of this register are numbered from left to right:
- C1 and C2 -- both digits normally hold the unit number of the drive being addressed.
- C3 -- this digit typically indicates the number of blocks being read, written, or spaced. It will count down as blocks are passed.
- C4 and C5 -- these digits normally hold the length of a block being written. The value zero implies 100 words.
- C6 -- The units digit of the tape instruction op code. Add 50 to this value to determine the processor op code.
The T register initially holds a copy of the processor's C register when a tape instruction is executed. During tape search, this register holds the value of the keyword being searched for. During tape scan, this register holds the value of the category word being searched for.
Magnetic Tape Storage Unit
The TSU handles open-reel tapes. In the emulator, these units are physically labeled MTA through MTJ. Each unit in the current system configuration has a separate window in the browser:
Several switches and lamps from the panel of the physical TSU have been eliminated, as they have no function in the emulator. Two new buttons have been added in the emulator version of the drive to enable loading and unloading of tape images.
Across the top of the window representing the tape drive is a series of blue lamps indicating the drive status:
- RWL -- Rewind Lockout. The 220 had two tape rewind instructions, a regular Rewind (MRW) and Rewind, Deactivate (MDA). The second instruction left the drive in a "lockout" condition after the rewind completed, making the drive effectively not-ready and requiring the operator to manually release that condition by pressing the RWLR button on the panel, as discussed below. When this lamp is lit, the drive is in the lockout condition.
- NOT WRITE -- 220 tapes did not have a write-protect ring like the later IBM-standard tapes. Instead, writing to a tape was disabled by the WRITE and NOT WRITE buttons on the panel, discussed below. When this lamp is lit, the drive is in a write-protected state and will not write to the tape.
- NOT READY -- When this lamp is lit, the drive is not ready for use. The drive is not ready when no tape is mounted, Transport Power is Standby (see below), the drive is in Rewind Lockout, or the UNIT DESIGNATE control is set to LOCAL.
- UNIT DESIGNATE -- this lamp lights briefly when this unit is currently selected for a tape operation. Except during rewind, it remains lit while the operation is in progress.
TRANSPORT POWER -- These two lamps indicate the status of power to the drive transport and are controlled by the two buttons below them.
- ON -- The drive has been placed on line, and if no other conditions inhibit it, is ready for use by the processor.
- STANDBY -- The drive is off line and in a not-ready condition.
To the right of these lamps is an area that contains a number of annunciators that light to indicate the status of the drive. After a tape image has been loaded into the drive, a small icon representing a tape reel will also appear in this area. The icon will spin in response emulated tape motion in the drive. The annunciators are:
- 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.
- 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.
The second row of controls on the panel consist of a set of buttons that control the drive:
- LOAD -- clicking this button will initiate loading of a tape image into the drive. This button was not present on physical 220 drives and is an artifact of the emulator. See the section Loading and Unloading Tape Image Files below for more information. The button is active only when no tape image is currently loaded.
- UNLOAD -- clicking this button will initiate unloading of a tape image from the drive. This button is also an artifact of the emulator. See the section Loading and Unloading Tape Image Files below for more information. The button is active only when a tape image is currently loaded, the tape is rewound (the AT BOT annunciator is lit) and Transport Power is in Standby.
- REWIND -- clicking this button will initiate a manual rewind of the tape image. It is active only when a tape image is loaded and Transport Power is in Standby.
- ON -- clicking the button will place the drive on line. It is active only when a tape image is loaded.
- ST'DBY -- Standby. Clicking this button will place the drive off-line. It is active only when a tape image is loaded and the drive is on line.
The third row of controls on the panel consists of more buttons and the unit designation control:
- RWLR -- Rewind Lockout Release. Clicking this button will release the drive from a rewind lockout condition, indicated by the RWL lamp being lit. The button is inactive when rewind lockout is not in effect.
- WRITE -- Clicking this button will remove write protection, enable writing to the mounted tape image, and turn off the NOT WRITE lamp. The button is active only when a tape image is mounted in the drive.
- NOT WRITE Clicking this button will turn on write protection, disable writing to the mounted tape image, and turn on the NOT WRITE lamp. The button is active only when a tape image is mounted in the drive.
- UNIT DESIGNATE -- this pull-down list determines the logical unit number of the drive. This is the unit number that tape instructions in the processor reference. No two drives in ready status should have the same logical number at the same time. If two or more drives are assigned the same number simultaneously, tape operations against that unit number will act as if the unit is not ready. Selecting LOCAL from the list will place the unit in a not-ready status and illuminate the NOT READY lamp.
The unit designation for each unit is persisted in the system configuration and restored after an emulator restart. The drive is otherwise initialized in an unloaded state.
The progress meter at the bottom of the window shows the relative amount of tape left on the supply reel when a tape image has been mounted in the drive. As the tape moves forward, the meter bar will diminish towards the left; as the tape moves backward, the bar will increase towards the right
Above the progress meter is the name of the tape image file currently loaded into the drive, if any. If an "edited" (blank) tape image has been loaded, this will read "(Edited tape)". If a pre-formatted tape image has been loaded, this will show the size of the blocks with which the image has been formatted.
Loading and Unloading Tape Image Files
This section describes how to load and unload tape images in the TSU.
Loading Tape Images
The LOAD button is used to mount a reel of tape, in the form of a tape-image file, into the TSU. This button is active only when no tape is presently loaded in the drive and Transport Power is in Standby. Clicking this button will open a tape-loader dialog box:
There are three ways to load a tape image using this dialog box:
- To load a new "edited" tape (i.e., one that has been erased and has no blocks written on it), select "(Edited tape)" from the Format pull-down list and click the OK button.
- To load a new tape that has been erased and formatted with blocks of a certain size, select the block size from the Format pull-down list and click the OK button. The list allows you to select block sizes from 10 to 100 words in 10-word increments. The blocks will be written to both lanes and filled with words of zeroes. If you need a tape formatted with blocks having different sizes, you will need to write a program that formats an edited tape. This capability of loading pre-formatted tape images is an artifact of the emulator and was not present on a real 220.
- To load an existing tape-image file, first use the file picker on the window to select the file, then click the OK button.
The Write Enabled checkbox on the tape-loader dialog controls whether the tape image initially will be write-enabled or write-protected when the loader dialog is closed. This will set the NOT WRITE lamp accordingly on the TSU panel. Tape images loaded from a file are by default write-protected. Newly-created edited or formatted tape images are by default write-enabled. Write protection may be changed at any time while a tape is loaded by clicking the WRITE or NOT WRITE buttons on the TSU panel.
The Set Transport Power ON checkbox on the tape-loader dialog controls whether the Transport Power (on-line status) of the drive will be ON or STANDBY when the loader dialog is closed. The default is to turn it on, saving you the trouble of clicking the ON button yourself, which is easy to forget to do.
After a tape is loaded into the drive, the tape-loader dialog will close and a small tape-reel icon will display on the right side of the TSU panel. This icon will rotate as tape commands emulate tape motion in the drive.
To make the drive ready and place it on line, click the ON button to switch Transport Power from Standby to On. The NOT READY lamp should extinguish.
Internally, the tape images are created as if their reels are 3500 feet in length. A tape formatted for 10-word blocks will hold approximately 45,260 blocks per lane. A tape formatted for 100-word blocks will hold approximately 6,832 blocks per lane. The number of blocks per lane on a tape image file is determined by the contents of the file, as discussed below in the next section.
Unloading Tape Images
To unload a tape image, first click the ST'DBY button on the TSU panel to take the unit off line. If the tape is not completely rewound, click the REWIND button to rewind the tape. Once the AT BOT annunciator is lit, click the UNLOAD button. At that point, one of two things will happen:
- If the internal tape image has not been written to since it was loaded, it will simply be discarded.
- If the internal tape image has been written to, an alert will pop up, asking if you want to save the tape image. Clicking OK will unload the image in the drive, and format it as text in a new, temporary window. From this temporary window you can copy or save the text to a file. The format of this text is described in the next section. Clicking the Cancel button will discard the tape image.
It is important to note that if you load a tape image from a file, subsequent tape operations work against the internal tape image, not the file. Therefore, if you discard the tape image, the original file will remain unmodified. If you wish the original image to be updated, unload the internal image and save it as the same file name.
It is also important to note that any tape images loaded in the drives are lost when the system is powered off. If you wish to keep an updated tape image, you must unload and save it before powering off the system.
Format of Tape Image Files
Tape images are maintained externally as simple ASCII text files. Lines in the file may be delimited by carriage-return followed by line-feed, carriage-return only, or line-feed only. Empty lines (those containing no characters or only white space) are ignored. Each non-empty line of text in the file represents one block in one lane. Fields within a block are delimited by commas. Leading and trailing spaces around the fields are ignored. The final comma on a line may be omitted.
The first comma-delimited field on the line represents the lane number and an optional repeat factor. If the field consists of a simple number, it is taken as the lane number. Even values indicate lane 0; odd values indicate lane 1. If the lane number is preceded by another number and an asterisk, the first number is taken as a repeat factor and the second as the lane number. The repeat factor indicates the number of times a block with the indicated size and contents appear at this point on the tape. If the repeat factor is not stated, it is assumed to be 1. For example, if the first field on the line is
12*1, twelve copies of this block will appear at this point on lane 1.
The second comma-delimited field on the line represents the "preface" or block length in words. This should be a decimal number having value 0, 1, or 10-100. Values less than one are taken as 100; values greater than 100 are also taken as 100. Note that values 2-9 represent invalid block lengths and will cause a Magnetic Tape Alarm when encountered by the TCU.
Following the preface field are comma-delimited values representing the words in the block. These are represented as hexadecimal numbers with BCD encoding, which you can think of simply as decimal numbers. Numbers with digits A-F are accepted, but will cause Digit Check Alarm conditions when encountered by the processor. Empty fields (i.e., adjacent commas or commas separated only by white space) are interpreted as words of zero.
The preface value in the second field on the line determines the number of words in the block. If the number of words following that field is less than the preface value, the block will be padded with additional zero words as necessary. If the number of words following the preface field is greater than the preface value, the extraneous words will be discarded.
Blocks in a tape image must be present in the order they occur within their lane. Blocks for the two lanes may be freely intermixed in the tape image, however.
When loading a tape image file, parsing of the lines in the file proceeds as follows:
- Each line is extracted in turn from the text file. If the line is empty, it is ignored and the load proceeds to the next line of the file.
- The text of the line is separated into individual strings of text at the point they are delimited by commas.
- Any leading or trailing spaces in each string are discarded.
parseInt(...,16)function. This function will convert any leading hexadecimal characters (0-9, A-F) in a string to internal numeric form. The number may optionally be prefixed by a hyphen ("-") to indicate it is negative. Any trailing, non-hexadecimal characters in the string are ignored.
- Each converted number is converted to 11 hexadecimal digits by prepending zeroes or discarding any higher-order digits, as necessary. If the number was preceded by a "-", the low-order bit of the sign digit in the word will be set to 1.
When unloading a tape image, the emulator will compress the tape image text in two ways:
- It will trim zero words from the end of each line. If the block words are entirely zero, that line in the unloaded image will consist only of the lane and preface fields.
- Duplicate adjacent blocks will be collapsed into one line with a repeat factor preceding the lane number.
This format has been designed to create and maintain tape image files with a simple text editor. Most spreadsheet programs will read and write comma-delimited text files, so they can be used as well to view and edit tape image files.
The following example shows a tape image formatted with 10-word blocks as it would appear after unloading from a drive. The one-word blocks at the end of each lane are end-of-tape blocks. See Section 4 in the Operational Characteristics manual for details on end-of-tape and control blocks.
0,10,214361383,102427,331426,102163,204361426,9400282162,10000102201,422162,10000490000,480008 0,10,1122160,311502,410402160,301570,1270272160,1131122,4410402160,311508,301570, 0,10,33221000000,301518,2403495,103495,490004,423542,16410182175,351614,2211606,423495 0,10,301690,414217,400184,1480004,411400184,410400183,7331708,301709,1260184,2000381711 0,10,410401805,401261805,5401282174,321805,423551,10000101805,10010182427,1351791,1211805,401261811 5*0,10 0,10,0,0,0,0,0,0,0,0,042330000,2199000000 0,10,20000000000,0,0,20000000000 0,10 0,10,410403147,410403148,410403149,410403150,410403212,410403213,410403221,410403222,410403229,410403230 0,10,16400280001,1403495,10000100001,423500,10000403505,1263500,302597,413505,1403455,423500 0,10,0,42240000,42222156,42342154,42372153,42292152,42392151,42422150,42452149,42212145 0,10 0,10,0,0,0,0,0,42370000,42292116,42420000,42292118,42752119 6714*0,10 0,1,1 6832*1,10 1,1,1