在BJ330上打印超长纸
在手册中查到,控制页长的打印命令:ESC C(Set Form Length,用行数来指定页长)。格式为:ESC C <n>,其中n为每页的行数,可取1-255,这里取最大值255,即使按图形方式打印,该设置仍有效。
我用BASIC语言写了只有一条语句的程序,LPRINT CHR$(27);"C";CHR$(255);:END,并用Quick BASIC编译成一个执行文件BJ330.EXE,每次打印前先运行一下,配以适当的打印驱动软件,就可解决DOS下中西文文本打印。
但是在WPS下打印时,WPS的其它打印命令又使“ESC C”命令失效。我用SOFT-ICE 2.52分析,设断点如下:BPIO 378 RW,得到了WPS打印文件前发送了命令ESC U,控制打印机单/双向命令,ESC U 1为单向打印,ESC U 0为双向打印。
试验表明,当WPS不发送ESC U命令时,BJ330是按单向打印进行的,因此可将WPS的ESC U 1命令改为ESC C 255,并在打印时选“单向”打印,就可解决问题。(也可将ESC U 0也作上述修改)
修改方法:可用DEBUG或PCTOOLS在WPS.CFG中查找1B 55 01,改为1B 43 FF。
修改后可能出现“单向”仍不能打印超长纸,而选“双向”则可打印,说明文件中“单向”“双向”写反了,用PCTOOLS将WPS.CFG中“单向”“双向”文字互换即可。
UCDOS中的WPS与原版差别较大,不能按上述方法修改。
本文所述在SPDOS 5.21&WPS 2.2中运行通过。