The other day I was able to look at an IBM OS/2 pre-release CD-ROM from early 1992. The CD-ROM appears to have been produced by IBM UK under the DAP (Developer Assistance Program) umbrella.
The CD-ROM contains about 250 MB of data and would have been the perfect medium for distributing the OS/2 pre-releases. The alternatives were either a huge pile of floppies or many days of downloading over a 9,600 bps modem (and filling up one or two typical hard disks in the process).
On the CD-ROM there’s not just the base OS but also a matching pre-release of LAN Server, Extended Services, Toolkit, and C Set/2 compiler. In addition, there’s all product documentation in electronic format—an alternative to many pounds of manuals.
I should add that IBM did ship these pre-releases on floppies, as seen e.g. here. But the full set would have been about 70 floppies, with no documentation. A single CD-ROM would have been vastly cheaper to produce and mail. As for printed documentation, I’m not sure if IBM even provided any; printing reams of manuals that were going to be obsolete in a month or two probably made little sense.
Obviously IBM didn’t ship the documentation as PDFs, because PDF wasn’t available until 1993. IBM also didn’t ship the documentation in PostScript format (Microsoft used that for NT pre-releases), perhaps because not everyone had a PostScript capable printer, but also because IBM already had a format which solved much the same problems as PDF, and it was called AFP.
The documentation was shipped as ZIP archives containing compressed .LIS files. The .LIS files were in LIST3820 format, a form of AFP. Also included on the CD was an IBM “internal use only” program called LP3820 by Ken Borgendale. The LP3820 utility ran under DOS or OS/2, took the AFP .LIS files as input, and printed them on HP LaserJet or PostScript printers, but could also produce plain ASCII files.
AFP to PDF
Obviously it would be desirable to convert the .LIS files to PDF. While AFP viewers exist, they are nowhere near as ubiquitous as PDF viewers. Running the .LIS files through LP3820 and then converting them PDF is easy. Most of the time.
Attempting to convert a random white paper (WP2OS2.LIS) presented an interesting challenge. On page 6 of the document, there is a large table. For reasons that I do not understand, the table is formatted such that it’s significantly wider than standard page size. It ends up getting cut off in the PDF, whether using GhostScript or Distiller to do the conversion.
Playing with the PCL output of LP3820 and the PCL viewer from the GhostScript suite I was able to confirm that the table is not cut off in the original. But getting all of it in a PDF wasn’t easy.
At first I tried using a pdfmark CropBox. But that did nothing, because the CropBox can only reduce the size of a page, not enlarge it. After a while I came to the conclusion that PDF conversion can’t really do much, the problem is lower down on the PostScript level.
So I dug up the PostScript Level 2 reference manual. A quick search for ‘page size’ homed in on the
setpagedevice operator, with a promising looking
The PostScript files produced by LP3820 do not emit any page size information and 8.5 × 11 inch (Letter) paper size is assumed. The table needed significantly wider paper, at least 10 inches.
setpagedevice turned out to be the right solution. At the beginning of the document, I added
<< /PageSize [612 792] >> setpagedevice
although that was really redundant (explicitly setting 8.5 × 11 inch page size). On the problematic page, I added
<< /PageSize [756 792] >> setpagedevice
to set 10.5 × 11 inches page size (the units used are 1/72 in, so 720 corresponds to 10 inches). On the following page, I reset the page size back to 8.5 × 11.
This produced exactly the desired result: The document uses the standard page page size, only the one problematic page is wider. This kind of page size control works in both GhostScript and Distiller.
Before I even got that far, I had a different problem with the PostScript files produced by the old version of LP3820. I was able to convert the files to PDF with GhostScript, but not with Distiller. My best guess was that Distiller was complaining about a missing
LP3820 supplies two small specialty PostScript fonts. And sure enough, they define a
FontBox but not
FontBBox. The PostScript reference manuals claim that
FontBBox is required for fonts.
So there’s an interesting discrepancy. I assume that back in 1991-1992, LP3820 produced output which must have worked on at least some PostScript printers. GhostScript is more forgiving, Distiller is more “by the book”.
In the end, it was not hard to edit two files
LPXTYP.PSH, and duplicate the
FontBox line to get something like this:
/FontBox [0 -25 62 95] def /FontBBox [0 -25 62 95] def
That made Distiller happy and allowed me to convert the files. I am fairly certain that newer versions of LP3820 do not have this problem.
The resulting collection of OS/2 2.0 white papers from January 1992 may be viewed here. These were published under the IBM Personal Systems Software heading and cover OS/2 2.0 as well as OS/2-based products.
Note that page 15 in the PDF is the extra-wide one which needed special handling. I’m still not sure why that one table got out of control…
Update (Apr 26, 2022)
Comments pointing out that perhaps the oversized table was meant to be printed in landscape mode turned out to be absolutely correct. Running a newer version of LP3820 (version 2.7) produced a table in landscape mode, with no oversized page problem.
The updated PDF is here.
There is one other interesting difference between the old LP3820 version (1.3i) delivered on the DAP CD and the newer one. The old LP3820 positions each character individually, presumably using font metrics for AFP fonts. The new LP3820 positions words, not characters. As a result, character spacing within words is slightly different, because PostScript rules are used, rather than AFP. The new approach in my opinion produces better looking results.