prev next

金山汉字系统软字库移入其它逻辑盘的方法

赵永恒


金山汉字系统5.10版的软字库XSDOS.LPH只能放在硬盘的C盘根目录上, 否则便会显示 "C:\XSDOS.LPH not found or read error" 的错误信息, 这样有时对用户带来很大的不便. 例如当C盘容量大于32MB时, 5.10版金山汉字系统将无法装入 , 虽然可使用"打补钉"的方法修改SPLIB.EXE文件或"自定义中断"来解决, 但常常会与操作系统或其它软件相冲突; 另外, MS DOS 具有自动压缩数据的优点, 使硬盘容量约扩大一倍左右, 这样C盘容量常会大于32MB而出现上述问题; 同时在MS DOS 6.0 中如果要压缩数据, 就需使用DBLSPACE命令首先压缩C盘, 然后方可压缩其它逻辑盘, 但是XSDOS.LPH文件中的打印字库是不适于被压缩的. 解决的方法是: 寻找一个容量小于32MB的其它逻辑盘(如 D:、E: 或 F:, 必要时用FDISK 命令重新划分硬盘), 并且不要对该盘进行任何形式的数据压缩, 将XSDOS.LPH拷贝到该盘根目录, 然后修改SPLIB.EXE文件以保证能找到XSDOS.LPH文件.

金山汉字系统5.10版SPLIB.EXE是通过 INT 21 的32号功能( 未公开发表 ) 、INT 13 和 INT 25 在硬盘上找到XSDOS.LPH文件并将其读出的. 其中 INT 21 的32号功能中的驱动器号是放在寄存器DL中, 0为当前驱动器、1为A盘等等; INT 13 的驱动器号也是放在寄存器DL中, DL取0到3的值(加80H为硬盘), 即80H为C盘、81H为D盘、82H为E盘、83H为F盘; INT 25 的驱动器号是放在寄存器AL中, 0为A盘、 1为B盘等等. 因此只要在SPLIB. EXE中找到上述中断的驱动器号并改为相应的硬盘号,就可以将汉字系统调出. 具体修改方法如下:

将SPLIB.EXE拷贝为另一个文件(如SPLIB.OLD)以留作备份, 再用 PCTOOLS 或DEBUG在SPLIB.EXE中寻找下述16进制字符串, 将有下划线的字节改为该字节加上修正量的值即可.对MS DOS 3.x版本进行如下修正:

查找的16进制字符串

修正量

43 3A 5C 58 53 44 4F 53

+n

B2 03 B4 32 BB FF FF CD 21

+n

B2 80 B8 02 02 CD 13

+n

B2 80 B4 08 CD 13

+n

BA 80 00 B9 01 00 33 DB B8 01 02 CD 13

+n

B0 02 B9 01 00 33 DB 33 D2 CD 25

+n

B0 02 B9 9B 00 BA 7B 00 2B CA 51 CD 25

+n

B0 02 B9 3D 00 BA 01 00 CD 25

+n

表中修正量n为: 1为D盘、2为E盘、3为F盘. 其中第一行实际上是查找 "C:\XSDOS..."这个错误信息的, 并将C改为对应盘号的.

对MS DOS 5.0 以上版本尚需增加如下修改(参看《计算机世界月刊》1993年1 期上的有关文章):

查找的16进制字符串

修正量

80 7F 16 F8

+1

8B 47 10

+1


prev next