The DOS API is an API which originated with 86-DOS and is used in MS-DOS/PC DOS and other DOS-compatible operating systems.  Most calls to the DOS API are invoked using software interrupt 21h (INT 21h). By calling INT 21h with a subfunction number in the AH processor register and other parameters in other registers, various DOS services can be invoked. These include handling keyboard input, video output, disk file access, program execution, memory allocation, and various other activities. In the late 1980s, DOS extenders along with the DOS Protected Mode Interface (DPMI) allow the programs to run in either 16-bit or 32-bit protected mode and still have access to the DOS API.

History of the DOS API
The original DOS API in 86-DOS and MS-DOS 1.0 was designed to be functionally compatible with CP/M. Files were accessed using file control blocks (FCBs). The DOS API was greatly extended in MS-DOS 2.0 with several Unix concepts, including file access using file handles, hierarchical directories and device I/O control. In DOS 3.1, network redirector support was added. In MS-DOS 3.31, the INT 25h/26h functions were enhanced to support hard disks greater than 32 MB. MS-DOS 5 added support for using upper memory blocks (UMBs). After MS-DOS 5, the DOS API was unchanged for the successive standalone releases of DOS.

The DOS API and Windows
In Windows 9x, DOS loaded the protected-mode system and graphical shell. DOS was usually accessed from a virtual DOS machine (VDM) but it was also possible to boot directly to real mode MS-DOS 7.0 without loading Windows. The DOS API was extended with enhanced internationalization support and long filename support, though the long filename support was only available in a VDM. With Windows 95 OSR2, DOS was updated to 7.1, which added FAT32 support, and functions were added to the DOS API to support this. Windows 98 and Windows ME also implement the MS-DOS 7.1 API, though Windows ME reports itself as MS-DOS 8.0.

Windows NT and the systems based on it (e.g. Windows XP and Windows Vista) are not based on MS-DOS, but use a virtual machine, NTVDM, to handle the DOS API. NTVDM works by running a DOS program in virtual 8086 mode (an emulation of real mode within protected mode available on 80386 and higher processors). NTVDM supports the DOS 5.0 API. DOSEMU for Linux uses a similar approach.

Interrupt vectors used by DOS
The following is the list of interrupt vectors used by programs to invoke the DOS API functions.

DOS INT 21h services
The following is the list of functions provided via the DOS API primary software interrupt vector.

Operating systems with native support
 MS-DOS – most widespread implementation
 PC DOS – IBM OEM version of MS-DOS
 OS/2 1.x – Microsoft/IBM successor to MS-DOS and PC DOS
 SISNE plus – Clone created by Itautec and Scopus Tecnologia in Brazil 
 DR-DOS – Digital Research DOS family, including Novell DOS, PalmDOS, OpenDOS, etc.
 PTS-DOS – PhysTechSoft & Paragon DOS clone, including S/DOS
 ROM-DOS – Datalight ROM DOS version
 Embedded DOS – General Software version
 FreeDOS – Free, open source DOS clone
 ReactOS (IA-32 and x86-64 versions)
 Windows 95 – contains MS-DOS 7.0
 Windows 98 – contains MS-DOS 7.1
 Windows 98 SE – contains MS-DOS 7.1
 Windows ME – contains MS-DOS 8.0

Operating systems with DOS emulation layer
 Concurrent CP/M-86 (3.1 only) with PCMODE – Digital Research CP/M-86-based OS with optional PC DOS emulator
 Concurrent DOS – Digital Research CDOS family with built-in PC DOS emulator
 DOS Plus – a stripped-down single-user variant of Concurrent PC DOS 4.1–5.0
 Multiuser DOS – Digital Research/Novell MDOS family including Datapac System Manager, IMS REAL/32, etc.
 OS/2 (2.x and later) – IBM operating system using a fully-licensed MS-DOS 5.0 in a virtual machine
 Windows NT (all versions except 64-bit editions and 32-bit ARM editions)

Other emulators
 NTVDM for Windows NT
 DOSEMU for Linux
 DOSBox
 ReactOS

See also
 BIOS interrupt call
 Ralf Brown's Interrupt List (RBIL)
 Comparison of DOS operating systems
 DOS Protected Mode Interface (DPMI)
 DOS extender
 DOS MZ executable
 COMMAND.COM

References

Further reading
  (xvii+1053 pages; 29 cm) (NB. This original edition contains flowcharts of the internal workings of the system. It was withdrawn by Microsoft before mass-distribution in 1986 because it contained many factual errors as well as some classified information which should not have been published. Few printed copies survived. It was replaced by a completely reworked edition in 1988. )
  (xix+1570 pages; 26 cm) (NB. This edition was published in 1988 after extensive rework of the withdrawn 1986 first edition by a different team of authors. )
 
 
 
 
 IBM PC DOS 7 Technical Update
  (Printed in the UK.)

