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.
The cartridge is about 9×14 cm in size.
The front says
PostScript Cartridge Plus
ITC Avant Garde Gothic®
New Century Schoolbook
ITC Zapf Chancery®
TIC Zapf Dingbats®
C2089A ©Hewlett-Packard 1989, 1990, 1991
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.
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
These are the verbatim dumps (adjacent bytes are swapped):
- 1818-5336 / 16A AA, MD5 258464faa19a1ff78bbb57270eec8835
- 1818-5318 / 03A AA, MD5 da113b6c6c53e21858b30a71c7be017c
- 1818-5319 / 04A AA, MD5 f6e368806aa8caf22b4c28d235a2df1d
- 1818-5320 / 05A AA, MD5 ed1700895daeac733f80ce20278c4a64
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:
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).
There is also some PostScript source code in the ROMs!
%! 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.
This is “FONTPAGE” converted to PDF using GPL GhostScript:
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” 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)
macOS 12.4 PSNormalizer.framework
(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”:
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.
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?
strings /System/Library/PrivateFrameworks/PSNormalizer.framework/Versions/A/Resources/PS.VM | grep -i Adobe↩