API de DOS - DOS API

La API de DOS es una API que se originó con 86-DOS y se utiliza en MS-DOS / PC DOS y otros sistemas operativos compatibles con DOS . La mayoría de las llamadas a la API de DOS se invocan mediante la interrupción de software 21h ( INT 21h). Al llamar a INT 21h con un número de subfunción en el registro del procesador AH y otros parámetros en otros registros, se pueden invocar varios servicios de DOS. Estos incluyen el manejo de entrada de teclado, salida de video, acceso a archivos de disco, ejecución de programas, asignación de memoria y varias otras actividades. A finales de la década de 1980, los extensores de DOS junto con la Interfaz de modo protegido de DOS (DPMI) permitían que los programas se ejecutaran en modo protegido de 16 o 32 bits y todavía tenían acceso a la API de DOS.

Historia de la API de DOS

El API original de DOS en 86-DOS y MS-DOS 1.0 fue diseñado para ser funcionalmente compatible con CP / M . Se accedió a los archivos mediante bloques de control de archivos (FCB). La API de DOS se amplió enormemente en MS-DOS 2.0 con varios conceptos de Unix, incluido el acceso a archivos mediante identificadores de archivos , directorios jerárquicos y control de E / S de dispositivos. En DOS 3.1, se agregó compatibilidad con redireccionador de red . En MS-DOS 3.31, las funciones INT 25h / 26h se mejoraron para admitir discos duros de más de 32 MB. MS-DOS 5 agregó soporte para el uso de bloques de memoria superiores (UMB). Después de MS-DOS 5, la API de DOS no se modificó para las sucesivas versiones independientes de DOS.

La API de DOS y Windows

En Windows 9x , DOS cargó el sistema en modo protegido y el shell gráfico. Por lo general, se accedía a DOS desde una máquina virtual de DOS (VDM), pero también era posible arrancar directamente en el modo real MS-DOS 7.0 sin cargar Windows. La API de DOS se amplió con soporte de internacionalización mejorado y soporte de nombre de archivo largo , aunque el soporte de nombre de archivo largo solo estaba disponible en un VDM. Con Windows 95 OSR2, DOS se actualizó a 7.1, lo que agregó compatibilidad con FAT32 , y se agregaron funciones a la API de DOS para admitir esto. Windows 98 y Windows ME también implementan la API de MS-DOS 7.1, aunque Windows ME se informa como MS-DOS 8.0.

Windows NT y los sistemas basados ​​en él (por ejemplo, Windows XP y Windows Vista ) no están basados ​​en MS-DOS, pero utilizan una máquina virtual , NTVDM , para manejar la API de DOS. NTVDM funciona ejecutando un programa DOS en modo virtual 8086 (una emulación del modo real dentro del modo protegido disponible en 80386 y procesadores superiores). NTVDM es compatible con la API de DOS 5.0. DOSEMU para Linux utiliza un enfoque similar.

Vectores de interrupción utilizados por DOS

La siguiente es la lista de vectores de interrupción utilizados por los programas para invocar las funciones de la API de DOS.

Vector de interrupción Descripción Versión Notas
20h Terminar programa 1.0+ Implementado en el kernel de DOS
21h API principal de DOS 1.0+ Implementado en el kernel de DOS
22h Dirección de terminación del programa 1.0+ Dirección de devolución en el programa de llamadas
23h Dirección del controlador Control-C 1.0+ El controlador predeterminado está en el shell de comandos (generalmente COMMAND.COM)
24h Dirección del controlador de errores críticos 1.0+ El controlador predeterminado está en el shell de comandos (generalmente COMMAND.COM)
25h Lectura de disco absoluta 1.0+ Implementado en el kernel de DOS, mejorado en DOS 3.31 para admitir particiones de hasta 2 GB
26h Escritura de disco absoluta 1.0+ Implementado en el kernel de DOS, mejorado en DOS 3.31 para admitir particiones de hasta 2 GB
27h Terminar y permanecer residente 1.0+ Implementado en COMMAND.COM en DOS 1.0, kernel de DOS en DOS 2.0+
28h Llamada inactiva 2.0+ Lo llama el kernel de DOS cuando espera una entrada
29h Salida de consola rápida 2.0+ Implementado por el controlador de dispositivo de consola integrado o un controlador de reemplazo como ANSI.SYS
2Ah Red y sección crítica 3.0+ Llamado por el kernel de DOS para interactuar con el software de red
2Bh No usado
2Ch No usado
2Dh No usado
2Eh Recargar transitorio 2.0+ Implementado en COMMAND.COM
2Fh Multicine 3.0+ Implementado en el kernel de DOS y varios programas (PRINT, MSCDEX, DOSKEY, APPEND, etc.) dependiendo del número de subfunción

Servicios DOS INT 21h

La siguiente es la lista de funciones proporcionadas a través del vector de interrupción del software principal de la API de DOS.

