Daniel Meca
(Zdroj: Mikrobaze 10/1989, str.6+7+8)
Úvodem několik drobných oprav. V prvním dílu seriálu, v čísle 5/89, je ve schematu na str. 8 vývod č. 12 konektoru pro spojení s deskou systému označen jako -5V. Je to pozůstatek předchozích verzi. Na desce plošných spojů je zde zapojeno +5V, protože -5V se vůbec v zapojení nepoužívá. Odpor R13 je nadbytečný, protože je zapojen paralelně k R3. Proto R13 neosazujte - zhoršuje činnost zapojení! Ve druhém pokračováni tohoto seriálu, v čísle 6/89, jsou na str. 10 chybně uvedeny kapacity disku pro formát Betadisku. Hodnoty 180, 360 a 720KB jsou chybné (jsou to kapacity pro IBM PC). Správné hodnoty měly být 160, 320 a 640KB. Dále jsou v tomtéž čísle v tabulce Basicových příkazů uvedeny příkazy pro přepínání počtu stop "4" a "8". Správně má být "40" a "80", tak jak je to uvedeno v příkladech napravo od tabulky. K chybé došlo při úpravě tabulky. Pokud zadáte zmíněné příkazy bez té nuly, bude systém hlásit "ERROR". U příkazu "*" pro přepináni disketových mechanik je uvedena za označením disku uvedena dvojtečka, tak jak uvádí výrobce, ale ve skutečnosti systém již nekontroluje zda za písmenem ještě něco je. Je tedy možné si ušetřit zbytečné shiftováni. V tomtéž čisle vypadl chybový kód číslo 13 = chyba verifikace. Ve schematu desky systému 5.03 na str. 11 je vlevo dole mylné označen výstup invertoru IC1 číslem 6. Správně je to vývod 4. Vývod číslo 12 konektoru pro spojení s deskou řadiče je označen NC. Ve skutečnosti je zde +5V (viz výše). Posledni chyba o které zatím vím je v tomtéž schematu, kde jsem při překreslováni mylné označil vývod číslo 27 EPROM jako NC, tedy nezapojený. Správné má být připojen na +5V, tedy spojen se sousedním vývodem 28. V obrazci plošných spojů tato chyba není. Je zajímavé, že díky této chybě zůstal na několika vzorcích řadičů mých přátel skutečně přislušný vývod nezapojený, přičemž systém většinou pracoval a začal stávkovat až začátkem letošního roku. Možná se zde projevila letošní zvýšená sluneční aktivita.
Protože jsem posledních pět čísel Mikrobáze dělal vlastně úplně sám, nemohu se vymlouvat, že by zmíněné tiskové chyby způsobil někdo jiný. Ostatně, těch chyb se vetřelo do oněch čísel víc. Za všechny tiskové a jiné chyby se velice omlouvám a doufám, že nikomu nezpůsobily vážnější potíže.
V jednom pokračování jsem slíbil, že příležitostně uvedu jednoduchý způsob jak přesunout po nataženi začátek Basicu zpět na 23755, Čímž lze eliminovat jeden z nedostatků Betadisku. Když jsem to nechal přečíst některým svým přátelům, kteří si podle mého návodu už Betadisk postavili, byl o tuto drobnost velký zájem. Možná, že i vás něco takového zajímá. Tak tedy - program v assembleru vypadá takhle:
LD | HL,#5CCB | ;23755=nová adresa začátku Basicu |
EX | DE,HL | ;Přeneseni do DE |
LD | HL,(#5C53) | ;PROG=momentálni začátek Basicu |
JP | #19E5 | ;RECLAIM-1 |
To je vše. Rutina RECLAIM-1 v ROM Spectra nejen přesune začátek Basicu, ale také příslušným způsobem upraví všechny systémové proměnné kterých se to týká. Dalšího komentáře netřeba. Zbývá už jen to šikovně přidat do Basicového programu.
Někdo se možná pozastaví nad tím, proč nedávám #5CCB rovnou do registrů DE. To právě souvisí s tím vestavěním do Basicového řádku. Důvod je ten, že kód pro LD DE,nn je #11. Tato hodnota odpovídá řídícímu kódu pro nastaveni barvy podkladu při listingu Basicu. Následující hodnota #CB by způsobila, že by od tohoto místa byl listing zablokovaný. To by ztěžovalo editaci Basicového programu.
Demonstrační program vypadá takto:
1 REM **************************************** 2 REM * Program pro nastaveni zacatku Basicu * 3 REM * na 23755 za chodu programu. 4 REM * (c)1987 D. Meca 5 REM * Jihlavska 76, Praha 4 6 REM **************************************** 7 REM 10 REM Radky 30-80 ulozi kod. 20 REM 30 LET c$="033,203,092,235,042,083,092,195,229, 025" 40 RESTORE 120: REM Sem se zada cislo radku, do ktereho bude ulozen kod. 50 LET a=(PEEK 23639+256*PEEK 23640+7): REM Adresa pro ulozeni strojoveho kodu. 60 FOR n=0 TO 9 70 POKE a+n,VAL c$(1+4*n TO 3+4*n) 80 NEXT n 90 GO SUB 200 : REM Tiskne zacatek Basicu. 100 REM Radky 120-140 provedou presun zacatku. 110 REM 120 DATA "1234567890": REM Zde bude kod. 130 RESTORE 120: REM V radku 120 je ulozen kod. 140 RANDOMIZE USR VAL "PEEK 23639+256*PEEK 23640+7" : REM Spusteni strojoveho kodu. 150 REM Hotovo! 160 REM 170 GO SUB 200 : Tiskne zacatek Basicu. 180 STOP 200 REM Podprogram pro tisk zacatku Basicu. 210 PRINT "Zacatek Basicu = "; 220 PRINT PEEK 23635+256*PEEK 23636 230 RETURN
Program využívá té skutečnosti, že po provedeni příkazu RESTORE ukládá systém na systémovou proměnnou DATADD adresu o jedničku nižší než je začátek řádku uvedeného v argumentu.
Po spuštěni se vypíše napřed původní začátek Basicu a po provedení strojové rutiny již nový začátek, tj. 23755. Řádek 120 se v průběhu první části programu přepíše takto:
120 DATA "! THEN \ FOR *S\NOT RESTORE ?"
Z toho by se zdálo, že lze kód zadat do položky DATA přímo z klávesnice. Bylo by to možné s výjimkou toho otazníku na konci. Tam je totiž kód 419, který z klávesnice zadat přímo nejde. Pro hračičky, kteří by přesto chtěli zadat kód z klávesnice, jsem si vymyslel takovouhle modifikaci:
LD | HL,45CCB | ;23755=nová adresa začátku Basicu |
EX | DE,HL | ;Přeneseni do DE |
LD | HL,439E5 | ;Jako 419E5, ale nastavený bit 5 |
RES | 5,H | ;V HL je teď 419E5 |
PUSH | HL | ;Na STACK |
LD | HL,(45C53) | ;PROG=momentálni začátek Basicu |
RET | ;Nepřímý skok na 419E5 |
Přislušný Basicový řádek pak vypadá takhle:
120 DATA "! THEN \ FOR ! RESTORE 9 THEN AT RESTORE *S\<>"
To je sice kód o čtyři bajty delší, ale je to vyváženo možnosti přímého zadáni z klávesnice. Postup zadáváni je takový:
12O DATA " ! THEN FOR kurzor vlevo \ kurzor vpravo ! RESTORE 9 THEN AT RESTORE * S \ <> " ENTER
Pozor, "<>" je jeden znak (kód 201, tj. RET)!
Podrobněji se tímto kratičkým prográmkem zabývám hlavně proto, že ho asi použiji hlavně ti, kteří si nejsou v programování tak jisti. Snad to vše vypadá pro začátečníka dost složité, ale vlastni použití je jednoduché. číslo řádku 120, získaného z výše uvedeného ukázkového programu, je možno změnit naprosto libovolně. Podmínkou je, aby na něj ukazoval příkaz RESTORE, který je před příkazem RANDOMIZE USR... (zde řádky 130 a 140). Druhá podmínka spočívá v nutnosti umístit příkaz DATA s příslušným kódem hned na začátek řádku. Jinak je možno příkazy z řádků 120-140 spojit dvojtečkami do jednoho řádku, nebo je použit samostatné. Je možné je zavolat hned při autostartu programu nahraného z disku, nebo i později. Jen je třeba se přesvědčit, že příkaz RESTORE nekoliduje s jinými daty programu a případně zařadit ještě jeden příkaz RESTORE, který na ně bude ukazovat.
Do oblasti hrátek se systémem patří také možnost umístit příkaz DATA do řádku 9999 a tento řádek z monitoru přečíslovat tak, aby první bajt čísla měl hodnotu 440. Takový řádek pak není v listingu vypisován, není v Basicu spouštěn, ale finta s nalezením jeho adresy na něj stále funguje. Stačí dát RESTORE 10000. Program s takto přečíslovaným řádkem nelze načíst příkazem MERGE. Ale to už jsem hodné odbočil od tématu.
Prográmek může být použit také k odstavení ZX Interface 1.
V tomto místě jsem musel zasáhnout do svého vlastního textu a nahradit první část popisu ovládáni řadičů Western Digital několika poznámkami ke stavbě a oživeni Betadisku. Důvodem je to, že vzhledem k pokročilému času má řada čtenářů už celý řadič postavený. Zajímají se tedy o možnost naprogramováni EPROM, o zkušenosti s oživováním a také o případné programy pro práci s Betadiskem. Protože (jak se můžete dočíst na jiném místě v tomto časopise) Mikrobáze tímto číslem konči, přičemž není zatím jasné kdy a kde budu moci v tomto seriálu pokračovat, vidím toto jako jediný způsob, jak alespoň nenechat na holičkách ty, kteří si podle mého návodu řadič staví.
Doposavad jsem nevyhodil nikoho z těch několika desítek lidi, kteří mě navštívili se žádosti o radu. Také jsem zdarma naprogramoval řadu EPROMek. Protože to je však dost velká ztráta času a zátěž pro mou rodinu, budu nucen další podobné služby poskytovat za mírnou úplatu na základě povoleni NV.
Pochopitelně hledám a budu hledat vydavatele pro zbytek seriálu a nejen pro něj.
Tak tedy k vlastní stavbě. Nepodařilo se zatím zajistit výrobce oboustranných prokovených plošných spojů, který by je za rozumný peníz zájemcům dodával. Proto si bude každý muset poradit sám s pomoci předloh z Mikrobáze. Pokud by někdo výrobce našel, dejte mi prosím vědět. Použiti plošných spojů bez prokovených děr je velké dobrodružství a hrozná práce. I to jsem však viděl.
Největší procento chyb bylo zaviněno nekvalitnimi plošnými spoji, proto radím důkladnou kontrolu. Zvláště zrádné jsou vlasové trhlinky. Slušně však dovede potrápit i nedokonale prokovený otvor. Vyplatí se také zkontrolovat diody. Měl jsem už v ruce diody s opačně označenou katodou.
Zkontrolujte si také důkladně, zda nejsou na plošném spoji systému prohozené motivy pro stranu spojů a stranu součástek! V takovém případě by nesouhlasily vývody systémového konektoru a došlo by k poškozeni počítače.
Pokud jsou plošné spoje i součástky v pořádku a nedojde k chybě při osazováni součástek, mělo by vše fungovat na první zapojeni. Před připojením k počítači doporučuji připojit k napájení samotnou desku řadiče a překontrolovat napětí na konektoru pro počítač. Veškeré připojováni a odpojováni se samozřejmě musí dělat při vypnutém napájeni.
Desku systému lze s počítačem zkoušet samostatně, tj. bez desky řadiče. Napájecí kabel ze Spectra se připojuje do desky Betadisku - Spectrum je napájeno přes konektor sběrnice. Bylo by samozřejmě možné naopak napájet Betadisk ze Spectra, ale při nasunutém interfejsu se už do Spectra napájecí konektor nevejde. Stabilizátor +5V musí mít chladič - i potom dost hřeje. Po zapnuti proběhne inicializace Spectra a pak se buď rovnou zahlásí TR-DOS, nebo se hlásí Spectrum, které však musí být normálně provozuschopné. Když se ohlásilo Spectrum, pak se TR-DOS zahlásí až po RANDOMIZE USR 15616. Předpokládá se, že dvoupólový přepínač je přitom ve střední poloze, případně vůbec není připojen. Nahoře je nápis:
* TR-DOS Ver. 5.03 * 1986 Technology Research Ltd. (U.K.) BETA 128
Pokud je připojen ZX Interface 1, bude pod tím ještě napsáno "Interface 1 attached", nedoporučuji však při prvních pokusech mít cokoliv ke Spectru připojeno. V každém případě se má vlevo dole objevit:
A> a kurzor.
Pokud je to tak, funguje stránkování EPROM dobře. TR-DOS totiž každý znak vypisuje přes ROM Spectra. Můžeme vyzkoušet příkazy "40" a "80", na které systém odpoví "O.K.". Na ostatní příkazy reaguje hlášením "No disk". Pokud se Betadisk takto nechová, doporučuji vše znovu řádně překontrolovat. V praxi se ukázalo, že někdy pomohlo zvýšit hodnoty odporů, které vedou ze spojených anod diod k +5V, z původních 4k7 na 15 až 22k. Bude vůbec lepší rovnou tyto hodnoty osadit. Dále celé věci prospěje zapojeni takového odporu i do anod D2 a D3 (vývod 3 na IC1 v desce systému). Někdy se osvědčuje zapojit kondenzátor asi 68pF z výstupu číslo 11 IC3 na zem. Bez něj systém někdy nevysvětlitelně "padá". Může také pomoci zablokováni napájeni EPROM přímo u patice kondenzátorem Ml. Zapojeni pak už musí fungovat!
Při resetu na počítači by se mělo hlásit Spectrum. Při resetu přepínačem na řadiči by se měl hlásit TR-DOS. Z DOSu se dostaneme na Spectrum příkazem RETURN. Nyní můžeme zkusit RANDOMIZE USR 15360. Ve střední poloze přepínače se i tak musí , hlásit řadič. Pokud zůstaly zachovány systémové proměnné TR-DOSu, nebude se již znovu vypisovat celé hlášení.
Teď už můžeme (pochopitelné při vypnutém napájeni) připojit desku řadiče. Mechaniku zatím nepřipojujeme. Na chováni TR-DOSu by se nemělo nic změnit. Nakonec (opět při vypnutém napájeni) připojíme mechaniku. Ta by měla být přepnuta jako DO, tedy drive A. Zapojeni konektoru je následující:
> 1 Zem 2 NC 3 Zem 4 NC 5 Zem 6 /DRVD 7 Zem 8 /INDEX 9 Zem 10 /DRVA 11 Zem 12 /DRVB 13 Zem 14 /DRVC 15 Zem 16 /HL (zde /MOTOR ON) 17 Zem 18 DIR 19 Zem 20 /STEP 21 Zem 22 /WRD 23 Zem 24 /WRG 25 Zem 26 /TRO 27 Zem 28 /WRT PROT 29 Zem 30 /RD 31 Zem 32 /SIDE1 33 Zem 34 NC
Lomítko před označením značí negovaný signál. Na většině konektorů bývá vývod číslo 1 označen šipkou. Na tu stranu patři na plochém vodiči strana označená barevně. K Betadisku lze bez problému připojit mechaniky 3", 3 1/2" a 5 1/4" pro Double Density, případně 8" pro Single Density. Bezproblémovost připojeni umožňuje především to, že není požadován signál /READY, který řada novějších mechanik (hlavně 3 1/2") vůbec nemá. Systém si zatočí diskem a testuje přítomnost indexových impulzů.
Pokud není k dispozici na Betě formátovaný disk, musíme nejdříve provést formátování. Nejdříve zadáme příkaz "40", případné "80" (pokud to mechanika umožňuje). Potom už zadáme FORMAT "název" (a ENTER). Pokud má být disketa formátovaná jednostranné, musí být první písmeno názvu $. Smaže se obrazovka a musí se roztočit mechanika. Po chvilce bude slyšet krokováni. Po skončení formátováni se vlevo dole objeví údaj o počtu bezvadných sektorů, pak lomítko a údaj o možném počtu sektorů. Pokud tato dvě čísla nejsou stejná, zkusíme formátovat znova. Když ani to nepomůže, raději disketu vyřadíme. TR-DOS totiž neoznačuje vadné sektory a neumí se jim pak vyhýbat.
Pokud deska řadiče nefunguje bezchybně, může tomu být na vině osazení odporu R13, který je paralelně k R3 - viz výše. Vadí to hlavně u některých sérií řadičů Siemens. Kromě toho se ukázalo rozumné zvýšit hodnoty odporů R2÷R6 z 5k6 na 10k.
Při bližším prozkoumání zapojeni lze zjistit několik drobných prohřešků. Například výstup 2 invertoru I03 by měl být přes odpor připojen na +5V, protože jde o invertor s otevřeným kolektorem. Nepoužité vstupy všech I0 by měly být připojeny správné k +5V přes odpory a ne přímo. Měl by asi být blokován vývod č. 40 řadiče, který je připojen na +12V. Těchto posledních pár drobností by ale nemělo mít vliv na bezvadnou funkci řadiče.
Ne každému se podaří sehnat vhodný dvoupólový přepínač se třemi polohami. Je možné použít jednoduchý dvoupolohový přepínač mezi diodou D6, zapojenou v Resetu a vývody /CLEAR a /PRESET klopného obvodu D2 v IC5. V jedné jeho poloze se po resetu ohlásí Spectrum, ve druhé Betadisk. Pokud je resetovací tlačítko na počítači, nemuselo by v tom případě už být na Betadisku. Potom už stačí jednoduchým spínačem uzemňovat anodu D8, čímž se vyřadí možnost voláni na adresách 15360 a 15363.
Úpravu voláni Betadisku pomoci R7, R8 a D8 nelze aplikovat při použití LECROM, protože spolu kolidují.
Pokud Betadisk odmítá fungovat v kombinaci s některým interfejsem, přesvědčte se, zda v tomto interfejsu není použito dekódováni adres pomocí diod. Pokud tomu tak je, pomůže nahrazeni diod hradlem. To se týká například rozšířeného UR4!
A ještě jedno upozorněni. Při pokusu o čteni diskety neformátované, případné formátované jinde než v Betadisku, objeví se po delší odmlce hlášeni o chybě ve stopě 0, sektoru 9. Tam totiž má TR-DOS svoji identifikaci. Při pokusu o čteni z diskety o větší délce sektoru než 256B dojde ke zhroucení systému. Je to tím, že si systém vytvoří buffer pro načtení jednoho sektoru délky 256B, přičemž čtecí rutina (jak jsem již vysvětlil dříve) čte sektor libovolné délky. Jak tento problém odstranit je nasnadě - stačí aby si systém napřed v adresových údajích zjistil délku sektoru a v případě delšího sektoru raději nečetl. Je to jedna z chystaných úprav pro novou verzi DOSu.
Přestože jsem už přesáhl původně vyhrazenou délku tohoto pokračováni, řada důležitých věcí se sem už nevešla. V dalších chystaných kapitolách by měly být uvedeny průběhy signálů v důležitých bodech zapojeni a jednoduchý program pro otestováni některých částí řadiče. Dále je připraven úplný popis ovládáni řadičů Western Digital, popis příkazů, analýza a využiti stavových bajtů v programech. Dále měl následovat popis zajímavých partii nového CP/M od Jirky Lamače, návod na jednoduchý hardwerový tester mechanik, program pro testováni mechanik pomoci řadiče Betadisku bez přídavného hardwéru, popis několika užitečných programů pro práci s Betadiskem a později i popis nového upraveného systému, navenek plně kompatibilního s TR-DOSem. Je připraven i popis úpravy Didaktiku Gamma pro spolupráci s Betadiskem a s CP/M. A ještě celá řada zajímavosti. Jen majitelům ostatních typů počítačů se musím omluvit, asi se mi už samotnému nepodaří dát dohromady slíbené aplikace pro jiné typy počítačů než ZX Spectrum a kompatibilní. Pokud by se tomuto problému někdo chtěl věnovat, napište mi domů. Snad se podaří časem vše někde publikovat. Zatím tedy na shledanou. Sledujte časopisy, snad se časem někde ozvu. A vy, tvořiví přátelé Betadisku a CP/M vůbec - ozvěte se!
Daniel Meca
(Zdroj: Mikrobaze 10/1989, str.6+7+8)
Předchozí část | Pokračováni příště |
Stránka byla už zobrazena: 253 ×
Aktualizováno: 6. 4. 2018, 18:05
Stránka načtena za 0.00277 sekund.