TITLE "DOS_FILE" - Ovládá funkce DOSu pro práci se soubory. .8086 ; Linkuje se pro 80 86 PAGE 67, 130 ; Stránka 67 zn., délka 130 zn./řádek COMMENT @ =========================================================================== Název souboru : DOS_FILE.ASM Link OBJ & LIB : DOS_FILE.ZIP Datum úprav : 01.09.97 Verze programu : 4.00 (c) Copyright : 1993,94,95,96,97 by NST 32 , Medo Zdeněk junior ===========================================================================@ Knihovna_NST32 SEGMENT PARA PUBLIC 'CODE' USE16 ASSUME CS:Knihovna_NST32 PUBLIC __dos_file_open ; EXTRN __dos_file_open :PROC :NEAR PUBLIC __dos_file_new ; EXTRN __dos_file_new :PROC :NEAR PUBLIC __dos_file_delete ; EXTRN __dos_file_delete :PROC :NEAR PUBLIC __dos_file_rename ; EXTRN __dos_file_rename :PROC :NEAR PUBLIC __dos_file_atribut ; EXTRN __dos_file_atribut :PROC :NEAR PUBLIC __dos_file_date_time ; EXTRN __dos_file_date_time :PROC :NEAR PUBLIC __dos_file_point ; EXTRN __dos_file_point :PROC :NEAR PUBLIC __dos_file_read ; EXTRN __dos_file_read :PROC :NEAR PUBLIC __dos_file_write ; EXTRN __dos_file_write :PROC :NEAR PUBLIC __dos_file_close ; EXTRN __dos_file_close :PROC :NEAR ;--------------------------------------------------------------------------- ; ; Popis funkce : Otevři soubor - Open File ; -------------- ; ; Volání(např.) : mov al, TypOpen ; AL = 00 Open pro čtení ; -------------- ; AL = 01 Open pro zápis ; ; AL = 02 Open pro čtení a zápis ; mov dx, NAME ; DS:DX Offset názvu+cesta a disk ; call __dos_file_open ; Otevři soubor ; ; Výstup : CF=1 Nastala chyba, AX = Kód chyby ; -------------- BX = Číslo kanálu ; ; Mění registry : Flags, AX, BX ; -------------- ; ;--------------------------------------------------------------------------- __dos_file_open PROC NEAR mov ah, 3Dh ; Open File int 21h mov bx, ax ; V BX je kanál retn ; Návrat NEAR __dos_file_open ENDP ;--------------------------------------------------------------------------- ; ; Popis funkce : Vytvoř soubor - New File ; -------------- ; ; Volání(např.) : mov cx, ATRIBUTY ; Atributy souboru ; -------------- mov dx, NAME ; DS:DX Offset názvu+cesta a disk ; call __dos_file_new ; Vytvoř nový soubor pro zápis ; ; Výstup : CF=1 Nastala chyba, AX = Kód chyby ; -------------- BX = Číslo kanálu ; ; Mění registry : Flags, AX, BX ; -------------- ; ;--------------------------------------------------------------------------- __dos_file_new PROC NEAR mov ah, 3Ch ; New File int 21h mov bx, ax ; V BX je kanál retn ; Návrat NEAR __dos_file_new ENDP ;--------------------------------------------------------------------------- ; ; Popis funkce : Smaž soubor - Delete File ; -------------- ; ; Volání(např.) : mov dx, NAME ; DS:DX Offset názvu+cesta a disk ; -------------- call __dos_file_delete ; Smaž soubor ; ; Výstup : CF=1 Nastala chyba, AX = Kód chyby ; -------------- ; ; Mění registry : Flags, AX ; -------------- ; ;--------------------------------------------------------------------------- __dos_file_delete PROC NEAR mov ah, 41h ; Delete File int 21h retn ; Návrat NEAR __dos_file_delete ENDP ;--------------------------------------------------------------------------- ; ; Popis funkce : Přejmenuj soubor - Reaname File ; -------------- ; ; Volání(např.) : mov dx, NAME ; DS:DX Offset starého názvu ; -------------- mov di, NewNAME ; ES:DI Offset nového názvu ; call __dos_file_rename ; Přejmenuj soubor ; ; Výstup : CF=1 Nastala chyba, AX = Kód chyby ; -------------- ; ; Mění registry : Flags, AX ; -------------- ; ;--------------------------------------------------------------------------- __dos_file_rename PROC NEAR mov ah, 56h ; Rename File int 21h retn ; Návrat NEAR __dos_file_rename ENDP ;--------------------------------------------------------------------------- ; ; Popis funkce : Změna atributů souboru - Atribut File ; -------------- ; ; Volání(např.) : mov dx, NAME ; DS:DX Offset názvu+cesta a disk ; -------------- mov cx, 0000000000000000B ; (jen pro zápis) Atr.souboru ; |||||||| ; |||||||+--> R Read-only ; ||||||+---> H Hidden ; |||||+----> S System ; ||||+----->'volume - Název disku ; |||+------>'dir - Adresář ; ||+-------> A Archive ; || ; Nepoužito ; mov al, Func ; AL = 00 Přečte nastavení atributů ; ; AL = 01 Nastav atributy podle CX ; call __dos_file_atribut ; Čti/Zapiš atribut souboru ; ; ; Výstup : CF=1 Nastala chyba, AX = Kód chyby ; -------------- CX = kód atributu souboru ; ; Mění registry : Flags, AX, CX ; -------------- ; ;--------------------------------------------------------------------------- __dos_file_atribut PROC NEAR mov ah, 43h ; Atribute File int 21h retn ; Návrat NEAR __dos_file_atribut ENDP ;--------------------------------------------------------------------------- ; ; Popis funkce : Čti/Nastav datum a čas souboru - Date and Time File ; -------------- ; ; Volání(např.) : mov al, Typ ; AL = 00 Čti datum a čas ; -------------- ; AL = 01 Zapiš datum a čas ; mov bx, Kanál ; Číslo kanálu ; mov cx, Čas ; (při AL=1) Nový čas ; mov dx, Datum ; (při AL=1) Nový datum ; call __dos_file_date_time ; Čti/Zapiš datum a čas souboru ; ; ; Výstup : CF=1 Nastala chyba, AX = Kód chyby ; -------------- CX = Čas ; (při AL=0) Stávající čas souboru ; DX = Datum ; (při AL=0) Stávající datum souboru ; ; Mění registry : Flags, AX, CX, DX ; -------------- ; ; Formát dat : DX => 0000000 0000 00000 ; ------------- Rok Měsíc Den ; 0-119 1-12 0-31 ; ; CX => 00000 000000 00000 ; Hodiny Minuty Sekundy ; 0-23 0-59 po 2 sec.0-30 ;--------------------------------------------------------------------------- __dos_file_date_time PROC NEAR mov ah, 57h int 21h retn ; Návrat NEAR __dos_file_date_time ENDP ;--------------------------------------------------------------------------- ; ; Popis funkce : Ukazatel v diskovém souboru - Pointer File ; -------------- ; ; Volání(např.) : mov bx, Kanál ; Číslo kanálu ; -------------- mov al, Typ ; AL = 00 Ukaztel je posunut o ; ; CX:DX bajtů od začátku ; ; AL = 01 Ukazatel je posunut o ; ; CX:DX bajtů od aktuální ; ; pozice ukazatele v souboru ; ; AL = 02 Ukazatel je posunut na ; ; konec souboru, plus o ; ; CX:DX bajtů od konce souboru ; cx:dx ; Počet bajtů, o které se má ukazatel posunout ; call __dos_file_point ; Posuň ukazovátko souboru ; ; Výstup : CF=1 Nastala chyba, AX = Kód chyby ; -------------- Není-li CF=1, pak je v CX:DX nová pozice ukazatele souboru ; ; Mění registry : Flags, AX ; -------------- ; ;--------------------------------------------------------------------------- __dos_file_point PROC NEAR mov ah, 42h ; Point File int 21h retn ; Návrat NEAR __dos_file_point ENDP ;--------------------------------------------------------------------------- ; ; Popis funkce : Čte data ze souboru - Read File ; -------------- ; ; Volání(např.) : mov bx, Kanál ; Číslo kanálu ; -------------- mov dx, BUFFER ; DS:DX Adr.,kam se mají data uložit ; mov cx, 1000 ; Počet bajtů, o které má funkce přenést ; call __dos_file_read ; Čti data ze souboru ; ; Výstup : CF=1 Nastala chyba, AX = Kód chyby ; -------------- Není-li CF=1, pak je v AX počet přenesených bajtů ; ; Mění registry : Flags, AX ; -------------- ; ;--------------------------------------------------------------------------- __dos_file_read PROC NEAR mov ah, 3Fh ; Read File int 21h retn ; Návrat NEAR __dos_file_read ENDP ;--------------------------------------------------------------------------- ; ; Popis funkce : Zapisuje data do souboru - Write File ; -------------- ; ; Volání(např.) : mov bx, Kanál ; Číslo kanálu ; -------------- mov dx, BUFFER ; DS:DX Adr.,odkud se mají data číst ; mov cx, 1000 ; Počet bajtů, o které má funkce přenést ; call __dos_file_write ; Zapiš data na disk ; ; Výstup : CF=1 Nastala chyba, AX = Kód chyby ; -------------- Není-li CF=1, pak je v AX počet skutečný zapsaných bajtů ; ; Mění registry : Flags, AX ; -------------- ; ;--------------------------------------------------------------------------- __dos_file_write PROC NEAR mov ah, 40h ; Write File int 21h retn ; Návrat NEAR __dos_file_write ENDP ;--------------------------------------------------------------------------- ; ; Popis funkce : Zavři soubor - Close File ; -------------- ; ; Volání(např.) : mov bx, Kanál ; Číslo kanálu ; -------------- call __dos_file_close ; Zavři kanál ; ; Výstup : CF=1 Nastala chyba, AX = Kód chyby ; -------------- ; ; Mění registry : Flags, AX ; -------------- ; ;--------------------------------------------------------------------------- __dos_file_close PROC NEAR mov ah, 3Eh ; Close File int 21h retn ; Návrat NEAR __dos_file_close ENDP Knihovna_NST32 ENDS END