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
- MS-DOS - cea mai răspândită implementare
- PC DOS - IBM versiunea OEM a MS-DOS
- OS / 2 1.x - Microsoft / IBM succesor pentru MS-DOS și PC DOS
- SISNE plus - Clonă creată de Itautec și Scopus Tecnologia în Brazilia
- DR-DOS - Digital DOS Family Research, inclusiv Novell DOS , PalmDOS , OpenDOS etc.
- PTS-DOS - clona PhysTechSoft & Paragon DOS, inclusiv S / DOS
- ROM-DOS - versiunea Datalight ROM DOS
- Embedded DOS - versiunea generală a software- ului
- FreeDOS - Clonă DOS gratuită, open source
- ReactOS ( versiunile IA-32 și x86-64 )
- Windows 95 - conține MS-DOS 7.0
- Windows 98 - conține MS-DOS 7.1
- Windows 98 SE - conține MS-DOS 7.1
- Windows ME - conține MS-DOS 8.0
Sisteme de operare cu strat de emulare DOS
- CP / M-86 simultan (numai 3.1) cu PCMODE - Sistem de operare digital bazat pe CP / M-86 cu emulator opțional PC DOS
- DOS simultan - Digital Research CDOS family cu emulator DOS încorporat pentru PC
- DOS Plus - o variantă decupată pentru un singur utilizator a Concurrent PC DOS 4.1–5.0
- Multiuser DOS - Digital Research / Novell familia MDOS, inclusiv Datapac System Manager , IMS REAL / 32 etc.
- OS / 2 (2.x și versiuni ulterioare) - sistem de operare IBM care utilizează un MS-DOS 5.0 complet licențiat într-o mașină virtuală
- Windows NT (toate versiunile, cu excepția edițiilor pe 64 de biți)
Alți emulatori
- NTVDM pentru Windows NT
- DOSEMU pentru Linux
- DOSBox
Vezi si
- Apel de întrerupere BIOS
- Lista de întrerupere a lui Ralf Brown (RBIL)
- Compararea sistemelor de operare DOS
- DOS Protected Mode Interface (DPMI)
- Extensor DOS
- Executabil DOS MZ
- COMMAND.COM
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.)