Allgemeines
Anwendungsgebiet: | Starten, Unterbrechen und Beenden; siehe "Starten, Unterbrechen und Beenden" |
Makrotyp: | O-Typ; siehe "O-Typ-Makroaufrufe" |
Makrobeschreibung
Mit dem Makro RETRN kann man gesicherte Registerinhalte zurückladen, von einem Unterprogramm in das übergeordnete Programm zurückspringen und auf Wunsch einen Returncode übergeben.
Man ruft den Makro RETRN am Ende eines Unterprogramms auf, wenn man zu dessen Beginn die Register des Hauptprogramms mit dem Makro SAVE gesichert hat. Alle Mehrzweckregister außer dem Register R13 können zwischengespeichert und wieder geladen werden. Das Register R13 muss die Adresse des Zwischenspeichers enthalten, der vom Hauptprogramm zur Verfügung gestellt wurde (siehe Makro SAVE).
Makroaufrufformat und Operandenbeschreibung
|
|
r1
gibt ein Register (Mehrzweckregister=MZR) an, das aus dem Zwischenspeicher geladen werden soll. Für r1 dürfen die Zahlen 0 bis 12, 14 oder 15 angegeben werden; die (runden) Klammern können entfallen.
r1,r2
gibt eine fortlaufende Reihe von Registern (MZR) an, die wiedergeladen werden sollen. Der Bereich (r1,r2) darf Register R13 nicht enthalten, er kann sich aber über die Grenze Register R15 / Register R0 erstrecken. z.B. werden mit der Angabe (14,12) sämtliche Register bis auf Register R13, also Register R0 bis R12, R14 und R15 aus dem Zwischenspeicher geladen.
T
ist für die Kompatibilität mit BBS-Übersetzern vorgesehen und dient dazu, die Vorwärtskettung bei Programmschachtelung zu unterbrechen. In Wort 3 des Zwischenspeichers wird im niederwertigsten Bit eine 1 gesetzt, nachdem die Register zurückgeladen sind.
RC=
legt einen Returncode fest, der dem Hauptprogramm in den drei rechtsbündigen Byte von Register R15 übergeben wird.
rc
Der Wert „rc“ muss eine Dezimalzahl bzw. ein absoluter Ausdruck sein.
(15)
gibt an, dass Register R15 einen Returncode in den drei rechtsbündigen Byte enthält. Register R15 wird nicht mit dem ursprünglichen Inhalt aus dem Zwischenspeicher wiedergeladen.
Funktionsweise
Der Makro RETRN lädt die angegebenen Register aus einem Zwischenspeicher und führt einen Sprung in das Hauptprogramm aus. Für den Aufruf des Makros RETRN wird vorausgesetzt:
im Unterprogramm wurden zu Beginn die Registerwerte mit dem Makro SAVE im Zwischenspeicher gesichert,
die Adresse des Zwischenspeichers wurde nach Register R13 geladen,
im Hauptprogramm wurde die Rücksprungadresse nach Register R14 geladen.
Wenn angegeben, übergibt der Makro RETRN im Register R15 einen Returncode. Dieser Code wird zwischen dem Haupt- und dem Unterprogramm frei vereinbart. Die Beschreibung des Makros SAVE geht auf diesen Sachverhalt ausführlich ein und enthält ein Beispiel.
Hinweis
Für die Registerangaben können auch die Bezeichnungen Rn, (n=Registernummer), verwendet werden.