70896a91 |
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.\\ |
c7358c23 |
20 | So there is a need for the collector to verify, analyse, sort, split, and |
70896a91 |
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 |
c7358c23 |
30 | object code which then again is punched out on paper tape. |
70896a91 |
31 | See \cite{ser16:progref} for operation details.\\ |
c7358c23 |
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 |
70896a91 |
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.\\ |
c7358c23 |
41 | The resulting ''silent 4/6/6 code'' can be easily processed by the ASR 33/35 |
70896a91 |
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 | |
c7358c23 |
49 | \subsection{\pname Functionality} |
50 | \pname is a program which is capable of object and library tape image analysis.\\ |
70896a91 |
51 | It reads in the data from a file or a serial line, retranslates |
c7358c23 |
52 | the mangled characters (4/6/6 code, see above), and reassembles the data blocks into an internal |
70896a91 |
53 | representation.\\ |
54 | The block checksum is checked immediately after a |
55 | block has been read in. This provides for immediate error reporting and |
c7358c23 |
56 | handling. |
57 | One input data error handling possibility is to immediately |
70896a91 |
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 |
c7358c23 |
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 | |