EXDOS Műszaki Leírás

ZozoSoft


Tartalom

Előszó

Az EXDOS rendszer áttekintése
1. Bevezető - EXDOS és ISDOS
2. Az EXDOS felépítése
3. Az ISDOS felépítése

Az Enterprise DOS lemezek felépítése
1. A mágneslemez felépítése
2. A DOS lemezek felépítése

Az EXDOS rendszer részletes bemutatása
1. Bevezető
1.1 EXDOS ROM belépési pontok
2. Inicializálás
2.1 Inicializálási fájl - "EXDOS.INI"
2.2 Újrainicializálás
3. Rendszerváltozók
4. DISKIO hívások
5. FISH hívások
6. File Control Block-ok (FCB-k) formátuma
7. Meghajtó adatterület
8. A FISH ás EXOS változók összefüggése
9. Hibakódok - hibaüzenetek

Előszó

Az EXDOS a nevéhez méltóan (Enterprise eXpandable DOS) ugyanolyan kitűnően bővíthető, rugalmas rendszer mint az EXOS, amelyet magyarul is részletesen megismerhettünk az EXOS 2.1 változat műszaki leírás című könyvből. Sajnos az EXDOS-ról nem jelent meg hasonló részletességű dokumentáció magyarul, ráadásul az eredeti angol dokumentációk se forogtak közkézen, mint az angol EXOS leírás, amely fénymásolva terjedt a klubokban. Sajnálatos módon ezek az angol dokumentációk az internet korának ellenére még mindig nem kerültek elő. Ha netán valaki rendelkezik a felsorolt dokumentációkkal, kérjük jelentkezzen!

Ezek hiányában megpróbáljuk újraalkotni az EXDOS rendszer részletes leírását, összefoglalva, folyamatosan kiegészítve a fel lelhető információkat. Az alapot a néhány elérhető angol dokumentáció, valamint az HSOFT&Zozosoft által az Enterpressben megjelentett cikksorozat adja, amely jelentős részben a VTDOS leírásán alapult (mivel a TVC operációs rendszerét is az Intelligent Software Ltd. készítette, így a VTDOS igen közeli rokonságot mutat az EXDOS-al), kiegészítve gyakorlati úton szerzett tapasztalatokkal. További hiányzó részletek felderítéséhez pedig Zozosoft belevágott az EXDOS ROM visszafejtésébe, ily módon sikerül egyre újabb és újabb információkat felderíteni. (Ha az eredeti dokumentációk rendelkezésünkre álltak volna, akkor 10-15 évvel korábban is megvalósulhatott volna a merevlemez illesztés, mint ahogy később kiderült, a németeknek már 1987-ben volt ilyen rendszerűk, lásd HDOS)

Az EXDOS rendszer áttekintése

1. Bevezető - EXDOS és ISDOS

A rendszer megértéséhez nagyon fontos különbséget tenni az EXDOS és ISDOS között.
Az EXDOS az lemezes bővítés az EXOS operációs rendszer számára, a lemezvezérlő kártyán lévő ROM-ban található, és automatikusan a rendszerhez csatolódik, amikor bekapcsoljuk az Enterprise-t. Ez biztosítja az EXOS számára a lemezes perifériakezelőt, és számos bővítő parancsot amelyek elérhetőek bármely felhasználói programból a rendszerbővítők letapogatása EXOS hívással (Pl. kettősponttal kiadott parancsok az IS-BASIC-ből).
Az ISDOS egy EXOS felhasználói program, amely betöltődhet automatikusan az EXDOS indulásával, vagy később a felhasználó által kiadott paranccsal. Amikor betöltődött az ISDOS veszi át a gép vezérlését, ahogyan pl az ISBASIC is teszi. Az MS-DOS-hoz hasonló parancssoros környezetet* biztosít, amelyből parancsokat adhatunk ki az ISDOS-nak, vagy tranziens programokat tölthetünk be, amelyek futása után az ISDOS-hoz térünk vissza.

(*megjegyzés: az MSDOS-hoz képest sokkal kényelmesebben használható teljes képernyős felület áll rendelkezésünk, hála az EXOS beépített EDITOR eszközének, amely jóval fejlettebb mint az MSDOS CON eszköze.)

