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