API DOS - DOS API

DOS API este un API care își are originea 86-DOS și este utilizat în MS-DOS / PC DOS și alte DOS sisteme de operare compatibil. Majoritatea apelurilor către API-ul DOS sunt invocate utilizând întreruperea software-ului 21h ( INT 21h). Apelând INT 21h cu un număr de subfuncție în registrul procesorului AH și alți parametri din alte registre, pot fi invocate diverse servicii DOS. Acestea includ gestionarea intrării tastaturii, a ieșirii video, a accesului la fișierul pe disc, a executării programului, a alocării memoriei și a altor activități. La sfârșitul anilor 1980, extensiile DOS împreună cu interfața DOS Protected Mode Interface (DPMI) permit programelor să ruleze fie în mod protejat pe 16 biți, fie pe 32 de biți și să aibă în continuare acces la API-ul DOS.

Istoria API-ului DOS

Originalul API DOS în 86-DOS și MS-DOS 1.0 a fost proiectat pentru a fi compatibil funcțional cu CP / M . Fișierele au fost accesate folosind blocuri de control al fișierelor (FCB). API-ul DOS a fost extins în mare măsură în MS-DOS 2.0 cu mai multe concepte Unix, inclusiv acces la fișiere folosind mânere de fișiere , directoare ierarhice și control I / O dispozitiv. În DOS 3.1, a fost adăugat suport pentru redirecționarea rețelei . În MS-DOS 3.31, funcțiile INT 25h / 26h au fost îmbunătățite pentru a suporta hard diskuri mai mari de 32 MB. MS-DOS 5 a adăugat suport pentru utilizarea blocurilor de memorie superioare (UMB). După MS-DOS 5, API-ul DOS a rămas neschimbat pentru lansările independente succesive de DOS.

API-ul DOS și Windows

În Windows 9x , DOS a încărcat sistemul în mod protejat și shell-ul grafic. DOS a fost accesat de obicei de pe o mașină virtuală DOS (VDM), dar a fost, de asemenea, posibil să porniți direct în modul real MS-DOS 7.0 fără a încărca Windows. API-ul DOS a fost extins cu suport îmbunătățit de internaționalizare și suport lung pentru numele fișierelor , deși suportul lung pentru numele fișierelor era disponibil doar într-un VDM. Cu Windows 95 OSR2, DOS a fost actualizat la 7.1, care a adăugat suport FAT32 și funcții au fost adăugate la API-ul DOS pentru a sprijini acest lucru. Windows 98 și Windows ME implementează, de asemenea, API-ul MS-DOS 7.1, deși Windows ME se raportează ca MS-DOS 8.0.

Windows NT și sistemele bazate pe acesta (de exemplu, Windows XP și Windows Vista ) nu se bazează pe MS-DOS, ci folosesc o mașină virtuală , NTVDM , pentru a gestiona API-ul DOS. NTVDM funcționează executând un program DOS în modul virtual 8086 (o emulare a modului real în modul protejat disponibil pe procesoarele 80386 și superioare). NTVDM acceptă API-ul DOS 5.0. DOSEMU pentru Linux utilizează o abordare similară.

Vectorii de întrerupere utilizați de DOS

Următoarea este lista vectorilor de întrerupere utilizați de programe pentru a invoca funcțiile API DOS.

