对DOSSHELL的一点小改动

Author: 浙江 徐晓伟 Date: 1995-07-28

        Unable to load MS-DOS Shell,Retry (y/n)?
        如果我们键入的是小写的n(即ASCII码Ox6E),则返回DOS下;如是N(ASCII码Ox4E)则继续显示:
        Unable to load MS-DOS Shell,Retry (y/n)?
        我们知道一般的软件如出现要求键入一个字符(如菜单中的热键)时,尤其是象回答Y或N这样的情况,它应该是不分大小写的!否则的话当你按下N键而键盘却处于大写状态下但你不知,让人产生程序有误或键盘失灵的错觉。笔者通过分析DOSSHELL.COM,利用DEBUG把它修改成对大小写都能响应。
        步骤如下:
        C:\DOS>DEBUG DOSSHELL.COM <CR>
        -R CX ;查看文件长度
        CX 120F
        :
        -S 100 120F 3C 6E ;搜索 CMP AL,6E(与'n'比较)
        119B:0285
        -U 285 290
        119B:0285 3C6E  CMP  AL,6E
        119B:0287 90     NOP
        119B:0288 90     NOP
        119B:0289 740C   JZ   0297
        119B:028B 3C79   CMP  AL,79  ;与'y'字符比较
        119B:028D 90     NOP
        119B:028E 90     NOP
        119B:028F 7402   JZ   0293
        -A 285
        119B:0285 OR     AL,6O  ;把键入的键值和Ox60相或,得到的是该键的小写值,
        119B:0287 CMP    AL,6E  ;这样不管键入的是大写还是小写,程序收到的都是小写。
        119B:0289
        -W
        Writing 012OF bytes
        -Q
        笔者用的DOS版本是5.00。(浙江  徐晓伟)