Radic/formatovac SAB 2797 ************************* Material sestaven podle firemnich materialu Siemens AG. pripojeni kanalu pro vystup a vstup: CH OUT INP VYZNAM 80 - Command - Status Prikazovy registr / Stavovy registr 81 - Track - Track Stopa 82 - Sector - Sector Sektor 83 - Data - Data Data 84 - Drive - not used Prime rizeni mechaniky / nevyuzito Command register: ================= Slouzi pro zadavani 8mi prikazu pro radic. Bity 7 az 5 obsahuji cislo prikazu ( tim je dan zaroven i typ prikazu I az IV, viz nize ), v ostatnich bitech jsou pak predavany parametry prikazu. Je-li nejaky prikaz prave vykonavan, je nastaven bit BUSY stavoveho registru a do prikazoveho registru nemuze byt zapisovan jiny prikaz. Prikaz 0a - hledani home stopy - I ---------------------------------- bity: 4 3 2 1 0 Provede vyhledani nulte stopy. 0 h V r1 r0 Prikaz 0b - hledani stopy - I ----------------------------- 4 3 2 1 0 Provede vyhledani stopy podle registru Data. 1 h V r1 r0 Prikaz 1 - krok o stopu - I --------------------------- 4 3 2 1 0 Provede jeden krok naposledy uvedenym smerem. T h V r1 r0 Prikaz 2 - krok ke stredu - I ----------------------------- 4 3 2 1 0 Provede jeden krok smerem k vyssi stope. T h V r1 r0 Prikaz 3 - krok od stredu - I ----------------------------- 4 3 2 1 0 Provede jeden krok smerem k nizsi stope. T h V r1 r0 Prikaz 4 - cti sektor - II -------------------------- 4 3 2 1 0 Provede nacteni sektoru podle registru Sector. m L E U 0 Prikaz 5 - zapis sektor - II ---------------------------- 4 3 2 1 0 Provede zapis do sektoru podle registru Sector. m L E U a Prikaz 6a - cteni adresy - III ------------------------------ 4 3 2 1 0 Provede nacteni informacnich bajtu z datoveho pole. 0 0 E U 0 Prikaz 6b - nucene preruseni - IV --------------------------------- 4 3 2 1 0 Zpusobi preruseni vykonavani prikazu. 1 I3 I2 I1 I0 Prikaz 7a - cteni stopy - III ----------------------------- 4 3 2 1 0 Provede nacteni cele jedne stopy bez kontrol. 0 0 E U 0 Prikaz 7b - zapis stopy - III ----------------------------- 4 3 2 1 0 Provede naformatovani jedne stopy. 1 0 E U 0 vyznam bitu parametru: h=0 na pocatku operace hlavicka neni usazena na diskete, pri h=1 usazena je V=1 verifikace cisla stopy, kontrola CRC, pri V=0 bez verifikace r1 r0 rychlost krokoveho motorku. Uvedene hodnoty plati pro 1 MHz, pro 2 MHz jsou polovicni. Pulsy: 00 - 6 ms, 01 - 12 ms, 10 - 20 ms, 11 - 30 ms T=0 po ukonceni kroku neobnovovat registr stopy, pri T=1 obnovit a=0 adresova znacka dat DAM je FB ( Data Address Mark ), pri a=1 je adresova znacka dat vynechana - DAM je F8 U=0 nastaveni strany 0 ( SSO, Side Select Output), pri U=1 nastaveni na stranu jedna E=1 zpozdeni vykonani prikazu pro ustaveni hlavicky o 15 ms, pri E=0 bez zpoz- deni L - delka sektoru v zavislosti na delce uvedene v ID poli ID 00 01 10 11 L=0 256 512 1024 128 L=1 128 256 512 1024 m=0 jednotlivy zaznam, m=1 mnohonasobny zaznam I0=1 preruseni pri prechodu z NOT READY do READY I1=1 preruseni pri prechodu z READY do NOT READY I2=1 preruseni u nasledujiciho indexoveho pulsu I3=1 okamzite preruseni vyzadujici reset Je-li I3 az I0 na 0 - ukonceni bez preruseni INTRQ Blizsi specifikace jednotlivych prikazu: ---------------------------------------- Pri posunu hlavicky na novou stopu je pri nastavenem bitu verifikace po ukonceni kroku generovana prodleva 15 ms ( nebo 30 ms u 1 MHz ). Jsou-li provadeny prikazy typu I s pozadavkem verifikace, pak 15 ms po ustaveni hlavicky je zapocteno hledani ID pole na prave nastavene stope. Cislo stopy z prvniho nalezeneho ID pole je porovnano s obsahem registru stopy a pokud souhlasi a souhlasi-li i cyklicka redundancni kontrola, je prikaz ukoncen bez generovani chyby. Pokud souhlasi jen cislo, je nastaven bit chyby CRC a hleda se dalsi ID pole. Pokud neni nenalezeno bezchybne ID pole behem 5 otacek diskety, je prikaz ukoncen s nastavenym bitem SEEK ERROR. Vystup SSO neni behem prikazu typu I ovlivnovan a porovnani stran se pri verifikaci neprovadi. Pri hledani stopy stopovy registr obsahuje cislo stopy, na ktere se nachazi hlavicka a datovy registr obsahuje cislo pozadovane stopy, na kterou se ma najet. Pri hledani nulte stopy je provedeno maximalne 255 kroku smerem od stredu diskety. Pri nenalezeni zadane stopy je nastaven bit chyby SEEK ERROR. Je-li pri prikazu pro krok hlavicky parametr T=1, pak je stopovy registr po ukonceni kroku zmensen nebo zvetsen o 1 podle smeru pohybu. U prikazu typu II je kontrolovano cislo stopy, cislo sektoru a spravnost CRC ID pole a teprve pote je provaden zapis nebo cteni datoveho pole. Pri nastavenem priznaku mnohonasobneho zaznamu radic po precteni nebo zapsani pozadovaneho sektoru zvetsi hodnotu sektoroveho registru a pokusi se sektor s timto cislem na diskete najit a opet jej precist nebo do neho zapsat. Prikaz je ukoncen nenalezenim sektoru nebo nucenym prerusenim. Je-li pozadavek na SSO, porovnava radic cislo pozadovane strany s cislem uvedenym v ID poli. Parametr L dovoluje ve spojenim s bytem delky sektoru v ID poli implementovat ruzne bytove delky sektoru. Pri cteni adresy se nacte nejblizsi ID pole a informace z nej se prenesou do datoveho registru v poradi: cislo stopy, cislo strany, cislo sektoru, delka sektoru, CRC 1 a CRC 2. Cislo stopy se zaroven prepise do sektoroveho registru. Pri cteni cele stopy zacne radic predavat data od nabezne hrany prvniho indexoveho impulsu, pricemz pro kazdy byte je generovano DRQ. Neni provadena kontrola CRC, byty nactene v mezerach mohou byt preneseny nespravne, vzhledem k synchronizaci. Pri formatovani stopy se zapisuji byty na disketu od nabezne hrany prvniho indexoveho impulsu, tak jak prichazeji do radice z pocitace. Byty 00 az F4 a FF jsou zapsany normalne, byty F5 az FE jsou interpretovany jinak ( viz nize ) a nesmi byt zapisovany do mezer, datovych a identifikacnich poli. Provadeni prikazu typu I probiha nezavisle na stavu READY disku. Prikazy typu II a III naopak pripravenost disku vyzaduji. Vyznam bytu pri formatovani: ---------------------------- byte FM MFM 00 az F4 - 00 az F4 s CLK FF 00 az F4 F5 - neni dovoleno zapise A1 s PCRC F6 - neni dovoleno zapise C2 F7 - vygeneruje 2 CRC byty vygeneruje 2 CRC byty F8 az FB - F8 az FB s CLK C7 a PCRC F8 az FB FC - FC s CLK D7 FC FD - FD s CLK FF FD FE - FE s CLK C7 a PCRC FE FF - FF s CLK FF FF PCRC znamena, ze od tohoto bajtu se zacne pocitat CRC. Status register: ================ Bity stavoveho registru obsahuji informace o prave provadenem prikazu. Po zadani kakehokoli prikazu krome typu IV je aktivovan bit BUSY a ostatni bity jsou inicializovany. Pri prijmuti prikazu typu IV je bit BUSY shozen a ostatni bity zustavaji beze zmeny. Po precteni stavoveho registru jsou resetovany signaly INTRQ a DRQ a bit DATA REQUEST. Jednotlive bity maji ruzny vyznam v zavislosti na typu provadeneho prikazu. Bit nastaveny na hodnotu 1 oznamuje, ze je dany priznak aktivni. Nazvy priznaku pro jednotlive prikazy ------------------------------------- bit prikazy typu I - cteni adresy - cteni sektoru - cteni stopy 7 - NOT READY - NOT READY - NOT READY - NOT READY 6 - WRITE PROTECT - 0 - 0 - 0 5 - HEAD LOADED - 0 - RECORD TYPE - 0 4 - SEEK ERROR - RNF - RNF - 0 3 - CRC ERROR - CRC ERROR - CRC ERROR - 0 2 - TRACK 0 - LOST DATA - LOST DATA - LOST DATA 1 - INDEX - DRQ - DRQ - DRQ 0 - BUSY - BUSY - BUSY - BUSY bit zapis sektor - zapis stopu 7 - NOT READY - NOT READY 6 - WRITE PROTECT - WRITE PROTECT 5 - WRITE FAULT - WRITE FAULT 4 - RNF - 0 3 - CRC ERROR - 0 2 - LOST DATA - LOST DATA 1 - DRQ - DRQ 0 - BUSY - BUSY Vyznam priznaku: ---------------- NOT READY radic neni v pohotovosti WRITE PROTECT na diskete je nastven zakaz zapisu HEAD LOADED hlavicka je usazena na mediu SEEK ERROR pozadavana stopa neni verifikovana CRC ERROR v poli ID je zjisteno CRC TRACK 0 hlavicka se nachazi na nulte stope INDEX byla nalezena indexova znacka RECORD TYPE oznacuje kod typu zaznamu, pri =1 je vynechana DAM, pri =0 je DAM pouzita WRITE FAULT vzdy nulovy ( pak to ale nema smysl !!! ) RNF (RECORD NOT FOUND) pozadovana strana, sektor nebo stopa nebyla nalezena CRC ERROR pri nastavenem bitu RNF je chyba v poli ID, jinak je v datech LOST DATA data nebyla vcas pocitacem odebrana nebo zapsana DRQ (DATA REQUEST) pri cteni: data lze cist, pri zapisu: lze zapsat BUSY radic prave zpracovava prikaz Vzhledem k vnitrnim synchronizacnim cyklum je nutno dodrzovat urcita zpozdeni pri provozu s programovanymi vstupy/vystupy: probihajici operace nasledujici operace potrebne zpozdeni FM / MFM zapis do Command reg. cteni bitu 0 12 / 6 microsec zapis do Command reg. cteni bitu 1 az 7 28 / 14 microsec zapis do lib. registru cteni z jineho reg. 0 / 0 microsec Casy plati pro CLK 2 MHz, pri pouziti 1 MHz se zdvojnasobuji. Track register: =============== Obsahuje cislo stopy ( 0 az 255 ), nad kterou se nachazi hlavicka mechaniky. Je-li nastaven parametr T, meni se automaticky hodnota registru pri kroku hlavy k jine stope, pricemz se obsah registru neporovnava s cislem stopy na diskete. Je-li pozadavek na cteni, zapis nebo verifikaci, pak se obsah registru se porovnava s cislem stopy, ktere je zaznamenane v ID poli na diskete. Je-li radic ve stavu BUSY, nesmi byt registr naplnovan. Sector register: ================ Obsahuje cislo pozadovaneho sektoru ( 0 az 255 ). Obsah registru se porovnava s cislem sektoru, ktere je zaznamenane v ID poli na diskete, je-li pozadavek na cteni nebo zapis. Je-li radic ve stavu BUSY, nesmi byt registr naplnovan. Data register: ============== Tento registr je pouzivan pro zachyceni dat, pri operacich cteni a zapisu. Pri provadeni prikazu hledani je v datovem registru adresa pozadovane stopy. Drive register: =============== Slouzi k primemu ovladani mechaniky bez prostrednictvi radice. Jednotlive bity maji tento vyznam: bit 1/0 7 - HI/NOR - high / normal 6 - OFF/ON - LED lamp, select 5 - ON/OFF - wait 4 - ON/OFF - motor 3 - FM/MFM - density 2 - 8"/5.25" - drive 1 - 1/0 - not used ( pozdeji se pouzije pro prepinani drajvru 0 a 1 ) 0 - 2/1 - frequency MHz Aby mohl radic ohlasit DISC READY, musi byt nastaven bit SELECT. SELECT lze zrusit pouze v okamziku, kdy je hlavicka nadzdvizena. Toto je dano nastavenim propojek v mechanice. Formaty disket ************** IBM 3740 IBM 34 FM mini MFM mini 8 palcu 8 palcu diskette diskette Gap I - 40 x FF - 80 x 4E - 40 x FF - 60 x 4E - 6 x 00 - 12 x 00 - - - - 3 x F6 - - Index Mark - 1 x FC - 1 x FC - - - 26 x FF - 50 x 4E - - ----------------------------------------------------. - 6 x 00 - 12 x 00 - 6 x 00 - 12 x 00 | - - 3 x F5 - - 3 x F5 | ID Address Mark - 1 x FE - 1 x FE - 1 x FE - 1 x FE | Track Number - 1 x nn - 1 x nn - 1 x nn - 1 x nn | Side Number - 1 x nn - 1 x nn - 1 x nn - 1 x nn | Sector Number - 1 x nn - 1 x nn - 1 x nn - 1 x nn ` Sector Lenght - 1 x 00 - 1 x 01 - 1 x 00 - 1 x 01 \ Writes 2 CRCs - 1 x F7 - 1 x F7 - 1 x F7 - 1 x F7 > 26 x Gap II - 11 x FF - 22 x 4E - 11 x FF - 22 x 4E / - 6 x 00 - 12 x 00 - 6 x 00 - 12 x 00 ' Writes A1 - - 3 x F5 - - 3 x F5 | Data Address Mark - 1 x FB - 1 x FB - 1 x FB - 1 x FB | Data Field - 128 x E5 - 256 x E5 - 128 x E5 - 256 x E5 | Writes 2 CRCs - 1 x F7 - 1 x F7 - 1 x F7 - 1 x F7 | Gap III - 27 x FF - 54 x 4E - 10 x FF - 24 x 4E | ----------------------------------------------------' Gap IV - 247 x FF - 598 x 4E - 369 x FF - 718 x 4E U nestandardnich formatu lze delky mezer zmenit: FM MFM Gap I - 16 x FF - 32 x 4E Gap II - 11 x FF - 22 x 4E 6 x 00 12 x 00 Gap III - 10 x FF - 24 x 4E 4 x 00 8 x 00 3 x F5 ( zapise A1 ) Gap IV - 16 x FF - 16 x 4E SKEW ( skju ) faktor - logicke cislovani sektoru Kapacity diskety pri 80 tps, 2 stranach a maximalnim poctu zapsanych sektoru: FM / MFM bps spt KB / spt KB bps - bytes per sector 128 - 18 360 / 29 580 spt - sectors per track 256 - 10 400 / 18 720 tps - track per side 512 - 5 400 / 10 800 1024 - 2 320 / 5 800 Maximum je 83 tps. Standardni formaty: IBM PC 360 KB - MFM, 512 bps, 9 spt, 40 tps, 2 sides IBM PC 720 KB - MFM, 512 bps, 9 spt, 80 tps, 2 sides CP/M86 720 KB - MFM, 512 bps, 9 spt, 80 tps, 2 sides Datum poslední editace: 27. 4. 1992 ============== Napsal Roman Štec z teamu LZR Soft ==============