★ APPLICATIONS ★ PROGRAMMATION ★ Ein MINI-FORTH auf dem SCHNEIDER CPC-464 ★![]() |
| Forth/UPN-Simulator (Compute Mit) | Applications Programmation |
Interessieren Sie sich für Forth? Diese Programmiersprache hat ja in letzter Zeit regelrecht Furore gemacht und liegt nun auch für den Schneider CPC-464 in verschiedenen Versionen vor. Alle zusammen haben denselben Nachteil: Sie kosten einen Batzen Geld. Mit dem abgedruckten Förth-Simulator können Sie die Grundzüge diese Sprache erlernen und dann entscheiden, ob Forth für Sie in Frage kommt. Die Vor- und Nachteile von Forth wurden ja schon oft genug erörtert, hier deshalb die wichtigsten Eigenschaften nur in Stichworten:
Stellen Sie sich das Ganze nun statt mit Tellern mit Zahlen vor: Sie können beliebig viele Zahlen auf den Stapel, neudeutsch „Stack “, legen. Die Rechen befehle, z. B. die vier Grundrechenarten, verknüpfen jeweils die beiden obersten Stapelelemente miteinander: Legen Sie die Zahlen 33 und 44 auf den Stapel und geben Sie ein Plus-Zeichen ein, so nimmt der Computer beide Werte vom Stack, addiert sie und legt das Ergebnis wieder auf den Stapel. Die Zahlen 33 und 44 selbst sind dann verschwunden. Nach dieser kurzen Einführung sollten Sie die weiteren Übungen direkt am Computer durchführen. Geben Sie dazu den Forth/UPN-Simulator ein. Dieser ist in Basic geschrieben und damit natürlich erheblich langsamer als Forth normalerweise. Es besteht aber damit auch kaum die Gefahr, den Computer zum-Abstürzen zu bringen, was Anfänger - und auch Profis -bei Forth des öfteren schaffen. Außerdem kennt das Programm natürlich nicht den gesamten Befehlssatz, so fehlen z.B. Schleifen- und Vergleichs befehle. Um die Grundzüge der Programmierung in Forth zu erlernen, reicht das Programm aber voll aus. Da der Simulator in Basic geschrieben ist, steht er Ihren Erweiterungen natürlich offen. Haben Sie das Programm abgetippt, sollten Sie es sicherheitshalber abspeichern. Auch ist es zu empfehlen, bei der Austestphase des Programms die ON-ERROR-An-weisung in Zeile 540 erst einmal wegzu-iassen, damit Sie Tippfehler in der eingegebenen Version entdecken können. Sobald Sie das Programm starten, schaltet es auf 80 Zeichen pro Zeile um und zeigt den Arbeitsbildschirm. Auf der rechten Bildschirmhälfte finden Sie alle residenten Forth-Befehle, die im folgenden Text an- Wiederholen Sie doch noch einmal die Rechnung von vorhin. Tippen Sie ein: 33 [ENTER] - der Stapelzeiger erhöht sich auf 24578 Nun wollen Sie aber auch ein Ergebnis sehen. In Basic würden Sie jetzt PRINT eingeben, Forth hat dafür den Punkt,,” reserviert Geben Sie also noch einen Punkt ein und drücken Sie wieder ENTER Kurz darauf erscheint das Ergebnis 77. Natürlich können Sie auch alle Eingaben in eine einzige Zeile packen: 33 44 + . [ENTER] Das Ergebnis ist dasselbe. Die übrigen drei Grundrechenarten funktionieren genauso: 3 4 *. ergibt 12 Eine Kombination dieser Rechnungen ist natürlich auch möglich: 3 4*5 + . ergibt 17 Achten Sie unbedingt darauf, zwischen allen Operanden und Operatoren mindestens ein Leerzeichen einzufügen. Mehr Leerzeichen schaden nicht, drücken aber etwas die Verarbeitungsgeschwindigkeit. Alle Eingaben können sowohl in Klein- als auch in Großbuchstaben erfolgen. Jetzt bleibt nur noch eines zu tun: Üben, üben, üben! Denn dies ist die wohl wichtigste Grundlage von Forth. Ohne Kenntnis der UPN kein Forth! Nun gibt es noch weitere Befehle, mit denen der Stapelspeicher manipuliert werden kann. Dazu sind noch zwei Fachbegriffe zu erklären: TOS heißt „Top of Stack “, meint also das oberste Stapelelement. „20S” heißt „Second Element of Stack” und ist das zweite Stapelelement, das direkt unter dem TOS liegt Es gibt Befehle, die nur den TOS verändern, und andere, die TOS und 20S benötigen. 1+ und 2+ sind nur der Vollständigkeit halber aufgenommen und funktionieren genauso wie „1 +” und „2 + ”. Bei richtigen Forth-Interpretern bringen sie einen kleinen Geschwindigkeitsgewinn. SQR ist ähnlich der Pascal-Funktion SQR nicht zu verwechseln mit Basic's SQR Dieser Befehl quadriert den TOS. Achten Sie aber - wie bei allen anderen Berechnungen darauf, daß nur Integer-Zahlen verarbeitet werden können, die im Bereich von -32768 bis 65535 liegen können. DUP dupliziert den TOS, d. h. der Inhalt des TOS wird noch einmal auf den Stapel gelegt So können z.B. Zwischenergebnisse gespeichert werden, wenn diese Zahl nochmals benötigt wird. DROP vergißt den TOS und erniedrigt den Stapelzeiger dementsprechend, SWAP tauscht den Inhalt des TOS und des 20S aus. Damit können z. B. Divisionen und Subtraktionen vorbereitet werden, bei denen es auf die Stellung der Operanden ankommt SWPB ist vor allem für Maschinenprogrammierer interessant, denn SWPB heißt „Swap Bytes” und tauscht das High- und das Low-Byte des TOS aus. Hier sehen Sie auch, daß Sie überall auch Hexadezimal- und Binärzahlen verwenden können - bis auf den Sonderfall Null: Diese Zahl muß dezimal eingegeben werden. Das hat das Programm um einige Zeilen verkürzt. ABS entspricht der Basic-Funktion ABS. Es bildet den Absolutwert des TOS. NEG bildet den Minuswert des TOS. MIN und MAX vergleichen den Inhalt des TOS und 20S und legen das Minimum bzw. Maximum weder auf den Stapel. AND, OR, XOR erlauben logische Verknüpfungen des TOS und 20S. Sie entsprechen den gleichnamigen Basic-Kommandos. NOT bildet das Zweier-Komplement des TOS - genau wie der Basic- Befehl gleichen Namens: EMIT gibtden Inhalt des TOS als ASCIi-Zeichen aus, vergleichbar der CHR$-Funktion in Basic. SPACES gibt soviele Leerzeichen aus, wie sie dem TOS-lnhalt entsprechen. CR, LF, CRLF geben einen Wagenrücklauf, ein Line-Feed oder beides zusammen aus: CLS löscht den Bildschirm. BEEP gibt einen Beep-Ton aus und entspricht 7 EMIT. GOTOXY setzt den Cursor entsprechend dem TOS und 20S. BASIC führt einen Rücksprung nach Basic aus. Wortdefinitionen Nun zu einem weiteren hervorstechenden Merkmal von Forth: den Wortdefinitionen. Ihnen ist sicher schon aufgefallen, daß man mit dem Grundwortschatz von Forth nicht allzuviel anfangen kann. Dafür kann man aber komplizierte Befehlsfolgen unter einen Namen zusammenfassen und unter diesem Namen aufrufen. Die Definitionen bestehen aus einem Doppelpunkt, einem Leerzeichen, dem Namen der Definition, einem weiteren Leerzeichen, den Befehlen, wiederum einem Leerzeichen und einem Strichpunkt als Kennzeichen für das Definitionsende. Dabei können die neuen Definitionen wiederum auf alte bereits definierte Worte zurückgreifen. Vielleicht stört Sie der Punkt als Druck befehl und Sie wollen das Basic-Wort PRINT übernehmen. Nichts leichter als das: : PRINT.; Ab sofort können PRINT und der Punkt gleichwertig nebeneinander verwendet werden. : KUBIK DUP DUP * * ; definiert ein Wort KUBIK, mit dem der TOS hoch drei genommen werden kann: 4 KUBIK . ergibt 64 - verwendet beide definierten Worte in einer neuen Definition. Übersetzt wird es vom Computer als DUP DUP * * * LIST listet alle vom Benutzer definierten Worte auf. DEF erlaubt es, die Definition eines Wortes noch einmal anzuzeigen. Dazu muß die Nummer des Worts ermittelt werden. Sie können ganz einfach beim LIST- Befehl die Worte abzäh len, indem Sie bei Null begin- FORGET ermöglicht es, gezielt Worte aus dem Vokabular wieder zu streichen, wenn sie fehlerhaft sind oder nicht mehr benötigt werden. Als letzte Gruppe gibt es noch sechs „gefährliche” Kommandos. Diese können nämlich den Computer zum Aussteigen bringen - genau wie ihre Basic-Äquivalente PEEK, POKE, DEEK, DOKE, PRINT PEEK und PRINT DEEK. C! entspricht dem Basic-POKE: 255 24576 C! POKE 24576,255Überlegen Sie sich die Verwendung dieser Befehle aber gut! Ein falscher Wert - und der Computer ist abgestürzt. Viel Spaß beim Forth-Lernen! Vielleicht finden Sie ja soviel Interesse daran, daß Sie sich einen richtigen Forth-Interpreter zulegen. |
| ![]() |
|