Zilogův IDE řadič pro ZX Spectrum je už v oběhu nějaký ten pátek. Já jsem ho získal teprve nedávno. Hodlám jej provozovat s flashkou a MDOSem 2.1. MDOS mám téměř hotov, IDE Flash 128MB (www.transcend.com) dorazila pár dny před vánoci. Proto jsem zahájil velký testing...

Můj jediný požadavek na IDE systém je jednoduchý - čtení/zápis dat musí být naprosto bezchybné. Samozřejmě, že tento základní požadavek by měla být schopna 100% uspokojit pouze hardwarová stránka. Bohužel ukázalo se mi, že tak jednoduché to nebude. :-(

Na začátku jsem sestavil jednoduchý testovací program, kterým jsem flashku zformátoval (resp. vyplnil všechny sektory hodnotou 229) a verifikoval (přečet všechny sektory zda skutečně obsahují onu hodnotu 229). První zádrhel mi nastal při ukládání sektorů, které byly za kapacitou média. Já jsem očekával chybové hlášení (a tedy ukončení programu), ovšem žádná chyba nenastala, neboť flash hlásila, že sektor je uložen OK a přitom se uložil úplně někde do luftu! Verifikace už ale proběhla na jedničku, žádný verify error a při pokusu o přečtení sektoru za kapacitou se hezky zahlásila chyba.

První úspěchem jsem se nenechal uchlácholit a napsal jsem složitější test. Tentokrát se budou zapisovat a verifikovat skutečná data, tedy každý obsah sektoru bude jiný. Data jsem vzal z ROMky a už jsem si i ošetřil to ukládání za kapacitu média. I tady vše prošlo na výbornou. Ovšem to mohla být jen náhoda, další dny se bude verifikovat znova! (celkem paranoia co? :). A ještě, že jsem to udělal. Na druhý den na čerstvě zapnuté (studené) mašině se už začly dít věci! Verify error byly tu! Vzpomněl jsem si na Zilogova slova, že ten hřebínek může dělat někde problémy a tak jsem ho z patice vyndal. Ovšem chyby místo aby zmizely, tak byly čím dál častější. Takže jsem ten hřebínek zas nasadil. Chyby se pomalu začaly vytrácet až po zahřátí celé sestavy na pracovní teplotu zmizely úplně. Čuměl jsem na to jak blbec a po diskusi na pandoře (ohledně GAL zákmitů) jsem zaexperimentoval a přišel na způsob, jak ty GAL zákmity softwarově detekovat a odstranit. Assemblerovsky řečeno takto:

ld bc,163
inir
dec b
dec b
inir
in a,(191)
ini
ini
bit 3,a
jr z,je to v hajzlu nastal zákmit, načti to znova

S touhle vychcaností jsem flash testoval dalších pár dnů a zjistil jsem, že ty zákmity se mi vyskytují na studené mašině i na zahřáté, pouze pravděpodobnost jejich výskytu se liší (na studené to byl třeba 1 zákmit na 100 sektoru, kdežto na teplé 1:150000).

Nakonec jsem se už naštval a vytáhnul 10GB HDD Western Digital. Po dobu, co jsem ho testoval, se neobjevil jediný zákmit! Vysvětlení je tedy zřejmě jasné - ta IDE flash je prostě nějaká divná. No jo, jenže na PC pracuje úplně v pohodě (bezchybně). 

Později jsem dle Zilogových rad připojil flash a hdd dohromady (klasika master/slave). Tímto (dle Ziloga) mělo dojít k tomu, že hdd přiměje tu zvrhlou flash k poslušnosti. Problém byl ale v tom, že moje IDE flash se nenasazuje na kabel ale přímo na řadič a já jsem tedy musel zhotovit další kábel. Zapojené to teď vypadá katastrofálně, ale světe div se, ono to funguje a flash už hezky poslouchá (žádný zákmit!). Harddisk tedy jako "zátěž" problém odstranil.

     

Ano! Je to tady. POKE přišel s metodou, která mě toho harddisku zbavila :) Pin 25 alá POKE (1k rezistror).

Anebo D0-D15 alá POKE & Zilog (16ks 1k rezistorů). Rovněž funguje.

     

V současné době provádím podrobnější testy. Výsledky a pokec tedy doplním později.

 

Pokud si chcete taky otestovat svoje zařízení, dávám vám k dispozici své dva prográmky. Nejdříve použijte ten ide25(oem), který nemůže způsobit žádnou škodu a nikdy nic na IDE nezapisuje. Testuje pouze GAL zákmity tím, že čte jeden sektor za druhým. Pokud tak po týdenním (nemyslím v kuse, ale každý den tak jednou/dvakrát) testování u vás žádný zákmit nenastane, přejděte na ide25, nechte si jím zapsat testovací data a pak je (zas tak týden) pouze verifikujte. Pokud nikdy na žádný problém nenarazíte, můžete si gratulovat. Jo a pozor, že oba programy pracují pouze s LBA (CHS neumí), jako master a oba je nutné před spuštěním nakonfigurovat úpravou basic zavaděče (normálně totiž vypíší pouze master připojené médium a nic neprovádí)!!!

ide25.zip (c) MTs full verze včetně zdrojáku
ide25.wri (c) MTs zdrojový text
ide25 (oem) (c) MTs okleštěná verze, testuje pouze GAL zákmity
Další info na http://www.divide.cz