★ APPLICATIONS ★ DIVERS ★ USR-fonktion|CPC Amstrad International) ★![]() |
RSX - USR-Fonktion | Applications Divers |
Das hier vorgestellte MC-Programm erweitert das Basic des CPC 464 um eine USR-Funktion. Diese Funktion dient, wie der bereits vorhandene CALL-Befehl, zum Aufruf von MC-Programmen. Anders als beim CALL-Befehl ist bei der USR-Funktion jedoch die Rückgabe eines Ergebnisses an das aufzurufende Basicprogramm vorgesehen. Es gibt zwei Varianten der USR-Funktion: die eine ermöglicht die Rückgabe eines Integerwertes, die andere die Rückgabe eines Strings. In der Integer-Version wird die Funktion folgendermaßen aufgerufen:
Und bei der String-Version sieht das so aus:
Die Parameter für die USR-Funktion sind die gleichen wie für den CALL-Befehl * eine Startadresse und maximal 32 weitere Parameter. Anders als beim CALL können jedoch Strings direkt, ohne den Umweg über die @-Funktion als Parameter verwendet werden (z.B. ergebnis=usr (&8000,"text")). Die Verwaltung der Parameter im MC-Teil ähnelt der des CALL-Befehles (A = Anzahl der Parameter, IX = Pointer auf Parameter-Liste, DE = letzter Parameter, für Strings deutet der Pointer auf den Stringdescriptor). Zurückgegeben wird der Integerwert im Register HL. Bei Strings steht der Rückgabewert in Akku und HL. Im Akku steht die Länge, in HL der Pointer. Listing 1 enthält die Installation des neuen Befehls, die sich automatisch speicheroptimal unter Himem ansiedelt. Listing 2 ist ein Anwendungsbeispiel für den USR-Befehl und realisiert eine DEEK-Funktion. DEEK liest einen 16 Bit-Wert aus dem Speicher. CPCAI 8610
|