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, 1991HP
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):
- 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:
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:
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)
|
macOS 12.4 PSNormalizer.framework
|
GhostScript 9.56.1
|
(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?
-
strings /System/Library/PrivateFrameworks/PSNormalizer.framework/Versions/A/Resources/PS.VM | grep -i Adobe
↩
Interesting…
Something related – there’s some information about the Apple LaserWriter and a firmware dump at http://bitsavers.org/pdf/apple/printers/laserwriter/LaserWriter/ and there’s at least the start of an emulator in MAME (http://adb.arcadeitalia.net/dettaglio_mame.php?game_name=lwriter&search_id= and https://68kmla.org/bb/index.php?threads/early-laserwriter-rom-dumps.38610/)
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.
The Wikipedia article on HP LaserJet says that the cartridge was compatible with IID and IIP. See this image caption: https://en.wikipedia.org/wiki/HP_LaserJet#/media/File:HP_33439P.jpg
That supports my suspision that it would have been compatible with the LaserJet II as the LaserJet IID was a LaserJet II with an added duplex unit and an extra tray.
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/…
I’ve tried that Cartridge in an HP LaserJet 4 and it didn’t work