2. Az EXDOS felépítése

Az EXDOS központi része a Filing System Handler (fájlkezelő rendszer), amely biztosítja az összes szükséges funkciót a fájlok eléréséhez és kezeléséhez. A felhasználói programok általában nem közvetlenül a FISH-el lépnek kapcsolatba, hanem vagy a DISK perifériával, vagy az EXDOS CLI-vel (Command Line Interpreter, parancssor értelmező).

A DISK periféria egy EXOS perifériakezelő, amit az EXDOS automatikusan csatol a rendszerhez induláskor. Ugyanúgy használható mint a többi EXOS periféria, a felhasználó csatornákat nyithat, zárhat a lemezen lévő fájlokhoz, adatokat olvashat vagy írhat beléjük.

Az EXDOS CLI egy EXOS rendszerbővítő, amely az EXOS parancsként kiadott utasítások feldolgozását végzi, így biztosítva olyan funkciókat, mint pl a fájlok átnevezése vagy törlése, könyvtár kilistázása, stb.

Amikor az EXDOS a lemezhez akar hozzáférni, ezt mindig egy egységkezelőn (unit handler) keresztül teszi. Az EXDOS ROM beépített egységkezelőt tartalmaz a kártyára köthető négy floppy meghajtóhoz, ennek a neve UNITH. További beépített egységkezelő a RAMUNIT amely a RAMDISK kezelését biztosítja. Lehetséges további egységkezelők csatlakoztatása, amellyel az EXDOS számára elérhetővé tehető bármely újabb lemezes hardver.

A UNITH nem kezeli közvetlenül a lemezvezérlő hardvert, hanem a DISKIO-n keresztül fordul hozzá, amely biztosítja a legalacsonyabb szintű vezérlő rutinokat. Ezek az alacsony szintű rutinok elérhetőek a felhasználó számára is, pl. nem szabványos lemezek kezeléséhez, formázásához.

A különböző részek közti kapcsolatot az alábbi ábra szemlélteti. Annak ellenére, hogy az ISDOS nem az EXDOS ROM része, mégis szerepel az ábrán, hogy lássuk az elhelyezkedését. Az ábrán látható felhasználó (USER) lehet egy EXOS felhasználói program, mint pl az IS-BASIC, vagy akár a személy, aki használja ezeket a programokat.

3. Az ISDOS felépítése

Az ISDOS kódja ROM helyett a lemezen található*, és bekapcsoláskor automatikusan betöltődhet, vagy pedig egy konkrét EXDOS CLI parancsra. Betöltődés után szabványos EXOS környezetet állít be, számos előre definiált csatorna megnyitásával (Pl. video, keyboard, editor), és feldolgozza a felhasználó által begépelt parancsokat.

(*megjegyzés: nem hivatalos továbbfejlesztésként készült olyan ROM változat amely az ISDOS kódját is tartalmazza az EXDOS 1.3 mellett)

Az előbbi ábrán láthattuk az ISDOS és EXDOS legfontosabb kapcsolatait. A felhasználói parancsokat az ISDOS CLI végzi. A parancsok végrehajtása számos különböző módon történhet:

Az ISDOS amikor tranziens programokat tölt be, akkor CP/M és MSXDOS kompatibilis környezetet biztosít számukra a futáshoz. Ezt a feladatot az ISDOS rezidens része végzi, amely a memóriában marad a tranziens program futása alatt is (az ISDOS CLI felülírható a tranziens program által). Ez a rezidens rész fordítja a CP/M hívásokat a FISH részére, és végzi az ISDOS CLI újraindítását (esetleges újratöltését) amikor a tranziens program futása befejeződött. Ide tartozik a kötegelt fájlok feldolgozása is.
A ISDOS által betöltött tranziens programok minden fontos CP/M és MSXDOS hívást használhatnak, és néhány CP/M BIOS hívást is. Ez biztosítja, hogy a CP/M vagy MSXDOS alá írt programok működnek ISDOS alatt. Természetesen az ISDOS programok használhatják az EXOS funkció hívásait is, így kihasználva az Enterprise összes lehetőségeit. A különböző hívásokat bármilyen formában lehet keverni.

Az Enterprise DOS lemezek felépítése

