Herunterladen Inhalt Inhalt Diese Seite drucken
Inhaltsverzeichnis

Werbung

Unverzögerter

list_call

kurzer
Listenbefehl
Funktion
Bewirkt einen unbedingten Sprung zu einem Unterprogramm, das an der angegebenen
absoluten Adresse (in einem beliebigen Speicherbereich des Listenspeichers) beginnt.
Aufruf
list_call( Pos )
Parameter
Pos
Hinweise
• Der erste Befehl des mit list_call aufgerufenen Unterprogramms wird (evtl. nach einem
list_nop-Befehl) sofort und ohne Verzögerung ausgeführt. Es sind auch geschachtelte
bzw. rekursive Unterprogrammaufrufe zulässig mit einer Verschachtelungstiefe von bis
zu 63 Aufrufen (siehe auch
• Jedes Unterprogramm muss mit dem Befehl
Abarbeiten eines Unterprogramms einschließlich des abschließenden list_return-
Befehls mit dem der aufrufenden Stelle nachfolgenden Befehl fortgefahren wird. Dieser
wird dann auch (evtl. nach einem list_nop-Befehl) sofort und ohne Verzögerung ausge-
führt.
Wird statt eines erwarteten list_return-Befehls ein set_end_of_list-Befehl angetroffen,
wird die Listenausführung beendet oder – sofern zuvor aktiviert – ein automatischer
Listenwechsel ausgeführt (für letzteres ist der momentane Listenstatus entscheidend,
s.u.). Es erfolgt dann in keinem Fall mehr ein Rücksprung zur aufrufenden Stelle, auch
nicht bei verschachtelten Unterprogrammaufrufen. Ein evtl. noch unfertiger
mark_text-Befehl wird nicht mehr zu Ende ausgeführt.
Wird das Ende eines Listenbereichs ("Liste 1" oder "Liste 2") erreicht, ohne dass zuvor
ein
list_return
Anfang der aktuellen Liste fortgefahren. Im geschützten Speicherbereich wird in einem
solchen Fall zwangsweise ein list_return-Befehl eingefügt und ausgeführt.
• Der Befehl list_call wird durch
gleich der aktuellen Adresse ist (get_last_error-Returncode: RTC5_PARAM_ERROR).
• Erfolgt in einem aufgerufenen Unterprogramm ein weiterer list_call-Befehl auf die
Adresse des aufrufenden list_call-Befehls (rekursiver Aufruf), wird die dadurch entste-
hende Endlos-Schleife beendet, sobald die Obergrenze von 63 Aufrufen erreicht ist.
Weitere list_call-Befehle werden dann ignoriert und stattdessen der unmittelbar
folgende Befehl ausgeführt.
• Der mit
geändert, wenn sich die aufgerufene Adresse im Listen-Bereich ("Liste 1" oder "Liste 2")
befindet. Liegt diese dagegen im geschützten Speicherbereich ("Liste 3"), wird der
Listenstatus der aufrufenden Stelle beibehalten, da der geschützte Bereich keinen
eigenen Listenstatus besitzt. Beim Ausführen eines Unterprogramms im geschützten
Speicherbereich gibt auch
Stelle und
tion des aufrufenden list_call-Befehls zurück.
• Absolute Vektor- und Bogenbefehle werden nach Aufruf mit list_call auch absolut
ausgeführt. Wenn das Unterprogramm an unterschiedlichen Stellen im Bildfeld ausge-
führt werden soll, darf es nur relative Mark-, Bogen- oder Jump-Befehle enthalten oder
es ist der Befehl
• Steht list_call auf dem letztmöglichen Speicherplatz einer Liste ("Liste 1" oder
"Liste 2"), so wird – auch bei einem zuvor eingestellten automatischen Listenwechsel –
nach Abarbeitung des aufgerufenden Unterprogramms am Anfang derselben Liste mit
der Ausführung fortgefahren.
®
®
RTC
5 PCI-Karte, RTC
5 PCI-Express-Karte, RTC
Rev. 1.10 d
10 Befehle und Funktionen
Absolute Sprungadresse [0 ... (2
Kapitel 6.5.1 "Unterprogramme", Seite
oder
set_end_of_list
list_nop
read_status
auslesbare BUSY-Listenstatus wird durch list_call gegebenenfalls
get_status
get_status
und
get_out_pointer
list_call_abs
zu verwenden.
®
5 PC/104-Plus-Karte, RTC
20
–1)] als 32-Bit-Wert ohne Vorzeichen.
list_return
abgeschlossen sein, damit nach
angetroffen wurde, wird mit der Ausführung am
ersetzt, wenn Pos >(2
den Listenausführungsstatus der aufrufenden
als Position des Output-Pointers die Posi-
®
5 PCIe/104-Karte
80).
20
–1) oder wenn Pos
349

Werbung

Inhaltsverzeichnis
loading

Inhaltsverzeichnis