Fig-FORTH
Neben BASIC gibt es unter CPM-65 eine weitere Programmiersprache: FORTH, hier in der Version Fig-FORTH mit CPM-65 BDOS-Schnittstelle. FORTH ist seit dem Siegeszug von C, C+ und Co bei den Programmierern eher in Vergessenheit geraten. Das ist verständlich, denn auf den modernen Systemen erlauben die verfügberen Ressourcen einen ganz anderen Komfort.
Für 8-Bit-Maschinen mit maximal 64 kByte Hauptspeicher ist FORTH jedoch die für mich beste Compilersprache. Der Betriebssystemkern ist nur 7 kB groß, das System mit Full-Screen Editor hat 11 kB. Ein kompiliertes FORTH-Programm wie SYSINFO kommt mit 8 kB daher. Damit kann man auf dem JC-][ sehr komfortabel leben.
FORTH-Applikationen sind kompakt, schnell und komfortabel zu entwickeln. Sie erlauben den direkten Zugriff auf alle Systemressourcen. Ich nutze Forth vor allem für die Entwicklung von Interfacetreibern und Systemprogrammen. Funktioniert das Interface, ist der Treiber sehr einfach in Assembler umzusetzen. Aber auch für die Programmierung von Spielen ist FORTH schnell und systemnah genug.
Der Preis für all diese Vorzüge ist eine Sprachstruktur, die es dem System leicht macht und an die sich der Programmierer erst gewöhnen muß. Kernelement ist die umgekehrte polnische Notation (UPN). Da kommen zuerst ein oder mehrere Argumente und dann der Operator, der diese Argumente verarbeitet. Etwa so: 1 1 + . Dabei werden die Argumente in der Reihenfolge der Eingabe auf einen Stack gelegt, von dem sie der Operator in umgekehrter Reihenfolge abholt. Das Ergebnis der Operation wird dann wieder auf dem Stack abgelegt und kann vom nächsten Operator verarbeitet werden.
Doch genug der Vorrede - es geht los. Damit ihr auch was davon habt, solltet ihr euch das neue FORTH.IMG auf die SD ziehen. Ich habe in den letzten Tagen den Fullscreen-Editor auf die VT100-kompatiblen ROM-Routinen des JC-][ angepasst und das Ergebnis heißt FORTH-VT.COM. Und das solltet ihr nun aufrufen.
![](https://forum.classic-computing.de/index.php?attachment/201984-forth-vt-jpg/&thumbnail=1)
Fig-FORTH V1.6 meldet sich. Nun gebt ihr NEW ein - Groß- und Kleinschreibung spielt in FORTH keine Rolle - und sitzt vor einem leeren Screen im Editor. FORTH arbeitet mit SCREENs, die im Falle des JC-][ von 3 .. 19 reicht. Jeder Screen hat exakt 1 kB Größe und liegt in der aktuellen Implementierung im RAM oberhalb von $8000. Das hört sich nach nicht viel an, aber glaubt mir - es reicht dicke. Aus systemtechnischen Gründen ist #3 der erste Screen, 1 & 2 gibt es nicht.
Nun schauen wir erstmal, was der Editor so kann und rufen mit der ESC-Taste die Hilfeseite auf.
![](https://forum.classic-computing.de/index.php?attachment/201985-editor-commands-jpg/&thumbnail=1)
Traditionell liegen die Cursor-Befehle auf CTRL-EXDS, aber die Pfeiltasten funktionieren auch - jedenfalls unter TELETERM. Damit kann das Eingeben beginnen:
![](https://forum.classic-computing.de/index.php?attachment/201986-hallo-welt-1-jpg/&thumbnail=1)
Programmzeilen werden kontinuierlich eingegeben. Kommt man am Zeilenende in Spalte 64 an, sprint der Cursor in die nächste Zeile, wo man einfach weiterschreiben kann. Das sieht aber furchtbar aus und erschwert die Lesbarkeit.
Mit ( beginnt ein Kommentar, mit ) endet er. Vor und nach einem Befehl muß ein Leerzeichen stehen, außer natürlich beim allerersten Zeichen auf einer Seite. In Zeile 3 definieren wir unseren ersten Befehl, den Zeilenvorschub nl, also die Ausgabe von $0D und $0A. Da wir im Moment im Dezimalsystem arbeiten müssen wir alle Argumente auch dezimal eingeben. Das könnte man auf Hexadezimale Zahlenbasis umstellen, aber jetzt nicht.
Als nächstes kommt das eigentliche Programm - das berüchtigte Hallo Welt... Mit ;S wird das Programm beendet und wir verlassen den Editor mit CTRL-Q.
Das System meldet sich nun mit ok zurück. Wir kompilieren das neue Programm mit 3 LOAD und warten auf die Fertigmeldung ok. Und geben wir HALLO ein und freuen uns, dass alles geklappt hat.
Und weil wir das Programm so schön finden, speichern wir es mit SAVE HALLO.BLK auf die Disk. Von dort können wir es jederzeit mit OPEN HALLO.BLK wieder ins RAM holen.
![](https://forum.classic-computing.de/index.php?attachment/201998-hallo-welt-2-jpg/&thumbnail=1)
Aber woran kann ich den sehen, welche Befehlsworte unser FORTH versteht? Dazu geben wir VLIST (Vocabulary List) ein.
![](https://forum.classic-computing.de/index.php?attachment/201987-vlist-jpg/&thumbnail=1)
... und man sieht alle definierten Befehlsworte in der umgekehrten Reihenfolge, wie sie erzeugt wurde, also unsere Worte NL und HALLO zuerst. FORTH-Befehlsworte dürfen bis zu 31 Zeichen lang sein. Das ist komfortabel.
Nun gefällt uns unser Programm aber noch nicht ganz. Wir öffnen den Editor wieder mit E, gehen in Zeile 5 und fügen beispielsweise ein zusätzliches NL vor dem Text ein. Dazu den Einfügemodus mit CTRL-V einschalten. Dann mit CTRL-Q den Editor verlassen und mit 3 LOAD kompilieren. Aber oh weh - es gibt Fehlermeldungen:
![](https://forum.classic-computing.de/index.php?attachment/201989-edit-1-jpg/&thumbnail=1)
Fehlermeldungen in der CPM-65 Fig-FORTH Implementierung sind einfache Codes - hier beschwert sich der Compiler, dass ein schon existierendes Befehlswort nochmal definiert wurde. Das macht hier nichts - ausgeführt wird immer die neueste Version.
Trotzdem ist das unschön und dafür gibt es auch ein FORTH-Wort, nämlich FORGET. Damit streicht man das angesprochene Wort und alle jüngeren aus dem Vokabular. Da wir NL zweimal haben müssen wir das forget NL auch zweimal eingeben. Und dann können wir HALLO neu kompilieren - diesmal ohne Fehlermeldung.
Soweit der Einstieg in FORTH. Hingewiesen sei noch auf die Befehle DIR (Ausgabe des Disk Directory) und KILL (Löschen des Programms). Und schaut euch gerne mal SYSINFO.BLK an. Wer nun Blut geleckt hat, dem empfehle ich folgende Literatur:
Deutsch:
Literaturliste des FORTH-eV https://wiki.forth-ev.de/doku.php/projects:litlist
Meine Empfehlung: Die Programmiersprache Forth von Ronald Zech, Verlag: Franzis. Leider nur noch im Antiquariat.
Englisch:
Starting FORTH von Leo Brodie (der Klassiker überhaupt)
Thinking FORTH von Leo Brodie
frei bei https://www.forth.com/forth-books/
weitere Literatur und Programme bei https://www.forth.org/
dort besonders Forth Dimensions https://www.forth.org/fd/FDcover.html
Viel Erfolg
Dietrich