1. A mágneslemez felépítése
A lemez lehet egy-, vagy kétoldalas. A kétoldalas meghajtóval mindkét formátumot tudjuk kezelni. A lemez homlokfelületén a koncentrikus körök - SÁVOK - hordozzák a mágneses információkat. Számuk 40, vagy - duplasűrű forma esetén - 80. A duplasűrű meghajtóval kezelhetünk szimplasűrű lemezt is, de ekkor csak a páros sávokat használjuk. (A sávok számát - korlátozott mértékben - növelhetjük is.) A sávokon 512 byte-os szektorok helyezkednek el. Minden szektor önálló szektor-azonosítóval van ellátva. A sávonkénti szektorszám (512 byte-os szektorokat feltételezve) 8 vagy 9, de 11-ig (ZOZOSOFT újításával 13-ig) lehetséges a számukat bővíteni.
A szektorazonosító felépítése:

byte    
0. 0-89 TRACK megadott értékek az általában használtak,
1. 0-1 SIDE 0 és 255 között bármi lehetséges,
2. 1-13 SECTOR másolásvédett lemezeknél
3. 0-3 BYTE/SECTOR (0=128, 1=256, 2=512, 3=1024)
4-5 0-FFFFH CRC

2. A DOS lemezek felépítése

BOOT szektor
A DOS lemezek 0. oldal, 0. sáv, 1. szektorát beolvasva megkapjuk a lemez BOOT szektorát. Az itt található adatok alapján meghatározható a lemez fizikai és logikai felépítése. Az alábbi táblázat lemezekre készült, de a csillaggal jelölt változók RAMDISK esetében is használhatók, a '-'-al jelölteket nem veszi figyelembe az EXDOS, a '!'-lel jelölteknél a megadott értékeken kívül eső érték esetén valamilyen szokásos értékre konvertál, esetleg kijelenti, hogy nem DOS lemez. A '@' jelölésűeket pedig az EPDOS hagyja figyelmen kívül. Az 'X' jelzi azt, hogy az adott értékre nincs ellenőrzés, ilyenkor nekünk kell gondoskodni arról, hogy értelmes adatok legyenek. (Például ne legyen több a BOOT szektorok száma a lemez szektorainak számánál.) A megadott értékek az EXDOS alatt helyesen kezeltek, zárójelben a használt érték. A ^ jellel jelölteket az MSDOS 6.0 sem kezeli, pedig a MICROSOFT találta ki a DOS formátumot.

00-02
-
        EBH. FEH, 90H IBM ( Ugrás a betöltő kódra)
03-10
-
        "EXDOS 1.0" rendszer (formázó software)
11-12  
*
!
 
^
#200 byte / szektor
13  
*
!
    1-2 szektor / cluster
14-15  
*
X
@
^
1-FFFFH (1) szektor / boot
16  
*
 
@
^
1-7 (2) FAT példányok száma
17-18  
*
X
    1-FFFFH (40H-70H) ROOT_DIR (főkönyvár MAX_FILE)
19-20  
*
      Formától függő szektor / disk
21
-
*
!
    F8H-FFH FORMA_TYPE
22-23  
*
X
    1-FFFFH szektor / FAT
24-25           8-10-11-13-18-22 szektor / track (EXDOS verziótól függ)
26-27    
!
    1-2 SIDE (oldalszám)
28-29  
*
X
@
^
0-FFFFH (0) fenntartott
Innentől csak EXDOS (vagy VT-DOS) lemezeken:
30
-
     
^
C9H RET, az MSX-DOS BOOT program belépési pontja
31-63
-
     
^
0 nullázás
64-69  
*
   
^
"VOL_ID" azonosító string
70  
*
   
^
0 UNDEL jelző-byte
71-74  
*
   
^
X1, X2, X3, X4 32 bites lemezazonosító
75-99
-
     
^
0 nullázás
100-511
-
     
^
E5H üres terület

A típus-byte RAMDISK esetében 2AH, lemezeknél F8H-FFH, ahol az alsó 3 bitnek formai jelentése van.

0. bit =1 oldalak száma 2
1. bit =1 sávonként 8 szektor
2. bit =1 szimplasűrű sávkiosztás
3-7. bit =1 beállított
3. bit = 0 - 3.5", HD lemez

