BASIC-Anweisungen

Nachfolgend werden die BASIC-Anweisungen beschrieben, die der Compiler versteht. Es wird auch auf die Unterschiede zum AC1-Mini-BASIC und Z1013-Tiny-BASIC eingegangen.

Wenn zu einer Anweisung keine Syntax angegeben ist, hat die Anweisung keine Argumente.

Anweisung Bedeutung AC1-Mini-BASIC Z1013-Tiny-BASIC
BYTE Hexadezimale Ausgabe eines 8-Bit-Wertes auf dem Bildschirm ja ja
CALL Aufruf eines in Maschinencode vorliegenden Unterprogramms ja ja
CLS Bildschirm löschen nein nein
DATA Angabe von numerischen Werten, die mit READ gelesen werden können nein nein
DOKE 16-Bit-Wert in den Arbeitsspeicher schreiben nein nein
END Beenden des BASIC-Programms nein nein
FOR Beginn einer Schleife nein ja
GOSUB Aufruf eines Unterprogramms ja ja
GOTO Spung zu einer anderen Programmstelle ja ja
I$ Eingabe einer Zeichenkette nein ja
IF Bedingte Verzweigung ja ja
INPUT Eingabe von Zahlen ja ja
LET Einer Variablen einen Wert zuweisen ja ja
NEXT Ende einer FOR-Schleife nein ja
O$ Ausgabe einer Zeichenkette auf dem Bildschirm nein ja
OUT Ausgabe eines Wertes an einem Ausgabetor (Port) ja ja
OUTCHAR Ausgabe eines einzelnen Zeichens auf dem Bildschirm ja ja
POKE 8-Bit-Wert in den Arbeitsspeicher schreiben ja ja
PRINT Ausgabe von Text und Zahlen auf dem Bildschirm ja ja
READ Lesen von Werten aus mit DATA angegeben Daten nein nein
RESTORE Setzen oder Zurücksetzen der Leseposition für READ nein nein
REM Kommentar ja ja
RETURN Ende eines Unterprogramms ja ja
STOP Beenden des BASIC-Programms ja ja
TAB Ausgabe von Leerzeichen auf dem Bildschirm ja ja
WORD Hexadezimale Ausgabe eines 16-Bit-Wertes auf dem Bildschirm ja ja


Erläuterungen zu den Anweisungen

In spitzen Klammern eingeschlossene Elemente dienen als Platzhalter und sind entsprechend zu ersetzten. In eckigen Klammern eingeschlossene Elemente sind optional und können weggelassen werden.

BYTE

Syntax: BYTE   <numerischer Ausdruck>

Die unteren 8 Bits des Wertes des angegebenen Ausdrucks werden hexadezimal, d.h. in Form von zwei Zeichen, auf dem Bildschirm ausgegeben.

Beim originalen AC1-Mini- und Z1013-Tiny-BASIC muss der numersiche Ausdruck in Klammern eingeschlossen sein.

CALL

Syntax: CALL <Adresse>
CALL * <Hex-Adresse>
Adresse:numerischer Ausdruck
Hex-Adresse:Adresse als Hexadezimalzahl

Die CALL-Anweisung ruft ein Maschinencodeunterprogramm auf, welches auf der angegebenen Adresse beginnt und mit einem Return-Befehl abgeschlossen sein muss.

Beim originalen AC1-Mini-BASIC und Z1013-Tiny-BASIC ist nur die erste Syntax erlaubt.

CLS

Die CLS-Anweisung löscht den Bildschirm und setzt den Cursor in die linke obere Ecke. Wurde im Monitorprogramm oder über die entsprechende Systemfunktion ein Fenster eingestellt, gilt die CLS-Anweisung nur für den Fensterbereich.

DATA

Syntax: DATA   <konstanter Ausdruck> [ , ... ]

Mit DATA werden Daten (numerische 16-Bit-Werte) einem applikationsweiten Datenbereich hinzugefügt. Die Daten sind durch Komma zu trennen und müssen konstante numerische Ausdrücke sein.

Das Lesen und damit die Nutzbarmachung dieser Daten im Programm erfolgt mit der Anweisung READ.

DOKE

Syntax: DOKE   <Adresse> , <Wert>
Adresse: numerischer Ausdruck
Wert: numerischer Ausdruck

Der 16-Bit-Wert des zweiten numerischen Ausdrucks wird in Form von zwei Bytes in den Arbeitsspeicher ab der angegebenen Adresse geschrieben.

END

Die END-Anweisung dient bei den meisten BASIC-Dialekten zum Beenden des Programms und wird deshalb auch hier unterstützt. Im originalen AC1-Mini-BASIC- und Z1013-Tiny-BASIC-Interpreter ist dagegen END ein Kommando zum Festlegen des Endes des zu verwendenten Speicherbereichs und kann im BASIC-Programm nicht verwendet werden. Zum Beenden gibt es dort die STOP-Anweisung.

FOR

Syntax: FOR   <Variable>=<Startwert>   TO   <Endwert>   [ STEP   <Schrittweite> ]
Startwert:numerischer Ausdruck
Endwert:numerischer Ausdruck
Schrittweite:numerischer Ausdruck

