Mit diesen Worten wird der C64 abgeklemmt. Das Datenkabel des Diskettenlaufwerks über einen 100-Ohm-Widerstand mit dem Monitor verbunden und es passieren Wunderdinge.
Es gibt Dinge, die sollten einfach nicht funktionieren. Auch nicht auf einem C64, mit dem im Grunde alles irgendwie trotzdem funktioniert - auch Internetbrowsing im WLAN, Bitcoin-Mining, mp3-Wiedergabe mit Autotune und anderen Effekten und sogar Videodekodierung (mit externer Arbeitsspeichererweiterung).
Aber eine Demo, die nur auf dem Diskettenlaufwerk des C64 läuft und dabei nicht nur Musik mit dem Laufwerk erzeugt, sondern über ein durchgeschnittenes Datenkabel und einen 100-Ohm-Widerstand auch Bilder auf einem Bildschirm ausgibt, ist ein ganz besonderer Zaubertrick.
Aber Matthias Kramm, der in der C64-Demo-Szene als Quiss/Reflex bekannte Mathematiker, hat bei seinem unglaublichen Meisterwerk Freespin weder gezaubert noch geschummelt und alle Tricks auf seiner Webseite offengelegt. Auf einer Liste der besten C64-Demos sprang Freespin sofort auf Platz 1.
Im Grunde ist das Diskettenlaufwerk ein eigener Computer
Wer einmal längere Zeit mit einem C64 gearbeitet hat - oder wohl eher gespielt-, wird sich vage erinnern, dass das klassische 1541-II-Diskettenlaufwerk des C64 einen eigenen MOS-6502-Prozessor und immerhin 2kB RAM hat. Der Arbeitsspeicher ist ein wenig knapp, aber der Prozessor ist der gleiche wie im Apple II und dem MOS 6510 im C64 sehr ähnlich. An Rechenkraft für eine Demo mangelt es dem Laufwerk also nicht. Schon so manches C64-Programm hat Rechenarbeit an die CPU des Diskettenlaufwerks ausgelagert und die Rechenergebnisse über die serielle Schnittstelle angefordert.
Das Diskettenlaufwerk ist also ein vollständiger Computer, wurde aber nie für eine Datenausgabe jenseits einer seriellen Schnittstelle zum C64 konzipiert. Das ist eine große Hürde. Denn anders als in den Zeiten moderner SOCs war die Elektronik der 1980er Jahren noch etwas besser für ihre Aufgabe optimiert. Keine CPU hatte einfach zufällig eine Grafikkarte mit an Bord und konnte Monitore über USB-C ansprechen. Der C64 erzeugte analoge Videosignale über den VIC Grafikchip, das Diskettenlaufwerk hatte nichts dergleichen.
Möglich wird die Demo durch zwei MOS-6522-Chips im Laufwerk, mit denen Daten von der Diskette in den Arbeitsspeicher eingelesen und über die serielle Schnittstelle ausgegeben werden können. Mit einem Timer können diese Chips auch Rechtecksignale erzeugen. An einem Pin liegt dann also für eine bestimmte Zeit eine Spannung von 0 Volt, die sofort auf 5 V springt und nach einer festgelegten Zeit wieder zurück auf 0 V. Auf diese Weise wird der Schrittmotor des Diskettenlaufwerks angesteuert, aber die Datensignale der seriellen Schnittstelle sind letztlich auch nichts anderes. Der Rest ist kreativer Umgang mit sehr bescheidener Technik.
Der Schrittmotor bewegt den Schreib-Lese-Kopf des Diskettenlaufwerks in kleinen Schritten zur richtigen Datenspur. Die Schritte sind hörbar, jeder Schritt erzeugt einen Ton. Mit der passenden Zahl von Schritten pro Sekunde wird das ganze Laufwerk zu einem einfachen Lautsprecher. Die Lautstärke ist abhängig davon, ob das Gehäuse des Laufwerks mechanische Schwingungen der jeweiligen Frequenz verstärkt oder nicht. Die musikalische Kreativität ist also etwas beschränkt.
Die Bildausgabe muss mit den gleichen Chips passieren, die den Datentransfer, die Ansteuerung der Schreib-/Leseköpfe und die Tonerzeugung übernehmen, viel mehr ist in dem Diskettenlaufwerk einfach nicht drin. Das Kunststück ist nun, mit diesen Chips ein passendes analoges Signal zu erzeugen, um den Elektronenstrahl der Kathodenstrahlröhre des Monitors zu steuern. Dafür stehen aber nur die digitalen Signale der seriellen Schnittstelle zur Verfügung. Statt nun einen Digital-Analog-Konverter zu verwenden, benutzt Reflex einen 100-Ohm-Widerstand.
Zwei Leitungen der seriellen Schnittstelle werden über den Widerstand miteinander verbunden, "Data" und "Clock". Beide Leitungen können 0 V oder 5 V Spannung erzeugen. Der Spannungsabfall über den Widerstand sorgt dafür, dass von den 5 V Spannung der Clock-Leitung nur 0,5 V übrig bleiben. Die 5 V Spannung entspricht weißen Pixeln, 0,5 V entspricht schwarzen Pixeln und 0 V wird benötigt, um das Bildsignal mit dem Bildschirm zu synchronisieren.
Die CPU muss alles allein machen
Das reicht, um ein Bild mit 256 Zeilen von 412 Pixeln Breite zu erzeugen. Die Signale der seriellen Leitung müssen durch Befehle von der CPU umgeschaltet werden. Das braucht mehr Zeit, als für eine pixelgenaue Steuerung nötig wäre, schließlich war die Leitung höchstens für die Übertragung von ein paar Kilobyte pro Sekunde gedacht. Es dauert 4 CPU-Zyklen, um die Signale umzuschalten. Der Elektronenstrahl der Bildröhre bewegt sich während eines CPU-Zyklus mit 1MHz aber schon um 8 Pixel weiter.
Auch bei der Bildausgabe waren der Kreativität also enge Grenzen gesetzt. Am Anfang jeder Bildschirmzeile muss das Bildsignal synchronisiert werden, was auch die Gelegenheit ist, den Schrittmotor des Laufwerks zu bewegen, um Töne zu erzeugen. Nach den 256 Bildschirmzeilen bleibt noch einmal so viel Zeit wie für 56 Zeilen übrig, um anderen Code auszuführen. In diesem kurzen Moment wird die CPU einmal nicht ständig davon unterbrochen, neue Befehle zur Bilderzeugung geben zu müssen. Einen echten Graphikchip in einem Computer zu haben, hat große Vorteile!
Große Vorteile hätte auch ein größerer Arbeitsspeicher. Von den zwei Kilobyte Arbeitsspeicher genehmigte sich Reflex 256 Byte für einen Diskettentreiber, der Daten möglichst schnell und mit geringer Latenz von der Diskette lesen und dekodieren kann. Weitere 256 Byte blieben ihm für die Musik und 1536 Byte für den ganzen Rest.
In Anbetracht der Grenzen der Hardware ist das Ergebnis spektakulär. Nicht umsonst wird die künstlerische Arbeit der Demoszene seit diesem Jahr auch als immaterielles Weltkulturerbe von der Unesco anerkannt.
https://ift.tt/3jY8JmT
Wissenschaft & Technik
Bagikan Berita Ini
0 Response to "C64: Die Demo ist geladen - den Computer brauchen wir nicht mehr - Golem.de - Golem.de"
Post a Comment