1
0
mirror of https://github.com/pkimpel/retro-220.git synced 2026-01-13 15:18:24 +00:00
3
UsingTheCardatron
Paul Kimpel edited this page 2018-07-15 15:20:16 -07:00

Using the 220 Cardatron

The Cardatron was a set of interface units that allowed a 220 to use standard IBM punched card equipment. The Cardatron consisted of a single Control Unit and up to seven Input or Output Units. Input Units attached to card readers; Output Units attached to tabulators (line printers) and card punches. One Input or Output Unit was required for each card machine.

The Input and Output Units contained small drums that were used for two purposes:

  • The drum buffered the data for one card or line image. This allowed the card machine to operate somewhat asynchronously from the rest of the system. The processor could continue running while the card machine processed the card image.
  • The drum held the data for five "format bands." These were digit strings that controlled how data was translated and edited between the card machine and the 220 memory. On input, a punch in a designated column of the card indicated which format band should be applied. On output, the format band was selected by a digit in the instruction word.

See section 2.3 in the Handbook of Operating Procedures for the Burroughs 220 for a description of the various units, and section 6 in the Operational Characteristics of the Burroughs 220 for a description of the format bands and how the Cardatron translated and edited data. For an introduction to the Cardatron and a description of how it worked on the Datatron 205, see this post on Tom Sawyer's 205 and 220 blog.

Cardatron Control Unit

The Control Unit is the interface between the Input and Output Units and the 220 processor and memory. It also routes I/O commands to the appropriate Input or Output Unit and assures that only one unit is communicating with the processor at a time. The Control Unit had seven slots into which Input and Output Units could be plugged. By convention, Input Units were numbered starting at one from the left end of the slots; Output Units were numbered from one starting from the right end.

In the emulator, the Control Unit has a small window showing its status:

Cardatron Control Unit

The OU lamp is on if the last I/O was to an Output Unit and off if to an Input Unit.

The UDn lamps indicate in binary the unit number last addressed. Note that the unit number is qualified by the OU lamp, indicating whether it was an Input or an Output Unit.

The RDn lamps indicate the current "relay designate" settings. The four bits of the "r-digit" in a Cardatron Write (CDW, 54) instruction would set these relays, which in turn could be sensed by the card machine for special action -- typically carriage control -- depending on how the card machine's plugboard was wired.

The BR lamp indicates a "buffer read" operation is in progress, i.e., a data transfer has been initiated from the buffer drum to the 220 memory. This lamp stays on after the transfer completes until the next command is issued by the Processor to the Control Unit.

The BW lamp indicates a "buffer write" operation is in progress, i.e., a data transfer has been initiated from the 220 memory to the buffer drum. This lamp stays on after the transfer completes until the next command is issued by the Processor to the Control Unit.

The FL lamp indicates a "format load" operation has been initiated to load one of the format bands from 220 memory. This lamp stays on after the load completes until the next command is issued by the Processor to the Control Unit.

The CLEAR button clears the Cardatron Control Unit. It does not clear the individual Input and Output Units. You should seldom need to use this.

Cardatron Input Unit

The Input Unit interfaced card readers to the Control Unit. In the emulator, Input Units model the IBM 087/089 collator, reading 240 cards per minute. Each Input Unit has a window that combines the controls for the unit and its card machine:

Cardatron Input Unit for Punched Cards

The START and STOP buttons control the ready status of the reader. The reader will not feed cards unless the START button is clicked and is illuminated. You can stop and start the reader while it is reading cards.

The NO FORMAT button lights and the reader goes not ready if the Input Unit cannot determine a format band from the card that was just read. Pressing START in this situation will restart the reader and cause the no-format card to be skipped.

The SM (Start Machine) lamp lights while the card reader is in the process of reading a card and transferring the numeric and zone column data to the buffer drum. The lamp goes out after the card is read and the unit is waiting for the processor to read the buffer.

The RLO (Reload Lockout) lamp lights when reload lockout is in effect for the unit. Reload Lockout is activated by the /41 digit in the instruction word. It prevents the next card being read and transferred to the buffer drum. It was normally used to read the same card image more than once, or to delay reading the next card until after one or more format bands had been loaded. Reload Lockout is released by executing an CRD or CRF instruction that does not specify Reload Lockout.

The FLO (Format Lockout) lamp lights when Reload lockout has been initiated by a 8-punch in the format-selection column of the card instead of the /41 digit of a CRD or CRF instruction. Format Lockout functions the same as Reload Lockout and is released the same way. Whenever FLO is lit, RLO will also be lit.

