von Frederik Holst Timer und Interrupts beschäftigen uns auch diese Ausgabe: 532, 533 $214, $215 VTIMR4 Zeiger von POKEY Timer vier für AUDF4. 534, 535 $216, $217 VIMIRQ Der allgemeine IRQ-immediate Vektor. Ein Sprung durch diese Adresse in VIMIRQ beendet die immediate Interrupts. Anmerkung: Für dei folgenden Timer gibt es zwei VBI-Stages: Stage 1 wird alle 1/50 Sekunde verändert, Stage 2 alle 1/25 Sekunde. 536, 537 $218, $219 CDTMV1 Wert von Systemtimer eins. Zählt von 255 auf null zurück im Stage 1 VBI. Bei null wird ein JSR zur Adresse in 550,551 ausgeführt. Dieser Timer sollte nicht für eigene Zwecke mißbraucht werden, da das OS es für IO Operationen benötigt. Es sollten hier keine 16-Bit Werte gepoket werden, da der 8-Bit damit Probleme haben kann, was sich auf die ungenaue Ausführung von den Interrupts auswirkt. 538, 539 $21a, $21b CDTMV2 Systemtimer zwei, wird im Stage 2 VBI erniedrigt. Sollte CRITIC (66, $42) auf einen Wert größer null gesetzt werden, wird er in einem Stage 1 VBI verändert. Es kann dann passieren, daß ein Wert übersprungen wird. Bei null erfolgt ein JSR durch 552, 553. 540, 541 $21c, $21d CDTMV3 Systemtimer drei. Siehe 538. Die Timer drei, vier und fünf werden angehalten, wenn CRITIC größer null ist. Timer drei wird für die Arbeit mit dem Cassettenlaufwerk vom OS benötigt. 542, 543 $21e, $21f CDTMV4 Systemtimer vier. Siehe 538, 540. 544, 545 $220, $221 CDTMV5 Systemtimer fünf. Siehe 538, 540. Diese Timer setzen jeweils die Flags in 554, 556 und 556, wenn sie null erreichen. 546, 547 $222, $223 VVBLKI Vektor für den immediate (sofortigen) VBI. Solch ein VBI wird immer ausgeführt, d.h. auch wenn IO-Operationen ausgeführt werden oder Grafiken aufgebaut werden, die viel Rechenzeiten verlagen. Bei zu großem Zeitaufwand, kann es vorkommen, daß der Rechner aussteigt. Ein eigener VBI muß mit einem JMP $e45f enden. 548, 549 $224, $225 VVBLKD Vektor für den deferred (verzögerten) VBI. Dieser wird nur ausgeführt, wenn CRITIC null ist. Ein eigener Interrupt muß mit einem JMP $e562 beendet werden. Beim Einschalten ist der DLI ab- und der VBI eingeschaltet. 550, 551 $226, $227 CDTMA1 Vektor für Systemtimer eins. Eigene Interrupts können benutzt werden, diese müssen mit einem normalen RTS enden. Wie oben schon gesagt, sollte dieser Interrupt nicht verwendet werden. 552, 553 $228, $229 CDTMA2 Vektor für Systemtimer zwei. Dieser Interrupt kann gefahrlos benutzt werden. 554 $22a CDTMF3 Systemtimer drei Flag. Wird vom DOS als Timeoutflag benutzt. 555 $22b SRTIMR Software-Wiederholungstimer. Wird für die Tastenwiederholung benötigt. Wenn der Wert von 48 auf null gezählt hat, wird die Wiederholung ausgelöst. 556 $22c CDTMF4 Systemtimer vier Flag. Korrespondiert mit 542, 543. 557 $22d INTEMP Zeitweiliges Register der SETVBL Routine. 558 $22e CDTMF5 Systemtimer fünf Flag. Korrespondiert mit Speicherstelle 544, 545. 559 $22f SDMCTL DMA (Direct Memory Access = direkter Speicherzugriff) Register. Der Wert null schaltet ANTIC ab un ermöglicht ein bis zu 30 Prozent schnelleres Arbeiten des Prozessors. Die Bits haben folgende Bedeutung: Effekt Dezimal Bit Kein Screen 0 0 Schmaler Screen 1 0 Normaler Screen 2 0,1 Weiter Screen 3 0,1 Missile DMA an 4 2 Player DMA an 8 3 P+M DMA an 12 2,3 Einzeilige Auflös. 16 4 ANTIC an 32 5 560, 561 $230, $231 SDLSTL Vektor der Dislplaylist (DL). Die DL bschreibt den Aufbau des Bildschrims. Die DL ist einige Sprache, die nur ANTIC versteht. Hier die Codes: 0, 16, 32,...112 1-8 Schwarze Zeilen 2 Graphics null 3 Extended Gr.0 4 Graphics 12 5 Graphics 13 6 Graphics 1 7 Graphics 2 8 Graphics 3 9 Graphics 4 10 Graphics 5 11 Graphics 6 12 Graphics 14 13 Graphics 7 14 Graphics 15 15 Graphics 8 Spezielle Codes: 1 Sprungbefehl 65 Sprung mit warten auf VBLANK Offsets: +16 Vertikal Scrolling +32 Horizontal Scrl. +64 LMS +128 DLI-Interrupt Bis dann.