USR
Aus C64-Wiki
Anmerkung: Dieser Artikel beschreibt die numerische Funktion USR unter BASIC V2 des Commodore 64.
Typ: Gleitpunkt-Funktion Allgemeine Programmier-Syntax: USR(<Zahl>)
Die BASIC-Funktion USR() ruft aus einem BASIC-Programm ein Maschinensprache-Unterprogramm auf, gibt an dieses das Argument (Zahl) weiter und gibt selbst einen (anderen) Zahlenwert in einer Gleitpunktvariablen an das BASIC-Programm zurück.
Die Startadresse des Maschinenprogramms muss sich beim Aufruf von USR() in den Speicheradressen 785 und 786 befinden - ggf. muss sie zuvor mit dem BASIC-Befehl POKE dort hinein geschrieben werden. Der Rückgabewert wird im Gleitpunkt-Akkumulator bei der Speicheradresse 97 gespeichert, bevor er an das BASIC-Programm übergeben wird.
Befindet sich keine richtige Startadresse für ein Maschinenspracheprogramm in den Speicheradressen 785 und 786, so erscheint die BASIC-Fehlermeldung ?ILLEGAL QUANTITY ERROR in Zeilennummer. Es werden nur Zahlen aus dem Wertebereich -1e+38 bis 1e+38 verarbeitet, ansonsten wird die BASIC-Fehlermeldung ?OVERFLOW ERROR IN Zeilennummer ausgegeben. Fehlt das numerische Argument, so erscheint ?SYNTAX ERROR IN Zeilennummer. Bei der Verwendung von falschen Variablentypen wird die BASIC-Fehlermeldung ?TYPE MISMATCH ERROR in Zeilennumer ausgegeben.
[Bearbeiten] Beispiele
10 S1 = USR(123) 20 PRINT S1 30 PRINT USR(S1)
ABS | AND | ASC | ATN | CHR$ | CLOSE | CLR | CMD | CONT | COS | DATA | DEF | DIM | END | EXP | FN | FOR | FRE | GET | GET# | GOSUB | GOTO | IF | INPUT | INPUT# | INT | LEFT$ | LEN | LET | LIST | LOAD | LOG | MID$ | NEW | NEXT | NOT | ON | OPEN | OR | PEEK | POKE | POS | PRINT | PRINT# | READ | REM | RESTORE | RETURN | RIGHT$ | RND | RUN | SAVE | SGN | SIN | SPC | SQR | STATUS/ST | STEP | STOP | STR$ | SYS | TAB | TAN | THEN | TIME/TI | TIME$/TI$ | TO | USR | VAL | VERIFY | WAIT