Error200 aneb nač rychlé počítače? ;-)
K čemu rychlý počítač, chci-li si zahrát Civilizaci, Golden Axe, Dyna Blaster, Wolfensteina nebo třeba Larryho1?? V tom výčtu bych mohl pokračovat dlouho a většina lidí, kteří mají aspoň dvacátý křížek za sebou, mi dá za pravdu, že to je pravda a s nostalgií na tu dobu a hlavně hry vzpomínají. Dost sentimentu, tento krátký článek je o tomhle:
Runtime error 200 at 0036:0091
Říká Vám ta hláška něco? Že ji nevidíte poprvé? Jistě, kdo by měl v 21.
století pomalý počítač (troška nadsázky neuškodí). Vysvětlení je
takové, že chybu způsobuje knihovna CRT (Turbo.tpl) programovacího jazyka Pascal a podobných, která špatně funguje s procesory Intel rychlejšími než 233MHz.
(Byl bych rád, kdyby mi někdo napsal podrobnosti o příčině tohoto jevu,
protože programováním se moc nezabývám a zda se chyba neobjevuje i u
AMD.) Prý knihovna při volání procedury delay (prodleva) a následných
výpočtech zhavaruje, protože proměnná je chybně definována. Chyba 200
sice znamená dělení nulou, ale ve skutečnosti jde o přetečení zásobníku.
Takto to vidí můj kolega MiK: Ty programy (resp. ta knihovna) si údajně na začátku nastavují konstantu, kterou pak vkládají do funkce delay. Dělají to tak, že snad frekvenci procesoru něčím vydělí a použijí výsledek. Následkem má být, že funkce delay bude házet "zpoždění" zhruba stejné na různě rychlých procesorech. (Že se to jinak chová v DOSu, Win9x a WinNT je jiná. :-)) Bohužel u příliš rychlých procesorů je frekvence tak vysoká, že podíl se nevejde do přiděleného místa v paměti (ehm asi registru 8-bit :-)). Stejná chyba vzniká, když dělíš nulou (podíl je nekonečno), proto ta chyba. Samozřejmě se nastaví příznak přetečení a program končí s onou magickou 200.
Řešení je několik. První a systémová je oprava knihovny přímo v Pascalu novou verzí (fix2) - pokud ovšem máte zdroják programu. Další patche opravují již zkompilovaný EXE soubor. Můžete si tady stáhnout skupinu 5 patchů, které můžete vyzkoušet při opravě.
Také můžete navštívit další stránky popisující tuto chybu, jeden odkaz za všechny (v AJ):
http://www.brain.uni-freiburg.de/~klaus/pascal/runerr200/index.html
Jinou možností je počítač zpomalit, aby k přetečení nedošlo. Že to funguje si můžete vyzkoušet tím nejjednodušším způsobem (pod Windows) - spustíte zběsilým klikáním co nejvíce instancí programu. To zatíží v daný okamžik procesor a některá instance se chytne. Pokud ale chcete trochu hezčí řešení, čtěte dále.
Jak jste na tom s touto chybou vy? Napište mi nebo aspoň zahlasujte v anketě!
Zpomalení počítače
Jednoduše jde o zatížení procesoru, což pomůže obejít chybu 200 u
pascalovských programů nebo obecně umožní hrát hry, které nebyly
připraveny na současně rychlé procesory a jsou nehratelně rychlé.
Můžete ke zpomalení počítače použít český program Sleeper nebo cizí CPU Killer, případně Mo'Slo.
Prostředí DOSu
DOS není v nových Windows ten starý dobrý MS-DOS, pro které byly hry vyvíjeny. Proto v případě
problémů můžete (kromě duální instalace W98SE nebo něčeho podobného) zkusit následující utility.
Existuje "emulátor DOSu" jménem DOSbox, více informací najdete na
stránce projektu (všimněte si Duny1 v titulku;) a
dále je tu jeden mirror a
FAQ ve slovenštině.
Další utilitou je Abandon Loader:
stránka projektu, český popis.
A ty slíbené staré pařby?
[ Nahoru | Anketa | HomePage ]
Poslední změna: 18.08.2004