\chapter{DAP-16 Assembler}

\section{Quelltextformat}
Das meiste Kopfzerbrechen, das mir die Benutzung des Assemblers beschert hat, rührte
daher, daß ich das Quelltextformat nicht komplett begriffen hatte.\\
Deswegen möchte ich hier die beiden zulässigen Formate genau beschreiben.
\subsection{Festformat}

Alles stammt von der Lochkarte ab. Das ist ein immer wieder wichtiger Merksatz.\\
Im Festformat besteht jede Zeile aus exakt 72 (?) Zeichen, gefolgt von einem \verb:<LF>: 
(ASCII 10) Zeichen. 
Ein dem \verb:<LF>: vorangestelltes \verb:<CR>: wird geduldet, ist aber unnötig.
Dabei gilt die folgende Zeileneinteilung:\\
\begin{center}
\begin{tabular}{r|p{4em}|p{0.1cm}|l|l|l|l        }        
    Position: & 1-4  &  & 6-10 &     & 12-30    & 30-72     \\ \hline
    Aufgabe:  & Marke & & Befehl & & Argumente  & Kommentar  \\
\end{tabular} 
\end{center}
\vspace{1em}
Beispiel:
\begin{verbatim}
STRT LDA   OP1               DIES IST EINE ASSEMBLERZEILE
\end{verbatim}

\subsection{Tabulatorformat}
Das Tabulatorformat wurde eingeführt, um bei Benutzung von Lochstreifen nicht immer jede Zeile
komplett vollschreiben bzw. mit Leerzeichen auffüllen zu müssen. Als Tabulatorzeichen wird der
Backslash (\verb:\:) benutzt. Mit dem Backslash kann man zum nächsten Feld springen, sich also
die Leerzeichen und die Zählerei sparen. Allerdings sieht eine auf dem ASR geschriebene Codezeile
im Tabulatorformat nicht sehr übersichtlich aus.\\
Hier das Beispiel von oben im Tabulatorformat:
\begin{verbatim}
STRT\LDA\OP1\DIES IST EINE ASSEMBLERZEILE
\end{verbatim}
Wenn Felder leer bleiben sollen, z.B. das Markenfeld am Anfang, muß trotzdem der entsprechende
Backslash eingefügt werden:
\begin{verbatim}
\ICA\\ZEILE OHNE MARKE UND OPERAND
\end{verbatim}

\subsection{Quelltexte aus dem PC}
Wenn man DAP-16-Quelltext auf dem PC schreibt, bietet es sich an, echte \verb:<TAB>:-Zeichen zu
benutzen und diese dann kurz vor der Benutzung  automatisiert in Backslashes umzuwandeln.\\
Wichtig ist auch, daß der Assembler (der FORTRAN IV Compiler auch!) 
alle Eingangsdaten als 7 bit ASCII plus gesetztem achtem Bit erwartet. 
Andere Zeichen werden ignoriert!!\\
Dafür braucht man ein kleines Filterprogramm.

\section{Assemblieren}
\begin{enumerate}
\item Assembler in den Kernspeicher laden.
\item A-Register mit Einstellungen füllen.
\item Quelltext in Lochstreifenleser einlegen.
\item \verb:START: am Computer drücken, warten.
\item nach dem ersten Durchlauf Band wieder einlegen, wieder \verb:START: drücken.
\end{enumerate}
\vspace{0.5cm}
Einstellungen für's A-Register:
\begin{verbatim}
Bit  1:  Immer setzen für 2-pass-Assemblierung

Auswahl der Quelle für den Quelltext:
Bit  2:  Teletype 
Bit  3:  Lochstreifenleser

Auswahl des Ziels für Objektdaten:
Bit  7:  Teletype 
Bit  8:  Locher
Bit 11:  Keinen Objektcode ausgeben

Auswahl des Ziels für das Listing:
Bit 12:  Teletype
Bit 13:  Locher
Bit 15:  Zeilendrucker
Bit 16:  Kein Listing
\end{verbatim}
