Nascom Journal

  

September 1981 · Ausgabe 9


Laden des Assemblerlistings

Wer über genügend Speicherplatz verfügt, kann den ganzen Qelltext an einem Stück laden. Wer wie ich weniger Speicherplatz hat, muß zunächst Block 0 laden und dann die anderen Blöcke einzeln eingeben, assemblieren und wieder löschen. Block 0 muß dabei aber immer im Speicher bleiben, sonst funktionierts nicht! Jedem Interessenten eine Quelltextcassette zu schicken ist mir nicht möglich, da die Lade- bzw. Aufnahmezeit ca. 25 Minuten beträgt. Wir könnten aber einen „Böhmschen Rundlauf“ organisieren. Wer mir innerhalb von 10 Tagen nach Erscheinen des Heftes Nachricht gibt, dessen Anschrift wird in eine Liste eingetragen. Der erste auf der Liste erhält dann von mir eine Cassette und die Liste, kopiert den Quelltext und schickt die Cassette an den nächsten weiter. Das müßte einmal im NAS­COM-1-Format und einmal im NAS­COM-2-Format geschehen, dann könnten wir jeden im Laufe der Zeit zufriedenstellen. Wer aber in der Zwischenzeit schon mit dem Interpreter arbeiten möchte, kann ja schon einmal den Hex-Dump eintippen – 2 K sind ja noch zu verkraften!

Verzeichnis der Befehle im „Dictionary“

Die Bezeichnungen stimmen nicht vollständig mit den Namen im Qelltext überein, da der Assembler nur 6 Zeichen in einer Definition verkraftet. Das Assemblerlisting enthält ab Zeile 6155 das Interpreter- und Compiler-Dictionary; dort sind sowohl die Assembler-Marken als auch die Befehlsnamen des Dictionarys verzeichnet. Im Unterschied zum Standard- FORTH wird der ganze Namen geprüft, nicht nur die ersten 3 oder 4 Buchstaben. Es sind beliebig lange Namen möglich.

Stack-Manipulationsbefehle
DUP:T nach T und T−1; Dupliziert den obersten Wert auf dem Stack.
POP:T nach sonstwo – weg damit!
SWAP:Vertauscht T und T−1
ROT:T nach T−2, T−1 nach T, T−2 nach T−1
CLEAR:Reset Stackpointer
Arithmetische, logische und Vergleichsoperationen
+:T + T−1 nach T
:T − T−1 nach T
*:T * T−1 nach T
/MOD:T/T−1 nach T−1, Rest nach T
INC:T + 1 nach T
DEC:T − 1 nach T
MINUS:Complement von T nach T
OR:Bitweise ODER-Funktion der niederwertigen Bytes von T und T−1 nach T
AND:ebenso UND-Funktion
XOR:ebenso EX­CLU­SIV-ODER
EQ:Vergleicht T und T−1; 0 nach T, falls verschieden, sonst −1
EQZ:0 nach T, falls T ungleich 0, sonst −1 nach T
>:wenn T > T−1, −1 nach T, sonst 0 nach T
Speicherzugriff
PEEKW:Hole 16-Bit-Wort von der Adresse (T) nach T
PEEKB:ebenso, aber 8-Bit-Wort
POKEW:schreibt T−1 in den Speicher nach (T)
POKEB:ebenso, aber 8-Bit-Wort
Monitor-Schnittstelle
NAS-SYS:niederwertiges Byte von T wird nach ARGC und ARGX geladen, ARG1 bis ARG3 in die Register HL, DE und BC, dann wird die RST-Funktion SCALJ (= DF 5C) aufgerufen. Nur für NAS-SYS zu gebrauchen!
Eingabe, Ausgabe, Suchen, Vergleichen
FIRST:Holt das nächste Byte eines Strings auf den Stack; vorher: T Zeiger auf den String; nachher: T Stringzeichen T−1 Zeiger auf nächstes Byte
READLINE:Liest eine Zeile von der Tastatur in den Textpuffer mit Echo auf dem Bildschirm; Ende mit NEW­LINE
GETWORD:Sucht das nächste Wort einer Zeile und ruft READ­LINE auf, wenn keins gefunden wird. Nachher enthält T den Zeiger auf das Wort.
SCAN:Sucht das nächste Wort im Zeilenpuffer und schiebt es nach vorn usw..... nachher: T = 0, falls kein Wort gefunden wurde, oder T = −1, falls doch und dann ein Zeiger auf das Wort in T−1. (Wer mehr wissen will, muß das Assemblerlisting studieren.
PRINTS:Druckt den String, auf den T zeigt. Das erste Byte des Strings muß die Anzahl der Zeichen enthalten.
CONAXB:Dezimal-Binärumwandlung: vorher: T Zeiger auf D-String nachher: T = −1, falls Umwandlung erfolgreich, mit Wert in T−1 sonst T = 0 und Zeiger auf String in T−1
CONBXA:Binär-Dezimalumwandlung:
Seite 11 von 28