Práce se souborovým systémem pomocí služeb DOSu
Odkazy na soubor probíhají pomocí věci, která se jmenuje
FileHandle. Je to 16-ti bitové číslo. DOS má někde v paměti
tabulku, ve které ma uloženy všechny důležité údaje o souboru.
Aktuální pozici, jeho velikost, atd... FileHandle je potom ukazatel
do této tabulky. Zadáte-li v CONFIG.SYS FILES=20, říkáte tím dosu,
aby si v paměti vyhradil místo na tabulku pro 20 souborů.
OTEVŘENÍ SOUBORU:
Vstup:
AH = 3Dh
AL = mód otevření
bity 7-3: Nezajímavé věci
bity 2-0: Způsob přístupu
000 jen pro čtení
001 jen pro zápis
010 čtení i zápis
DS:DX = ukazatel na jméno souboru v ASCIIZ
ASCIIZ je text v normalním ASCII ukončený bajtem 0.
Výstup:
CF = 1 chyba
AX = číslo chyby, nám stačí, že pokud je nastaveno carry,
nepodařilo se otevřít soubor
CF = 0 bez chyby
AX = FileHandle, toto si někam uložte, to je jediná cesta,
jak můžete pracovat s tímto souborem!
UZAVŘENÍ SOUBORU
Vstup:
AH = 3Eh
BX = FileHandle
Výstup:
CF = 1 Chyba
ČTENÍ SOUBORU
Vstup:
AH = 3Fh
BX = FileHandle
CX = Počet načítaných bajtů.
DS:DX = Ukazatel do paměti, kam mají být umístěna načtená data.
Výstup:
AX = Kolik bajtů bylo načteno.
ZÁPIS DO SOUBORU
Vstup:
AH = 40h
BX = FileHandle
CX = Kolik bajtů zapsat
DS:DX = Kde jsou v paměti data, která mají být zapsána na disk.
Výstup:
AX = Kolik bajtů bylo zapsáno, jestli se to liší od
požadovaného počtu, máme někde chybu.
VYTVOŘENÍ SOUBORU
Vstup:
AH = 3Ch
CL = atribut souboru
bit 0: read-only
bit 1: hidden
bit 2: system
bit 3: volume label
bit 4: sub directory
bit 5: Archive
bit 6&7: nepoužívat
DS:DX= ukazatel na ASCIIZ název vytvářeného fajlu
Výstup:
CF = 1 chyba
AX = kód chyby
CF = 0 bez chyby
AX = FileHandle
SMAZÁNÍ SOUBORU
Vstup:
AH = 41h
DS:DX = ukazatel na ASCIIZ jméno fajlu
Výstup:
CF = 1 chyba
AX = kód chyby
2 = file not found,
3 = path not found
5 = access denied
CF = 0 bez chyby, soubor je pryč
PŘESUN UKAZATELE V SOUBORU
Vstup:
AH = 42h
BX = FileHandle
CX:DX = 32 bit ukazatel do souboru, kam se bude sunout.
AL = 0 CX:DX je posun od začátku fajlu.
= 1 CX:DX je posun od aktuální pozice.
= 2 CX:DX je posun od konce souboru.
Výstup:
CF = 1 chyba
AX = chybový kód
CF = 0 bez chyby, posunuto.
DX:AX současná pozice v souboru.
ZMĚNA ATRIBUTU
Vstup:
AH = 43h
DS:DX = ukazatel na jméno souboru v ASCIIZ
AL = 0 v CX vrátí aktuální atributy.
AL = 1 nastaví atributy podle CX
Výstup:
CF = 1 chyba
AX = Chybový kód
2 = file not found,
3 = path not found.
5 = access denied
CF = 0 bez problémů
výheň