Historie a vývoj - rok 2000
Dnes se podíváme, jak budou naše Amigy zvládat onen obávaný přechod na rok
2000. Jednoduše řečeno, Amiga takovými neduhy, jaké známe ze světa PC, netrpí.
Přesto však existují jisté problémy, které s měřením času souvisí.
Na Amize se systémový čas počítá jako počet vteřin, které uběhly od půlnoci dne
1. ledna 1978. O čas se stará zařízení „timer.device“ (právě zde se termín
„zařízení“ chápe v jiném významu, než jsme si dnes uvedli), které si informaci o
počtu vteřin udržuje v 32 bitové proměnné (typ „Unsigned“ čili bez znaménka). S
tímto způsobem počítání času dva problémy souvisí, no ale pojďme na to pěkně po
řadě. Příkazový řádek
Existují dva Shellovské příkazy, které pracují se systémovým datem. Je to
program „SetClock“ a „Date“. „Date“ slouží ke zobrazování a nastavování
systémového času, kdežto „SetClock“ umí systémový čas načíst, či zapsat z/do
vnitřních hodin Amigy.
Když si příkaz „Date“ spustíte, vypíše se vám například „Tuesday 01-Dec-98
18:15:32“. Jak vidíte, letopočet je omezen na dvě číslice, dokonce i když
použijete jinou lokalizaci. Naštěstí zde zakopaný pes není, toto datování se
řídí těmito pravidly:
Pokud je číslo udávající rok větší nebo rovno číslu 78, letopočet spočítáme jako
toto číslo plus 1900.
V opačném případě se k tomuto číslu musí přičíst rok 2000, takže čísla „00“ až
„77“ znamenají roky 2000 až 2077. Grafické rozhraní
Až do Kickstartu 1.3 se čas nastavoval spolu s ostatními vlastnostmi systému
pomocí programu „Preferences“, který měl na datum rovněž jen dvě číslice a
těmito pravidly se řídil.
Se systémem 2.0 se nastavování času přemístilo do samostatného preferenčního
programu. V tom bylo možno zadat datum v rozsahu od roku 1978 do 2113. Tyto meze
byly s příchodem KS 2.1 upraveny na rozmezí 1991 až 2099, kde také zůstaly. Problémy
Nakolik vím, Amiga trpí celkem čtyřmi problémy s datem. Dva jsou způsobeny
numerickým přetečením, za jeden může hardware a jeden problém je opravdový
„bug“, který se v roce 2000 projeví. Negativní čas:
Jak už víte, Amiga počítá čas jako počet vteřin uběhlých od jistého data.
Ačkoliv „timer.device“ uchovává tuto hodnotu jako 32bitové číslo bez znaménka,
AmigaDOS s ním zachází jako by to bylo číslo se znaménkem. Problém tedy nastane
19. ledna 2046 v 03:14:07, kdy počet vteřin dosáhne nejvyšší hodnoty, která se
ještě do 32bitového čísla se znaménkem vejde. Následující vteřinu se pak hodnota
čítače zvýší na 2147483648, což již v klasickém zápisu čísel se znaménkem
znamená hodnotu -2147483648. AmigaDOS, který s tímto časem pracuje jako s
proměnnou se znaménkem, bude považovat tento čas za neplatný. Co víc, rutiny v
ROM obstarávající konverzi dat (ve smyslu „datum“) projeví své mouchy a způsobí,
že všechny operace s datem budou nepřesné, chyba může představovat až dva roky. Přetečení času:
Problém je podobný, jako v předchozím případě, jen časový horizont je
poněkud širší. Dne 7. února 2114 v 06:28:15 se naplní dokonce i bezznaménkový
čítač zařízení „timer.device“ a hned o vteřinu později si bude Amiga myslet, že
je půlnoc 1. ledna 1978. Omezení vnitřních hodin:
Vnitřní zálohované hodiny, které jsou v Amigách používány, si z letopočtu
pamatují taky jen poslední dvě číslice. Omezení data je totéž jako u příkazu
„Date“, takže hodiny si mohou pamatovat rok v rozmezí 1978 až 2077 a při prvním
nabootování roku 2078 se naše Amiga domněle vrátí zpět do počítačové historie
roku 1978. Chyba příkazu SetClock:
Příkaz SetClock, který byl distribuován s Workbenchem 1.2 a 1.3 umí pracovat
pouze s daty 1978 až 1999. V letech 2000 až 2078 si bude SetClock myslet, že je
rok 1978, poté se s úderem roku 2079 rozejde a bude počítat jako by byl rok
1979, což také nebude to pravé. Tento problém vás však nemusí nijak trápit,
protože novější verze SetClock již tuto chybu nemají. Koukněte se na délku
tohoto příkazu (v Shellu zadejte „List C:SetClock“), pokud bude mít méně než
1000 bajtů, je to verze korektní. Nekorektní, staré verze mívají více než 4000
bajtů.
Jak vidíte, s rokem 2000 žádný Amigista problémy mít nebude. My si 1. ledna roku
2000 jednoduše vychutnáme novoroční radovánky a problémy necháme té druhé části
počítačové populace. Pro jistotu si však na Silvestra moc velký obnos v bance
nechávat nebudu, kdo má těm PC věřit... Vytlačiť článok
Pozn.: články boli naskenované ako text a preto obsahujú aj zopár chýb. Taktiež neručíme za zdrojové kódy (Asm, C, Arexx, AmigaGuide, Html) a odkazy na web. Dúfame, že napriek tomu vám táto databáza dobre poslúži.
Žiadna časť nesmie byť reprodukovaná alebo inak šírená bez písomného povolenia vydavatela © ATLANTIDA Publishing
none
|