API DOS - DOS API

A API DOS é uma API originada no 86-DOS e usada no MS-DOS / PC DOS e em outros sistemas operacionais compatíveis com DOS . A maioria das chamadas para a API do DOS são feitas usando a interrupção de software 21h ( INT 21h). Ao chamar INT 21h com um número de subfunção no registro do processador AH e outros parâmetros em outros registros, vários serviços DOS podem ser chamados. Isso inclui manipulação de entrada de teclado, saída de vídeo, acesso a arquivo em disco, execução de programa, alocação de memória e várias outras atividades. No final da década de 1980, os extensores DOS , juntamente com a Interface de modo protegido do DOS (DPMI), permitem que os programas sejam executados no modo protegido de 16 ou 32 bits e ainda tenham acesso à API do DOS.

História da API DOS

A API DOS original no 86-DOS e MS-DOS 1.0 foi concebido para ser funcionalmente compatíveis com CP / M . Os arquivos foram acessados ​​usando blocos de controle de arquivos (FCBs). A API DOS foi amplamente ampliada no MS-DOS 2.0 com vários conceitos Unix, incluindo acesso a arquivos usando identificadores de arquivos , diretórios hierárquicos e controle de E / S de dispositivo. No DOS 3.1, o suporte a redirecionadores de rede foi adicionado. No MS-DOS 3.31, as funções INT 25h / 26h foram aprimoradas para oferecer suporte a discos rígidos maiores que 32 MB. O MS-DOS 5 adicionou suporte para o uso de blocos de memória superior (UMBs). Após o MS-DOS 5, a API do DOS permaneceu inalterada nas versões autônomas sucessivas do DOS.

A API DOS e Windows

No Windows 9x , o DOS carregava o sistema de modo protegido e o shell gráfico. O DOS era geralmente acessado de uma máquina virtual DOS (VDM), mas também era possível inicializar diretamente no modo real MS-DOS 7.0 sem carregar o Windows. A API DOS foi estendida com suporte aprimorado à internacionalização e suporte a nomes longos de arquivos , embora o suporte a nomes longos só estivesse disponível em um VDM. Com o Windows 95 OSR2, o DOS foi atualizado para 7.1, que adicionou suporte a FAT32 , e funções foram adicionadas à API DOS para oferecer suporte a isso. O Windows 98 e o Windows ME também implementam a API do MS-DOS 7.1, embora o Windows ME se relate como MS-DOS 8.0.

O Windows NT e os sistemas baseados nele (por exemplo, Windows XP e Windows Vista ) não são baseados no MS-DOS, mas usam uma máquina virtual , NTVDM , para lidar com a API DOS. O NTVDM funciona executando um programa DOS no modo 8086 virtual (uma emulação do modo real dentro do modo protegido disponível nos processadores 80386 e superiores). O NTVDM oferece suporte à API DOS 5.0. DOSEMU para Linux usa uma abordagem semelhante.

Vetores de interrupção usados ​​pelo DOS

A seguir está a lista de vetores de interrupção usados ​​por programas para invocar as funções da API DOS.

Vetor de interrupção Descrição Versão Notas
20h Encerrar programa 1.0+ Implementado no kernel DOS
21h API DOS Principal 1.0+ Implementado no kernel DOS
22h Endereço de encerramento do programa 1.0+ Endereço de retorno no programa de chamada
23h Endereço do manipulador Control-C 1.0+ O manipulador padrão está no shell de comando (geralmente COMMAND.COM)
24h Endereço de manipulador de erro crítico 1.0+ O manipulador padrão está no shell de comando (geralmente COMMAND.COM)
25h Leitura de disco absoluto 1.0+ Implementado no kernel DOS, aprimorado no DOS 3.31 para suportar partições de até 2 GB
26h Gravação absoluta de disco 1.0+ Implementado no kernel DOS, aprimorado no DOS 3.31 para suportar partições de até 2 GB
27h Encerrar e permanecer residente 1.0+ Implementado em COMMAND.COM no DOS 1.0, kernel do DOS no DOS 2.0+
28h Frase de destaque inativa 2.0+ Chamado pelo kernel DOS ao esperar por entrada
29h Saída rápida do console 2.0+ Implementado pelo driver de dispositivo de console integrado ou por um driver de substituição como ANSI.SYS
2Ah Rede e seção crítica 3,0+ Chamado pelo kernel DOS para fazer interface com o software de rede
2Bh Não utilizado
2Ch Não utilizado
2Dh Não utilizado
2Eh Reload transient 2.0+ Implementado em COMMAND.COM
2Fh Multiplex 3,0+ Implementado no kernel DOS e vários programas (PRINT, MSCDEX, DOSKEY, APPEND, etc.) dependendo do número da subfunção

