320 Bits, 40 Bytes, 40 Prozessortakte…
…ergeben eine Zeile Grafik auf dem guten alten Commodore 64.
Auch in dieser Woche gab es wieder eine Veranstaltung aus der Vortragsreihe “Shift-Restore-Escape” an der Humboldt Universität. Mein erster Eindruck: Nerd T-Shirts waren diese Woche Pflicht. Der Vortragende Michael Steil z.B. trug das Firmenlogo von Cyberdyne Systems, auf Stefan Höltgens schwarzem Shirt stand in weissen Buchstaben die Basicbefehle poke 53280,0, poke 53280,1 und poke 646,1. Das bewirkt auf dem Commodore 64, dass Bildschirmrahmen und Hintergrund schwarz und die Buchstaben weiss dargestellt werden. Das war eine schöne Einleitung in das Thema des Abends. Der Titel des Vortrags machte deutlich, dass es wieder technisch sehr ans Eingemachte gehen würde:
Rasterstrahl-Hacken: Grafik mit dem Commodore 64
Michael Steil begann seinen Vortrag mit der scheinbar einfachen Frage, wie man überhaupt Grafik aus einem Computer auf einer Bildröhre darstellen kann. Schnell wurde deutlich, dass die einfachsten Methoden mit den technischen Restriktionen (wenig und langsamer Speicher) der frühen 80er Jahre nicht zu einer befriedigenden Grafik führen konnten. Die seinerzeit sehr gute Grafikleistung des Commodore 64 wurde erst durch seinen sehr trickreichen Videocontroller VIC II möglich.
Nachdem das Publikum mit dem Verständnis für die technischen Restriktionen der frühen 80er Jahre (Speichermenge, Speicherbandbreite und Preis) ausgestattet war, ging es daran, die Hintergründe für die clevere Umsetzung der verschiedenen Grafik und Textmodi, sowie der Sprites zu erläutern. Interessant ist, dass sich die komplexen Funktionen mit einem relativ übersichtlichen Chiplayout von nur 12.000 Transistoren verwirklichen liessen.
Nach der Vorstellung der von den Chipdesignern vorgesehenen Features kam der wirklich interessante Teil: Methoden und Tricks, die nicht geplant waren und im Laufe der Zeit von findigen Programmierern entdeckt wurden. Tricks mit denen sich wesentlich mehr Leistung aus dem Chip herauskitzeln liess, als eigentlich möglich ist. Hierzu gehörte die Darstellung von wesentlich mehr als 8 Sprites (ein Screenshot eines Spiels zeigte 21), die Erzeugung von mehr als 16 Farben, das Verschwinden lassen der Bildschirmrahmen und ähnliches.
Obwohl ich aus Programmierersicht nichts Neues erfahren habe, fand ich den Vortrag interessant und rund. Erst 30 Jahre, nachdem ich ich mich zum ersten mal mit 6502 Assembler, Rasterzeilen Interrups und ähnlichem auf dem “Brotkasten” beschäftigt habe, wurde mir wirklich bewusst, wieso man auf auf dieser eigentlich grottenlahmen Maschine (weniger als 1 MHz Systemtakt) so richtig gute Software schreiben konnte.
Der Witz liegt im perfekten Zusammenspiel von sehr gut aufeinander abgestimmten Komponenten. Somit liess sich trotz der beschränkten Ressourcen sehr viel erreichen. Dieser Erkenntnis lässt sich jenseits von Computern auch auf andere Bereiche, beispielsweise Teams oder kleine Firmen übertragen. Insofern hatte dieser sehr technische Vortrag auch wieder eine philosophische Komponente. Das ist genau das, was ich an dieser Vortragsreihe so schätze.