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. | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||