Int 21
Int 21
DOS 1.x
AH=00:Terminate Program (=INT 20)
CS->PSP restauraț i vectorii INT 22, 23, 24 din vechi
valori stocate în PSP.
nu închide fiș ierele deschise.
AH=01:Citeste tastatura cu ecou AL=InputChar
=0 pentru taste extinse (taste de funcț ie etc)
- inputul poate fi redirecț ionat următoarea apelare citeș te codul scannerului
<ctrl-break>: INT 23
AH=02: Afiș aț i caracterul
- ieș irea poate fi redirecț ionată
DL=OutputChar
=7 (Bip)
<ctrl-break>: INT 23
AH=03:Auxiliary Input AL=InputChar
aș teaptă input de la dispozitivul standard <ctrl-break>: INT 23
(COM1) - inputul poate fi redirecț ionat către
alt port serial (prin MODE)
AH=04:Auxiliary Output
la dispozitiv standard (COM1) - poate fi
redirectat
DL=OutputChar
<ctrl-break>: INT 23
AH=05:Tipăreș te caracter vezi INT 17
DL=OutputChar - către imprimanta standard (LPT1)
<ctrl-break>: INT 23
AH=06:Intrare/ieș ire directă de consolă citeș te - caracter gata:
Zf=0, AL=InputChar
DL= FF:citeș te de la intrarea standard (tastatură)
- nu aș tepta - fără ecou (=0: cheie extinsă - citeș te din nou)
- nu există control pentru <^break> citire - caracterul nu este pregătit:
Zf=1, AL nedefinit
< FF:scrie DL pe ieș irea standard (ecran)
AH=07:Intrare directă în consolă AL=InputChar
citiț i de la intrarea standard (tastatură)
(=0: cheia extinsă - citeș te din nou)
- aș teptaț i cheia - fără ecou
- nu există verificare pentru <^break>
AH=08:Citire tastatură fără ecou AL=InputChar
citeș te din intrarea standard (=0: cheie extinsă - citeș te din nou)
- aș teptaț i cheia - fără ecou
- verifică pentru <^break> (INT 23)
AH=09:Display String
DS:DX -> String$
fiecare caracter este trimis ca cu funcț ia
02: Afiș aț i caracter
AH=0A:Intrare de la tastatură cu buffer byte[DX+1]=bytes citite (excl. CR terminal)
citeș te ș irul de la input-ul standard [DX+2]=primul octet
- aș teptaț i inputul - ecou terminal byte = 0D <Enter>
- terminat de <enter>
(utilizat de [Link] la prompt) dacă bufferul este plin: intrarea suplimentară va fi
DS:DX -> tampon: neglijate ș i bipuri emise
byte[DX] : lungimea buffer-ului (1..255)
AH=0B:verifică starea tastaturii AL=00: buffer empty
=FF: cel puț in un caracter în buffer
<ctrl-break>: INT 23
AH=0C:Spală Buffer, Citeș te Tastatura AL=InputChar
bufărul de intrare standard gol, apoi:
AL=01: INT 21,1: Citeș te tastatura cu ecou
=06: INT 21,6: I/O Direct la Consolă
=07: INT 21,7: Intrare Directă Consolă
=08: INT 21,8: Citeste tastatura fara ecou
=0A: INT 21,A: Intrare de la tastatură tamponată
AH=0D:Resetare unitate disc
! fiș ierele cu dimensiuni schimbate trebuie să fie
închis înainte de apel!
Goleste toate buffer-urile de fiș iere.
AH=0E:selectaț i unitatea de disc AL=numărul total de unităț i logice
unitatea selectată va fi noua implicită
DL=driveID: 0=A, 1=B,,,
AH=0F:Deschide Fiș ier AL=00: fiș ier deschis - FCB completat
DS:DX->FCB să fie deschis =FF: error
AH=10:Închide Fiș ierul AL=00: fiș ier închis
DS:DX->deschide FCB =FF: eroare
AH=11:Cauta prima potrivire de fiș ier AL=00: match found
la filespec (caractere generice permise) în [Link] umplut cu FCB neandaagere
Caută doar în directorul curent - - deschiderea fiș ierului distruge informaț iile pentru
pentru căutarea căii, folosiț i INT 21,4E. Caută următorul
Înainte de acest apel: foloseș te INT 21,1A: Set =FF: nu găsit
DTA.
DS:DX->FCB (nu este deschis)
AH=12:Caută fiș ierul următor care se potriveșAL=00:
te match found
Înainte de acest apel: foloseș te anterior DTA umplut cu FCB neevaporizat
DS:DX->FCB (nu este deschis) - deschiderea fiș ierului distruge informaț iile pentru
Caută următorul
=FF: nu a fost găsit
AH=13:Delete file AL=00: file(s) deleted
=FF: eroare
Toate fiș ierele care se potrivesc cu specificaț ia de fiș ier în FCB
sunt ș terse.
DS:DX->FCB (nu este deschis)
AH=14:Read File Sequential AL=00: înregistrarea fiș ierului citită în memorie la DTA
DS:DX->deschide FCB cu FCB actualizat la următorul înregistrare
- filename =01: EOF (fără date)
- record size =02: DTA prea mic
numărător de înregistrări EOF (parte a înregistrării citite)
AH=15:Scrie fiș ier secvenț ial AL=00: înregistrare fiș ier scrisă din DTA în
DS:DX->deschide FCB cu buffer - sectoare întregi sunt scrise
- nume fiș ier pe disc
- record size FCB actualizat la următorul record
- contor de înregistrări =01: Disc plin
=02: DTA prea mic
AH=16:Creare Fiș ier AL=00: Fiș ier creat cu lungimea 0
DS:DX->FCB (nu deschis) cu numele fiș ierului =FF: eroare
AH=17:Renumeș te fiș ierul cu FCB AL=00: File(s) renamed
DS:DX->FCB cu un nou fiș ier specificat =FF: eroare
AH=19:Get Default Drive AL=0,1,..: A,B,..
AH=1A:Setare adresă DTA
(80h în PSP dacă nu este setat)
DS:DX->DTA-adresă
AH=1B: Obț ineț i informaț ii FAT AL=sectors pr cluster
pentru unitatea curentă (implicită) CX=dimensiunea sectorului
DX=numărul de clustere
DS:BX->byte descriptor media
AL=sectoare
AH=1C: Obț ineț i informaț ii FAT pentru unitatea pe cluster
specificată
DL=Drive number CX=dimensiunea sectorului
DX=numărul de clustere
DS:BX->byte descriptor media
AH=21:Citire înregistrare aleatoare AL=00: Înregistrare citită în DTA
DS:DX->deschide FCB =01: EOF (fără date)
=02: DTA prea mic
=03: EOF (parte a înregistrării citite)
AH=22:Scrie înregistrare aleatoare AL=00: Înregistrare scrisă din DTA
DS:DX->deschide FCB Disk plin
DTA prea mic
AH=23:Obț ineț i dimensiunea fiș ierului AL=00: nr. de înregistrări returnate în FCB
no. of records =FF: eroare
DS:DX->FCB cu
- filespec
- RecordSize
AH=24:Setează numărul aleatoriu al înregistrării
folosind CurBlockNo ș i CurRecNo
DS:DX->deschide FCB
AH=25:set interrupt vector
AL=int nr.
DS:DX=o nouă vector
AH=26:Creare PSP nou
cu o copie a programelor .COM apelante
PSP (CS trebuie să se refere la acesta)
DX=adressă segment a noului PSP
AH=27:Citire bloc aleatorie AL=00: Înregistrări citite în DTA
DS:DX->deschide FCB =01: EOF (fără date)
CX=numărul de înregistrări care trebuie citite
=02: DTA prea mic
=03: EOF (parte a înregistrării citite)
CX=numărul de înregistrări citite
AH=28:Scriere aleatoare în bloc AL=00: Înregistrări scrise din DTA
DS:DX->deschide FCB =01: EOF (fără date)
CX=numărul de înregistrări care urmează a fi =02:
scriseDTA prea mic
CX=numărul de înregistrări scrise
AH=29:Analizează Numele Fiș ierului AL=00: nu s-au folosit caractere wildcard
AL=Analiza controlului bitilor: =01: caractere wildcard utilizate
vezi MS-DOS PR p.254 =FF: unitate nu acceptată
DS:SI->Linia de Comandă ("d:numele_fisierului.ext'0'")
DS:SI->[Link] după nume fiș ier
ES:DI->[Link]
caractere generice ok sau mai multe nume de fiș iere de FCB umplut
separate prin spaț ii
ES:DI->FCB de completat (nu deschis)
AH=2A:Obț ine data AL=weekday (0=sunday)
CX=year (1980-2099)
DH=month (1-12)
DL=day (1-31)
AH=2B:Setare dată AL=00: no error
CX=year (1980-2099) AL=FF: eroare
DH=month (1-12)
DL=day (1-31)
AH=2C:Obț ine timpul CH=hours (0-23)
CL=minutes (0-59)
DH=seconds (0-59)
DL=sec/100 (0-99)
AH=2D:Setare timp AL=00: no error
CH=hours (0-23) AL=FF: eroare
CL=minutes (0-59)
DH=seconds (0-59)
DL=sec/100 (0-99)
AH=2E:Set Verificare Activată/Dezactivată
AL=0,1: setează verificarea off,on
DOS 2.x
AH=2F:Obț ine adresa DTA ES:BX->DTA
AH=30:obț ineț i numărul versiunii DOS AH= număr minor
AL=major number
AH=31:Menț ine Programul
AL=return code
DX = dimensiune în paragrafe de cod pentru a rămâne în
memorie
AH=33:Obț ine/Setează indicatorul de verificare
ObțCtrl-C
ine:
AL=00: Get DL=00,01: flag is off,on
AL=01: Set:
DL=00,01: Set off, Set on
AH=35: obț ine vectorul de interupere ES:BX=vector
AL=int nr.
AH=36:Get Disk Free Space AX=no. of sectors pr cluster
DL=driver nr. (0=implicit, 1=A,..) =FFFF: eroare
BX=no. of free clusters
CX=nr. de octeț i pe sector
DX=no. of clusters
AH=38:Set Country Code
DX=FFFF
Dacă CountryCode < 254:
AL=CountryCode (45=DK)
ALTELE:
AL=FF
BX=CountryCode
AH=38:Get Country Info CF=1: error
DX<>FFFF: AX=error code
Structura CountryInfo CF=0:
DACĂ CountryCode < 254: AL=CodȚ ară (8 biț i inferior) (45=DK)
AL=CountryCode (45=DK BX=CountryCode
0=ț ara actuală) DS:DX->structură CountryInfo umplută
ALTCEVA:
AL=FF
BX=CountryCode
AH=39:Create Directory CF=1: AX=error code
DS:DX->ASCIIZ DirSpec
AH=3A:Ș terge directorul CF=1: AX=error code
DS:DX->ASCIIZ DirSpec
AH=3B:schimbă directorul curent CF=1: AX=error code
DS:DX->calea0
AH=3C:Creare fiș ier cu mânere Dacă fiș ierul există: fără erori
(compară INT 21,5B) CF=1: AX=error code
DS:DX->path0 CF=0: AX=Handle
CX=atribut fiș ier fiș ier deschis
AH=3D:Deschide fiș ier cu mânere CF=1: AX=error code
AL=access code: 0=read CF=0: AX=Handle
1= scrie fiș ierul deschis
2=lectură/scriere
DS:DX->FileSpec0
AH=3E:închide mânerul CF=1: AX=error code
BX=handle
AH=3F: citeș te din fiș ier sau dispozitiv CF=1: AX=error code
BX=handle (0=standard input: keybd) CF=0: AX=bytes read
CX=Numărul de bytes
DS:DX->buffer
AH=40:scrie într-un fiș ier sau dispozitiv CF=1: AX=error code
BX=maner (1=iesire standard: scrn) CF=0: AX=bytes written
CX=numărul de octeț i
DS:DX->buffer
AH=41:Delete File CF=1: AX=error code
DS:DX->SpecificaFiș ier0
AH=42:Mută pointerul fiș ierului CF=1: AX=error code
AL=metoda de miș care CF=0: DX,AX=punct nou
=00: absolut de la începutul fiș ierului (+)
=01: relativ de la poziț ia curentă (+-)
=02: absolut de la sfârș itul fiș ierului (+-)
BX=handle
CX,DX=move distance (bytes)
AX=4300:Obț ine Atributele Fiș ierului CF=1: AX=error code
DS:DX-> nume complet ASCIIZ CF=0: CX=attributes
AX=4301: Setează Atributele Fiș ierului
CX=attributes
DS:DX-> nume de fiș ier ASCIIZ complet
AH=44:Controlul dispozitivului I/O CF=1: AX=error code
AL=00: Obț ine informaț ii despre dispozitiv CF=0: DX=informaț ii dispozitiv (pentru AL=00)
=01: Setează informaț iile dispozitivului
=02: Citiț i de la dispozitivul de caractere
=03: Scrie către dispozitivul de caracter
=04: Citeș te din dispozitivul de bloc
etc...
AH=45:Handle de fiș ier duplicat CF=1: AX=error code
BX=handle CF=0: AX=un nou mâner
AH=46:Forț a Mâncării Fiș ier Duplicat CF=1: AX=error code
BX=handle
CX=new handle
AH=47:Get Current Directory CF=1: AX=error code
DL= numărul de drive CF=0: DS:SI->umple zona de 64 byte
DS:SI->zona de 64 byte
AH=48:Alocare Memorie CF=1: AX=error code
BX=paragrafe solicitate CF=0: AX:00->memorie alocată
BX=paragrafe alocate
AH=49:Free Allocated Memory CF=1: AX=error code
ES=segment de bloc de liberat
AH=4A: Setează dimensiunea blocului de memorie CF=1: AX=error code
ES=segment de bloc care să fie setat (modificat)
CF=0: BX=allocated paragraphs
BX=paragrafelor solicitate
AH=4B:Încărcaț i (ș i Executaț i) Program CF=1: AX=error code
AL=00: Load and execute
Încărcare suprapus
DS:DX->ASCIIZ fiș ier_spec
ES:BX->bloc de parametrii
AH=4C:termina programul
AL='errornr' (used by ERRORLEVEL)
AH=4D:Obț ine valoarea de returnare AH=return value
din INT 21,31 sau INT 21,4C AL=00: terminare normală
- doar o singură dată! 01: terminarea ctrl-break
02: eroare critică
=03: încetare prin INT 21,31
AH=4E:Caută primul fiș ier CF=1: AX=error code
CX=atribut CF=0: DTA umplut cu structura Fileinfo.
DS:DX->ASCIIZ fiș ier
AH=4F:Caută Fiș ier Următor CF=1: AX=error code
DTA conț ine informaț ii despre fiș ier CF=0: Informaț ii DTA actualizate
AH=52:obț ine lista listelor(undoc) ES:BX indică informaț iile sistemului
-PCM.10.24.466:Structura CDS +16h punct la primul CDS
GOOKIN: Îmbunătăț it...p325 +21h numărul structurilor CDS
setat de LASTDRIVE
- implicit: 5 (E)
AH=54:Obț ineț i starea de verificare AL=00: Verificare oprită
=01: Verificarea este activată
AH=56:Rename File CF=1: AX=error code
- poate fi utilizat pentru a 'mutare' un fiș ier
DS:DX->ASCIIZ fiș ier
ES:DI->ASCIIZ fiș ier nou
AX=5700: Obț ine data ș i ora fiș ierului CF=1: AX=error code
BX=Handle CF=0: CX=time (bits:)
15-11: oră (0-23)
10- 5: minut (0-59)
4- 0: 2sec (0-29)
DX=date (bits:)
15- 9: an (din 1980)
8-5: lună (1-12)
4- 0: zi (1-31)
AX=5701:Setează data ș i ora fiș ierului CF=1: AX=error code
BX=Handle
CX=time, DX=date (as above)
DOS 3.x
AH=59:Obț ine informaț ii extinse despre eroareAX=cod de eroare extins
>PC'ere UL s.185
BH=error type
BL=suggested action
CH=locaț ia erorii
AH=5A:Crează fiș ier 'Temporar' CF=1: AX=error code
CX=atribut CF=0: DS:DX->ASCIIZ fiș ier specificat cu numele fiș ierului
DS:DX->ASCIIZ dirspec (cu terminalul '\') furnizat de DOS
AH=5B:Creare fiș ier nou DACĂ fiș ierul există: eroare (CF=1)
(compară INT 21,3C) CF=1: AX=error code
CX=atrib CF=0: AX=handle
DS:DX->ASCIIZ fiș ier_spec fiș ier deschis
AH=5C:Blochează/Dezblochează fiș ierul CF=1: AX=error code
AL=00: Lock
Deblochează
BX : Handle
CX, DX: Offset (4 bytes)
SI,DI: Lungime (4 byte)
AX=5E00:Obț ine numele maș inii CF=1: AX=error code
DS:DX->zonă de 15 octeț i CF=0:
CH=0: Nume nedefinit
CH<>0:
CL='Name of NETBIOS' (?)
DS:DX->15 byte ASCIIZ Numele maș inii
AX=5E02: Setare printer CF=1: AX=error code
BX=index
CX=lungimea ș irului de iniț ializare
DS:DI->initializează ș irul care urmează să fie trimis
din toate fiș ierele trimise la imprimantă
AX=5E03:Configurare imprimantă CF=1: AX=error code
BX=index CF=0: CX=length of initialize string
DS:SI->buffer DS:DI->iniț ializează ș ir
CF=1:
AX=5F02:Obț ineț i intrarea din lista de atribuț ii AX=error code
BX=index (nr. de redirecț ionare curentă) =18d: sfârș itul listei de redirecț ionare
=0: index iniț ial, care trebuie incrementat CF=0: BH=status flag:
până când AX returnează codul de eroare 18d bit 0=0: dispozitiv indisponibil
DS:SI->buffer de 16 octeț i =1: dispozitiv disponibil
ES:DI->128 byte buffer BL=device type
=3: imprimantă
=4: fiș ier
CX=parameter value
DS:SI->ASCIIZ nume dispozitiv local
(PRN, LPT1, ...)
nume reț ea
AX=5F03:Conectare la reț ea CF=1: AX=error code
BL=3: to printer
=4: pe unitatea de disc
CX=parametru (=00)
DS:SI->ASCIIZ numele dispozitivului (PRN, LPT1, ...)
Calea reț elei ES:DI->ASCIIZ
AX=5F04:Ș terge Conexiunea de Reț ea CF=1: AX=error code
DS:SI->ASCIIZ numele dispozitivului ș i calea
AH=62:Obț ineț i adresa PSP BX=adresă segment
DOS 3.3:
AH=65: Obț ineț i informaț ii naț ionale extinseES:DI->tabel cu informaț ii naț ionale extinse
AL=info type
BX=pagina de cod
CX=no. of data to be returned
DX=national ID
ES:DI->buffer
AX=6601:Obț ineț i pagina de cod CF=1: AX=error code
CF=0: BX=pagina de cod activă
DX=pagina de cod a sistemului
AX=6602:Schimbare cod pagină
ca comanda DOS :>CHCP
are nevoie de NLSFUNC instalat
AH=67:Setează numărul maxim de mânere CF=1: AX=error code
BX=numărul maximal de handle-uri deschise pentru fiș iere
<20: =20
AH=68: Confirmare fiș ier
Buffer de fiș ier gol
BX=handle