Eine schöne graphische Übersicht über den gesamten Algorithmus an sich findet man bei Herbert Fichtner!
Nachdem Sie dieses
Dokument etwas verstanden haben, möchten Sie vielleicht
das |
Schritt 1 (trivial):
Falls die Code-Zahl (Showview, VCRPlus, Videoplus) 9-stellig
ist, die erste Stelle abtrennen und als Zahl "Minutendifferenz"
merken/notieren. Falls die erste Stelle größer ist als 5 (dann
"sitzt" das sogenannte Kanal-Bit, bei dem die Kanalzahl
um 193 erhöht wird), von ihr 5 abziehen und das Ergebnis als
Zahl "Minutendifferenz" merken/notieren, nicht
vergessen, die erste Stelle wegzuwerfen (eine solche Codezahl
gibt es bisher in Deutschland nur selten, z. B. bei Phoenix,
Leitzahl 206. Eine Dekodierung ist für diese Fälle bisher auch
nicht möglich!).
Falls die Code-Zahl jetzt führende Nullen hat, diese einfach
wegwerfen (können bis zu 7 Stück sein!) und den Rest als Code-Zahl
nehmen und damit weiterarbeiten.
Falls die Code-Zahl (von vornherein oder nach Abtrennung der 1. Stelle und einer eventuellen führenden Null) 7- oder 8-stellig ist: Pech gehabt! Zur Zeit können diese Zahlen noch nicht dekodiert werden! Aber es wird daran gearbeitet.
Sinnloses Beispiel: Code-Zahl 305-682-975 ("Abendvorschau", 1.5.2000, 19:58 Uhr, ARD, Dauer2 Minuten), 1. Stelle "3" abtrennen und merken/notieren, Code-Zahl heißt jetzt 05-682-975, führende Null wegwerfen, Code-Zahl ist jetzt 5-682-975. Die Code-Zahl ist 7-stellig und damit zur Zeit (noch) nicht dekodierbar. VERZWEIFLUNG!
Sinnvolles Beispiel: Code-Zahl 300-074-598 ("Wunschbox", 2.5.2000, 14:03 Uhr, ARD, Dauer 57 Minuten), 1. Stelle "3" abtrennen und als "Minutendifferenz" merken/notieren, Code-Zahl heißt jetzt 00-074-598, führende Nullen wegwerfen, Code-Zahl ist jetzt 74-598 und damit 5-stellig. Glück gehabt, wir können weitermachen.
Schritt 2:
Nun wird aus der Code-Zahl eine ebensolange neue Zahl errechnet. Bei mindestens einer führenden Null muß das Verfahren wiederholt werden, damit die Länge erhalten bleibt! Die letzte Stelle bleibt übrigens immer erhalten!
Hierzu gibt es zur Zeit drei verschiedene Verfahren, die aber alle zum selben Ergebnis kommen, falls man richtig rechnet.:
[Shiriff/Welch/Kinsman] Multiplikation (modulo 10, s. obigen Hinweis) mit dem sogenannten "key" 68150631.
Code-Zahl 74-598
74598
* 68150631
24048
_62024
__74598
___50550
____00000
_____24048
______12574
_______74598
============
xxxxxxx93038
[Fichtner] Die n-stellige Code-Zahl wird n-mal untereinander geschrieben, jedes Mal um eine Stelle nach links verschoben. Die Spalten werden (modulo 10) addiert. Dieses Verfahren wird noch zweimal wiederholt. Mathematische Formulierung
Code-Zahl 74-598
____74598
___74598
__74598
_74598
74598
=========
xxxx36278 (ergibt neue Zahl 36278)
____36278
___36278
__36278
_36278
36278
=========
xxxx63758 (ergibt neue Zahl 63758)
____63758
___63758
__63758
_63758
63758
=========
xxxx93038 (ergibt neuen Code 93038)
[Zelczak und
Fichtner] Die letzte Stelle bleibt (wie
oben bereits erwähnt) immer erhalten!
Also ist die letzte Stelle der neuen Zahl immer gleich der
letzten Stelle der Code-Zahl.
Man addiert die vorletzte Stelle der Code-Zahl
und die letzte Stelle der neuen
Zahl (modulo 10), um die vorletzte Ziffer der neuen
Zahl zu bekommen.
Nun addiert man die dritte Ziffer von rechts des
Codes und die zweite Ziffer von
rechts der neuen Zahl, um die dritte
Ziffer von rechts der neuen Zahl zu bekommen.
Für die restlichen Ziffern wird ebenso verfahren.
Dieses Verfahren wird noch zweimal wiederholt.
Code-Zahl 74-598
5. Stelle neue Zahl = | 8 | 8 |
4. Stelle = | 9+8 = | 7 |
3. Stelle = | 5+7 = | 2 |
2. Stelle = | 4+2 = | 6 |
1. Stelle = | 7+6 = | 3 |
neue Zahl = | 36-278 |
Zwischenergebnis 36-278
5. Stelle neue Zahl = | 8 | 8 |
4. Stelle = | 7+8 = | 5 |
3. Stelle = | 2+5 = | 7 |
2. Stelle = | 6+7 = | 3 |
1. Stelle = | 3+3 = | 6 |
neue Zahl = | 63-758 |
Zwischenergebnis 63-758
5. Stelle neue Zahl = | 8 | 8 |
4. Stelle = | 5+8 = | 3 |
3. Stelle = | 7+3 = | 0 |
2. Stelle = | 3+0 = | 3 |
1. Stelle = | 6+3 = | 9 |
neue Zahl = | 93-038 |
Neue Code-Zahl: 93-038
Schritt 3:
Die rechten drei Stellen werden zuerst abgetrennt und dann um 1 verringert. Das Ergebnis nenne ich einfach mal "Bottom", die restlichen Stellen ergeben eine Zahl "Top".
Code-Zahl 93-038
Bottom = 38 - 1 = 37
Top = 93
Schritt 4:
Aus der Zahl Bottom errechnet man den Tag im Monat durch den ganzzahligen Anteil bei der Division durch 32 (normale Division) und anschließende (normale) Addition mit1. Der Rest der Division wird in die Zahl Rem gespeichert
Bottom 37
Tag = 37 / 32 = 1 + 1 = 2
Rem = Rest von 37/32 = 5
Schritt 5:
Im Videorekorder oder in der
speziellen Showview-Fernbedienung läuft
eine Uhr mit, die den aktuellen Tag, Monat und das aktuelle Jahr
für die Berechnung (Schritt 5 und 6) liefert.Monat und Jahr sind
also nicht Bestandteil des Codes!
Ist der aus dem Code berechnete Tag kleiner als der aktuelle Tag,
so wird angenommen, dass der nächste Monat gemeint ist.
Berechnung zweier neuer Zahlen "Newtop" und "Offset" aus der Zahl "Top" aus Schritt 3.
[Shiriff/Welch/Kinsman] Zuerst werden alle Ziffern der Zahl Top
aufeinanderaddiert in die Zahl Offset.
In einer Schleife wird eine Funktion "map_top"
aufgerufen, deren Rückgabewert (modulo 10) auf Offset aufaddiert
wird (diese Addition ist normal!).
Der Rest der zweistelligen Jahreszahl modulo 16 (um 1 erhöht)
ergibt die Anzahl der benötigten Schleifendurchläufe.
In der Funktion "map_top" wird die Zahl Top
ziffernweise mit Ziffern multipliziert, die sich aus zum Teil
mehreren Faktoren errechnen, die wiederum vom Jahr modulo 16 abhängen.
Zum Schluß wird "map_top" nochmals durchlaufen. Das
Ergebnis wird (normal und nicht modulo etc.) in die Zahl Newtop
übernommen.
Falls Newtop weniger Stellen hat als Top, so wird das alles
nochmals durchlaufen, bis beide gleich lang sind.
Offset wird modulo 32 berechnet!
Wer dieses Verfahren nachvollziehen will, sei auf die
Originalausarbeitung verwiesen.
Ein Beispiel
schenke ich mir, da einerseits dieses Verfahren sehr komplex ist
und andererseits die beiden anderen Verfahren wesentlich
einfacher sind.
Auf jeden Fall ergibt sich (zur Kontrolle der beiden anderen
Verfahren): Newtop = 14 und Offset = 16.
[Fichtner] Zuerst werden alle Ziffern der Zahl Top
aufeinanderaddiert in die Zahl Offset.
Die letzte Stelle des Tages aus Schritt 4 wird hingeschrieben und
rechts daneben die Ziffern der Zahl Top.
Dann schreibt man alles darunter, nur diesmal um eine Stelle nach
rechts verschoben.
Dies wiederholt man, bis soviele Zeilen untereinanderstehen wie
Anzahl Stellen der Zahl Top und eine weitere Zeile.
Die Spalten werden (modulo 10) addiert. Von dem Resultat werden
ab der 2. Stelle nur so viele Stellen wie die der Zahl Top
benutzt
Der Rest der zweistelligen Jahreszahl modulo 16 (um 1 erhöht)
ergibt die Anzahl der benötigten Durchgänge.
Das Ergebnis des letzten Durchganges wird in der Zahl Newtop
gespeichert.
Die letzte Stelle eines jeden Durchganges wird (normal!) auf die
Zahl Offset draufaddiert.
Falls Newtop weniger Stellen hat als Top, so wird das alles
nochmals durchlaufen, bis beide gleich lang sind.
Offset wird modulo 32 berechnet!
Mathematische Formulierung
Top = 93, Tag = 2.
Jahr = 00 (nur letzte beide Stellen zählen!)
Jahr modulo 16 = 0, also wird der Vorgang einmal durchgeführt.
293 (Tag und Top)
_293
__293
=====
214xx (also Newtop = 14)
(Falls weitere Durchgänge
nötig sind, wird mit dieser Zahl 14 weitergerechnet!)
Offset = (normale Addition
der Ziffern aus Top) 9 + 3 = 12
Auf Offset werden die unterstrichenen Ziffern aufaddiert.
Offset = 12 + 4 = 16
[Zelczak und Fichtner] Der Rest der zweistelligen Jahreszahl modulo 16 (um 1 erhöht) ergibt die Anzahl, wie oft der folgende Prozess durchgeführt werden muß.
Zuerst werden alle Ziffern der Zahl Top aufeinanderaddiert in die Zahl Offset.
Man addiert die erste
Stelle von Top und die letzte
Stelle des Tages, um die erste
Stelle der neuen Zahl zu bekommen (modulo 10).
Nun addiert man die zweite Stelle von Top
auf die erste Stelle der neuen
Zahl (modulo 10), um die zweite Stelle der neuen
Zahl zu erhalten.
Für die restlichen Stellen verfährt man sinngemäß.
Man addiert die letzte Stelle der neuen
Zahl (normal) auf Offset.
Das Ergebnis des letzten
Durchganges wird in der Zahl Newtop
gespeichert.
Die Zahl Offset wird modulo 32 berechnet!
Falls Newtop weniger Stellen hat als Top, so wird das alles
nochmals durchlaufen (diesmal mit Newtop als Ausgangszahl), bis
beide gleich lang sind.
Wir nehmen an,
dass die Uhr des Videorekorders auf dem 1.5.2000 steht.
Top = 93, Tag = 2. Jahr = 00 (nur die letzten beiden Stellen zählen!)
Offset = (normale Addition der Ziffern aus Top) 9 + 3 = 12
Jahr 00 modulo 16 = 0, also wird der Vorgang einmal durchgeführt.
Erste Stelle neue Zahl = 9 + 2 (Tag) = 1
Zweite Stelle neue Zahl = 3 + 1 = 4
Offset = 12 + 4 = 16
Neue Zahl = 14
(also Newtop = 14)
(Nur falls ein weiterer Vorgang nötig sein sollte, wird mit der
neuen Zahl 14 weitergerechnet, also:
Erste Stelle neue Zahl = 1 + 2 (Tag) = 3
Zweite Stelle neue Zahl = 4 + 3 = 7
Neue Zahl = 37
Offset = 16 + 7 = 23, etc.)
Schritt 6:
Berechnung einer neuen Zahl "Top2"
aus Bottom, Tag, Monat und Offset.
Top2 = (Rem + Tag * (Monat+1) + Offset) modulo 32
Rem 5, Tag = 2,
Monat = 5, Offset = 16
Top2 = (5 + 2 * (5 + 1) + 16) = 33 (modulo 32) = 1
Schritt 7:
Die Zahlen Newtop und Top2 werden in Bits zerlegt. Newtop ist je nach Land unterschiedlich. Die z-Bits stehen für Zeit und Dauer, die k-Bits für Kanal.
Überall: Top2 (5 Bits) = z2 k1 z1 k0 z0
Newtop (10 Bits)
Deutschland: z9 k4 k3 z8 z7 z6 z5 z4 z3 k2
USA: z8 k5 z7 k4 z6 z5 z4 k3 z3 k2
Großbritannien: z10 z9 z8 z7 z6 z5 z4 k3 k2 z3
Die z-Bits werden in der Folge z9 (USA: z8, UK: z10) bis z0 nebeneinandergestellt und in dezimal umgerechnet ("Zeit-Index") und die k-Bits in der Folge k4 (USA k5, UK: k3) bis k0 ebenso nebeneinander und zu "Leit-Kanal" in dezimal umgerechnet und danach 1 addiert. Zumindest für Deutschland gibt es zumindest eine Spezialregel wie: "Falls die dezimale Darstellung der k-Bits zwischen 19 und 31 liegt, wird nicht 1 sondern 81 addiert, um den Kanal zu bekommen.".
Beispiel (nur für
Deutschland):
Top2 = 1 = binär 00001 (z2 k1 z1 k0 z0)
Newtop = 14 = binär 0000001110 (z9 k4 k3 z8 z7 z6 z5 z4 z3 k2)
Daraus ergibt sich für
Zeit-Index = 0000111001 = 57
Kanal = 00000 = 0 + 1 = 1
Schritt 8:
Der Leitkanal muß(te) mit dem Videorekorder oder dem Showview-Gerät irgendwann dem tatsächlichen Kanal auf dem Videorekorder zugeordnet werden.
Mit dem Zeit-Index wird auf die
Tabelle der Zeiten und der Dauer zugegriffen.
Für jeden Tabelleneintrag gibt es eine Uhrzeit und eine Dauer.
Falls in Schritt 1 eine
Minutendifferenz ermittelt wurde, so wird sie auf die Anfangszeit
addiert und von der Dauer abgezogen.
War die erste von 9 Stellen größer als 5, so muß nun auf die
Kanalzahl um 193 erhöht werden!
Beispiel (nur für
Deutschland):
Zeit-Index = 57 = "Anfangszeit
14:00 Uhr, Dauer 60 Minuten"
Kanal = 1 = "ARD"
Tag = 2
Minutendifferenz 3, also ergibt sich "2.5.2000, Anfangszeit
14:03 Uhr, Dauer 57 Minuten, ARD"
(http://www.zelczak.com/dekodier.htm)