Vector de întrerupere Descriere Versiune Note
20h Încheiați programul 1.0+ Implementat în kernel-ul DOS
21h API DOS principal 1.0+ Implementat în kernel-ul DOS
22h Adresa de terminare a programului 1.0+ Adresa de retur în programul de apelare
23h Adresa controlerului Control-C 1.0+ Handler-ul implicit se află în shell-ul comenzii (de obicei COMMAND.COM)
24h Adresa de gestionare a erorilor critice 1.0+ Handler-ul implicit se află în shell-ul comenzii (de obicei COMMAND.COM)
25h Citirea discului absolut 1.0+ Implementat în kernel DOS, îmbunătățit în DOS 3.31 pentru a suporta partiții de până la 2 GB
26h Scriere absolută pe disc 1.0+ Implementat în kernel DOS, îmbunătățit în DOS 3.31 pentru a suporta partiții de până la 2 GB
27h Reziliați și rămâneți rezident 1.0+ Implementat în COMMAND.COM în DOS 1.0, nucleul DOS în DOS 2.0+
28h Înștiințare inactivă 2.0+ Apelat de kernel-ul DOS în așteptarea intrării
29h Ieșire rapidă a consolei 2.0+ Implementat de driverul dispozitivului de consolă încorporat sau de un driver de înlocuire precum ANSI.SYS
2Ah Rețea și secțiune critică 3.0+ Apelat de kernel-ul DOS pentru interfața cu software-ul de rețea
2Bh Neutilizat
2Ch Neutilizat
2Dh Neutilizat
2Eh Reîncărcați tranzitorii 2.0+ Implementat în COMMAND.COM
2Fh Multiplex 3.0+ Implementat în kernel-ul DOS și diferite programe (PRINT, MSCDEX, DOSKEY, APPEND etc.) în funcție de numărul de subfuncție

Servicii DOS INT 21h

Următoarea este lista funcțiilor furnizate prin vectorul principal de întrerupere a software-ului DOS API.