Serviços DOS INT 21h

A seguir está a lista de funções fornecidas por meio do vetor de interrupção de software principal da API DOS.

AH Descrição Versão
00h Fim do programa 1.0+
01h Entrada de personagem 1.0+
02h Saída de caracteres 1.0+
03h Entrada auxiliar 1.0+
04h Saída auxiliar 1.0+
05h Saída da impressora 1.0+
06h E / S de console direto 1.0+
07h Entrada direta do console sem eco 1.0+
08h Entrada de console sem eco 1.0+
09h Display string 1.0+
0Ah Entrada de teclado com buffer 1.0+
0Bh Obter status de entrada 1.0+
0Ch Limpar buffer de entrada e entrada 1.0+
0Dh Reiniciar disco 1.0+
0Eh Definir unidade padrão 1.0+
0Fh Abrir arquivo 1.0+
10h Fechar arquivo 1.0+
11h Encontre o primeiro arquivo 1.0+
12h Encontre o próximo arquivo 1.0+
13h Excluir arquivo 1.0+
14h Leitura sequencial 1.0+
15h Gravação sequencial 1.0+
16h Criar ou truncar arquivo 1.0+
17h Renomear arquivo 1.0+
18h Reservado 1.0+
19h Obter unidade padrão 1.0+
1Ah Definir endereço de transferência de disco 1.0+
1Bh Obtenha informações de alocação para unidade padrão 1.0+
1Ch Obtenha informações de alocação para a unidade especificada 1.0+
1Dh Reservado 1.0+
1Eh Reservado 1.0+
1Fh Obter bloco de parâmetros de disco para unidade padrão 1.0+
20h Reservado 1.0+
21h Leitura aleatória 1.0+
22h Escrita aleatória 1.0+
23h Obtenha o tamanho do arquivo em registros 1.0+
24h Definir número de registro aleatório 1.0+
25h Definir vetor de interrupção 1.0+
26h Criar PSP 1.0+
27h Leitura de bloco aleatório 1.0+
28h Gravação de bloco aleatório 1.0+
29h Analisar nome do arquivo 1.0+
2Ah Obter data 1.0+
2Bh Definir data 1.0+
2Ch Consiga tempo 1.0+
2Dh Definir tempo 1.0+
2Eh Definir sinalizador de verificação 1.0+
2Fh Obter endereço de transferência de disco 2.0+
30h Obtenha a versão DOS 2.0+
31h Encerrar e permanecer residente 2.0+
32h Obter bloco de parâmetros de disco para a unidade especificada 2.0+
33h Obter ou definir Ctrl-Break 2.0+
34h Obter ponteiro de sinalizador InDOS 2.0+
35h Obter vetor de interrupção 2.0+
36h Obtenha espaço livre em disco 2.0+
37h Obter ou definir o caractere de troca 2.0+
38h Obtenha ou defina as informações do país 2.0+
39h Criar subdiretório 2.0+
3Ah Remover subdiretório 2.0+
3Bh Mudar o diretório atual 2.0+
3Ch Criar ou truncar arquivo 2.0+
3Dh Abrir arquivo 2.0+
3Eh Fechar arquivo 2.0+
3Fh Ler arquivo ou dispositivo 2.0+
40h Gravar arquivo ou dispositivo 2.0+
41h Excluir arquivo 2.0+
42h Mover o ponteiro do arquivo 2.0+
43h Obter ou definir atributos de arquivo 2.0+
44h Controle de E / S para dispositivos 2.0+
45h Alça duplicada 2.0+
46h Identificador de redirecionamento 2.0+
47h Obtenha o diretório atual 2.0+
48h Alocar memória 2.0+
49h Liberar memória 2.0+
4Ah Realocar memória 2.0+
4Bh Executar programa 2.0+
4Ch Terminar com código de retorno 2.0+
4Dh Obtenha o código de retorno do programa 2.0+
4Eh Encontre o primeiro arquivo 2.0+
4Fh Encontre o próximo arquivo 2.0+
50h Definir PSP atual 2.0+
51h Obtenha PSP atual 2.0+
52h Obtenha ponteiros internos do DOS (SYSVARS) 2.0+
53h Criar bloco de parâmetros de disco 2.0+
54h Obter sinalizador de verificação 2.0+
55h Criar programa PSP 2.0+
56h Renomear arquivo 2.0+
57h Obter ou definir a data e hora do arquivo 2.0+
58h Obter ou definir estratégia de alocação 2,11+
59h Obtenha informações de erro estendidas 3,0+
5Ah Crie um arquivo único 3,0+
5Bh Criar novo arquivo 3,0+
5Ch Bloquear ou desbloquear arquivo 3,0+
5Dh Funções de compartilhamento de arquivos 3,0+
5Eh Funções de rede 3,0+
5Fh Funções de redirecionamento de rede 3,0+
60h Qualificar nome de arquivo 3,0+
61h Reservado 3,0+
62h Obtenha PSP atual 3,0+
63h Obter o ponteiro da tabela de bytes principais DBCS 3,0+
64h Definir espera por sinalizador de evento externo 3,2+
65h Obtenha informações estendidas do país 3,3+
66h Obter ou definir a página de código 3,3+
67h Definir contagem de alças 3,3+
68h Enviar arquivo 3,3+
69h Obter ou definir ID de mídia 4.0+
6Ah Enviar arquivo 4.0+
6Bh Reservado 4.0+
6Ch Abrir / criar arquivo estendido 4.0+

