BASIC-Anweisungen

Nachfolgend werden die BASIC-Anweisungen beschrieben, die der Compiler versteht. Es wird auch auf die Unterschiede zum originalen Z1013-BASIC-Interpreter eingegangen.

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

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

LOCATE

Syntax: LOCATE   <Zeile> , <Spalte>
Zeile: numerischer Ausdruck mit einem Wert von 0 bis 31
Spalte: numerischer Ausdruck mit einem Wert von 0 bis 31


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 originalen Z1013-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 Z1013-BASIC-Interpreter 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.

PRES, PRESET

Syntax: PRES   <Zeile> , <Spalte>
PRESET   <Zeile> , <Spalte>
Zeile: numerischer Ausdruck mit einem Wert von 0 bis 63
Spalte: numerischer Ausdruck mit einem Wert von 0 bis 63

Die Anweisungen PRES und PRESET haben die gleiche Wirkung. Mit Hilfe der Blockgrafiksymbole wird eine Vollgrafik mit 64x64 Pixeln nachgebildet. PRES beziehungsweise PRESET setzt so ein Pixel zurück, d.h., das angegebene Pixel wird dunkel.

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, erfolgt eine Zeilenschaltung, d.h., der Rest der Zeile wird gelöscht und der Cursor steht am Anfang der nächsten Zeile.

PSET

Syntax: PSET   <Zeile> , <Spalte>
Zeile: numerischer Ausdruck mit einem Wert von 0 bis 63
Spalte: numerischer Ausdruck mit einem Wert von 0 bis 63

Mit Hilfe der Blockgrafiksymbole wird eine Vollgrafik mit 64x64 Pixeln nachgebildet. PSET setzt so ein Pixel, d.h., das angegebene Pixel wird hell und erscheint auf dem Bildschirm.

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 originalen Z1013-BASIC-Interpreter gestattet 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!

SOUND

Syntax: SOUND   <Tonhöhe> , <Anzahl Schwingungen>
Tonhöhe: numerischer Ausdruck mit einem Wert von 1 bis 255
Anzahl Schwingungen: numerischer Ausdruck mit einem Wert von 1 bis 32767


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 J1013-BASIC-Compiler aber orientiert sich an dem BASIC-Dialekt des Z1013-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 Z1013-BASIC-Interpreter 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 Z1013-BASIC-Interpreter 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.