Heim

Rasterzeileninterrupt

Die Rasterzeileninterruptprogrammierung wurde vor allem auf den Homecomputern der 80er Jahre (besonders dem Commodore C64) angewendet und war ein in der Demoszene beliebter Trick.

Der Grafikchip "VIC" (MOS Technology 6569 und ähnliche Varianten) des Commodore 64 kann so programmiert werden, dass er, wenn der Elektronenstrahl in der Bildröhre des Fernsehers bzw. Monitors eine bestimmten Rasterzeile erreicht, einen IRQ auslöst. Da der C64 als Bildschirm normalerweise einen normalen 50-Hz-Fernseher nutzte, konnte die Zeit, die der Rasterelektronenstrahl der Bildröhre benötigte, um an einen bestimmten Ort auf der Mattscheibe zu gelangen, relativ zum Startpunkt berechnet werden. Der Prozessor des C64 kannte keine Optimierungen wie Branch-Prediction, so dass die Ausführungszeiten von Assembler-Befehlen konstant und berechenbar waren. Durch geschickte Programmierung wurde dieser Determinismus ausgenutzt, und der Video-Baustein VIC für eine definierte Zeit abgeschaltet, bzw. angehalten. Erst wenn nach Ausführung einiger (eventuell auch sinnloser) Kommandos (NOP - No OPeration, 2 Takte) der Elektronenstrahl die gewünschte Bildposition erreicht hatte, wurde er wieder eingeschaltet. So war es möglich, ohne Sprites beliebig große Grafikblöcke auf dem Bild zu verschieben, und das ganze in einer Geschwindigkeit, die andere IBM-kompatible Computer erst in etwa mit Einführung des Pentium-Prozessors erreichten.

Farbüberlagerungen wurden durch Rasterzeileninterruptprogrammierung möglich, so dass mehr als die standardmäßig vorhandenen 16 Farben zusammengemischt werden konnten. Durch den Interrupt konnten neue Registerinhalte geladen und so verschiedene Zeichensätze gleichzeitig dargestellt oder der Bildschirm in mehrere Bereiche unterteilt werden. Auch die Begrenzung des C64 auf 8 Sprites wurde so von vielen C64-Spielen umgangen. Der Rasterzeileninterrupt spielte auch eine wichtige Rolle beim sogenannten Zeichensatz-Scrolling.

Die Rasterzeileninterruptprogrammierung ist ein typisches Beispiel für einen Hack (im Sinne eines Programmiertricks), was in diesem Fall den „respektlosen“, unbefangenen Umgang mit technischem Gerät bedeutet. Denn die Funktionalität war vom Hersteller vermutlich nicht vorgesehen, sondern hatte sich rein zufällig ergeben.

Auf dem Amiga-Computer wurde diese strahlsynchrone Programmierung durch den Copper (Teil des Agnus des Amiga-Chipsatzes) auf festere Füße gestellt.