"-- $VER: Y2K.html 1.7 (2.3.199) -->
![]() |
Eine Initiative des |
|
|
Titel der Übersetzung: Amiga und das Jahr 2000
Quelle Originalartikel:
http://www.amiga.com/diary/developers/y2k.html von Olaf Barthel
< !-- hier URL des Originals einfügen --! >
< !-- hier die Übersetzung einfügen --! > Um es kurz zu machen, der Amiga als solcher leidet nicht in dem Zusammenhang unter dem Jahr-2000-Problem, wie es aus der PC-Welt bekannt ist. Dennoch steht der Amiga vor drei unterschiedlichen Datum-Problemen und einem spezifischen Jahr-2000-Problem begrenzten Ausmaßes, die hier beschrieben werden. Dieses Dokument wird Ihnen zeigen, wie Sie herausfinden können, ob Ihr Amiga ein Problem mit dem Jahrtausendwechsel hat, um dann im Detail die technischen Aspekte der Probleme und deren möglichen Ursprung zu erklären.
(Dies ist eine überarbeitete Version des Dokuments gleichen Namens, welches am 20. September auf der Amiga, Inc. Webseite erschien.)
Für diesen Test halten Sie die linke und rechte Maustaste nieder, bevor Sie den Computer einschalten. Halten Sie die Maustasten fest, bis ein Bild auf Ihrem Monitor erscheint.
Dieses Bild sollte so wie eine der drei Illustrationen weiter unten aussehen. Bitte lesen Sie die Beschreibung zu jeder Illustration, um zu erfahren was die Bilder bedeuten.

Figure 1: Das Kickstart-Menu des Amiga 3000
Das ist ein Bild vom Amiga 3000, welches Sie auffordert das zu verwendende Betriebssystem
auszuwählen. Es stehen zwei Möglichkeiten zur Wahl. Sie können entweder die
ältere KickStart-Version 1.3, oder die neuere Versio 2.x verwenden. Auf dieser Maschine
sind beide Versionen Jahr-2000-fähig (der Amiga 3000 ist nicht anfällig für das
SetClock-Problem, welches in diesem Papier beschrieben wird, da er eine spezielle
Version dieses Utilities verwendet). Wenn ein Bild wie dieses erscheint, bedeutet dies, daß Ihr
Amiga Jahr-2000-fähig ist.
Bitte bedenken Sie, daß das Bild auf Ihrem Bildschirm vollkommen identisch mit Figur 1 sein muß.

Figure 2: Das AmigaOS 2.0/2.1 Boot-Menu von AmigaOS 2.0/2.1
Dieses Bild zeigt einen Amiga, der Sie auffordert das Device zu wählen, von dem gebootet werden soll. Wenn dieses Bild erscheint, bedeutet das, daß Ihr Amiga Jahr-2000-fähig ist.
Bitte bedenken Sie, daß das Bild auf Ihrem Bildschirm vollkommen identisch mit Figur 2 sein muß.

