# API DOS

L'API DOS és una API que es va originar amb 86-DOS i s'utilitza en MS-DOS/PC DOS i altres sistemes operatius compatibles amb DOS. La majoria de trucades a l'API DOS s'invoquen mitjançant la interrupció de programari 21h (INT 21h). En cridar INT 21h amb un número de subfunció al registre del processador AH i altres paràmetres en altres registres, es poden invocar diversos serveis DOS. Aquests inclouen la gestió de l'entrada del teclat, la sortida de vídeo, l'accés a fitxers de disc, l'execució del programa, l'assignació de memòria i altres activitats. A finals de la dècada de 1980, els extensors de DOS juntament amb la interfície de mode protegit de DOS (DPMI) permeten que els programes s'executin en mode protegit de 16 o 32 bits i encara tinguin accés a l'API de DOS.

## Història de l'API DOS

L'API original de DOS en 86-DOS i MS-DOS 1.0 va ser dissenyada per ser compatible funcionalment amb CP/M. Es va accedir als fitxers mitjançant blocs de control de fitxers (FCB). L'API de DOS es va estendre molt a MS-DOS 2.0 amb diversos conceptes Unix, inclòs l'accés a fitxers mitjançant identificadors de fitxers, directoris jeràrquics i control d'E/S del dispositiu. A DOS 3.1, es va afegir el suport del redirector de xarxa. A MS-DOS 3.31, les funcions INT 25h/26h es van millorar per suportar discs durs de més de 32 MB. MS-DOS 5 va afegir suport per utilitzar blocs de memòria superiors (UMB). Després de MS-DOS 5, l'API de DOS no va canviar per a les successives versions independents de DOS.

## L'API DOS i Windows

A Windows 9x, DOS va carregar el sistema en mode protegit i l'intèrpret d'ordres gràfics. Normalment s'accedia a DOS des d'una màquina DOS virtual (VDM), però també era possible arrencar directament amb MS-DOS 7.0 en mode real sense carregar Windows. L'API de DOS es va ampliar amb suport millorat per a la internacionalització i suport de noms de fitxer llargs, tot i que el suport de noms de fitxer llarg només estava disponible en un VDM. Amb Windows 95 OSR2, DOS es va actualitzar a 7.1, que va afegir suport FAT32, i es van afegir funcions a l'API de DOS per donar-hi suport. Windows 98 i Windows ME també implementen l'API MS-DOS 7.1, tot i que Windows ME s'informa com MS-DOS 8.0.
Windows NT i els sistemes basats en ell (per exemple, Windows XP i Windows Vista) no estan basats en MS-DOS, però utilitzen una màquina virtual, NTVDM, per gestionar l'API DOS. NTVDM funciona executant un programa DOS en mode virtual 8086 (una emulació del mode real dins del mode protegit disponible en processadors 80386 i superiors). NTVDM és compatible amb l'API DOS 5.0. DOSEMU per a Linux utilitza un enfocament similar.

## Vectors d'interrupció utilitzats per DOS

La següent és la llista de vectors d'interrupció utilitzats pels programes per invocar les funcions de l'API de DOS.
| Vector d'interrupció | Descripció | Versió | Notes |
| 20h | Finalitzar el programa | 1.0+ | Implementat al nucli DOS |
| 21h | API principal de DOS | 1.0+ | Implementat al nucli DOS |
| 22h | Adreça de finalització del programa | 1.0+ | Adreça de retorn al programa de trucades |
| 23h | Adreça del controlador Control-C | 1.0+ | El controlador predeterminat es troba a l'intèrpret d'ordres (normalment COMMAND.COM) |
| 24h | Adreça del gestor d'errors crítics | 1.0+ | El controlador predeterminat es troba a l'intèrpret d'ordres (normalment COMMAND.COM) |
| 25h | Lectura absoluta del disc | 1.0+ | Implementat al nucli DOS, millorat a DOS 3.31 per suportar particions de fins a 2 GB |
| 26h | Escriptura absoluta en disc | 1.0+ | Implementat al nucli DOS, millorat a DOS 3.31 per suportar particions de fins a 2 GB |
| 27h | Finalitzar i romandre resident | 1.0+ | Implementat a COMMAND. COM a DOS 1.0, nucli DOS a DOS 2.0+ |
| 28h | Crida inactiva | 2.0+ | Cridat pel nucli de DOS quan s'espera l'entrada |
| 29h | Sortida ràpida de la consola | 2.0+ | Implementat pel controlador de dispositiu de la consola integrat o un controlador de substitució com ANSI. SYS |
| 2Ah | Networking i secció crítica | 3.0+ | Cridat pel nucli de DOS per interaccionar amb el programari de xarxa |
| 2Bh | Sense utilitzar | | |
| 2Ch | Sense utilitzar | | |
| 2Dh | Sense utilitzar | | |
| 2Eh | Torna a carregar el transitori | 2.0+ | Implementat a COMMAND.COM |
| 2Fh | Multiplex | 3.0+ | Implementat al nucli de DOS i diversos programes (PRINT, MSCDEX, DOSKEY, APPEND, etc.) depenent del número de subfunció |

## Referències

* ↑ «What is a Windows API?» (en anglès). [Consulta: 3 desembre 2023].
* ↑ Ray Duncan. Advanced MS-DOS Programming: The Microsoft Guide for Assembly Language and C Programmers (en anglès). Microsoft Press, 1988. ISBN 0914845772.
* ↑ «What is an Application Programming Interface (API)? | IBM» (en anglès americà). [Consulta: 3 desembre 2023].
* ↑ «API Cheat Sheet – What is an API, How it Works, and How to Choose the Right API Testing Tools» (en anglès), 06-02-2021. [Consulta: 3 desembre 2023].