FFH - DS/SD/8 (320K)
FEH - SS/SD/8 (160K)
FDH - DS/SD/9 (360K)
FCH - SS/SD/9 (180K)
FBH - DS/DD/8 (640K)
FAH - SS/DD/8 (320K)
F9H - DS/DD/9 (720K)
F8H - SS/DD/9 (360K)
F0H - DS/DD/18 (1440K)

Az EXDOS leellenőrzi, hogy a típus-byte F8H (F0H)-FFH közé esik-e, de ténylegesen nem ez alapján kezeli a lemezt, hanem a BOOT szektor adatai alapján, ha az érvényes adatokat tartalmaz. Az MS-DOS 1.x verziókkal formázott lemezek nem tartalmaznak még lemez paraméterblokkot a boot szektorban, itt még a FAT elején található típusbájt adta meg a lemez formátumát. Az EXDOS egyedülálló módon képes kezelni az Apricot számítógép lemezeit is, ahol a paraméterek nem a normális helyükön vannak a boot szektorban, hanem eltolva 50h címtől.
A lemez felismerésének pontos menete:

Ha nincs a meghajtóban lemez, vagy nem elérhető a meghajtó akkor természetesen Not ready hiba lesz.

FAT-1 A file-ok raktározására az elemi adatblokkok (CLUSTER), illetve ezeknek a láncolata hivatott. A blokkok könyvelése a FAT-területen történik. A mutatók mindegyike 12 bites szám, melyek sorban helyezkednek el. Pl. az 5. cluster foglaltságát 5*12 bit-től kezdve olvashatjuk. Az értékek jelentése:

000H - szabad cluster
FFFH - file vége
FFEH - nem használható cluster
FF7H - hibás cluster
egyéb - annak a clusternek a száma, ahol a file folytatódik.

A rendszer 0-ás és 1-es clustert nem használ, ezért helyükön #Tp, #FF, #FF byte-ok találhatók. (Tp = típus-byte) FAT-2 (vagy az utolsó FAT példány) A FAT-1 minden írási művelet esetén átmásolódik a FAT2 területre. Törlés esetén a cluster-ek felszabadítása csak a FAT-1 területen történik. UNDEL esetén a FAT-2 alapján helyreállítható az eredeti állapot. Ha csak 1 FAT van akkor nincs lehetőség az UNDEL-re. Ha 2-nél több FAT példányt használunk, akkor az utolsó kivételével mind a FAT-1 másolata, és ha a FAT 1 fizikailag megsérül, akkor amíg az EXDOS legalább egy jó példányt talál, addig helyesen (hibajelzés nélkül) kezeli a lemezt.
ROOT DIR A főkönyvtár a file-ok könyvelésére szolgáló, kötött méretű terület. Minden file-hoz 32 byte-os leíró tartozik. Egyes byte-ok jelentése:

00 file név első betűje, E5H ha törölt a file, 0 ha szabad bejegyzés
01-07 file név
08-10 kiterjesztés
11 attribútum
12 törlés után a név első betűje, egyébként 0
13-21 nulla (nem használt)
22-23 idő
24-25 dátum
26-17 kezdő cluster
28-31 méret

attribútum 0. bit = 1 READ ONLY
  1. bit = 1 HIDDEN
  2. bit = 1 SYSTEM
  3. bit = 1 VOLUME
  4. bit = 1 DIRECTORY
  5. bit = 1 ARCHIVE
  6., 7. bit 0  

TIME, DATE byte:

File elhelyezési tábla (File Allocation Table, FAT)
A FAT 12 bites bejegyzéseket tartalmaz, a lemez minden alapegységéhez egyet. Az első két bejegyzés a 0. és az 1. alapegységhez tartozik, amelyek nem léteznek, így az első alapegységhez tartozó FAT bejegyzés a FAT 4. byte-ján kezdődik. A FAT első 3 byte-ja a következő :

0. byte : FATID byte, mindig F8h...FFh
1. byte : mindig FFh
2. byte : mindig FFh