Figure 3: Das Bootmenu von AmigaOS 3.0/3.1
Dieses Bild zeigt einen Amiga, der Sie auffordert eine Option der EarlyStartup zu wählen und zu ändern. Wenn dieses Bild erscheint, bedeutet das, daß Ihr Amiga Jahr-2000-fähig ist.
Bitte bedenken Sie, daß das Bild auf Ihrem Bildschirm vollkommen identisch mit Figur 3 sein muß.
Wenn keine dieser drei Illustrationen auf Ihrem Monitor erscheint, ist Ihr Amiga wahrscheinlich nicht völlig Jahr-2000-fähig. Um herauszufinden, woran das liegt, schauen Sie bitte in Abschnitt 5 dieses Dokuments nach.
Es ist zu bedenken, daß dieses Dokument, so fern es ROM-Betriebssystem und die Amiga Software betrifft, dieses nur Features und/oder Shortcomings des Amiga Betriebssystems abdeckt, welche von Commodore-Amiga, Inc. entwickelt und integriert wurden. Software von Drittfirmen für den Betrieb unter AmigaOS kann sich durchaus anders verhalten, als das OS selbst. Es können Bugs enthalten sein, die das Amiga Betreibssystem nicht aufweist, und anders herum.
timer.devicetimeval genannt wird. In 'C' schaut das wie folgt aus:
struct timeval
{
ULONG tv_secs;
ULONG tv_micro;
};
ULONG bezieht sich in diesem Zusammenhang auf einen nicht beschriebenen 32Bit Wert.
Die Struktur tv_secs enthält die Anzahl der Sekunden, die seit dem AmgaOS-Epoch
vergangen sind. tv_micro bezeichnet die Anzahl der Microsekunden (der 10-6.
Teil einer Sekunde) die seit dem Verstreichen der letzten Sekunde vergangen sind.
timeval-Struktur, welche oben beschrieben wurde. Diese
Variante ist als DateStamp bekannt und sieht wie folgt aus:
struct DateStamp
{
LONG ds_Days;
LONG ds_Minute;
LONG ds_Tick;
};
Hier bezieht sich LONG auf einen beschriebenen 32Bit Wert. ds_Days
enthält die Anzahl der Tage die seit AmigaOS-Epoch vergangen sind (jeder Tag besteht exakt aus
24 Stunden). ds_Minute bezeichnet die Anzahl der Minuten die seit Mitternacht (00:00:00 Uhr) des
vorgegebenen Tags vergangen sind. ds_Tick enthält die Anzahl der "Ticks"
die seit der letzten Minute abgelaufen sind. Eine Minute besteht aus 3.000 "Ticks", d.h.
eine Sekunde hat exakt 50 Ticks.
"Tick" wird oft mit dem "Tick"-Signal verwechselt, welches die Amiga-Hardware,
entweder mittels des Netzteils oder des CustomChipSet, erzeugen kann. Die Frequenz dieser
"Tick"-Signale der Hardware wird durch die Frequenze des Netzteils (50 oder 60 Hz)
bestimmt, oder durch die Jumperstellung auf dem Mainboard (PAL = 50Hz, NTSC = 60Hz). Zwischen den
"Tick"-Signalen der Hardware und den "Tick"-Werten für die
DateStamp-Struktur besteht kein Zusammenhang. Für ds_Tick des
DateStamp sind 50 Ticks immer eine Sekunde, egal welche Frequenz das Netzteil hat, bzw. wie
die Jumper auf dem Mainboard gesetzt sind.
AmigaDOS verwendet DateStamps, um das Datum der Erzeugung von Volumes und Files zu
benennen. Alle Shell-Kommanos folgen dem gleichen Model, d.h. wenn das Systemdatum über den
Shell-Befehl Date gesetzt wird, werden Zeit und Datum im DateStamp-Format
ermittelt.
Amiga-Computer-Modele ohne eingebaute battariegepufferte Uhr sind:
Amiga-Computer-Modele mit battariegepufferter Uhr sind:
Diese beiden Listen erwähnen nicht das CDTV und das CD32, das diese nicht wirklich als Desktop-Computer zählen.
Auf Maschinen ohne battariegepufferter Uhr setzt der Amiga seine Systemzeit nach der Modifikationszeit des Bootlaufwerks. Mit anderen Worten, der Zeitpunkt zu dem das letzte File auf einer Disk modifiziert, bzw. erzeugt wurde, bestimmt die Systemzeit. Das dies zweifelsohne ungenau war, fordert der Amiga Sie nach dem Booten dazu auf, die Systemzeit einzustellen. So wie es unten gezeigt wird.

