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) permiten que los programas se ejecuten en modo protegido de 16 o 32 bits y aún así tengan 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. [1] 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 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 retorno 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+ | Llamado por 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 primario de la API de DOS.
AH | Descripción | Versión |
---|---|---|
00h | Finalización del programa | 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 el búfer de entrada y la entrada | 1.0+ |
0Dh | Restablecimiento de 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 el 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 | Define 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 el 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 el 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 la 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 el número 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
- MS-DOS : implementación más extendida
- PC DOS : versión IBM OEM de MS-DOS
- OS / 2 1.x: sucesor de Microsoft / IBM de MS-DOS y PC DOS
- SISNE plus - Clon creado por Itautec y Scopus Tecnologia en Brasil
- DR-DOS : familia DOS de investigación digital, que incluye Novell DOS , PalmDOS , OpenDOS , etc.
- PTS-DOS : clon de PhysTechSoft y Paragon DOS, incluido S / DOS
- ROM-DOS - Versión DOS de Datalight ROM
- DOS integrado : versión de software general
- FreeDOS : clon de DOS de código abierto y gratuito
- ReactOS ( versiones IA-32 y x86-64 )
- Windows 95 : contiene MS-DOS 7.0
- Windows 98 : contiene MS-DOS 7.1
- Windows 98 SE : contiene MS-DOS 7.1
- Windows ME : contiene MS-DOS 8.0
Sistemas operativos con capa de emulación DOS
- CP / M-86 concurrente (solo 3.1) con PCMODE - SO basado en Digital Research CP / M-86 con emulador de PC DOS opcional
- DOS concurrentes : familia de CDOS de investigación digital con emulador de DOS para PC integrado
- DOS Plus : una variante simplificada para un solo usuario de Concurrent PC DOS 4.1–5.0
- DOS multiusuario - Familia de investigación digital / Novell MDOS que incluye Datapac System Manager , IMS REAL / 32 , etc.
- OS / 2 (2.xy posterior): sistema operativo IBM que utiliza un MS-DOS 5.0 con licencia completa en una máquina virtual
- Windows NT (todas las versiones excepto las ediciones de 64 bits)
Otros emuladores
- NTVDM para Windows NT
- DOSEMU para Linux
- DOSBox
Ver también
- Llamada de interrupción del BIOS
- Lista de interrupciones de Ralf Brown (RBIL)
- Comparación de sistemas operativos DOS
- Interfaz de modo protegido de DOS (DPMI)
- Extensor de DOS
- Ejecutable DOS MZ
- COMMAND.COM
Referencias
- ^ Ray Duncan (1988). Avanzada MS-DOS Programación: La Guía de Microsoft para el lenguaje ensamblador y C programadores . Microsoft Press. ISBN 0914845772.
Otras lecturas
- Allen, Paul ; Gates, Bill ; Rey, Adrian; Larson, Chris; Letwin, Gordon ; O'Rear, Bob ; Paterson, Tim ; Peters, Chris; Phillips, Bruce; Reynolds, Aaron ; Stillmaker, Betty; Zbikowski, Mark (1986). "Asesores técnicos". Enciclopedia de referencia técnica de MS-DOS (versiones 1.0-3.2) . Por 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 referencia de Microsoft. 1 (Original retirado ed.). Redmond, Washington, Estados Unidos: Microsoft Press . ISBN 0-914845-69-1. LCCN 86-8640 . OCLC 635600205 .(xvii + 1053 páginas; 29 cm) (NB. Esta edición original contiene diagramas de flujo del funcionamiento interno del sistema. Microsoft la retiró antes de la distribución masiva en 1986 porque contenía muchos errores fácticos, así como información clasificada que debería no se ha publicado. Pocas copias impresas sobrevivieron. Fue reemplazada por una edición completamente reelaborada en 1988. [1] )
- Zbikowski, Mark ; Allen, Paul ; Ballmer, Steve ; Borman, Reuben; Borman, Rob; Mayordomo, John; Carroll, Chuck; Chamberlain, Mark; Chell, David; Colee, Mike; Courtney, Mike; Dryfoos, Mike; Duncan, Rachel; Eckhardt, Kurt; Evans, Eric; Granjero, Rick; Gates, Bill ; Geary, Michael; Griffin, Bob; Hogarth, Doug; Johnson, James W .; Kermaani, Kaamel; Rey, Adrian; Koch, Reed; Landowski, James; Larson, Chris; Lennon, Thomas; Lipkie, Dan; McDonald, Marc ; McKinney, Bruce; Martín, 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 ; Pérez, Gary; Peters, Chris; Petzold, Charles ; Pollock, John; Reynolds, Aaron ; Rubin, Darryl; Ryan, Ralph; Schulmeisters, Karl; Shah, Rajen; Shaw, Barry; Corto, Anthony; Slivka, Ben; Smirl, Jon; Stillmaker, Betty; Stoddard, John; Tillman, Dennis; Whitten, Greg; Yount, Natalie; Zeck, Steve (1988). "Asesores técnicos". La Enciclopedia de MS-DOS: versiones 1.0 a 3.2 . Por 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. Completamente reelaborada). Redmond, Washington, Estados Unidos: Microsoft Press . ISBN 1-55615-049-0. LCCN 87-21452 . OCLC 16581341 .(xix + 1570 páginas; 26 cm) (NB. Esta edición fue publicada en 1988 después de una extensa revisión de la primera edición retirada de 1986 por un equipo diferente de autores. [2] )
- The New Peter Norton Programmer's Guide to IBM PC & PS / 2 por Peter Norton y Richard Wilton, Microsoft Press, 1987 ISBN 1-55615-131-4 .
- Ray Duncan (1988). Avanzada MS-DOS Programación: La Guía de Microsoft para el lenguaje ensamblador y C programadores . Microsoft Press. ISBN 0914845772.
- The Programmer's PC Sourcebook por Thom Hogan, Microsoft Press, 1991 ISBN 155615321X
- Referencia del programador de Microsoft MS-DOS: la referencia técnica oficial de MS-DOS , Microsoft Press, 1993 ISBN 1556155468
- Actualización técnica de IBM PC DOS 7
- Serie de referencia para desarrolladores de OpenDOS - Guía del programador de OpenDOS - Guía del programador y del sistema . Caldera, Inc. Agosto de 1997. Caldera Part No. 200-DOPG-003. Archivado desde el original el 7 de octubre de 2017 . Consultado el 28 de junio de 2012 . (Impreso en el Reino Unido.)
enlaces externos
- La lista de interrupciones x86 (también conocida como RBIL, lista de interrupciones de Ralf Brown )
- ctyme.com - Llamadas INT por función
- wustl.edu - Descripción de los servicios de MS-DOS