AH Descriere Versiune
00h Programul se termină 1.0+
01h Introducere caracter 1.0+
02h Ieșirea caracterului 1.0+
03h Intrare auxiliară 1.0+
04h Ieșire auxiliară 1.0+
05h Ieșire imprimantă 1.0+
06h I / O consolă directă 1.0+
07h Intrare directă a consolei fără ecou 1.0+
08h Intrare consolă fără ecou 1.0+
09h Afișați șirul 1.0+
0Ah Intrare tastatură tamponată 1.0+
0Bh Obțineți starea de intrare 1.0+
0Ch Spălați tamponul de intrare și de intrare 1.0+
0Dh Resetarea discului 1.0+
0Eh Setați unitatea implicită 1.0+
0Fh Deschide fișierul 1.0+
10h Închideți fișierul 1.0+
11h Găsiți primul fișier 1.0+
12h Găsiți fișierul următor 1.0+
13h Sterge fisierul 1.0+
14h Citire secvențială 1.0+
15h Scriere secvențială 1.0+
16h Creați sau tăiați fișierul 1.0+
17h Redenumește fisierul 1.0+
18h Rezervat 1.0+
19h Obțineți unitatea implicită 1.0+
1Ah Setați adresa de transfer a discului 1.0+
1Bh Obțineți informații despre alocare pentru unitatea implicită 1.0+
1Ch Obțineți informații despre alocare pentru unitatea specificată 1.0+
1Dh Rezervat 1.0+
1Eh Rezervat 1.0+
1Fh Obțineți blocul de parametri de disc pentru unitatea implicită 1.0+
20h Rezervat 1.0+
21h Citire aleatorie 1.0+
22h Scriere aleatorie 1.0+
23h Obțineți dimensiunea fișierului în înregistrări 1.0+
24h Setați numărul de înregistrare aleatorie 1.0+
25h Setați vectorul de întrerupere 1.0+
26h Creați PSP 1.0+
27h Citirea blocului aleatoriu 1.0+
28h Scriere aleatorie în bloc 1.0+
29h Analizați numele fișierului 1.0+
2Ah Obțineți o întâlnire 1.0+
2Bh Seteaza data 1.0+
2Ch Fă-ți timp 1.0+
2Dh Potriveste ora 1.0+
2Eh Setați pavilionul de verificare 1.0+
2Fh Obțineți adresa de transfer a discului 2.0+
30h Obțineți versiunea DOS 2.0+
31h Reziliați și rămâneți rezident 2.0+
32h Obțineți blocul de parametri de disc pentru unitatea specificată 2.0+
33h Obțineți sau setați Ctrl-Break 2.0+
34h Obțineți indicatorul de pavilion InDOS 2.0+
35h Obțineți vectorul de întrerupere 2.0+
36h Obțineți spațiu liber pe disc 2.0+
37h Obțineți sau setați caracterul comutatorului 2.0+
38h Obțineți sau setați informații despre țară 2.0+
39h Creați un subdirector 2.0+
3Ah Eliminați subdirectorul 2.0+
3Bh Schimbați directorul curent 2.0+
3Ch Creați sau tăiați fișierul 2.0+
3Dh Deschide fișierul 2.0+
3Eh Închideți fișierul 2.0+
3Fh Citiți fișierul sau dispozitivul 2.0+
40h Scrieți fișierul sau dispozitivul 2.0+
41h Sterge fisierul 2.0+
42h Mutați indicatorul fișierului 2.0+
43h Obțineți sau setați atribute de fișiere 2.0+
44h Control I / O pentru dispozitive 2.0+
45h Mâner duplicat 2.0+
46h Mâner de redirecționare 2.0+
47h Obțineți directorul curent 2.0+
48h Alocați memoria 2.0+
49h Eliberați memoria 2.0+
4Ah Realocați memoria 2.0+
4Bh Executați programul 2.0+
4Ch Terminați cu codul de returnare 2.0+
4Dh Obțineți codul de returnare a programului 2.0+
4Eh Găsiți primul fișier 2.0+
4Fh Găsiți fișierul următor 2.0+
50h Setați PSP curent 2.0+
51h Obțineți PSP curent 2.0+
52h Obțineți indicatori interni DOS (SYSVARS) 2.0+
53h Creați un bloc de parametri de disc 2.0+
54h Obțineți steagul de verificare 2.0+
55h Creați programul PSP 2.0+
56h Redenumește fisierul 2.0+
57h Obțineți sau setați data și ora fișierului 2.0+
58h Obțineți sau setați strategia de alocare 2.11+
59h Obțineți informații extinse despre erori 3.0+
5Ah Creați un fișier unic 3.0+
5Bh Creați un fișier nou 3.0+
5Ch Blocați sau deblocați fișierul 3.0+
5Dh Funcții de partajare a fișierelor 3.0+
5Eh Funcții de rețea 3.0+
5Fh Funcții de redirecționare a rețelei 3.0+
60h Calificați numele fișierului 3.0+
61h Rezervat 3.0+
62h Obțineți PSP curent 3.0+
63h Obțineți indicatorul de masă DBCS lead byte 3.0+
64h Setați așteptați pentru semnalizarea evenimentului extern 3.2+
65h Obțineți informații extinse despre țară 3.3+
66h Obțineți sau setați pagina de coduri 3.3+
67h Setați numărul de mâner 3.3+
68h Fișier de comitere 3.3+
69h Obțineți sau setați un ID media 4.0+
6Ah Fișier de comitere 4.0+
6Bh Rezervat 4.0+
6Ch Fișier deschis / creat 4.0+

Sisteme de operare cu suport nativ

Sisteme de operare cu strat de emulare DOS

Alți emulatori

Vezi si

Referințe