Figure 4: Das Shell-Fenster fordert auf, das Datum einzustellen.
SetClock brauchten, ist diese Funktion seit AmigaOS 2.0 in das KickStartROM integriert
worden, wodurch das Utility SetClock zumindest Arbeitslos wurde.
Wenn das System beim Start nicht in der Lage ist die Systemzeit zu setzen, wird die Grundeinstellung verwendet. Diese ist der 01.Januar 1978, 00:00:00 Uhr.
SetClock und Date befassen sich mit dem Systemdatum.
Date liest und setzt das aktuelle Systemdatum, während SetClock sich
mit der battariegepufferten Uhr befaßt. Dieser Befehl liest und speichert die aktuelle Zeit.
Date ist wegen seines von Menschen lesbaren Formats in der Grundeinstellung von
besonderem Interesse. Sie können Date aufrufen und werden eine Ausgabe im
folgendem Format erhalten:
19-Sep-98
Wie man sieht, ist die Jahreszahl auf zwei Stellen begrenzt. Auch bei unterschiedlichen Lokalisationen ist das so (z.B. Französich). Zum Glück hät sich die Nummerierung an die folgende Regel:
Um die Systemzeit auf ein Jahr nach 1999 einzustellen, kehren sie die Regel um. D.h. die Eingabe von date 01-jan-01 stellt die Zeit auf den 01.Januar 2001.
Alle Versionen des AmigaDOS-Befehls Date (Version 1.1 bis 37.1) zeigen und verwenden das
gleiche Datenformat. Dieses Verhalten ist in allen Revisionen des Amiga Betreibssystems so. Das selbe
gilt für die beiden anderen Shell-Befehle, die mit dem Datum zu tun haben. Diese sind
SetDate und List. List kann Files und Verzeichnisse auflisten,
die seit einem bestimmten Datum erzeugt/verändert worden sind.

Figure 5: Preferences-Editor der Workbench 1.1
Date, bei dem ein Jahr kleiner als 78 die Jahreszahl in den Bereich von 2000 bis 2077
bringt und alle anderen Einstellungen sich auf den Bereich von 1978 bis 1999 beziehen.
Mit der Einführung von AmigaOS 2.0 wurde der Preferences-Editor für die Zeit in ein
einzelnes Programm mit Namen Time verlagert, wie unten gezeigt:

Figure 6: Preferences-Editor Time der Workbench 2.0
Im AmigaOS-Update 2.1 wurde der Preferences-Editor für die Zeit überarbeitet, wie man unten sehen kann:

