|
BASIC für Z80 Vollausbau
BASIC ist eine leicht zu erlernende Sprache zur Umsetzung einfacher aber auch komplexer Programme. Der Quelltext wird im RAM-Speicher abgelegt und beim Start immer wieder neu interpretiert. Im Gegensatz zu einem Compiler, der in einem Durchlauf Programme in Maschinensprache erzeugt die anschließend gestartet werden können, ist ein BASIC Interpreter deutlich langsamer in der Ausführung von Programmen. BASIC ist keine strukturierte Programmiersprache, Sprünge und Aufrufe von Unterprogrammen werden immer über die Zeilennummer angegeben, nicht über einen Prozedurnamen.
Systemaufbau
Zum Aufbau eines minimalen Systems, welches BASIC ausführen kann benötigt man folgende Komponenten:
Basisplatine BUS2 und eine Stromversorgung
Prozessor-Baugruppe Z80CPU
Speicher-Baugruppe ROA64
Baugruppe KEY und Tastatur
optional Baugruppe CAS und Kassettenrekorder
optional Baugruppe CENT und Drucker
Auf der Speicher-Baugruppe ROA64 werden mindestens das Grundprogramm ab Adresse $0000 und das BASIC ab Adresse $4000 benötigt. Zusätzlich müssen ab Adresse $8000 mindestens 8 kByte RAM verfügbar sein. Der Quelltext eines BASIC Programmes wird ab der Adresse $8800 abgelegt, der Bereich von $8000 bis $87FF ist für BASIC reserviert.
Bedienungshinweise
Anders als in den beiden PDF angegeben, erscheint nachdem das ROM aus dem Grundprogramm an Adresse $4000 gestartet wurde, zunächst nur ein Fragezeichen. Beim Start des BASIC Interpreters kann man zwischen 2 verschiedenen Modi (Kaltstart und Warmstart) wählen.
Kaltstart
Wenn nach dem Start des Interpreters ein großes C (SHIFT+C) eingetippt wird erfolgt ein Kaltstart des Interpreters. Der Programm und Variablenspeicher ist dann frisch initialisiert, die Einschaltmeldung erscheint wie folgt:
8K BASIC 1.3
RDK 83
o.k.
>
Warmstart
Bei einem RESET der Prozessors wird wieder das Grundprogramm gestartet. Da der Speicher nicht gelöscht wurde sind ein eventuell zuvor eingegebenes Programm oder definierte Variablen noch im Speicher vorhanden. Nach dem Neustart des Interpreters erreicht man durch die Eingabe des Buchstabens W (SHIFT+W) einen sogenannten Warmstart, bei dem das noch bestehende Programm erhalten bleibt. Die Einschaltmeldung ist verkürzt.
o.k.
>
Den Warmstart kann man nur benutzen, wenn der BASIC Interpreter tatsächlich vorher schon einmal benutzt wurde. Ohne Initialisierung führt der Versuch eines Warmstarts zum Absturz des Systems. Der Warmstart ist hilfreich wenn man über eine batteriegepufferte Speicherkarte verfügt. Damit bleibt der Inhalt des RAM auch erhalten, wenn das System von der Stromversorgung getrennt wird.
Variablenbezeichner
Variablen können durch das Schlüsselwort LET oder einfach durch die erste Verwendung initialisiert werden. Namen von Variablen dürfen aus maximal 5 Zeichen beginnend mit einem Buchstaben bestehen. Außerdem bürgen Namen von Variablen keines der BASIC Schlüsselwörter (siehe unten) enthalten. Falls ein ungültiger Variablenname verwendet wird erzeugt dies einen Syntax-Fehler (SN). Bei Variablen wird nicht zwischen Groß- und Kleinbuchstaben unterschieden.
ANZ - gültiger Variablenname
X15 - gültiger Variablenname, Ziffern sind erlaubt
ROHR - gültiger Variablenname
ATOM - ungültig, enthält das Schlüsselwort TO
ENDE - ungültig, enthält das Schlüsselwort END
FREI - ungültig, enthält den Namen der Funktion FRE
ORDER - ungültig, enthält das Schlüsselwort OR
ABCDEF - ungültig, Name zu lang
Während der Programmausführung
- Ein Druck auf die Taste ESC bricht das laufende Programm an der aktuellen Stelle ab.
Das Programm kann danach durch den Befehl CONT fortgeführt werden.
- Ein Druck auf die Taste HOME pausiert das laufende Programm an der aktuellen Position.
Bildschirmausgaben werden gestoppt. Ein weiterer Druck auf HOME setzt die Ausführung fort.
Die Tastenkombination CTRL + O hat den gleichen Effekt.
- STRL + S pausiert das Programm, im Gegensatz zu CTRL + O erscheint ein blinkender Cursor.
Ein so pausierte Programm kann mit CTRL + Q fortgesetzt werden.
Unterstützte Befehle & Funktionen
Um den internen Aufbau des Interpreters einfach zu halten haben viele Funktionen einen Parameter, obwohl dieser nicht benötigt wird. Ein Beispiel ist die Funktion FRE() bei der als Parameter eine Ziffer angegeben werden muss FRE(0). Eine andere Besonderheit ist, dass beim Befehl CSAVE kein Dateiname angegeben werden kann.
Direkte Kommandos
CONT - Fortführen eines mit STOP unterbrochenen Programms
LIST - Ausgabe des Programms auf dem Bildschirm
LLIST - Ausgabe des Programms auf dem Drucker
NEW - Löschen des Programms und der Variablen
RUN - Ausführen des Programms
Basic-Befehle
CALL x - Aufruf eines Maschinensprache-Pragramms an Adresse x
CLEAR - Löschen aller Variablen
CLEAR x - Löschen aller Variablen und Reservierung von Speicher für Variablen
CSAVE - Speichern des Programms auf Kassette
CLOAD - Laden eines Programms von Kassette
DATA x, ... - Festlegung von Daten für READ
DEF FN - Definieren von Funktionen
DIM - Reservieren von Speicher für Arrays
END - Encekennung für das Programm
FOR x = y TO z STEP n - Bildung einer Zählschleife
GOSUB x - Aufruf eines Unterprogramms ab Zeile x
GOTO x - Sprung nach Zeile x
IF x = y THEN (GOTO) z - Sprung nach Vergleichen zweier Werte
INPUT - Abfrage eines einzugebenden Wertes
LET - Wertzuweisung an eine Variable
LPRINT x - Ausgabe auf dem Drucker
NEXT x - Ende einer FOR Schleife
NULL x - Setzen der Ausgabeposition links
ON x GOTO a, ... - Variable Programmausführung
OUT x,y - Ausgabe von Daten an IO Ports
POKE x,y - Beschreiben des Speichers an Adresse x mit dem Wert y
PRINT - Textausgabe auf dem Bildschirm
READ - Einlesen des nächsten mit DATA definierten Wertes
REM - Festlegen eines Kommentars
RESTORE - Rücksitzen des DATA Zählers
RETURN - Rücksprung aus einem Unterprogramm
STOP - Anhalten des Programms
USR(x) - Aufruf einer Maschinensprache-Funktion mit Rückgabe
WAIT x,y,z - Einlesen des IO Ports x mit nachfolgenden Verknüpfungen
Grafik-Befehle
CLRS - Löschen des Bildschirms
DRAWTO x,y - Zeichnen einer Linie zu den angegebenen Koordinaten
MOVETO x,y - Bewegend der Zeichenposition an die angegebenen Koordinaten
PAGE n,m - Festlegen der Schreib- und Leseseite der GDP64
SPC(x) - Vorrücken des Cursors um x Stellen
TAB(x) - Setzen des Cursors auf Position x vom linken Rand gemessen
Funktionen
FRE(x) - Rückgabe des verfügbaren Speicherplatzes ab 8800h
INP(x) - Einlesen von Daten von einem IO Port x
PEEK(x) - Einlesen eines Wertes aus dem Speicher von Adresse x
POS(x) - Rückgabe der Cursorposition auf der aktuellen Zeile
USR(x) - Aufruf eines Maschinenprogramms ab Adresse x
Arithmetische Funktionen
ABS(x) - Bildung des Absolut-Wertes von x
ATN(x) - Bildung des Arcustangens-Wertes von x
COS(x) - Bildung des Cosinus-Wertes von x
EXP(x) - Bildung der Potenz zur Basis e
INT(x) - Bildung des Ganzzahlwertes (Integer) von x
LOG(x) - Bildung des natürlichen Logarithmus von x
RND(x) - Bildung einer Zufallszahl zwischen 0 und 1
SGN(x) - Bildung des Vorzeichens (Signum) von x
SIN(x) - Bildung des Sinus-Wertes von x
SQRx() - Bildung der Quadratwurzel von x
TAN(x) - Bildung des Tangens-Wertes von x
String-Funktionen
ASC() - Rückgabe des Binärwertes eines ASCII Zeichens
CHR$(x) - Wandlung des ASCII Wertes in das zugehörige Zeichen
HEX(x$) - Wandlung eines sedezimalen Strings in einen dezimalen Wert
LEFT$(x$,n) - Rückgabe der ersten n Zeichen eines Strings
LEN(x$) - Rückgabe der Länge eines Strings
MID$(x$,n,m) - Rückgabe eines Teils eines Strings
RIGHT$(x$) - Rückgabe der letzten n Zeichen eines Strings
STR$(x) - Wandlung des Wertes x in einen Strung
VAL(x$) - Wandlung des Strings x$ in einen Wert
Operatoren
4 Grundrechenarten + - * / und Zuweisung =
x AND y - Bitweise UND-Verknüpfung zweier Werte
x OR y - Bitweise ODER-Verknüpfung zweier Werte
NOT x - Bitweise Negierung des folgenden Wertes
PI - Konstante PI = 3.14.15
E - Leitet den Exponenten ein, z.B. 1.2E-3
Vergleichs - Operatoren
IF a < b THEN ... - a ist kleiner als b
IF a <= b THEN ... - a ist kleiner oder gleich b
IF a > b THEN ... - a ist größer als b
IF a >= b THEN ... - a ist kleiner oder gleich b
IF a = b THEN ... - a ist gleich b
IF a <> b THEN ... - a ist nicht gleich b
Beispielprogramme im Handbuch
Im Handbuch finden sich einige kleine Beispeilprogramme anhand derer man die Syntax des Interpreters lernen kann.
- Zeichnen eines Gitternetzes
- Zeichnen zufälliger Quadrate
- Zeichnen von Sinusschwingungen
- Sinusgrafik
- Text in verschiedenen Größen
- Ein kleiner HEX-Monitor
Besonderheiten
Dimensionierung von Arrays
Kleine Arrays müssen nicht dimensioniert werden. Die erste Verwendung eine Array-Elementes initialisiert das Array in jeder Dimension mit 10 Elementen. Zugriffe auf höhere Element-Nummern geben einen Bad Subscript Error (BS) aus. Ohne Dimensionierung zulässig sind zum Beispiel:
- PRINT a(5)
- PRINT m(10,10)
- m(1,1) = 100
Downloads
Software |
Verwendung |
|
EBASIC 1.3 EPROM 8 kByte |
EPROM zum Programmieren in der Sprache BASIC
Enthält die oben beschriebenen Funktionen, 8 KByte Binärfile zum Einsatz auf ROA64 |
|
EPROM BASIC 25 Seiten 1,8 MByte |
Handbuch von Graf Elektronik Systeme
Enthält die Beschreibung von BASIC für den Einsatz auf der SBC2 Baugruppe in Form von zwei EPROMs des Typs 2732. Enthält die Beschreibung aller BASIC-Befehle, Fehlermeldungen und einige Beispiel-Programme. |
|
EPROM BASIC 28 Seiten 1,8 MByte |
Handbuch aus dem Francis' Verlag
Enthält die Beschreibung von BASIC für den Einsatz auf der SBC2 Baugruppe in Form von zwei EPROMs des Typs 2732. Enthält die Beschreibung aller BASIC-Befehle, Fehlermeldungen und einige Beispiel-Programme. |
|
Weitergehende Informationen
Geschwindigkeit des BASIC Interpreters
Tipps zur Programmierung in BASIC
|