http://invisible-island.net/personal/oldprogs/
Copyright © 2012-2013,2014 by Thomas E. Dickey


A printer utility that I (re)wrote

During the first several years of programming, I used (of course) programs written by different companies including IBM, Univac, DEC, as well as a few written by knowledgeable university staff. But it was rare to to use programs written by my immediate associates.

That changed in the fall of 1977.

I was developing a complicated set of programs (more than a dozen, totaling about 75,000 lines) on a PDP-11 minicomputer for my research project. At the end of a session (this was not a personal computer), I would print the programs that I had modified, and review them during the week. This was only possible because the research grant that had purchased the minicomputers had also bought a line printer. While it was possible to print on a terminal, the line printer was much faster.

However, an unrelated group began setting up a Unix system on a PDP 11/34. Deciding that they had better use for the printer, they took it away (actually its cabling), and made no provision for its use by the researchers.

After several months of heated discussion, the new "owner" of the printer offered to

I agreed to the former. None of my programs would have been portable to the Unix system, and it was a distraction.

But on reviewing the code I found the result to be unacceptably poor quality (a "D" on anyone's grading scale). I recall that the RT-11 side had 219 lines (of assembler), made no error checks, and had two comments. One said ^O and the other said ^C.

The author of this code (technically a resident of a third lab) said in so many words, "take it or leave it". I did neither, using the program as a reference wrote my own, filling in the missing documentation and logic.

In the rewrite I made fixes (including stripping the parity bit) based on reading the technical description of the serial interface. Months later, the original version of the program stopped working due to someone's having changed the line parity sense via the driver on the Unix side. But I continued using that printer with the rewritten driver for at least two more years.

Incidentally, I found time to read the Unix manuals (many copies were printed and discarded), and course notes (in particular—seeing bugs in implementations of FIFOs—realized there was nothing to learn in those courses).