
\section{Der Dekoder ({\tt m2decobj\/})}

Der Dekoder ist ein Disassembler, der speziell f"ur die Objektdateien
des M2Amiga-Systems konzipiert ist. Er zeigt den erzeugten Code
eines Moduls als Assembler-Text an, auf Wunsch auch mit
dem Quelltext und dem Objektcode am Beginn jeder Zeile.

Er kennt den kompletten Befehlssatz und alle Adressierungsarten
der Prozessoren 68000 und 68881, sowie alle zus"atzlichen Befehle
weiterer Prozessoren, {\em die der Compiler generiert}.
Des weiteren erzeugt er Sprungmarken (Label) und kann
auch die Sprungtabellen der CASE-Anweisungen korrekt darstellen.

\subsection{Aufruf und Bedienung}
\begin{quote}\tt
m2decobj \{+-012348osq -c{\cmsltt{}Colour} ? {\cmsltt Modulname\/}\}
\end{quote}

Falls beim Aufstarten des Dekoders kein Modulname angegeben,
oder eine Datei nicht gefunden wird,
geht er in den Modus, in dem Optionen oder
Dateinamen direkt eingegeben werden k"onnen. Das Programm
kann in diesem Modus durch Eingabe einer Leerzeile beendet werden.

\subsection{Optionen}
Optionen (Schalter) k"onnen durch "`{\tt -}"' gel"oscht
und mit "`{\tt +}"' gesetzt
werden. Eine allgemeine Beschreibung der Bedienung und Optionen
aller M2Amiga-Programme finden Sie im Abschnitt \ref{refBedien} auf Seite
 \pageref{refBedien}.

Beim Start des Dekoders sucht er zun"achst die Datei
(bzw.\ Umgebungs-Variable)
"`{\tt ENV:m2decobj}"', in der Optionen angegeben werden k"onnen,
die jedesmal beim Start aktiviert werden. Der Befehl
"`{\tt SetEnv m2decobj +o}"' im CLI sorgt also daf"ur, dass bei jeder
Datei der Objektcode angezeigt wird, wenn von der Kommandozeile
nichts Gegenteiliges bestimmt wird.

\begin{ttscript}{0{\rm \ldots}8}
\item[?] zeigt die Version und Aufruf-Syntax des Dekoders an.
\item[0{\rm \ldots}8] bestimmt die Endung der Objektdatei, nach der
gesucht werden soll ({\tt obj}, {\tt ob1}, {\tt ob2}, {\tt ob3},
{\tt ob4}, {\tt ob8}). Die Zeichen "`{\tt +}"' oder
"`{\tt -}"' f"ur das Einleiten der Optionen ist hier ohne Wirkung.
Standardeinstellung ist "`0"'.
\item[c{\cmsltt n\/}]
  erm"oglicht die Farbeinstellung des angezeigten Quelltextes.
  Die Ziffer gibt die zu verwendende Farbe an, der Wert 0
  steht f"ur keine Farb"anderung, wie sie bei Dateiumlenkungen
  verwendet werden soll\-te.
  Vorgabem"assig wird der Quelltext in der Farbe 2 angezeigt.
  Der Code wird in Standardfarbe --- normalerweise Farbe 1 ---
  angezeigt.
\item[o]
  (object) "`{\tt +o}"' erzeugt in jeder Zeile vor dem
  Assembler-Code noch den Objektcode in Hexadezimaldarstellung.
  "`{\tt -o}"' unterdr"uckt die Anzeige. Standardeinstellung ist "`{\tt -o}"'.
\item[q] (quiet) "`{\tt -q}"' unterdr"uckt s"amtliche Zusatzmeldungen.
 Dies ist besonders n"utzlich, wenn eine Ausgabeumleitung benutzt
 wird, sodass die Datei nur den reinen Assembler-Code enth"alt.
 "`{\tt +q}"' schaltet diese Meldungen ein. Ohne Angabe werden
  Zusatzmeldungen ausgegeben.
\item[s] (source) "`{\tt +s}"' zeigt zus"atzlich zum Assembler-Code
  den Quelltext, der zum entsprechenden Code gef"uhrt hat. 
  Standardm"assig wird der Quelltext mit angezeigt, wenn
  eine Referenz-Datei vorhanden ist.
\end{ttscript}

\begin{example}
"`{\tt m2decobj +1o Test -o0 Demo}"' sucht im aktuellen Projekt
nach der Datei
{\tt Test.ob1} und disassembliert diese auf dem Bildschirm mit
Anzeige des Objektcodes. Danach wird die Datei {\tt Demo.obj} ohne Anzeige
des Objektcodes dargestellt und das Programm verlassen.
\end{example}

\subsection{R"uckgabewerte}

\begin{ttscript}{rcImportantNotFound}
\item[rcWarn]
  In der Ausgabe wurde der Quelltext verlangt aber nicht gefunden.
\item[rcIllOpt]
  Eine ung"ultige Option oder "`{\tt ?}"' wurden angegeben.
\item[rcActionErr]
  Das Objektformat ist nicht korrekt.
\item[rcMainNotFound]
  Das Hauptmodul wurde nicht gefunden.
\end{ttscript}

Die Verwendung der R"uckgabewerte ist unter \ref{RetVal}
beschrieben.
