vn Christoph Bach Was ist Forth? Forth ist eine Computersprache. Forth ist eine Hochsprache wie BASIC PASCAL oder C. Forth ist Maschinennah. Forth ist sehr schnell. Forth ist äuserst kompakt. Forth ist eine Philosophie. Eine kurze Übersicht über Forth. 1. Worte Ein Unterprogramm in Forth nennt man ein Wort. Statt EXEC PLOT oder JSR PLOT schreibt man in Forth nur PLOT. 2. Lexikon Die Namen der Unterprogramme werden im Lexikon gespeichert. Dort steht dann auch ihre Adresse und eine Kennung, die sie von Variablen und Konstanten unterscheidet. 3. Stack An ein Unterprogramm ( Wort ) müssen Werte übergeben werden. In Forth werden alle Werte auf den Stack ( Stapel ) gelegt und dort vom Unterprogramm wieder heruntergenommen. Der Wert, der zuletzt auf den Stack gelegt wurde, wird als erster wieder heruntergenom- men. Man spricht auch von einem LIFO- Stack ( Last In First Out ). Um z.B. einen Punkt mit den Koordinaten x=10 und y=19 zu zeichnen, legt man 10 und 19 auf den Stack und ruft das Wort PLOT auf. Das sieht dann so aus: 10 19 PLOT Wenn ein Unterprogramm einen Wert zurückgibt ( oder viele Werte ), dann legt es ihn auf dem Stack ab. Das Wort * nimmt Multiplikant und Multiplikator vom Stack, multipliziert sie und legt das Produkt wieder auf den Stack, wo es für die weitere Verarbeitung zur Verfügung steht. 4. neue Worte Ein neues Wort definiert man analog einem Unterprogramm in Turbo-Basic. Man ersetzt PROC durch : und ENDPROC durch Semikolons. Also : Name Programmcode (Semikolon) Name ist der Name des Wortes mit dem es dann später auch aufgerufen wird. Programmcode kann alle schon definier- ten Worte und Zahlen enthalten. Als Trennzeichen zwischen Worten oder Zahlen werden in Forth ausschlieslich Leerzeichen verwendet. Kommentare stehen in runden Klammern. ( Das ist ein Kommentar in Forth ) Das Hauptprogramm ist wieder ein Wort, das die Unterprogramme aufruft, indem es sie beim Namen nennt. Ein ordentli- ches Forth-Programm ist deshalb sehr leicht lesbar. Das Hauptprogramm wird durch seinen Namen aufgerufen. 5. Interpreter Wie in Basic können Worte direkt einge- geben und ausgeführt werden. Alle Edi- torfunktionen von Basic gibt es auch in Forth. Um schnell mal etwas auszupro- bieren ist ein Interpreter ideal. 6. Compiler Bei jedem Definieren eines Wortes wird dieses compiliert. Anschließend ist man wieder im Interpreter. Der Compiler wird durch : ein- und durch ein Semi- kolon ausgeschaltet. 7. Zahlen Trifft der Interpreter auf eine Zahl, legt er sie sofort auf den Stack. Trifft der Compiler auf eine Zahl ( zwischen : und Semikolon ), wird ein Code generiert, der zur Laufzeit des Wortes diese Zahl auf den Stack legt. Es kann zwischen verschiedenen Zahlensystemen umgeschalten werden ( Dezimal, Hex ). 8. Arithmetik Forth arbeitet traditionell mit 2 Byte Integerarithmetik. Alle Zahlen werden als vorzeichenbehaftete 15 Bit Zahlen angesehen. Der Wertebereich erstreckt sich von -32768 bis + 32767. Es gibt aber auch Worte zur Verarbeitung von Zahlen mit doppelter Genauigkeit ( 4 Byte von -2147483648 bis +2147483647 ) mit einem vorangestellten D (für Double). Die Worte die vorzeichenlose 2-Byte Zahlen (0-65536) verarbeiten beginnen mit einem U ( Unsigned). Für Bytemanipulationen gibt es Worte die mit einem C (Character) beginnen. Fließkommaarithmetik, wie sie in Basic üblich ist, ist in Forth verpöhnt. Sie ist langsamer und täuscht eine nicht vorhandene Genauigkeit vor. Durch ein geschicktes Programmieren kann man vollständig auf Fließkommaarithmetik verzichten. Die ersten Anwendungen von Forth waren Steuerungen von Teleskopen. Sie wurden vollständig in Integer- arithmetik programmiert, obwohl die Bahngleichungen der Sterne viele Winkelfunktionen (Sinus...) etc. enthalten. Durch die leichte Erweiter- barkeit von Forth ist es natürlich möglich beliebige Fließkommaarithmetik mit einzubauen. 8. Assembler Falls die enorme Geschwindigkeit von Forth einmal nicht ausreichen sollte, kann man Worte oder Teile von Worten mit dem eingebauten Assembler schreiben. 9. Betriebssystem Traditionell organisiert Forth seinen Quellcode in Blöcken a 1kByte. Die Diskettenstruktur ist dann auch sehr einfach. Die Diskette wird in Blöcke a 1kByte eingeteilt. Ein Inhaltsverzeich- nis gibt es nicht. Der Block 0 enthält eine allgemeine Beschreibung der Diskette. Die erste Zeile eines Blocks enthält eine Kurzbeschreibung dieses Blockes. Durch das Wort Index kann man sich die erste Zeile von mehreren Blöcken ansehen, was dann einem Inhaltsverzeichnis nahe kommt. Bei Bootdisketten werden die Bootsektoren und weitere erforderliche Sektoren mit dem Bootprogramm beschrieben. Ein Zeiger auf den (User-) Block 0 schützt den Bootbereich vor einem versehent- lichen Überschreiben. 10. FIG-Forth Die Forth Interest Group (FIG) hat für fast alle Rechnertypen ein Forth-System herausgebracht. Für unsere 8-Bit ATARIs ist es als Public Domain erhältlich. Es enthält alle geschilderten Features (und noch einiges mehr). Wegen der geschilderten Disk-Struktur ist es inkompatibel zu allen DOS Standarts. Nur das DOS 3 verwendet 1kByte Sektoren, kann aber wegen der fehlenden Directory mit den FIG-Forth Daten nichts anfangen. Bei vielen Forth- Systemen wird noch ein Target-Compiler mitgeliefert. Damit kann man ein Forth-Programm (Wort) so compilieren, daß es auch ohne die Forth Umgebung läuft. In der FIG-Forth Version deuten Fehlermeldungen des Target-Compilers auf Seite 6 auf dessen Existenz. Ich fand aber weder in der Beschreibung, noch im Wörterbuch einen weiteren Hinweis darauf. FIG-Forth Programme können also nicht in DOS 2.5 eingebunden werden. 11. Geschwindigkeit Durch den einfachen Aufbau wird eine enorme Geschwindigkeit (für eine Hochsprache) erreicht. Da in Forth fast alles ein Unterprogramm ist, ist der Programmcode von Forth sehr kompakt. Kein Teil gibt es zweimal. Das führt s durch die ständigen Unterprogramm- aufrufe (JSR xxxx .... RTS) im Vergleich zu Assembler zu einem langsameren aber wesentlich kompakteren Programm. 12. UPN Will man z.B. die Zahlen 3 und 5 addieren, so muß man sie zuerst auf den Stapel legen und dann das Unterprogramm für die Addition aufrufen. Das geschieht mit <3 5 +>, wobei < und > nicht mit eingegeben werden. Das Ergebnis dieser Programmsequenz liegt natürlich Forth gemäß auf dem Stapel. Diese Schreibweise nennt man auch UPN (Umgekehrt Polnische Notation). Sie ist erfahrungsgemäß das größte Hindernis beim erlernen von Forth. Sie bietet aber den Vorteil, daß Klammern über- flüssig sind, da durch die Anordnung der Variablen auf dem Stapel das Ergebnis immer eindeutig ist. Die HP-Taschenrechner benutzten auch die UPN. 13. Hardware Durch das einfache Konzept von Forth ermuntert, sind bereits mehere Mikro- prozessoren erschienen, die man direkt in Forth programmieren kann. So hat die amerikansche Firma Novix einen Chip unter dem Namen NC4000P herausgebracht. Er besteht nur aus ca. 4000 Gattern (Der Z80 hat 10 mal soviele), leistet aber im Schnitt 10 MiPS, und bewegt sich bei der Geschwindigkeit in der Größenordnung einer VAX. Dabei wird der Prozessor aber nicht in einer unverständlichen Maschinensprache programmiert, sondern direkt in der Hochsprache Forth! 14. Weiterführendes Wer sich für Forth interessiert, dem kann ich das FIG-Forth als PD-Programm empfehlen. Die Dokumentation dazu ist leider in Englisch. An Büchern sind erwähnenswert: Programmieren in Forth von Leo Brodie 1984 Carl Hanser Verlag München ISBN 3-446-14070-0 Witzig und leicht verständlich geschriebenes Einsteigerbuch In Forth denken von Leo Brodie 1986 Carl Hanser Verlag München ISBN 3-446-14334-3 Wie man die Philosophie von Forth erfolgreich in die Praxis umsetzt Forth Handbuch von E. Floegel 1982 Hofacker Verlag Holzkirchen ISBN 3-911682-88-6 Sehr preiswerte Einführung mit etlichen Druckfehlern Forth Anwendungsbeispiele von E.Floegel 1984 Hofacker Verlag holzkirchen ISBN 3-88963-200-9 Viele vollständige Programmbeispiele Forth: The NEXT Step von Ron Geere 1986 Addison-Wesly Wokingham ISBN 0-201-18050-2 Viele kleine nützliche Worte Die Bücher des Hofacker Verlages (Tegernseerstr. 18 8150 Holzkirchen) sind sehr preiswert. Die anderen Bücher kann man sich ja bei seiner Stadt- bibliothek über Fernleihe ausleihen um sie zu testen ehe man sie kauft. Es gibt auch eine Forth-Gesellschaft (Postfach 1110 8044 Unterschleißheim), deren Ziel es ist die Verbreitung der Sprache Forth zu fördern. Neben Gedan- kenaustausch in lokalen Gruppen gibt sie auch eine Zeitschrift heraus (Vierte Dimension). Das war es dann erst einmal für diesen Monat. Wir hoffen, daß Sie einen aus- führlichen Einblick in die welt von FORTH hatten. Wer an der Programmierung in FORTH interessiert ist, kann sich entweder das FIG-FORTH zulegen (wird ab dem nächsten Monat wieder von uns vertrieben), oder das teurere GRAFIK- FORTH kaufen (siehe test in dieser Aus- gabe).