DOS API - DOS API
De DOS API is een API die is ontstaan met 86-DOS en wordt gebruikt in MS-DOS / PC DOS en andere DOS- compatibele besturingssystemen. De meeste aanroepen naar de DOS API worden aangeroepen met software-interrupt 21h ( INT 21h). Door INT 21h te bellen met een subfunctienummer in het AH processorregister en andere parameters in andere registers, kunnen verschillende DOS-services worden aangeroepen. Deze omvatten het verwerken van toetsenbordinvoer, video-uitvoer, toegang tot schijfbestanden, programma-uitvoering, geheugentoewijzing en diverse andere activiteiten. Aan het eind van de jaren tachtig zorgen DOS-extenders en de DOS Protected Mode Interface (DPMI) ervoor dat de programma's in 16-bits of 32-bits beveiligde modus kunnen worden uitgevoerd en toch toegang hebben tot de DOS-API.
Geschiedenis van de DOS API
De originele DOS API in 86-DOS en MS-DOS 1.0 is gemaakt functioneel compatibel te zijn met CP / M . Bestanden zijn geopend met behulp van bestandsbeheerblokken (FCB's). De DOS API is sterk uitgebreid in MS-DOS 2.0 met verschillende Unix-concepten, waaronder bestandstoegang met behulp van bestandshandvatten , hiërarchische mappen en apparaat-I / O-besturing. In DOS 3.1 is ondersteuning voor netwerkredirector toegevoegd. In MS-DOS 3.31 zijn de INT 25h / 26h-functies verbeterd om harde schijven groter dan 32 MB te ondersteunen. MS-DOS 5 ondersteuning toegevoegd voor het gebruik van upper memory blocks (UMB's). Na MS-DOS 5 was de DOS-API ongewijzigd voor de opeenvolgende zelfstandige releases van DOS.
De DOS API en Windows
In Windows 9x laadde DOS het protected-modus systeem en de grafische shell. DOS werd gewoonlijk benaderd vanaf een virtuele DOS-machine (VDM), maar het was ook mogelijk om direct op te starten in real-mode MS-DOS 7.0 zonder Windows te laden. De DOS API werd uitgebreid met verbeterde ondersteuning voor internationalisering en ondersteuning voor lange bestandsnamen , hoewel de ondersteuning voor lange bestandsnamen alleen beschikbaar was in een VDM. Met Windows 95 OSR2 werd DOS geüpdatet naar 7.1, wat FAT32- ondersteuning toevoegde , en functies werden toegevoegd aan de DOS API om dit te ondersteunen. Windows 98 en Windows ME implementeren ook de MS-DOS 7.1 API, hoewel Windows ME zichzelf rapporteert als MS-DOS 8.0.
Windows NT en de daarop gebaseerde systemen (bijv. Windows XP en Windows Vista ) zijn niet gebaseerd op MS-DOS, maar gebruiken een virtuele machine , NTVDM , om de DOS API af te handelen. NTVDM werkt door een DOS-programma in virtuele 8086-modus uit te voeren (een emulatie van de echte modus binnen de beschermde modus beschikbaar op 80386 en hogere processors). NTVDM ondersteunt de DOS 5.0 API. DOSEMU voor Linux gebruikt een vergelijkbare benadering.
Interrupt-vectoren die door DOS worden gebruikt
Het volgende is de lijst met interruptvectoren die door programma's worden gebruikt om de DOS API-functies aan te roepen.
| Vector onderbreken | Omschrijving | Versie | Opmerkingen |
|---|---|---|---|
20h
|
Programma beëindigen | 1.0+ | Geïmplementeerd in DOS-kernel |
21h
|
Belangrijkste DOS API | 1.0+ | Geïmplementeerd in DOS-kernel |
22h
|
Programma beëindigen adres | 1.0+ | Retouradres in aanroepend programma |
23h
|
Control-C handleradres | 1.0+ | De standaardhandler bevindt zich in de opdrachtshell (meestal COMMAND.COM) |
24h
|
Adres voor kritieke foutafhandeling | 1.0+ | De standaardhandler bevindt zich in de opdrachtshell (meestal COMMAND.COM) |
25h
|
Absolute schijf gelezen | 1.0+ | Geïmplementeerd in DOS-kernel, verbeterd in DOS 3.31 om partities tot 2 GB te ondersteunen |
26h
|
Absolute schijf schrijven | 1.0+ | Geïmplementeerd in DOS-kernel, verbeterd in DOS 3.31 om partities tot 2 GB te ondersteunen |
27h
|
Beëindig en blijf inwoner | 1.0+ | Geïmplementeerd in COMMAND.COM in DOS 1.0, DOS-kernel in DOS 2.0+ |
28h
|
Inactieve callout | 2.0+ | Geroepen door DOS-kernel tijdens het wachten op invoer |
29h
|
Snelle console-uitvoer | 2.0+ | Geïmplementeerd door het ingebouwde apparaatstuurprogramma van de console of een vervangend stuurprogramma zoals ANSI.SYS |
2Ah
|
Netwerken en kritische sectie | 3.0+ | Opgeroepen door de DOS-kernel om te communiceren met netwerksoftware |
2Bh
|
Ongebruikt | ||
2Ch
|
Ongebruikt | ||
2Dh
|
Ongebruikt | ||
2Eh
|
Herlaad tijdelijk | 2.0+ | Geïmplementeerd in COMMAND.COM |
2Fh
|
Multiplex | 3.0+ | Geïmplementeerd in DOS-kernel en verschillende programma's (PRINT, MSCDEX, DOSKEY, APPEND, etc.) afhankelijk van subfunctienummer |
DOS INT 21h-diensten
Het volgende is de lijst met functies die worden aangeboden via de DOS API primaire software-interruptvector.
AH
|
Omschrijving | Versie |
|---|---|---|
00h
|
Programma wordt beëindigd | 1.0+ |
01h
|
Tekeninvoer | 1.0+ |
02h
|
Tekenuitvoer | 1.0+ |
03h
|
Extra ingang | 1.0+ |
04h
|
Hulpuitgang | 1.0+ |
05h
|
Printeruitvoer | 1.0+ |
06h
|
Directe console I / O | 1.0+ |
07h
|
Directe console-ingang zonder echo | 1.0+ |
08h
|
Console-ingang zonder echo | 1.0+ |
09h
|
Tekenreeks weergeven | 1.0+ |
0Ah
|
Gebufferde toetsenbordinvoer | 1.0+ |
0Bh
|
Krijg inputstatus | 1.0+ |
0Ch
|
Spoel invoerbuffer en invoer | 1.0+ |
0Dh
|
Schijf resetten | 1.0+ |
0Eh
|
Stel standaardstation in | 1.0+ |
0Fh
|
Open bestand | 1.0+ |
10h
|
Sluit het bestand | 1.0+ |
11h
|
Zoek het eerste bestand | 1.0+ |
12h
|
Zoek het volgende bestand | 1.0+ |
13h
|
Verwijder bestand | 1.0+ |
14h
|
Sequentieel lezen | 1.0+ |
15h
|
Sequentieel schrijven | 1.0+ |
16h
|
Maak een bestand of maak het af | 1.0+ |
17h
|
Hernoem bestand | 1.0+ |
18h
|
Gereserveerd | 1.0+ |
19h
|
Krijg standaardstation | 1.0+ |
1Ah
|
Stel het adres voor schijfoverdracht in | 1.0+ |
1Bh
|
Krijg toewijzingsinformatie voor standaardstation | 1.0+ |
1Ch
|
Verkrijg toewijzingsinformatie voor gespecificeerd station | 1.0+ |
1Dh
|
Gereserveerd | 1.0+ |
1Eh
|
Gereserveerd | 1.0+ |
1Fh
|
Haal het schijfparameterblok op voor het standaardstation | 1.0+ |
20h
|
Gereserveerd | 1.0+ |
21h
|
Willekeurig gelezen | 1.0+ |
22h
|
Willekeurig schrijven | 1.0+ |
23h
|
Verkrijg de bestandsgrootte in records | 1.0+ |
24h
|
Stel een willekeurig recordnummer in | 1.0+ |
25h
|
Onderbrekingsvector instellen | 1.0+ |
26h
|
Maak een PSP | 1.0+ |
27h
|
Willekeurig blok gelezen | 1.0+ |
28h
|
Willekeurig blok schrijven | 1.0+ |
29h
|
Parse bestandsnaam | 1.0+ |
2Ah
|
Krijg datum | 1.0+ |
2Bh
|
Datum instellen | 1.0+ |
2Ch
|
Krijg tijd | 1.0+ |
2Dh
|
Tijd instellen | 1.0+ |
2Eh
|
Verifieer vlag instellen | 1.0+ |
2Fh
|
Haal het schijfoverdrachtadres op | 2.0+ |
30h
|
Download de DOS-versie | 2.0+ |
31h
|
Beëindig en blijf inwoner | 2.0+ |
32h
|
Haal het schijfparameterblok op voor het opgegeven station | 2.0+ |
33h
|
Verkrijg of stel Ctrl-Break in | 2.0+ |
34h
|
Download InDOS-vlagaanwijzer | 2.0+ |
35h
|
Krijg een onderbrekingsvector | 2.0+ |
36h
|
Krijg vrije schijfruimte | 2.0+ |
37h
|
Wissel karakter verkrijgen of instellen | 2.0+ |
38h
|
Landinformatie opvragen of instellen | 2.0+ |
39h
|
Maak een submap | 2.0+ |
3Ah
|
Verwijder submap | 2.0+ |
3Bh
|
Verander de huidige directory | 2.0+ |
3Ch
|
Maak een bestand of maak het af | 2.0+ |
3Dh
|
Open bestand | 2.0+ |
3Eh
|
Sluit het bestand | 2.0+ |
3Fh
|
Lees bestand of apparaat | 2.0+ |
40h
|
Schrijf bestand of apparaat | 2.0+ |
41h
|
Verwijder bestand | 2.0+ |
42h
|
Verplaats de bestandsaanwijzer | 2.0+ |
43h
|
Verkrijg of stel bestandskenmerken in | 2.0+ |
44h
|
I / O-besturing voor apparaten | 2.0+ |
45h
|
Dubbele handgreep | 2.0+ |
46h
|
Handgreep omleiden | 2.0+ |
47h
|
Haal de huidige directory op | 2.0+ |
48h
|
Wijs geheugen toe | 2.0+ |
49h
|
Maak geheugen vrij | 2.0+ |
4Ah
|
Wijs het geheugen opnieuw toe | 2.0+ |
4Bh
|
Programma uitvoeren | 2.0+ |
4Ch
|
Beëindig met retourcode | 2.0+ |
4Dh
|
Haal de retourcode van het programma op | 2.0+ |
4Eh
|
Zoek het eerste bestand | 2.0+ |
4Fh
|
Zoek het volgende bestand | 2.0+ |
50h
|
Stel de huidige PSP in | 2.0+ |
51h
|
Krijg de huidige PSP | 2.0+ |
52h
|
Ontvang interne DOS-aanwijzingen (SYSVARS) | 2.0+ |
53h
|
Maak een schijfparameterblok | 2.0+ |
54h
|
Verifieer vlag | 2.0+ |
55h
|
Maak programma PSP | 2.0+ |
56h
|
Hernoem bestand | 2.0+ |
57h
|
Verkrijg of stel de bestandsdatum en -tijd in | 2.0+ |
58h
|
Een toewijzingsstrategie verkrijgen of instellen | 2.11+ |
59h
|
Krijg uitgebreide foutinformatie | 3.0+ |
5Ah
|
Maak een uniek bestand | 3.0+ |
5Bh
|
Maak een nieuw bestand | 3.0+ |
5Ch
|
Vergrendel of ontgrendel het bestand | 3.0+ |
5Dh
|
Functies voor het delen van bestanden | 3.0+ |
5Eh
|
Netwerkfuncties | 3.0+ |
5Fh
|
Netwerkomleidingsfuncties | 3.0+ |
60h
|
Kwalificeer bestandsnaam | 3.0+ |
61h
|
Gereserveerd | 3.0+ |
62h
|
Krijg de huidige PSP | 3.0+ |
63h
|
Haal DBCS-leadbyte-tabelaanwijzer op | 3.0+ |
64h
|
Stel wachten op vlag voor externe gebeurtenis in | 3.2+ |
65h
|
Krijg uitgebreide landinformatie | 3.3+ |
66h
|
Codepagina ophalen of instellen | 3.3+ |
67h
|
Stel het aantal handgrepen in | 3.3+ |
68h
|
Commit-bestand | 3.3+ |
69h
|
Media-ID ophalen of instellen | 4.0+ |
6Ah
|
Commit-bestand | 4.0+ |
6Bh
|
Gereserveerd | 4.0+ |
6Ch
|
Uitgebreid bestand openen / maken | 4.0+ |
Besturingssystemen met native ondersteuning
- MS-DOS - meest wijdverspreide implementatie
- PC DOS - IBM OEM-versie van MS-DOS
- OS / 2 1.x - Microsoft / IBM opvolger van MS-DOS en pc-DOS
- SISNE plus - Kloon gemaakt door Itautec en Scopus Tecnologia in Brazilië
- DR-DOS - Digital Research DOS-familie, inclusief Novell DOS , PalmDOS , OpenDOS , etc.
- PTS-DOS - PhysTechSoft & Paragon DOS-kloon, inclusief S / DOS
- ROM-DOS - Datalight ROM DOS-versie
- Embedded DOS - Algemene software versie
- FreeDOS - Gratis, open source DOS-kloon
- ReactOS ( IA-32 en x86-64 versies)
- Windows 95 - bevat MS-DOS 7.0
- Windows 98 - bevat MS-DOS 7.1
- Windows 98 SE - bevat MS-DOS 7.1
- Windows ME - bevat MS-DOS 8.0
Besturingssystemen met DOS-emulatielaag
- Gelijktijdige CP / M-86 (alleen 3.1) met PCMODE - Digital Research CP / M-86-gebaseerd besturingssysteem met optionele PC DOS-emulator
- Gelijktijdige DOS - Digital Research CDOS-familie met ingebouwde PC DOS-emulator
- DOS Plus - een uitgeklede variant voor één gebruiker van Concurrent PC DOS 4.1–5.0
- Multiuser DOS - Digital Research / Novell MDOS-familie inclusief Datapac System Manager , IMS REAL / 32 , etc.
- OS / 2 (2.x en hoger) - IBM-besturingssysteem met een volledig gelicentieerde MS-DOS 5.0 in een virtuele machine
- Windows NT (alle versies behalve 64-bits edities)
Andere emulators
- NTVDM voor Windows NT
- DOSEMU voor Linux
- DOSBox
Zie ook
- BIOS-onderbrekingsoproep
- Interruptielijst van Ralf Brown (RBIL)
- Vergelijking van DOS-besturingssystemen
- DOS-interface voor beschermde modus (DPMI)
- DOS-extender
- DOS MZ uitvoerbaar
- COMMAND.COM
Referenties
Verder lezen
- Allen, Paul ; Gates, Bill ; Koning, Adrian; Larson, Chris; Letwin, Gordon ; O'Rear, Bob ; Paterson, Tim ; Peters, Chris; Phillips, Bruce; Reynolds, Aaron ; Stillmaker, Betty; Zbikowski, Mark (1986). "Technische adviseurs". MS-DOS (versies 1.0-3.2) Technical Reference Encyclopedia . Door 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 (red.). Microsoft-referentiebibliotheek. 1 (Origineel ingetrokken red.). Redmond, Washington, VS: Microsoft Press . ISBN 0-914845-69-1. LCCN 86-8640 . OCLC 635.600.205 .(xvii + 1053 pagina's; 29 cm) (NB. Deze originele editie bevat stroomdiagrammen van de interne werking van het systeem. Het werd door Microsoft ingetrokken voordat het in 1986 op grote schaal werd verspreid, omdat het veel feitelijke fouten bevatte, evenals enige geheime informatie die zou moeten zijn niet gepubliceerd. Er zijn maar weinig gedrukte exemplaren bewaard gebleven. Het werd in 1988 vervangen door een volledig herwerkte editie. [1] )
- Zbikowski, Mark ; Allen, Paul ; Ballmer, Steve ; Borman, Reuben; Borman, Rob; Butler, John; Carroll, Chuck; Chamberlain, Mark; Chell, David; Colee, Mike; Courtney, Mike; Dryfoos, Mike; Duncan, Rachel; Eckhardt, Kurt; Evans, Eric; Boer, Rick; Gates, Bill ; Geary, Michael; Griffin, Bob; Hogarth, Doug; Johnson, James W .; Kermaani, Kaamel; Koning, 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; Shah, Rajen; Shaw, Barry; Kortom, Anthony; Slivka, Ben; Smirl, Jon; Stillmaker, Betty; Stoddard, John; Tillman, Dennis; Whitten, Greg; Yount, Natalie; Zeck, Steve (1988). "Technische adviseurs". De MS-DOS Encyclopedia: versies 1.0 tot en met 3.2 . Door 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 (volledig herwerkt red.). Redmond, Washington, VS: Microsoft Press . ISBN 1-55615-049-0. LCCN 87-21452 . OCLC 16581341 .(xix + 1570 pagina's; 26 cm) (NB. Deze editie werd in 1988 gepubliceerd na uitgebreide herwerking van de teruggetrokken eerste editie uit 1986 door een ander team van auteurs. [2] )
- The New Peter Norton Programmer's Guide to the IBM PC & PS / 2 door Peter Norton en Richard Wilton, Microsoft Press, 1987 ISBN 1-55615-131-4 .
- Ray Duncan (1988). Geavanceerde MS-DOS-programmering: de Microsoft-gids voor assembleertaal en C-programmeurs . Microsoft Press. ISBN 0914845772.
- The Programmer's PC Sourcebook door Thom Hogan, Microsoft Press, 1991 ISBN 155615321X
- Microsoft MS-DOS Programmer's Reference - The Official Technical Reference to MS-DOS , Microsoft Press, 1993 ISBN 1556155468
- IBM PC DOS 7 technische update
- OpenDOS Developer's Reference Series - OpenDOS Programmer's Guide - System and Programmer's Guide . Caldera, Inc. Augustus 1997. Caldera Part No. 200-DOPG-003. Gearchiveerd van het origineel op 2017/10/07 . Ontvangen 2012/06/28 . (Gedrukt in het VK.)