next up previous
Nächste Seite: Optionale Libraries ohne Implementation Aufwärts: Externe Prozeduren, Libraries Vorherige Seite: Libraries

CODE

Alle in der Definition eines Schnittstellen-Moduls enthaltenen Prozeduren müssen jedoch eine CODE-Anweisung enthalten, die ihren Offset in der Library-Tabelle angibt. Der Compiler sorgt im Falle eines Prozeduraufrufs selbständig dafür, dass das Register A6 mit der Adresse der Library geladen wird. Die nachfolgende Anweisung ist dann JSR d(A6), wobei für d der angegebene Offset verwendet wird.


\begin{example}
\begin{verbatim}PROCEDURE GetDiskObject(name{8}:ADDRESS):DiskObjectPtr;
CODE -78;\end{verbatim}\end{example}

Es ist auch möglich, CODE-Prozeduren in normalen Moduln zu definieren, als Beispiel diene das Modul Timer. In diesem Fall muss jedoch das Register A6 explizit als Parameter der Prozedur auftreten. Bei einem Prozeduraufruf wird das Register nicht geladen, weil es durch den Parameter bereits gesetzt wurde. Es wird nur die Anweisung JSR d(A6) ausgeführt. Der Programmierer ist dafür verantwortlich, dass der A6-Parameter einen gültigen Wert erhält, z.B. den Zeiger auf das geöffnete Device!
\begin{example}
\begin{verbatim}PROCEDURE AddTime(timer{14}:ADDRESS;
dest{8},source{9}:TimeValPtr); CODE -42;\end{verbatim}\end{example}



Claudio Nieder 2000-11-12