Herunterladen Inhalt Inhalt Diese Seite drucken

Indizierte Unterprogramme - Scanlab RTC 5 Installation Und Inbetriebnahme

Inhaltsverzeichnis

Werbung

programm zu diesem Zweck mit dem Befehl
set_sub_pointer
referenziert werden kann, muss
allerdings seine Anfangsadresse bekannt sein. Vor
dem Laden eines nichtindizierten Unterpro-
gramms in den Listenbereich ("Liste 1" oder
"Liste 2") sollte daher immer die Startadresse mit
dem Befehl
get_input_pointer
werden.

Indizierte Unterprogramme

®
Bei der RTC
5 können zusätzlich zu nichtindizierten
Unterprogrammen auch indizierte Unterprogramme
definiert werden. Mit dem load_sub-Befehl wird ein
durch nachfolgende Listenbefehle definiertes Unter-
programm mit dem gewünschten Index versehen
und in den geschützten Speicherbereich ("Liste 3")
geladen. Indizierte Unterprogramme müssen jeweils
mit einem list_return-Befehl abgeschlossen werden
(sonst werden sie nicht gespeichert) und werden mit
dem sub_call-Befehl unter Angabe des Indexes
aufgerufen.
Es sind auch verschachtelte Aufrufe mit einer
Verschachtelungstiefe von bis zu 63 Aufrufen
möglich.
Es können 1024 indizierte Unterprogramme gespei-
chert werden. Die Speicherverwaltung der indizierten
Unterprogramme erfolgt intern. Die RTC
für jedes indizierte Unterprogramm den Index, die
zugehörige Speicheradresse (Startposition) und die
Anzahl der Listenbefehle in einer internen Verwal-
tungstabelle. Die Indexverwaltung von indizierten
Unterprogrammen durch den Benutzer wird im
Abschnitt
"Indexverwaltung und Defragmen-
tierung", Seite 84
beschrieben.
Die Speicheradresse eines indizierten Unterpro-
gramms kann mit
get_sub_pointer
werden. Dadurch kann das indizierte Unterpro-
gramm auch wie ein nichtindiziertes Unterprogramm
unter Angabe der absoluten Speicheradresse aufge-
rufen werden.
®
®
RTC
5 PCI-Karte, RTC
5 PCI-Express-Karte, RTC
Rev. 1.10 d
6 Programmierung von Anwenderprogrammen
Ein indiziertes Unterprogramm wird mit dem
load_sub-Befehl nur dann gespeichert,
• wenn vor dem Laden der geschützte Speicherbe-
reich ("Liste 3") in ausreichender Größe jenseits
von "Liste 1" und "Liste 2" konfiguriert wurde.
Wenn beispielsweise der gesamte Listenspeicher
ausgelesen
einer oder beiden Listen zugeordnet ist, können
keine indizierten Unterprogramme gespeichert
werden. Mit dem Befehl get_list_space, falls
dieser nach einem load_sub-Befehl (aber vor
einem nächsten
kann der noch frei verfügbare Speicherplatz des
geschützten Speicherbereichs abgefragt werden.
• wenn das indizierte Unterprogramm mit einem
list_return-Befehl abgeschlossen wird
• wenn vor dem
Positionierung des Input-Pointers wie z.B. ein
erneuter load_sub-Befehl, set_input_pointer,
oder
• wenn der Index im zulässigen Bereich (0 ... 1023)
liegt.
Nach einem list_return-Befehl wird der Input-Pointer
illegal, evtl. direkt nachfolgende Listenbefehle
werden nicht mehr gespeichert.
Indizierte Unterprogramme werden mit load_sub-
®
Befehlen in der Reihenfolge der Eintragung in
5 speichert
"Liste 3" geschrieben. Die kleinstmögliche Start-
adresse wird dabei – entsprechend der bereits einge-
tragenen indizierten Unterprogramme (und Zeichen-
sätze) – automatisch ermittelt. Wird ein indiziertes
Unterprogramm mit einem bereits bestehenden
Index abgespeichert, so wird das vorgehend so indi-
zierte Unterprogramm nicht überschrieben, sondern
es bleibt zunächst im geschützten Speicherbereich
("Liste 3") gespeichert, ist dann aber nicht mehr refe-
abgefragt
renziert und kann daher nicht mehr mit
seinen Index, allerdings weiterhin über seine absolute
Speicheradresse aufgerufen werden.
Ob für einen bestimmten Index ein Unterprogramm
referenziert ist, kann mit
werden. Falls kein Unterprogramm referenziert ist,
gibt der Befehl einen Wert von "–1" (d.h. 2
zurück.
®
®
5 PC/104-Plus-Karte, RTC
5 PCIe/104-Karte
load_list
o.ä.) angewendet wird,
list_return
kein anderer Befehl zur
set_start_list_pos
erfolgt
get_sub_pointer
sub_call
über
abgefragt
32
–1)
81

Werbung

Inhaltsverzeichnis
loading

Inhaltsverzeichnis