Monday, November 19, 2012

Important DOS versions for PC Gaming

In the text below, assume that for DOS 4.0 and lower, I am discussing IBM's PC-DOS unless otherwise noted, and for 5.0 and above, MS-DOS.  

DOS 1.0 - Introduced with the IBM PC in 1981.  This is the first version of Microsoft MS-DOS and it only came the IBM Personal Computer.  This version of DOS only supports single sided 5.25" disks with 160K capacities (8 sectors).  Any game using a double sided disk or a 180K disk (9 sectors) will not work with this version.  Virtually all DOS games come on disks with one or the other, so this version has purely vintage value.  Unlike later versions, this one will require you to input a valid date and time value on bootup.  No hard drive support.  It would effectively be off the market once IBM included double sided disk drives as standard in the PC.

Includes DONKEY.BAS, the first game ever made for the IBM PC and would be included in PC-DOS until 3.2.  AUTOEXEC.BAT was included as a batch file that would be run at bootup time.  Although a user could run an IBM PC with 16K of RAM, DOS 1.0 required 32KB.  Some of the BASIC programs required 48K of RAM to run.

DOS 1.1 - Introduced with the IBM PC with Double Sided Drives in 1982.  The most important feature of this incremental upgrade is double sided 5.25" drive support for 320K capacity support.  Still only 8 sector support.

Microsoft began to supply OEM manufacturers (Compaq, Tandy, Zenith, etc.) with DOS around this time.  The earliest known MS-DOS version is 1.25, and does not come with all the utilities of PC-DOS 1.1.  The OEM would then modify it as necessary to support its hardware.  Some OEM versions of DOS, like Tandy's, would not run on a non-Tandy system.  Others, like Compaq, did not care.

The chief difference between IBM's PC-DOS and the OEM MS-DOS for gaming purposes is that IBM's BASIC.COM (Disk BASIC) and BASICA.COM (Advanced BASIC) programs did not have the core of BASIC contained within.  Instead, the core was contained in 32K of ROM in the F segment which was called ROM BASIC or Cassette BASIC.  In the OEM MS-DOS, the equilavent BASIC executables contained GW-BASIC, which had the code which would have otherwise been in ROM embedded in the file on the disk.

Thus, if a game requires ROM BASIC, it will not run on a non-IBM system.  Several early BASIC games, including IBM's, assume that you are running them on an IBM PC, XT or AT.  Virtually any IBM PC or PS/2 machine made during the 1980s will work with games requiring ROM BASIC.  While some may be able to be run with a non-IBM machine using an OEM GW-BASIC, this can be tricky due to copy protection schemes and direct accesses to the ROM.

One game manual (Ultima II) suggested that you copy over the DOS system files using the sys command to make the game disk bootable.  This could only be done with DOS 1.1, DOS 2.0 and above were too big.

This version allowed DEL as an alias for ERASE and REN for RENAME.

DOS 2.0 - Introduced with the IBM PC XT in 1983.  This is the required minimum for most DOS games that come on a 5.25" double density drive. Adds support for 9 sector disks, so single sided formatted disks are 180K and double sided disks 360K.  The latter is by far the most common format for 5.25" Double Density DOS game floppy disks.

The next feature would become even more important, support for hard drives.  The IBM PC XT shipped with the Seagate ST-412 10MB hard drive.  The existing 12-bit File Allocation Table (FAT-12) used on floppy disks could handle drives up to 15MB.  Only one DOS partition and two drives were permitted, so DOS 2.x's expandability was limited.  IBM used FDISK to partition disks, OEMs used similar programs.

Architecturally, applications written to run on the 1.x versions of DOS used File Control Blocks to keep track of open files.  This was too limiting, so DOS 2.0 introduced file handles to handle the same task.  Subdirectories were also introduced in DOS 2.0.

Finally, DOS 2.0 offers support for installable device drivers.  CONFIG.SYS makes its first appearance to load those drivers at bootup.  The first of these was ANSI.SYS.  By installing this driver in CONFIG.SYS, the user or a game could obtain more direct control over the text on the screen.  The user could change the background color, the text colors, the video mode, etc.  Some text-based games require ANSI.SYS to be loaded before they will run.

DOS 2.1 - Introduced with the IBM PCjr. in 1983.  It adds support for that system and its enhanced graphics and sound in the BASIC interpreters.  The PCjr. cannot run earlier versions of DOS.

IBM was yet to embrace the wider international market, so OEM's included Microsoft's international convention support in the COUNTRY command in CONFIG.SYS in MS-DOS 2.11 to audiences.  I think that due in part to this, 2.11 is considered the "safest" lowest version of DOS you can use and expect DOS games that came on 5.25" floppies before 1991 to run.

The first Tandy 1000 computers began with Tandy DOS 2.11.22.  Like the IBM PC-DOS 2.1, the BASIC on these disks supports the enhanced graphics and sound of the 1000 series.  The EX and HX also use 2.11.24, but the HX's version includes support for 720KB drives and DOS-in-ROM.