AH Descripción Versión
00h El programa termina 1.0+
01h Entrada de caracteres 1.0+
02h Salida de caracteres 1.0+
03h Entrada auxiliar 1.0+
04h Salida auxiliar 1.0+
05h Salida de impresora 1.0+
06h E / S de consola directa 1.0+
07h Entrada de consola directa sin eco 1.0+
08h Entrada de consola sin eco 1.0+
09h Cadena de visualización 1.0+
0Ah Entrada de teclado en búfer 1.0+
0Bh Obtener estado de entrada 1.0+
0Ch Vaciar búfer de entrada y entrada 1.0+
0Dh Reinicio del disco 1.0+
0Eh Establecer unidad predeterminada 1.0+
0Fh Abrir documento 1.0+
10h Cerrar el archivo 1.0+
11h Encuentra el primer archivo 1.0+
12h Buscar siguiente archivo 1.0+
13h Borrar archivo 1.0+
14h Lectura secuencial 1.0+
15h Escritura secuencial 1.0+
16h Crear o truncar archivo 1.0+
17h Renombrar archivo 1.0+
18h Reservado 1.0+
19h Obtener unidad predeterminada 1.0+
1Ah Establecer dirección de transferencia de disco 1.0+
1Bh Obtener información de asignación para la unidad predeterminada 1.0+
1Ch Obtener información de asignación para la unidad especificada 1.0+
1Dh Reservado 1.0+
1Eh Reservado 1.0+
1Fh Obtener bloque de parámetros de disco para la unidad predeterminada 1.0+
20h Reservado 1.0+
21h Lectura aleatoria 1.0+
22h Escritura aleatoria 1.0+
23h Obtener tamaño de archivo en registros 1.0+
24h Establecer número de registro aleatorio 1.0+
25h Establecer vector de interrupción 1.0+
26h Crear PSP 1.0+
27h Lectura de bloque aleatoria 1.0+
28h Escritura de bloque aleatoria 1.0+
29h Analizar nombre de archivo 1.0+
2Ah Obtener la fecha 1.0+
2Bh Establece la fecha 1.0+
2Ch Consigue tiempo 1.0+
2Dh Fijar tiempo 1.0+
2Eh Establecer marca de verificación 1.0+
2Fh Obtener dirección de transferencia de disco 2.0+
30h Obtener la versión de DOS 2.0+
31h Terminar y permanecer residente 2.0+
32h Obtener bloque de parámetros de disco para la unidad especificada 2.0+
33h Obtener o establecer Ctrl-Break 2.0+
34h Obtener el puntero de la bandera de InDOS 2.0+
35h Obtener vector de interrupción 2.0+
36h Obtenga espacio libre en disco 2.0+
37h Obtener o establecer un carácter de cambio 2.0+
38h Obtener o configurar la información del país 2.0+
39h Crear subdirectorio 2.0+
3Ah Eliminar subdirectorio 2.0+
3Bh Cambiar directorio actual 2.0+
3Ch Crear o truncar archivo 2.0+
3Dh Abrir documento 2.0+
3Eh Cerrar el archivo 2.0+
3Fh Leer archivo o dispositivo 2.0+
40h Escribir archivo o dispositivo 2.0+
41h Borrar archivo 2.0+
42h Mover el puntero de archivo 2.0+
43h Obtener o establecer atributos de archivo 2.0+
44h Control de E / S para dispositivos 2.0+
45h Mango duplicado 2.0+
46h Identificador de redireccionamiento 2.0+
47h Obtener directorio actual 2.0+
48h Asignar memoria 2.0+
49h Liberar memoria 2.0+
4Ah Reasignar memoria 2.0+
4Bh Ejecutar programa 2.0+
4Ch Terminar con código de retorno 2.0+
4Dh Obtener el código de retorno del programa 2.0+
4Eh Encuentra el primer archivo 2.0+
4Fh Buscar siguiente archivo 2.0+
50h Establecer PSP actual 2.0+
51h Obtener PSP actual 2.0+
52h Obtener punteros internos de DOS (SYSVARS) 2.0+
53h Crear bloque de parámetros de disco 2.0+
54h Obtener bandera de verificación 2.0+
55h Crear programa PSP 2.0+
56h Renombrar archivo 2.0+
57h Obtener o establecer la fecha y hora del archivo 2.0+
58h Obtener o establecer una estrategia de asignación 2.11+
59h Obtener información de error ampliada 3.0+
5Ah Crear archivo único 3.0+
5Bh Crear nuevo archivo 3.0+
5Ch Bloquear o desbloquear archivo 3.0+
5Dh Funciones para compartir archivos 3.0+
5Eh Funciones de red 3.0+
5Fh Funciones de redireccionamiento de red 3.0+
60h Calificar nombre de archivo 3.0+
61h Reservado 3.0+
62h Obtener PSP actual 3.0+
63h Obtener el puntero de la tabla de bytes principales de DBCS 3.0+
64h Establecer espera para el indicador de evento externo 3.2+
65h Obtener información ampliada del país 3.3+
66h Obtener o establecer la página de códigos 3.3+
67h Establecer recuento de identificadores 3.3+
68h Confirmar archivo 3.3+
69h Obtener o establecer una identificación de medios 4.0+
6Ah Confirmar archivo 4.0+
6Bh Reservado 4.0+
6Ch Abrir / crear archivo extendido 4.0+

Sistemas operativos con soporte nativo

Sistemas operativos con capa de emulación DOS

Otros emuladores

Ver también

Referencias

Otras lecturas

enlaces externos