Nascom Journal |
4/80 |
Wer schon einmal auf einem Nascom-1 mit NAS-SYS 1 oder auf einem Nascom-2 mit Interrupts arbeiten wollte, hat bestimmt bemerkt, dass unvorhergesehene Dinge passleren: der Cursor verschwindet vom Bildschirm, Register Inhalte werden veraendert oder das Programm, das von den Interrupts unterbrochen werden soll, steigt total aus. Woran liegt das?
Betrachten wir den Beginn der Routinen RCAL und SCAL:
RCAL: PUSH HL POP HL POP HL INC HL PUSH HL ...
Das erste PUSH HL rettet das HL-Register auf den Stack, mit den beiden folgenden POP HL wird die Ruecksprungadresse nach HL geladen. Die Ruecksprungadresse wird aus zwei Gruenden benoetigt. Zum einen muss sie inkrementiert werden, damit hinter das Byte, das Distanz bzw. Unterprogramm charakterisiert, zurueckgesprungen wird, zum Anderen braucht man sie, um dieses Byte zu finden.
Betrachten wir aber den Stackpointer. Nach dem zweiten POP HL zeigt er auf die Ruecksprungadresse, d.h. er steht ueber dem abgelegten HL. Kommt jetzt ein Interrupt, wird dort die Ruecksprungadresse der Interruptserviceroutine eingetragen und der alte Inhalt von HL ist zerstoert.
SCAL ist aber die entscheidende Routine in NAS-SYS, ueber sie laufen die meisten Zugriffe auf des Betriebssystem, auch intern wird sie staendig referiert. unter NAS-SYS 1 sind also keine Interrupts moeglich, ein doch wohl vernichtendes urteil fuer dieses ansonsten so elegante Betriebssystem.
Aber auch ein Betriebssystem ist keine heilige Kuh, d.h. man kann es aendern. Herr Kurt Moraw aus Muenchen, dem ich an dieser Stelle fuer seine Anregungen danken moechte, hat mir dieses Problem geschildert und er hat NAS-SYS 1 so geaendert, dass es interruptfaehig wurde. ich habe seine Aenderungen getestet und sie funktionierten einwandfrei. Leider hatte das Ganze aber noch einen Schoenheitsfehler: NAS-SYS war 28 Byte laenger geworden und es passte nicht mehr in zwei EPROMs.
Jetzt liess mir die Sache keine Ruhe und nach mehreren Abenden Knobelei hat es dann geklappt. RCAL und SCAL wurden Interruptfaehig und passten trotzdem auf die alten Plaetze. (Wer sich das Programm genau anschaut, glaubt bestimmt, dass man nicht auf Anhieb auf so etwas kommt). Damit war ‚NAS-SYS i‘ entstanden. NAS-SYS i ist voll interruptfaehig und es ist natuerlich auch voll kompatibel zu NAS-SYS 1, d.h. alle Programme, die mit nas-sys 1 laufen, laufen auch mit NAS-SYS i.
Fuer Interessenten ist NAS-SYS i ab sofort bei mir (meine Adresse steht im Assemblerlisting auf der naechsten Seite) und bei MK-Systemtechnik erhaeltlich. Es ist 10.– DM teurer als NAS-SYS 1. Fuer aenderungskosten von 20.– DM tauschen wir Ihr NAS-SYS 1 gegen NAS-SYS i um (die eingeschickten eproms muessen natuerlich o.k. sein und sie muessen NAS-SYS 1 enthalten). NAS-SYS i kann nur in EPROMs geliefert werden, nicht in einem ROM. Wie man es trotzdem auf dem Nascom-2 verwenden kann, steht in meinem Artikel im letzten Nascom-Journal.
P.S.: Mit diesem Artikel will ich nicht die radikale Kleinschreibung in der Deutschen Sprache propagieren. Die Kleinschreibung hat technische Gruende. Der Artikel wurde mit NASPEN editiert und mit TTY-SYS (naeheres im naechsten Heft) auf einem Fernschreiber gedruckt – und der hat eben nur Kleinbuchstaben.
Seite 16 von 20 |
---|