Nascom Journal

  

Oktober/November 1982 · Ausgabe 10/11

kann. Ist also kein höherwertiger Interrupt in Bearbeitung, so sendet unsere PIO das „INT“-Signal und legt anschließend ihr Vektor-Register auf den Datenbus. Dieses Vektorregister der PIO muß in der Initialisierungsphase vorbelegt werden. Die CPU, die jetzt auf den Interrupt reagiert, liest dieses Byte und interpretiert es als das niederwertige Byte einer Adresse. Das höherwertige Byte dieser Adresse holt sich die CPU aus ihrem I-Register (Interrupt-Register), das ebenfalls entsprechend vorbelegt sein muß. Damit wird eine 16-bit Adresse generiert, die dann auf den Adreßbus gelegt wird. Diese Adresse zeigt in eine Sprungtabelle und dort steht erst die Anfangsadresse der Interrupt-Service-Routine. Somit ist also eine echte Speicher-indirekte Adressierung mit Hilfe einer Sprungtabelle möglich. Der Umweg über diese Sprungtabelle bietet folgende Vorteile:

1.) Die dort abgelegte, 16-bit Adresse der Interrupt-Service-Routine (ISR) kann zu jeden beliebigen Punkt des 64k-Speicherraumes führen. 2.) Es können beliebig viele ISR angesprungen werden. 3.) Die Anfangsadresse der ISR in der Sprungtabelle kann während der Programmabarbeitung geändert werden. Dies ermöglicht eine dynamische Zuweisung zwischen Peripherie und ISR.

Zum Schluß noch eine Zusammenstellung der Initialisierungsschritte, die beim Betrieb im Interruptmode 2 notwendig sind:

DIDisable Int., für geordnete Anfangsverhältnisse
OUT … Interrupt-Vektor in E/A-Baustein laden
LD I,AInterruptregister der CPU laden
IM 2Interruptmode 2 einstellen
EIInterrupt freigeben

Die Beschreibung sollte einen Einblick in die Interruptbehandlung von Mikroprozessoren geben. Wenngleich auch im zweiten Abschnitt sehr speziell auf die Struktur des Z80 eingegangen wurde, so kann doch mit dem Verständnis dieses Typs relativ leicht die Interruptbehandlung anderer Typen verstanden werden. Die Feinheiten liegen, wie auch hier schon deutlich wurde, nicht mehr in der CPU selbst, sondern werden in zunehmendem Maße in andere Bausteine verlagert. Ob dies, wie beim Z80, die E/A-Bausteine oder spezielle Interrupt-Controler sind, eines haben sie gemeinsam: Die Komplexität ihrer Struktur kann es fast mit der der CPU aufnehmen und dementsprechend umfangreich sind auch die Beschreibungen solcher Bausteine, durch die man sich wohl oder übel durchbeißen muss. Viel Spass dabei !

Datenausgabe
im E- u. F-Format

von J. Kwasnitza

Bekanntlich hat das Nascom- Microsoft- Basic keine direkt zugaenglichen Befehle fuer die formatierte Datenausgabe und waehlt je nach Zahlenwert selbststaendig ein passendes Ausgabeformat. Das hat zur Folge, dass die Ausgabe ordentlicher Zahlentabellen ohne besondere Massnahmen nicht moeglich ist. Anhand des Testprogrammes Nr. 1 wird das noch einmal demonstriert.

Wer das Arbeiten in Fortran gewoehnt ist wuenscht sich da die Verfuegbarkeit der E- und F- Format-Befehle. Fuer alle, die mit Fortran nicht vertraut sind, sei hier kurz die Funktion dieser Befehle beschrieben.

Im E-Format wird eine Variable in folgender Form dargestestellt:

nBlanks,​Signum Mantisse,​.,​Mantisse,​E,​Signum Exponent,​2-stelliger Exponent

Beispiel:"     -.123456E+21"

Durch Befehle kann die Stellenzahl der Mantisse DE und die gesamte Feldbreite WE einschliesslich der Blanks festgelegt werden.

Beispiel: DE=5, WE=12 gibt die Zahl
X =-1.23456 als XE$ = " -.12346E+01" aus.

Im F-Format wird eine Zahl wie folgt dargestellt:

nBlanks,​Signum Zahl,​Dezimalzahl

Mit dem Befehl DF kann die Anzahl der Dezimalstellen einer Zahl bestimmt werden, waehrend die gesamte Feldbreite der Zahl (einschliesslich der Blanks) ueber WF festgelegt wird.

Beispiel: DF=2, WF=7 gibt die Zahl
X=-1.23456 als XF$="   -1.23" aus.

Mit den Basic- Unterprogrammen E-Format (GOSUB​1000)

Seite 10 von 28