A FATID byte a lemezformátum meghatározására szolgál, ha nincs UPB a boot-szektorban, egyébként nem használatos.
Minden alapegységhez tartozó bejegyzés nulla, ha az alapegység szabad, egyébként az alapegység része egy file-nak, és a bejegyzés értéke a file következő alapegységének a számát adja meg. A file utolsó alapegységét a FF8h...FFFh értékek valamelyike jelzi. Ezáltal a file-t alkotó alapegységek láncba fűzötten jelennek meg a FAT-ban.
A FF0h...FF7h értékek a fenntartott alapegységeket jelölik, ha azok nem alkotják egy lánc elemét sem: a FF7h jelzi a hibás alapegységeket, amelyeket nem szabad használni.
Egy lemez a FAT-ot akárhány példányban tartalmazhatja. A másodpéldányokat akkor használják, ha az első lemezhiba miatt olvashatatlanná válik. Rendszerint az összes példány egyforma, de létezik egy kivétel ez alól (a file-visszaállítás érdekében).

Az EXDOS rendszer részletes bemutatása

1. Bevezető

 Ahogy korábban írtuk, az EXDOS központi része a FISH, amellyel ugyan általában nincsen közvetlen kapcsolatban a felhasználói program, de az EXDOS CLI és a DISK periféria is a FISH funkcióhívásait használja, ezért elsőként ezt a központi részt részletezzük.

1.1 EXDOS ROM belépési pontok
Az EXDOS ROM egy szabványos EXOS ROM, két további belépési ponttal a FISH és a DISKIO számára. A DISKIO belépési pont lehetőséget biztosít a lemezvezérlő hardver közvetlen használatára az EXDOS kikerülésével. A FISH belépési pont lehetőséget ad valamennyi fájl és lemezkezelő funkció elérésére, pl. az ISDOS számára. Természetesen létezik a normál EXOS belépési pont is, ami szintén számos lehetőséget biztosít, beleértve az inicializálást, és az EXDOS CLI-t. Az EXDOS ROM kezdete a következő:

00h DB "EXOS_ROM"
08h DW 0
0Ah JP SYS_EXT
0Dh JP DISKIO
10h JP FISH

2. Inicializálás

Hidegindítás során az EXOS megtalálja, és beláncolja az EXDOS ROM-ot a rendszerbővítő ROM-ok listájába. Az EXDOS inicializálásának fő lépései:

2.1 Inicializálási fájl - "EXDOS.INI"
Az "EXDOS.INI" fájl egy szöveges fájl, amely rendszerbővítő parancsok sorát tartalmazza. Egyszer lesz végrehajtva, amikor az EXOS körbekérdezi a ROM-okat a hidegindítás kódjával. A parancsok lehetnek tetszőleges szövegsorokban, mindegyik körbe lesz kérdezve a bővítő ROM-ok között, némelyiket maga az EXDOS ROM fogja felismerni. Bármely EXDOS CLI parancs (lásd az EXDOS felhasználói kézikönyvet) használható, és természetesen bármely más bővítő által felismert parancsok is használhatóak.
Pl. lehetséges a "RAMDISK" paranccsal létrehozni a RAM disk-et, majd a "COPY" paranccsal fájlokat másolni bele. Ezután folytatódik a ROM körbekérdezés, és pl elindul az IS-BASIC, ha csatlakoztatva van a cartridge. Az "EXDOS.INI"-t lehet használni arra is, hogy bármely más program számára beállítsuk a szükséges környezetet.
Hasznos parancs lehet a "LOAD" is, amivel rendszerbővítőket vagy felhasználói programot (pl. ISDOS) tölthetünk be. A "VAR" parancs segítségével pedig EXOS változókat állíthatunk be.
Amikor megtalálja az "EXDOS.INI" fájlt az EXDOS, a végrehajtás előtt megnyit egy EDITOR csatornát a hozzátartozó VIDEO és KEYBOARD csatornákkal, és ezt állítja be alapértelmezett csatornának, ezzel lehetőséget ad a meghívott parancsprogramoknak az alapértelmezett csatornán történő ki- és bevitelre. A parancsok végrehajtása után ezek a csatornák be lesznek zárva.

