Az EXDOS lemez felismerésének menete, azaz a UNITH egység mûködése 3-as akciókódnál:
-disk reset DISKIO hívás, azaz a fej 0. sávra állítása
-0. sáv 0. fej 1. szektor, azaz a boot szektor beolvasása
-ha nem sikerült, akkor 0. sáv 0. oldalról megpróbál egy szektor azonosítót beolvasni
-ha ez sikerült, akkor 180-as hiba lesz: Not a DOS disk
-ha sikertelen volt, akkor 181-es hiba, Unformated disk
(Itt megjegyzem, hogy van egy sajnálatos hiba az EXDOS-ban: 1024 bájtos szektorokkal formázott lemez esetén hatalmas fagyás lesz, mert az 512 bájtosra méretezett puffer mögötti memória felül lesz írva az 1024 bájtos boot szektor beolvasásakor. A helyes megoldás az lenne, ha elõször lenne szektor azonosító olvasás, és abban ellenõrizni, hogy 512 bájtos-e? Majd javítom ezt is, bár az 1024 bájtos lemezekkel való összefutás esélye elég csekély, különösen manapság
![ds_icon_cheesygrin :ds_icon_cheesygrin:](/Smileys/phpbb/ds_icon_cheesygrin.gif)
Dr. Préry! Tudom, hogy itt leskelõdsz
![ds_icon_lol :lol:](/Smileys/phpbb/ds_icon_lol.gif)
mi volt az a Ataris formázó program amivel mindenféle kretén formátumú lemezeket tudtál nekem formázni?)
-sikeres boot szektor olvasás esetén ellenõrzi a következõ paramétereket (0Bh bájtoktól):
-szektor méret 512 bájt?
-cluster méret 0-nál nagyobb, és 2 hatványa?
-FAT példányok száma 1-7 között van?
-FAT méret 1-12 szektor között van?
-egy sávon max 10 szektor van? (Ez az eredeti érték, ezt azóta többször is módosítottuk.)
-sikertelen ellenõrzés esetén 50h-tól megismétli az ellenõrzést, azaz Apricot lemezként próbálja értelmezni. Ha így sikerült a felismerés akkor a paramétereket átmásolja a helyükre, vagyis a hívásból visszatérve szabványos boot szektort fog kapni a FISH
-ha se a normál se az Apricot módszer nem vezetett eredményre, akkor megpróbálkozik az MS-DOS 1.x lemezekhez való módszerrel:
-beolvassa a 0. sáv 0. oldal 2. szektort, azaz a FAT elsõ szektorát
-ellenõrzi, hogy az 1. és 2. bájt az FFh, és 0. bájt az F8-FFh, azaz FAT típusbájt-e
-ha így se sikerült azonosítani, akkor Not a DOS disk
-ha meg van a típusbájt, akkor az alapján legyárt egy szabvány boot szektort a következõ paraméterekkel:
FFH - DS/SD/8 (320K), 1 boot szektor, 2 szektor/cluster, 112 fõkönyvtár bejegyzés, 1 FAT szektor, 2 példány
FEH - SS/SD/8 (160K), 1 boot szektor, 1 szektor/cluster, 64 fõkönyvtár bejegyzés, 1 FAT szektor, 2 példány
FDH - DS/SD/9 (360K), 1 boot szektor, 2 szektor/cluster, 112 fõkönyvtár bejegyzés, 2 FAT szektor, 2 példány
FCH - SS/SD/9 (180K), 1 boot szektor, 1 szektor/cluster, 64 fõkönyvtár bejegyzés, 1 FAT szektor, 2 példány
FBH - DS/DD/8 (640K), 1 boot szektor, 2 szektor/cluster, 112 fõkönyvtár bejegyzés, 2 FAT szektor, 2 példány
FAH - SS/DD/8 (320K), 1 boot szektor, 2 szektor/cluster, 112 fõkönyvtár bejegyzés, 2 FAT szektor, 2 példány
F9H - DS/DD/9 (720K), 1 boot szektor, 2 szektor/cluster, 112 fõkönyvtár bejegyzés, 3 FAT szektor, 2 példány
F8H - SS/DD/9 (360K), 1 boot szektor, 2 szektor/cluster, 112 fõkönyvtár bejegyzés, 2 FAT szektor, 2 példány
-ha meg van az ellenõrzött boot szektor, akkor következik a lemezkompatibilitás ellenörzése
-két oldalas lemez esetén beolvas egy szektor azonosítót a 0. sáv 1. oldalról, és ellenõrzi, hogy tényleg az 1. oldalhoz tartozó azonosítót olvasott be. Ha nem sikerült, akkor 150-es hibakód, Incompatible disk
-elléptet a 8. sávra, és beolvas a 0. oldalról egy szektor azonosítót, majd ellenõrzi, hogy hanyadik sávhoz tartozik a beolvasott azonosító:
-4., azaz SD lemez DD meghajtóban, dupla léptetést bekapcsolja
-8., megfelelõ beállítás
-16., azaz DD lemez SD meghajtóban, Incompatible disk.
Ha több egyforma lemez használunk egymás után, akkor ezt a kompatibilitás ellenõrzést nem végzi újra el. (Ennek az ellenörzésnek van az a jellegzetes taktak hangja az elsõ lemez beolvasásakor, amit TVC használatakor is fel lehet ismerni, ami nyilván nem véletlen
![:-)](/Smileys/phpbb/ds_icon_smile.gif)
)
Külön nem említettem, ha nincs bent lemez, vagy nem elérhetõ a meghajtó akkor természetesen Not ready hiba lesz.