tiskoviny/mikrobaze/cpm6

Seriál o CP/M - BetaDisku

Postavte si s námi diskový řadič (4)

Daniel Meca

S využitím služeb TR-DOSu napsal Jirka Lamač koncem roku 1988 první verzi BIOSu do CP/M. Byla odvozena z jeho CP/M pro Microdrive a to od verze 3.3, ze které odstranil vše kolem Microdrivů a doplnil volání služeb TR-DOSu. Mělo to však své mouchy. Nebyla zde ještě prozatím ímplementována čeština. Byly to vlastně dva samostatné operační systémy, kde jeden volal služby druhého. To způsobilo velké potíže se systémem chybových hlášení, který v případě chybného přístupu na disk vypisoval svá hlášení normálním písmem přes vše ostatní. Navic jsem horko-těžko upravoval zpracování chyb tak, aby se v případě chyby nevyskakovalo do Basicu. Nejvíc nám však vadilo, že práce s diskem je dost pomalá. Ani přečíslení sektorů ještě nepřineslo kýžený výsledek. Navíc pak disketa nebyla kompatibilní s žádným známéjším systémem. To mně, fanatíkovi na kompatibilitu všeho se vším, vadilo nejvic.

Tady pomohlo přečíslovat sektory už při formátování, tak jak to dělají některé modernější systémy. Nejlépe vyhovélo číslování přes dva sektory. Stopa přitom byla přečtená, či zapsána v průběhu tři otáček disku. Problém byl v tom, že TR-DOS v. 5.xx formátuje jen přes jeden sektor. Napsat nový formátovací program není zas tak velký problém, ale jde o to, jak ovládat přímo řadič. Již dříve jsem se zmínil o tom, že řadič je normálně odpojený a připojí se jen při činnosti DOSu, pokud je aresována EPROM. Jsou dvě možnosti jak to obejit:

1. zasáhnout do EPROM.
2. zasáhnout do hardware.

Protože jsem neměl v tu dobu možnost přeprogramováni EPROM, zvolil jsem druhou variantu. Po trošce bádání jsem na desce systému přerušil jeden spoj a přidal dvě diody a jeden odpor. Zapojení je vidět na obrázku 4, kde je do výřezu z obr. 2 silnou čarou zakreslena přidaná část. Diody by opět měly být nejlépe Schotkyho (kvůli malému úbytku napětí v propustněm směru - vyhoví i germaniově). Odpor by měl mit hodnotu asi 10÷22KΩ. Funguje to tak, že se v době činnosti DOSu vyšle na port #FD log. nula, čímž se resetuje klopný obvod D1 (IO5). Ten pak svým výstupem Q (pin 5) přes diodu podrží vstup 13 hradla IO1 na nule. To znemožni odpojení řadiče při adresování RAM. Vysláním #10 na tento port se řadič opět může odpojit. Diody s odporem zde realizují logickou funkci AND. Někteří přátelé, kteří zapojení zkoušeli, použili místo diod integrovaný obvod. Slíbil jsem jim, že i na tuto možnost upozorním. Použití integrovaného hradla je jistě správnější, ale jak jste si mohli všimnout, v celkovém zapojení Betadisku jsou diody použity úspěšně na více místech. Trochu jsem se pobavil, když jsem hledal vhodný typ IO ve velkém katalogu Tesla. Podle něj se vyrábí 74ALS08, jenže je v obsahu označen jako HAND. Na stránce 139 je už označení AND, také schematícká značka odpovídá, ale je uvedena logická funkce NAND. Ovéřil jsem si však v zahraničních katalozích, že je to AND, takže Tesla bud laškuje, nebo neví co vyrábí:

Programovou obsluhu zapnuti a vypnutí radiče jsem vyřešil těmito dvěma podprogramy:

RON DI PUSH HL PUSH BC LD BC,#00FD LD HL,REST PUSH HL LD HL,#2A53 PUSH HL LD HL,#3D2F PUSH HL LD H,A XOR A RET REST LD A,H POP BC POP HL RET ROFF PUSH AF LD A,#10 OUT (#FD),A POP AF EI RET

Místo obsáhlych komentářů stačí říci co je v TR-DOSu na adresách #2A53 a #3D2F. Na #3D2F je v obou verzích NOP a RET. V tom je právě ten vtip. Instrukce NOP je totiž na adrese, jejíž volání způsobí přistránkování EPROMky DOSu. RET je pak použit pro nepřimý skok na adresu, která je připravená na STACKu. Tak je možno vyvolat libovolnou rutinu v celé EPROM. Na adrese #2A53 jsou ve verzi 5.03 intrukce OUT (C),A a RET (v 5.01 jsou tyto instrukce na adrese #2A09).

Oba podprogramy neporušují obsah žádného registru. U rutíny RON se stará podprogram REST o zrestaurování použitých registrů po návratu z EPROM. Po dobu práce s řadičem je zakázáno přerušení, protože při použitém způsobu čisté programové obsluhy řadiče nejsou velké časové rezervy. V programu se vždycky zavolá RON, provede se operace s řadíčem a pak se zavolá ROFF.

Pro takto upraveny Betadisk jsem pak už snadno napsal formátovací program, v němž si mohu zvolit přečíslování a počet sektorů na stopě. Zároveň v ném odstraňují drobný nedostatek původního formátování v TR-DOSu. Betadisk totiž formátuje obě strany naprosto stejné. Projeví se to při použití takto naformátovanych disket na počítačích, které kontrolují označení strany v adresové značce

(Zdroj: Mikrobaze 08/1989, str.13)

 Předchozí část  Pokračováni příště

Stránka byla už zobrazena: 493 ×

Aktualizováno: 6. 4. 2018, 18:05



     psp-ikona.gif, 2 kB    Text to HTML converter and formatter  builder_ikonka.gif, 3 kB
           
  Best Old Games      kabelmanie.gif, 2 kB  root_ico.gif, 2 kB  český diskmag pro počítače ZX Spectrum a kompatibilní
synapse.gif, 4 kB   TuningPC.cz - Vše pro tuning a casemodding vašeho PC        pspad88x31.gif  delphix.gif, 1 kB
sgatlantis_88x31_3.jpg, 4 kB  atlan.gif, 22 kB  arkon.jpg, 12 kB  ico_abeceda.gif, 888B  blog.idnes.cz   
           
       
 
  torry_logo.gif, 4 kB  

Stránka načtena za 0.00154 sekund.