Nascom Journal

  

März/April 1982 · Ausgabe 3/4


ERWEITERUNG der NAS­SYS 1 BEFEHLE

von Otto Fößel

Waehrend man fuer den Aufruf des Basic-Interpreters die Moeglichkeit besitzt, dazu einen speziellen kurzen Befehl in NAS­SYS zu verwenden (J oder Z), gibt es so eine Moeglichkeit fuer die anderen Systemprogramme nicht. Naspen,​Debugger, Zeap und Disassembler muessen alle mit dem Execute-Befehl gestartet werden, wobei jeweils die richtige Adresse fuer Warm-, bzw, Kaltstart bekannt sein muss. Leicht unuebersichtlich kann es werden, wenn man zusaetzliche Programme im Eprom parat hat, wie z.B. Treiberprogramme fuer Drucker, EPROM­MER-Software oder sonstige Hilfsprogramme. Eleganter waere es dann doch, wenn man diese Programme ebenfalls mit besonders dafuer vorgesehenen Befehlen aufrufen koennte (z.B. Kleinbuchstaben). Mein Loesungsvorschlag dazu erfordert das Umprogrammieren von 4 Bytes in NAS­SYS 1 und ein kleines Programm, das dann zusaetzlich immer im Speicher vorhanden sein muss. Die Aenderung in NAS­SYS wuerde ich fuer Interessierte kostenlos machen (bitte Rueckporto nicht vergessen). Vorher moechte ich aber noch darauf hinweisen, dass Herr Maurer im Heft 11/12 eine aehnliche Moeglichkeit angekuendigt hat. (Siehe Heft 2/82   Red.) Wahrscheinlich kommt er ohne ein Umprogrammieren des Monitors aus, dafuer erscheint mir aber der benoetigte Speicherplatz von 2k als sehr gross und, ohne meine Loesung anpreisen zu wollen, glaube ich, dass sie flexibler ist, da sich jeder ohne Muehe seine eigenen Befehle definieren und anhaengen kann. Aber jetzt zu den Aenderungen im Monitor. Bei Adresse 03C9 bis 03F2 liegt in NAS­SYS die Haupt-Monitor-Schleife, die jeweils eine Eingabezeile uebernimmt und dann den gueltigen Befehl ausfuehrt, bzw. bei ungueltigem Befehl eine ERROR-Meldung ausgibt. (Siehe Flussdiagramm Bild 1.) Diese Schleife wird einfach durch einen JP-Befehl zum eigenen Programm, das die zusaetzlichen Befehle interpretiert, geoeffnet. Vorher muss noch die Kontrolle auf gueltige Befehle (A-Z) durch die Aenderung eines Bytes erweitert werden (A-Z und a-z). Insgesamt muessten dafuer im Monitor diese vier Speicherplaetze dann folgendermassen aussehen:

03DD: 7B und ab 03EE: C3 xx xx ,​wobei xx xx die Anfangsadresse des angehaengten Interpreterprogrammes ist. Jetzt zu diesem Programm, das fast genauso einfach und kurz ausschaut. Als erstes wird noch einmal ueberoruft, ob der Befehlsbuchstabe (ASCII Code), der in den Akku geholt wurde, ein grosser Buchstabe ist. Wenn ja, kann gleich wieder zurueck in die Monitorschleife gesprungen werden. Nachdem aber durch das Einfuegen des JMP-Befehles dort 2 Befehle ueberschrieben wurden, muessen diese zwei Befehle erst noch hier durchgefuehrt werden, (Siehe ab Label „GROSS“ im Programmlisting Bild 2). Wurde ein kleiner Buchstabe im Akku vorgefunden, so wird das Programm bei „NEU“ fortgesetzt, und dort kann man jetzt seine eigenen Befehle definieren, indem einfach mit einem CP-Befehl nachgeschaut wird, ob gerade dieser Buchstabe im Akku vorliegt. Ist dies der Fall, wird mit JR Z,xx dort hingesprungen, wo festgelegt ist, was auf Grund dieses Befehls gemacht werden soll. Dadurch kann nacheinander auf die verschiedenen Buchstaben abgefragt werden. Am Ende dieser CP-Abfragen steht der Sprung zurueck in den Monitor, wo die ERROR-Meldung ausgegeben wird. Dadurch werden alle Buchstaben, die nicht explizit als neue Befehle durch die CP-Abfragen ausgesondert wurden, als ungueltig erkannt. Als einfaches Beispiel ist gezeigt, wie mit dem Buchstaben „P“ das Programmierprogramm fuer EPROMs aufgerufen wird und mit dem Buchstaben „z“ der ZEAP Assembler. Bei letzterem wurde vereinbart, dass der blanke Buchstabe „z“ einen Kaltstart bedeutet; wird nach dem „z“ noch eine beliebiege Hexzahl mit eingetippt, so soll das als Warmstart interpretiert werden. Uebrigens: die Moeglichkeit, mit einem einfachen JMP-Befehl in die Systemprogramme zu springen, ist erlaubt. Soll naemlich z.B. von ZEAP zurueck in den Monitor gesprungen werden, so geschieht dies nicht mit einem RET-Befehl, denn dann wuerde hoechstens der Stack durcheinanderkommen und der Monitor trotzdem nicht gefunden. Statt dessen wird dort – und das sollte man auch fuer die eigenen Programme beachten – mit den Befehlen RST 0 (entspricht Reset) oder RST 20 zum Monitor zurueckgekehrt! Zum Schluss noch ein Tip, um die Programmierphantasie anzuregen. Ein Befehl „h“ (help) koennte definiert werden, der eine Tabelle der neuen Befehle und ihrer Bedeutung auf dem Bildschirm

Seite 44 von 52