Am Anfang war das Fernsehen
Sicherlich hat sich der eine oder andere schon einmal über die krumme Taktfrequenz des C64 gewundert. Dies liegt am Fernsehen, genauer gesagt am PAL (oder NTSC) Signal, das zur Übertragung des Farbbildes verwendet wird. Das PAL (Phase Alternating Line) System wurde als Antwort auf das NTSC System entwickelt, das viele Schwächen aufwies. Da es sowohl Gemeinsamkeiten als auch Unterschiede zwischen den beiden TV-Standards gibt, sind die Taktfrequenzen des C64 ebenfalls unterschiedlich.
Das Bild, das früher auf den alten Röhrenfernsehern wahrgenommen wurde, auch Vollbild genannt, wurde aus zwei Feldern dargestellt. Zuerst wurden die ungeraden (1,3,5,7,9,…) und dann die geraden (2,4,6,8,10,…) Zeilen übertragen. Die Übertragung erfolgte mit 50 Hz, was auch der Netzfrequenz des Stromnetzes entspricht (NTSC 60 Hz, da in den USA die Netzfrequenz ebenfalls 60 Hz beträgt, bei Farbe sogar nur 59,939 Hz). Aufgeteilt in die zwei Felder entspricht dies 25 Vollbildern pro Sekunde, oder 30 bei NTSC (bei Schwarz-Weiß, bei Farbe sind es tatsächlich 29,9695 Vollbilder pro Sekunde). Beim PAL-System werden 625 und beim NTSC-System 525 Zeilen übertragen.
Allerdings sind nur 576 der 625 Zeilen sichtbar. Die verbleibenden 49 Zeilen, auch als Austastlücke bekannt, wurden unter anderem für Teletext verwendet (bei NTSC sind es 486 sichtbare Zeilen).
Berechnung der Bildfrequenz
Wenn nun das sichtbare Bild betrachtet wird, bleiben 576 Zeilen, die auf einem PAL-Fernseher angezeigt werden können. Dies ergibt eine horizontale Frequenz von 15,625 kHz.
(Aktualisierungsrate / 2) * (Anzahl der Zeilen) = PAL: (50 Hz / 2 Felder) * 625 Zeilen = 15.625 Hz NTSC: (59.9392 Hz / 2 Felder) * 525 Zeilen = 15.734,4 Hz
Ohne weiter ins Detail zu gehen, wurde der Farbtaktzyklus auf 283,75 Hz plus einem Versatz von 25 Hz festgelegt (NTSC 227,5 Hz ohne Versatz). Berechnet man nun die Zeilenfrequenz von 15.625 Hz mal den 283,75 Farbtaktzyklen plus den 25 Hz Versatz, erhält man folgende Berechnung:
Zeilenfrequenz * Farbtaktzyklen = PAL: 15.625 Hz * 283,75 Hz + 25 Hz = 4.43361875 MHz NTSC: 15.734 Hz * 227,5 Hz = 3.57955 MHz
Eine Zahl, die vielleicht schon bekannt ist, denn dies ist die Farbträgerfrequenz.
Der VIC – Herrscher der Zeit
Nun wird diese Frequenz mal 4 multipliziert und das Ergebnis betrachtet:
PAL: 4.43361875 MHz * 4 = 17.734475 MHz NTSC: 3.57955 MHz * 4 = 14.31818 MHz
Und schon ist man mittendrin, bei dem ersten Timer des C64. Denn diese Frequenz findet sich sehr nah am Video-Controller (VIC).

