WPS使用技巧 姜灵敏 1994-01-07 本文主要介绍当今使用最为广泛的Super-CCDOS 5.10下WPS 2.10的应用。 (一)系统的安装 一、SPDOS下内存的合理使用 DOS提供给用户的常规内存最多只能是640K,但286以上的PC机除支持常规内存外,还支持扩充内存、扩展内存及上端内存。在SPDOS下合理使用这些内存,可以使得在相同的资源条件下达到最佳的效果、最高的运行效率。 1.SPDOS 5.10占用内存情况 ┏━━━┯━━━━┯━━━━━━┯━━━━━━━━━┓ ┃程序 │参数 │装入情况 │占用常规内存(字节)┃ ┠───┼────┼──────┼─────────┨ ┃SPLIB │0或没有 │不装入字库 │80544(约79K) ┃ ┃│ 1 │装入64K字库 │146080(约143K) ┃ ┃│ 2 │装入128K字库│211616(约207K) ┃ ┃│ 3 │装入192K字库│277152(约271K) ┃ ┃│ 4│装入238K字库│324192(约317K) ┃ ┃SPDOS ││  │45920(约45K) ┃ ┃WBX │ │  │47872(约47K) ┃ ┗━━━┷━━━━┷━━━━━━┷━━━━━━━━━┛ 注意: (1)SPLIB只能用来装入显示字库,其参数取0~9之间的值,但大于4的数与4作用相同。 (2)SPLIB中的参数从0到3,数值每增1,就多装入65536(64K)字节的显示字库。显示字库的标准尺寸是87区×94位×32(每个字的显示点阵)=261696字节,由于SPLIB的显示字库中取消了10~15六个区,所以其显示字库只有261696-6×94×32=243648字节,故设置参数4只比参数3只多装入47070字节。 (3)SPLIB不能把显示字库装入扩展内存或扩充内存。SPLIB也无法装入上端内存,即使上端内存有足够的空间。 (4)SPDOS可以装入上端内存使用,但退出WPS编辑时清除SPDOS,需重新装入才能继续运行。 (5)WBX可装入上端内存,且工作正常。不需要五笔输入法时,WBX可不装。 2.SPDOS 5.10对内存的最低要求 在启动了SPDOS系统以后,剩余内存至少要多大才能运行WPS呢?不同的功能,要求的最低内存量不一样,见下表: ┏━━━━━━━━┯━━┯━━┯━━━━┯━━━┓ ┃ 功 能 │启动│^KR │模拟显示│多开一┃ ┃ │WPS │读盘│或打印 │个窗口┃ ┠────────┼──┼──┼────┼───┨ ┃至少需求内存(KB)│128 │215 │293 │增加64┃ ┗━━━━━━━━┷━━┷━━┷━━━━┷━━━┛ 若内存不够,WPS不能启动,并提示“Not enough memory”(内存不够);或操作异常结束,并提示“内存使用溢出”。 3.提高SPDOS 5.10运行效率的途径 影响SPDOS 5.10性能的主要因素是为查找汉字调字库而读磁盘的次数。SPDOS 5.10将16点阵显示字库和24点阵打印字库合成在一起,名为XSDOS.LPH,大小为4129424字节,显示字库占238K字节,其余为打印字库。显然,把字库装入内存可提高性能。 显示字库影响文本的显示速度,应尽量把字库装入常规内存。但装入内存的字库超过128K,内存就不够做模拟显示和打印。故最多只能装入128K的显示字库,其余的用磁盘Cache来解决。 WPS字处理系统的一个显著特点是模拟显示功能,一篇文章往往要先作多次模拟显示,觉得满意才能打印输出。读打印字库的速度直接影响打印和排版显示速度,尤其是后者。打印字库很大,而且不管内存有多大都不能装入内存。所以必须也只能用磁盘Cache来解决。 使用磁盘Cache对内存的利用率比装入字库到内存高,因为装入的字库是死的,不管字库的内容有用无用,总是留在那里,占用内存,而Cache中放的总是那些最近在使用的字,最近不用的字,一旦Cache装不下,就被“挤”出去,不占用内存。装入128KB显示字库和拿出128KB常规内存作Cache,两种方法占用一样多的内存,但后者效果明显好得多。字库可以不装入,Cache却不能不设。所以在内存紧张的情况,应优先考虑Cache。只要有扩展内存或扩充内存(Extended Memory或Expanded Memory),就用它作磁盘Cache,尽量把常规内存省出来。 在装有字库且使用磁盘Cache时,内存和Cache中的字库同时起作用。系统先到内存找字库,找不到再到Cache中去找,两处都找不到才读盘。 当使用扩充内存/扩展内存作磁盘Cache时:(1)字库一个都不装,可得到最大的可用内存;(2)装入64K字库,可做到应用内存与功能的平衡;(3)装入128K字库,可使性能最佳(此时WBX 不装或装入上端内存)。 4.不同内存配置SPDOS 5.10系统的安装 (1)内存512KB 512K内存运行SPDOS和WPS比较紧张,一种方案是:字库和WBX都不装入,DOS 3.3本身占54K,装入SPLIB和SPDOS后,内存剩334K,若要做模拟显示和打印,则磁盘Cache最多只能有41K,效果不好,同没装一样。若只做录入、编辑,则可空出215K内存,用119K做Cache,其中磁盘缓冲程序本身也要占用一 部分空间,缓冲区不够119K。 安装程序如下(只做录入和编辑): C〉TYPE AZ512.BAT SPLIB SPDOS PC-CHAHE/SIZE=115 若要装入五笔字型输入法,Cache容量就要减少47K。PC-CACHE文件在PCTOOLS 6.0以上版本中均有,将其拷贝到C:的根目录下即可。 (2)内存640KB 装入五笔字型输入法,不装字库,拿出115K的内存做磁盘Cache,操作系统为DOS 3.30,则内存可保留293K,能做模拟显示和打印。其安装程序如下: C〉TYPE AZ640.BAT SPLIB SPDOS WBX PC-CACHE/SIZE=117 (3)内存1MB 扩充内存384K作为磁盘Cache,若设虚拟磁盘,最多只能用128K,还须留256K给Cache,装入64K字库(加速)或不装字库(空出内存)。可做模拟显示和打印,最多可开两个窗口,性能较佳。其安装程序如下: C〉TYPE AZ1M.BAT SPLIB %1(在运行本安装程序时,参数%1为空或/1) SPDOS WBX PC CACHE/SIZE=384 若扩充内存不够384K,PC-CACHE会自动调整到当前容量,使用384K Cache时,PC-CACHE本身占用常规内存12K,可用内存最大为400K,能运行FoxBASE+ 2.1、Borlandc C++等软件。 (4)内存2MB以上 除扩充内存可用作磁盘Cache外,还可把五笔字型输入法WBX装入上端内存,进一步释放常规内存。字库可选择不装/装入64K/装128K。WPS全部功能均可用,可开4个窗口;Cache容量最大,效果最好;运行WPS性能最佳。其安装程序如下(以DOS 5.0为例): C〉TYPE AZ2M.BAT SPLIB %1(在运行本安装程序时,参数%1为空或/1或/2) SPDOS LH WBX (WBX装入上端内存) Cache在系统配置文件中设置,即在系统配置文件CONFIG.SYS中安排如下语句: DEVICE=\DOS\HIMEM.SYS DEVICE=\DOS\EMM386.EXE DOS=HIGH DOS=UMB DEVICEHIGH=\DOS\SMARTDRV.SYS 1000 BUFFERS=24 FILES=20 可用内存最大可达501291字节(489K)。若SPDOS也装入上端内存(安装程序中SPDOS改为LH SPDOS),可用内存空间增加45K,最大可达547211字节(534K)。 二、如何在MS-DOS5.0下安装CCDOS 5.10在DOS 5.0下,不能直接运行SPDOS 5.10,当执行SPLIB.EXE时,屏幕上显示如下错误信息: C:\XSDOS.LPH not found or read error 并返回到DOS,无法进入汉字系统。原因是SPDOS 5.10在DOS 5.0出现以前开发的,而DOS5.0较之以前各版本的DOS作了许多重大的改进,这些改进使SPDOS 5.10不能按以前的方法安装,必须对SPDOS的有关系统文件作些修改以适应DOS 5.0系统。下面介绍用DEBUG调试程序进行修改的方法(应先将DEBUG.COM文件拷到SPDOS系统文件同一目录下)。 1.若C盘分区容量不超过32MBC>REN SPLIB.EXE SPLIB 将SPLIB.EXE文件改名为SPLIB C>DEBUG SPLIB -R AX=0000 BX=0001 CX=2A75 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000 DS=486E ES=486E SS=486E CS=486E IP=0100 NV UP EI PL NZ NA PO NC 486E:0100 4D DEC BP (注意:在你的计算机上各寄存器的值可能与上述不同,记下DS的值,并将它加1000H,如486EH+1000H=586EH,在下面的修改操作中就根据这个值进行) E586E:285D 586E:285D 16.17 将586E:285D中的原16改为17 -E586E:28BD 586E:28BD 10.11 将586E:28BD中的原10改为11 -W -Q C>REN SPLIB SPLIB.EXE 将SPLIB文件改回为SPLIB.EXE 2.若C盘分区容量超过32MB 首先要保证根目录下的字库文件XSDOS.LPH在硬盘的前32MB位置,在进行完上述1.中所述的修改以后,进行以下操作。 (1)修改SPLIB.EXE C>REN SPLIB.EXE SPLIB 将SPLIB.EXE文件改名为SPLIB C>DEBUG SPLIB -R AX=0000 BX=0001 CX=2A75 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000 DS=486E ES=486E SS=486E CS=486E IP=0100 NV UP EI PL NZ NA PO NC 486E:0100 4D DEC BP (注意:在你的计算机上各寄存器的值可能与上述不同,记下DS的值,并将它加1000H,如486EH+1000H=586EH,在下面的修改操作中就根据这个值进行) -A586E:2B90 586E:2B90 CS: 586E:2B91 MOV WORD PTR[03B0],0000 586E:2B97 CS: 586E:2B98 MOV WORD PTR[03B2],0000 586E 2B9E CS: 586E:2B9F MOV WORD PTR[03B4],0001 586E:2BA5 CS: 586E:2BA6 MOV WORD PTR[03B2],0000 586E:2BAC CS: 586E:2BAD MOV[03B8],AX 586E:2BB0 CS: 586E:2BB1 MOV[03B4],CX 586E:2BB5 CS: 586E:2BB6 MOV[03B0],DX 586E:2BBA MOV AX,CS 586E:2BBC MOV DS,AX 586E:2BBE MOV BX,03B0 586E:2BC1 MOV CX,FFFF 586E:2BC4 MOV AL,02 586E:2BC6 INT 25 586E:2BC8 POP AX 586E:2BC9 MOV AX,CS 586E:2BCB ADD AH,03 586E:2BCE MOV DS,AX 586E:2BD0 MOV ES,AX 586E:2BD2 RET -A586E:28E3 586E:28E3 NOP 586E:28E4 NOP -A586E:28EC 586E:28EC CALL 2B90 -A586E:2952 586E:2952 CALL 2BB0 -A586E:29B0 586E:29B0 CALL 2BB0 -A586E:2886 586E:2886 INC AH 586E:2888 SHL CX,1 586E:288A CMP AL,07 586E:288C JZ 289C 586E:288E CS: 586E:288F MOV BYTE PTR[01D4],00 E102 486E:0102 75.D3 (这里486E为原CS的值) -RCX CX 2A75 :2BD3 -W -Q C>REN SPLIB SPLIB.EXE (2)修改SPDOS.COM C>DEBUG SPDOS.COM -R AX=0000 BX=0000 CX=BDEE DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000 DS=4885 ES=4885 SS=4885 CS=4885 IP=0100 NV UP EI PL NZ NA PO NC 4885:0100 E97DB3 JMP B480 (注意:在你的计算机上寄存器DS和CS的值可能与上述不同,这无关紧要) -ABDF0 4885:BDF0 MOV [0000],DX 4885:BDF4 MOV WORD PTR[0002],0000 4885:BDFA MOV [0004],CX 4885:BDFE MOV [0006],BX 4885:BE02 MOV BX,0000 4885:BE05 MOV [0008],DS 4885:BE09 MOV CX,FFFF 4885:BE0C PUSH DS 4885:BE0D PUSH CS 4885:BE0E POP DS 4885:BE0F INT 25 4885:BE11 POP AX 4885:BE12 POP DS 4885:BE13 RET -ABADB 4885:BADB CALL BDF0 -ABB56 4885:BB56 CALL BDF0 -ABBA3 4885:BBA3 CALL BDF0 -EBAFE 4885:BAFE 02.03 -RCX CX BDEE :BE14 -W -Q 作了上面修改后,在DOS 5.0下,可以在C盘分区容量大于32MB情况下运行Super-CCDOS 5.10。 3.不修改Super-CCDOS 5.10系统下任何文件的简单安装方法 DOS 5.0为了能管理硬盘大于32M的分区,把硬盘格式化成每簇4个扇区,而DOS 3.3是格式化成每簇8个扇区。SPDOS 5.10是在DOS 3.3环境下开发的,所以不能直接读写用DOS5.0格式化的硬盘扇区,在DOS 5.0下运行Super-CCDOS 5.10系统就会出现错误:XSDOS.LPH not found or read error! 根据上面的分析,我们可以这样来解决在DOS 5.0下运行SPDOS 5.10的问题:首先用DOS 3.3的FDISK.COM(或DM.EXE)和FORMAT.COM对硬盘分区和格式化,然后将DOS版本升级为5.0,再安装SPDOS 5.10和WPS字处理软件。现在,我们的系统既具有DOS 5.0的功能,也能正常运行WPS了。具体将DOS版本升级为5.0的方法有两种:(1)直接利用DOS 5.0中的安装程序进行升级,此法比较简单;(2)用PCTOOLS删除硬盘根目录下的系统文件IBMBIO.COM、IBMDOS.COM、COMMAND.COM,然后拷入DOS 5.0启动盘上的相应文件或在DOS提示符下用SYS命令传输系统即可。再把DOS 5.0系统盘的相关文件拷入硬盘DOS子目录下,修改CONFIG.SYS和AUTOEXEC.BAT文件,调用DOS 5.0增加的内存和磁盘管理等新功能。 三、Super-CCDOS 5.10显示速度慢的解决 SPDOS的显示字库一般只调入一部分到内存而另一部分驻留在硬盘,以给用户留下较多的存储空间,这就导致了在WPS编辑操作及模拟显示时速度慢,而且会影响硬盘的使用寿命。我们可以用给硬盘安装高速缓冲区的方法来解决这个问题。磁盘高速缓冲区的基本原理就是把那些磁盘上最经常使用的信息存储在一个专门开辟的内存缓冲区中,以读内存来代替读磁盘,从而减少访问磁盘的次数,提高速度。 对DOS 5.0以前版本,可用如下三种方法,它们的共同之处是利用高速缓存。 1.可用PCTOOLS 6.0提供的PC-CACHE.COM来建立硬盘高速缓冲区,具体步骤是: (1)把PC-CACHE.COM文件拷贝到C盘根目录 (2)修改AUTOEXEC.BAT自动批处理文件,在任一常驻内存的程序前面插入如下一行: PC-CACHE/SIZEXT=XXXXK (适用于1M以上内存) 或: PC-CACHE/SIZEXP=XXXXK (适用于1M以下内存) 或: PC-CACHE/SIZE=XXXXK (适用于640K内存) 其中XXXXK表示缓冲区大小(以K为单位),在这里以256K以上为佳(因为16×16点阵显示字库有240K左右),如果可能,建640K以上更好(为了能容纳24×24点阵打印字库)。 这种办法的优点是不需任何设备驱动程序,既可用DOS的常规内存又可用扩展内存做高速缓存,因此适用范围广。缺点是效果和效率不如下面两种办法好。 2.利用WINDOWS 3.0或3.1的SMARTDRV.SYS驱动程序设置高速缓存,在C盘根目录CONFIG.SYS中增加下面两句:DEVICE=\WINDOWS\HIMEM.SYS DEVICE=\WINDOWS\SMARTDRV.SYS 2048 512 这两句顺序不能颠倒,HIMEM.SYS是WINDOWS的扩展内存管理程序;SMARTDRV.SYS 2048 512用扩展内存的2048K做高速缓存,因此使用效率相当高,使用中几乎不读硬盘。以上两个参数可根据需要和具体机器灵活设定。 3.利用MS-DOS 5.0的HIMEM.SYS和SMARTDRV.SYS驱动程序(当然,DOS 5.0的HIMEM.SYS和SMARTDRV.SYS要拷贝到硬盘上),设置方法同上。效果与方法2差不多,区别是这两个程序要比上面两个程序稍大一点。 在DOS 5.0系统,可直接在CONFIG.SYS文件中增加一条SMARTDRV.SYS命令来建立硬盘高速缓冲区,命令行格式为: DEVICEHIGH=\DOS\SMARTDRV.SYS XXXX XXXX表示缓冲区大小(以K为单位),其要求同上。 四、如何在MS-DOS 5.0下安装CCDOS 2.13H 1.对系统配置的要求 如果要使CCDOS 2.13H系统能支持其它应用软件的运行,通常要将CCDOS 2.13H的显示字库存放在虚拟磁盘中。下面是DOS 5.0下的配置文件CONFIG.SYS的清单: DEVICE=\213\ANSI.SYS DEVICE=\DOS\HIMEM.SYS DEVICE=\DOS\RAMDRIVE.SYS 264 512 32/E DEVICE=\DOS\EMM386.EXE NOEMS FRAME=E000 I=B000~B7FF DOS=HIGH DOS=UMB DEVICEHIGH=\DOS\SETVER.EXE DEVICEHIGH=\DOS\SMARTDRV.SYS 700 BUFFERS=24 FILES=20 若在DOS 5.0以下版本使用CCDOS 2.13H,上面的设置可只保留1、3、9、10行,且第3行DEVICE=\DOS\VDISK.SYS 264 512 32/E。 上述配置文件,适用于2.13H和SPDOS 6.0F以前的各版本,而对SPDOS 6.0F就行不通了,因为SPDOS 6.0F不能用EMM386.EXE来管理。 2.调用CCDOS 2.13H各应用模块的批文件 一般用批处理文件的方法调用CCDOS 2.13H各应用模块,通常此批文件的文件名为AUTOV.BAT,内容如下: @ECHO OFF CD\213 IF NOT EXIST E: HZK16 COPY HZK16 E: 将2.13H的显示字库装入虚拟盘 FILE3 E2 调入读虚拟盘字库模块 LH CCCC 调入键盘管理模块 CV26 调入VGA 26行显示模块 INT10H 调入显示功能扩展模块 YX1 装入预选字表 KWB 调入五笔字型接口模块 LH WBZX调入五笔字型输入法模块 LH LX1装入联想库 PRTA装入打印机驱动程序 SC ALL3装入特殊显示功能程序 FILE16B调入读显示字库模块 FILE24A 1SFHK调入读24点阵字库模块 CD\ (1)上述各项可根据需要进行选择。批文件中的命令均可在系统提示符下单独运行。 (2)虚拟盘符应与实际虚拟盘符一致,FILE3 E2中的E也与实际虚拟盘符一致。 (3)显示模块视所配置的显示器而定,可选择的模块有: CC11.COM CGA-11行显示模块 CE21.COM EGA-21行显示模块 CC16.COM CGA-16行显示模块 CE25.COM EGA 25行显示模块 CC25.COM CGA-25行显示模块 CE26.COM EGA-26行显示模块 CV26.COM VGA-26行显示模块 CH21.COM 720*350单显21行显示模块 (4)PRTA 命令用于装入打印机驱动程序,2.13H可适配多种打印机。在PRTA命令后带一个空格便可选择打印机。 (5)上述批文件中的LH是DOS 5.0的内部命令,在5.0以下的系统中应将其去掉。 (6)在DOS 5.0系统下运行2.13H,应将原FILE3.COM文件偏移地址017A处的内容10改为11。 五、2.13H与CCDOS 5.10之间的切换 由于工作需要,往往在一台机器上同时安装了CCDOS 2.13H系统和SPDOS系统,如何从一种汉字系统中退出而进入另一种汉字系统呢? 1.如果开机以后先进入的是2.13H系统,欲退出2.13H而进入SPDOS是很容易的。只要根据2.13H提供的清理内存功能,按“CTRL+F5”功能键,选择“1”即可,然后进入SPDOS的子目录,运行相应命令即可进入SPDOS系统。 2.如果开机以后先进入的是SPDOS,可按如下步骤退出中文系统:(1)按“CTRL+F10”键;(2)选择“辅助功能”项中“移去CCDOS”功能;(3)用“Y”回答“真的要移去CCDOS吗?”。 退出了SPDOS后,进入2.13H子目录再调用2.13H却遇到了问题:无法将2.13H的显示字库安装在虚拟盘上,而只能将显示字库置于硬盘上和内存中,否则将不能进入2.13H系统。用命令CHKDSK检查虚拟盘时,出现提示“Probable non-DOS disk Continue(Y/N)?”,用PCTOOLS的磁盘编辑功能查看虚拟盘,发现虚拟盘的根区、FAT区及目录区由于SPDOS的显示字库占用而遭损坏,造成2.13H不承认虚拟盘而导致在虚拟盘上安装显示字库失败。 可以设想,如果在进入SPDOS前保存虚拟盘的ROOT区、FAT区及目录区,在退出SPDOS后再恢复它们,就能使2.13H承认虚拟盘,并能将显示字库安装在该虚拟盘上。具体步骤如下: (1)在进入SPDOS前用DEBUG保存虚拟盘的根区、FAT区和目录区 C>DEBUG -L100 4 0 4(这里,第一个4表示虚拟盘号,不同的配置此值不同。BOOT占一个扇区,FAT为两个扇区,目录区占一个扇区,共四个扇区) -RCX CX 000 :800 -NEBOOT -W -Q 这样,虚拟盘的根区、FAT区及目录区就保存在EBOOT文件中了。 (2)在退出SPDOS后用DEBUG恢复虚拟盘的根区、FAT区和目录区 C>DEBUG -NEBOOT -L100 -W100 4 0 4 -Q 此后,便可调用2.13H了。 六、WPS启动方式参数 利用WPS的启动方式参数,启动时将不在WPS主菜单上等待,而是直接进入该文件的编辑状态,从而加快了启动WPS速度,格式为: WPS[文件名[/N][/V]] 其中:(1)带参数/N,以非文书文件方式编辑文件; (2)带参数/V,表示WPS启动时对当前CCDOS屏幕内容不进行自动保护,因而在退出WPS后将不对原屏幕内容进行恢复; (3)不带参数或带参数/D,以文书文件方式编辑文件。 (二)WPS的编辑技巧 一、用删除方法实现文本的拷贝或移动 在WPS中,可以用块操作实现文本的拷贝或移动,但若要拷贝或移动的是一个字、一句话或一行,用删除操作结合CTRL+U命令则更方便。用CTRL+U命令可以将最后一次删除命令(块删除操作除外)所删除的内容恢复到当前光标位置上,但只限于恢复最后一次删除的内容。 先将光标移到要拷贝或移动的文本处,用对应的删除命令(DEL命令删除一个字,CTRL+T删除一个句子,CTRL+←删除光标处至行首的所有字符,CTRL+/删除光杆处至行尾的所有字符,CTRL+Y删除一行),然后将光标移到新的位置,按一次CTRL+U命令,被删除的内容就恢复在当前光标位置上了。 二、查找和替换命令使用技巧 1.用替换方法提高编辑速度。在编辑文件时,如果在文件中多处出现同一个词组,则在开始输入文本时用一个简单的符号表示,待整篇文章输入完毕,再用WPS的替换功能将简单的符号替换成中文词组。例如在一篇文章中将要出现几十次“南方财经大学计算机应用培训班”,开始时可用PX两个字母表示,文章输入完毕后,按CTRL+QA,然后按如下形式操作: 找什么?PX 替换成?南方财经大学计算机应用培训班 方式选择?GN n-查找次数 U-忽略大小写 G-全程 K-块 B-往回 N-不应答开始 ESC退出 所有的PX将被替换成'南方财经大学计算机应用培训班”。  2.用替换命令删除字句或文本。如果要删除文件中多次出现的某一个词句或一段文本,不必一一去查找和删除,借助于替换命令CTRL+QA可以自动快速地实现删除功能。按CTRL+QA命令,输入要查找的文本,然后在系统提示“替换成?”时,什么也不输入,只是直接打回车键,即可将查找到的字句删除。 3.查找替换命令的使用技巧。象DOS中的通配符“*”和“?”一样,WPS在查找替换过程中可用通配符^S(^表示CTRL键)来代替任何ASCII字符或汉字。如在执行查找替换命令回“找什么?”时,键入R^SM,将找出RAM、ROM、RIM、R+M等,而输入"^S南省"就可能将找出湖南省、云南省、河南省和海南省。 当通配符^S出现在替换命令中的“替换成:”这一项时,表示这个字符不替换,原样照抄老的字符。 ^S可通配任何ASCII字符、控制字符和汉字,除此之外,还有^A仅用于通配任何ASCII字符、^C通配汉字。 查找替换命令还可对控制字符进行处理,在回答“找什么?”时,可以用^S来通配控制符,也可以用输入下面的序列来查找专门的控制符: ^P^M表示硬回车,屏幕显示^M^J; ^P^J表示软回车,屏幕显示^J^J; ^P^L表示分页符,屏幕显示^L^J; 例如,要把硬回车替换成软回车,(1)按CTRL+QA;(2)输入^P^M;(3)输入^P^J;(4)输入GN。则被编辑文本的所有硬回车全部替换成了软回车。 三、利用字符升高和字符后退方法“造字” WPS没有造字功能,而在实际的文字处理中又经常碰到一些一、二级字库中没有的汉字,如“扌不”、“氵荣”、“钅容”等,遇到这类问题,我们可以用如下的简单方法加以解决首先把这些字拆分成能够用五笔字型输入的部首将其输入,然后通过把字间距、行间距、字符升高、字符后退组合起来运用,从而达到“造字”的目的。如“氵荣”可拆分成“氵”和“荣”,再根据所定义的字型号,选择适当的字间距(如五号字,字间距可定义为-6),就拼成了个“氵荣”;同样,“明空”可拆分成“明”和“空”,然后根据定义的字型号,选择适当的字符升高、字符后退等命令,就可“造”出一个“明空”字。 四、快速使标题居中 WPS提供的居中功能是以纸宽为基准的,而不是以文本宽度为基准的,所以很难确定标题是否真正居中。在实际运用操作中,文章的标题与正文的字型号往往是不一样的,所以也不能以标题前面空出多少个正文字体来判断是否居中,常常要用模拟显示的方法反复进行比较修改。可以用以下方法快速使标题居中:首先,根据不同规格的纸型,确定每行打印不同字号的汉字的标准字数,比如16开纸,每行打印2号字一般以21个汉字为宜,3号字为25个,4号字为31个,5号字为40个等等;然后根据标题所占的字节和所用字号进行调整,设标题有11个汉字,定义为3号字,一行里就有14个汉字的空白,标题前面空7个汉字即可使标题居中(标准字数减去实际字数再除以2)。 五、对多段快速排版 在D编辑状态,WPS的CTRL+B命令对光标所在段进行重新排版,不象WS中的CTRL+B命令可对通篇文章的所有段进行重新排版。但在WPS中,可结合重复操作命令CTRL+QQ和排版命令实现对任意段进行重新排,效果更好。具体操作步骤如下: 1.先重新定义左右边界; 2.将光标移到要排版的起始段; 3.键入CTRL+QQ命令,屏幕显示 重复执行命令集:^B 重复执行次数(RETURN为不限制): 4.输入一个数字n,就重新排版n段,若直接按回车键,则自光标所在段开始一直重排到文未,注意此时必须按CTRL+BREAK才能终止重复命令。 六、DOS系统屏幕内容复制 在WPS编辑过程中,随时可按^KF(或F10)进入DOS环境,进行各种命令的操作,如DIR、TYPE等,用EXIT命令返回到WPS原编辑状态。 ^KL命令的作用是复制DOS信息块,可以将DOS屏幕的内容复制到当前光标位置上来,具体操作方法是: (1)把光标移到复制部分将插入的正在编辑文件中的位置; (2)按^KL命令,屏幕恢复保存的DOS状态下的内容; (3)移动光标,用^B在要复制部分的首部做块首标志; (4)移动光标,用^K在要复制部分的尾部做块尾标志; (5)按^C,系统又恢复到编辑状态,所定义的DOS屏幕块已复制到了被编辑文件中。 结合^KF和^KL命令,可以把一些DOS命令执行的结果复制到被编辑文件中。例如WPS文件中需要磁盘目录的信息,可以先键入^KF命令,系统进入DOS状态,打DIR命令显示磁盘文件目录,键入EXIT命令返回WPS状态,再键入^KL命令将显示在屏幕上的磁盘目录复制到WPS编辑的文件中。 七、图文混排功能 WPS的文字处理功能强大,图形功能较弱,因此同时配套提供了一个图文排版软件SPT,SPT可以进行丰富的图形操作,但文字处理能力较弱。在WPS的操作中,提供了图文混排的方法。WPS在打印文件的时候,完成打印机参数设置后屏幕总是显示一行:输出到SUPER-STAR文件名[按回车键忽略],若直接按回车键将进行打印,若输入一个文件名,系统把打印文件输出到这个文件上。在SPT中用读文件功能调用该文件即可做到图文混合排版。 (三)WPS文件的结构及密码设置 用WPS编辑可得到文书文件和非文书文件两种不同存储结构的文件,用N编辑得到的是非文书文件,它是标准的文本文件。而用D编辑得到的是文书文件,它不是标准的文本文件。非文书文件可以用DOS的TYPE命令直接显示,通用性较好。而文书文件是不能用DOS下的TYPE命令显示的,其它编辑软件也不能对其进行编辑。 文书文件的头部有1024字节的文件头,在1024字节之后是按ASCII码形式存储的文本,如果加了密码,则文本先与密码作异或运算再存储。 一、用批处理实现文书文件的TYPE功能 文书文件,也称公文资料文件,是由WPS字处理系统的D编辑命令编辑生成的,主要由汉字代码、ASCII码、打印控制码等组成的,是公文资料的计算机处理形式。由于文书文件中除文字代码外,还常含有各种控制符,因而它是与所用的字处理系统相对应的,一般不能通用。比如用WPS的D命令编辑的文书文件不加变换就不能为其它编辑系统(如WORDSTAR等)所利用,也不能用DOS的TYPE命令显示。这样,在建立的文件较多而混淆了文件名或者忘记文件内容时,就只好用DIR命令查看文件名,然后调用D编辑一一查看文件内容,不仅麻烦而且浪费时间。 WPS的D编辑产生的文件包括两大部分:第一部分是WPS为用户所编辑的文件加的前缀,是有关文件的一些状态信息(如文件的长度、密码、光标的位置、左右边界等),这一部分的长度固定为1024字节;第二部分是用户编辑的具体内容,其长度为文件总长度减去1024字节,ASCII码26(1AH)为文件结束标志。这里我们介绍一种截去前1024字节只显示用户编辑的内容的方法。 1.用COPY命令或编辑程序建立两个批处理文件D.BAT和TYPW.BAT,内容如下: C>COPY CON D.BAT NCON W500 Q ^Z C>COPY CON TYPW.BAT ECHO OFF TYPE D.BAT|DEBUG %1 ECHO ON ^Z 2.在DOS提示符打入TYPW〈WPS文件名〉即可完成该文件的直接显示(注:执行TYPW命令时,必须确保DEBUG文件在当前目录下)。 TYPW.BAT文件利用DOS的管道功能将文件D.BAT的内容作为DEBUG程序的输入,进入DEBUG后,将输出指向屏幕,并从文件的第二部分开始显示。 二、文件间的转换 1.WPS文书文件向WS文书文件的转换 WPS提供了WS文书文件向WPS文书文件转换的功能,但没有提供WPS文书文件向WS文书文件转换的功能,若要实现这一转换,可在WPS的D编辑状态,将全篇文章定义为一个块,再用块写方法将其写到一个磁盘文件。若文件过大,不能全部定义到一个块里,可分割定义块而写到若干磁盘文件,再在WS的D编辑下,用块读的方法将它们合并到一个文件中来。 2.文书文件与非文书文件之间的转换 文书文件与非文书文件之间的转换不需用特殊的方法,文书文件用N编辑命令调入编辑后再存储就 是非文书文件格式了,而非文书文件用D编辑命令调入编辑后再存储就是文书文件格式了。至于文件中的软、硬回车键的转换可用替换功能实现。 3.高版本系统下编辑的文件不能在低版本系统编辑问题的解决 目前流行的SPDOS版本有4.03、5.0、5.10、6.0F等,它们是向下兼容的,即高版本系统可编辑低版本系统生成的文件,但高版本系统下编辑的文件不能在低版本系统中直接编辑。这个问题比较容易解决:在低版本系统WPS的主菜单中选择F(文件服务功能),然后选子菜单中的1-Super WPS格式到文本格式,依次输入源文件名(即在高版本系统下编辑的文件)和目标文件名,目标文件就可在低版本系统编辑了。 三、WPS文书文件的加密及密码的获取 可对所编辑的文本文件设置密码,是WPS字处理系统的一个突出优点。一旦某个文件设置了密码,下次调用它时,必须输入正确的密码,否则调用失败,使文件具有较好的保密作用。但时间一久,人们往往会忘记密码,以至无法调用自己编辑好的文件。下面介绍密码设置和密文存放的特点,以及获取密码的方法。 1.密码设置及密文存储 在WPS的D编辑状态,按CTRL+OP或选择命令菜单文件操作中的“密码设置”功能,即可对编辑的文件设置密码。密码为1~8个ASCII字符,可以是除回车符以外的任意ASCII字符,因此Esc、tab、Backspace等键也可作为密码字符,且按这些键时屏幕上没有显示,其加密效果更好,另外输入小写字母时会自动转换为大写,所以汉字不能作为密码。一旦输入了密码,存盘时WPS就将其存放到文件的2DDH(十进制为734)开始处的连续8个单元中。密码存入文件前先作如下变换:密码字符的8位ASCII码高四位与低四位交换,然后各位取反(即1变为0,0变为1)。当下次调用该文件时,再将存在文件中的数值作逆运算,获得正确的密钥,以验证用户输入的密码是否与之相符。 例如输入密码为ABC,其ASCII码分别为41H、42H、43H,相应的8位二进制数为01000001、01000010、01000011,高四位与低四位交换后为00010100、00100100、00110100,取反后为11101011、11011011、11001011,即为十六进制的EBH、DBH、CBH,它们就是存放在文件中的密码值。 为了查取密码字符的方便,下面列出各密码值与密码字符的对照表: 密码 密码符 密码 密码符 密码 密码符 密码 密码符 密码 密码符 密码 密码符 0A - 0B O 0C ? 0D / 0E CTRL+- 0F CTRL+O 1A ^ 1B N 1C > 1D . 1E CTRL+6 1F CTRL+N 2A ⊥ 2B M 2C = 2D - 2E CTRL+] 2F CTRL+M 3A \ 3B L 3C < 3D , 3E CTRL+\ 3F CTRL+L 4A | 4B K 4C ; 4D + 4E CTRL+ESC 4F CTRL+K 5A Z 5B J 5C : 5D * 5E CTRL+Z 5F CTRL+J 6A Y 6B I 6C 9 6D ) 6E CTRL+Y 6F CTRL+I 7A X 7B H 7C 8 7D ( 7E CTRL+X 7F CTRL+H 8A W 8B G 8C 7 8D ' 8E CTRL+W 8F CTRL+G 9A V 9B F 9C 6 9D & 9E CTRL+V 9F CTRL+F AA U AB E AC 5 AD % AE CTRL+U AF CTRL+E BA T BB D BC 4 BD $ BE CTRL+T BF CTRL+D CA S CB C CC 3 CD # CE CTRL+S CF CTRL+C DA R DB B DC 2 DD " DE CTRL+R DF CTRL+B EA Q EB A EC 1 ED ! EE CTRL+Q EF CTRL+A FA P FB @ FC 0 FD 空格 FE CTRL+P 功能键与方向键均为FFH,还有几个键的对照关系为: 4E ESC 6F TAB 7F BACKSPACE 0I CTRL+BACKSPACE 18 ~ 28 { 38 | 48 } F9 ` 设置了密码后,编辑的文本不再按原ASCII值存储,而是将文本的每一个字符的ASCII码与相应的经过变换后的密码字符的数值进行循环逻辑异或运算以后再存入文件。具体变换是这样进行的:将原文的ASCII码每8个分为一组,顺次进行,直到文件结束;每一组的8个位依次对应密码的8个位上的值进行异或操作,若某密码位没有设密码,其值为0。 2.解除密码的方法 如果不慎遗忘了密码,可用下面的方法来获取或取消密码。 (1)将8个密码位上的值进行移位取反操作,获取密码字符的ASCII码,然后查ASCII码表,得到密码字符。设编辑文件WPSJM.TXT输入了密码ABC,用DEBUG查取密码的方法如下: C>DEBUG WPSJM.TXT -D3D0,3EF 486E:03D0 00 00 00 00 00 00 00 00-00 1A 0C 00 00 EB DB CB .............. -Q 从显示结果可知,有三个密码,其密码值为EBH、DBH、CBH,转换为二进制数并取反后为00010100、00100100、00110100,高低四位交换后为01000001、010000010、01000011,由此可知三个密码是ABC。 (2)可以用各种程序设计语言编程序来获取或取消密码。取消密码不能仅仅将各密码位清0,必须先将文件中经过变换了的各个代码,分别与密码值作异或运算,还原成正确的ASCII码;然后将第一个密码位清0,因为WPS系统以0值作为密码的结束符,若第一个密码位为0,则系统认为文件没有设密码,调用时也不再要求输入密码。下面是DEBUG环境下用汇编语言写的一段解密程序。 C>DEBUG -A100 4885:0100 PUSH SI 4885:0101 MOV SI,0900 4885:0104 MOV BX,0000 4885:0107 MOV AH,[SI] 4885:0109 MOV AL,[BX+07DD] 4885:010D XOR AH,AL 4885:010F MOV [SI],AH 4885:0111 INC BX 4885:0112 INC SI 4885:0113 CMP BX,08 4885:0116 JNZ 011B 4885:0118 MOV BX,0000 4885:011B MOV AX,CX 4885:011D ADD AX,0500 4885:0120 CMP AX,SI 4885:0122 JNZ 0107 4885:0124 POP SI 4885:0125 XOR AX,AX 4885:0127 MOV [07DD],AX 4885:012A MOV BX,AX 4885:012C INT 3 -NWPSJM.COM -RCX CX 0000 :2D -W100 -Q 只要按如下步骤运行WPSJM.COM程序,便可取消WPS文件(以WPSJM.TXT为例)的密码: C>DEBUG WPSJM.COM -NWPSJM.TXT -L500 ;将欲解密的文件调入 -G=100,12C ;运行解密程序 W500 ;将解密后的文件存盘 -Q ;退出DEBUG 通过上述解密过程,便可在WPS下直接编辑被解密的文件了。该解密程序不仅对文件密码是正确的形式可解密,而且对由于误操作或其它原因产生的非正常密码也能取消。 (四)WPS的打印技巧 WPS提供了比较丰富的打印功能,如打印机选择、纸张选择、分栏打印等。本节介绍如何在WPS环境下获得比较理想的打印效果。 一、折页打印 在实际的公文处理中,经常碰到要把一篇文章分左右 折页打印输出(比如用蜡纸打印试卷、用宽行打印机输出文档以供保存等)的情况,WPS虽然没有直接提供折页打印的功能,但我们可以用下面介绍的一些方法实现折页打印。 1.利用块操作 先把一篇文章按一般方法编辑好,然后按如下步骤进行:(1)如果是D编辑就用CTRL+OR命令重新将右边界加大一倍再加上折页打印中间需留下的空位(N编辑不用此操作);(2)将光标移到文本行数的一半位置处,按CTRL+KB将其定义为块首,再将光标移到文本末尾(当最后一行未满时需用空格填满),按CTRL+KK定义为块尾;(3)按CTRL+KN将所定义的块转换为列方式;(4)输入CTRL+KV命令,将块移到右边与左边对齐;(5)把块移去之后留下空行删去。作此编辑后就可进行折页打印了。如果打印的纸张有特殊要求,一般可用自定义纸张解决。 这种方法的优点是打印速度快,但存在如下两点不足:(1)对不同字号的文稿要做适当的调整,否则会出现字符错位现象;(2)以后要对文稿再做编辑时不太方便。 2.利用分栏打印 在文稿编排好后,利用CTRL+PS开关命令设定分栏,选择分2栏、栏的深度是每页深度的两倍,再利用CTRL+OZ命令选择适当的栏空音作为栏距,这样也就可以进行折页打印了。这种方法的优点是可以对不同字号的文稿进行打印,不足之处在于速度稍慢,且分栏时栏深度要和打印纸的尺寸相吻合,才能达到预定效果。不过这可以在文本末尾加若干空行,使得最后一页在打印满左边时再打印右边。 二、打印纸规格的设置和选择 1.修改WPS 2.1版的打印纸张规格 修改WPS2.1版字处理系统提供了8种打印输出格式,但其中的A3、A4、A5、B4、B5复印纸格式不太符合我国目前通行的公文纸规格。虽然提供了“自定义纸张”格式,但每次使用均需修改打印状态表,定义纸张的高和宽,所以不很方便。我们这里介绍修改纸张规格的方法,以满足实际需要。 (1)原WPS 2.1版的打印纸规格和尺寸(每毫米mm约7.2点) ┏━━━━━┯━━━━━┯━━━━━┯━━━━━━━┯━━━━━━━┓ ┃规格 │高×宽点数│16进制数 │M1724输出尺寸 │L1600K输出尺寸┃ ┠─────┼─────┼─────┼───────┼───────┨ ┃宽行打印纸│1776×2448│06F0,0990│240×385mm │245×340mm ┃ ┃窄行打印纸│1776×1170│06F0,0492│240×210mm │245×165mm ┃ ┃A3复印纸 │2424×1800│0978,0708│340×280mm │340×250mm ┃ ┃A4复印纸 │1776×1170│06F0,0492│240×210mm │245×165mm ┃ ┃A5复印纸 │1146×948 │047A,03B4│140×150mm │160×130mm ┃ ┃B4复印纸 │2316×1170│090C,0492│325×210mm │325×165mm ┃ ┃B5复印纸 │1326×1080│052E,0438│170×170mm │185×150mm ┃ ┗━━━━━┷━━━━━┷━━━━━┷━━━━━━━┷━━━━━━━┛ (2)修改规格 目前国内使用的公文纸(或蜡纸)规格为8开或16开,8开纸尺寸为:270×400mm,蜡纸有效范围217.5×320mm;16开纸尺寸为:200×270mm,蜡纸有效范围217.5×150mm;对照上表将原A3复印纸改为“8开横放”,B4复印纸改为“8开竖放”,B5复印纸改为“16开竖放”,A5复印纸改为“16开横放”。对照表如下: ┏━━━━┯━━━━━┯━━━━━┯━━━━━━━┯━━━━━━━┓ ┃原规格 │修改后规格│修改后尺寸│M1724输出尺寸 │L1600K输出尺寸┃ ┠────┼─────┼─────┼───────┼───────┨ ┃A3复印纸│8开横放 │200×300mm│05F4,0771 │05A0,0870 ┃ ┃B4复印纸│8开竖放 │300×200mm│086F,04F6 │0870,05a0 ┃ ┃B5复印纸│16开竖放 │200×150mm│05F4,03B8 │05A0,0438 ┃ ┃A5复印纸│16开横放 │150×200mm│04B6,04F6 │0438,05A0 ┃ ┗━━━━┷━━━━━┷━━━━━┷━━━━━━━┷━━━━━━━┛ 知道了上面的数值后,就可利用DEBUG或PCTOOLS等工具软件来修改WPS.EXE了。用DEBUG进行修改的具体操作步骤如下: C〉REN WPS.EXE W1 C〉DEBUG W1 -R AX=0000 BX=0001 CX=2095 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000 DX=4BE6 ES=4BE6 SS=4BE6 CS=4BE6 IP=0100 NV UP EI PL NZ NA PO NC  4BE6:0100 4D DEC BP 将DS的值加1000H,即4BE6H+1000H=5BE6H,以此作为段地址,WPS 2.1的打印纸张规格参数存放在15D5开始的连续单元中,每一种规格纸张的参数占四个字节,其中每两个十六进制位代码分别表示一种纸张规格的高和宽,低位字节在前。 -D5BE6:15D0 15FF 5BE6:15D0 20 10 14 08 0A F0 06 90-09 F0 06 92 04 78 09 08 5BE6:15E0 07 F0 06 92 04 7A 04 B4-03 0C 09 92 04 2E 05 38 5BE6:15F0 04 1B 2A 74 33 30 30 52-1B 26 6C 31 32 44 1B 2A -E5BE6:15DD A0 05 70 08 -E5BE6:15E9 70 08 A0 05 -E5BE6:15ED A0 05 38 04 -E5BE6:15E5 38 04 A0 05 -W -Q C〉REN W1 WPS.EXE 这样就得到了新的纸张尺寸。 (3)修改打印状态表中的提示信息 打印状态表中关于打印纸规格的提示信息连续存放在0122H开始的单元中,可用DEBUG将原“A3复印纸”等信息修改为“8开横放”等信息,步骤如下: PS.CFG文件中,各种规格的纸张名称对应的十六进制代码如下表: ┏━━━━━━┯━━━━━━━━━━━━┓ ┃纸张名称 │对应的十六进制代码 ┃ ┠──────┼────────────┨ ┃宽行打印纸 │BFED D0D0 B4F2 D3A1 D6BD┃ ┃A5复印纸 │A3C1 A3B5 B8B4 D3A1 D6BD┃ ┃窄行打印纸 │D5AD D0D0 B4F2 D3A1 D6BD┃ ┃B4复印纸 │A3C2 A3B4 B8B4 D3A1 D6BD┃ ┃A3复印纸 │A3C1 A3B3 B8B4 D3A1 D6BD┃ ┃B5复印纸 │A3C2 A3B5 B8B4 D3A1 D6BD┃ ┃A4复印纸 │A3C1 A3B4 B8B4 D3A1 D6BD┃ ┃自定义纸张 │D7D4 B6A8 D2E5 D6BD D5C5┃ ┗━━━━━━┷━━━━━━━━━━━━┛ C〉DEBUG WPS.CFG -D200 4BE6:0200 20 20 BF ED D0 D0 B4 F2-D3 A1 D6 BD D5 AD D0 D0 4BE6:0210 B4 F2 D3 A1 D6 BD A3 C1-A3 B3 B8 B4 D3 A1 D6 BD 4BE6:0220 A3 C1 A3 B4 B8 B4 D3 A1 D6 BD A3 C1 A3 B5 B8 B4 4BE6:0230 D3 A1 D6 BD A3 C2 A3 B4-B8 B4 D3 A1 D6 BD A3 C2 4BE6:0240 A3 B5 B8 B4 D3 A1 D6 BD-D7 D4 B6 A8 D2 E5 D6 BD 4BE6:0250 D5 C5 -E216 “8开横放” -E22A “16开横放” -E234 “8开竖放” -E23E “16开竖放” -W -Q 至此全部修改完成,此后启用WPS打印选择纸张规格时,原出现“A3复印纸”等信息的地方会出现“8开横放”等信息,且可按相应规格打印。下面给出各种规格尺寸所对应的16进制数,根据此表可以任意修改打印输出的格式。 ┏━━━┯━━━┯━━━┯━━━┯━━━┯━━━┯━━━┯━━━┯━━━┓ ┃尺寸 │M1724 │L1600K│尺寸 │M1724 │L1600K│尺寸 │M1724 │L1600K┃ ┠───┼───┼───┼───┼───┼───┼───┼───┼───┨ ┃150mm │03B8 │0438 │220mm │0575 │0630 │290mm │0731 │0828 ┃ ┃160mm │03F8 │0480 │230mm │05B4 │0678 │300mm │0771 │0870 ┃ ┃170mm │0437 │04C8 │240mm │05F4 │06C0 │310mm │07B0 │08B8 ┃ ┃180mm │0477 │0510 │250mm │0633 │0708 │320mm │07F0 │0900 ┃ ┃190mm │04B6 │055B │260mm │0673 │0750 │330mm │082F │0948 ┃ ┃200mm │04F6 │05A0 │270mm │06B2 │0798 │340mm │086F │0990 ┃ ┃210mm │0535 │05E8 │280mm │06F2 │07E0 │ │ │ ┃ ┗━━━┷━━━┷━━━┷━━━┷━━━┷━━━┷━━━┷━━━┷━━━┛ 注意: ①设M1724打印机纸高的有效范围时必须另加40mm。例如:16开竖放纸,要求其输出内容打印在高为200mm范围内,则修改时高的值应取240mm的值05F4,而不是04F6。其余类推。 ②不同版本的WPS的打印纸张规格参数在WPS.EXE文件中存放的位置可能有所不同。 2.自定义纸张高和宽的定义 在实际应用中,经常要在非标准规格的纸上输出,如打印表格、论文、通知等,这就必须用到自定义纸张。自定义纸张的关键是如何确定纸的有效宽度和纸的有效高度。纸的有效高度由一页纸打印多少行数、字型、字号、行间距等因素决定,如一页纸欲打印40行,为标准5号字(字体大小24×24点阵),行间距为15点,则纸的有效高度可定义为(24+15)*40=1560点;纸的有效宽度由一行纸打印多少字数、字型、字号、字间距等因素决定,如一行欲打印40个字,为标准5号字,字间距为1,则纸的有效宽度可定义为(24+1)*40+60=1060点,其中60点是左边界空出的点数。当然,一页纸打印多少行、一行打印多少个汉字还决定于纸的实际尺寸。 Super-CCDOS 5.10状态下,若是在自定义纸张情况,在回答“以上参数需要修改吗?”时,哪怕不要修改任何打印参数也必须以“Y”回答,然后再按ESC键退出,否则会出现WPS内部错误。Super-CCDOS 6.0F则不会出现这种情况。 三、模拟显示内存不够时的处理 在进行模拟显示或打印输出时常出现内存不够的现象,而使模拟显示或打印无法执行,在SPDOS 6.0F版本更是如此。下面介绍几种解决办法: 1.卸去外接输入模块,如WBX.COM等。具体方法为:(1)按CTRL+F10键进入系统功能菜单;(2)将光标移到输入法中要卸去的输入法上面;(3)按ALT+ESC键。这样就将外接输入模块卸去了。 在SPDOS 6.0F版本下,还可卸去拼音输入法而保留五笔字型输入法,这就是在SPDOS启动文件后加带/N参数: SPDOS /V/N 卸去外接输入模块后,就可进行模拟显示或打印了。 2.将五笔字型输入模块装在高内存块,可以用命令LH WBX实现之,这要求设备配置文件CONFIG.SYS安装了扩展内存管理驱动程序,即有命令行:DEVICE=HIMEM.SYS。 3.在SPDOS 6.0F情况,可用SPDOS 5.0的WBX.COM替代6.0F的WBX.COM,因为SPDOS 5.0的WBX.COM所占内存空间要小些。但SPDOS 5.0的WBX.COM不能直接用于SPDOS 6.0,需作如下修改方可使用: C〉DEBUG WBX.COM -S0 FFFF 3B 06 E6 B4 75 F5 7F1C:BAAC 7F1C:C7EC -EBAAC 3A 26 E7 BA EB 00 -EC7EC 3A 26 E7 BA EB 00 -W Writing 0BA4F byte -Q 四、利用WPS打印高级语言程序 WPS字体多样、大小无级变化、各种修饰和控制齐全,可以打印出令人比较满意的文档来,但美中不足的是,它缺乏数据处理功能(WPS 3.0F已有数据纵向求和功能),使得许多报表无法自动计算、输出,数据的输入也比较麻烦,且容易出错。FoxBASE+等高级语言不仅具有强大的数据处理能力,而且输出格式可由程序员任意设计。遗憾的是,输出的字体及字型受汉字系统打印驱动程序的限制,没有WPS那样美观,且没有模拟显示功能。若能将FoxBASE等高级语言的打印输出转换成WPS的文本文件,从而使WPS与FoxBASE等高级语言各取其长,互补其短,相得益彰,获得理想的输出效果。 要达到上述目的,关键是要获取WPS控制符的ASCII码,这可以用DEBUG或PCTOOLS等工具软件阅读WPS文件来查取;然后在FoxBASE等高级语言程序中利用相应控制符输出数据文件,利用WPS打印该数据文件即可。 1.WPS控制符的ASCII码值 WPS控制符均由两个ASCII码组成,第二码的值在128~225之间。下面列出部分控制符的ASCII码值: (1)字体控制符的第一码为145,第二码如下: ┏━━┯━━━┯━━┯━━┓ ┃宋体│仿宋体│楷体│黑体┃ ┠──┼───┼──┼──┨ ┃128 │ 129 │ 130│131 ┃ ┗━━┷━━━┷━━┷━━┛ (2)字型号的第一码为146,第二码如下: ┏━━━┯━━┯━━━┯━━━┯━━┯━━┯━━┯━━┯━━┓ ┃ │ 0 │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 ┃ ┠───┼──┼───┼───┼──┼──┼──┼──┼──┨ ┃标准型│ 128│ 129 │ 130 │ 131│ 132│133 │134 │135 ┃ ┃长 型 │ 136│ 137 │ 138 │ 139│ 140│141 │142 │143 ┃ ┃扁 型 │ 144│ 145 │ 146 │ 147│ 148│149 │150 │151 ┃ ┃自定义│ 152│ 153 │ 154 │ 155│ 156│157 │158 │159 ┃ ┗━━━┷━━┷━━━┷━━━┷━━┷━━┷━━┷━━┷━━┛ (3)特大型字的第一码为147,第二码为n+126(其中2≤n≤120,4×n表示该字的点阵数) (4)统一型的第一码为156~159,第二码如下: ┏━━━━━┯━━┯━━┯━━┯━━┯━━┯━━┯━━┯━━┓ ┃ 8×n │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 ┃ ┠──┬──┼──┼──┼──┼──┼──┼──┼──┼──┨ ┃1 │ │128 │129 │130 │131 │132 │133 │134 │135 ┃ ┃2 │ 156│136 │137 │138 │139 │140 │141 │142 │143 ┃ ┃… │ │ … │ … │ … │ … │ … │ … │… │ … ┃ ┠──┼──┼──┼──┼──┼──┼──┼──┼──┼──┨ ┃17│ │128 │129 │130 │131 │132 │133 │134 │135 ┃ ┃… │ 157│ … │ … │ … │ … │ … │ … │… │… ┃ ┠──┼──┼──┼──┼──┼──┼──┼──┼──┼──┨ ┃33 │ │128 │129 │130 │131 │132 │133 │134 │135 ┃ ┃… │ 158│ … │ … │… │ … │ … │… │… │… ┃ ┠──┼──┼──┼──┼──┼──┼──┼──┼──┼──┨ ┃49 │ │128 │129 │130 │131 │132 │133 │134 │135 ┃ ┃… │ 159│ … │ … │… │ … │… │ … │… │… ┃ ┃60 │ │216 │217 │218 │219 │220 │221 │222 │223 ┃ ┗━━┷━━┷━━┷━━┷━━┷━━┷━━┷━━┷━━┷━━┛ 其中子菜单项中1-8分别表示统一型高度子菜单的代号,如1表示宽度×1/3,8×n项中的1-60乘以8后,分别表示统一型字的宽度。 (5)字符升高的第一码为152,第二码为升高的点数+191(其中-63≤升高的点数≤64); (6)字符后退的第一码为151,第二码为后退字符数+128(其中0≤后退字符数≤127); (7)字间距的第一码为153,第二码为字间距点数+191(其中-63≤字间距点数≤64); (8)行间距的第一码为155,第二码行间距点数+128(其中0≤行间距点数≤127); (9)换页控制符的第一码为12,第二码为10; (10)居中控制符的第一码为148,第二码为157。 2.数据文件向WPS文件的转换 实现高级语言的数据或数据文件向WPS文件的转换,首先必须解决如何将数据(连同控制符、制表符等)打印输出到文本文件。FoxBASE的SET PRINT TO 〈文件名〉命令比较好地解决了这个问题。对于其它高级语言的数据或数据文件,可以用写文件命令解决这一问题。 例如要将“南方财经大学八月份工资明细表”以黑体标准2号字打印输出。我们可以用FoxBASE的命令文件SCWPS.PRG将“南方财经大学八月份工资明细表”输出到WPS的文书文件FOXWPS.TXT中。程序清单如下: SET TALK OFF SET PRINT ON SET DEVICE TO PRINT SET PRINT TO FOXWPS.TXT @PRO(),PCOL() SAY CHR(145)+CHR(131) &&将字体设置为黑体 @PRO(),PCOL() SAY CHR(146)+CHR(130) &&将字体设置为2号标准字 @PRO(),PCOL() SAY “南方财经大学八月份工资明细表” SET PRINT OFF SET DEVICE TO SCREEN 然后将文件FOXWPS.TXT用WPS的打印功能输出即可。 将高级语言的数据输出到WPS文件,对提高报表的美观性,解决WPS编辑过程中繁琐复杂的数据输入和机械重复地编辑同一类报表,都有着极其重要的作用。 五、使WPS系统具有块打印功能 许多编辑工具都提供了块打印功能,WPS尽管块操作功能很强,但缺少块打印功能,若用户要打印正在编辑文章的某一块时,就很不方便。我们可以利用块写命令将定义的块输出到打印机设备文件LTP1或PRN,实现块打印功能。其具体做法是:(1)定义块:(2)发CTRL+KW命令;(3)用PRN或LPT1回答文件名;由于PRN或LPT1是MS DOS系统中已存在的设备文件名,所以系统将提示“文件已存在,覆盖它(Y/N〉?”,回答Y或y,所定义的块就会在打印机上打印出来。有一点需说明,该方法对WPS系统的所有控制符均不起作用。 六、在最小配置下打印繁体字 在Super-CCDOS 5.10最小配置下只有一个复合字库,但它能通过CTRL+F5繁体字/简体字的显示转换,而且通过适当设置还可以打印繁体字,具体设置方法为: 1.按CTRL+F5进入繁体字显示方式; 2.装入16点阵打印驱动程序: C〉PRT16 则屏幕显示: 中文高级打印系统安装程序 版本5.1 香港金山公司,Supersoft有限公司 1991年1月 选择以下打印机类型: 1__OKI_8320,OKI_5320系列打印机 2__M1570,M1570SC打印机 3__BrotherM2024,M1724打印机 4__Epson,Nec系列,AR_3240打印机 5__ToshibaTH-3070及兼容3070系列打印机 6__NK-3824打印机 7__AR-2463打印机 8__CitizenCKP-5240打印机 9__其他24针打印机 ESC__退出 选择:4 设使用的打印机是LQ-1600K的话,键入4(回车),然后系统提示输入驱动程序名,设输入LQ1600K.COM: 打印驱动程序名称[PRTDRV.COM]:LQ1600K.COM C〉LQ1600K 此时在各种编辑软件下,可打印输出繁体字。也可在DOS下用COPY或TYPE命令打印出繁体字。如欲恢复打印简化字,按下CTRL+F5键即可;再按一次CTRL+F5又可以打印繁体字。 (五)恢复内存中的WPS文件 在WPS的使用过程中,特别是自定义纸张而没有进入参数修改的情况,时常出现这样一种现象:正在输入或编辑文本时,莫名其妙地退出了编辑系统,屏幕上显示“WPS内部错误地址如下:”信息,接着下面显示各寄存器的地址。使辛辛苦苦的一大段操作付诸东流。尤其是在输入和编辑好一篇文章后,文件内容尚未存盘,进行模拟显示或打印时,出现上述现象。如果不能恢复文件要重新输入编辑一遍,这实在是一件令人扫兴的事。而且有时一篇文章是随想随输入的,再重新输入是很难达到原来风貌的。这里介绍在出现上述错误时,如何恢复文件、避免损失的方法。 一、从内存恢复 当非正常退出编辑系统后,尚未存盘的文件内容仍在内存,偏移地址为C990H(WPS 2.1版本时,对其它版本,可用查找命令进行查找)。我们可以用DEBUG或PCTOOLS等工具软件将内存中的文件内容写到磁盘上去。下面介绍用DEBUG恢复的方法。 1.当意外情况出现时,屏幕显示: WPS内部错误,错误地址如下: AX=2829 BX=0018 CX=0000 DX=0800 SP=01F6 BP=0000 SI=803D DI=0000 DS=5C0B ES=5C0B SS=62A6 CX=42D1 IP=CF69 NV UP EI PL NZ AC PE NC 由于机型不同,或加载的各种程序不同,各寄存器的内容有可能不一样,这是无关紧要的。 2.这时不要进行任何操作,记下DS寄存器的值。 3.运行DEBUG程序,来恢复内存中文件的内容。 C〉DEBUG -R 进入DEBUG后,各寄存器的值 AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=486E ES=486E SS=486E CX=486E IP=0100 NV UP EI PL NZ NA PO NC 486E:0100 36 SS: -RDS ;修改DS寄器的内容 DS 486E :5C0B -DDS:C990 ;显示丢失在内存中的文本内容 5C0B:C990 9B 94 99 C0 94 9D 91 83-92 83 BC C6 CB E3 D6 D0 5C0B:C9A0 D0 C4 B9 A4 D7 F7 C8 CB-D4 B1 B5 C4 B8 DA CE BB 5C0B:C9B0 D6 B0 D4 F0 BA CD B9 DC C0 ED CC F5 C0 DF 92 85 5C0B:C9C0 91 80 0D 0A 0D 0A 20 20-20 20 BC C6 CB E3 D6 D0 5C0B:C9D0 D0 C4 B0 FC C0 A8 BC C6-CB E3 BB FA B7 BF BA CD 5C0B:C9E0 B5 E7 D7 D3 B5 E7 B9 A4-CA B5 D1 E9 CA D2 A3 AC 5C0B:C9F0 B3 D0 B5 A3 C8 AB D4 BA-CA A6 C9 FA B5 C4 BD CC 5C0B:CA00 D1 A7 BA CD BF C6 D1 D0-B5 C4 C9 CF BB FA C8 CE -SDS:C990 FFFF 1A:查找文件结束符 5COB:E951 ;查找到第一个文件结束符 5C0B:E953 (如果没有找到文件结束符,则在DS+1000H:0 FFFFH范围内继续查找) -HE951 C990 ;计算文件长度 B2E1 1FC1 -NHFWJ.TXT ;给出恢复文件名 -RCX ;修改CX寄存器的内容 CX 0000 :1FC1 ;给出文件长度 RBX ;修改BX寄存器的内容 BX 0000 :0 -WDS:C990 ;将内存DS:C990处的1FC1H个字节写到文件HFWJ.TXT中 Writing 1FC1 byte -Q 4.至此,内存的内容恢复完毕,写在磁盘文件HFWJ.TXT中,可以使用WPS继续编辑。 必须提起注意的是,丢失在内存的文本的起始地址不一定是DS:C990,因机器而异,但每一种机器的该地址是固定的,我们可以用搜索方法来确定这一地址;(1)在WPS下任意编辑一个简单的文件;(2)在自定义纸张情况下不修改打印状态表而进行模拟显示;(3)按CTRL+C键中断出现“WPS内部错误,错误地址如下:”信息,(4)搜索原在WPS下所编辑文件中的一个字符串。例如,编辑了一个文件,开始的六个字符为“ABCDEF”,模拟显示且中断,会出现WPS内部错误,错误地址如下: AX=2829 BX=0018 CX=0000 DX=0800 SP=01F6 BP=0000 SI=803D DI=0000 DS=5C0B ES=5C0B SS=62A6 CS=42DI IP=CF69 NV UP EI PL NZ AC PE NC 进入DEBUG搜索“ABCDEF”: C〉DEBUG -RDS DS 486E :5C0B -SDS:0 FFFF “ABCDEF” 5C0B:C990 不同的机器,可能不是C990,而是别的值,这就是丢失在内存中的文本的起始地址。 二、从后备文件恢复 WPS在编辑文件时产生一个后备文件.BAK,在模拟显示或打印时,生成后备文件.%A%和.%B%,可以将这些文件拷贝或改名,然后用WPS继续编辑。 (六) 其它实用技巧 一、鼠标驱动程序的正确配置 在安装了鼠标驱动程序后,WPS编辑时可用鼠标进行菜单选择,加快操作速度。但是,若鼠标驱动程序安装不正确,会导致运行WPS时,WPS主菜单的边框及文件选择框不见了;退出WPS系统时,整个屏幕一片灰白,并伪死机。原因是系统配置文件中的鼠标驱动程序与WPS系统有冲突。有如下两种解决办法: 1.系统配置文件中的鼠标驱动程序应该用WPS系统自带的鼠标驱动程序MOUSE.SYS(其长度为13973字节),或MOUSE1.COM,则系统工作正常。 2.修改WPS.EXE程序。在WPS中是通过中断33H来实现对鼠标控制的,在AX寄存器中设置不同的值即可实现鼠标的检测、设置、显示等功能。在WPS.EXE中,对鼠标进行了多次检测。在首次检测中,可以让系统检测不出鼠标的存在,即造成没有鼠标的假象,在以后的检测中再承认鼠标,从而使鼠标共存。第一处发出33H中断的地方便是一个鼠标检测部分,只要将这个中断代码改为一个字节的返回指令(十六进制代码C3)即可。作此修改后,若不安装鼠标驱动程序,系统仍能正常运行。修改方法如下: C〉REN WPS.EXE WPS C〉DEBUG WPS -E1BB1 C3 -W -Q C〉REN WPS WPS.EXE 二、如何排除WPS的“伪死机”现象 “伪死机”表示机器没有真正死机,只是屏幕不能显示任何信息而无法继续编辑,如果此时按正常退出WPS的过程去操作,即按CTRL+KD或CTRL+KQ,然后按X退出主菜单,只要再按任意键屏幕就会有信息出来,并且与未发生死机时的正常退出完全相同,若按的是CTRL+DK键,则“伪死机”前所输入的内容并未丢失,已经存盘。 产生这种“伪死机”现象的原因是主机板上CMOS中的Screen Saver项设置不当而造成的,当该项的值为10Min、30Min或1Hours时,则使用WPS时每隔10分钟、30分钟或1小时就会出现“伪死机”现象,当该项设置为Disabled时,就排除了这种“伪死机”现象。 三、用小字库支持SPDOS 5.10 SPDOS 5.10将16点阵显示字库、24点阵及40点阵打印字库合并为XSDOS.LPH(所以SPDOS 5.10又称为Liuph_DOS 5.10),避免了字库切换,提高了查找速度,但也给一些有特殊需要的用户带来了不便。字库长度达4129424字节,需将其全部装入C盘根目录下,WPS才能运行。而目前许多用户(特别是家庭)购置微机但未配打印机,只希望装入16点阵显示字库,以满足文本编辑时显示的要求,在需要打印时再将编辑好的文件拿到配有打印机的微机上打印输出,有的用户配置的是带有硬字库的打印机。在这两种情况下,装入全部字库就浪 费了大量的硬盘空间,若能像2.13H汉字系统那样将显示字库分离出来,在没配打印机的微机或打印机带有硬字库时,仅装入显示字库,就既能利用WPS强大的输入编辑功能,又节省了硬盘空间。2.13H的16点阵显示字库HZK16(261696字节)与XSDOS.LPH的16点阵显示字不同,不能直接代换。区别在于HZK16在10-15区设置了非标准字模,而XSDOS.LPH没有这几个区。将HZK16在10-15区设置的非标准字模剔除,就能将HZK16改名为XSDOS.LPH支持Liuph-DOS 5.10了。具体操作如下: C〉DEBUG HZK16 ;DEBUG.COM和HZK16必须都在C盘上 -M6AC0 4780 ;将HZK16的16区开始的字模上移六个区 -RCX CX FE40 :B7C0 ;将六个区所占的长度减去 NC:\XSDOS.LPH ;将HZK16的内容输出到C:\XSDOS.LPH文件 -W100 Writing B7C0 bytes -Q 改造后的XSDOS.LPH才244688字节,可装入一张低密软盘,而原字库需要4张高密软盘。利用改造的字库,使用WPS编辑文本文件时,除不能模拟显示和打印输出外,其余操作完全不变,编好的文本文件无需作任何处理即可到配有打印机的微机上模拟显示和打印输出。 四、使用SPDOS 6.0F的五笔字型输入模块 SPDOS 6.0F系统与SPDOS 5.10比较有许多优越的地方,特别是对使用广泛的五笔字型输入模块作了较大的改进,把老版本中的许多空余编码利用起来,缩短了部分汉字的码长,减少了重码,扩充了词组量,且将词组从WBX.COM中分离出来,单独放在WBX.OVL文件中,更允许如同拼音输入那样自定义词组编码,增强了输入的灵活性。 SPDOS 6.0F是基于汉卡而设计的,没有汉卡的机器,正常运行该系统需要提供16MB的硬盘空间,且系统运行需要的内存空间也高达400多K,因此对于低配置的用户就难以使用,只好仍用SPDOS 5.10。当然,可能有些用户也习惯SPDOS 5.10,不愿意换,毕竟两个系统之间还存在着一些差别。那么,我们能否在SPDOS 5.10系统下使用SPDOS 6.0F的五笔字型输入模块,提高输入的效率呢?答案是肯定的,只要对SPDOS 6.0F的五笔字型输入模块WBX.COM作如下修改就行了: C〉COPY A:WBX.COM WB6.COM (将SPDOS 6.0F的WBX.COM拷贝成WB6.COM) C〉DEBUG WB6.COM -EB1E3 486E:B1E3 36.35 (修改版本识别码) -EB012 486E:B012 00.8E FF.C3 (修改入口地址) -EAFF1 486E:AFF1 75.90 F5.90 (修改版本校验后的转移指令) -W Writing B234 bytes -Q 修改后,可根据需要安装原5.10下的或6.0F的五笔字型输入模块。在系统安装文件中用WBX可装入SPDOS 5.10下的五笔字型输入模块,用命令WB6可装入SPDOS 6.0F下的五笔字型输入模块(此时要把WBX.OVL也拷贝到硬盘)。装入6.0F的五笔输入模块后,许多在5.10下没有的常用词组都可用词组法输入了,例如:工具、全部、代码、编码、功能、产生、缩短,词组、拼音、格式、版本、配置、单独、安装、按照、版本、轻而易举、脚踏实地等;还有些词组发生了变化,如原在5.10下的词组招待、揭示等变成了执行、提示;重码字减少了,原在5.10下帛与制重码,现帛的码是rmh,制的码是rmhj,原来重码的衡、稀,现稀的码是tqd、衡的码是tqdh。比较起来,确实方便了不少。不过,此时内存要多开销100K字节左右,若将其装入上端内存则不会多占用常规内存。 五、如何正确运行SPDOS 6.0F 1.使用内存不够的解决办法。在SPDOS 6.0F的应用过程中,经常出现模拟显示和打印时内存不够的现象,可以采用删去或更名一些暂时不用的模块或程序减少内存驻留文件占用的空间的方法解决这个问题。如习惯于用五笔字型的用户可以不装拼音输入法,习惯用拼音的用户可卸掉五笔字型输入法模块。 取消拼音输入法的操作是将PINYIN.MB删掉或换名,并修改SPDOS.COM文件: C〉DEBUG SPDOS.COM -EF9B4 72 15 -W -Q 以后若需要使用拼音输入法时,将PINYIN.MB文件再拷贝回来即可,不需再对SPDOS作任何修改,或者使用SPDOS 5.10版本的拼音输入法模块PY.COM,随时可以调用,十分方便。 如果用户加载了其他的TSR程序,内存仍然可能不够使用,则还可以取消WBX.COM模块。也可以用SPDOS 5.10的WBX.COM替换6.0F中的WBX.COM,当然亦需对WBX.COM文件作如下修改: C〉DEBUG WBX.COM -EBAB0 90 90 -W -Q 经过修改后,SPDOS 5.10的WBX.COM可在SPDOS 6.0F下正常使用,这样又可为SPDOS节约60多K内存,一般不会再出现内存不够的情况了。 2.SPDOS 6.0F与EMM386.EXE的地址冲突问题。如果在DOS 5.0或6.0操作系统下,加载了EMM386.EXE管理程序,就能将那些占用大量内存的外部输入法模块如WBX等装入UMB上端内存中,为SPDOS节省出大量的常规内存,但可惜的是SPDOS 6.0F与EMM386.EXE在扩展内存的地址上有冲突,加载了EMM386.EXE程序,运行SPDOS就死机,解决的办法是将SPDOS中直接调用BIOS例程的指令改为通过中断调用: C〉DEBUG SPDOS.COM -E1A9E 90 CD 15 90 90 -E1B20 90 CD 15 90 90 -EF927 90 CD 15 90 90 -EFC62 90 CD 15 90 90 -W -Q 修改之后,SPDOS即可在EMM386下运行通过,用户可将WBX.COM等输入法模块装入EMM386程序所提供的上端内存中,为WPS节省出更多的内存空间,实在是一举两得。但是以后WPS在模拟显示和打印矢量字体时(隶体/魏碑等),仍然会出现死机现象,这是因为SPOV1.COM模块与EMM386发生地址冲突所致,解决的办法是将SPOV1.COM删除(或改名),不让WPS使用SPOV1.COM模块,这样做的缺点是牺牲了打印矢量字库的功能。若需要打印矢量字模时,可将SPOV1.COM拷贝回来,并去掉EMM386.EXE程序后再运行SPDOS 6.0F。