Dokumentation fr cty2k.zip
(cty2ktst.com, cty2kfix.com, cty2k.doc) 

Inhalt

     1. Vorwort 
     2. cty2ktst 

         1. bersicht 
         2. Benutzung 
         3. Beispiele 
         4. Risiken 
         5. Konsequenz 
         6. Optionen 
         7. Hinweise 
         8. Interna 

     3. cty2kfix 
     4. Lizenz 

Vorwort

    Das cty2k.zip-Paket enthlt zur Zeit zwei Programme, cty2ktst und
    cty2kfix, die zum Testen von PCs auf ihre Jahr-2000-Tauglichkeit und
    zum Beheben einiger dabei auftretender Probleme dienen. Es geht dabei
    nur um die rudimentre Fhigkeit der Hardware. Probleme in Anwendungen
    und Datenbestnden kann die Software weder aufspren noch beheben. 

    Die Verfahren, derer sich diese beiden Programme bedienen, haben wir
    nach bestem Wissen und Gewissen ausgewhlt. Sie spiegeln unseren
    derzeitigen Erkenntnisstand in bezug auf PC-Hardware und das Jahr 2000
    wider. Die Programme treffen keine Aussage darber, da ein PC mit
    aller Hard- und Software tatschlich "Jahr-2000-fest" ist. 

    Trotz aller Sorgfalt, knnen wir weder eine Garantie dafr bernehmen,
    da diese Programme alle erdenklichen Fehler aufspren und beseitigen,
    noch fehlerfreie Funktion in allen Fllen zusichern. Zur Prvention
    weisen wir daraufhin, da es wichtig ist, Sicherheitskopien seiner
    Daten vorher (!) anzufertigen. 

    Die Motivation, diese Programme trotz des groen Angebots zu erstellen,
    lag vor allem darin, die genauen Zusammenhnge zu erkunden und die
    Funktionsweise zu kontrollieren. Neben dem reinen Funktionstest war uns
    wichtig zu vermitteln, an welchen Stellen es bei einem PC klemmt. 

    Deshalb: Sollten uns neue Erkenntnisse vorliegen, die eine Anpassung
    der Programme erfordern, so werden wir diese nach Mglichkeit umsetzen.
    Anregungen dazu und Kritik sind jederzeit willkommen (am besten via
    EMail an cty2k@ct.heise.de). Aktuelle Informationen, sofern sich
    Abweichungen ergeben, werden wir auf der cty2k-Homepage
    verffentlichen: 

    www.heise.de/ct/Redaktion/ps/cty2k.html 

cty2ktst: bersicht

    cty2ktst stellt das eigentliche Testwerkzeug dar. Es arbeitet wahlweise
    unter DOS, kommt aber auch ohne aus. Ein Einsatz unter Windows ergibt
    keinen Sinn. Das Verfahren, das cty2ktst benutzt, ist in beiden Fllen
    identisch. Folgende vier Stufen des Tests werden, je nachdem, wie
    einzelne Tests abschliessen, maximal durchlaufen. 

    Zuerst stellt cty2ktst die Systemuhr eines PCs kurz vor den Wechsel auf
    das Jahr 2000. Es wartet einen kurzen Moment und prft dann, wie die
    Hardware und das BIOS reagieren. Auf modernen PCs, die bei der
    Umstellung keine Probleme erwarten lassen, gengt dieser Test (im
    folgenden BIOS-Test genannt). 

    Seit der Version 1.3 berprft cty2ktst zustzlich, ob das BIOS einen
    aktiven Korrekturversuch unternimmt. Einige moderne PCs bringen einen
    Korrekturmechanismus mit, der permanent lauert, ob das Jahr 2000
    begonnen hat und dann erst eingreift. ber diese Art der Lsung lt
    sich streiten; spter mehr dazu. Sie heit im folgenden BIOS-Test-2. 

    Viele ltere, aber auch brandaktuelle PCs meistern weder den ersten
    noch den zweiten Testschritt. cty2ktst lst in einem solchen Fall einen
    Hardware-Reset aus. Ein zweiter Start des Programmes liefert Aufschlu,
    ob das BIOS des Systems den bergang ins Jahr 2000 jetzt bemerkt und
    korrigiert hat. Moderne PCs meistern sptestens diesen Test
    (POST-Test). 

    Auf alten PCs ist oft noch ein vierter Testdurchgang ntig; cty2ktst
    lst dazu erneut einen Reset aus. Beim dritten Programmstart (vierten
    Testschritt) schlielich zeigt sich, ob ein PC grundstzlich im Jahr
    2000 arbeitsfhig bleibt, etwa wenn man die Systemuhr einmal von Hand
    umstellt (Systeme mit Award-BIOS aus den Jahren 94 bis 96 knnen das
    unter Umstnden nicht). Ein Groteil der alten PCs hat hierbei aber
    keine Probleme (Fix-Test). 

    Bevor cty2ktst einen Reset auslst, legt es eine zehn Sekunden lange
    Pause ein, so da die Mglichkeit besteht, das System fr diesen
    Schritt auch abzuschalten. Nur beim zweiten Testschritt, der ebenfalls
    eine Wartezeit von fnf Sekunden beinhaltet und auf eine permanent
    lauernde Korrekturfunktion des BIOS testet, darf das System nicht
    abgeschaltet werden. Unserer Erkenntnis nach, ist das Abschalten vor
    dem Reset aber nicht erforderlich. Nach Abschlu der Tests stellt
    cty2ktst die Einstellung der Real Time Clock (RTC) wieder her,
    restauriert also Datum und Uhrzeit; eine geringe Abweichung ist aber
    nicht auszuschlieen. Sollte das Restaurieren nicht klappen, gibt das
    Programm eine entsprechende Warnmeldung aus. 