PAL-Modell
Wie zu sehen ist, hat das kleine silberne Bauteil die Zahlen 17.734 darauf. Dieser Quarz befindet sich in einem PAL-Modell des Commodore C64 und hat eine Frequenz von 17.734 MHz. In einem NTSC-Modell wäre dort ein Quarz mit dem Wert 14.318 zu finden.
Diese Frequenz, oder Farbtakt, ist der Takt für den VIC, den Video-Controller im C64.
Es gibt eine Version des VIC für PAL und eine für NTSC. Die Auflösungen sind wie folgt:
PAL: 504 Pixel x 312 Zeilen NTSC: 520 Pixel x 263 Zeilen
Vielleicht hat sich der eine oder andere über diese Auflösungen gewundert, da meist von einer Auflösung von 320×200 gesprochen wird. Das ist soweit korrekt, allerdings darf der Rahmen um das Bild nicht vergessen werden.
Und der VIC benötigt 63 Taktzyklen, um eine vollständige Zeile zu erstellen.
Für ein vollständiges Bild werden folgende Anzahl an Takten benötigt:
PAL: 312 Zeilen * 63 Taktzyklen = 19656 Taktzyklen NTSC: 263 Zeilen * 63 Taktzyklen = 15939 Taktzyklen
Der VIC hat eine Aktualisierungsrate von 50,125 Hz bzw. 59,826 Hz für NTSC. Dies liegt etwas außerhalb der Norm, war jedoch kein Problem bei den früheren Fernsehern. Heutzutage haben einige Monitore Schwierigkeiten mit diesen von der Norm abweichenden Werten.
Um ein stabiles Bild darstellen zu können, benötigt der Video-Controller einen Takt, der die einzelnen Punkte pro Zeile entsprechend der Auflösung anzeigen kann.
Dieser wird berechnet, indem die Aktualisierungsrate des VIC mit der Anzahl der Punkte pro Zeile multipliziert und dann mit der Anzahl der Zeilen (auch Rasterzeilen genannt) multipliziert wird.
Bildrate * vertikale Pixel * Rasterzeilen = Frequenz für den VIC PAL: 50,125 Hz * 504 Pixel * 312 Zeilen = 7,882056 MHz NTSC: 59,826 MHz * 520 Pixel * 263 Zeilen = 8,181804 MHz
Diese Frequenz wird durch einen sogenannten VCO (Voltage Controlled Oscillator) oder einen Doppelten erzeugt. Diese Frequenz reduziert die Frequenz des Quarzes auf die DOT-Taktfrequenz. Und auch diese Frequenz wird in den VIC eingespeist.
Der DOT-Takt
Nun hat man den dritten Takt im C64, den DOT-Takt. Diese Frequenz wird ebenfalls auf den VIC angewendet. Mit Hilfe des DOT-Takts und des Farbträgersignals kann der VIC das Bild auf dem Bildschirm anzeigen.
Was ist mit der CPU?
Leider wären die bisher gesehenen Takte alle zu hoch für die 6510 CPU. Da der VIC die Daten über den Datenbus von der CPU erhält, muss diese Übertragung synchron laufen. Da der VIC jedoch mit knapp 7,88 MHz bei PAL und 8,18 MHz bei NTSC getaktet wird, kann die CPU nicht einfach mit 1,00 MHz getaktet werden.
Signale werden entweder bei einer steigenden oder fallenden Flanke gelesen. Wenn die beiden Frequenzen nicht synchron laufen, würde der VIC irgendwann die Daten von der CPU zu früh oder zu spät lesen.
Da der VIC den Takt im C64 vorgibt, teilt er den DOT-Takt einfach durch 8 und gibt dieses Signal als φ0 (Phi0) aus.
PAL: 7,882056 MHz / 8 = 0,98527 MHz NTSC: 8,181804 MHz / 8 = 1,02273 MHz
Und damit gelangt man schließlich zur eigentlichen Taktfrequenz des Commodore C64, dem CPU-Takt. Dieser beträgt nur „etwa“ 1 MHz.
Phi0 wird in die CPU eingespeist und gibt dieses Signal wiederum als Phi2 für weitere externe Komponenten aus. Laut Datenblatt sollte Phi2 mit einer Verzögerung von 0 ausgegeben werden.
Phi2 und auch der DOT-Takt sind ebenfalls beide am Erweiterungsport zu finden, was für verschiedene Hardware-Erweiterungen benötigt wird.

Im obigen Bild ist Phi0 in Gelb und Phi2 in Blau dargestellt. Das Bild wurde aufgenommen, nachdem der C64 eine Weile gelaufen war und die Komponenten leicht erwärmt waren.
Leider ist das Signal nicht so 1:1 wie das Datenblatt es suggeriert. Während dieser Messung wurde eine Phasenverschiebung von fast 20° gemessen.
Dies ist leider kein statischer Wert, der zu jeder Zeit für alle C64 gilt. Im kalten Zustand ist der Wert anders als im warmen Zustand. Und andere VIC-Modelle haben wiederum leicht unterschiedliche Werte. Auf meiner hier verwendeten Platine lag der Wert im kalten Zustand bei knapp 28° und sank im warmen Zustand auf knapp 20°.
Ein Phänomen/Problem, das insbesondere beim Entwickeln der Z80-Cartridge aufgefallen ist. Beim Einschalten funktionierte sie wunderbar und wurde dann sichtbar instabiler, bis sie abstürzte.
Zusammenfassung
Insgesamt lassen sich fünf Takte im Commodore C64 finden:
Quarz: 17.734475 MHz (PAL) / 14.31818 MHz (NTSC) Farbtakt: 4.43361875 MHz (PAL) / 3.57955 MHz (NTSC) DOT-Takt: 7.882056 MHz / 8.181804 MHz Phi0: 0.98527 MHz (PAL) / 1.02273 MHz (NTSC) Phi2: 0.98527 MHz (PAL) / 1.02273 MHz (NTSC)
Ziemlich viele Takte für einen Computer. Doch nun ist klar, woher diese Werte kommen und warum sie so „krumm“ sind.
