Hes 64 Forth – komfortabler als Basic
Die Programmiersprache Forth ist für immer mehr Mikrocomputer erhältlich, und das nicht ohne Grund. Forth ist eine sehr mächtige Sprache, die in einem gewissen Sinne die positiven Seiten von Basic, Pascal und Assembler in sich vereint. Für den Commodore 64 ist jetzt eine der leistungsfähigsten Forth-Versionen als Steckmodul erhältlich: Das 64 Forth von Human Engineered Software.
Bei dieser Forth-Version für den C 64 handelt es sich um ein im Sprachumfang stark erweitertes FIG-Forth. Die Abkürzung FIG steht dabei für Forth Interest Group und bezeichnet eine unabhängige Gruppe von Forth-Enthusiasten, die sich die Standardisierung und Verbreitung von Forth zum Ziel gesetzt hat. Bei einer Sprache wie Forth, die vom Anwender praktisch beliebig erweiterbar und veränderbar ist, erscheint ein solcher Standard auch dringend notwendig, weil sonst der Softwareaustausch zwischen den Anwendern fast unmöglich würde. Das 64 Forth hält sich sehr eng an den FIG-Standard, was dem Benutzer unmittelbar zugute kommt: Die meisten für andere Computer entwickelten Forth-Programme sind, solange nicht spezielle Hardware-Eigenschaften ausgenutzt werden, mit minimalen Änderungen sofort auf dem C 64 lauffähig.
Forth zeichnet sich ja generell schon durch einen großen Befehlsvorrat aus. Im 64 Forth wurde jedoch der Grundwortschatz des FIG-Standards nochmals stark erweitert. Über 500 Befehle stehen zur Verfügung. Damit man hier noch den Überblick behält, sind diese Befehle auf vier Vokabulare aufgeteilt: FORTH, EDITOR, SYSTEM und ASSEMBLER. Ein Vokabular wird einfach durch Angabe seines Namens aufgerufen oder aktiviert.
Zu Anfang ist nur das normale Forth-Vokabular zugänglich. Will man längere Forth-Programme oder Texte eingeben, dann ruft man einfach das Editor-Vokabular auf und kann nun alle vorhandenen Befehle zum Editieren von Texten nutzen. Das System-Vokabular enthält Befehle zum Zugriff auf die Betriebssystemebene.
Obwohl Forth-Programme in der Regel um Größenordnungen schneller als Basic-Programme laufen, können doch ab und zu zeitkritische Situationen eintreten. In diesem Fall ruft man das Assembler-Vokabular auf und hat sofort einen 6502-Macro-Assembler zur Verfügung.
Schon bei einem ersten Blick ins Inhaltsverzeichnis des (leider nur englischen) Handbuchs fällt es auf: Das 64 Forth verfügt in Addition zum FIG-Forth-Standard über eine ganze Reihe von Befehlen, um spezielle C 64 — Eigenschaften zu unterstützen.
Mit BGROUND und BORDER werden zum Beispiel die Hintergrund- und die Rahmenfarbe gewählt. Mit NEWSPRITE kann man innerhalb einer Bildschirmmaske sehr komfortabel neue Sprites entwerfen. Spritedaten können in spezielle Sprite-Dateien geschrieben oder daraus gelesen werden. Mit dem Befehl SHOW werden Sprites sichtbar gemacht, mit HIDE verschwinden sie wieder vom Bildschirm. Mit weiteren Befehlen kann man Sprites über den Bildschirm bewegen, einfärben und vergrößern. Natürlich ist auch der Mehrfarbenmodus möglich.
Wer sich schon einmal mit den diversen POKE-Befehlen in Basic abgemüht hat, um ein paar Sprites über den Bildschirm zu bewegen, der wird diese Möglichkeiten des 64 Forth sehr zu schätzen wissen.
Ganz ähnlich verhält es sich auch bei den Toneffekten: Wo man in Basic viele Zeilen mit POKE-Befehlen braucht, um ein paar Noten zu spielen, geht das mit 64 Forth im Klartext und wesentlich übersichtlicher. Der Befehl VOICE1 wählt zum Beispiel den Tongenerator 1 an, mit TRIANGLE, SAWTOOTH, SQUARE oder NOISE wird die Wellenform ausgewählt. Weitere Befehle steuern Frequenz, Hüllkurve, Lautstärke und andere Faktoren. Insgesamt gibt es 40 (!) Befehle zur Steuerung des Synthezisers.
Auch die Ansteuerung externer Geräte macht mit 64 Forth keine Schwierigkeiten. Im SYSTEM-Vokabular gibt es diverse Befehle zur Datenkommunikation mit Drucker, Floppy oder Kassette. Der Befehl PRON ersetzt beispielsweise die Basic-Befehlsfolge »OPEN 1,4:CMD 1«. Um Befehle an die Floppy zu schicken, braucht nicht umständlich ein Kommandokanal eröffnet werden, sondern es reicht der CMD-Befehl. Um zum Beispiel eine Diskette zu formatieren, schreibt man in 64 Forth: CMD N:Name,ID.
Außerdem können die meisten Kernal-Routinen des Betriebssystems einfach mit ihrem Namen aufgerufen werden, wodurch sich eine hohe Flexibilität beim Datenaustausch über den seriellen Bus ergibt.
Bemerkenswert sind die recht komfortablen Testhilfen, die 64 Forth zur Verfügung stellt. Mit den Befehlen TRACE, STEP, EMULATE und CONT kann die Ausführung von Forth-Befehlen überwacht werden. Zusätzlich ist ein Decompiler vorhanden, der mit SOURCE aufgerufen wird und compilierte Forth-Worte wieder zurückübersetzen kann (Bild 1). Derartig umfangreiche Debug-Funktionen sucht man bei anderen Forth-Compilern in der Regel vergeblich.
Im Gegensatz zu der recht einfachen Speicherverwaltung von Basic benutzt Forth das Konzept des virtuellen Speichers. Vereinfacht gesagt bedeutet das die Aufteilung des verfügbaren Speichers in kleine Abschnitte, sogenannte Screens oder Textfelder, auf die über eine Nummer zugegriffen wird. Dabei ist es nicht nötig, daß sich alle Screens zur gleichen Zeit im Hauptspeicher befinden. Die meisten Screens sind daher als relative Datei auf einer Diskette angelegt und werden nur bei Bedarf geladen.
64 Forth bietet dabei noch die Besonderheit, daß eine solche virtuelle Speicherverwaltung auch ohne Floppy ermöglicht wird. Die einzelnen Textfelder werden dabei in der Reihenfolge ihrer Numerierung mit der Datasette wie normale Programme aufgezeichnet. Ein Pufferspeicher von 16 Textfeldern im RAM, begrenzt die Anzahl der nötigen Kassettenoperationen.
Jedes Textfeld kann nun für sich mit dem Texteditor bearbeitet werden. Bei fast allen Forth-Versionen ist zu diesem Zweck nur ein einfacher zeilenorientierter Editor vorhanden. 64 Forth stellt seine Kompatibilität dadurch unter Beweis, daß es ebenfalls über einen solchen umständlich zu bedienenden Zeileneditor verfügt, der ganz normal mit n EDIT aufgerufen wird, wobei n die Nummer des zu editierenden Textfeldes ist.
Der Full-Screen-Editor
Daneben aber gibt es in 64 Forth auch einen »Full-Screen-Editor«, wie er vom Basic her bekannt ist. Man drückt im Edit-Modus die Tastenkombination »Shift« und »INST/DEL«, und es erscheint augenblicklich das gesamte zu editierende Textfeld. Wie von Basic her gewohnt, kann man nun mit Hilfe der Cursourtasten über den gesamten Bildschirm fahren und fehlerhafte Textstellen löschen oder einfach überschreiben.
Die Funktionstasten sind dabei mit diversen hilfreichen Funktionen belegt, zum Beispiel Vorwärts- und Rückwärtstabulator und Suchfunktionen. Auf Tastendruck kann man in das vorhergehende oder nachfolgende Textfeld wechseln.
Als weitere Besonderheit versteht der Editor eine Reihe von »Wordstar«-kompatiblen Control-Funktionen. Statt mit der »CTRL«-Taste werden diese Funktionen jedoch durch gleichzeitiges Drücken der »Commodore«-Taste und eines Buchstabens ausgelöst. Wer also an das Arbeiten mit »Wordstar« gewöhnt ist, wird sich mit diesem Editor ebenfalls gut zurechtfinden.
Ganz hartgesottene Forth-Programmierer, denen soviel Bedienungskomfort schon dekadent erscheint, haben ja noch die Möglichkeit, stattdessen mit dem zeilenorientierten Editor zu arbeiten.
Das zu magere Handbuch ist in Englisch geschrieben, eine deutsche Übersetzung ist zur Zeit nicht geplant.
Auf 155 kleinformatigen Seiten wird eine kurze Einführung in Forth gegeben, die aber dem Anfänger vermutlich nicht allzuviel sagen wird. In kurzen Kapiteln werden dann der Texteditor und die wichtigsten Forth-Befehle erläutert. Es folgen Abschnitte über die Speicherbelegung von Forth, über die I/O-Organisation und über den integrierten 6502-Macro-Assembler. Listings einer Anzahl von Forth-Utilitys und eine Kurzbeschreibung aller Befehle runden das Handbuch ab.
Durchweg alle Kapitel sind aber recht kurz und knapp ausgefallen, so daß man häufig gezwungen ist, entweder in anderen Büchern nachzuschlagen oder einfach herumzuexperimentieren. Immerhin, man findet die wichtigsten Informationen. Dennoch wäre ein deutsches, etwas ausführlicheres Handbuch sicherlich wünschenswert.
Insgesamt gesehen ist das 64 Forth sicherlich eine der besten Forth-Versionen, die derzeit überhaupt für Mikrocomputer erhältlich sind. Deutliche Pluspunkte sind der hervorragende Editor und der umfangreiche Befehlssatz, insbesondere die vielen Befehle für Spritegrafik und Sounderzeugung, die man im Commodore-Basic manchmal schmerzlich vermißt. Der integrierte Assembler ist eine wertvolle Hilfe bei der Lösung zeitkritischer Probleme.
Das 64 Forth kann in Deutschland als Steckmodul (Bild 2) für den C 64 über »Die Forth-Quelle« in 7820 Titisee-Neustadt zum Preis von 198 Mark bezogen werden. Eine Version für den VC 20 ist ebenfalls erhältlich. Leider ist das Modul nach Auskunft der Anbieter auf dem tragbaren SX 64 aufgrund doch vorhandener geringer Hardwareunterschiede nicht lauffähig.
(ev)