DOS Versions
TECH Help! indicates variations and incompatibilities between DOS versions
by displaying a highlighted version number as a warning flag.
Where DOS Functions or DOS Interrupts changed significantly between
versions, these flags are used to let you see them at a glance; e.g.:
2.0+ .............. or (none) applies to DOS version 2.0 and higher
2.x .............. applies to DOS 2.0 or 2.1 or 2.11, etc.
3.0+ .............. applies to DOS versions starting at DOS 3.0
MS-DOS and PC-DOS ... identifies differences between generic DOS and
IBM's customized (OEM) version
This topic summarizes changes from version to version of DOS. For a
programmer's-eye view of version differences, see:
DOS Function Index - by DOS Version
█▌Version Summaries▐█
The fundamental DOS services were roughed out with DOS 1.0 and stabilized
(read: debugged) with version 1.1. If your program must be able to run
under DOS 1.1, you must use only DOS Functions lower than 2fH.
When IBM introduced a hard disk PC (the XT), it released DOS version
2.0 -- a significant upgrade, including:
■ Multiple directories to enhance access to large capacity media.
■ Handle-Oriented File I/O superseded the hard-to-use FCB File I/O to
simplify file/device access.
■ Standard I/O Redirection for generalized UNIX-like device
independence.
■ Installable Device Drivers to interface non-standard equipment & RAM
disks and included the ANSI.SYS console driver
DOS 2.1 fixed a few bugs and added support for the PCjr diskette drives.
DOS 3.0 came out with the AT and included support its 20M hard disk. It
added support for 16-bit FAT entries to minimize slack space on
hard disks. Added extended error reporting for DOS functions.
Significant new DOS commands: Attrib, Label, VDISK.SYS RAM disk
Change Summary:
Fn 3dH (open) supports file sharing
Fn 44H subFns 08H (check removable) and 0bH (set retry count)
Fn 59H extended error information
Fn 5aH create temporary (unique) file
Fn 5bH create new file (create only in it doesn't exist)
Fn 5cH lock/unlock file
Fn 62H get PSP address
INT 24H indicates which of (abort, retry, ignore) are valid.
DOS 3.1 included some network services (file sharing, locking,
redirecting).
Significant new DOS commands: Join, Subst
Change Summary:
Fn 44H SubFns 09H and 0aH were added for network support
Fn 5eH (network printer) and 5fH (network device redirection)
DOS 3.2 came out with the IBM Convertible PC. It expanded on the device
driver IOCTL Functions to include DOS-blessed disk formatting,
etc.
Significant new DOS commands: Replace, Xcopy, DRIVER.SYS
Change Summary:
Fn 44H was extended to support Generic IOCTL and to support
logical drives with subFns 440dH, 440eH, and 440fH.
DOS 3.3 was released with the PS/2. It supports the 1.4M 3½" diskettes.
Significant new DOS commands: Append, Call, Chcp, Fastopen,
Nlsfunc
Change summary:
■ Attrib can work on a tree of subdirectories
■ Backup will format a diskette on the fly if you specify /F
■ batch commands can be truly silent (e.g., @ECHO OFF is not
seen) and one batch file can execute another and return to
the caller
■ Date and Time modify CMOS Memory for 'permanent' time changes
■ Fdisk supports logical volumes; lets you break a large hard
disk ( > 32M ) into two drives. See Extended DOS Partition
■ Additional national language support:
• Keyb replaces KEYBxx and uses the KEYBOARD.SYS data file
• Nlsfunc installs Code Page font-switching
• New command Chcp selects/displays current active code page
• New drivers PRINTER.SYS and DISPLAY.SYS support fonts
• Mode supports code page selection and switching
■ DOS Functions were added:
• Fn 440cH prepare and select code page fonts
• Fn 66H select code page fonts (when Nlsfunc is resident)
• Fn 67H increase the max number of file handles
• Fn 68H forced update of a file to disk ('commit' a write)
DOS 4.0 Adds some support for expanded memory and disk partitions > 32M.
It provides a long overdue point-and-shoot DOS shell.
Significant new DOS commands: Dosshell, Install, Mem, Switches
Change summary:
■ Append is somewhat smarter; less chance of disasters
■ Backup automatically formats destination disk (/F not needed)
■ BUFFERS= (in CONFIG.SYS) can use EMS▲ memory; I/O is faster
■ Del /p pauses to confirm each of a wildcard file delete
■ Fastopen is faster and can use EMS memory to hold data
■ Format /f:size accepts size in Kbytes; /v:lbl sets volume
label
■ Graphics works with EGA/VGA modes; supports more printers
■ Mode sets keyboard repeat rate; number of lines on the screen
■ REM can be used in the CONFIG.SYS file (it's about time!)
■ Replace /u overwrites destination files older than source
■ Tree has been brought up to about a 1984 level of
sophistication
■ DEVICE= (config cmd) device drivers added/changed:
• Ansi.Sys can restore screen layouts other than 80x25
• Xma2ems.Sys and Xmaem.Sys supports EMS (expanded memory)
• Vdisk.Sys can use EMS memory
■ DOS Functions were added/changed:
• Fn 33H can now return the drive number of the boot disk
• Fn 440cH (CL=5fH/7fH) provides a means to query/set the
screen display mode, number of rows, etc.
• Fn 6cH is a new all-purpose file Open/Create tool.
• INT 25H/26H provide access to logical sectors > 65535
DOS 4.01 The stable (debugged) version of DOS 4.0. Accept no substitute.
DOS 5.0 was released by Microsoft, after it wrested control back from
IBM. This is the most significant upgrade in many years.
Supports 2.88M diskette drives.
Significant new DOS commands: DEVICEHIGH=, DOS=, Doskey, Edit,
EMM386.EXE, Help, HIMEM.SYS, Loadhigh, Mirror, Qbasic, Setver,
Undelete, Unformat
Change summary:
■ Memory-management for 386+ computers, including access to
UMBs via DOS=, DEVICEHIGH= and Loadhigh, and EMM386.EXE.
■ Data recovery via Mirror, Undelete and Unformat
■ Text editor, EDIT.COM (really part of Qbasic)
■ Command-line retriever, Doskey
■ Access to Hidden and System files, via Attrib
■ View sorted directories and other options in Dir command
■ Setver tricks apps into seeing a different DOS version
■ All commands accept /? to mean "show syntax"
■ Numerous small "quality of life" changes
■ DOS Functions were added/changed (note: The DOS 5.0 Tech Ref
documents many previously-undocumented services. This lists
only those that are actually new with DOS 5.0. See
DOS Function Index - by DOS Version for a complete list).
• Fn 1fH and 32H (Get Disk Parameter Block) are very useful.
• Fn 3306H gets the actual DOS version (30H only gets the
SetVer simulated version number)
• IOCTL fns 440dH 68H (sense media type)
• IOCTL fns 4410H, and 4411H obtain info about IOCTL support
• Fn 4b05H is a rarely-needed variation of EXEC services.
• Fn 5802H and 5803H are memory-support services.
• INT 2fH: Several add-on APIs are now documented.
DOS 6.0 is basically DOS 5.0 with an armful of bundled utility programs
and a few minor changes to DOS itself.
Significant new DOS commands: Choice, Dblspace, Defrag, Deltree,
Help, InterLnk, InterSvr, Memmaker, Move, Msav, Msbackup, Msd,
Power, Truename, VSafe.
Change summary:
■ Disk compression via DoubleSpace and MRCI API.
■ File defragmenter, Defrag, speeds up some disk I/O
■ Laptop tools: Power (see APM API) and InterLink
■ Memory-usage optimizer, MemMaker.
■ CONFIG.SYS handling changes:
Clean Boot (press F5 to skip CONFIG.SYS and AUTOEXEC.BAT)
Interactive Boot (press F8 to verify each CONFIG.SYS command)
MultiConfig Menus let you define sets of config options
■ DOS services were added/changed:
• No new INT 21H fns defined.
• DoubleSpace API (via INT 2fH)
• MRCI API (via INT 2fH)
• APM API (via INT 2fH)
• INT 2fH 16xxH Windows 386Enh-Mode services
• INT 2fH 17xxH Windows Clipboard access
• INT 2fH 40xxH Windows VDD fns for VM-aware apps
DOS 6.2 is a mildly-aerobic exercise in butt-covering. It was released
after the media began playing up problems with DOS 6.0,
especially the DoubleSpace feature. Microsoft's jump to "6.2"
was probably prompted to make this look better than IBM's 6.1.
Significant new DOS commands: ScanDisk
Change summary:
■ DoubleSpace can automount floppy diskettes
■ "DoubleGuard" halts the system if it finds that a program has
overwritten any of the DoubleSpace memory area.
■ DoubleSpace can uncompress a disk.
■ DoubleSpace can use part of the HMA▲ (if you set BUFFERS=
small enough).
■ SmartDrive now caches CD-ROMs. Very handy.
■ Command /Y /CbatName single-steps through a batch file.
■ Clean Boot lets you bypass the normal loading of DBLSPACE.BIN
■ Interactive Boot steps through AUTOEXEC.BAT
■ ScanDisk checks the disk for bad sectors and marks them as
bad in the FAT, thereby avoiding many potential problems with
DoubleSpace, Defrag, at al. It's about time.
■ Dir, Mem, Chkdsk, et al. display large numbers with commas.
■ Copy, Move, and Xcopy now prompt before overwriting a file.
The predefined e-var COPYCMD sets the default action and
command line options /Y or /-Y can override.
■ DOS interrupts and functions were added/changed:
INT 2fH 4axxH HMA Suballocations
INT 2fH 4a11H 000aH select which drives are automount-enabled
INT 2fH 4a11H 000bH query which drives are automount-enabled
DS IOCTL 'S' Improved way to get actual fres space on
compressed drives
(perhaps others; I don't have the full info right now)
█▌Compatibility▐█
In general, higher numbered versions are compatible with lower-numbered
versions. Most software is written to work with DOS 2.x since that is
still a common incarnation. The added features of DOS 3.x and even 4.x
are relatively insignificant, so there is little reason to develop
software that relies on these "new" features (with the exception of
networking applications).
One common compatibility problem is seen on PCs with a limited amount of
memory. Higher numbered DOS versions often take up more RAM from the
available pool and thus leave less room for application programs.
Version Date On Disk In Memory
▀▀▀▀▀▀▀ ▀▀▀▀▀▀▀▀ ▀▀▀▀▀▀▀ ▀▀▀▀▀▀▀▀▀
DOS 1.0 08-04-81 11,551 12,144 On Disk is the size of COMMAND.COM
DOS 1.1 05-07-82 13,279 12,400 +IO.SYS
DOS 2.0 03-08-83 39,424 24,800 +MSDOS.SYS
DOS 2.1 10-20-83 39,551 24,800
DOS 3.0 08-14-84 58,926 37,024 In Memory as reported by CHKDSK.
DOS 3.1 03-07-85 60,534 37,040 More RAM used with SHARE, MODE, etc.
DOS 3.2 12-30-85 68,637 44,704 and some CONFIG.SYS directives.
DOS 3.3 03-17-87 77,566 46,048
DOS 4.0 06-17-88 106,431 90,736
DOS 5.0 08-15-90 112,478 varies*
DOS 6.0 03-10-93 131,433 varies
DOS 6.2 09-30-93 133,323 varies
* Starting with DOS 5.0, it is possible to load much of DOS into upper
memory blocks▲, so its use of conventional memory can be as little as
about 20K.
With DOS 6.0+, most configurations will include 43K of RAM used by
DoubleSpace and MRCI. It may be in upper memory.
Also, the On Disk size should include the 50-65K of DBLSPACE.BIN
(though optional, the majority of systems use it).
█▌MS-DOS vs PC-DOS vs OEM Versions▐█
In many respects, these variation of DOS are identical. For programmers,
there are no differences in using the DOS Functions or other facets of the
programming interface. OEM versions may have additional "external
commands" (add-on utility programs), including custom hardware support,
such as in Compaq's TAPE command.
Other differences: MS-DOS usually includes RAMDRIVE.SYS, while PC-DOS
supplies VDISK.SYS. MS-DOS includes SMARTDRV.SYS (or SMARTDRV.EXE), while
older versions of PC-DOS supply an undocumented disk cache driver named
IBMCACHE.SYS.
One thing to watch for is the naming convention used for the two system
files which get executed at boot time. IBM's file names are IbmBio.Com
and IbmDos.Com. Generic MS-DOS uses Io.Sys and MsDos.Sys. This causes
problems when you try to convert from MS-DOS to PC-DOS or vice versa
manually (an old version of the DOS Sys command may have trouble when it
doesn't find the filenames it expects).
The bundled utilities diverged considerably, starting with DOS 5.
█▌Traps and Pitfalls▐█
Most DOS system-level functions are upwardly-compatible with older
versions, but there are several places you can't take that for granted.
Most of the items in the following list are relatively unimportant, but it
might save you several hours of debugging time.
■ DOS Fn 1bH stopped returning a pointer to the actual FAT in DOS 2.0 and
just returns a pointer to a media descriptor byte.
■ DOS Fn 4fH (Find Next File) had a subtle change between DOS version 2.x
and 3.x. You are now required to keep DS:DX pointing to the
information from a 4eH (Find First File) call. DOS 2.x just assumed it
was in the DTA.
■ DOS Fn 30H modifies BX and CX in DOS 3.0+
■ DOS Fn 38H (Country Info) returns an incompatible Country Info Block.
■ The three 16-bit words at the end of the BPB (used in device drivers)
switched from being "optional" to "mandatory" with DOS 3.0. Also, be
aware that some non-IBM installed device drivers do NOT store the BPB
in the boot sector of the hard disk (this only applies to hard disks
which are not installed with ROM-Scan and thus need not have a
partition table and are not self-booting).
■ Under DOS 4.0, the BPB is enlarged and the boot sector contains data
including the volume label and a quasi-unique serial number.
■ Under DOS 5.0+, the SmartDrive disk cache may begin writing to disk
asynchronously (screwing up your highly-optimized communications
program). Force a cache flush via fn 0dH and/or DS IOCTL 'F'.
As of 1993, there are very few users of DOS 2.x, but you will still run
into some DOS 3.x systems. Most programmers feel safe writing for the
3.0+ API, letting users with older systems fend for themselves.
In my opinion, you should NOT employ and rely on fns that are new for
DOS 4.0+ unless you state that on the outside of your package. In my
experience, there are very few DOS services that are really needed (for
standard application programs) that have not been available since DOS 2.1.
Exceptions: Add-on APIs, such as DoubleSpace or INT 2fH 48xxH (Doskey
services), which you can test for and work-around when not present.
See Also: DOS Function Index - by DOS Version
System Compatibility
-♦-