External links
 The x86 Interrupt List (a.k.a. RBIL, Ralf Brown's Interrupt List)
 ctyme.com - INT Calls by function
 wustl.edu - Description of MS-DOS services
 MS-DOS Interrupts 

DOS technology
Operating system APIs
X86 architecture
Interrupts
도스 API(DOS API)는 86-DOS를 기원으로 하고 MS-DOS/PC-DOS 및 기타 도스 호환 운영 체제에 쓰이는 API이다. 도스 API의 대부분의 호출은 소프트웨어 인터럽트 21h (INT 21h)를 이용하여 불러낸다. AH 프로세서 레지스터의 하부 함수 번호, 다른 레지스터의 다른 변수와 더불어 INT 21h를 호출함으로써 다양한 도스 서비스를 불러낸다. 도스 서비스에는 키보드 입력, 비디오 출력, 디스크 파일 접근, 프로그램 실행, 메모리 할당 등이 있다. 1980년대 말에 DPMI 등의 도스 확장자를 통해 프로그램들이 16비트나 32비트 보호 모드에서 실행할 수 있게 되었으며 여전히 도스 API로의 접근을 소유하고 있다.

역사 
86-DOS, MS-DOS 1.0에 있던 본래의 DOS API는 CP/M과의 기능 호환을 위해 설계되었다. 파일은 파일 제어 블록(FCBs)을 이용하여 접근된다. 도스 API는 MS-DOS 2.0에서 파일 처리, 계층 디렉터리, 장치 입출력 제어를 이용한 파일 접근과 같은 몇 가지 유닉스 개념과 더불어 더 많이 확장되었다. 도스 3.1에서 네트워크 리다이렉터 지원이 추가되었다. MS-DOS 3.31에서 INT 25h/26h 함수가 강화되어 32 MB 이상의 하드 디스크를 지원한다. MS-DOS 5에는 상위 메모리 영역(UMBs) 이용 지원이 추가되었다. MS-DOS 5 이후로 DOS API에는 변경 사항이 없다.

DOS API와 윈도 
윈도우 9x에서 도스는 일반적으로 보호 모드 운영 체제와 그래픽 셸을 불러들이는 부트로더로 사용되었다. 도스는 일반적으로 가상 도스 머신(VDM)으로부터 접근되었으나 윈도를 로드하지 않고 리얼 모드 MS-DOS 7.0로 직접 시동할 수도 있었다. 도스 API는 강화된 국제화 지원 및 긴 파일 이름 지원으로 강화되었는데, 여기서 긴 파일 이름 지원은 VDM을 통해서만 이용할 수 있었다. 윈도우 95 OSR2에서는 도스가 7.1로 업데이트되면서 FAT32 지원이 추가되었으며 DOS API가 이를 지원하는 기능이 추가되었다. 윈도우 98, 윈도우 미 또한 MS-DOS 8.0을 표방하면서 MS-DOS 7.1 API가 추가되어 있다.

윈도우 NT 계열 운영 체제(윈도우 XP, 윈도우 비스타, 윈도우 7, 윈도우 8 등)는 MS-DOS 기반은 아니지만 가상 머신 NTVDM을 사용하여 도스 API를 처리한다. NTVDM은 가상 8086 모드(80386 이상의 프로세서에서 이용할 수 있는 보호 모드 안의 리얼 모드의 에뮬레이션)에서 도스 프로그램을 실행함으로써 동작한다. NTVDM은 도스 5.0 API를 지원한다. 리눅스용 DOSEMU는 비슷한 접근 방식을 사용한다.

도스에 쓰이는 인터럽트 벡터

DOS INT 21h 서비스

MS-DOS API를 지원하는 운영 체제 
 MS-DOS
 PC DOS
 DR-DOS
 PTS-DOS
 ROM-DOS
 FreeDOS
 윈도우 95 - MS-DOS 7.0 포함
 윈도우 98 - MS-DOS 7.1 포함
 윈도우 98 SE - MS-DOS 7.1 포함
 윈도우 미 - MS-DOS 8.0 포함

MS-DOS API 지원 프로그램 
 PCMODE 포함 컨커런트 CP/M-86 (3.1 전용)
 컨커런트 도스
 도스 플러스
 멀티유저 도스
 NTVDM.EXE (윈도우 NT 계열)
 DOSEMU (리눅스)
 도스박스

같이 보기 
 바이오스 인터럽트 호출
 도스 확장자

참고 문헌 
  The x86 Interrupt List (a.k.a. RBIL, Ralf Brown's Interrupt List)
  ctyme.com - INT Calls by function
  wustl.edu - Description of MS-DOS services
  IBM PC DOS 7 Technical Update
 Microsoft MS-DOS Programmer's Reference - The Official Technical Reference to MS-DOS, Microsoft Press, 1993 
 The MS-DOS Encyclopedia, Microsoft Press, 1988, 
 Advanced MS-DOS Programming: The Microsoft Guide for Assembly Language and C Programmers by Ray Duncan, Microsoft Press, 1988 
 The Programmer's PC Sourcebook by Thom Hogan, Microsoft Press, 1991 
 The New Peter Norton Programmer's Guide to the IBM PC & PS/2 by Peter Norton and Richard Wilton, Microsoft Press, 1987 .
 Caldera, Inc. (1997). OpenDOS Developer's Reference Series — OpenDOS Programmer's Guide — System and Programmer's Guide. Printed in the UK, August 1997. Caldera Part No. 200-DOPG-003 ().

도스 기술
X86 아키텍처
인터럽트
마이크로소프트 API
운영 체제 API