2.2 újrainicializálás
Az eddig felsorolt procedúrák csak egyszer, a teljes EXOS hidegindításkor zajlanak le, normális esetben bekapcsoláskor. Ha melegindítás történik valamilyen okból, akkor az EXDOS-t is újrainicializálja az EXOS. Az EXDOS ekkor újra beláncolja az általa létrehozott EXOS perifériákat, ha szükséges. Meghívja a csatlakoztatott egységes kezelőprogramját 1-es akciókóddal (melegindítás), végül pedig az EXDOS bővítő ROM-okat egy újabb speciális paranccsal: "EXDOS",0FBH amelyre a hidegindítási parancshoz hasonló módon kell reagálniuk.
Amikor egy új felhasználói program betöltése közben hiba történik az EXOS szintén 1-es (hidegindítás) kóddal kérdezi körbe a ROM bővítőket, amely egyébként csak bekapcsoláskor jár körbe. Az EXDOS ilyenkor felismeri, hogy újraindítás történik, és nem keresi újra az "EXDOS.INI" fájlt, de automatikusan újratölti az ISDOS-t, ha az ISDOS volt az ami a programot betölteni akarta.

3. Rendszerváltozók

VERIFY Automatikus ellenőrzés írás után (0=be, FFh=ki)
DEF_UNIT Default Unit (meghajtó megadásának hiányában használt egység) száma : 1...26
BOOT_DRV Nem használt.
STEP_RATE Léptetés az UNITH számára (0=6ms, 1=12ms, 2=20ms, 3=30ms)
DSK_CHK 0 esetén engedélyezve a teljes diszk-változás ellenőrzés a már nyitott file-okra
AB_ERR ABORT hibát eredményező diszk-hibakód
BCH_DIS Ha nem 0, a DOS "elhiszi", hogy a diszk nem változott.

4. DISKIO hívások

A használt rövidítések:

TRC: transzfercím (IX-regiszter)
MEGH: meghajtó maszk (B-regiszter 0.bit=A, 1.bit=B, 2.bit=C, 3.bit=D)
OLD: oldalszám (SIDE) (0-1) (C-regiszter 0. bitje)
SÁV: sávszám (TRACK) (0-254) (D-regiszter) (a 255 az aktuális sáv)
SZEK: szektorszám (SECTOR) (1-13) (E-regiszter)
SZEKN: szektorok száma (1-13) (L-regiszter)
ST: státus (H-regiszter)
     bit 0-1 = fejléptető sebesség,
     bit 2 = előkompenzálás engedélyezése,
     bit 3 = duplasűrű meghajtó szimplasűrű lemezt kezel,
     bit 5 = felírási mód (0=MFM, 1=FM)

A hívás általános tudnivalói:

5. FISH hívások

A használt rövidítések:

STR: eszköz:\ösvény\fájlnév .kiterjesztés
UV: útvonal (ösvény)
MEGH: meghajtó száma (1 = A, 2 = B, 3 = C, stb, 0 = aktuális)
FMEGH: fizikai meghajtó száma
KFCB: kereső fájl kontrol blokk
MFCB: meghatározott fájl kontrol blokk
TRC: transzfercím (felhasználói puffercím)
SIZE: bájtok száma (fájl vagy blokk méret)
SZEK: logikai szektorszám (kezdő szektorszám)
SZEKN: szektorok száma (mozgatandó szektorok)

A hívás általános tudnivalói:

6. File Control Block-ok (FCB-k) formátuma

KFCB: (használatba vétel előtt a területet nullázni)

00 FF (keresési FCB)
01-05 kötelezően 0
06 Keresési attribútum (csak VOL-ra)
07 Meghajtó (0 = aktuális)
08-0F Fájlnév > (lehet ? is)
10-12 Kiterjesztés
13-1C ?
1D-1E Logikai szektorszám
1F A katalógushoz tartozó szektorok száma: (DEC ciklusszámláló 1 = utolsó)
20 A szektorhoz tartozó fájlleírók száma (DEC ciklusszámláló 16 = 1. fájl)
21-2B ?
2C-2F Lemez azonosító (ID szám)

MFCB: (megtalálva)

00 FE (meghatározott FCB)
01-05 0
06 Keresési attribútum
07 Meghajtó
08-0F Fájlnév (08-27 a beolvasott fájlleíró adatok)
10-12 Kiterjesztés
13 Fájl attribútum
14-1D  
1E-1F Idő
20-21 Dátum
22-23 Kezdő cluster
24-27 Fájlméret
28-2B Fájlmutató
2C-2F Lemez azonosító (ID szám)

