如何让老式Basic程序“升级”

Author: 周泽雁 Date: 1997-01-01

  使用Basic编程的用户都知道,以前在第一、二代Basic下编制的源程序,不能直接放在目前的第三代QBasic及第四代Visual Basic下编辑和运行。这主要是因为老式Basic程序语法虽与目前的QBasic兼容,但其存储代码为非文本格式,不能在QBasic下显示,更无法编辑、运行。笔者积有很多老式Basic程序,弃之可惜。经过实践,本人发现可以通过管道命令实现老式Basic程序向文本格式文件的转换。其方法如下:
#2  一、在高版本DOS下启动Basic。
  由于在高版本DOS下运行Basic,会出现“Incorrect DOS Version”出错信息,需用DEBUG对Basic.com进行修改,使其跳过对DOS版本号的判断,这样就可以在高版本DOS下顺利运行Basic了。取得DOS版本号是通过DOS功能调用INT 21H的30H功能来实现的,即:
  MOV AH,30
  INT 21
  这两行的代码为B4 30 CD 21,故须作如下操作:
  C:\>DEBUG BASIC.COM
  -S 0,FFFF,B4,30,CD,21
  -2256:204A   ;找到关键代码的段地址和偏移量
  -U 204A   ;对源代码进行反汇编
  MOV AH,30
  INT 21
  CMP AL,03  
  JZ ××××
  ……
  用DEBUG的A命令将JZ ××××改为JMP ××××,再用W命令存盘,Q命令返回DOS下,这样Basic就可以启动了。
#2  二、假设对老版本Basic程序abc.bas进行文本格式转换,结果为xyz.bas,以此为例,则在DOS下输入如下命令:
  C:\>BASIC>xyz.bas
  出现Basic提示符“OK”,
  OK
  LOAD "abc.bas"
  OK
  LIST
  ……
  OK
  SYSTEM
  此时,在当前目录下就会发现一个名为xyz.bas的文本文件,再用文本编辑器EDIT对其编辑,主要是将程序头尾的一些转换过程中产生的原Basic信息行删去即可。这样程序xyz.bas就可以在QBasic下运行了。