Figure 7: Preferences-Editor Time der Workbench 2.1
Wie bei der vorherigen Version des Preferences-Editor Time, kann das Jahr als vierstellige Zahl eigegeben werden. In diesem Fall ist der Bereich auf die Jahre 1991 bis 2099 begrenzt.
Bitte bedenken Sie, daß nur das Programm
< !--A fix for this problem is provided in this archive. Download it and unpack it,
then read the enclosed
Dieses Verhalten exitstiert in allen Versionen des AmigaOS. Bisher gibt es keinen Fix, doch es wird
danach geforscht, ob dieser Bug durch das Updaten verschiedener AmigaOS-Module
(
Für dieses Problem gibt es bisher keinen Fix.
Ab AmigaOS Version 2.0 aufwärts wird beim Bootvorgang die battariegepufferte Uhr auslesen und die
Systemzeit danach einstellen. Dies geschieht bei jedem Reset. Weil die Jahrezahl nur aus zwei Stellen
besteht, wird der selbe Algorythmus verwendet, wie beim AmigaDOS-Befehl
Für dieses Problem gibt es bisher keinen Fix.
Ein solcher String wird "Versions-Tag" genannt. Das Datum, wie es in den Klammern steht,
besteht aus Tag, Monat und Jahr (genau in dieser Reihenfolge), von dem keine Position mehr als
zwei Stellen enthalten kann. Bei den Versionen 37 und 38 des Befehls
Das oben beschriebene Problem existiert nur bei den Versionen 39.1 und 40.1 des Befehls
< !-- A fix for the date parsing problem in the
Es wurde geraten die Uhrenbattarien jedes Amiga-Mainboards auszutauschen, die mehr als drei Jahre alt
sind. Die Battarien sind kleine, faßförmige Objekte von ca. 18mm Länge und 15mm im
Durchmesser. Sie sehen aus, als würden sie von zwei Klammern gehalten (das sind sie nicht; die
Battarien sind festgelötet) und haben eine blaue oder rote Plastikoberfläche. Die
Oberfläche ist häfig mit dem Namen des Herstellers (z.B. GP oder Varta) und den
Leistungsdaten der Battarie (3.6V, 60mAh) beschriftet. Auch die Anode ("Pluspol") sollte
klar bezeichnet sein.
Wo ist die Battarie? Schauen sie nach: Die Battarie kann auf den ersten Blick wie ein Kondensator
aussehen. Aber alle sehen aus, wie von zwei Klammern gehalten. Sie ist größer als ein
Kondensator auf dem Mainboard und die Bezeichnungen sollten einheitlich sein. Hier einige Tips
für das Auffinden der Battarie:
Sie sollten sich wirklich darum kümmern, wenn korrosive Salze den Metallkörper der Battarie
bedecken. Solche Battarien sollten so schnell wie möglich ausgetauscht werden.
Versuchen Sie nicht die Battarie selbst auszuwechseln. Sie sollten einen Spezialisten aufsuchen, wie
Ihren nächstes technisches Support-Zentrum für Amiga.
© Copyright 1989-1999 Amiga
5. Die Probleme
Soweit ich heute weiß, steht der Amiga vor vier Datum-Problemen. Zwei werden durch numerischen
überlauf ausgelöst, eines liegt in den Grenzen der Hardware begründet und eines ist
ein echter Bug, der im Jahr 2000 zuschlagen wird.
5.1 SetClock hört im Jahr 2000 auf zu arbeiten
Die Revisionen 1.2 und 1.3 der Amiga Workbench wurden mit dem Programm SetClock
ausgeliefert, welches für das Auslesen der battariegepufferten Uhr beim Start verantwortlich war.
SetClock leidet unter einem Bug, der zu einer Falschberechnung der Zeit aus der
battariegepufferten Uhr - beginnend mit dem Jahr 2000 - führt. Es ist nur für die Jahre 1978
bis 1999 korrekt. Sobald der Jahreszähler auf 00 läft, wird SetClock
glauben es wäre 1978, bis das Jahr 2079 erreicht ist; dann wird SetClock
voraussetzen es wäre 1979 -- was nicht unbedingt eine Verbesserung darstellt.
SetClock auf den Workbenchdisks
von AmigaOS 1.2 und 1.3 dieses Problem haben. Von diesem Probramm wurden verschiedene Versionen
ausgeliefert, alle zwische 4.000 und 7.000 Bytes groß. Um zu erfahren, ob Sie eine
funktionierende Version besitzen, schauen Sie sich die größe des Files an. Ist es kleiner
als 1.000 Bytes, so haben sie wahrscheinlich eine funktionierende Version (und nicht eine der
älteren Versionen). Ist Ihr SetClock-Befehl größer als 4.000 Bytes,
haben sie wahrscheinlich eine fehlerhafte Version. Dennoch ist die Größe nicht alles.
Einige Hardware-Erweiterungen von Drittfirmen verwenden ihre eigene Version von
SetClock. Diese tragen den selben Namen, lesen die Systemzeit aber aus einer anderen
Hardware. Tauschen Sie diese Custom-Versionen nicht aus. Wenn Ihre Echtzeituhr Teil eines
Mouse- oder Keyboardanschlusses ist, verwenden sie wahrscheinlich eine solche Custom-Version.
SetClock_ReadMe file. --! >
5.2 Negative Zeit
Wie bereits oben ausgeführt, mißt der Amiga die Zeit in Sekunden. Was andeutet, daß
die Anzahl der berechneten Sekunden bis zum 19. Januar 2046 um 03:14:07 Uhr die maximale Zahl ergeben
wird, die eine 32Bit-Integerzahl annehmen kann. Für das für die Zeit zuständige Modul
(timer.device) ist das kein Problem. Applikationen jedoch, und andere Komponenten des
Betriebssystems, die die Anzahl der Sekunden als beschriebenen Wert behandeln, werden eine Sekunde
später in Schwierigkeiten sein; die Zahl der Sekunden wird auf 2.147.483.648 anwachsen, was im
zweiten Ergäzungsform die Negativzahl -2.147.483.648 darstellt. AmigaDOS, welches Zeit immer
als bezeichneten Wert behandelt, wird annehmen dieses Datum sei falsch, da "negativ".
Schlimmer, die Datumskonversionsroutinen des ROMs legen einen Bug an den Tag, der bei einem Datum nach
dem 19 Januar 2046, 03:14:07 alle folgenden Datumsoperationen fehlerhaft werden läßt. Der
unmittelbare Effekt daraus kann sein, daß alle Berechnungen des Datums für mehr als zwei
Jahre ausfallen.
locale.library, dos.library) behoben werden kann. Dieser Bug ist im grunde
"nur" die Folge davon, einen nicht beschriebenen Wert als beschrieben zu behandeln.
5.3 Zeitüberlauf
Eine nicht beschriebene 32Bit-Integer kann maximal den Wert von 4.294.967.295 annehmen. Wenn der
Amiga diese vielen Sekunden berechnet hat, schreibt man den 7. Februar 2114, 06:28:15 Uhr. Eine
Sekunde darauf wird der Sekundenzäler überlaufen und bei 0 wieder anfangen. Mit anderen
Worten, am 7. Februar 2114 um 06:28:16 Uhr wird der Amiga glauben, es sei der 01. Januar 1978,
Mitternacht.
5.4 Die battariegepufferte Uhr kann nur bis 99 zählen
Amigas die mit battariegepufferten Echtzeituhren ausgestattet sind, verwenden eine von zwei
verschiedenen Ausführungen. Entweder den Oki MSM6242RS (A500, A2000), oder den Ricoh RP5C01
(A3000, A1200, A4000) Chip. Wie bei Uhrenchips dieser Art üblich, ist der Jahrezähler als
zweistellige BCD-Nummer integriert. Wird des Jahr 99 erreicht, läft der Zähler über
und beginnt wieder bei 00.
Date. Daraus
folgt, daß das Amiga-System-Datum beim Startup immer im Bereich von 1978 bis 2077 liegen wird.
So lange bis die Uhr über den 31. Dezember 2077 tickt. Dann wird ein Reset den 01. Januar 1978
als Datum setzen.
6. Andere Hindernisse
Der folgende Bereich umfaßt Themen, die sich in anderem Zusammenhang mit der Zeitverwaltung
befassen, als dies bisher besprochen wurde.
6.1 In einem Versions-Tag hat ein Jahr nur zwei Stellen
Der AmigaDOS-Befehl Version (der mit AmigaOS 2.0 vorgestellt wurde) kann Versions-,
Revisionsnummern und Erstellungsdatum jedes Files anzeigen, die einen String wie den folgenden
enthalten:
$VER: version 40.1 (9.2.93)
Version welche den String
entpackten und wortgereu ausgaben,
war das kein so großes Problem. Beginnend mit
Version 39 jedoch, wurde das Datum unter Verwendung der eingestellten Lokalisation entpackt und
ausgegeben. Der hier verwendete Konvertierungsprozess hat einen Hauptfehler in der Form, daß
immer die Jahreszahl genommen, 1900 addiert und das Ergebnis ausgegeben wird. Das enstpricht nicht
der Art, wie der Befehl Date Jahreszahlen jenseits von 99 behandelt. Um das Jahr 2000 richtig
auszugeben, müßte das Jahr als 100 in einem Versions-Tag erscheinen (was garantiert einige
Verwirrung stiften würde).
Version. Um herauszufinden welche Version des Befehls sie haben, öffnen Sie eine
Shell und geben Sie folgenden Befehl ein:
version c:version full
Version program is provided
in this archive. Download it and unpack it,
then read the enclosed Version_ReadMe file. --! >
6.2 Undichte Uhrenbattarien
Eine Battarie liefert die notwendige Energie, um die Hardware der battariegepufferten Uhr auch bei
ausgeschaltetem Amiga zu betreiben. Diese Battarien altern. Einige müssen jetzt schon mehr als 10
Jahre alt sein. Alte Battarien können undicht werden und Säre verlieren, was zu
großen
Schäden am Motherboard des Amiga führt. Oft bleiben undichte Battarien unbemerkt, bis
kritische Teile der Amiga-Hardware zu versagen beginnen. Mit Sicherheit wird es bereits zu spät
sein, wenn Sie das bemerken...
Übersetzer dieses Artikels:
< !-- hier Name und EMail des Übersetzers einfügen --! >
Martina Jacobs 08.06.1999
AIDA Inhaltsverzeichnis
zurück zum Amiga-Club
Webmaster 15.03.2001
URL dieser Seite: http://www.amiga-club.de/aida/archiv99/0039.html