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:
 

Adapter sorsz.
Báziscím
1
2
3F0h
1F0h
 
Az első adapter szabványosan a IRQ6 megszakításvonal és a 2. DMA csatorna segítségével bonyolítja az adatforgalmat, míg a második vezérlőhöz a betölthető illesztőprogram bármelyik szabad megszakítást és bájt szervezésű DMA csatornát felhasználhatja.

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:
 

Parancs
Bájtok száma
Parancskód (binárisan)
7         6           5       4        3         2          1         0
Teljes sáv beolvasása
9
0
MFM
0
0
0
0
1
0
   
0
0
0
0
0
HDS
DS1
DS0
Paraméterek beállítása
3
0
0
0
O
O
O
1
1
Meghajtó állapotának lekérdezése
2
0
0
0
0
0
1
0
0
   
0
0
0
0
0
HDS
DS1
DS0
Szektor(ok) írása
9
MT
MFM
0
0
0
1
0
1
   
0
0
0
0
0
HDS
DS1
DS0
Szektor(ok) olvasása
9
MT
MFM
SK
0
0
1
1
0
   
0
0
0
0
0
HDS
DS1
DS0
Újrakalibrálás (fej mozgatása a 0. sávra)
2
0
0
0
0
0
1
1
1
   
0
0
0
0
0
0
DS1
DS0
Megszakítás generálása
1
0
0
0
0
1
0
0
0
Töröl szektor(ok) írása
9
MT
MFM
0
0
1
0
0
1
   
0
0
0
0
0
HDS
DS1
DS0
Szektor-fejléc beolvasása
2
0
MFM
0
0
1
0
1
0
   
0
0
0
0
0
HDS
DS1
DS0
Töröl szektor(ok) olvasása
9
MT
MFM
SK
0
1
1
0
0
   
0
0
0
0
0
HDS
DS1
DS0
Teljes sáv formázása
10
0
MFM
0
0
1
1
0
0
   
0
0
0
0
0
HDS
DS1
DS0
Belső regiszterek olvasása**
1
0
0
0
0
1
1
1
0
Fejmozgatás (seek)
3
0
0
0
0
1
1
1
1
   
0
0
0
0
0
HDS
DS1
DS0
Verzió lekérdezése**
1
0
0
0
1
0
0
0
0
Egyenlőség vizsgálata*
9
MT
MFM
SK
1
0
0
0
1
   
0
0
0
0
0
HDS
DS1
DS0
Perpendikuláris mód**
2
0
0
0
1
0
0
1
0
   
0
0
0
0
0
0
WGT
GAP
Konfigurálás**
4
0
0
0
1
0
0
1
1
Szektor(ok) ellenőrzése
9
MT
MFM
SK
1
0
1
1
0
   
EC
0
0
0
0
HDS
DS1
DS0
Kisebb vagy egyenlőség vizsgálata*
9
MT
MFM
SK
1
1
0
0
1
   
0
0
0
0
0
HDS
DS1
DS0
Nagyobb vagy egyenlőség vizsgálata*
9
MT
MFM
SK
1
1
1
0
1
   
0
0
0
0
0
HDS
DS1
DS0
Relatív fejmozgatás**
3
1
DIR
0
0
1
1
1
1
   
0
0
0
0
0
HDS
DS1
DS0
- a *-gal jelölt parancsokat az i82077AA áramkör köré épülő vezérlők nem ismerik
- a ** jelzésű parancsok csak EHD vezérlőkön alkalmazhatók

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.
Kód
Jelentés
DRV
fej és sáv kiválasztása
7-3
: fenntartva (0)
2
: fej kiválasztás
1-0
: meghajtó száma (0-3)
CYL
sávszám (cylinder)
HEAD
fej sorszáma
SEC
szektor száma
SIZE
szektorméret kódja ( szektorméret = 2^SIZE * 128 bájt ), vagy 0, ha DTL határozza meg a méretet
CNT
szektorok száma (teljes sáv esetén a legutolsó szektor sorszáma)
GAP
a szektorok közötti szinkronizációs terület mérete bájtban
DTL
ha a SIZE kód 0, akkor DTL határozza meg a szektor méretét bájtokban
ST0
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
ST1
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ó
ST2
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ó
 

- STING -
eMail:PC-XUser@FREEMAIL.C3.HU, Subject: "Kommunkiáció"
STING2@FREEMAIL.C3.HU