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
- MS-DOS - implementação mais difundida
- PC DOS - versão IBM OEM do MS-DOS
- OS / 2 1.x - sucessor Microsoft / IBM do MS-DOS e PC DOS
- SISNE plus - Clone criado pela Itautec e Scopus Tecnologia no Brasil
- DR-DOS - família Digital Research DOS, incluindo Novell DOS , PalmDOS , OpenDOS , etc.
- PTS-DOS - Clone PhysTechSoft e Paragon DOS, incluindo S / DOS
- ROM-DOS - versão Datalight ROM DOS
- DOS embutido - versão geral do software
- FreeDOS - Clone DOS gratuito e de código aberto
- ReactOS ( versões IA-32 e x86-64 )
- Windows 95 - contém MS-DOS 7.0
- Windows 98 - contém MS-DOS 7.1
- Windows 98 SE - contém MS-DOS 7.1
- Windows ME - contém MS-DOS 8.0
Sistemas operacionais com camada de emulação DOS
- CP / M-86 simultâneo (somente 3.1) com PCMODE - Sistema operacional baseado em CP / M-86 Digital Research com emulador DOS de PC opcional
- DOS simultâneo - família de CDOS de pesquisa digital com emulador DOS de PC integrado
- DOS Plus - uma variante simplificada para um único usuário do Concurrent PC DOS 4.1–5.0
- DOS multiusuário - família Digital Research / Novell MDOS incluindo Datapac System Manager , IMS REAL / 32 , etc.
- OS / 2 (2.xe posterior) - sistema operacional IBM usando um MS-DOS 5.0 totalmente licenciado em uma máquina virtual
- Windows NT (todas as versões, exceto edições de 64 bits)
Outros emuladores
- NTVDM para Windows NT
- DOSEMU para Linux
- DOSBox
Veja também
- BIOS interromper chamada
- Lista de interrupções de Ralf Brown (RBIL)
- Comparação de sistemas operacionais DOS
- Interface de modo protegido DOS (DPMI)
- Extensor DOS
- Executável DOS MZ
- COMMAND.COM
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.)