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

Besturingssystemen met DOS-emulatielaag

Andere emulators

Zie ook

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.)

Externe links