Pojďme přetaktovat starý osmibit!
První československý domácí mikropočítač pro děti a mládež Ondra SPO 186 byl představen v roce 1985. Požadavku co nejnižší ceny a zároveň plně grafického výstupu na obrazovku byl obětován téměř veškerý výpočetní výkon jeho mikroprocesoru UB880D. A obětován byl hned dvěma způsoby. V první řadě kvůli jednoduchosti konstrukce byl procesor podtaktován na 2MHz z důvodu snadného odvození frekvence videosignálu v normě PAL. V druhé řadě je procesor zcela zastaven v době vykreslování obrazu. UB880D je klon Z80 se jmenovitou pracovní frekvencí 2.5MHz. Pojďme si opět trochu zauvažovat a třeba i zaexperimentovat.
Pracovní frekvence
Ondra má tedy ve vínku UB880D, u kterého je uváděna pracovní frekvence 2,5MHz. Proč právě tato? Z mých zjištění a dostupných zdrojů na internetu se zdá, že důvodem bylo nějakým způsobem získat navrch nad hlavním konkurentem Intel 8080 limitovaným na 2MHz. Zadání tedy znělo „něco víc“ než 8080 a tak se zřejmě i stalo. Na papíře to vypadá lépe. Nutno podotknout, že toho času další „brzdou“ mikropočítačových systémů byla rychlost použitých pamětí. Proč tedy zaměřovat úsilí na další taktování procesoru, pokud nemůže být reálně použito. V praxi tedy existuje šance, že daný kus CPU dokáže pracovat na mnohem vyšší frekvenci a dokonce to může být velmi časté. Didaktiky Gama touto verzí CPU dokonce byly osazovány z výroby, přičemž byly taktovány na 3,5MHz. Mě to vrtalo hlavou společně s tím, zda by Ondra mohl běžet rychleji a co by se pro to muselo udělat.
První úvaha směřovala k základní otázce, co vše je závislé na taktu CPU a jaké úpravy by takový zásah vyžadoval. Zodpovězením této otázky se ukázalo, jak je Ondra geniálně navržen. „Videoprocesor“ i zvukový generátor jsou totiž zcela nezávislé. Už z principu patentu Ing. Smutného, kde se vlastně běh počítače dělí na čas, kdy se generuje obraz pomocí čítačů 8253 a čas kdy běží program. Čítače fungují zcela nezávisle, jsou programovatelné. Zvukový generátor je zase jen multivibrátor spouštěný portem. Takže samotné CPU si během svého dovoleného času může vykonávat instrukce libovolným tempem. Vstupní a výstupní kazetopáskové či síťové rutiny jsou softwarové, takže je lze přeprogramovat pro jiné takty CPU.
Tak skvělé…. co dál? Udělat nový oscilátor? Podívejme se, kde se hodiny berou. Oscilátor 8MHz je přiveden na děličku, ze které jsou vyvedeny signály 1,2 a 4MHz. Zde se tedy nabízí použít 4MHz, aniž bychom museli cokoliv přidávat. Dokonce je zde za děličkou jedno nevyužité hradlo, které má přivedené vstupy, ale výstup je nezapojen. Můžeme jen polemizovat, proč zde je, ke všemu je to jediné nevyužité hradlo v celém počítači. Já pro něj využití našel. S drobnou úpravou poslouží jako oddělovací invertor pro 4MHz hodinový signál CLK.
Hlavní myšlenka byla na světě, zrychlení Ondry na dvojnásobek a to pouze pomocí dvou propojek! Pořád jsem si říkal, že to přeci nemůže být tak jednoduché. Nebyl dlouho čas se pustit do experimentů a přes všechno přemýšlení jsem vždy opět došel k názoru, že to není nemožné. Po asi dvou měsících jsem se konečně dostal k první praktické zkoušce.
Experimenty
Experiment jsem provedl na svém klonu Ondry, kde mám většinu IO v paticích. Ani jiného funkčního Ondru zatím nevlastním. Pro jistotu jsem pro první pokus použil CPU ze šuplíku od výrobce Mostek, který je dělaný do 4MHz.
Vytáhl jsem IO D32, kde jsem vyhnul nožičky 11 a 13. Nožičky 11 a 12 spojil propájením a na nohu 13 napájel kablík, který jsem přivedl na vyhnutou nohu CPU pin 6 signál CLK.
A to je vše! Ondru jsem zapnul a objevila se úvodní obrazovka Ondra+, klávesnice fungovala a pípák pípal! Sláva, takže všechny úvahy byly správné. Bohužel spuštění BASICu se nedařilo, jsou tam velké manipulace s bloky dat, muselo docházet ke špatné funkci RAM. Zkusil jsem ještě měnit CPU za UA880D, chování mírně jiné, ale téměř identické. Takže přišla na řadu RAM. Měl jsem osazeno Tesla MHB4164 a na 4MHz evidentně už nestíhala. Osadil jsem východoněmecké paměti, které mi chodí v Mistrum na 3,5MHz a hned po prvním zapnutí to vše krásně fungovalo. Spustí se BASIC, chodí to pekelně rychle na poměry Ondry. Pak jsem zkusil UB880D a světe div se, jelo úplně stejně! V BASICu jsem zkusil benchmark, abych otestoval stabilitu celé úpravy. I výsledek benchmarku odpovídá, kdy v režimu FAST se Ondra dostal na první pozice v žebříčku mezi všemi ostatními konkurenty s časem 29s.
Bohužel sovětské paměti nemám při ruce, abych je také otestoval. Nicméně tyto paměti obsahuje i Didaktik M, který na 4MHz jede, takže by teoreticky mohl jet na 4MHz i originální Ondra. Nabízí se tedy otázka, zda mohl být Ondra již od výroby 2x rychlejší? Ano mohl, stačila by selekce funkčních kusů na 4MHz pravděpodobně s vysokou úspěšností tak, jak to posléze dělali ve Skalici a drobná změna na desce v podobě mé úpravy. Otázkou dále zůstává, zda ve své době byl již dostupný UA880D a za jakou cenu. Dost možná by to nebyl takový cenový rozdíl. Ale drastický nárůst výpočetního výkonu na dvojnásobek velmi slušně napravuje Ondrův největší nedostatek. Při plném zobrazení se už dostane téměř na poloviční rychlost například mnohem dražšího PMD-85 a v režimu FAST by byl nejrychlejším tehdejším domácím počítačem, což by možná změnilo jeho historii.
A co dál?
Minulost už nechme, avšak jak s výsledkem naložit dnes? Pro mě to byl především zajímavý experiment. Rozhodně nemá cenu pro „turbo“ Ondru psát speciální software. Co bude dál, ještě není dáno, natož psáno. Turbo Ondra nemůže nahrát program, protože všechna časování nahrávacích rutin jsou závislá na taktu CPU. Přesto vidím velkou příležitost a to je spuštění her Pssst, Jetpac a především Planetoids a Invaders, které by toto zrychlení přesně potřebovaly. Jako cestu vidím přepínač na Ondrovi, obdobu tlačítka turbo na starých počítačích PC, které by šlo přepínat za běhu a pokud by to nešlo tak přepínat ve vypnutém stavu a upravit ROM Ondra+ tak, aby poznala takt CPU a automaticky upravila časování nahrávacích rutin. Uživatel by si poté mohl užívat vysokou rychlost počítače v BASICu nebo kdekoli kde je třeba, včetně výše jmenovaných pomalých her.
Závěr
Přetaktování Ondry bych určitě doporučil zkusit všem, kdo si stavěli repliku, úprava je pro takto zkušené stavitele minimální a triviální. Myslím si, že většina tam stejně máte Z80A a rychlé paměti. Nejzajímavější by bylo to zkusit na originálním Ondrovi, ale asi nikdo si ho nechce upravovat, protože se jedná o dnes již vzácný počítač. A uštípnutí pinu na CPU a jednom IO není pro každého akceptovatelné.
Možná pokračování příště….
72ka