PostScript Cartridge Plus for HP LaserJet III

The HP LaserJet III laser printer from 1990 used the “Printer Command Language” PCL 5 by default, but could be upgraded with the “HP PostScript Cartridge Plus” cartridge, which contained 2 MB of ROM with Adobe’s PostScript Level 2 rasterizer. Let’s look at the ROM contents and some of its hidden gems.

Cartridge

The cartridge is about 9×14 cm in size.

The front says

HEWLETT PACKARD

PostScript Cartridge Plus

ITC Avant Garde Gothic®
ITC Bookman®
Courier
Helvetica®
Helvetica-Narrow
New Century Schoolbook
Palatino®
Times®
ITC Zapf Chancery®
TIC Zapf Dingbats®
Symbol
C2089A ©Hewlett-Packard 1989, 1990, 1991

HP
LASERJET III
POSTSCRIPT®

The back says

Adobe and PostScript are registered trademark of Adobe Systems
Incorporated in the U.S, and other countries. Helvetica, Palatino and
Times Roman are registered trademarks of Linotype AG and/
or its subsidiaries in the U.S. and other countries. IT Avant Garde
Gothic, ITC Bookman, ITC Zapf Chancery and ITC Zapf Dingbats are
registered trademarks of International Typeface Corporation in the
U.S, and other countries.

Board


Here is the front without the components:

The board contains 6 74-series logic chips:

  • 1x SN74ALS139N: Dual 2-to-4 Decoder/Demultiplexer
  • 4x SN74ALS244BN: Octal Buffer and Line Driver with 3-State Output
  • 1x SN74LS32N: Quadruple 2-Input Positive-Or Gates [marked as HP part number 1820-1208]

and four 512 KB mask ROM chips of the type Fujitsu MB834200B-15 (27C400 pinout). They are all marked with

© 1991 HP-BOISE
© 1984-90 ADOBE
© 1981 LINOTYPE AG
© 1991 FUJITSU

ROM

These are the verbatim dumps (adjacent bytes are swapped):

This is the combined (byte-swapped) 2 MB ROM image:

HP PostScript Cartridge Plus C2089A ROM, MD5 8a5d1f66ab1624e7188fc07154f4224d

The ROM image starts with a signature of “SYST” and the following messages at 0x30:

V9H-18f PSCRIPT
09.H
Copyright © Hewlett-Packard Company, 1991. All rights reserved.

The ROM contains Adobe’s PostScript Level 2 rasterizer compiled for the 68000 CPU, the PostScript base fonts as well as some LaserJet-specific software (messages, errors and settings texts for the 15 char display in several languages).

PostScript Files

There is also some PostScript source code in the ROMs!

(The missing %! file header has been added to the downloads.)

Since this is printer-specific PostScript code, it may not work with computer-based rasterizers, so let’s go over them one by one.

FONTPAGE

This is “FONTPAGE” converted to PDF using GPL GhostScript:

fontpage.pdf

The PostScript code contains the product operator, which returns the name of the printer, so the second line – “GPL Ghostscript printer” – would read “HP LaserJet III printer” on an actual LaserJet.

TEST PAGE

“TEST PAGE” prints various internal printer settings which are unsupported by computer-based PostScript rasterizers, so some lines had to be removed for the file to work. These are the files hacked for different rasterizers:

Adobe Acrobat Distiller 5.0 (2001)

  • test_page_acrobat.ps
  • test_page_acrobat.pdf
  • macOS 12.4 PSNormalizer.framework

  • test_page_apple.ps
  • test_page_apple.pdf
  • GhostScript 9.56.1

  • test_page_gs.ps
  • test_page_gs.pdf
  • (The almost identical contents of Acrobat Distiller 5.0 and Apple’s PS to PDF converter built into macOS (down to the internal version number!) is no coincidence: Apple’s converter is in fact a licensed “Adobe Normalizer 5.0”1, the same engine powering Distiller 5.0.)

    There is a second page which only prints if the product is “HP LaserJet IIP” or “HP LaserJet IIIP”:

    STARTUP PAGE

    There is no such device as a “LaserJet IIx” – this is what the PostScript code falls back to if the product is none of these:

    • “HP LaserJet IID”
    • “HP LaserJet IIP”
    • “HP LaserJet III”
    • “HP LaserJet IIID”
    • “HP LaserJet IIIP”

    Tests for these can be found across all PostScript code in the ROM. The IIID (“duplex”) and IIIP (“personal”) and variants of the LaserJet III. HP never offered PostScript for the LaserJet II series, so it is unknown why these product names show up in the ROM.

    Future Work

    There are several open questions that might be interesting:

    • What’s up with PostScript for the LaserJet II?
    • Did the cartridge extend the printer’s internal ROM or replace it?
    • What other PostScript features are supported that are not official API?
    • What is the computer inside the LaserJet III like? Can we emulate it and run this rasterizer on a computer?
    • What is the pinout of the cartridge connector?

    1. strings /System/Library/PrivateFrameworks/PSNormalizer.framework/Versions/A/Resources/PS.VM | grep -i Adobe

    6 thoughts on “PostScript Cartridge Plus for HP LaserJet III”

    1. Some PostScript support must have been available for the LaserJet II because the combined service manual says the following about the HP LaserJet II:
      “Supports the PostScript printer language through an optional HP interface package”

      Is it possible that this cartridge was compatible with the LaserJet II even if it’s not clearly advertised as being so?
      The LaserJet II had similar expansion slots for memory expansion and font cartridges as the LaserJet III. The printers were pretty similar in general. They had the same mechanics and some parts and accessories were advertised as being for HP LaserJet II/III. They also share the same service manual.

    2. Has anyone ever dumped the ROMs of a LaserJet printer? I guess the inner workings are not that complicated, so LaserJet emulator should be entirely possible. MAME already emulates some other printers (mostly dot matrix), I guess they’d be very much interested in those ROMs and any kind of documentation/PCB pictures/…

    Leave a Reply to Darkstar Cancel reply

    This site uses Akismet to reduce spam. Learn how your comment data is processed.