--- /dev/null
+\section{Introduction}
+\subsection{Motivation}
+Software for the Honeywell Series 16 minicomputers is very rare today,
+most of the software ever written for them seems to be lost. But some
+of it still exists --- spread over the world in dusty boxes on attics or in
+cellars, on software preservation websites and on collectors' harddisks.\\
+The software is stored on punched paper tapes or in disk files containing images
+of paper tapes.\\
+Often enough the tape labels (resp. file names) are way too vague to exactly
+identify and understand the contents of a tape.\\
+Back in the
+times when the Series 16 machines were still in use, everybody knew
+\emph{his} paper tapes' contents and \emph{his} programs' library dependencies.
+Everybody had an I/O library for \emph{his} computer's configuration.\\
+Nowadays we have only the remains of all that: many object and library tapes
+with sometimes obscure names written on it.\\
+We can neither verify the correctness of the data on the tapes nor
+get any information about a tape's exact contents, exported symbols,
+and dependencies.\\
+So there is a need for the collector to verify, analyze, sort, split, and
+recombine his paper tape software.\\
+The \pname program provides a handy approach to
+help doing this using a newer computer with an UNIX style operating system,
+disk drives, and some kind of paper tape reading facility.
+
+\subsection{The Technical Background}
+The Honeywell Series 16 assembly program DAP-16 \cite{ser16:dap16:manual}
+and the FOTRAN IV compiler program \cite{ser16:frtn:manual}
+read source code from punched paper tape and translate it into relocatable
+object code which is then punched out on paper tape again.
+See \cite{ser16:progref} for operation details.\\
+The object data is organized in blocks of variable layout and length consisting
+of 16 bit wide native machine words. The block format is described
+in \cite{ser16:progref}, pages 5-21ff. \\
+To store the object blocks on punched paper tapes, each word in the block is
+divided into three parts: the first one is 4 bits wide, the second and
+third one are 6 bits wide.\\
+Each frame is now translated so that the resulting paper tape frames don't
+contain any printable or control characters. Then the block is enclosed by
+control characters and sent out to the paper tape punch device.\\
+The resulting ''silent 4/6/6 code'' can be easily processed by the ASR 33
+printing terminal. It is even possible to mix listing and object code
+on one tape because the text between the silent data blocks is
+ignored by the loader.\\
+See \cite{ddp516:users_guide}, page 10-1ff for more information about this
+concept, but be aware that the translation table in the document contains
+\emph{severe} errors.\\
+
+\subsection{Functional Overview}
+\pname is a program which is capable of analyzing object tapes.\\
+It reads in the data from a file or a serial line, retranslates
+the mangled characters, and reassembles the data blocks into an internal
+representation.\\
+The block checksum is checked immediately after a
+block has been read in. This provides for immediate error reporting and
+handling. One input data error handling possibility is to immediately
+stop a tape reader connected to a serial port so that the user has a clue
+where to look for faulty regions on the paper tape. This is very useful
+when reading in last existing copies of old software.\\
+After the error-free blocks are present in the program's memory, it is
+possible to do various operations on it. Examples are extracting and
+listing of symbol names, split up the data of a library into several files
+or even reverse assembly and relocating into a virtual Series 16 main memory
+(not in the base variant of the program).
--- /dev/null
+@article{lin1973,
+ author = "Shen Lin and Brian W. Kernighan",
+ title = "An Effective Heuristic Algorithm for the
+ Travelling-Salesman Problem",
+ journal = "Operations Research",
+ volume = 21,
+ year = 1973,
+ pages = "498-516"
+}
+
+@string{hon_organization="Honeywell"}
+@string{hdoc="Doc. No."}
+string{hon_author=""}
+
+@InBook{ser16:progref:bformats,
+ title = "Object Program Format",
+ crossref="ser16:progref",
+ month="",
+ year="",
+ note="",
+ chapter = 5,
+ pages = "21-27",
+}
+
+@Manual{ser16:progref,
+ title = "316/516 Programmers' Reference Manual",
+ author = hon_author,
+ organization = hon_organization,
+ month = may,
+ year = 1969,
+ note = hdoc # "130071585C"
+}
+
+@Manual{ddp516:users_guide,
+ title = "DDP-516 Users Guide",
+ author = hon_author,
+ organization = hon_organization,
+ month = mar,
+ year = 1967,
+ note = hdoc # "130071627",
+}
+
+@Manual{ser16:dap16:manual,
+ title = "DAP-16 and DAP-16 MOD 2 Assembly Language Reference
+ Manual",
+ author = hon_author,
+ organization = hon_organization,
+ month = Jun,
+ year = 1971,
+ note = hdoc # "70130072442B",
+}
+
+@Manual{ser16:dap16:src,
+ title = "DAP-16 Source Code Listing",
+ author = hon_author,
+ organization = hon_organization,
+ note = hdoc # "xxx"
+}
+
+@Manual{ser16:ldr-apm:src,
+ title = "LDR-APM Relocating Link-Loader Source Code Listing",
+ author = hon_author,
+ organization = hon_organization,
+ annote = hdoc # "xxx"
+}
+
+@Manual{ser16:frtn:manual,
+ title = "FORTRAN IV manual",
+ key = "f4m",
+ author = hon_author,
+ organization = hon_organization,
+ month = apr,
+ year = 1977,
+ note = hdoc # "70130071364A"
+}
+