UsingTheLinePrinter - pkimpel/retro-1620 GitHub Wiki

Using the 1443 Line Printer

The IBM 1443 line printer was originally developed in 1962 for the IBM 1440 computer system. It was made available as a peripheral device for the IBM 1620 a year later.

The 1443 printer technology was termed flying type bar. Raised character glyphs were mounted on thin, flexible, vertical metal fingers that were attached to a supporting base (the bar). The base oscillated horizontally back and forth inside the printer in front of the paper. Between the metal fingers and the paper was an inked ribbon. In front of the metal fingers were a set of solenoid-actuated hammers, one for each print position. When a character glyph passed over a hammer position for which the printer's buffer had a character code matching the glyph, the hammer fired, causing the raised glyph, ribbon, and paper to come in contact and make an impression of the glyph on the paper.

For more information on the 1443, see the IBM 1443 PRINTER for 1620/1710 Systems manual.

The window for the printer in the emulator looks like this:

1443 Line Printer

The printer is not part of the default system configuration, so you will need to add it by clicking the Configure System button on the emulator's home page.

The type bars in the printer were removable, allowing the printer to support different character sets. There were four different character arrangements, only the third of which was commonly used with the 1620:

  1. 13-character set, having 0-9, -, ., and *.
  2. 39-character set, having the 13-character set plus A-Z.
  3. 52-character set, having the 39-character set plus ,, +, $, =, (, ), /, @, , ?, !, :, and (a graphic for blank not printable by the 1620).
  4. 63-character set, having the 52-character set plus 11 other characters not printable by the 1620.

The printer came in two models. Model 1 could print the 52-character set at 150 lines/minute. Model 2 could print the same set at 240 lines/per minute. The type bars with smaller sets had multiple copies of the glyphs along the bar, allowing faster print speeds, up to 600 lines/minute for the 13-character set.

When configuring the printer, you have the choice of selecting a Model 1 or Model 2. The emulator supports only the 52-character type bar. You also have a choice of selecting a carriage width of 120 (the default) or 144 columns.

The printer optionally supports a carriage tape to control vertical spacing on a page. By default, the printer is configured so that all skips to a carriage control channel will act like a skip to channel 1, which by convention is the top of form for the next page of paper. See the section "Carriage Control" below for details.

Printer Controls and Lamps

Across the top of the printer window are a set of status lamps and controls.

POWER -- This lamp is always lit after the printer window initializes.

READY -- This lamp is lit when the printer is ready to print. The printer initializes in the ready state. The ready state is normally controlled by the START and STOP buttons.

END OF FORM -- This lamp is lit when the printer is "out of paper." See the discussion on the paper supply meter bar below and "Capturing Printer Output" for more information.

PRINT CHECK -- This lamp is lit when the printer buffer receives a character code from the 1620 that either has incorrect parity or is not supported by the type bar. A print check sets the Printer Check indicator (25) in the 1620 processor, but the printer stays in the ready state. The Print Check condition stays in effect until the indicator is cleared by execution of a BI/BNI instruction for that indicator, clicking the RESET button on the 1620 Control Panel, or clicking the RESET button on the printer window.

The buttons on the right side of the window control the printer's operation:

START -- This button places the printer in the ready state so that it is enabled to print. It is disabled if the printer is already ready or the END OF FORM lamp is lit.

STOP - This button places the printer in the not-ready state so that it cannot print. It is enabled only when the printer is in the ready state.

CARRIAGE RESTORE -- This button advances the paper to the next top-of-form position. It is enabled only when the printer is in the not-ready state and the END OF FORM lamp is not lit.

CARRIAGE SPACE -- This button advances the paper by one line. It is enabled only when the printer is in the not-ready state and the END OF FORM lamp is not lit.

RESET -- This button will reset a Printer Check condition and turn off the Printer Check indicator (25) in the 1620 processor. It is always enabled.

Below the lamps and buttons is a meter bar showing the paper supply remaining in the printer. The printer initializes with a supply of 150,000 lines, which is approximately equivalent to a case of the fan-fold forms used with the printer. The meter bar will diminish towards the left as lines are printed. Once the paper supply is exhausted, the printer will become not-ready and the END OF FORM lamp will be lit.

The end-of-form condition can be reset by "emptying the stacker" as described below under "Capturing Printer Output."

Printer Output

The area below the meter bar represents the paper in the printer. This area will scroll once the number of lines printed overflows the available area. If the Greenbar option is enabled on the printer's menu (see the next section), the paper will show alternating bars of green and white shading every three lines. Toggling that check box alternately disables and re-enables the shading.

The 1443 supported a capability that was common among line printers of its era -- suppressed spacing, i.e., printing a line without advancing the paper. The next line would then print on top of the one just printed. This was sometimes used to construct text on a line from multiple printer commands, but perhaps was more often used to print the same line more than once, which would darken the ink on the paper and produce a boldface effect.

