Rasterzeileninterrupt
aus Wikipedia, der freien Enzyklopädie
Die Artikel Rasterzeileninterrupt und Rasterinterrupt überschneiden sich thematisch. Hilf mit, die Artikel besser voneinander abzugrenzen oder zu vereinigen. Die Diskussion über diese Überschneidungen findet hier statt. Bitte äußere dich dort, bevor du den Baustein entfernst. Chtaube 23:59, 24. Dez. 2006 (CET) |
Die Rasterzeileninterruptprogrammierung wurde vor allem auf dem Homecomputer Commodore 64 durchgeführt und war ein in der Demoszene beliebter Trick. Da der C64 als Bildschirm 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 z. B. 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 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.
Auch Farbüberlagerungen wurden durch Rasterzeileninterruptprogrammierung möglich, so dass mehr als die standardmäßig vorhandenen 16 Farben zusammengemischt werden konnten.
Die Rasterzeileninterruptprogrammierung ist ein typisches Beispiel für einen Hack (im Sinne eines Programmiertricks), was in diesem Fall den respektlosen, also 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.