DOS API: Difference between revisions

Content deleted Content added
m Matthiaspaul moved page MS-DOS API to DOS API over redirect: More common name in the industry, also not specific to MS-DOS
CE
Line 1:
{{more footnotes|date=May 2015}}
The '''MS-DOS API''' is an [[Application programming interface|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 (x86 instruction)|INT]] 21h). By calling INT 21h with a subfunction number in the AH [[processor register]] and other parameters in other registers, one invokes various DOS services. DOS services include keyboard input, video output, disk file access, executing programs, memory allocation, and various other things. In the late 1980s, [[DOS extender]]s 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 block]]s (FCBs). The DOS API was greatly extended in MS-DOS 2.0 with several Unix concepts, including file access using [[file handles]], [[directory (file systems)|hierarchical directories]] and device I/O control.<ref>{{cite book |title=Advanced MS-DOS Programming: The Microsoft Guide for Assembly Language and C Programmers |author=Ray Duncan |publisher=Microsoft Press |year=1988 |isbn=0914845772 }}</ref> 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 was generally used as a bootloader which loaded the protected-mode operating 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 [[Intel 80386|80386]] and higher processors). NTVDM supports the DOS 5.0 API. [[DOSEMU]] for [[Linux]] uses a similar approach.
Line 543:
|}
 
==Operating systems with native support for the MS-DOS API==
* [[MS-DOS]] - most widespread incarnation
* [[IBM PC DOS|PC&nbsp;DOS]] - IBM OEM version of MS-DOS
* [[DR-DOS]] - Digital Research DOS family, including [[Novell DOS]], [[PalmDOS]], [[OpenDOS]], etc.
* [[PTS-DOS]] - PhysTechSoft & Paragon DOS clone, including [[S/DOS]]
Line 557:
* [[Windows NT]] (all versions except 64-bit editions)
 
==ProgramsOperating systems with supportDOS for the MS-DOSemulation APIlayer==
* [[Concurrent CP/M-86]] (3.1 only) with [[PCMODE]] – Digital Research CP/M-86-based OS with optional PC&nbsp;DOS emulator
* [[Concurrent DOS]] – Digital Research CDOS family with built-in PC&nbsp;DOS emulator
* [[DOS Plus]] – a stripped-down single-user variant of Concurrent PC&nbsp;DOS 4.1–5.0
* [[Multiuser DOS]] – Digital Research/Novell MDOS family including [[Datapac System Manager]], [[IMS REAL/32]], etc.
 
* [[NTVDM|NTVDM.EXE]] for [[Windows NT]]
==Other emulators==
* [[NTVDM|NTVDM.EXE]] for [[Windows NT]]
* [[DOSEMU]] for [[Linux]]
* [[DOSBox]]