The emulator supports this capability in the print area. Printing on the same line of the paper more than once (termed "overprinting" or "overstriking") will overlay the characters on the same line. If the overprinted characters are different, that portion of the line may not be legible, but if any of the characters are the same, the emulator will format them in a bold font. Overprinting more than once does not enhance the boldface effect.

Capturing Printer Output

Clicking the three-bar ("hamburger") menu icon in the upper-right of the paper area will open a small panel on top of that icon with options for capturing the output, emptying the output stacker, toggling green-bar formatting, and specifying carriage control:

1620 Line Printer Menu

Extract – Opens a temporary window and copies the contents of the paper area to that window. From that temporary window you can save the contents of the window to a file or copy/paste the data into another program. If you save directly from the window, make sure you save as text, not HTML. When you are finished, simply close the temporary window.

Print – Opens a standard print dialog to print the contents of the paper area to a local device. Most modern browsers also have an option to print to a PDF file. This button is active only when the READY lamp is off.

Save – Opens a standard save-file dialog to save the contents of the print area as a text file to your local system. This button is active only when the READY lamp is off. The dialog provides a default name, which you can change before saving. If your browser saves the file without opening a dialog, check your browser settings – there should be an option to select how downloads are to be saved.

Clear – Clears the paper area and closes the panel. That performs the equivalent of "unloading the output stacker" on a real printer. This button is active only when the READY lamp is off. If the END OF FORM lamp is lit, clearing the paper area will turn that lamp off and allow the printer to become ready again.

Close – Simply closes the panel.

Carriage Control -- This button opens a dialog panel where you can configure a carriage tape to control vertical spacing. It is enabled only when the READY lamp is off. See the section "Carriage Control" below for a discussion of this panel.

Greenbar -- This check box toggles the display of alternating green and white shading in the paper area of the printer, simulating the use of so-called "green bar" paper stock. Toggling this option immediately toggles the presence of green bars in the paper area.

The former methods of unloading the paper area by clicking the meter bar and printing the paper area by clicking the END OF FORM lamp are no longer implemented.

The data captured by the Extract and Save buttons is plain ASCII text. The individual line images are space-trimmed on the right, so typically they will be of variable lengths. The characters in the print area are copied to the temporary window as is, except that will be translated to |. See Printer Character Translation below for more information.

Note that when using the Extract and Save buttons, all of the special formatting shown on the printer window will be lost, including the green-bar highlighting and overprinting, as these features cannot be represented in plain text. Overprinted lines will appear in the ASCII text as separate lines. Output from the Print button will include these features, however.

If default carriage control is in effect (formLength=0), an ASCII form-feed character (hex 0C) will be inserted at the start of the first line after a skip to any channel. If a custom carriage tape is being used, no form-feed characters are inserted. Instead, the printer spaces out each page as specified by the carriage tape's formLength value.

When printing to physical printer or a PDF file with custom carriage control in effect, you may want to synchronize the page breaks generated by your system's printer driver with the logical pages defined by your carriage tape's formLength parameter. This usually requires you to adjust the scale factor for your system's print driver. When printing in portrait mode on U.S. Letter paper with 0.5-inch top and bottom margins, a scale factor near 90% typically works well, but you may need to experiment to find a value that works for your particular driver. Line 1 for a custom carriage tape will always print at the start of a new page, so using a scale factor slightly smaller than absolutely required also works.

Carriage Control

Like most line printers of its era, the 1442 used continuous, fan-fold, pin-feed paper. To control vertical spacing on the paper, the printer used a wide paper tape with vertical positions on the tape corresponding to lines on the paper and horizontal positions corresponding to 12 selectable "channels" or stopping points. A punch in the tape at the intersection of a line position and channel indicated that a command to skip to that channel should stop paper motion at the next hole for that channel that is detected in the tape, which would leave the paper positioned at the corresponding line. The tape was constructed as a loop, with the number of lines in the loop usually corresponding to the number of lines on the physical page.

The carriage tapes were removable, and it was common for sites to have a number of different carriage tapes to support different printing requirements. When using pre-printed forms, each form typically had a carriage tape customized for its vertical spacing requirements. Skipping more than a couple of lines was much faster and easier to program than spacing to a specific line on a page, so careful design of a carriage tape could often significantly improve printer throughput.

By convention, channel 1 indicated "top of form," the first line on the page where printing should occur. Channels 9 and 12 could be sensed by a program in the 1620, and usually indicated "bottom of form," the last line on the page where printing should occur. Upon sensing bottom of form, many programs would issue a command to skip to channel 1, which skipped over the perforation separating the pages to provide a top and bottom margin on each page.

The emulator supports two forms of carriage control. The carriage control configuration last in effect is preserved across emulator restarts.

Default Carriage Control

By default, the emulator uses a simple, built-in carriage tape that is suitable for general printing. All channels indicate top of form. Channels 9 and 12 can be destinations for skipping, but are not sensed by the 1620.

All skip-to-channel operations move the paper to the top of the next logical page, and the first line on that page will have a thin, dashed border above it to indicate a page break. The paper will space no more than six lines to the start of the next green bar, whether the green shading is currently visible or not. The dashed border will always appear at the top of a green bar.

