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?

Viz seznam linků o gamesách

[ Nahoru | Anketa | HomePage ]

Poslední změna: 18.08.2004