Hello, I'm just emailing to notify that I've managed to split up the CB-UNIX 2.3
manual in the archive[1] into individual items. I've moved the original contents of
this directory into the "raw" directory, and now the split PDFs of the manual
live under "man". I intend to do the same with the source code scans, breaking
them up into individual files, which will eventually go in an accompanying "sys"
folder.
As for my process, decided to throw together a little something to facilitate splitting up
PDFs from a simple table. I've created two scripts[2], pdfslice and pdfbutcher. The
former is an interface on top of Ghostscript to take a particular page-bound slice out of
a PDF on stdin and drop it on stdout. The latter then reads a tab-delimited list of
slices out of a table, butchering the PDFs down into their various cuts. The format is
dirt simple: the source PDF name, the start page, the end page, and the destination file
prefix to which .pdf is appended on output. This isn't by any means a formal or
robust solution, just something that came together easy and works for my application.
I'm sure this could be made much more efficient; it just operates on one slice at a
time, including all the opening and closing for each slice, but gets the job done. Feel
free to use it for whatever just don't complain to me when it eats your favorite file
or scribbles all over your disk. Also, an example input file for the curious is
included[3].
As for the CB-UNIX pages, my hunch is that whoever owned this manual had a CB-UNIX 2.1
manual originally and "upgraded" it with supplied pages for 2.3, as was
conventional with documentation updates. For this reason, there are a few random blank
pages and several locally printed pages strewn throughout. In any case a blank page was
encountered, it was retained in the document for the manpage it followed. In other words,
if there is a blank page between a.1 and b.1, it is appended to a.1. The likely reason
for blank pages on the back of 2.1 pages was that new copies of the same 2.1 pages were
provided with the replacements to keep the page spacing correct with respect to the pages
not being replaced. That's my hunch anyway.
There are also pages here and there missing a page, or more likely that were supposed to
be removed in the 2.1->2.3 update and simply weren't. Plus, there are a few
instances of more than one copy of a non-local version of a page present (in other words,
situations where the original 2.1 page wasn't removed but a 2.3 or other newer page
was also added). In all these circumstances, the 2.1 page is the one with the normal name
and the 2.3 page has been affixed .1l instead of .1, despite not being in the "local
pages" PDFs. I'm open to suggestions but my reasoning was that if the 2.1 was
the original page for that actual binder, and wasn't replaced by 2.3 but rather that
was added, then the 2.3 page for all intents and purposes is a local addition. When in
doubt, [4] should be a reasonably complete list of which non-l-suffixed pages aren't
from 2.1. Anything else non-local should originate from the previous manual. Also, where
there were duplicates on pages that otherwise couldn't be solved this way, the older
of the two pages is marked with a .o in the path before the manual section, keeping with
the CB-UNIX convention of doing this for old versions of pages.
As usual, please let me know if anything seems amiss. I'll admit after a few spot
checks I didn't check each and every page my script popped out for accuracy, but
everything I've checked had the right pages. If you do find something off and want
to try and slice it right, the scripts above include manpages that should give you a good
idea on how to use them if simply reading the scripts isn't clear.
- Matt G.
[1] -
https://www.tuhs.org/Archive/Distributions/USDL/CB_Unix/
[2] -
https://gitlab.com/segaloco/misc/-/tree/master/scripts
[3] -
https://pastebin.com/9s2ene9g
[4] -
https://pastebin.com/jHw7JeDc
P.S. Wholly unrelated but just out of curiosity, if anyone knows the 16650 UART well and
has some time, can you please email me privately? It's tangential to a UNIX-y
project but I'll spare the details here.