MFCB: (megnyitva)

00 FE
01-05 0
06 Keresési attribútum
07 Meghajtó
08-12 Fájlnév + kiterjesztés
13 Attribútum
14-16 0
17-1A Fájl meglévő mérete (SIZE)
1B-1C Dátum
1D-1E Idő
1F ?
20 ? (ha bit 6 = 1 akkor írás történt)
21-22 Kezdő cluster
23-24 Aktuális cluster
25-27 Cluster számláló (0 = első)
28-2B Fájlmutató
2C-2F Lemez azonosító

7. Meghajtó adatterület (3+n*60H méretű)

Minden lemezkezelő eszközhöz tartozik egy meghajtó leíróblokk, amelyek láncba vannak szervezve. A blokk első 3 bájtja az előző leíróblokk címe: szegmensszám, első lapon érvényes cím. Nullás értékek jelzik a lista végét. Ezután következnek az adott eszközhöz tartozó 60H hosszú meghajtó leírók, annyi darab, ahány belső egységet kezel az eszköz (A floppykat kezelő UNITH esetén ez 4, a RAMUNIT esetén 1, IDE bővítés esetén a felismert partíciók számától függ).

00 Meghajtó RAM terület szegmensszáma, kivéve a beépített egységek esetén, ott a UNITH meghajtóinál 0, RAMUNIT-nál 2.
01-02
Meghajtó RAM terület címe. Beépített EXDOS egységek esetén ez szokásosan az EXDOS RAM terület 80h bájtjára mutat, bővítő egységek esetén megegyezik azzal a címmel, amit a bővítő megadott a leírok létrehozásához, tehát a meghajtóleíró-blokk 0. bájtjára mutat.
03 Meghajtó kezelőprogram szegmensszáma.
04-05 Meghajtó kezelőprogram címe (3. lapon).
06 Belső egységszám. Minden egység esetén 0-tól induló belső sorszám.
07
Meghajtószám MAPDISK átirányításhoz. Ha nincs átirányítás, akkor megegyezik a fizikai meghajtószámmal.
08
Fizikai meghajtószám. 1-től kezdődik, beláncolás sorendjében folyamatosan növekvően kerül kiosztásra FISH 21 ide mutató IX-et ad vissza.
09
Lemezcsere ellenőrzés jelzőbájt, beláncoláskor 0.
0,1 érték esetén nem ellenőriz, 2 esetén a hw lemezcserejelet kéri le és ha az cserét jelez, akkor ellenőrzi a lemez sorozatszámát.
2-nél nagyobb érték esetén egyből a lemez sorozatszámát ellenőrzi. 2-nél nagyobb érték esetén a DISK: megszakítás 1-el csökkenti lemezcsere ellenőrzött művelet után 100-ra állítja.
0A Cluster maszk (egy clusterben lévő szektorok száma-1)
0B
Cluster eltolás (clusterméret 2-es alapú logaritmusa, azaz 2 hányadik hatványa a méret).
0C-0D Boot szektorok száma = első FAT szektor sorszáma.
0E FAT példányok száma.
0F
Bejegyzések száma az utolsó főkönyvtár szektorban, 0 ha 16 bejegyzés van, azaz a teljes szektort kitölti.
10
Főkönyvtár teljes szektorainak száma. Ha ez előző érték nem 0, akkor van még 1 csonka szektor is.
11 FAT szektorok száma.
12-13 Első főkönyvtár szektor sorszáma (0. cluster).
14-15 2. cluster logika szektorszáma (első adatszektor).
16-17 Legnagyobb lehetséges cluster sorszám+1 (clusterek száma+2).
18 UNDEL jelzőbájt.
19-1C 32 bites lemez azonosító (ID).
1D Formázási típusbájt.
1E-1F
Aktuális könyvtár kezdő cluster száma, 1Fh 7-es bitje 1, ha a főkönyvtár az aktuális.
20-5F Aktuális útvonal sztring, 00h-val lezárva.

8. A FISH ás EXOS változók összefüggése