Zuerst wird der Variablen der Startwert zugewiesen. Anschließend setzt die Programmabarbeitung mit dem ersten Befehl hinter der FOR-Anweisung fort. Bei Erreichen der NEXT-Anweisung wird die Variable mit dem Wert der Schrittweite addiert. Ist der Endwert noch nicht erreicht, wird zum ersten Befehl hinter der FOR-Anweisung gesprungen. Anderenfalls wird die FOR-Schleife verlassen, d.h., die Programmabarbeitung setzt mit dem ersten Befehl hinter der NEXT-Anweisung fort.

Ist die Schrittweite größer Null, gilt der Endwert als erreicht, wenn der Wert der Variablen gleich oder größer dem Endwert ist. Ist dagegen die Schrittweite kleiner Null, gilt der Endwert als erreicht, wenn der Wert der Variablen gleich oder kleiner dem Endwert ist.

Das Schlüsselwort STEP und die nachfolgende Schrittweite können weggelassen werden. In dem Fall ist die Schrittweite eins.

GOSUB

Syntax: GOSUB   <Zeilennummer>

Das Unterprogramm muss mit RETURN abgeschlossen sein.

GOTO

Syntax: GOTO   <Zeilennummer>


I$

Syntax: I$   <Adresse>
Adresse:numerischer Ausdruck

Die I$-Anweisung wartet auf die Eingabe einer Zeichenkette die max. 63 Zeichen lang sein kann und nach Drücken der ENTER-Taste im Arbeitsspeicher ab der durch den numerischen Ausdruck angegebenen Adresse zu finden ist. Die Zeichenkette wird mit einem Null-Byte abgeschlossen, d.h., max. 64 Bytes werden im Arbeitsspeicher mit der Eingabe belegt.

IF

Syntax: IF   <Bedingung>   [ THEN ]   <Anweisungen>   [ ELSE   <Anweisungen> ]
IF   <Bedingung>   THEN   <Zeilennummer>   [ ELSE   <Anweisungen> ]
Bedingung:numerischer Ausdruck

Nur wenn die Bedingung erfüllt ist, d.h., wenn der Wert des Ausdrucks ungleich Null ist, werden die nachfolgenden Anweisungen ausgeführt beziehungsweise zu der hinten THEN angegeben Zeilennummer gesprungen. Existiert ein ELSE-Zweig, werden die Anweisungen hinter ELSE ausgeführt, wenn die Bedingung nicht erfüllt ist.

Beim originalen AC1-Mini-BASIC und Z1013-Tiny-BASIC sind das Schlüsselwort THEN und der ELSE-Zweig nicht möglich.

INPUT

Syntax: INPUT   [ <String-Literal> ]   <Variable>   [ , ... ]

Die INPUT-Anweisung kann mehrere Abschnitte enthalten, die durch Komma getrennt sind. Jeder Abschnitt steht für eine eigenständige Eingabe. Pro Abschnitt kann entweder nur eine Variable oder ein String-Literal gefolgt von einer Variablen angegeben werden. Ist ein String-Literal vorhanden, wird zuerst dieses ausgegeben. Anderenfalls erscheint der Name der Variablen. Anschließend wird ein Doppelpunkt ausgegeben, der zur Eingabe einer Zahl auffordert. Mit Drücken der ENTER-Taste wird die eingegebene Zahl der Variablen zugewiesen.

LET

Syntax: [ LET ]   <Variable> = <numerischer Ausdruck>

Das Schlüsselwort LET kann entfallen.

NEXT

Syntax: NEXT   [ <Variable> ]

Die Schleifenvariable wird mit dem Wert der Schrittweite (siehe FOR-Anweisung) addiert. Ist der Endwert noch nicht erreicht, wird an den Anfang der FOR-Schleife gesprungen. Anderenfalls wird die FOR-Schleife verlassen.

Die NEXT-Anweisung darf nicht ohne ein vorheriges FOR aufgerufen werden!

Die Angabe einer Variable ist optional. Wird jedoch eine Variable angegeben, so muss es die gleiche sein wie bei der zugehörigen FOR-Anweisung.

Beim Z1013-Tiny-BASIC-Interpreter muss die Variable immer angegeben werden.

O$

Syntax: O$   <Adresse>
Adresse:numerischer Ausdruck

Die O$-Anweisung gibt eine Zeichenkette auf dem Bildschirm aus, die im Arbeitsspeicher liegt und mit einem Null-Byte abgeschlossen ist. Die Adresse der Zeichenkette wird durch den numerischen Ausdruck angegeben.

OUT

Syntax: OUT   (<Port>) = <Wert>
OUT   <Port>,<Wert>
Port:numerischer Ausdruck
Wert:numerischer Ausdruck

Die OUT-Anweisung gibt einen Wert an einem Ausgabetor (Port) aus. Der erste Ausdruck legt die Ausgabeadresse fest, der zweite Ausdruck bestimmt den auszugebenden Wert, wobei nur die unteren 8 Bits relevant sind.

Beim originalen AC1-Mini-BASIC und Z1013-Tiny-BASIC ist nur die erste Syntax mit den Klammern und dem Gleichheitszeichen erlaubt.