Sistemas operacionais com suporte nativo

Sistemas operacionais com camada de emulação DOS

Outros emuladores

Veja também

Referências

Leitura adicional

  • Allen, Paul ; Gates, Bill ; King, Adrian; Larson, Chris; Letwin, Gordon ; O'Rear, Bob ; Paterson, Tim ; Peters, Chris; Phillips, Bruce; Reynolds, Aaron ; Stillmaker, Betty; Zbikowski, Mark (1986). "Assessores técnicos". Enciclopédia de referência técnica do MS-DOS (versões 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 referência da Microsoft. 1 (Original retirado ed.). Redmond, Washington, EUA: Microsoft Press . ISBN 0-914845-69-1. LCCN  86-8640 . OCLC  635600205 .(xvii + 1053 páginas; 29 cm) (NB. Esta edição original contém fluxogramas do funcionamento interno do sistema. Foi retirada pela Microsoft antes da distribuição em massa em 1986 porque continha muitos erros factuais, bem como algumas informações classificadas que deveriam não foi publicado. Poucas cópias impressas sobreviveram. Foi substituído por uma edição totalmente reformulada em 1988. [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; Farmer, Rick; Gates, Bill ; Geary, Michael; Griffin, Bob; Hogarth, Doug; Johnson, James W .; Kermaani, Kaamel; King, 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; Curto, Anthony; Slivka, Ben; Smirl, Jon; Stillmaker, Betty; Stoddard, John; Tillman, Dennis; Whitten, Greg; Yount, Natalie; Zeck, Steve (1988). "Assessores técnicos". A enciclopédia do MS-DOS: versões 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 retrabalhada). Redmond, Washington, EUA: Microsoft Press . ISBN 1-55615-049-0. LCCN  87-21452 . OCLC  16581341 .(xix + 1570 páginas; 26 cm) (NB. Esta edição foi publicada em 1988 após um extenso retrabalho da primeira edição retirada de 1986 por uma equipe diferente de autores. [2] )
  • The New Peter Norton Programmer's Guide to the IBM PC & PS / 2 por Peter Norton e Richard Wilton, Microsoft Press, 1987 ISBN  1-55615-131-4 .
  • Ray Duncan (1988). Avançada MS-DOS programação: O Guia Microsoft para Assembly Language e C programadores . Microsoft Press. ISBN 0914845772.
  • The Programmer's PC Sourcebook de Thom Hogan, Microsoft Press, 1991 ISBN  155615321X
  • Referência do programador do Microsoft MS-DOS - The Official Technical Reference to MS-DOS , Microsoft Press, 1993 ISBN  1556155468
  • Atualização Técnica IBM PC DOS 7
  • OpenDOS Developer's Reference Series - OpenDOS Programmer's Guide - System and Programmer's Guide . Caldera, Inc. Agosto de 1997. Caldera Part No. 200-DOPG-003. Arquivado do original em 07/10/2017 . Página visitada em 28/06/2012 . (Impresso no Reino Unido.)

links externos