Rasterzeileninterrupt
Der Rasterzeileninterrupt ist ein Hardwareinterrupt, der ausgelöst wird, wenn der Videochip eines Computers die Darstellung einer bestimmten Zeile auf dem Bildschirm beginnt.
Die Rasterzeileninterruptprogrammierung wurde intensiv auf den Heimcomputern der 1980er Jahre angewendet. Sie wurde bald zu einem festen Bestandteil vieler für 8-Bit-Heimcomputer geschriebener Computerspiele.
Der Bildaufbau auf Bildschirmen findet zeilenweise statt. Der Videochip, der die Bilddaten ausgibt, enthält dazu unter anderem einen Zähler für die momentan auszugebende Bildzeile, die sogenannte Rasterzeile. Unterstützt der Videochip einen Rasterzeileninterrupt, kann vom Programm eine Zeile festgelegt werden, bei der dieser Interrupt ausgelöst werden soll. Erreicht der Rasterzeilenzähler diesen Wert, signalisiert der Videochip eine Interruptanforderung an den Prozessor. Dieser unterbricht das laufende Programm und führt eine Unterbrechungsroutine (Interrupt Handler) aus. Am Ende der Unterbrechungsroutine fährt der Prozessor mit dem unterbrochenen Programm fort.
Der Rasterzeileninterrupt vereinfacht es, Programmteile beim Erreichen einer bestimmten Bildschirmzeile auszuführen, also mit dem Bildaufbau zu synchronisieren. Das Programm muss nicht aktiv auf das Erreichen dieser Position warten, sondern wird durch die vom Videochip signalisierte Unterbrechungsanforderung (Interrupt) informiert. So lassen sich beispielsweise sehr einfach während des Bildaufbaus Grafikmodi wechseln (Split Screen) oder normalerweise für das Gesamtbild geltende Farben umschalten. Auch die gleichzeitige Darstellung einer größeren Anzahl hardwaregenerierter Sprites als ursprünglich vom System vorgesehen durch Änderung der Bildschirmpositionen nicht mehr benötigter Sprites aus dem bereits überstrichenen in den noch vom Elektronenstrahl zu zeichnenden Bildschirmbereich wird durch den Rasterinterrupt vereinfacht (z. B. bei Spielen für den Commodore 64).
Hardware
Ein bekannter klassischer Grafikchip, bei dem der Hersteller die Mechanismen für einen Rasterzeileninterrupt eingebaut hat, ist der VIC-II (MOS Technology 6569 und ähnliche Varianten). Dieser wurde unter anderem im Commodore 64 verbaut. Zeitgenössische 8-Bit-Hardware wie der Atari 800,[1] Homecomputer nach dem MSX-Standard oder der Schneider CPC beherrschten ihn ebenfalls. Aber auch jüngere Hardware unterstützt Rasterzeileninterrupts, wie z. B. das Megadrive,[2] das Super Nintendo, der Game Boy Advance[3] oder der GameCube, wo die Technik oft in Spielen für diverse optische Effekte eingesetzt wurde.
Literatur
- Axel Plenge: Das Grafikbuch zum Commodore 64. Data Becker Verlag, 1984, ISBN 3-89011-009-6.
- Effekthascherei. In: 64’er Magazin. Nr. 9. Franzis Verlag, September 1997 (Online [abgerufen am 21. September 2021]).
- Steve Collins: Game graphics during the 8-bit computer era. In: ACM SIGGRAPH Computer Graphics. Band 32, Nr. 2. ACM, 1998, ISSN 0097-8930 (siggraph.org).
Weblinks
- Text zur Programmierung des Rasterzeileninterrupts am C64 (englisch)
- Ivo Herzeg: Interruptkurs in der Magic Disk 64, CP Verlag
- Michael Steil: The Ultimate Commodore 64 Talk auf YouTube – Vortrag auf dem 25. Chaos Communication Congress (englisch)
Einzelnachweise
- Display List Interruptprogrammierung am Atari 800: Artikel bei Atariarchives.org (englisch)
- Programmierung des Sega Megadrives: Dokumentation (Seite nicht mehr abrufbar. Suche in Webarchiven) bei GameFAQs (englisch)
- Display-Interruptprogrammierung am Game Boy Advance: Wikiseite bei NYC Resistor (englisch)