Previous Table of Contents Next


IBM Proprinter II Dot Matrix

The IBM Proprinter II was introduced by IBM in 1986 and remains one of the most successful bilevel dot matrix printers ever manufactured. It uses a 9-wire print head with the print wires vertically spaced 1/72 inch (0.3528 mm) apart. This allows a maximum vertical resolution of 72 dpi. To facilitate follow-on printer introductions that used 27 wires for letter quality rendering, Proprinter printing resolution is expressed in 1/216 inch units. So, one print wire consumes 1/72, or 3/216, inch of vertical space.

The Proprinter prints both character text and graphics in a variety of resolutions. User programs can download custom typefaces as well. Characters appear in 9x12 pixel cells and are either designated as ascending (extending upwards such as “L”) or descending (extending downwards such as “g”) characters. This designation is necessary because the Proprinter uses either the top eight or bottom eight wires exclusively when rendering ascending or descending characters, respectively. Graphics modes use only the top eight wires and can intermingle with text characters under correct, but tricky, programming.

Using the top eight wires to print eight scan lines of a graphics image consumes 24/216 inch vertical space. Nine such 24/216 inch adjacent bands fit within one inch so the correct graphics mode line spacing is nine lines per inch when printing eight scan lines at once as a single band. However, the default line spacing is six lines per inch for text printing and such default text lines consume 36/216 inch to allow for blank space between text lines. Because switching from a character mode to a graphics mode does not automatically alter line spacing to 24/216 inch for graphics bands, when switching to graphics modes it is also necessary to set the line spacing. Otherwise, in this instance, the default 6/216 inch spacing leaves a 12/216 inch blank interval between each graphics band.

It is also possible to produce graphic images using less than eight scan lines per band (eight wires), though performance usually suffers since this usually requires more bands per image. This is accomplished by using as many of the top wires as necessary, ignoring all unneeded lower wires. For example, using just the top four wires produces four scan lines but requires twice as many image bands. Since each four scan-line band takes as long to print as one that uses eight scan wires, printing times double. In this instance, the line spacing must be set to 12/216 inch.

When the Proprinter powers-on or otherwise resets, it enters its Data Processing mode which prints text at 10 characters per inch at 200 characters per second using a coarse typeface. To enter into a graphics mode requires sending the printer an escape sequence. The Proprinter supports four graphics modes which all provide 72 dpi vertical resolution but varying horizontal resolutions and print speeds (see Table 8-1 on the following page).

Escape Sequence Horizontal Speed Horizontal DPI Maximum Columns Allows Adjacent Horizontal Dots?
EscK Normal 60 480 Y
EscL Half 120 960 Y
EscY Normal 120 960 N
EscZ Normal 240 1920 N

Table 8-1: IBM Proprinter graphics modes

The EscL mode simply moves the print head half as fast as the EscK mode while printing, allowing twice as many columns per inch. The EscY and EscZ modes require two passes to print each band whenever two black pels are adjacent. Since the EscL mode provides the same resolution as the EscY mode and the EscZ mode resolution exceeds general dot matrix printing capability because of black pixel imperfections and dot gain, the PRINTPCX.C sample program uses only the EscL mode to produce images.

Though the Proprinter only produces bilevel images with black or white pels, PRINTPCX.C produces output on the Proprinter using gamma corrected color input images by first reducing them to scaled achromatic gray scale images. Scaling is necessary because the horizontal resolutions and vertical printing resolutions are not equal while the horizontal and vertical scanning resolutions for the sample images are equal.

Consider printing a 72x72 pixel square using a 120 dpi horizontal resolution and 72 dpi vertical resolution. Without scaling, rather than producing a square, this produces a rectangle 1 inch (72/72) high and 0.6 inch (72/120) wide. So, to scale desired output intensity values, a scaled output horizontal pixel position is multiplied by 0.6 to determine which two input pixel intensities contribute to it. Then, the input pixel intensities are weighted.

For example, to calculate the intensity of scaled output pixel 22, multiplying 22 by 0.6 produces 13.2 which is between 13 and 14. Thus, input pixel 13 and 14 contribute to the scaled output value. But 13.2 is much closer to 13 than 14 which means input pixel 13’s intensity should contribute to the output pixel value much more than input pixel 14’s intensity should contribute.


Previous Table of Contents Next