OUTCHAR

Syntax: OUTCHAR   <numerischer Ausdruck>

Die OUTCHAR-Anweisung gibt das Zeichen auf dem Bildschirm aus, dass durch den Wert des Ausdrucks angegeben wird. Handelt es sich dabei um ein Steuerzeichen, so ist dieses auch aktiv.

POKE

Syntax: POKE   <Adresse> , <Wert>
Adresse: numerischer Ausdruck
Wert: numerischer Ausdruck

Die durch die Adresse angegebene Speicherzelle wird mit den unteren 8 Bits des Wertes des zweiten numerischen Ausdrucks beschrieben.

PRINT

Syntax: PRINT
PRINT   <String-Literal>   [ , ... ]   [ , ]
PRINT   <numerischer Ausdruck>   [ , ... ]   [ , ]
PRINT   # <numerischer Ausdruck>   [ , ... ]   [ , ]

Die PRINT-Anweisung kann mehrere Abschnitte enthalten, die durch Kommas getrennt werden. Ein Abschnitt dient entweder zur Ausgabe einer Zeichenkette (String-Literal), einer Dezimalzahl (Angabe eines numerischen Ausdrucks) oder zum Festlegen der Feldbreite nachfolgender Ausgaben von Dezimalzahlen (Doppelkreuz gefolgt von einem numerischen Ausdruck).

Dezimalzahlen werden rechtsbündig ausgegeben, wofür eine Feldbreite notwendig ist. Wurde vorher keine Feldbreite explizit angegeben, wird die Dezimalzahl auf sechs Zeichen Breite formatiert. Die Feldbreite gilt immer nur für die PRINT-Anweisung, in der sie angegeben wurde.

Wird die PRINT-Anweisung mit einem Komma abgeschlossen, bleibt der Cursor hinter der Ausgabe stehen, d.h., nachfolgende Ausgaben schließen unmittelbar an die mit der PRINT-Anweisung gemachten Ausgaben an. Wird dagegen die PRINT-Anweisung ohne Komma abgeschlossen, geht der Cursor an den Anfang der nächsten Zeile.

READ

Syntax: READ   <Variable> [ , ... ]

READ liest den nächsten Wert aus dem Datenbereich, der mit den DATA-Anweisungen erzeugt wurde und schreibt ihn in die angegebene Variable. Durch Komma getrennt können mehrere Variablen angegeben werden.

REM

Der Rest der Programmzeile wird als Kommentar gewertet und somit ignoriert. Anstelle des Schlüsselwortes REM kann auch ein Ausrufezeichen verwendet werden.

Der AC1-Mini-BASIC- und der Z1013-Tiny-BASIC-Interpreter gestatten die Verwendung eines Ausrufezeichens anstelle von REM nicht.

RESTORE

Syntax: RESTORE   [ <Zeilennummer> ]

RESTORE setzt die Leseposition der READ-Anweisung auf das erste Datenfeld der ersten DATA-Anweisung, die in der angegebenen Zeile steht. Wird keine Zeilennummer angegeben, setzt RESTORE die Leseposition auf das erste Datenfeld der ersten DATA-Anweisung im BASIC-Programm, d.h., die Leseposition wird auf den Wert zum Zeitpunkt des Programmstarts zurück gesetzt.

RETURN

Die Programmabarbeitung setzt hinter der zugehörigen GOSUB-Anweisung fort. Die RETURN-Anweisung darf nicht ohne ein vorheriges GOSUB aufgerufen werden!

STOP

Die STOP-Anweisung beendet ein Programm. Die meisten BASIC-Dialekte allerdings verwenden STOP nur zum Unterbrechen eines Programms, um es später mit einem speziellen Kommando wieder fortsetzen zu können. Der JKCEMU-BASIC-Compiler aber orientiert sich an dem BASIC-Dialekt des AC1-Mini- und Z1013-Tiny-BASIC-Interpreters. Und dort dient eben STOP zum Beenden eines Programms. Alternativ kann aber auch die sonst üblichere END-Anweisung verwendet werden.

TAB

Syntax: TAB   <Anzahl>
Anzahl:numerischer Ausdruck

Es werden so viele Leerzeichen auf dem Bildschirm ausgegeben, wie durch das Argument angegeben ist.

Beim originalen AC1-Mini-BASIC und Z1013-Tiny-BASIC muss der numersiche Ausdruck in Klammern eingeschlossen sein.

WORD

Syntax: WORD   <numerischer Ausdruck>

Der Wert des angegebenen Ausdrucks wird hexadezimal, d.h. in Form von vier Zeichen, auf dem Bildschirm ausgegeben.

Beim originalen AC1-Mini-BASIC und Z1013-Tiny-BASIC muss der numersiche Ausdruck in Klammern eingeschlossen sein.

String-Literal

Bei INPUT- und PRINT-Anweisungen können String-Literale verwendet werden. Ein String-Literal ist eine beliebig lange Zeichenkette, die entweder in einfachen Hochkommas (Quote-Zeichen) oder in doppelten Hochkommas eingeschlossen ist.