Anweisung zur *bergabe einer Zeichenkette an das Betriebssystem.
Syntax:
OSCLI Ausdruck
Argument:
Ausdruck sollte eine Zeichenkette zwischen 0 und 255 Zeichen sein. Sie wird zur Ausführung an die
OS_CLI Routine des Betriebssystems übergeben.
Hinweise: Der Unterschied zwischen der *bergabe einer Zeichenkette an das Betriebssystem mit Hilfe eines Sternchen-Befehls oder mit OSCLI besteht darin, daß bei der ersten Methode kein Versuch der Verarbeitung des nachfolgenden Texts unternommen wird, während OSCLI den Text als einen BASIC String-Ausdruck interpretiert. So kann man sagen:
OSCLI "LOAD file "+STR$~buffer%
aber nicht (sinnvoll)
*"LOAD file "+STR$~buffer%
Mit Erweiterungen zu BBC BASIC auf früheren Rechnern (z.B. auf dem Master 128) benutzen interne BASIC-Routinen, die durch OSCLI Befehle aufgerufen wurden. BBC BASIC stellt bei Verwendung von Sternchen- oder OSCLI-Befehlen zusätzliche Informationen bereit, damit Software auf diesen Rechner übertragen werden kann. Dies geschieht jedoch nicht bei SYS "OS_CLI" "Fred".
Informationen werden an die Register R0 bis R5 übergeben, weil die hohen Benutzermodus-Register von anderen Modi nur mit Mühe lesbar sind. Vor Benutzung der in diesen Registern aufbewahrten Informationen sollte die Routine sie an die richtigen Register übergeben (wie dies unter CALL beschrieben wird). Außerdem sollte sie sicherstellen, daß die Ausführung im Benutzermodus erfolgt, bevor Aufrufe an irgendwelche BASIC-Routinen ergehen.
R0 enthält den CLI String-Zeiger
R1 enthält &BA51Cxxx
R2 ARGP
R3 LINE
R4 aktueller String-Zeiger
R5 Umgebungs-Informationszeiger (wie CALL)
Der Wert in R1 sollte von jeder Routine überprüft werden, um zu überprüfen, daß der Aufruf tatsächlich von BASIC erfolgt (ferner empfielt sich die *berprüfung von R2 bis R5 auf gültige Adressen); der Wert ist auch an Adresse [R5,#-4]. Der aktuelle BASIC Interpreter liefert &BA51C005, der nächste &BA51C006 usw.
Der Wert in LINE ist nicht absolut zuverlässig, er genügt jedoch, damit BASIC im Falle eines Fehlers die richtige Zeilennummer produzieren kann. Wenn BASIC schließlich am Ende des SWI OSCLI Aufrufs zurückkehrt, darf es keine Änderungen in den Benutzermodus-Registern vorfinden.
Beispiele: OSCLI "CAT"
OSCLI "LOAD "+file$+" "+STR$buff% : REM Datei im Puffer holen