| 1 | \section{Introduction} |
| 2 | \subsection{Motivation} |
| 3 | Software for the Honeywell Series 16 minicomputers is very rare today, |
| 4 | most of the software ever written for them seems to be lost. But some |
| 5 | of it still exists --- spread over the world in dusty boxes on attics or in |
| 6 | cellars, on software preservation websites and on collectors' harddisks.\\ |
| 7 | The software is stored on punched paper tapes or in disk files containing images |
| 8 | of paper tapes.\\ |
| 9 | Often enough the tape labels (resp. file names) are way too vague to exactly |
| 10 | identify and understand the contents of a tape.\\ |
| 11 | Back in the |
| 12 | times when the Series 16 machines were still in use, everybody knew |
| 13 | \emph{his} paper tapes' contents and \emph{his} programs' library dependencies. |
| 14 | Everybody had an I/O library for \emph{his} computer's configuration.\\ |
| 15 | Nowadays we have only the remains of all that: many object and library tapes |
| 16 | with sometimes obscure names written on it.\\ |
| 17 | We can neither verify the correctness of the data on the tapes nor |
| 18 | get any information about a tape's exact contents, exported symbols, |
| 19 | and dependencies.\\ |
| 20 | So there is a need for the collector to verify, analyse, sort, split, and |
| 21 | recombine his paper tape software.\\ |
| 22 | The \pname program provides a handy approach to |
| 23 | help doing this using a newer computer with an UNIX style operating system, |
| 24 | disk drives, and some kind of paper tape reading facility. |
| 25 | |
| 26 | \subsection{The Technical Background} |
| 27 | The Honeywell Series 16 assembly program DAP-16 \cite{ser16:dap16:manual} |
| 28 | and the FOTRAN IV compiler program \cite{ser16:frtn:manual} |
| 29 | read source code from punched paper tape and translate it into relocatable |
| 30 | object code which then again is punched out on paper tape. |
| 31 | See \cite{ser16:progref} for operation details.\\ |
| 32 | The object data is organised in blocks of variable layout and length consisting |
| 33 | of 16 bit wide native Series 16 machine words. The block format is described |
| 34 | in \cite{ser16:progref}, pages 5-21ff. \\ |
| 35 | To store the object blocks on punched paper tapes, each word in the block is |
| 36 | divided into three parts: the first one is 4 bits wide, the second and |
| 37 | third one are 6 bits wide.\\ |
| 38 | Each frame is now translated so that the resulting paper tape frames don't |
| 39 | contain any printable or control characters. Then the block is enclosed by |
| 40 | control characters and sent out to the paper tape punch device.\\ |
| 41 | The resulting ''silent 4/6/6 code'' can be easily processed by the ASR 33/35 |
| 42 | printing terminal. It is even possible to mix listing and object code |
| 43 | on one tape because the text between the silent data blocks is |
| 44 | ignored by the loader.\\ |
| 45 | See \cite{ddp516:users_guide}, page 10-1ff for more information about this |
| 46 | concept, but be aware that the translation table in the document contains |
| 47 | \emph{severe} errors.\\ |
| 48 | |
| 49 | \subsection{\pname Functionality} |
| 50 | \pname is a program which is capable of object and library tape image analysis.\\ |
| 51 | It reads in the data from a file or a serial line, retranslates |
| 52 | the mangled characters (4/6/6 code, see above), and reassembles the data blocks into an internal |
| 53 | representation.\\ |
| 54 | The block checksum is checked immediately after a |
| 55 | block has been read in. This provides for immediate error reporting and |
| 56 | handling. |
| 57 | One input data error handling possibility is to immediately |
| 58 | stop a tape reader connected to a serial port so that the user has a clue |
| 59 | where to look for faulty regions on the paper tape. This is very useful |
| 60 | when reading in last existing copies of old software.\\ |
| 61 | After the error-free blocks are present in the program's memory, it is |
| 62 | possible to do various operations on it. Examples are symbol name extraction and listing, |
| 63 | splitting up a tape image's contents into several distinct files, |
| 64 | or even reverse assembly and relocating into a virtual Series 16 main memory. |
| 65 | |