Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
z1013:software:tinybasic [2011/09/18 07:54] – angelegt volkerp | z1013:software:tinybasic [2025/03/12 14:00] (aktuell) – [Geschichte] volkerp | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
====== Tiny-Basic ====== | ====== Tiny-Basic ====== | ||
- | Mt dem Z9001 wurd ein kleiner 3K-BASIC-Interpreter " | + | Mt dem Z1013 wurde ein kleiner 3K-BASIC-Interpreter " |
- | Start: J 100 | + | Start: J 100\\ |
- | Restart: J 103 | + | Restart: J 103\\ |
Speicher: 100h-0BFFh | Speicher: 100h-0BFFh | ||
- | Das TINY-BASIC ist im Handbuch Teil IIA beschrieben. | + | Das TINY-BASIC ist im [[z1013: |
+ | 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. [[wp> | ||
+ | |||
+ | Ich vermute, dass ebendiese Version die Grundlage für das Z1013-Tinybasic ist. Das **" | ||
+ | |||
+ | In Details gibt es aber durchaus Abweichungen: | ||
+ | |||
+ | 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 [[homecomputer: | ||
===== Befehlsübersicht ===== | ===== Befehlsübersicht ===== | ||
- | ^ ^ Abkürzung ^ Bemerkung | + | ^ ^ Abkürzung |
- | ^ Kommandos | + | ^ Kommandos |
- | | LIST [n] | L.[n] | + | | LIST [n] |
- | | RUN | + | | RUN | R. | | |
- | | NEW | + | | NEW | N. | | |
- | | BYE | + | | BYE | B. | | |
- | | END n | + | | END n | E.n |
- | | CSAVE" | + | | CSAVE" |
- | | CLOAD | + | | CLOAD | CL. |
- | ^ Befehle | + | ^ Befehle |
- | | FOR | + | | FOR | F. | | |
- | | TO | T. | | + | | TO |
- | | NEXT | N. | | + | | NEXT |
- | | IF | I. | | + | | IF |
- | | GOTO | G. | | + | | GOTO |
- | | GOSUB | + | | GOSUB | GO. |
- | | RETURN | + | | RETURN |
- | | PRINT | + | | PRINT | P. | | |
- | | INPUT[" | + | | INPUT[" |
- | | LET | + | | LET | L. | | |
- | | REM | + | | REM | RE. |
- | | CALL | C. | | + | | CALL |
- | | POKE | PO. | + | | POKE |
- | | OUTCHARn | + | | OUTCHARn |
- | | OUT(n) | + | | OUT(n) |
- | | TAB(n) | + | | TAB(n) |
- | | BYTE(n) | + | | BYTE(n) |
- | | WORD(n) | + | | WORD(n) |
- | | O$(n) | + | | O$(n) | |
- | | I$(n) | + | | I$(n) | |
- | ^ Anweisungen | + | ^ Anweisungen |
- | | RND(n) | + | | RND(n) |
- | | ABS(n) | + | | ABS(n) |
- | | PEEK(n) | + | | PEEK(n) |
- | | IN(n) | + | | IN(n) | |
- | | INCHAR | + | | INCHAR |
- | | STEP | ST. | + | | STEP |
- | | HEX n | + | | HEX n | H.n |
- | | TOP | + | | TOP | T. | erster freier Speicher nach BASIC | |
- | | SIZE | S. | freier BASIC-Speicher | + | | SIZE |
- | | ' | + | | ' |
- | | C | + | | C |
- | | @( ) | + | | @( ) | | eindimensionales Feld | |
Zeile 66: | Zeile 78: | ||
===== TINY-BASIC 4.01 ===== | ===== TINY-BASIC 4.01 ===== | ||
+ | |||
+ | Version von V. Pohlers, 1989 | ||
Das BASIC 3.01 von Riesa wurde um einige Befehle erweitert bzw. verbessert: | Das BASIC 3.01 von Riesa wurde um einige Befehle erweitert bzw. verbessert: | ||
Zeile 85: | Zeile 99: | ||
mehr lauffähig. Dieser Bereich ist von robotron eigentlich für Erweiterungen | mehr lauffähig. Dieser Bereich ist von robotron eigentlich für Erweiterungen | ||
reserviert, in eigenen Programmen also bitte n i c h t nutzen. | reserviert, in eigenen Programmen also bitte n i c h t nutzen. | ||
- | |||
- | vp, 1989 | ||
===== 3K-rs-BASIC V. 1.12 ===== | ===== 3K-rs-BASIC V. 1.12 ===== | ||
Zeile 166: | Zeile 178: | ||
121 : CD 09 E8 CALL DRAKK | 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, | ||
+ | |||
+ | empfohlen als Standard (-> [[z1013: | ||
+ | |||
+ | ===== Erfahrungen ===== | ||
+ | |||
+ | *von mir, 1991* | ||
+ | |||
+ | Das Z1013-BASIC | ||
+ | --------------- | ||
+ | |||
+ | |||
+ | Obwohl die Original-Version von Riesa kaum noch genutzt wird, | ||
+ | es gibt ja die Version 3.20 von Uwe Rehn (?) o. die 4.01er, war | ||
+ | es dennoch für mich interessant, | ||
+ | ren. Wer sich für Computergeschichte interessiert, | ||
+ | sagt, daß dieses Basic warscheinlich von Herrn Rolf-Dieter Klein | ||
+ | entwickelt wurde und seit der meines Wissens ersten Veröffent- | ||
+ | lichung im Oktober 1978 in 'Hobby Computer', | ||
+ | Funkschau, Elektronik; Franzig-Velag auf viele Systeme übernom- | ||
+ | men wurde. | ||
+ | Das Tiny-BASIC nutzt keine speziellen U880-Befehle, | ||
+ | basiert lediglich auf dem Befehlssatz eines 8080-Prozessors. | ||
+ | Auch daraus resultiert die Lahmheit dieses Interpreters. Offen- | ||
+ | sichtlich war man in Riesa bei der Übernahme des Basics nicht | ||
+ | bereit, hier einiges zum Vorteil zu ändern. so wird beispiels- | ||
+ | weise der Befehl SUB HL,DE als Unterprogramm mit 8bit-Registern | ||
+ | ausgeführt. Interessierten empfehle ich, sich einmal die Rou- | ||
+ | tinen OUT oder IN anzusehen. Sie stehen ab 0A32H bzw. 0A69H. Es | ||
+ | wird ein kleines Maschinenprogramm zu Ansprechen der Portadresse | ||
+ | in den RAM ' | ||
+ | mußte sich auf diesem Prozessor mit solch einem Trick helfen. | ||
+ | Dafür hat Riesa gleich mehere Sachen mit eingebaut, die in | ||
+ | keiner Beschreibung erwähnt werden. So folgt dem Basic-Interpre- | ||
+ | ter ab Adresse 0B86H eine kurze Tastaturpollingroutine, | ||
+ | die kleine 8x4-Tastatur | ||
+ | eine kurze Zeit in einer Warteschleife verharrt, bei S4-K dage- | ||
+ | gen das laufende Basicprogramm abbricht und in die Grundschleife | ||
+ | zurückkehrt. Bei exotischen Tastaturen, die keine solche Direkt- | ||
+ | abfrage vertragen, muß diese Routine z.B. mit einem RETurn kurz- | ||
+ | geschlossen werden! | ||
+ | Auch die PRINT-Funktion ist recht interessant. Beim Ausgeben von | ||
+ | Texten können diese sowohl in " | ||
+ | schlossen werden. Dem Zeichen _ kommt hier eine eigenartige | ||
+ | Funktion zu: Durch PRINT _ (ohne Apostroph o.ä.) wird ein | ||
+ | zweifacher Zeilenvorschub ausgeführt. | ||
+ | Die Basic-Befehle können wesentlich stärker gekürzt werden als | ||
+ | im Handbuch angegeben; das führt zu einem Geschwindigkeitsan- | ||
+ | stieg, leider aber auch zu geringerer Lesbarkeit. | ||
+ | Hier sind die maximal möglichen Abkürzungen: | ||
+ | |||
+ | Kommandos | ||
+ | |||
+ | LIST (n) | ||
+ | | ||
+ | | ||
+ | | ||
+ | END n E.n | ||
+ | | ||
+ | | ||
+ | |||
+ | Prozeduren | ||
+ | |||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | Funktionen | ||
+ | |||
+ | | ||
+ | | ||
+ | | ||
+ | IN(n) | ||
+ | | ||
+ | | ||
+ | HEX n H.n | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | Und nun der Test: Was macht folgendes Programm? | ||
+ | |||
+ | 5 P._,_,_ | ||
+ | 10 F.I=1T.10S.2 | ||
+ | 20 P.I;.I | ||
+ | 30 P..(8) | ||
+ | |||
+ | Richtig, es liest sich so: | ||
+ | |||
+ | 5 PRINT; PRINT; PRINT; PRINT; PRINT; PRINT | ||
+ | 10 FOR I=1 TO 10 STEP 2 | ||
+ | 20 PRINT I; NEXT I | ||
+ | 30 PRINT RND(8) | ||
+ | |||
+ | |||
+ | Zum internen Aufbau der Tiny-Basic-Programme: | ||
+ | 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 in ASCII-Notation | ||
+ | 1 byte Zeilenabschluss (0DH) | ||
+ | |||
+ | Der Bereich von 1000H bis 1151H dient als Arbeitsspeicher und | ||
+ | enthält unter anderem: | ||
+ | |||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | | ||
+ | |||
+ | Der Eingabepuffer liegt standartmäßig von 3094H bis 30D6H; | ||
+ | wird mit END eine neue Speicherobergrenze definiert, so wird | ||
+ | der Eingabepuffer vor diesem neuen Ende in einer Größe von | ||
+ | 132 Byte installiert. | ||
+ | Die Feldvariablen @(.) liegen ab (114CH) abwärts im Speicher. | ||
+ | |||
+ | Ich denke, das reicht zum Tiny-Basic. | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||