DOS 3.0 - Introduced with the IBM PC AT in 1984.   This is the first version of DOS which supports high density 5.25 floppy disk drives for 1.2MB per disk.  All DOS games that come on 5.25" 1.2MB disks will expect this or higher as the minimum DOS version.

The IBM PC AT came with a 20MB hard disk, and FAT-12 was inadequate.  A 16-bit FAT (FAT-16) was supported in this version of DOS.  One DOS partition of 32MB per disk was supported per drive, due to the use of 16-bit sector values.

The Real Time Clock in the AT is supported, thus DOS can automatically update the date and time and retrieve it once the system is shut down and restarted, or reset.  Non-AT style RTCs require device drivers.

IBM added support for common international keyboard layouts (KEYBXX) and international conventions (COUNTRY) in this version.  The ATTRIB command allowed the user to set the file attributes (hidden, system, read only, archive) for any file.

DOS 3.1 - An incremental upgrade to DOS 3.0.  The most important feature was this DOS was the first version to support networking.  More signficantly for gaming, this is the first version to support Microsoft Networking extensions, which is what MSCDEX uses to allow CD-ROM drives to function in DOS (it looks like a newtork drive to DOS).  This is the minimum version on which Windows 3.x will run.

DOS 3.2 - Introduced with the IBM PC Convertible in 1986.  Adds support for 3.5 inch double density drive support for 720K disk capacities.  All DOS games that come on 3.5" 720K disks will expect this or higher as the minimum DOS version.  XCOPY command added to copy directories and the included subdirectories.  Many games of the late 1980s use batch files to install themselves to the hard drive, and sooner or later one will assume that the XCOPY command is available and use it.

MS-DOS 3.2 was the first time Microsoft made the OS available to system builders through an OEM package.  This meant that an individual putting together their system from parts had a way to acquire the OS without having to buy a pre-built system.  By version 3.2, the user could be more-or-less assured that his version of DOS would be as fully featured as IBM's PC-DOS (mainly with the hard drive utilities).

The Tandy 1000 SX and TX come with Tandy DOS 3.20.22, and have a custom partitioning utility to add three extra 32MB partitions.  Other OEMs like Compaq provided similar utilities.  More modern operating systems tend not to recognize these partitions and a special formatting program is necessary to create them and a special device driver must be loaded in CONFIG.SYS to access them.

DOS 3.3 - Introduced with the IBM PS/2 series.  Adds support for 3.5 inch high density drive support for 1.44MB disk capacities and country code pages.  Keyboard layouts are now supported with the KEYB command instead of a separate command for each layout.

This version adds support for the extended DOS partition, allowing one primary DOS partition of 32MB (drive C:) an an extended partition of up to 2GB.  However, the logical drives within the extended partition can only be 32MB each.  Thus the user can have logical disk drives D: to Z: with 32MB capacity each in the extended partition.  The total disk space available to the user would be 736MB.  This was still extremely large back in 1987 when this version was released.

International support was improved with the addition of country codes in IBM's version. IBM and Microsoft were shipping the same utilities in their respective versions of DOS by this point.  This allowed the user to display characters in text-modes that were not available in the character ROM on their video adapter, but requires an EGA or VGA card work.

The remainder of the Tandy 1000s use this DOS, 3.30.22, except for the RLX-B and RSX (5.0).  These systems contain the DOS core files in a fast ROM drive, which is disabled when a hard disk is installed.

DOS 3.31 (Compaq MS-DOS only) - Final FAT-16 implementation introduced, 32-bit sector values used.  An 8GB disk could be supported with a 2GB drive partition support with one primary and three logical drives in the extended partition.  Seems to work fine in non-Compaq systems.

DOS 4.0 - Introduced with 2nd Generation IBM PS/2 in 1988.

In DOS 4.0, the use of partitions greater than 32MB should be accompanied by loading SHARE.EXE beforehand.  This is necessary only for really old games that use FCBs, since their use is incompatible with the full FAT-16 implementation.  SHARE.EXE will translate the use of FCBs to file handles.  DOS 5.0 and later automatically implement SHARE.EXE.

EMM386 first introduced, but in DOS 4.x it is known as EMM386.SYS.  EMM386.SYS or EMM386.EXE in a 386 or better machine allows extended memory, that is the memory above the first megabyte in a PC, to be used as expanded memory.  On a 8088, 8086 or 80286 machine, expanded memory could only be added by an expensive memory card.  Games supporting the Expanded Memory Specification for storing data in expanded memory will work well with EMM386.

EMM386 has another important feature.  It allows device drivers to be loaded in Upper Memory.  Upper Memory is the area between 640K and 1MB in a PC that is reserved for ROM and RAM on adapter cards.  A 386 usually had memory in that area that would be left sitting unused, but areas not otherwise occupied by ROM or RAM could be converted into Upper Memory Blocks into which DOS could load device drivers instead of taking up valuable conventional memory.  If Expanded Memory was not required, EMM386 could still provide Upper Memory Blocks.

