DOS Versions (Was: IBM PC-DOS 2.10 explorations

Fred Cisin cisin at
Sun Oct 4 12:06:18 CDT 2020

On Sun, 4 Oct 2020, Richard Cini wrote:
> I would only emphasize that 3.5” support didn’t exist before DOS 3 (I 
> forget if it was 3 or 3.1; it was when the PS/2 came out). So you have 
> to watch the image sizes.

PS/2 came out with PC-DOS 3.30   But also an IBM push for OS/2

DOS versions according to media support (ignoring other IMPORTANT changes, 
such as file handles, hierarchical DIRectories, etc.)

DOS 1.00 		160k 	40 tracks single sided 8 sectors per track.

PC-DOS 1.10
MS-DOS 1.25	320K	40 tracks per side double sided 8 sectors per track.

DOS 2.00	360K 	9 sectors per track

MS-DOS 2.11	customized by SOME OEMs	720K	3.5"; not all are 
same format as PC-DOS!

DOS 3.00	1.2M

DOS 3.10	CD-ROM	"network redirector"

DOS 3.20	720K

DOS 3.30	1.4M

MS-DOS 3.31	HDD >32M   customized by OEMs
PC-DOS 4.00

MS-DOS 5.00	first version sold RETAIL

MS-DOS 6.00
PC-DOS 6.10	cartload of bundled third party add-ons

MS-DOS 6.20	patched for reliability, including changing SMARTDRV to 
stop trashing disks (blamed on compression)
MS-DOS 6.21	compression not provided (copyright lawsuit)
MS-DOS 6.22	non-infringing compression

Win98SE		USB

Note that 2.11 and 3.31, due to OEM customization will OFTEN have a 
different FORMAT program (different drives), and different MODE.COM (some 
had different video modes available).  Sometimes some other bundled 
programs had differences.

Note that DOS version is a numeral, a period, then a two digit decimal 
number.   It is ALWAYS 2.10, NOT 2.1; 3.10, NOT 3.1, etc.
What we call 2.1 is ACTUALLY version TWO point TEN!
what we call 3.2 is ACTUALLY version THREE point TWENTY!
what we call 3.31 is ACTUALLY version THREE point THIRTY-ONE!
what we call 4.01 is actually version FOUR point ONE.

MOV AH, 30h
INT 21h

returns the major version in AL.
Print that.
Then print a period.
Minor version is in AH.
print that as a 2 digit decimal number.

2.10 has AX: 0A02
3.10 has AX: 0A03
3.20 has AX: 1403
3.30 has AX: 1E03
3.31 has AX: 1F03

Note: SETVER (since 5.00) lets a version of DOS lie about its age. 
There's an important reason.
When PC-DOS 1.10 came out, with double sided drives, people sometimes ran 
CHKDSK from DOS 1.00 (sometimes even having 1.00 CHKDSK on a 1.10 boot 
disk), which proceeded to "FIX" the disk into an unusable form.

To prevent that and similar disasters, in addition to modifying CHKDSK to 
not make changes without confirmation, henceforth, EVERY program 
distributed with DOS had a MOV AH,30h/INT21h/CMP AX...  so that programs 
could only run with "correct version of DOS.  When they stopped including 
EXE2BIN.EXE and even LINK.EXE with DOS, it became necessary to either step 
on the version checking code (with DEBUG.COM) or use SETVER.

I'll do a separate post about DRIVER.SYS and DRIVPARM.

Grumpy Ol' Fred     		cisin at

More information about the cctech mailing list