Jump to content

- - - - -

MS-DOS 6.3

  • Please log in to reply
7 replies to this topic

#1 wendy


    Frequent Member

  • Lady
  • 267 posts
  • Location:one mile from the QR main line
  • Interests:Operating systems, Weights and Measures, Geometry

Posted 06 June 2009 - 08:12 AM

For a lark, i decided to make a 'real' version of 6.3. It's about four hours' work.

There was a kind of MS-DOS 6.3 on the internet, but this was just 6.22 with some strings in command.com hacked. The bulk of the files were indeed straight out of 6.22. and the program happily reported 6.22 to any program seeking 'dosver'.

What i wanted was an MS-DOS that was actually MS-DOS 6.3, reporting 6.30 to any proggie that asked. For example, it should load PC-DOS 6.3 stuff without worry.

The actual chore is made supprisingly easy, if ye have lying around, MS-DOS 6.21, MS-DOS 6.20, and some handy tools.

MS-DOS 6.22 consists of something like 191 files over four diskettes (we're adding in the supplement files). This is 'MS-DOS and Additional Tools', so we cull out the additional tools, to leave 'MS-DOS'.

  • QBASIC110 - Edit, Help. May need to dismantle QBHELP - in hand.
  • DOSSHELL - no changes needed
  • SCANDISK - We could use the ME version here! - but see if 6.22 works!
  • MSAV - It was nasty in its day
  • DRVSPACE - From 6.20
  • DBLSPACE - From 6.22
  • MSDRIVER - himem, emm386, mouse, msd, etc - no need to change
  • MSBACKUP - apparently version free - see Win95 disk
  • INTERLNK - version free since 5.02 - version free
  • MEMMAKER - version free = see win95 diskette
  • NETWORLS - dos upgrades include network files
  • DEFRAG - needs some work.

You first need to unpack files with PKLITE. The files needed to do things from floppies (like fdisk, debug, qhasic), are compressed with PKLITE. The rest are packed with COMPRESS v 1 [this is rather obscure software, not v 2 in the Win3.1 sdk]

Most of these are incessently nasty, but it seems little work is needed here, since these all turn out to be version-free stuff (ie don't care what DOS it uses), the exception being DBLSPACE and SCANDISK.

We are then left with something like 85 files, which consist of setup, dos5, dos6, and some odds and ends. dos5 stuff (like IO.SYS, MSDOS.SYS, etc) typically ask for version, while DOS6 stuff (DELTREE, MOVE, ...) do not. Doing something like CRC + CRCCHK sorts out what is different.

Supprisingly many files just need the DOS versions and copyright date changed. The versions in 6.21 and 6.22 differ by a handful of bytes. Some of the files have large data segments that have changed to reflect the new state of the world (like new SORT tables, new DOSVER tables, etc), still require this change, others, like KEYBOARD.SYS and EGA3.SYS do not.

The actual hand-hacked files that require a manual fc/b entry into the batch file, is then fixed along with the balance of the files. You end up with a batch file like the output from fc /b file1 file2.

Comparing files 622\CHKDSK.EXE and 621\CHKDSK.EXE

00000012: 4A 52

00000013: 80 87

000007BB: 34 33

0000136A: 16 14

00001B1E: 16 14

00001F5D: 16 14

00002267: 16 14

00002491: 16 14

00002918: 16 14

0000293C: 16 14

It's just a matter of writing a suitable command processor to process this. The relevant commands are

One can even do things to the dos kernel (IO.SYS and COMMAND.COM), so that MS-DOS 6.3 can run in 6.20 or 6.21 or 6.22 mode. Neato.
  • files Open a new file to edit + print file name.
  • 16 14Change binary DOS version
  • 34 33 Change 1981-1994 to 1981-1983
  • 32 31Change string '6.22' to '6.21'
  • else print the line.
You then set the desired DOS version "061e"x, DOS string '6.30' and Copyright date '1995' and run the batch file through a special command processor that reads this script.

Of course, what this tells us is that MS-DOS 6.x is pretty much the same, and that the thing about checking for DOS version is more a commercial, rather than technical reason.

#2 Nuno Brito

Nuno Brito

    Platinum Member

  • .script developer
  • 10543 posts
  • Location:boot.wim
  • Interests:I'm just a quiet simple person with a very quiet simple life living one day at a time..
    European Union

Posted 06 June 2009 - 10:00 PM

Good research.

Nowadays I would likely use Freedos instead of MSDOS but I do remember a few times when I got upset because of DOS version mismatch.. ;)


#3 wendy


    Frequent Member

  • Lady
  • 267 posts
  • Location:one mile from the QR main line
  • Interests:Operating systems, Weights and Measures, Geometry

Posted 25 June 2009 - 09:14 AM

I've been tinkering with reducing the size of DOS files, based on the notion that all DOS versions bundle applications with DOS. One might understand that the description of Microsoft's OEM version of DOS is "Microsoft DOS + additional tools".

These additional tools are various "packages" that one might select with the install of DOS, or are integrated in the base install of some versions but not of others. Some of the DOS packages i have created might be contraversial, eg 'msdriver'.

When all of these files are pulled from the DOS versions, we have

pc-dso 5.02 1062570
msdos 6.22 1232930
pcdos 6.30 1107262
msdos 7.10 1105303

All of these rather nicely fit onto a single floppy diskette, without need of compression etc.

We then have these packages

  • ADOS - AccessDOS (msdos 6.x)
  • BASICA (gwbasic + basica + basic)
  • DOSSHELL (cut-down vers of CPS PCSHELL)
  • E3-DOS (IBM DOS E Editor)
  • MS-DRIVER (himem, emm386, smartdrv, mouse, mscdex, ramdrive)
  • NETWORK (net, netbeui, netwksta, redir, setname - DOS 6)
  • QBASIC (Qbasic, edit, help6)
  • REXX (IBM has been trying this out since DOS 3.3)
  • UNDEL (CPS utilities in DOS 5 and later)
  • INTERLNK (IBM thing like Laplink)
  • DEFRAG (apparently from CPS too)
  • SCANDSK (a limited NDD in DOS 6.20 and later)
  • MSD (an escapee from Word 2.0, aka INFER)
  • VIEW (IBM's IPF viewer for DOS (7))

This is what PC-DOS 6.30 looks like:

[.]			 choice.com	  DRVLOCK.EXE	 keyb.com		PRINT.COM

[..]			cmosclk.sys	 EJECT.EXE	   keyboard.sys	REPLACE.EXE

865.cpi		 command.com	 FC.EXE		  LABEL.COM	   RESTORE.COM

912.cpi		 country.sys	 FDISK.COM	   loadfix.com	 setver.exe

915.cpi		 DEBUG.COM	   FIND.EXE		MEM.EXE		 share.exe

ansi.sys		DELTREE.EXE	 fixchgln.com	mode.com		SORT.EXE

APPEND.EXE	  diskcomp.com	FORMAT.COM	  more.com		SUBST.EXE

assign.com	  diskcopy.com	ibmbio.com	  MOVE.EXE		sys.com

ATTRIB.EXE	  display.sys	 ibmdos.com	  NLSFUNC.EXE	 tree.com

BACKUP.COM	  doskey.com	  iso.cpi		 power.exe	   XCOPY.EXE

CHKDSK.COM	  driver.sys	  JOIN.EXE

		824,212 bytes in 51 files and 2 dirs	937,984 bytes allocated

MS-DOS 6.22 looks like this:
















	  1,232,930 bytes in 70 files and 2 dirs	1,372,160 bytes allocated

#4 wendy


    Frequent Member

  • Lady
  • 267 posts
  • Location:one mile from the QR main line
  • Interests:Operating systems, Weights and Measures, Geometry

Posted 14 July 2009 - 07:55 AM

Most of the stuff from 6.3 and 7.1 has been de-versioned: ie they run under any DOS (including Windows NT). Note however, that some functions are specific to the kernel.
For example, Format seems to need the correct kernel to run, otherwise it makes noises about not finding the fat. I have not checked SYS out yet (eg creating boot disks under a differernt OS), although we should note that ROM-DOS, PTS-DOS, FREEDOS and DRDOS run SYS under different operating systems to create boot disks.

:: This is command.com 6.22 running under Windows 2000,


Microsoft(R) MS-DOS(R) Version 6.30

			 (C)Copyright Microsoft Corp 1981-1995.


MS-DOS Version 5.00

:: This is command.com from Win98se 

Microsoft(R) MS-DOS 7.1

   (C)Copyright Microsoft Corp 1981-1999.


MS-DOS 7.1 [Version 4.10.2400]

PC-DOS 7 is mostly de-versioned anyway!

#5 wendy


    Frequent Member

  • Lady
  • 267 posts
  • Location:one mile from the QR main line
  • Interests:Operating systems, Weights and Measures, Geometry

Posted 08 April 2011 - 12:12 PM

This thing has progressed further.

You can now set the dos version of the kernel, and restart. For example, typing newver 5 02 will set the dos version to 5.02, and modify the command string to report this (ie command.com will say version 5.02.).

You can use any valid number, in the form 9 99. You could go higher, except the dos version sting would not cope with it.

chkdsk has a new patch to prevent it advertising scandisk.

command.com has a number of patches, like the hidden directory search, the environment size.

This would be of some use to people wanting to check if windows etc is looking for version 8, or if the thing is more specific.

(i know, it's old post, but it is part of this project)

#6 doublesvsoop

  • Members
  • 9 posts

Posted 08 April 2011 - 06:35 PM

Seems interessting stuff
where a can get a copy
for testing only :cheers:

Edited by doublesvsoop, 08 April 2011 - 06:35 PM.

#7 wendy


    Frequent Member

  • Lady
  • 267 posts
  • Location:one mile from the QR main line
  • Interests:Operating systems, Weights and Measures, Geometry

Posted 09 April 2011 - 11:06 AM

It's a patched version of msdos, with a few scripts for rexx to run.

It's nearly ready for prime time.

It's specific to msdos 6.30, and is essentially a hack of cvmod.rex that i used to make msdos 6.30.

What it does is to patch specific locations in io.sys, msdos.sys and command.com to put the new version in, and then touch the files with the correct version.

This sample shows the dos version being reset under Windows 2000, (but it works in DOS too), and then command.com being started and exited. The command is run again, and the same exe is started and exited.

This is one of the reasons that i have removed version check in this version of DOS.

[L:\NEWDOS\disks\m632] newver 5.22

4NT: L:\NEWDOS\disks\m632\newver.bat [1]  Unknown command "/*"



  io.sys        Sat 2011/04/09  20:58:48  -->  Fri 1995/06/30  05:22:00

  msdos.sys     Sat 2011/04/09  20:58:48  -->  Fri 1995/06/30  05:22:00

  command.com   Sat 2011/04/09  20:58:48  -->  Fri 1995/06/30  05:22:00

Files found: 3; touched: 3 in L:\NEWDOS\DISKS\M632\


Microsoft(R) MS-DOS(R) Version 5.22

             (C)Copyright Microsoft Corp 1981-1995.

[L:\NEWDOS\disks\m632]newver 7.10

4NT: L:\NEWDOS\disks\m632\newver.bat [1]  Unknown command "/*"



  io.sys        Sat 2011/04/09  21:00:10  -->  Fri 1995/06/30  07:10:00

  msdos.sys     Sat 2011/04/09  21:00:10  -->  Fri 1995/06/30  07:10:00

  command.com   Sat 2011/04/09  21:00:10  -->  Fri 1995/06/30  07:10:00

Files found: 3; touched: 3 in L:\NEWDOS\DISKS\M632\

Total found: 3; touched: 3


Microsoft(R) MS-DOS(R) Version 7.10

             (C)Copyright Microsoft Corp 1981-1995.

This is the current listing. It's used by both command.com and by IBM's rexx. Charles Dye's touch utility is used to do the touching. Since rexx expects a valid file, and command does not, we let command report errors. At the moment, only the first line creates an error, because /* is not a dos command.

If you run the thing under PC-DOS 7.00, the thing runs without error, because command.com will see /* and pass it to rexx anyway.

The thing does not check for dos file size etc, and does not check that the patches are valid. This is why it should not be detangled from msdos 6.31, unless you know what you are doing.

/* REXX  

:: the first line produces an error code - can't fix that!

rexx newver %1

goto :end

    This converts MSDOS 622 files, into 630 files, based on cvmod.dat, a file which is

    based on fc /b output, either real, edited or hand-made.

    Usage newver 8.00    (default is 6.30)


touch = 'touch /f:j /d:1995-06-30 /t:0'

filex = 'io.sys msdos.sys command.com'

parse arg vers

if vers = '' then vers = 6.30 ;

parse var vers maj '.' min

dvstr = '16 14' ; dosver = '031F'x ; dosver = d2c(maj,1)||d2c(min,1)

cnstr = '32 31' ; cpname = '3.31'  ; cpname = format(maj+min/100,1,2)

cfile = 'file'  ;  a.0 = 0; pp = 0; call data ; a.0 = pp

errors = 0; checkme = ''

do pq = 1 to a.0 ; incard = a.pq;


  when pos(dvstr, incard) > 0 then call chkdata

  when pos(cfile, incard) > 0 then call newfile 'read'

  otherwise; nop ; end


if errors > 0 then do

  say 'kernel does not match expected positions'

  say 'exiting'



do pq = 1 to a.0 ; incard = a.pq ;


  when pos(dvstr, incard) > 0 then call chkvers

  when pos(cfile, incard) > 0 then call newfile 'write'

  when pos(cnstr, incard) > 0 then call dosname

  when incard='' then nop

  otherwise; say incard; end

end /* of do pp */

call lineout, ''

touch || cpname filex


chkvers:  /* DOS version, binary version 0616x */

  parse var incard offset ':' .

  call stream hackfile, 'c', 'seek ='x2d(offset)

  call charout hackfile, dosver



  parse var incard offset ':' .

  inbit = charin(hackfile, x2d(offset), 2)


     when checkme = '' then checkme = inbit

     when inbit = checkme then nop

     otherwise;  errors = 1 ; end


dosname:  /* DOS name "MS-DOS 6.22" */

  parse var incard offset ':' .

  call stream hackfile, 'c', 'seek ='x2d(offset)-2

  call charout hackfile, cpname



  parse arg mode

  parse var incard  . '\' fname

  call stream hackfile, 'c', 'close'

  if fname = '*' then return

  hackfile = fname

  if mode = 'write' then call charout, fname' '

  call stream hackfile, 'c', 'open' mode


/* ------------------- Patch list ------------------- */

add: ; parse arg incard; pp = pp+1; a.pp=incard;  return

data: ;

call add 'hack file \COMMAND.COM'

call add '00001580: 16 14'

call add '000021AD: 32 31'

call add 'hack file \IO.SYS'

call add '00000004: 16 14'

call add 'hack file \MSDOS.SYS'

call add "0000000A: 16 14"

call add "000002B4: 16 14"

call add "000011DC: 16 14"

call add "00006374: 16 14"

call add "00008EA3: 16 14"

call add 'hack file \*'




rem */

#8 wendy


    Frequent Member

  • Lady
  • 267 posts
  • Location:one mile from the QR main line
  • Interests:Operating systems, Weights and Measures, Geometry

Posted 10 April 2011 - 12:36 PM

6.31 uploaded at h++p://www.os2fan2.com/tmp/msdos631.rar

File contains a raw diskette image, such as might be made by rawrite or dskimage.

I used bfi to make the diskette, and dirtouch/vfd to put the polish on it (look at dir dates!)

Readme from diskette.

MS-DOS 6.31

This is a patched version of MS-DOS 6.22, with an implementation to allow

one to change the reported dos version from a batch file.  


Patches Applied

Extra Utilities

This is essentially for testing purposes.  No warranty is implied by

this package, either fitness for use etc.  Use at your own risk.



  1.  Prepare dos disk in usual manner

      eg fdisk / format /sys

  2.  copy a:\*.* c:\

      md c:\dos

  3.  expandd -r a:\dos\*.* c:\dos

      (this copies and expands files to the c:\ drive.)

This version of DOS consists of all the version-checking files of 6.22

along with a handful of other utilities.

The dos directory needs to be in path.



  1.  all files - removal of dos version check.

  2.  a number of files are renamed to allow parallel versions.

      expand   -> expandd     the win311 expand utility

      compress -> encomp1     the KWAJ file compress v1

      edit     -> msed        the win9x editor


     a.  environment set to 1536

     b.  default for all batches is ECHO OFF

     c.  dir now transverses hidden directories.


     a.  removal of advert for SCANDISK


     a.  This is the win9x editor, patched to match rename.



   drives         reports drives as seen by DOS

   envsize        reports environment size

   getver         Show dos version by different calls.

   reboot         Shutdown [-r | -s]

   rexx           IBM Dos rexx utility - used by newver.bat

   toggle         Set caps, scroll lock and numlock from cmd line.

   touch          Charles Dye's version - used by newver.bat



  A batch file to set the version of DOS to a version and subversion.

  The modified files are touched to match the new version in the time

  setting, eg

  example   newver 6.22

    This will set the dos file dates and version to 6.22.

  You can pretty much use any number in the format 9.99, but note that

  because we're setting the time, try to use something more realistic,

  like 9.59.

  It's mainly designed to see how utilities would react under different

  reported dos versions, such as trying to run windows 3.1 under DOS 8.

  Newver checks to ensure that all of the locations to be patched are

  identical, and will fail if these are different.


Wendy Krieger, 2011.3.10

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users