大家知道,无论是MS-DOS还是PC-DOS,或是其它的DOS,都有许多不同的版本,例如大家最常用的MS-DOS就有1.0,3.0,3.3,5.0,6.2,7.10等众多版本。虽然DOS有很好的向下兼容能力,但用户还是不时碰到低版本和高版本不能匹配的使用的问题。当外部命令所要求的版本号与所使用的DOS版本不一致时,屏幕会显示“Incorrect
DOS version”而拒绝执行进一步操作,这种版本检验有时是必要的,但大多数情况下则大可不必,尤其是在高版本的DOS下运行通常完全没有问题。因此,现在谈谈几个兼容使用的方法。
一: 使用命令行工具软件更改版本号
这是一种简便易行的方法,只需一两条简单的DOS命令就可以实现,但是,它需要专门的软件,如VERS
1.1或DOSVER等。VERS的用法是,VERS [DOS版本号],如VERS 7.10就可使当前版本号变为7.10,非常实用。而DOSVER是个内存驻留程序,可以自动调整DOS版本号,免去了人工操作的麻烦。它们可以在“DOS软件分类下载”中下载,其中DOSVER为注册破解版本。
二:使用DOS自带的SERVER
SERVER是DOS 5.0起自带的命令,它利用创建版本表的方法运行不同版本的DOS程序。方法是先设置版本表,然后将SERVER.EXE在CONFIG.SYS中用DEVICE/DEVICEHIGH命令加载。注意,每更改一次版本表都需重新启动计算机才能生效。
三:取消对DOS版本的检验
外部命令用版本号检测的方法来确定正在使用的DOS版本。只要对这些外部命令稍做修改,就可取消它对DOS版本的检查,使之能适用于任何版本的DOS。这样,便可顺利地使用任何版本的DOS外部命令。
通用的方法是用DEBUG调入要修改的文件,用S命令寻找版本检查功能4B的功能号赋值地址,然后反汇编这一地址,找到“JZ
xxx”,将其用A命令修改成“JMP xxx”,再用W命令写回磁盘。下面是修改DOS
3.30的DISKCOPY.COM的例子。
DEBUG DISKCOPY.COM(回车)
-S 100 FFFE B4 30
CS:1650
-U 1650
XXXX:1650 B430 MOV AH,30
XXXX:1652 CD21 INT 21
XXXX:1654 3D031E CMP AX,1E03
XXXX:1657 740B JZ 1664
XXXX:1659 BAE90F MOV DX,0FE9
...
-A 1657
XXXX:1657 JMP 1664
XXXX:1659
-W
-Q
注意:修改后的“JMP xxxx”字节数不能起过“JZ
xxxx”的字节数。
另外,还有其它一些方法,如用含对应DOS版本的系统软盘启动等,由于比较麻烦,所以不再说明。