Blog:Ako som opravoval Zbrojováčkovskú disketovku
Z PMD 85 Infoserver
Ako som opravoval Zbrojováčkovskú disketovku.
Než sa dostanem k samotnému príbehu o oprave, začnem dlhším úvodom ;-)
Z ForEver neXt som si znenazdajky doviezol domov 5,25" disketovú jednotku s jednou mechanikou pre Consul 2717 - Zbrojováček. Na moju radosť mi ju zapožičal Pepax :-).
Aj keď samotného Zbrojováčka vlastním, nechystal som sa k nemu ihneď disketovku pripojiť. Podľa aktualít C2717 musí byť pre pripojenie 5,25" disketovky Zbrojováček príslušne upravený a to ja nemám. Jednak sa jedná o výmenu 2ks EPROM, kde je upravený diskový ovládač, aby dokázal spolupracovať s 8" i 5,25" mechanikami a zároveň musí byť upravený zdroj, keďže 5,25" disketovka je napájaná priamo z počítača. No a keďže som nemal ani nový obsah EPROM a ani popis, ako má úprava zdroja vyzerať, rozhodol som sa najprv disketovku detailne preskúmať a zistiť "Jak věci pracují?". Pre prípadnú emuláciu v PMD 85 emulátore to aj tak bude potreba, tak som sa pustil do prekreslenia schémy z DPS. Bola to fuška, ale asi po dvoch týždňoch som mal schému nakreslenú.
Nešla mi ale do hlavy jedna zásadná vec. Zapojenie konektora mechaniky. Signál pre výber mechaniky je pripojený na vývod 6, čo je podľa tohto popisu nezapojený vývod. Našťastie ma z omylu vyviedol Dex, ktorý ma upozornil na to, že mnou použitý popis sa týka 3,5" mechaník a správny dokument je tento. Teraz mi to už bolo jasné. Výberový signál je správne pripojený na vývod 6 (-DS3) mechaniky a na mechanike je Jumper na pozícii D3.
Ďalšou záhadou bol vývod 16 (-MOTOR) konektora mechaniky. Ten je pripojený priamo na GND, čo by znamenalo, že sa disketa v mechanike stále točí. Podľa popisu riadiaceho registra disketovky by to aj dávalo zmysel, pretože ten obsahuje iba bity pre aktiváciu mechaník A: alebo B:, ale nemá osobitné bity pre rozbeh motorov. Zo skúsenosti, napríklad s disketovkou D40/80, som ale očakával, že sa budú motory zastavovať. Pre istotu som opäť oslovil Dexa, či si nespomína ako je to u 8" mechaník 7115, ktoré ku Zbrojováčku má. Dex to vyskúšal a aj v tomto prípade sa disketa stále točí a teda zapojenie a ani riadiaci register "neklamú". Vďaka schéme a komentovanému výpisu rozšíreného monitora C2717 som tak v podstate pochopil, ako disketovka funguje. Zostávalo mi už len vidieť disketovku v chode. K tomu som však potreboval upravené EPROMky.
Po necelých dvoch mesiacoch mi Dex poslal obsahy EPROMiek, ktoré získal od Zdeňka Houšku z nejakej DPS na náhradné diely. Po porovnaní s obsahom EPROM z môjho počítača sa ukázalo, že sú to už nové verzie s podporou 8" i 5,25" mechaník. Po preskúmaní kódu som objavil drobné nejasnosti, čo sa týka spôsobu testu typu mechaniky a ukončení povelu radiča po chybe, ale to som sa rozhodol v tomto okamihu neriešiť. Tešil som sa, že budem môcť disketovku vyskúšať. ;-)
Pre úplnosť, pôvodné 2kB EPROMky Zbrojováčka sú označené ako 603.511/01 až 603.518/01 a zameniť je treba (alebo stačí) EPROMky s označením 603.513/01 a 603.514/01 za 603.513/02 a 603.514/02. Jedná sa o oblasť pamäti od 9000h do 9BFFh, čo je vlastne rozšírený monitor o veľkosti 3kB. 1kB z druhej EPROM je časť BASICu, ktorá sa nezmenila. Zmeny sa týkajú iba diskového ovládača. Terminálová časť (vstup z klávesnice, zobrazenie 64 znakov na riadok) a časť Sieťové služby sa nezmenili, sú však na iných adresách, keďže disková časť sa posunula a predĺžila. Podstatné ale je, že to neovplyvní žiadne programy, keďže rozšírený monitor obsahuje na začiatku skokovú tabuľku vstupných bodov, ktoré sú volané CP/M BIOSom.
Naštartoval som teda PMD 85-3 s PMD 40 a napálil som si nové EPROMky. Vymeniť EPROMky v Zbrojováčku je "pěknej vopruz", pretože DPS je zakrytá tieniacim plechom, ktorý je na dištančných stĺpikoch a tie sa spolu so skrutkami potom po odmontovaní dosť blbo montujú nazad. Chcelo by to jednu pravú ruku ku tým mojim dvom ľavým :-D.
Nastal čas konečne pripojiť disketovku ku Zbrojováčkovi. Musel som ale mechaniku napájať z externého zdroja, aby som neodpálil zdroj počítača. Pred prvým zapnutím počítača spolu s disketovkou som takmer ani nedýchal ;-) Žiaľ, moje vzrušenie bolo schladené okamžite, pretože disketovka nefungovala.
Po resete sa na displeji zobrazil text ++ Boot ++ a mechanika podľa očakávania naseekovala na stopu 5 a potom domov na stopu 0 a to je všetko. Zotrvávala v tomto stave. Po stlačení STOP sa skočilo do Monitora, ale čo ma prekvapilo, na mechanike zostala svietiť LED. Keďže mechanika seekovala, predpokladal som, že samotný radič U1 - SM609R (I8272) je v poriadku. Vošiel som do BASICu a OUToval na riadiaci port. Nič sa ale nedialo. Teda, minimálne som čakal, že sa zruší výber mechaniky a zhasne LED. Podobne, pri čítaní z riadiaceho portu sa vracala stále hodnota 0FFh. A tak nastúpila logická sonda (BK 121) a tá mi pomohla odhaliť vinníka. Obvod U4 - K555LA3 (74LS00) mal odpálené výstupy (piny 3 a 6) na dvoch hradlách. Jedno z nich práve vyrába /CS pre riadiaci port a preto nefungoval zápis ani čítanie z riadiacho portu.
Po výmene U4 nastal posun vpred. Riadiaci port začal reagovať, zjavne sa niečo dialo, ale k bootovaniu nedošlo... Nasledujúce meranie odhalilo, že nie je vyvolávané prerušenie pre preberanie dát z radiča. Vinníkom bol ďalší obvod U7 - K555LA9 (74LS03), konkrétne výstup druhého hradla (pin 6). Štvrté hradlo U7 nie je použité, tak som sa, v záujme ušetrenia si vyberania obvodu z DPS, rozhodol iba predrátovať zapojenie z druhého hradla na štvrté. Žiaľ, zbytočne. Zrejme bol obvod "chytený" poriadne a nezostávalo mi nič iné, iba vymeniť aj U7.
Opäť nastal posun. Po resete sa už načítal boot sektor, ale to bolo všetko. Po mnohých pokusoch a omyloch sa ukázalo, že som mal zle vygenerovaný Image disku - poradie sektorov atď. Po správnom zoradení sektorov už CP/M bez problémov nabootovalo a fungovalo samozrejme aj spúšťanie programov. Problém bol ale so zápisom. Pri zápise súboru sa poškodil adresár a ešte aj dátová časť disku. Potom už po nabootovaní CP/M hlásilo BAD SECTOR už pri počiatočnom načítavaní adresára. Keď som z diskety znovu vytvoril DSK Image, tak príslušné (chybné) sektory mali v status registroch nastavené chybové kódy - Missing Address Mark. V postihnutých sektoroch boli nejaké "zmysluplné" dáta zapísané, takže zápis "asi nejako" prebehol, ale zjavne zle. Zaujímavé bolo, že v sektore adresára, kde by mal byť nový adresárový záznam súboru, bola časť samotného systému, ktorý je v skutočnosti uložený v sektore s rovnakým číslom, ale na predošlej stope a opačnej strane. Možno to bola iba náhoda, neviem... Premýšľal som o chybe v BIOSe, ale to som potom zavrhol.
Po pár dňoch premýšľania nad schémou som sa opäť pustil do merania. Hľadal som niečo podozrivé v okolí radiča a obvodov zápisu. Najprv som sledoval funkciu čítača U22 - K555IE7 (74LS193), ktorý generuje zápisové hodiny. Napiek tomu, že logická sonda nie je pri vysokých frekvenciách to pravé orechové, usúdil som, že hodiny sú v poriadku. Zapisované dáta sú spracovávané (predkompenzácia) v obvodoch U14 - K555TM8 (74LS175) a U13 - K555KP12 (74LS253). Úrovne na výstupoch U14 sa zdali byť v poriadku a tiež výstupy výberu predkompenzácie (PS0, PS1) a povolenia zápisu (WE) z radiča mali správne úrovne. Zostalo mi iba preveriť výstup U13 (pin 7), kde mali byť už správne dáta idúce priamo do mechaniky (vývod -WDATA). Tam však bola vždy iba úroveň H, čo je iba pull-up zo samotnej mechaniky (U13 má výstupy s otvoreným kolektorom). Znovu som chcel použiť nevyužitú druhú polovicu obvodu U13, ale ukázalo sa, že ani tá nie je v poriadku a musel som vymeniť aj obvod U13. Nastal okamih pravdy... Hurrrááá! Začal fungovať aj zápis! Paráda!
Takže sa mi podarilo disketovku opraviť. Samozrejme, aby som mohol niečo skúšať, potreboval som originálne diskety. Tie som nemal, ale Schotek mi kedysi veľmi dávno poslal jeden Image 5,25" diskety k Zbrojováčkovi, ktorý vytvoril svojou utilitkou. Image som si musel ale upravovať, lebo mal namiesto 360 kB takmer 1,6 MB a tiež som musel zistiť, ako majú byť jednotlivé sektory zoradené. Image mi pomohol pri prvotnom laborovaní s disketovkou, pretože obsahoval samotný systém CP/M, program GBASIC.COM pre spustenie BASICu s podporou diskových operácií a zopár programov v BASICu. Pred časom mi nakoniec poslal všetky takto vytvorené Image, na ktorých sa už nachádzal aj program FORMAT.COM, ktorého disassembling mi ozrejmil aj samotný formát disku.
Všetky Image spracujem, prevediem do formátu DSK a hodím tu na stránky, spolu aj s príslušnými utilitkami. Ale môže to chvíľu trvať.
Dúfam, že toto zaspomínanie na moje snaženie bolo aspoň trochu zaujímavé alebo to aspoň niekomu pomôže v budúcnosti pri podobnej oprave ;-) Pripomienky a postrehy mi môžete písať do fóra.