cty2ktst: Benutzung

    cty2ktst luft sowohl unter DOS als auch eigenstndig ohne Hilfe eines
    Betriebssystems, indem es sich selbst auf eine formatierte Diskette
    vervielfltigt und von dort ber einen eigenen Boot-Loader startet. Die
    Vervielfltigungsfunktion arbeitet unter (MS/DR/Caldera/PC-)DOS,
    Windows 3.1, 95, 98 und NT, Linux (mit dosemu) sowie OS/2 ab 2.x. Sie
    lt sich durch einen speziellen Parameter auswhlen, den man dem
    Programm beim Aufruf mitgibt (siehe Optionen). 

    Der Einsatz des Programms ber die produzierte Diskette hat zwei
    Vorteile: Erstens ist der Test wesentlich schneller absolviert, als
    wenn noch ein Betriebssystem involviert wre. Und zweitens mu man
    nicht erst ein eventuell gar nicht vorhandes Betriebssystem
    herbeischaffen. Es mag ein Nachteil sein, da die Disketten-Variante
    natrlich kein nachtrglich lesbares Protokoll anfertigt, sondern das
    Ergebnis nur auf dem Bildschirm zeigt. Die Ausgaben der DOS-Variante
    lassen sich dagegen mit der Ausgabeumleitung in einer Datei
    protokollieren. 

    Beide Versionen brauchen Schreibzugriff auf den Datentrger, von dem
    aus sie gestartet wurden. (cty2ktst speichert dort seine Laufzeitdaten
    und sichert dort auch die beim Erstaufruf angegebenen Optionen.) Das
    heit, die Boot-Diskette darf nicht schreibgeschtzt sein. Die unter
    DOS laufende Version schreibt ihre Daten in eine temporre Datei im
    aktuellen Verzeichnis des aktuellen Laufwerks. Diese Datei wird bei
    Testende automatisch gelscht. 

    Fr den Einsatz der DOS-Version empfiehlt es sich, eine ansonsten
    nackte Boot-Diskette oder spezielle Bootkonfiguration anzufertigen, da
    unter Umstnden mehrere Durchlufe notwendig sind. Es sollte in jedem
    Fall sichergestellt sein, da keine andere Software auf die Real Time
    Clock (RTC) zugreift. Auch andere DOS-Helferlein sind zu meiden, etwa
    Speichermanager  la EMM386, da sie unter Umstnden das Auslsen eines
    Reset verhindern (siehe Optionen). 