64 (IY-5E) EXDOS-ROM szegmensszám
65 -5D P0
66 -5C P1 A transzfercím számoláshoz
67 -5B P2
68 -5A P3
69 -59 ECHO-flag
70 -58 VERIFY-flag
71 -57 aktuális meghajtó
72 -56 ISDOS-BOOT-DRV
73 -55 STEP-RATE
74 -54 DISK-CHANGE-FILE-flag
75 -53 ERROR-INP-csat
76 -52 ERROR-OUT-csat
77 -51 CLI-INP-csat
78 -50 CLI-OUR-csat
79 -4F DATE-TIME-forma
80 -4E ERROR-DISABLE-flag
81 -4D DISK-ERROR-code
82 -4C ISDOS-ERROR-code
83 -4B ISDOS-CLI-védelmi-flag
84 -4A RND0
85 -49 RND1 A VOL-ID-hez
86 -48 RND2
87 -47 RND3
88 -46 CLI-END-flag
89 -45 DISK-CHANGE-flag
90 -44 FAST-VIDEO-flag
91 -43 DIR-END-flag
92-99 -42-3B fenntartott terület
  -3A ERROR-seg
  -39 ERROR-prtL
  -38 ERROR-prtH

9. Hibakódok - hibaüzenetek

CFh .NOFIL File not found a file nem található
BFh .NOUPB   belső hiba
BDh .ICMD   belső hiba
BCh .IUNUM   belső hiba
BBh .ISECT   belső hiba
BAh .NRDY Not ready nem üzemkész
B9h .VERIFY Verify error hiba az ellenőrzésnél
B7h .SNF Sector not found a szektor nem található
B6h .WPROT Write protected disk írásvédett lemez
B5h .UFORM Unformatted disk formálatlan lemez
B4h .NDOS Not a DOS disk nem DOS lemez
B3h .WDISK Wrong disk rossz lemez
B2h .WFILE Wrong disk for file rossz lemez a file számára
B1h .WDRV Insert disk for drive x: helyezzen be lemezt az x: meghajtóba
B0h .ICALL   érvénytelen FISH funkciószám
AFh .IDRV Invalid drive érvénytelen meghajtó
AEh .IPARM Invalid parameter érvénytelen paraméter
ADh .DRFUL Root directory full a gyökérkönytár megtelt
ACh .DKFUL Disk full a lemez megtelt
ABh .DUPF Duplicate file name kétszeres file név
AAh .NODIR Directory not found a directory nem található
A9h .DIRE Invalid directory move érvénytelen directory áthelyezés
A8h .IPATH Invalid pathname string érvénytelen útvonalnév-string
A7h .FILRO Read only file csak olvasható file
A6h .IFNM Invalid filename érvénytelen file név
A5h .DIRNE Directory not empty a directory nem üres
A4h .ABORT Disk operation aborted a lemezművelet félbeszakadt
A3h .IFAT   Egy, a FAT táblából beolvasott érték kívül esik a lemez címtartományán.
A0h .IFCB   Érvénytelen volt a FISH-nek átadott FCB
9Fh .INP Invalid number of parameters érvénytelen számú paraméter
9Eh .DOT Invalid . or .. operation érvénytelen . vagy .. művelet
9Ch .BFUL Command too long túl hosszú parancs (max. 128 karakter)
9Bh .OV64k   A 64k-s területen túlnyúló mennyiségű adatot próbáltunk meg írni/olvasni
9Ah .FILE   A file alapegységlánca túl rövid a directory-bejegyzésben megadott mérethez.
99h .SYSX System file exists a rendszer-file létezik
98h .DIRX Directory exists a directory létezik
96h .NCOMP Incompatible disk nem kompatibilis lemez
95h .ICOPY File cannot be copied onto itself a file nem másolható önmagára

A FISH hibakezelés átvétele: (IY-3A-38)

A rutin a 0. vagy az 1. lapon lehet. A szegmensszám nem nulla értéke esetén, minden FISH hibánál megkapjuk a vezérlést.

B = hibakód     A = 0 - a hibakezelés visszaadása a FISH-nek
C = MEGH = 1 - ABORT
                    = 2 - RETRY
                    = 3 - IGNORE
                    = 4-255 - ABORT

Vissza