Jiffy-Clock

Aus C64-Wiki
Zur Navigation springenZur Suche springen

Die Jiffy-Clock ist eine freilaufende, von einem Hardware-Timer (CIA) angetriebene Uhr, die einen Tag umspannt. Sie ist im KERNAL realisiert wird nach jedem Reset initialisiert.

Jiffy-Intervall[Bearbeiten | Quelltext bearbeiten]

In der Computertechnik wird ursprünglich ein "Jiffy" als Zeit zwischen zwei "Ticks" eines interrupt-getriebenen System-Timers angesehen und bildet die Zeitbasis für alle zeitlichen Vorgänge innerhalb eines Betriebssystems. Im Gegensatz dazu ist der Begriff auch in der Elektrotechnik als Zeitspanne zwischen zwei Wechselstromperioden bekannt, etwa bei der Netzversorgung[1], aber im der Elektronik und Computertechnik handelt es sich üblicherweise um ein beliebig kleines Zeitintervall fester Länge.
Beim C64 ist die Jiffy-Clock (unter BASIC auch über die Variablen TI und TI$ erreichbar) vom Hardware-Time eines CIA abgeleitet, der seinen Takt vom Oszillator passend zur vertikalen Bildwiederholfrequenz der jeweiligen TV-Norm erhält, aber so programmiert ist, dass das Intervall stets eine 1/60 Sekunde ergibt (unabhängig davon, ob es sich um eine NTSC- oder PAL-System handelt).

Genauigkeit[Bearbeiten | Quelltext bearbeiten]

Ein Jiffy ist keine absolut zuverlässige Zeitbasis. Auch wenn die auf einem Quarz basierende Oszillatorfrequenz sehr genau ist, so wird der ausgelöste Interrupt für das Hochzählen des Jiffy-Zählers nicht immer rechtzeitig bearbeitet oder sogar ausgelassen, was zum Verlust von "Jiffys" führt. Das Unterdrücken von Interrupts, etwa bei Datasetten-Operationen, kann hier der Grund sein.
Hinzu kommt noch, dass die Uhr pro Tag einen Jiffy verliert, weil das Hochzählen des Zählers[2] im KERNAL einen Fehler aufweist. Er tritt beim Vergleich mit dem 24h-Überlaufwert $4F1A01 (dezimal 5184001 Jiffys, entspricht den 24-Stunden plus eine Jiffy) auf. Der Überlauf findet erst statt, wenn dieser Wert erreicht oder überschritten ist, was eben den One-off-Fehler begründet und zu einer Abweichung von 16,8 Millisekunden pro Tag führt.

Um interrupt-bedingte Effekte zu vermeiden, sollte man den Einsatz der TOD-Clock (RTC) in Erwägung ziehen, die das Zahlen "in Hardware" durchführt, allerdings nur eine Auflösung von 0,1 Sekunden aufweist.

Quellen[Bearbeiten | Quelltext bearbeiten]

  1. What’s a Jiffy?, accessed 24 September 2014 Sprache:englisch
  2. $F69B KERNAL-Routine "Bump Clock" Sprache:englisch