Lecturi suplimentare

  • Allen, Paul ; Gates, Bill ; Rege, Adrian; Larson, Chris; Letwin, Gordon ; O'Rear, Bob ; Paterson, Tim ; Peters, Chris; Phillips, Bruce; Reynolds, Aaron ; Stillmaker, Betty; Zbikowski, Mark (1986). „Consilieri tehnici”. MS-DOS (versiuni 1.0-3.2) Enciclopedie de referință tehnică . De Bornstein, Howard; Bredehoeft, Lawrence; Duncan, Ray; Morris, Carol; Rose, David; Socha, John ; Tomlin, Jim; Vian, Kathleen; Wolverton, Van. Beley, Jim; Preppernau, Barry; Beason, Pam; Lewis, Andrea; Rygmyr, David (eds.). Biblioteca de referință Microsoft. 1 (Ed. Originală retrasă). Redmond, Washington, SUA: Microsoft Press . ISBN 0-914845-69-1. LCCN  86-8640 . OCLC  635600205 .(xvii + 1053 pagini; 29 cm) (NB. Această ediție originală conține diagrame ale funcționării interne a sistemului. A fost retrasă de Microsoft înainte de distribuirea în masă în 1986 deoarece conținea multe erori de fapt, precum și unele informații clasificate care ar trebui nu au fost publicate. Puține exemplare tipărite au supraviețuit. A fost înlocuită cu o ediție complet reprelucrată în 1988. [1] )
  • Zbikowski, Mark ; Allen, Paul ; Ballmer, Steve ; Borman, Ruben; Borman, Rob; Butler, John; Carroll, Chuck; Chamberlain, Mark; Chell, David; Colee, Mike; Courtney, Mike; Dryfoos, Mike; Duncan, Rachel; Eckhardt, Kurt; Evans, Eric; Fermier, Rick; Gates, Bill ; Geary, Michael; Griffin, Bob; Hogarth, Doug; Johnson, James W .; Kermaani, Kaamel; Rege, Adrian; Koch, Reed; Landowski, James; Larson, Chris; Lennon, Thomas; Lipkie, Dan; McDonald, Marc ; McKinney, Bruce; Martin, Pascal; Mathers, Estelle; Matthews, Bob; Melin, David; Mergentime, Charles; Nevin, Randy; Newell, Dan; Newell, Tani; Norris, David; O'Leary, Mike; O'Rear, Bob ; Olsson, Mike; Osterman, Larry; Ostling, Ridge; Pai, Sunil; Paterson, Tim ; Perez, Gary; Peters, Chris; Petzold, Charles ; Pollock, John; Reynolds, Aaron ; Rubin, Darryl; Ryan, Ralph; Schulmeisters, Karl; Șah, Rajen; Shaw, Barry; Scurt, Anthony; Slivka, Ben; Smirl, Jon; Stillmaker, Betty; Stoddard, John; Tillman, Dennis; Whitten, Greg; Yount, Natalie; Zeck, Steve (1988). „Consilieri tehnici”. Enciclopedia MS-DOS: versiunile 1.0 până la 3.2 . De Duncan, Ray; Bostwick, Steve; Burgoyne, Keith; Byers, Robert A .; Hogan, Thom; Kyle, Jim; Letwin, Gordon ; Petzold, Charles ; Rabinowitz, Chip; Tomlin, Jim; Wilton, Richard; Wolverton, Van; Wong, William; Woodcock, JoAnne (ed. Complet reprelucrată). Redmond, Washington, SUA: Microsoft Press . ISBN 1-55615-049-0. LCCN  87-21452 . OCLC  16581341 .(xix + 1570 pagini; 26 cm) (NB. Această ediție a fost publicată în 1988 după o prelucrare extinsă a primei ediții din 1986 retrasă de o altă echipă de autori. [2] )
  • The New Peter Norton Programator’s Guide to the IBM PC & PS / 2 de Peter Norton și Richard Wilton, Microsoft Press, 1987 ISBN  1-55615-131-4 .
  • Ray Duncan (1988). Avansat MS-DOS de programare: Ghidul Microsoft pentru limbaj de asamblare și C programatori . Microsoft Press. ISBN 0914845772.
  • The Source Programmer's PC Sourcebook de Thom Hogan, Microsoft Press, 1991 ISBN  155615321X
  • Referința programatorului Microsoft MS-DOS - Referința tehnică oficială la MS-DOS , Microsoft Press, 1993 ISBN  1556155468
  • Actualizare tehnică IBM PC DOS 7
  • OpenDOS Developer's Reference Series - OpenDOS Programmer's Guide - System and Programmer's Guide . Caldera, Inc. august 1997. Caldera Nr. Piesă 200-DOPG-003. Arhivat din original pe 07-10-2017 . Adus 28.06.2012 . (Tipărit în Marea Britanie.)

linkuri externe