cty2ktst: Beispiele

    Das Benuzten von cty2ktst ist einfach. Unter DOS sollte sichergestellt
    sein, da das Programm automatisch wieder startet, wenn es einen Reset
    ausgelst hat. Das lt sich zum Beispiel bewerkstelligen, indem man
    den Programmaufruf als erstes Kommando in die autoexec.bat-Datei einer
    Test-DOS-Bootdiskette aufnimmt. 

    cty2ktst stellt selbstndig fest, ob ein weiterer Programmlauf
    notwendig ist. Hat es das Testende erreich, setzt es die weitere
    Ausfhrung etwa einer autoexec.bat-Datei fort. (Die eigenstndig via
    Boot-Diskette laufende Version hingegen fordert zur Entnahme der
    Diskette zum Drcken einer Taste auf und lst dann einen Reset aus.) 

    Die Ausgaben, die die DOS-Version ttigt, lassen sich ber die
    Ein-/Ausgabeumlenkung in eine Datei protokollieren. Je nachdem an
    welchen Informationen Sie interessiert sind, mssen Sie dazu ein oder
    mehrere Umlenkzeichen verwenden (eines sorgt dafr, da die Datei neu
    erzeugt wird, zwei hngen die Ausgaben Lauf fr Lauf aneinander: also
    "cty2ktst > test.log" oder "cty2ktst >> test.log". Alle hier
    wiedergegebenen Ausgaben des Programms sind zum Beispiel so entstanden. 

    Whrend des Testens gibt cty2ktst Informationen, was es gerade tut und
    wie einzelne Tests ausgegangen sind. Anschlieend an den letzten
    Testlauf liefert es eine Zusammenfassung der wichtigen Ergebnisse
    (Ausgaben). Die Zusammenfassung allein gengt, um ein System zu
    beurteilen. Auf einem System, dessen BIOS geeignete
    Korrekturmechanismen aufweist, ergibt sich nach dem Aufruf von cty2ktst
    folgende Ausgabe: 

      cty2ktst 1.00, (C) c't/ps
      Programm zum Testen der Jahr-2000-Vertraeglichkeit der PC-Hardware

      Test, wie RTC/BIOS den Uebergang von 1999 auf 2000 meistern
      RTC-klassisch, CMOS-Jahrhundertbyte nicht korrigiert (=19)
      01.01.2000 BIOS korrigiert Jahrhundert - System ist Jahr-2000-fest
      RTC-klassisch, CMOS-Jahrhundertbyte korrigiert (=20)

      Zusammenfassung:
      BIOS korrigiert Jahrhundert - System ist Jahr-2000-fest

    Bevor das Programm an der BIOS-Schnittstellte prft, ob ein System den
    bergang ins Jahr 2000 sauber vollzieht, liest es zuerst das
    Jahrhundertbyte im CMOS-RAM aus. Systeme, die einen modernen
    RTC-Baustein aufweisen, schaffen den bergang ins Jahr 2000 ganz ohne
    BIOS-Hilfe. Sie sind aber auch noch heute eher rar. Die Masse der PCs
    schafft das nicht ohne das BIOS. Erst der von cty2ktst anschlieend
    eingesetzte BIOS-Aufruf erledigt das gemeinhin. cty2ktst wiederholt
    deshalb den direkten Zugriff auf das Jahrundertbyte im Anschlu an den
    BIOS-Aufruf. (In den zuvor angegebenen Beispielausgaben handelt es sich
    um ein solches System: Das Jahrhundertbyte wird erst angepat, wenn das
    BIOS nach dem aktuellen Datum gefragt wurde.) 

    Auf einem System, das im BIOS keinen Korrekturcode enthlt, sind bis zu
    drei weitere Tests erforderlich: 

      cty2ktst 1.00, (C) c't/ps
      Programm zum Testen der Jahr-2000-Vertraeglichkeit der PC-Hardware

      Test, wie RTC/BIOS den Uebergang von 1999 auf 2000 meistern
      RTC-klassisch, CMOS-Jahrhundertbyte nicht korrigiert (=19)
      01.01.1900 BIOS korrigiert Jahrhundert nicht
      RTC-klassisch, CMOS-Jahrhundertbyte nicht korrigiert (=19)
      Reset-/Abschalt-Test erforderlich ... noch 9 Sekunden

    Im ersten Durchlauf bemerkt cty2ktst, da der BIOS-Code den berlauf
    der RTC nicht honoriert. Zur Sicherheit (obwohl praktisch wohl nicht
    vorkommend) gibt es auch hier ein zweites Mal die Information im
    CMOS-Jahrhundertbyte preis und startet anschlieend das System neu. 

    Bei einigen BIOS-Versionen, die aktiven Korrekturcode enthalten (also
    eine permanente berwachung fr den Jahreswechsel von 00 auf 99) konnte
    man hier bei der zweiten Ausgabe des CMOS-Jahrhundertbyte sehen, da
    etwas passiert war. Es stand in der Meldung dann schon auf "20". Leider
    hat die Version 1.00 das nicht mehr erfasst, sondern erst im nchsten
    Testschritt die Umstellung bemerkt - dadurch wurde das System
    grundstzlich zwar richtig beurteilt, aber zu spt. 

    Mit der Version 1.3 prft cty2ktst speziell auf diesen Korrekturcode:
    Whrend der eigentlichen Umstellung auf das Jahr 2000 schaltet das
    Programm bestimmte Interrupt-Quellen ab. Erst wenn der Uebergang
    vollzogen und das Jahrhundertbyte freigegeben ist, erlaubt es sie
    wieder. In einer 5 Sekunden langen Pause gibt es dem BIOS Gelegenheit
    das Jahrhundertbyte anzupassen. 

      cty2ktst 1.3, (C) c't/ps                                                        
      Programm zum Testen der Jahr-2000-Vertraeglichkeit der PC-Hardware              
                                                                                    
      Test, wie RTC/BIOS den Uebergang von 1999 auf 2000 meistern                     
      RTC-klassisch, CMOS-Jahrhundertbyte nicht korrigiert (=19)                      
      01.01.1900 BIOS korrigiert Jahrhundert nicht im ersten Durchlauf                
      CMOS-Jahrhundertbyte erst nachtraeglich vom BIOS manipuliert (=20)              
      BIOS korrigiert Jahrhundert verpaetet. System ist bedingt Jahr-2000-fest        
                                                                                    
      Zusammenfassung:                                                                
      BIOS korrigiert Jahrhundert nicht im ersten Durchlauf                           
      BIOS korrigiert Jahrhundert verpaetet. System ist bedingt Jahr-2000-fest        

    Das Wort "verspaetet" bringt nur die Testabfolge zum Ausdruck. Es
    stellt keineswegs eine Bewertung darber dar, da Korrekturen zu spt
    ausgefhrt werden. ber die Jahr-2000-Festigkeit eines solchen PCs lt
    sich indes streiten. Da das fr den Testablauf nicht relevant ist,
    diskutiert ein spterer Abschnitt diese Korrekturmanahme fr das Jahr
    2000. 

    Der aktive Korrekturcode stellt ebenso wie eine (super-)moderne RTC
    eher die Ausnahme bei heutigen PCs dar. Da beides allerdings unter
    Umstnden die Testaussagen verflscht oder sogar dazu fhrt, da
    unterschiedliche Test-Werkzeuge zu unterschiedlichen Ergebnissen
    kommen, widmet die Version 1.3 diesem Fall Aufmerksamkeit. Wenn ein
    System weder eine moderne RTC mitbringt noch BIOS-Korrekturcode,
    berprft das Programm, ob eventuell aktiver Korrekturcode vorhanden
    ist. Falls nicht meldet es das entsprechend: 

      cty2ktst 1.3, (C) c't/ps                                                        
      Programm zum Testen der Jahr-2000-Vertraeglichkeit der PC-Hardware              
                                                                                    
      Test, wie RTC/BIOS den Uebergang von 1999 auf 2000 meistern                     
      RTC-klassisch, CMOS-Jahrhundertbyte nicht korrigiert (=19)                      
      01.01.1900 BIOS korrigiert Jahrhundert nicht im ersten Durchlauf                
      RTC-klassisch, CMOS-Jahrhundertbyte nicht korrigiert (=19)                      
      Keine Softwarekorrektur festgestellt, die Jahrhundertbyte aendert               
      Reset-/Abschalt-Test erforderlich ... noch 9 Sekunden

    Bei einigen unserer Testsysteme kommt cty2ktst im nchsten Schritt (dem
    POST-Test) zum Ende. Sie korrigieren den Wechsel aufs Jahr 2000 zwar
    nicht in der BIOS-Routine zum Auslesen der RTC, sehrwohl aber whrend
    des Selbsttests (POST): 

      cty2ktst 1.3, (C) c't/ps
      Programm zum Testen der Jahr-2000-Vertraeglichkeit der PC-Hardware

      RTC-klassisch, CMOS-Jahrhundertbyte vom BIOS korrigiert (=20)
      01.01.2000 BIOS korrigiert Jahrhundert im POST - System ist Jahr-2000-fest

      Zusammenfassung:
      BIOS korrigiert Jahrhundert nicht im ersten Durchlauf
      BIOS korrigiert Jahrhundert im POST - System ist Jahr-2000-fest

    ltere Systeme bewltigen die Umstellung aufs Jahr 2000 aber gar nicht
    von allein. Sie sind manuell am 1.1.2000 oder spter umzustellen. Nicht
    in jedem Fall klappt das. Deswegen stellt cty2ktst via BIOS-Routine das
    Datum auf einen Tag im Jahr 2000 ein und simuliert so die selbst bei
    wirklich alten 286ern mgliche manuelle Datumskorrektur: 

      cty2ktst 1.00, (C) c't/ps
      Programm zum Testen der Jahr-2000-Vertraeglichkeit der PC-Hardware

      RTC-klassisch, CMOS-Jahrhundertbyte vom BIOS korrigiert (=20)
      25.03.2000 BIOS erlaubt und behaelt einmalige manuelle Korrektur

      Zusammenfassung:
      BIOS korrigiert Jahrhundert nicht
      BIOS korrigiert Jahrhundert auch nicht im POST
      BIOS erlaubt und behaelt einmalige manuelle Korrektur

    Fazit: Dieses System erfordert eine einmalige Umstellung im Jahr 2000.
    Es gibt keine Anzeichen dafr, da es diese Korrektur vergit oder das
    manuell erfate Datum eigenmchtig verndert. Je nachdem, was fr ein
    Betriebssystem auf dem PC luft, mu man diese Korrektur nicht einmal
    von Hand durchfhren: Manches Betriebssystem erledigt sie von sich aus.
    Andere brauchen die Korrektur nicht. Sollte die Korrektur ntig sein,
    kann sie cty2kfix automatisch bernehmen. 

    Leider kann es auch anders kommen: 

      cty2ktst 1.00, (C) c't/ps
      Programm zum Testen der Jahr-2000-Vertraeglichkeit der PC-Hardware

      RTC-klassisch, CMOS-Jahrhundertbyte vom BIOS korrigiert (=20)
      25.03.2096 BIOS erlaubt keine manuelle Korrektur (Award-Bug!)

      Zusammenfassung:
      BIOS korrigiert Jahrhundert nicht
      BIOS korrigiert Jahrhundert auch nicht im POST
      BIOS erlaubt keine manuelle Korrektur (Award-Bug!)

    Wer eine solche Meldung bekommt, hat Pech. Das Testsystem hat
    wahrscheinlich ein Award-BIOS aus der Zeit von 94 bis 96. Diese
    Versionen stolpern ber ein korrekt eingestelltes Datum im Jahr 2000.
    Das BIOS toleriert als Jahrensangaben nur 1996 (manche auch 1994) bis
    1999. Sie korrigieren das Jahrzehnt immer auf einen Startwert, egal, ob
    das Jahrundert auf 19 oder 20 gestellt ist. Ein BIOS-Update ist fllig.
    Ist das nicht zu bekommen, hilft cty2kfix. 

    Die Datumsangaben, die cty2ktst in den obigen Beispielen ausgibt (etwa
    beim letzten Test den 25.03.2000) dienen der Sichtkontrolle. Da wir
    nicht jede potentielle BIOS-Macke aller Prflinge im Vorfeld kennen
    (wir gehen jedenfalls davon aus), erleichtern diese Ausgaben das
    Eingrenzen eventueller bis jetzt unbekannter Fehler. cty2ktst ttigt
    diese Ausgaben nur, wenn es mit der Option /v gestartet respektive die
    Bootdiskette damit produziert wird. 

    Egal, ob Sie cty2ktst unter DOS oder die eigenstndig lauffhige
    Version benutzen, bleiben die Ausgaben die gleichen. Mit einer
    Ausnahme: Wird als Testgrundlage ein "modernes" DOS (etwa aus Windows
    98) verwendet, kommt der Test bereits im zweiten Schritt zum Abschlu.
    cty2ktst attestiert dem BIOS-POST-Code dann, da er das System korrekt
    umstellt (tatschlich tut das aber der Start-Code der jeweiligen
    DOS-Version). 

    Leider lassen sich die MSDOS-Versionen, die diesen Code enthalten und
    die brigen, nicht mit vertretbarem Aufwand unterscheiden, so da die
    DOS-Warnmeldung, die cty2ktst unter Umstnden ausgibt, nicht
    zwangslufig richtig sein mu. Kurzum: Wer tatschlich den Fhigkeiten
    seines PCs auf den Zahn fhlen will, nimmt entweder ein altes DOS
    (kleiner 7) oder die cty2ktst-Bootdiskette. 

    Eine Reihe weiterer Meldungen zeigen wir an dieser Stelle nicht. Sie
    sind weitgehend selbsterklrend und knnen zum Beispiel auftreten, wenn
    die Testdiskette schreibgeschtzt ist (cty2ktst braucht zum Erkennen
    der Testschritte und zum Merken der Ergebnisse Schreibzugriff auf das
    aktuelle DOS-Laufwerk und -Verzeichnis respektive seine Testdiskette). 

cty2ktst: Risiken

    Das Risiko beim Einsatz von cty2ktst ist nach unserer Erfahrung gering.
    Dennoch wollen wir die durch einen Leser gemachte Erfahrung nicht
    verschweigen: Ein lteres System (auf 80386-Basis) erzeugte nach dem
    Umstellen auf das Jahr 2000 (unter DOS) laufend NMIs (nicht maskierbare
    Interruptanforderungen). Dieser Effekt lie sich nur abstellen, indem
    man den Inhalt des CMOS-RAMs zurcksetzte. Vermutlich handelt es sich
    dabei um einen Fehler im BIOS, der beim Zugriff auf die Register der
    RTC die NMI-Maske verndert. Eine hieb- und stichfeste Erklrung steht
    aber noch aus. 

    In der Version 1.3 sind alle Zugriffe auf das CMOS-RAM (auf die
    RTC-Register selbst greift cty2ktst ohnehin nicht zu) durch das Sperren
    von Interrupts geschtzt. Dieser eigentlich selbstverstndliche
    Handgriff fehlte in der Version 1.00 leider. Es ist mglich, da der
    zuvor geschilderte Fehler damit in Zusammenhang stand. Das allerdings
    wre zumindest beim Einsatz der Bootdiskette sehr bedenklich. Denn
    warum sollten parallele Zugriff auf die CMOS-Register stattfinden,
    whrend der Test luft. 

cty2ktst: Konsequenz

    Aus den Ergebnissen der von cty2ktst unternommenen Tests lassen sich
    folgende Handlungsanweisungen ableiten: Besteht ein PC den ersten,
    zweiten oder dritten Test, mu man nichts weiter tun (BIOS-, BIOS-1-
    oder POST-Test). Klappt es erst im vierten Testschritt, so mu das
    Datum und gegebenenfalls die Uhrzeit beim ersten Einschalten im Jahr
    2000 einmalig korrigiert werden. Das gilt aber nur, wenn Sie ein
    Betriebssystem einsetzen, das auf das BIOS zugreift (siehe Tabelle
    unter Interna). 

    Die einmalige Korrektur kann man sich sparen, wenn das Betriebssystem
    ohnehin nur auf die RTC zugreift (etwa Linux). Unterbleiben kann sie
    auch, wenn auf dem PC Windows 98, das aktuelle Caldera OpenDOS und IBMs
    PC-DOS 2000 laufen. Diese DOS-Versionen beinhalten Korrekturcode, der
    den Eingriff bernimmt. Fr ltere DOS-Versionen kann cty2kfix helfen;
    es fhrt diese Korrektur, wenn es in der autoexec.bat beim Rechnerstart
    aufgerufen wird, zur rechten Zeit automatisch aus. 

    Fllt ein System beim letzten Test durch, gibt es zwei Mglichkeiten:
    Entweder Sie entschlieen sich, die Systemuhr mit Beginn des Jahres
    2000 asynchron zur tatschlichen Zeit laufen zu lassen (cty2kfix hilft
    dabei) oder bemhen sich um ein BIOS-Update, das, sofern verfgbar, mit
    ziemlicher Sicherheit diesen BIOS-Fehler behebt. Da dieser Fehler nur
    im Zusammenhang mit bestimmten Versionen des Award-BIOS erwhnt wird,
    haben wir ihn so getauft. 

    Was sich angesichts der Vielfalt des PC-Marktes nicht ausschlieen
    lt, ist, da die Tests auf eine andere Merkwrdigkeit stoen. Wir
    haben durch Plausibilittstests dafr gesorgt, da solche Ausnahmen
    erkannt und gemeldet werden. In solchen Fllen sind wir gern bereit,
    das Problem zu untersuchen. Um uns das zu vereinfachen, mchten wir Sie
    darum bitten, das Protokoll eines Durchlaufs mit der Option "/v"
    mitzuliefern (siehe Option). 

cty2ktst: Optionen

    /i      erzeugt eine direkt bootfhige Version des Programms auf einer
            formatierten leeren Diskette in Laufwerk A: (mit Rckfrage) 
    /s      zeigt den aktuellen Zustand der RTC via BIOS-Funktion an (kann
            hilfreich sein, wenn man mit cty2ktst allein nicht zum Ziel
            kommt, aber neutrale Auskunft ber den RTC-Zustand braucht) 
    /v      sorgt dafr, da whrend des Testens der jeweilige Zustand der
            RTC (darin gespeichertes Datum) angezeigt wird 
    /e      veranlat die DOS-Variante zum Start, obwohl der Prozessor
            nicht im Real Mode luft. Das kann schiefgehen, je nachdem,
            warum der Prozessor in dieser Betriebsart ist. Das kann erstens
            bei Speichermanagern (etwa EMM386 in der config.sys) oder
            zweitens in einer DOS-Emulation (NT-DOS-Box, Linux Dosemu) der
            Fall sein. Mit der Option /e lt sich diese Modus-Erkennung
            abschalten. Doch Vorsicht: Es knnte dann sein, da mit der
            Emulation auch das Gastsystem stirbt! Nach unseren Erfahrungen
            macht auch mancher Speichermanager rger, beim Versuch das
            System via Software zum Reset zu bewegen. Deshalb im
            Zweifelsfall ohne EMM386 etc. testen! 
    /p      erzwingt selbst nach erfolgreichem BIOS-Test, da das System
            einen Reset durchfhrt (reiner Sicherheitstest, fr dessen
            Ntzlichkeit kein Beweis existiert - fr Paranoiker) 

    (Es gengt, die Optionen /vep beim ersten Aufruf anzugeben, sie wirken
    auf die folgenden Lufe bis zum Testabschluss; die Optionen /vp wirken
    auf eine via /i erzeugte Boot-Diskette; die Reihenfolge spielt keine
    Rolle; der Slash "/" kann entfallen; Leerzeichen und Tab(s) werden
    berlesen; alle anderen Zeichen liefern eine kurze Hilfestellung). 

cty2ktst: Hinweise

    Testwerkzeug fr PCs ist eigentlich falsch: Erst mit dem AT hat sich
    eine Real Time Clock (RTC) durchgesetzt. Entsprechend funktionieren
    sowohl cty2ktst als auch cty2kfix erst auf AT-kompatiblen 286ern und
    Nachfolgern (bis hin zu topaktuellen PCs). 

    NT berprft vor dem Beschreiben einer Diskette, ob es den Medien-Typ
    kennt. Es liest dazu den Boot-Sektor einer Diskette ein. Da cty2ktst
    keinen regulren Boot-Sektor schreibt, meldet NT beim Versuch, eine
    nicht (FAT-vor-)formatierte Diskette zu beschreiben, einen Fehler und
    beendet cty2ktst. Als Abhilfe gengt es, die Diskette unter NT erneut
    zu formatieren. 

    Linux scheint mitunter ebenfalls Schwierigkeiten zu haben, aus dosemu
    heraus eine ct2yktst-Boot-Diskette zu erzeugen. Das hngt offenbar
    damit zusammen, da manche Linux-Installation den Treiber fr Zugriffe
    aufs Diskettenlaufwerk dynamisch (via kerneld) ldt. Der erste
    Schreibversuch geht dadurch schief. Im zweiten Anlauf (oder mit
    statisch geladenem oder in den Kernel eingebundenen floppy-Moddul)
    klappt es beim ersten Versuch. 

    Soll cty2ktst Systeme untersuchen, die Netzwerk-Client-Software laufen
    lassen, so ist Vorsicht angebracht, wie diese Software auf die
    Systemuhr wirkt, insbesondere, wenn cty2ktst den Rechner neu starten
    mu. ltere Novell-Client-Software hat sich bei unseren Versuchen als
    extrem hartnckig erwiesen. Zudem sollte man prfen, ob der Einsatz des
    Programms auf Systemen berhaupt Sinn ergibt, die sich ohnehin die Zeit
    von einem Server holen. 

    Das direkte Beschreiben der Boot-Diskette knnte Viren-Wchter auf den
    Plan rufen, da cty2ktst neuen Boot-Code auf der Diskette ablegt. Das
    ist in diesem Fall aber gewnscht. Gegebenenfalls mu man diese
    Wchter-Option vorbergehend abschalten. 

    Der Boot-Code setzt stillschweigend voraus, da der Prfling mindest
    640 KByte Hauptspeicher hat. Ansonsten landet der Boot-Code im Leeren.
    Eine berprfung findet nicht statt. 

    Es gibt diverse Wege, einen PC zu einem Neustart zu bewegen. cty2ktst
    benutzt dazu den Tastatur-Controller. Auf Systemen, die latente
    Restart-Probleme haben (zum Beispiel auch unter Windows), kann das
    versagen; das heit, das System tut nach dem Reset-Countdown nichts.
    Der Test kann durch manuellen Druck auf Reset oder kurzes Aus- und
    Einschalten des PC dann aber fortgesetzt werden. 

cty2ktst: Interna

    Da das Testen der Jahr-2000-Vertrglichkeit kaum eine Geheimsache ist,
    sondern eigentlich eine Trivialitt, die der Allgemeinheit zu Gute
    kommt, wollen wir kein Geheimnis aus unserer Rezeptur machen. cty2ktst
    und cty2kfix bedienen sich keiner undokumentierten Funktionen und
    wenden auch keine besonderen Tricks an: 

    Der Zugriff auf die Real Time Clock (RTC) erfolgt generell ber das
    BIOS, das auch DOS und Windows 3.x bis 9x benutzen. cty2ktst liest
    zustzlich das im CMOS abgelegte Byte aus, das die
    Jahrhundertinformation enthlt. Dieses Auslesen dient nur der
    Plausibilittprfung. 

    Die Version 1.3 verwendet zustzlich zu den Funktionen zum Setzen und
    Lesen von Datum und Uhrzeit eine weitere BIOS-Funktion. Sie dient zum
    Setzen des BIOS-Zeitzhlers. DOS ruft diese Funktion auf, um bei einer
    nderung der Uhrzeit den BIOS-Zeitzhler an die genderten Verhltnisse
    anzupassen. 

    Einige BIOS-Versionen setzen ihren aktiven Korrekturcode genau hier an:
    Luft der BIOS-Tageszhler ber, prfen Sie. ob eventuell das Jahr 2000
    angebrochen ist und aktualisieren das Jahrundertbyte im CMOS-RAM.
    Andere BIOS-Varianten berwachen diese nderungen permanent und sind
    nicht auf den BIOS-Zhler angewiesen. Um den aktiven Korrekturcode in
    jedem Fall zu erkennen, setzt cty2ktst den BIOS-Zhler geeignet. 

    Der aktive Korrekturcode ist nicht gerade eine Errungenschaft: Er
    funktioniert nur, solange ein Betriebssytem den Prozessor im Real Modus
    oder im virtuellen 8086-Modus betreibt. Das heit, nur DOS, Windows 3.1
    und 9x profitieren davon (die Windows Zeitrechnung hngt von DOS ab).
    Andere Betriebssysteme haben von einer solchen Lsung nichts. 

    Zudem ist diese Art der Jahr-2000-Korrektur nicht ganz ungefhrlich:
    Wird ein PC etwa fr Steuerungsaufgaben eingesetzt, kann es passieren,
    da er durch direktes Auslesen der RTC Informationen erhlt, die
    veraltet sind (whrend der Umstellung ins Jahr 2000). Nmlich dann,
    wenn die RTC schon auf 1.1.00 steht, das Jahrhundertbyte im CMOS-RAM
    vom aktiven Korrekturcode noch nicht umgestellt wurde (das ist bei
    gesperrten Interrrupts etwa nicht auszuschlieen). 

    cty2ktst nennt Systeme mit aktivem Korrekturcode deshalb nur "bedingt
    Jahr-2000-fest". Je nach Ausfertigung der Korrektur ist nicht in jedem
    Fall sichergestellt, da das Jahrhundertbyte angepat wird. Andere
    Korrekturmechanismen (etwa ber den Selbsttest oder die BIOS-Funktionen
    zum Auslesen des Datums) greifen zu einem definierten Zeitpunkt
    garantiert. Fr den Groteil der Anwendungsflle gengt das. 

    Das BIOS respektive die Betriebssystemfunktionen sind der bequeme Weg,
    den nicht nur die (Anwendungs-)Programmierer bei Microsoft, sondern
    auch der (vernnftige) Rest der Welt fr den Zugriff auf Zeit- und
    Datumsinformationen whlt. Ein direkter Zugriff auf die RTC ist zwar
    mglich, aber umstndlich, da fr eine zuverlssige Funktion dabei die
    Update-Zyklen der Uhr beachtet werden mssen. 

    Im Gegensatz zu Anwendungen und oben genannten Systemen greift manches
    Betriebssystem direkt auf die RTC zu. Whrend sich das bei den freien
    Betriebssystemen durch einen Blick in die Quelltexte feststellen lt,
    ist das bei kommerziellen Systemen nicht ganz so einfach. Microsoft hat
    das von NT benutze Verfahren inzwischen immerhin offengelegt, nachdem
    ein entsprechendes White Paper fr mehrere Monate vom Web-Server
    verschwunden war. 

    DOS     benutzt die BIOS-Funktionen zum Lesen und Setzen des Datums.
            MS-DOS 7.0 aus Windows 98 enthlt Korrektur-Code, der, wenn das
            BIOS das Jahr 1900 liefert, eine Korrektur auf 2000 vornimmt;
            ebenso verfahren das aktuelle PC-DOS und Calderas OpenDOS. 
    FreeBSD greift unter Umstnden auf das Jahrundertbyte im CMOS zurck.
            Ob es das tut, hngt von den Kompilationsoptionen des Kernels
            ab. 
    Linux   verschafft sich das Datum direkt aus der RTC. Allerdings
            beschreibt das Utility "hwclock" das Jahrhundertbyte im CMOS
            (0x32) 
    OS/2 ab 2.x
            schafft selbst auf Systemen, die keine Jahr-2000-Korrektur im
            BIOS aufweisen, das Daumt richtig einzustellen. Mit welchem
            Verfahren es das sicherstellt, ist uns leider nicht bekannt. 
    Windows 3.1x, 95 und 98
            besorgen sich das Datum beim darunterliegenden DOS; es gelten
            also die dort gemachten Hinweise. 
    Windows NT
            bedient sich laut Microsoft direkt bei der RTC und bewertet das
            Jahrzehnt. Alle Daten kleiner 20 schlgt es den Jahren 2000**ff
            zu. 

cty2kfix

    Der Aufruf von cty2kfix gehrt in die DOS-autoexec.bat-Datei. Beim
    Start liest es das aktuelle Datum via BIOS-Funktion aus. Stt es dabei
    auf eine Jahresangabe kleiner als 1980 (nicht von sich aus
    Jahr-2000-fhiges BIOS), dann korrigiert es das Jahr auf 20xx. Wie man
    sich mit cty2ktst vorher versichern kann, hat sich damit die
    Jahr-2000-Problematik fr den PC selbst erledigt. Der Fix funktioniert
    selbst dann, wenn man den PC erst 2002 das erste Mal wieder
    einschaltet. cty2kfix sollte als eines der ersten Programme in der
    autoexec.bat geladen werden. 

    Darber hinaus erlaubt es cty2kfix, die Systemuhr (RTC) asynchron zur
    tatschlichen Zeit zu betreiben. Das ist fr PCs interessant, die vom
    Award-Bug betroffen sind: Bei Ihnen arbeitet die Uhr nur im Zeitraum
    von 1994/6 bis 1999 korrekt. Nach einer Korrektur auf 2000 meldet der
    PC beim nchsten Einschalten 2094/6. Der Haken: Man mu das Datum (etwa
    im BIOS-Setup) einmal auf 1996 stellen. Frderhin liefert cty2kfix als
    TSR-Programm an der BIOS-Schnittstelle die Jahre 2000 bis 2002. 

    cty2kfix korrigiert als TSR-Programm die DOS-Zeit. Windows 3.1, 95 und
    98 bernehmen diese Zeit, und selbst die Funktion zum ndern des Datums
    funktionieren mit cty2kfix zwischen BIOS und DOS als Zeitvermittler (in
    den dann verschobenen Grenzen von 2000 bis 2002 inklusive). Der
    Versatz, mit dem die Systemuhr luft, betrgt genau vier Jahre, um mit
    den gngigen Schaltjahresregeln in Einklang zu bleiben. 

    Im Jahr 1999 installiert macht sich cty2kfix beim DOS-Start nur mit
    einer Meldung bemerkbar: 

      cty2kfix 1.00, (C) c't/ps
      Programm korrigiert gaengige PC-BIOS-Fehler im Jahr 2000
      Noch nichts zu tun (1999)

    Steht das Datum auf 1996 bis 1998, schaltet sich cty2kfix als
    TSR-Programm zwischen die BIOS-Datums-Funktionen: 

      cty2kfix 1.00, (C) c't/ps
      Programm korrigiert gaengige PC-BIOS-Fehler im Jahr 2000
      Residenter Teil zur Datumskorrektur installiert.
      RTC laeuft um vier Jahre versetzt (2000=1996 ff)

    Der Aufruf der DOS-Datumsfunktionen liefert nach der Installation dann
    statt des im BIOS-Setup eingetragenen Datums 1.1.1996 folgende Angabe: 

      Aktuelles Datum: Sa, 01.01.2000
      Neues Datum (TT.MM.JJ): 

    Die zweite cty2kfix-Funktion liegt darin, Systemen auf die Sprnge zu
    helfen, deren BIOS keinen Korrektur-Code frs Jahr 2000 enthlt.
    Bemerkt es, da das BIOS das Jahr 1900 liefert, korrgiiert es das und
    setzt bei der Gelegenheit auch die DOS-Zeit neu, die zu diesem
    Zeitpunkt dann schon auf den 4.1.1980 zurckgefallen ist. cty2kfix
    erledigt also die auf alten Systemen ntige manuelle Korrektur
    automatisch. Zur Sicherheit fordert es auf, beim nchsten Systemstart
    das Datum zu berprfen (Award-Bug); hat cty2ktst dem PC eine
    funktionierende manuelle Korrektur attestiert, ist dieser Schritt nicht
    ntig. 

      cty2kfix 1.00, (C) c't/ps
      Programm korrigiert gaengige PC-BIOS-Fehler im Jahr 2000
      Einmalige Korrektur des Jahrhunderts via BIOS
      Verifzieren Sie beim naechsten Systemstart das Datum

Lizenz

    (C) Copyright c't 
    Verlag Heinz Heise 
    Autor: Peter Siering 
    Helstorfer Str. 7 
    30625 Hannover 
    Germany 
    Fon +49 511 53 52 - 3 00 
    Fax +49 511 52 52 - 4 17 

    Ohne jedwede Funktionsgarantie zu geben, sind diese Werkzeuge frei. Das
    heit, sie drfen frei weitergegeben werden, solange die
    Copyright-Vermerke und der Originallieferumfang beibehalten werden.
    Eine kommerzielle Nutzung im Sinne des Verkaufs selbst in Teilen ist
    ausdrcklich untersagt. Das Aufbringen auf CD-ROM und andere Medien,
    sofern keine Arbeitskopie, selbst zur kostenlosen Verteilung bedarf des
    schriftlichen Einverstndnisses des Urhebers/Autors. Einer Weitergabe
    in elektronischen Medien (Internet oder Mailboxen) wird explizit
    zugestimmt. Zurckentwickeln (Reverse engineering), Dekompilieren sowie
    Entassemblieren der Software sind nicht ntig; die Quelltexte sind
    unter der Heimat-URL (siehe oben) zu bekommen ;-) 
