本发明属于计算机汉字信息处理技术及其设备领域。 它的目的是利用本方法所构成的终端机,能够在完全不对主机的硬件、软件作任何修改的情况下,与各种类型的西文计算机联接,使系统具有处理汉字信息的能力,且不受系统软件增加或版本更新的限制。终端机本身仍保持与西文终端相同的处理效率,相同的操作方式(除汉字输入方法与西文字输入方法不同外,无附加的操作指令),以及与之相仿的硬件规模。
一、现有技术
目前,使西文计算机具备汉字信息处理能力,一般采取两种方法。
方法一:修改原系统软件
由于软件本身固有的复杂性、精确性,以及生产厂家并不提供修改所必须的资料,对大、中型机的软件进行修改是不可能的。即使对微小型机,也只能针对少数机种的某些软件版本一个一个地修改,远远不能满足当今世界软件不断增加和版本迅速更新情况。
方法二:配备汉字终端(一般称为中西文终端)
目前国内外研制和生产的中西文终端,基本上是从西文终端改造而来,其结构和性能并不完全适合于中西文信息处理的要求。
1、汉字机内码
二字节:国标汉字交换码高位置1。
多字节:若干汉字标识符加国标汉字交换码。
某些计算机系统中,字节高位被用作奇偶校验位,二字节的汉字机内码无法识别。
多字节中的汉字标识符往往与实际软件的功能码或所使用的特定符号发生冲突。
因此,这些机内码的使用范围受到局限,只能在少数机种中使用。
2、汉字库
一般按使用频度分为二级或三级。使用频度高的存于内存,其余存于外存。
这样,必须在内存开僻字库缓冲区和形成一套相应的管理程序,特别是,从外存读取字库点阵时间开销很大,影响显示速度。
3、CPU和CRTC对刷新存贮器的竞争控制
一般有两种切换方式:
1)CPU优先于CRTC
当CPU连续写入数据时,会出现显示屏幕闪烁现象。
2)CPU在CRT回扫期间操作
对写入速度限制很严,实现困难。
4、系统打印
绝大多数与中西文终端联接的打印机不具备系统打印功能,即不能独立于显示终端执行主机地打印命令(如CD-902A:北京电子显示设备厂生产)。
有的虽然可以系统打印,却不能实现与显示终端并行操作,就是说打印机的工作要受显示终端的制约。它不是主机的独立外设,因而是不完全的系统打印(如GK-86A:广东省科学院实验工厂生产)。
有的在终端之外通过增配打印控制器来实现系统打印(如CT-100:香港运科国际有限公司生产,HZ-8401A:常州电子计算机厂生产)。
5、仿真措施
现有终端都采取了许多措施来仿真西文终端,但都不完善。其突出问题是仿真功能不全,在编辑方面,不能进行汉字的全型处理,即不能做到删除文字时,一次删除完整的一个汉字;移动光标时,一次移过完整的一个汉字,常常在屏幕上显示残留半个汉字的情况和移动两次或更多次光标才能跳过一个汉字的情况。
因此,现行国内外研制的中西文终端各自只在一个局部小范围中使用-不是所有软件,更不是所有机种,其使用方式和工作效率与西文终端差别较大,给用户使用带来很多的不便。
二、本发明内容
1、采用字母、数字混合三字节汉字机内码
其形式是:字母-数字-字母或数字
这种以字母起头的字母数字串能为各种高级语言编译系统和应用软件系统直接接受(见钟耀坤:“汉字机内码的表达与中西文兼容计算机系统”,《北京大学学报》,自然科学版,1985年第二期)。
它共有9360种组合,即可表示9,000多个汉字和图形符号〔图1〕。
用各种输入方法输入的汉字变换成相应的三字节机内码与西文字一起送主机。主机处理后送回终端的信息可能是全汉字的,或全西文的,或汉字和西文混合的,但都是以西文的ASCII码形式出现。它们经本终端中西文识别后就可显示和打印中西文。
由于汉字机内码形式上与用户通常在源程序中使用的西文定义及系统关键字有明显的区别,且有很强的规律性,极易识别和转换。
因此,这种机内码适应面广,可用于各种类型的计算机。
2、对国际一、二级硬字库全部直接寻址扫描
如图2所示,256K的EPROM字库〔2-1〕被作为内存贮器的一部分,置于CPU的直接控制之下。刷新存贮器〔1L,1H,2L,2H〕提供16位的字库地址。字库读出的点阵直接进入移位寄存器〔2-3〕,经显示属性控制器〔2-4〕后送CRT显示〔VID〕,省去了一般终端分级存贮字库所必须的显示缓冲区及其管理的空间和时间开销,大大提高了显示速度。
3、对刷新存贮器的交叉存取
把时钟的前半周期和后半周期分别作为CPU的操作周期和CRTC的操作周期,从而解决了CPU与CRTC对刷新存贮器的控制竞争,省去了一整套再生逻辑,既提高了各自的处理效率,又简化了软件、硬件设计。
4、系统打印
把原接于主机的打印端口〔3-5〕的针式打印机〔3-3〕改接到本终端〔3-4〕的打印端口〔3-7〕上,打印机就可利用显示终端的汉字资源,成为一台仍然由主机控制的中西文打印机。从主机送来的打印信息与本显示终端同主机交换的信息在终端机内实行分时操作。这样,在本显示终端工作的同时,由本终端或其它终端(包括西文终端)发出的打印指令都可驱动本打印机,并可与显示终端同时工作。
5、仿真措施
本终端除了在功能上保持与西文终端一致外,在操作上也做到了一致。特别是对汉字的全型处理,使在行编辑和全屏幕编辑中,无论增、删、改操作还是光标移动等操作,一个汉字完全等价于一个西文字。
以上列举本发明的各个方面,均明显地有别于和优于现有中西文终端。
与主机交换和在主机中处理的汉字机内码实质上是ASCII码,因此,主机对汉字的处理与西文完全一样。
对包含国标一、二级7,000多字符的字库采取直接寻址扫描方式后,其结构、工作方式和效率与西文终端中的字库相同,只不过汉字库容量比西文字库大得多。
刷新存贮器交叉存取技术的采用既园满解决了CPU与CRTC对它的控制竞争问题,又为对字库直接寻址扫描及时地提供了16位的地址准备,它与直接寻址扫描技术的结合使字符显示有极高的效率和质量。
字符显示的高效率又为系统打印与显示终端的分时操作提供了前提。
此外,本终端还采取了若干不同于现有终端的仿真措施。
这些技术相互有机结合,使得本终端既适应了西文计算机的技术要求,又满足了中西文用户的使用要求。
用本终端与主机联接成的计算机系统,站在主机角度往外看,本终端可以看成是一台与之配套的普通的西文终端;站在本终端角度往里看,主机可以看成是一台专为处理中西文信息设计的计算机。三、技术关键
1、字母、数字混合三字节机内码的编码
该混合三码的编码在国际交换码表的基础上进行,其中区位号均用十六进制数表示。码表见图1。例:
汉字 区号②-第1字节① 位号④-第2字节③-第3字节⑤ 机内码
年 44 U 6A 3 1 U31
月 54 K 42 4 X K4X
日 48 Y 55 2 G Y2G
第二字节为0的机内码共有936个编码,未收入表中,用来表示用户选用的字符、数字、图形和其它特殊符号。区号78~7D,位号7F-8C可用于国际一、二级汉字外用户选用的汉字。
国标交换码(二字节)转换为汉字机内码(三字节ASCII码)算法如下:
令S1=〔(区号-30H)÷26〕,S3=〔位号-21H)÷36〕,
S2={(区号-30H)÷26},S4={(位号-21H)÷36}。
设机内码三字节为X1X2X3,则
X1=S2+41H,
X2=(3S1+S3+1)+30H,
其中:〔〕为取整数,{}为取余数,
H表示十六进制数,未注H数字为十进制数。
下同。
汉字机内码转换为国际交换码的算法如下:
令r1=〔(X2-30H-1)÷3〕,
r2=X1-41H,
r3={(X2-30H-1)÷3},
设国际交换码二字节为Y1Y2(Y1为区号,Y2为位号)
则 Y1=r3+r1×26+30H,
Y2=r4+r3×36+21H。
2、对硬字库直接寻址扫描
对国际一、二级共7,000多字符16×16点阵的硬字库全部直接寻址扫描,具体做法是把字库〔2-1〕作为内存的一部分,刷新存贮器〔1L,1H,2L,2H〕提供二字节的字库地址,从字库读出的点阵直接进入移位寄存器〔2-3〕经显示属性控制器〔2-4〕后送CRT显示〔VID〕,如图2所示。
由于8位微处理器的数据是以字节为单位进行处理的,不能直接提供二字节的地址码。解决这一矛盾的关键是结构一个不规则刷新存贮器(上、下文提及的本终端的刷新存贮器均系指这种不规则刷新存贮器)。这种存贮器,从CPU角度看,是按8位组织的,即每一个CPU写周期只对其中8位进行操作,先后写入待显示字符地址码的高8位到体1和低8位到体2;而从CRTC角度看,它是按16位组织的,即每一个CRTC读周期,同时对体1和体2两个8位进行操作,读出字符的2字节地址码。
3、对刷新存贮器的交叉存取
实现交叉存取的基本条件是要选用一个时钟周期即为一个机器周期的CPU(例如MC68B09E)和一个时钟周期产生一个字地址的CRTC(例如MC68B45)。CRTC使用CPU的时钟,以保证定时同步。
CPU和CRTC分别在时钟的前半周期和后半周期控制刷新存贮器,就是说,它们都必须在半个时钟周期内完成读/写操作。采用传统的逻辑门电路设计,由于受各级门延迟时间影响,很难保证时序的准确控制和数据、地址线的正确切换。本终端用微码控制器[2-8]代替逻辑门电路,即把微码固化在PROM中,用其输出作为刷新存贮器的片选信号,从而园满解决了CPU和CRTC对刷新存贮器的控制竞争问题。
PROM内容如下:
地址 微码 地址 微码
0000 7C 1000 78
0001 7D 1001 79
0010 7A 1010 78
0011 7B 1011 79
0100 F7 1100 78
0101 EF 1101 79
0110 DF 1110 78
0111 BF 1111 79
其中地址0000~0111由CPU提供,0100时选中数据片,0101~0111备用;地址1000~1111由CRTC提供。
微码的含义如下:
根据微码,在CPU半周期中,只对刷新存贮器的体1或体2中的低32K或高32K的片子操作(即7C选中体1低32K,7D选中体1高32K,7A选中体2低32K,7B选中体2高32K),每次写入8位数据;在CRTC半周期中,刷新存贮器体1和体2的低32K或高32K片子被选中(即78选中体1和体2的低32K,79选中体1和体2的高32K),每次读出16位数据。
4、系统打印
本终端设有:
1)系统打印接口电路,由异步通讯接口适配器、TTL/EIA电平转换器和EAI/TTL电平转换器组成。异步通讯接口适配器是可编程的。
2)CENTRONICS打印机接口电路,由并行接口适配器和传输驱动器组成。并行接口适配器是可编程的。
3)设有打印输入缓冲区和输出缓冲区,分别存放从主机送来的打印字符代码和送打印机的点阵信息。
把原联接主机打印机端口〔3-5〕电缆改接至本终端系统打印接口〔3-6〕,打印机接至本终端CENTRONICS打印接口〔3-7〕,该打印机就可实现中西文系统打印,并与显示终端共享汉字资源,见图3(a)、图3(b)。
本终端接受并处理从主机来的打印字符代码信息中断和从打印机来的请求传送点阵信息和打印控制码中断。
从主机来的中断处理:打印代码信息存放在打印输入缓冲区。如果需要实行XON/XOFF传输控制,由当缓冲区剩余空间降到XOFF指示位置时,向主机发送XOFF控制码。
从打印机来的中断处理:若判断打印输出缓冲区为非空,向打印机传送一字节数据,并发出选通信号STB。
为加快处理速度,中断处理采用非嵌套方式。
打印中西文处理:打印信息可能是西文的、中文的或中西文混合的。因此,必须对打印输入缓冲区的字符串进行中西文字符识别。
区别西文和汉字按以下规则进行。首先,规定汉字与汉字之间可以有空隔,也可以没有空隔;汉字与西文之间至少有一个空隔作为识别分隔符(可作为识别分隔符的还可以是单引号、双引号、逗号等,视系统实际情况而定)。两个识别分隔符之间为一识别单位。当且仅当其间字符个数为3的倍数,且每三个字符中又满足第一个为字母,第二个为数字,第三个为字母或数学时,就认为是汉字机内码,按三、1、节中的转换算法转换为对应的汉字交换码,再转换成字库地址码,从汉字库〔2-1〕中取出点阵。否则,就认为是西文字符,从西文字库〔2-7〕中取出点阵。点阵信息经字形转置、字体变换及各种打印控制命令处理后,送至打印输出缓冲区保存,等待打印机来的中断处理。
以上处理与显示终端实行分时操作,从而保证打印机和显示终端既分别为主机的独立外设,又共享字库资源。
5、仿真措施
不同类型的主机有不同的控制功能码,通讯链路层的功能也不尽相同。通过查阅技术说明书或现场检测得到后,针对不同机器编制少量程序就可以去适应它。不涉及主机内的系统软件结构,也不必修改本终端的绝大部分程序。
汉字的全型处理是以中西文字符识别为基础的。由于本终端采用的汉字机内码有极强的规律性,很容易确定当前光标所在位置及其前后字符是汉字还是西文字。如果是汉字,增、删、改、光标移动等均以三个ASCII字符为单位进行,同时向主机发出相应的光标移动命令,否则,以一个ASCII字符为单位进行。这样,使本终端不仅在性能上,而且在操作方式上均与西文计算机兼容。
图1:
① 机内码第1字节, ② 国标交换码区号(十六进制数),
③ 机内码第2字节, ④ 国标交换码位号(十六进制数),
⑤ 机内码第3字节, ⑥ 区号78~7D,位号7F~8C可作为国际一、二级
汉字外用户选用汉字。
图2:
CPU MC68B09E CL 时钟
CRTC MC68B45 AB 地址总线
MUX 多路开关。 AB 数据总线
2-1 256KEPROM字库 HS 水平同步信号
2-2 字地址锁存器 VS 垂直同步信号
2-3 移位寄存器 VID 视频输出
2-4 显示属性控制器 1L 刷新存贮器32K*8,体1低32K
2-5 三态缓冲器 1H 刷新存贮器32K*8,体1高32K
2-6 三态缓冲器 2L 刷新存贮器32K*8,体2低32K
2-7 西文字库 2H 刷新存贮器32K*8,体2高32K
2-8 微码控制器
图3:
3-1 主机 3-5 主机打印端口
3-2 西文终端 3-6 系统打印接口
3-3 针式打印机 3-7 CENTRONICS打印接口
3-4 中西文终端