Tiny-Basic
Mt dem Z1013 wurde ein kleiner 3K-BASIC-Interpreter „robotron Z1013 BASIC 3.01“ ausgeliefert (als Hexdump in der Bedienungsanleitung/Anlagenteil oder auf Kassette M0111).
Start: J 100
Restart: J 103
Speicher: 100h-0BFFh
Das TINY-BASIC ist im Handbuch Teil IIA beschrieben.
Es gibt eine Vielzahl modifizierter Versionen der originalen Version 3.01 von Riesa. 3 Versionen werden hier vorgestellt (s. Inhaltsverzeichnis)
Geschichte
Das TINY-Basic stammt vom Palo Alto Tiny BASIC ab, s. Tiny_BASIC und Autor Li-Chen_Wang. Dessen Implementation des TINY-Basic für den 8080-Prosessor war wiederum die Basis für die Tiny-Basic Version von Rolf-Dieter Klein (→ BASIC für 8080-Systeme).
Ich vermute, dass ebendiese Version die Grundlage für das Z1013-Tinybasic ist. Das „3K-BASIC VON RER“ (Robotron-Elektronik Riesa) kennt beispielsweise wie bei Rolf-Dieter Klein hinzugekommenen Befehle wie TOP und LEN, und nutzt 0-terminierte Zeichenketten für die BASIC-Befehle1).
In Details gibt es aber durchaus Abweichungen: Die Zeichentestfunktion TSTC arbeitet mit einer 2-Byte-Adresse anstelle eines 1-Byte-Offsets zur nächsten Funktion bei negativem Testergebnis. Neu sid auch die Befehle BYTE und WORD.
2018: Die Vermutung ist bestätigt! Auch das Minibasic des AC1 basiert auf dem RDK-Basic: ein Entwickler des AC1 hat später den Z1013 mitentwickelt und die Software des AC1 dabei als Grundlage genommen. Daher hat auch das Betriebssystem des Z1013 viele Gemeinsamkeiten mit dem des AC1 (und ZETBUG).
Befehlsübersicht
Abkürzung | Bemerkung | |
---|---|---|
Kommandos | ||
LIST [n] | L.[n] | Listen(20 Zeilen ab >=n) |
RUN | R. | |
NEW | N. | |
BYE | B. | |
END n | E.n | Speicherende setzen |
CSAVE„name“ | C.„name | |
CLOAD | CL. | |
Befehle | ||
FOR | F. | |
TO | T. | |
NEXT | N. | |
IF | I. | |
GOTO | G. | |
GOSUB | GO. | |
RETURN | R. | |
P. | ||
INPUT[“…„]a | I.[“…„]a | |
LET | L. | |
REM | RE. | |
CALL | C. | |
POKE | PO. | |
OUTCHARn | O.n | |
OUT(n) | OU.(n) | |
TAB(n) | T.(n) | Ausgabe n Leerzeichen |
BYTE(n) | B.(n) | Ausgabe 2stellige Hexzahl |
WORD(n) | W.(n) | Ausgabe 4stellige Hexzahl |
O$(n) | Ausgabe Zeichenkette von (n) | |
I$(n) | Einlesen Zeichenkette nach (n) | |
Anweisungen | ||
RND(n) | R.(n) | Zufallszahl 1…n |
ABS(n) | A.(n) | |
PEEK(n) | P.(n) | |
IN(n) | ||
INCHAR | I. | ein Zeichen einlesen |
STEP | ST. | |
HEX n | H.n | Wandlung Hex–>Dez |
TOP | T. | erster freier Speicher nach BASIC |
SIZE | S. | freier BASIC-Speicher |
'a' | ASCII-Code von a | |
C | ||
@( ) | eindimensionales Feld |
Das Programm wird im RAM von 1152H bis (101FH) abgelegt, aber bereits ab 1000H abgeSAVEt. Jede Zeile hat folgenden Aufbau:
2 byte Zeilennummer x byte Text 1 byte Zeilenabschluss (0DH)
TINY-BASIC 4.01
Version von V. Pohlers, 1989
Das BASIC 3.01 von Riesa wurde um einige Befehle erweitert bzw. verbessert:
LIST (n) funktioniert jetzt analog HC-BASIC
EDIT n - einfacher Zeileneditor
der Kursor muss hinter das letzte Zeichen gebracht werden. Eine Änderung der Zeilennummer ist möglich, leider noch nicht INS/DEL
HSAVE -Aufruf des HEADER-SAVE ueber Sprungverteiler, TYP b
HLOAD -Einlesen von HEAD- Programmen, Aufruf ueber Sprungverteiler
TINY-BASIC 4.01 belegt den Speicherbereich: 100H-0C41H
Damit sind einige Programme, die das freie Kilobyte 0C00H-1000H nutzen, nicht mehr lauffähig. Dieser Bereich ist von robotron eigentlich für Erweiterungen reserviert, in eigenen Programmen also bitte n i c h t nutzen.
3K-rs-BASIC V. 1.12
Version von Uwe Rehn, 03/1988
Programmstandort: 100h - DBBh
Programmstart : 100h , 103h
Der 3k-rs-BASIC-Interpreter enthaelt als Kern den Orginal-3k- BASIC-Interpreter von RIESA. Alle Aenderungen und Ergaenzungen wurden so vorgenommen, dass bisherige Programme ohne Einschraenkungen ladbar und lauffaehig sind. Um alle neuen Befehle nutzen zu koennen, sind das Programm „HEADERSAVE“ und ein physischer Druckertreiber erforderlich.
Folgende Befehle wurden geaendert bzw. neu aufgenommen:
HSAVE (HS.)
Mit diesem Befehl werden BASIC-Programme ueber die TBG-Routine des HEADERSAVE auf Kassette abgelegt.
Synt.: HSAVE (ENT) , Titel
HLOAD (HL.)
Mit diesem Befehl koennen die mit dem neuen „HSAVE“ abgelegten Programme geladen werden. Vorher vorhandene Programme werden geloescht.
Synt.: HLOAD (ENT) , Titel
Wird kein Titel angegeben, so wird das erste BASIC-Programm geladen.
LIST (L.)
Es werden 16 Zeilen ab angegebener Zeilennumer gelistet. Mit ENT wird fortgesetzt, mit BRAEK abgebrochen.
Synt.: LIST (Znr.)
LLIST (LL.)
Mit „LLIST“ koennen Programmlistings an einen Druckertreiber ausgegeben werden. Dazu wird nach Aufruf zuerst der Druckertreiber auf 11Dh mit „CALL DRINI“ initialisiert. Danach werden alle Zeichen ueber Adresse 121h mit „CALL DRAKK“ an den Druckertreiber uebergeben.
Synt.: LLIST
HELP (H.)
Mit diesem Befehl wird eine Liste der vorhandenen Befehlsworte ausgegeben.
Synt.: HELP
EDIT (E.)
Es erfolgt ein Editieren einer Zeile. In der Zeile koennen Aenderungen durch Ueberschreiben, durch INSERT (12h) oder durch DELETE (10h) durchgefuehrt werden. Mit ENT werden alle Zeichen bis zum Cursor als neue Zeile uebernommen. Mit BRAEK (03h) erfolgt keine Uebernahme. Die Zeilennummer kann auch geaendert werden.
Synt.: EDIT Znr.
LPRINT (LP.)
Entsprechend dem PRINT-Befehl erfolgt eine Bildschirm- und Druckerausgabe.
Synt.: LPRINT (weiter wie PRINT)
Zusammenfassung der neuen Rufe:
10E : CD C1 FA HSAVE (CALL SARUF) 112 : CD A4 FB HLOAD (CALL LORUF) 11D : CD 00 E8 CALL DRINI 121 : CD 09 E8 CALL DRAKK
TINY-BASIC 3.20H
von Kraft/IG-HC TU Dresden
Mit HEADERSAVE und einem MENUE (Auflistung aller BASIC-Befehle, die implementiert sind)
empfohlen als Standard (→ Informationen). 3K-rs-BASIC is. m.E. besser!