Format Lockout was always signaled by a multiple punch in the format-select column of a card. The 8-punch set Format Lockout, and the second punch in rows 1-7 specified the format band to be used for the card. Trying to simulate multiple card-column punches with ASCII characters in a text file is a little awkward, but the following ASCII characters in the format column can be used to initiate Format Lockout:

  • \ ` = 1-8 punch (grave accent)
  • : = 2-8 punch
  • # = 3-8 punch
  • @ = 4-8 punch
  • ' = 5-8 punch (apostrophe, but prints as "@")
  • = = 6-8 punch
  • " = 7-8 punch (double quote)

The following additional ASCII characters will also set Format Lockout and can be used if you need the corresponding numeric code from the column (5, 6, or 7) to be stored in memory for that column:

  • | = 5-8 punch (vertical bar)
  • } = 6-8 punch
  • ~ = 7-8 punch (tilde)

The FSn lamps indicate the binary code for the currently-selected format band.

The FORMAT SELECT pull-down list is an artifact of the emulator and did not exist on the Cardatron, although its effect could be produced through special plugboard wiring on the card machine. It overrides the characters in the format column and specifies directly the format band to be used for reading cards. When set to By Col (the default), the format band number will be determined from the character in the card column specified by the FORMAT COL control. Any other setting will specify the number of the format band to be used, regardless of what is on the card being read.

This control is provided in the emulator as a convenience for reading text file "decks" that may not have a column set aside to select a format band.

The FORMAT COL pull-down list specifies the card column from which the format band selection (and possibly, Format Lockout signal) will be taken. Since columns 1 and 80 were common choices for format columns, 80 appears first in the list.

The CLEAR button clears the Input Unit and resets it to a default status. It does not, however, empty the input hopper.

The file-picker control (with a button typically labeled Browse... or Choose Files) is used to select one or more text files from your local file system that will be loaded into the "input hopper" of the reader. You can select multiple files, one at a time, and stack them in the input hopper. In most browsers, you can also select multiple files at once, but the order in which the files will appear in the input hopper may be indeterminate. The control will display the name of the last single file loaded.

The INPUT HOPPER progress bar below the file-picker control shows the relative amount of data left in the input hopper of the reader. The bar advances to its far right position each time a file is loaded into the reader. As cards are read, the bar diminishes to its left in proportion to the amount of data that remains to be read.

When the reader is in a not-ready condition (the STOP lamp is lit), clicking anywhere in the progress bar will display a dialog box asking if you want to empty the input hopper. If you reply in the affirmative, the entire hopper will be cleared, regardless of the number of decks (text files) remaining unread.

The area below the progress bar displays the last two cards that have been read onto the buffer drum, with the last card on the bottom.

Cardatron Output Unit for Line Printer

Output Units are used for both card punches and line printers. The user interface differs slightly between the two.

The emulator models the IBM 407 tabulator as the line printer. This device operates at 150 lines per minute. Each printer in the system configuration has a window that combines the controls for the Output Unit and the printer:

Cardatron Output Unit for a Line Printer

The START and STOP buttons control the ready status of the printer, similar to that for the card reader. The printer can be stopped and started while it is in operation, but it will not print unless the START lamp is lit. The lamp is lit and the device is made ready automatically when the emulator is powered up.

The OUT OF PAPER button lights and the printer goes not-ready when it is "out of paper." The paper capacity is 150,000 lines -- about equivalent to a box of the pin-feed paper that was used with printers of the time. The output of the printer is held in memory so that it can be copied or saved later. The capacity limit prevents memory from being flooded endlessly with line images. When the limit is reached, the printer stops and this button lights. Clicking the button will allow one additional line to be printed each time it is clicked, but continuous operation of the printer will not resume until the output area is cleared by one of the two methods discussed below.

The FORM FEED button performs two functions. The first is that clicking the button while the printer is in a not-ready status will simulate a form feed. The second is that clicking the button three times in succession while the printer is in a not-ready status will display a dialog box asking if you want to clear the output area. Make sure you have copied or saved any data from the output area you wish to keep before responding in the affirmative. This is one way to clear the output area and reset the end-of-paper condition discussed above.

The CLEAR button clears the Output Unit and resets it to a default status. It does not, however, clear the output area.

The SET ZS button is used to configure zero-suppression columns on the output. See the Output Unit Leading-Zero Suppression section below for information on zero suppression for the IBM card machines and how to configure it in the retro-220 emulator.

The SM (Start Machine) lamp lights while the printer is in the process of transferring the numeric and zone column data from the buffer drum and printing a line. The lamp goes out after the line is printed and the unit is ready for the processor to send another line of data.

The FSn lamps indicate the binary code for the currently-selected format.

The GREENBAR checkbox controls whether the output area is formatted with greenbar shading, similar to that traditionally pre-printed on the pin-feed paper used with line printers. You can tick or untick this box at any time, even while the printer is operating.

The ALGOL GLYPHS checkbox for the Output Unit controls which set of ASCII characters the emulator uses when outputting the internal 220 codes corresponding to the four characters discussed below. If the box is unticked, the commercial character set is used; if the box is ticked, the FORTRAN (scientific) set is used. This setting also can be changed at any time, even while the printer is operating.

The IBM 407 print wheels had 48 characters plus the space. IBM offered print wheels with different character sets, which were used for different applications. The two that were most commonly used with the Cardatron were the standard commercial set (wheel configuration A) and the FORTRAN set (wheel configuration F). Wheel configuration A had the following characters:

0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ $#%.,-*/@&¤

The "¤" glyph is termed the "lozenge". There are 47 glyphs shown above. A space, as with most impact printers, was generated by printing nothing in a column. The 48th print wheel position was typically another asterisk used by the 407 to replace leading zeroes in an amount for check protection (e.g., $******123.45).

Wheel configuration F substituted the following characters for use with FORTRAN and other "scientific" languages, such as Algol:

  • & : +
  • # : =
  • % : (
  • ¤ : )

See the IBM FORTRAN II General Information Manual, Appendix B, for more information on these character sets.

Below the checkboxes is the SUPPLY REMAINING progress bar, which shows the relative output capacity remaining from the 150,000-line limit. The bar will diminish to the left as lines are printed.

The output area occupies the remainder of the window, showing the data as it is being printed. Lines scroll off the top of this area, but are retained in the browser's memory. When the printer is not operating, you can scroll back to view earlier lines and copy them for pasting into another program. The output area is an HTML frame. Many browsers will allow you to save the text directly from it to a file on your local workstation.

Another option for capturing the text that has been printed is to double-click anywhere in the output area. As with the output areas for the Flexowriter and paper-tape punch, this will do two things:

  1. A new, temporary window will be opened and the entire text of the output area will be copied into this new window. If the GREENBAR box is ticked, this text will not show the green shading.
  2. The output area will be cleared. This is the second way to reset the end-of-supply condition discussed above.

Double-clicking the output area can be done at any time, even while the printer is operating. You can copy, save, or print the text in the temporary window as you wish. When you are finished, simply close the temporary window.

Cardatron Output Unit for Punched Cards

The emulator models the IBM 523 summary card punch. This device operates at 100 cards per minute. Like printer devices, each card punch device has a window that combines the controls for the Output Unit and the punch:

Cardatron Output Unit for Punched Cards

The layout and operation of this window is similar to that for printer devices, except that it does not contain the GREENBAR checkbox, and green shading is never applied to the output area. The OUT OF CARDS and RUNOUT CARDS buttons function equivalently to the OUT OF PAPER and FORM FEED buttons for a printer device.

The capacity limit of the output area for a card punch is 150,000 cards.

Output Unit Leading-Zero Suppression

For Cardatron printer and punch devices, leading-zero suppression was done by means of plugboard wiring on the IBM card machine. As described in the Datatron 205 blog post for Knuth's Algol-58 compiler, the behavior of zero suppression on these IBM machines worked in a non-obvious way. Pins on the IBM machine's plugboard identified columns on the output record where zero suppression was to begin. Suppression continued in the columns to the immediate right until a character was encountered that has a "numeric" punch in its card code. At that point, further zero suppression was discontinued until the next column identified for zero suppression, if any, was encountered.

The curious part of this arrangement was the definition of a numeric punch. An IBM card consisted of 80 columns and 12 rows. The top three rows (designated as 12 [+], 11 [-], and 0) were termed the "zone" punches. The bottom three rows (designated 1 through 9) were termed the "numeric" punches. Thus, 0 was considered to be a zone, not a numeric punch. Many characters in the IBM card code were represented by a combination of zone and numeric punches. For example, the letter "T" is represented by a 0-4 punch and "$" by an 11-3-8 punch. If a column held a character that has a numeric punch in its card code, that character would discontinue zero suppression.

There are only four characters in the IBM card code used with the Type 407 and 523 devices that do not have numeric punches: "&" or "+" (12 punch), "-" (11 punch), "0" (0 punch), and blank (no punches). Thus, as long as columns in a zero-suppression sequence had one of these character codes, suppression would continue, and those columns would be changed to blanks. Of course the way blanks are generated on a card or line of print is to punch or print nothing at all, so zero suppression was effectively output suppression for those columns.

The emulator does not attempt to emulate the plugboard functionality of the IBM devices. Instead, it attempts to perform leading-zero suppression similar to the way it was typically used for 220 applications. To configure the columns in which zero-suppression is to start, there is a button on the control panel for line printers and card punches, labeled SET ZS (for Zero Suppress):

Cardatron Output Device SET ZS Button

The center of this button will be black if no zero suppression has been configured for the device, and green if zero suppression is currently in effect. Clicking this button opens a sub-window with which you can view, enter, or edit the list of zero-suppression columns for the device:

Cardatron Output Device Zero-Suppression Window

You simply enter a comma-delimited list of numbers that indicate the columns on the output where zero-suppression is to begin. The numbers must be entered in ascending order. Spaces and empty entries (adjacent commas or spaces between two commas) are ignored. To save the list and apply it to the device, click the OK button. To disable zero suppression entirely, clear the list.

The list of zero-suppression columns is recorded in the system configuration data and preserved across browser sessions. You can view the current list of columns on the System Configuration window, but the list can be changed only through the SET ZS button on the device window.

Loading Object Decks

One of the more common uses of a card reader on the 220 was loading program object decks into memory so that a program could be executed. This section describes how to do so using the retro-220 emulator.

Standard practice was to create object decks so that they could be loaded using the hard-wired format band number 6, since this did not require any of the five programmable format bands to be loaded first. Therefore, there needs to be a "6" in some column of each card, and the typical choice is column 1.

A common practice, though, was to punch 6s in columns 1-3. Format band 6 read seven full, 11-digit words (backwards, in the Cardatron's peculiar manner) from columns 4-80, plus only the low-order three digits of a word from columns 1-3. That partial word was of very limited use when loading an object deck, so filling those columns with 6s allows the deck to be loaded with the Cardatron Input Unit configured to select the format from any of those three columns.

A well-designed object deck was also self-locating in memory. The first word read from the first card (i.e., the one in columns 72-80) typically had a sign with a value of 6 or 7, indicating an instruction to be executed rather than a word to be read into memory. The address in that instruction would specify where in memory the program should start. See the write-up on the three-card memory-clear program for a good example of how this was done on the Datatron 205, which worked in a similar way.

To load an object deck, perform the following steps in the order listed:

  1. First, make sure the reader is not ready and that its "input hopper" is empty.
  2. Set the FORMAT COL control on the reader to the column from which format 6 will be sensed -- typically column 1. Alternatively, you can set the FORMAT SELECT control to 6, but this should be used only if the card images do not all have a column with a 6 already present.
  3. Use the file picker control on the reader to select the text file containing the object deck from your local system.
  4. Click the START button on the reader. The reader should feed the first card image and the FSn lamps should indicate format number 6.

The reader is now ready, but an initial CRD (60) instruction to command the reader must be entered into the processor manually:

  1. Click CLEAR switch on the Control Console.
  2. Enter the card reader unit number in the first (left-most) digit of the C register. Typically this will be unit 1.
  3. Enter the digits "60" in the operation code field of the C register.
  4. If the deck requires a load address, enter it in the low-order (right-most) digits of the C register. Most decks are self-locating, so for those the value in the address field is not relevant.
  5. Click the EXECUTE lamp on the Control Console so that it is lit.
  6. Click the START switch on the Control Console to start the load.

Depending on how the load deck is constructed, it may be possible to place a data deck for the program in the reader after the load deck so that the data will be available immediately to the program. The two conditions that may permit this are:

  • Format of the data cards must be sensed from the same column as the Input Unit used to load the program.
  • If the program must load one or more input format bands (typically the case), those bands must be loaded before the card reader is able to read the first data card. One way this can be done is to have the last card of the load deck put the reader in Reload Lockout to prevent the first card in the data deck from being read automatically by the Input Unit. The initialization code in the program could then load the format band(s) in the Input Unit, maintaining Reload Lockout until the CRF (62) instruction for the last band to be loaded. The last (or only) CRF releases reload-lockout, allowing the first card to be read asynchronously by the Input Unit with the appropriate format band now correctly loaded.

If either of these conditions cannot be met, then the load deck should be loaded and read separately. Once the reader is empty and the program has loaded its input format band(s), the data deck can then be loaded into the reader.