Mágneslemezes egységek 2.
Folytassuk a mágneslemezes tárólókkal való ismerkedést a floppy-illesztő bemutatásával.
A hajlékonylemezes illesztő egység
A floppy-meghajtó az eredeti PC-k azon - meglehetősen kevés - alkatrészeinek egyike volt, amelyet nem az Intel vagy az IBM fejlesztett ki, hanem egy külső cég, a NEC által előállított komponens volt. Ez a meghajtó 5,25"-es, duplasűrűségű (DD - Double Density) lemezek kezelésére volt képes, melyeket 360KB adatkapacitásra formázott. Később megjelentek ennek a meghajtónak továbbfejlesztett változatai, melyek a 360KB-os lemezformátum további támogatása mellett az 1.2 MB formázott kapacitású HD (High Density - nagysűrűségű) lemezek kezelésére is képesek voltak. Ezen meghajtókkal egyidőben jelentek meg az 5,25 inches hajlékony-lemezeknél sokkal kompaktabb, parktikusabb és biztonságosabb tokozásban megjelenő 720KB formázott kapacitású lemezekkel dolgozó, 3,5"-es meghajtók is. Mára már szinte egyeduralkodóvá váltak e meghajtó továbbfejlesztett, 1.44MB-os kapacitású lemezekkel is dolgozni tudó változatai. Az ez után kifejlesztett 2.88MB-os ED (Extra Density - extra-sűrűségű) meghajtók és lemezek azonban - viszonylag magas árunknak köszönhetően - nem igazán terjedtek el.
Az eredeti PC-k összesen 4 darab mágneslemezes meghajtó illesztését tették lehetővé, amelyek maximális számát azonban az AT-kben - a merevlemezes meghajtók megjelenésének köszönhetően - két darabra csökkentették. Az eredeti illesztőkártya i8272 típusú perifériavezérlő áramkör köré épült, melyeket később a jóval fejlettebb i82077 ill NS 82C765 áramkörökkel helyettesítettek.
Bár az AT-k BIOS-a már nem támogatja, egy
gépbe két darab illesztőkártyát is el lehet helyezni. Az adapterek báziscímei
a következők lehetnek:
|
|
|
|
A lemezvezérlő parancsok végrehajtása mindig
a vezérlőprogram részéről a megfelelő paraméter-regiszterek feltöltésével,
majd a parancskód kiadásával kezdődik, melyek után az esetleges paraméterek
elküldésére kerül sor. A meghajtó a parancs végrehajtása után az IRQ6 vonal
aktiválásával jelzi, hogy befejezte a feldolgozást. A parancs végrehajtásának
eredményességéről a státusz-regiszter és a belső állapotregiszterek kiolvasásával
tájékozódhatunk. A vezérlő a következő parancsok végrehajtására képes:
|
|
|
|||||||
Teljes sáv beolvasása |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
Paraméterek beállítása |
|
|
|
|
|
|
|
|
|
Meghajtó állapotának lekérdezése |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
Szektor(ok) írása |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
Szektor(ok) olvasása |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
Újrakalibrálás (fej mozgatása a 0. sávra) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
Megszakítás generálása |
|
|
|
|
|
|
|
|
|
Töröl szektor(ok) írása |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
Szektor-fejléc beolvasása |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
Töröl szektor(ok) olvasása |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
Teljes sáv formázása |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
Belső regiszterek olvasása** |
|
|
|
|
|
|
|
|
|
Fejmozgatás (seek) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
Verzió lekérdezése** |
|
|
|
|
|
|
|
|
|
Egyenlőség vizsgálata* |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
Perpendikuláris mód** |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
Konfigurálás** |
|
|
|
|
|
|
|
|
|
Szektor(ok) ellenőrzése |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
Kisebb vagy egyenlőség vizsgálata* |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
Nagyobb vagy egyenlőség vizsgálata* |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
Relatív fejmozgatás** |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Minden parancsot az elsőnek átadott bájt
alsó 5 bitje alapján ismer fel a vezérlő, míg a parancs fennmaradó bitjeit
különböző paraméterek átadására használja ki. Az alábbi táblázatban e paraméterek
rövidítéseinek jelentései találhatóak meg:
- Az MFM bit a kódolás módját határozza meg:
- MFM = 0 esetén FM, míg
- MFM = 1 esetén MFM
kódolást alkalmaz a vezérlő.
- Az MT (MultiTrack) bit bekapcsolásával
jelezhetjük, hogy a műveletet több szektorra is ki akarjuk terjeszteni.
- A DIR (DIRection) bit a relatív
fejmozgatás irányát határozza meg:
- DIR = 0 esetén
a 0. sáv felé, míg
- DIR = 1 esetén
a magasabb sorszámú sávok felé mozdul el a fej.
- Az SK (SKip deleted data mark) bit a
töröl jelzésű szektorok kezelésének módját adja meg:
- SK = 0 esetén
a törölt szektorokat is figyelembe veszi, míg
- SK = 1 esetén
ignorálja azokat.
- HDS (Head Select) fejkiválasztás
bit
- DS1,DS0 (Drive Select) meghajtó
sorszámának 1. és 0. bitjei
A parancsok esetleges paramétereit közvetlenül a parancskód kiadása után folyamatosan kell a vezérlőnek elküldeni. Az egyes parancsokhoz tartozó paraméterek a funkciók leírásánál találhatók. A parancs végrehajtása után a funkcióknál felsorolt visszatérési értékeket ki KELL olvasni.
A táblázatban nem definiált parancsok vagy
várakozó állapotba hozzák a vezérlőt, vagy gyártónként eltérő, speciális
funkciókat aktiválnak.
A parancsok leírásánál használt paraméterek
neveit és jelentésüket a következő táblázat tartalmazza. Az egyes paraméterek
mind bájt méretűek.
|
Jelentés | |||||
|
fej és sáv kiválasztása | |||||
7-3
|
: | fenntartva (0) | ||||
2
|
: | fej kiválasztás | ||||
1-0
|
: | meghajtó száma (0-3) | ||||
|
sávszám (cylinder) | |||||
|
fej sorszáma | |||||
|
szektor száma | |||||
|
szektorméret kódja ( szektorméret = 2^SIZE * 128 bájt ), vagy 0, ha DTL határozza meg a méretet | |||||
|
szektorok száma (teljes sáv esetén a legutolsó szektor sorszáma) | |||||
|
a szektorok közötti szinkronizációs terület mérete bájtban | |||||
|
ha a SIZE kód 0, akkor DTL határozza meg a szektor méretét bájtokban | |||||
|
Belső állapotregiszter 0: | |||||
7-6
|
: | művelet eredménye: | ||||
00
|
: | a művelet sikeresen befejezve | ||||
01
|
: | a végrehajtás megszakadt | ||||
10
|
: | érvénytelen parancs | ||||
11
|
: | a végrehajtás a készenléti jel megváltozása miatt megszakadt | ||||
5
|
: | fejmozgatás befejezve | ||||
4
|
: | hiba | ||||
3
|
: | a meghajtó nem kész az adatátvitelre | ||||
2
|
: | fej sorszáma a megszakításkor | ||||
1-0
|
: | meghajtó sorszáma | ||||
|
Belső állapotregiszter 1: | |||||
7
|
: | sáv vége (a megadottnál kisebb sorszámú az utolsó szektor a sávon) | ||||
6
|
: | fenntartva (0) | ||||
5
|
: | CRC hibás fejléc vagy adatblokk | ||||
4
|
: | túlfutás miatt adatvesztés | ||||
3
|
: | fenntartva (0) | ||||
2
|
: | a szektor ID-je nem található | ||||
1
|
: | írási kísérlet írásvédett lemezre | ||||
0
|
: | ID kezdete jel nem található | ||||
|
Belső állapotregiszter 2: | |||||
7
|
: | fenntartva (0) | ||||
6
|
: | törölt (deleted) jelzésű szektor | ||||
5
|
: | CRC hibás adatblokk | ||||
4
|
: | hibás sávszám (az olvasott nem egyezik meg a megadottal a rossz fejpozíció miatt) | ||||
3
|
: | egyenlőség-vizsgálat sikeres (a tárolt és átvitt adatok megegyeznek) | ||||
2
|
: | vizsgálat sikertelen, szektor nem található | ||||
1
|
: | hibás sáv, az ID nem található | ||||
0
|
: | adatblokk kezdete nem található |