IBM's PC-DOS 4.0 acquired a bad reputation as a buggy OS.  Its memory footprint was rather high, especially when used with systems that did not have a full 640K free.  More unforgivable was that it did not work well, if at all, with 3rd-party (non-IBM) EMS boards.  MS-DOS 4.0 did.  PC-DOS 4.01 also exists that fixed the issue.  IBM's EMM386's functionality is provided by XMA2EMS.SYS.  Users were also wary of the new partitioning schemes, which was incompatible with their existing disk utilities and tended to stick with DOS 3.3 until 5.0.

The MEM command is introduced to show you how your conventional and upper memory is being used and is extremely helpful to identify how you can improve your system configuration.

DOS 5.0 - Released in 1991 with DR-DOS 5.0 and MS-DOS 5.0.  By this time, OEM versions of MS-DOS are not really customized, and MS-DOS 5.0 was the first version of DOS to have a real identity on a store shelf.  Unlike earlier versions of MS-DOS, it had an install program.  Adds 3.5 inch extra high density drive support for 2.88MB disk capacities.  The drives needed for format and read such disks were never popular and games were never released on such disks.

The most important feature MS-DOS 5.0 provides is the HIMEM.SYS driver.  This provides access to the High Memory Area (HMA) on 286 and better processors with over 1MB of RAM.  DOS can load a large chunk of itself in the 64K HMA area, leaving more conventional memory free.  HIMEM.SYS also implements the XMS specification to allow access to as many megabytes of extended memory as the system contains in a 286 or above.  Some games can use the access to XMS memory to store data or otherwise require HIMEM to be loaded, so this version of DOS is obviously the lowest those games support.

QBASIC was introduced, which is why so many people have fond memories of Gorillas and Nibbles.  The MS-DOS EDIT, which uses the QBASIC interface, is very handy to edit AUTOEXEC.BAT and CONFIG.SYS and read text files.

There are bugs in the FORMAT and FDISK commands, so when these are updated this can be called MS-DOS 5.00a.  Commands can show a help menu by using a /? switch.

Four physical hard drives allowed with DOS partitions.

DOS 6.xx - Released in 1993, the biggest feature of this version was support for drive compression.  When drives were 20-200MB in size, this was a useful option.  Today when drives are huge and cheap, it is not important.  Also important was the DELTREE command (deletes directories, subdirectories and all the files within them) and the MOVE command (copy and delete in one command).  6.22 is the last standalone version of DOS Microsoft ever released.

The most useful feature of MS-DOS 6.xx is its support for multiple configurations.  This means you can have one configuration with Expanded Memory and Upper Memory with EMM386, and another configuration without it loaded for those games that will not run with it.

Unlike earlier versions of DOS, MSCDEX.EXE came with these versions.  Otherwise, MSCDEX would be provided on a floppy disk accompanying the CD-ROM package you bought.  MSCDEX came in versions 2.1, 2.2 and 2.95.  2.1 requires PC-DOS 3.1 or MS-DOS 3.1 or 4.0, 2.2 is required for MS-DOS 5 or SETVER must be used.  2.95 was released with Windows 95.

Microsoft eliminated certain utilities like JOIN and SUBST in the main install of 6.xx, which some game installs (weird CD compilations) rely upon.  Microsoft later released a Supplemental Utilities disk to put these programs back in (presumably without using SETVER).  The Supplemental Utilities disk can still be freely downloaded.

MEMMAKER is also a useful utility to try to maximize conventional memory, and HELP shows a text-based interface with the commands, examples and notes.  SCANDISK is useful for determining hard drive errors.  IBM released PC-DOS 6.1 and 6.3, leapfrogging Microsft's version numbers.

DOS 7.0 - This is the version of DOS underlying Windows 95.  Windows 95 OSR2 introduced the FAT-32 filesystem, and this version of DOS is 7.0a.  If you have a copy of Windows 95 OSR2 or above , there is a way to extract the very useful 7.0a and use it as a standalone operating system.  The EDIT in these systems use more modern keyboard shortcuts like Ctrl C for copy, Ctrl V for paste and Ctrl X for delete.  IBM released a DOS 7.0 and 7.1 (a.k.a. PC-DOS 2000).

DOS 8.0 - A crippled version of DOS which underlies Windows ME.  No value.

3 comments:

VileR said...

so MS-DOS 2.11 did have international language and code page support? interesting -- I wonder how this was accomplished before the arrival of EGA and its ability to modify the character set.

Dinis said...

EMM386 came before himem.sys?

Great Hierophant said...

In its MS-DOS 4.01 form the expanded memory manager is known as EMM386.SYS. In MS-DOS 5.0 it is EMM386.EXE. MS-DOS 5.0 also introduced the HIMEM.SYS extended memory manager.