Full Carriage Control

The emulator also supports the full capabilities of a carriage tape. The configuration of the tape is specified in a JSON (JavaScript Object Notation) file as a simple data structure. It can be created with any text editor. The tape can then be loaded into the printer. You can have as many of these JSON carriage tape files as you wish, but only one can be loaded into the printer at a time.

To configure carriage control, click the Carriage Control button on the printer's menu when the printer is in the not-ready state. This will open a panel where you can view and specify a carriage tape.

Carriage Control Panel

The panel has the following controls:

Use Default -- Clicking this button will discard the current carriage tape and reinstate default carriage control for the printer.

Form Length -- This shows the form length for the current carriage tape. When default carriage control is in effect, the form length is zero.

Close -- Clicking this button will close the panel. All changes to the carriage tape made while the panel is open are saved automatically.

Browse or Select File (depends on the browser) -- Clicking this button will open a standard file-picker dialog where you can select a JSON file representing a carriage tape. The emulator will open the file and verify its format. If it is not a JSON file or the format does not match that discussed below, the file will be ignored and the existing carriage tape will remain in place.

Below the button controls is a table showing the structure of the current carriage tape. Each line in the table shows the channels specified for that line. When default carriage control is in effect, the table shows only a single line with all channels specified. This table is updated whenever a new carriage tape is loaded.

The following example shows a carriage tape for a 66-line page (11-inch paper printed at six lines per inch), with channel 1 at line 1 for top of form, channel 4 at line 31 in the middle of the page, and channel 12 at line 60 to indicate the last line on the page that should have printing.

{   "formLength": 66,
    "channelSpecs": {
        "1": 1,
        "31": 8,
        "60": 2048}
}
  • formLength specifies the length of the carriage tape in lines. This usually represents the size of the physical page, but carriage tapes were sometimes configured for more than one page. The maximum value supported by the 1620 was 132 lines, therefore the emulator will limit the value of this parameter to 132.

  • channelSpecs specifies the pattern of punches on the carriage tape. It consists of a list of "key":value pairs. The pairs can appear in any order and must be delimited by commas. The final pair must not be followed by a comma.

    • The key must be a decimal integer, but it must be contained within quotes without any internal spaces. This specifies a line number in the range from 1 to the form length. If the number is outside this range, the pair will be ignored.

    • The value must also be a decimal integer, but without quotes. This is interpreted as a bit mask representing channel punches on that line of the carriage tape. The 1620 did not support multiple channel punches on the same line of a tape, but the emulator allows any number of channels on the same line. The numeric value of each channel punch is 2**(n-1), where n is a channel number. These numbers can be summed to specify multiple channels on the same line:

      • Channel 1 = 1
      • Channel 2 = 2
      • Channel 3 = 4
      • Channel 4 = 8
      • Channel 5 = 16
      • Channel 6 = 32
      • Channel 7 = 64
      • Channel 8 = 128
      • Channel 9 = 256
      • Channel 10 = 512
      • Channel 11 = 1024
      • Channel 12 = 2048

When a skip-to-channel command is executed, the printer will advance the paper a number of lines to the next occurrence of that channel on the carriage tape. The printer will advance for a maximum of two cycles of the carriage tape. If the requested channel is not found after two cycles, the skip is aborted, the printer stops, and it is placed in the not-ready state. Simply press START to resume printing.

A thin, dashed border appears on the paper each time the carriage tape cycles to its first line. The usually represents the top of a physical page and simulates the perforation that separated the fan-fold pages, but that depends on the way the carriage tape has been configured.

Printer Character Translation

The translation of internal 1620 character codes to glyphs on the printer paper area depends on the type of print operation -- alphanumeric, numeric, or numeric dump. In all cases, attempting to print any code not defined below results in a Print Check condition and the corresponding print position will show as ~. Parity errors in the data coming from the 1620 memory will also result in a Print Check.

For numeric output, the following translation occurs:

Code Print Numeric Dump Numeric Note
0-9 0-9 0-9
hex A (nothing) Record Mark, terminates output
hex C (space) @ Numeric Blank
hex F (nothing) G Group Mark, terminates output
flagged 0 - -
flagged 1-9 J-R J-R
flagged hex A (nothing) W Flagged Record Mark, terminates output
flagged hex C (space) * Flagged Numeric Blank
flagged hex F (nothing) X Flagged Group Mark, terminates output

For alphanumeric output, flags are ignored and the following translation occurs. Note that codes 02, 12, 22, and 35 are unique to the 1443 52- and 63-character type bars and are not defined for other devices:

Code Print Alphanumeric
00 (space)
02 ?
03 .
04 )
0A (Record Mark, terminates output)
0F (Group Mark, terminates output)
10 +
12 !
13 $
14 *
20 -
21 /
22 (does not terminate output)
23 ,
24 (
33 =
34 @
35 :
41-49 A-I
50 -
51-59 J-R
62-69 S-Z
70-79 0-9
⚠️ **GitHub.com Fallback** ⚠️