微机BIOS与CRT显示卡

Author: Date: 1994-01-07

        随着计算机技术的高速发展,微机显示器(以下简称CRT)作为它的一个最主要的外部设备之一,正由单色、低分辨率向多色、高分辩发展。就目前我国的情况看,配置在微机上的CRT就有几十种。要使CRT能正常工作,每种CRT都必须配置相应的CRT卡。为了便于相同的系统或软件能在不同的机器上兼容性,通俗地讲:是指在一台机器上的软件或程序能在另一台机器上运行。要使程序或软件能在另一台机器上运行,除主机的软硬件(如操作系统、CPU等)必须兼容外,再就是CRT卡要兼容了。对于CRT卡的兼容问题,使用西文字符的国家不存在很大的困难。但对于我们使用汉字进行处理的国家,CRT兼容性就必须要首先考虑了。要使汉字在原西文(文本或图形)系统时,关键就是要使得系统能在CRT卡上正确显示。由于CRT卡是多种多样的,了解和掌握CRT卡的基本性能特性对于研究汉字支持环境(BIOS)及汉化软件是非常必要的。
        二、形形色色的CRT显示卡
        1.MDA(Monochrome Display Adapter)单色显示器
        MDA是最早与IBM PC配套的单色字符显示器,它只有文字显示模式,无图形和彩色功能。CRT控制器是MC6845。其主要性能指标与参数为:
        (1)屏幕格式:80×25
        (2)分辨率:720×350
        (3)字符点阵:9×14
        (4)显示缓冲区容量:4K
        (5)显示缓冲区首地址:B0000H
        (6)唯一的显示模式:7
        ⑦CRT行频:15.8KHZ;帧频:50HZ
        2.Hercules单色图形显示器(也称为大力神卡)
        这是美国Hercules Computer Technology公司开发的一种兼容显示器,它既与IBM的MDA单色字符显示器保持兼容,又扩充了单色图形显示功能。CRTC也是MC6845,由于兼容性好,又有图形功能,且成本很低,因此这是早期成功的一种兼容产品,有大量软件可运行。其主要性能为:
        (1)屏幕格式:80×25
        (2)分辨率:720×348
        (3)字符点阵:9×14
        (4)显示缓冲区容量:32K
        (5)显示缓冲区首地址:B0000H
        3.CGA(Color Graphics Adapter)彩色图形显示器
        CGA是最早与IBM PC机配套使用的彩色图形显示器,也是IBM公司个人计算机的第一个图形显示器标准,得到了广泛的使用。CRT控制器为MC6845。
        (1)屏幕格式:80×25或40×25
        (2)分辨率:字符方式下640×200;图形方式下320×200
        (3)彩色数:2-16种
        (4)字符点阵:8×8
        (5)显示缓冲区容量:16KB
        (6)显示缓冲区首址:B8000H
        (7)显示模式:字符模式(0-3);图形模式(4-6)
        (8)行频:15.8KHZ;帧频:60HZ
        4.Color 400彩色图形显示器
        Color 400是美国Sigma公司的产品,它与CGA保持兼容,但分辨率有所提高。CRTC为MC6845。其主要性能及参数指标如下:
        (1)屏幕格式:80×25,80×30或40×50
        (2)分辨率:640×400
        (3)彩色数:16种
        (4)字符点阵:8×16,8×14,8×8
        (5)显示缓冲区容量:128K
        (6)显示缓冲区首址:B8000H
        5.长城0520CH汉字图形显示器(也称014卡)
        GW0520CH显示器是我国早期自行开发的一种显示器,它与CGA保持兼容,但又扩充了汉字显示及高分辨率的图形模式(汉字与图形不能共存)。其主要参数指标为:
        (1)屏幕格式:西文80×28;中文40×28
        (2)分辨率:640×450
        (3)彩色数:8种
        (4)字符点阵:8×18(西文);16×18(中文)
        (5)三个位平面,每个位平面为48K
        (6)显示缓冲区首地址:基本区为B8000H;扩展区为C0000H;
        (7)行频:24.8hz;帧频:55.4hz
        6.EGA(Enhanccd Graphics Adapter)增强型彩色图形显示器
        EGA是IBM公司推出的第二种个人计算机图形显示器标准,它既兼容了CGA和MDA的全部功能,又增强了许多彩色图形显示能力。
        (1)显示模式:文字模式(Text Mode)和图形模式(Graphics Mode)。
        (2)彩色图形显示最高分辨率为640×350
        (3)显示彩色:单色(两种);多彩(可同时显示16种颜色,颜色总数为64种)。
        (4)显存容量为256KB,分成4个位平面,并有一张16×6位的彩色表。
        (5)具有多种不同分辨率:640×200,640×350,320×200。
        (6)字符点阵:8×8,8×14,9×14
        (7)其缓冲区首址根据显示模式的不同而各异:
        0到6模式:B8000H
        7模式:B0000H
        其它模式:A0000H
        (8)实现了硬件分屏。
        (9)行频:15.8KHZ或21.08KHZ;帧频:60HZ
        7.CEGA汉字图形显示器
        CEGA显示器是我国自行设计的彩色汉字图形显示器,在西文与图形显示方面,它与CGA保持完全兼容。在汉字显示方面它与原0520CH卡(014卡)基本保持兼容。CRTC采用6445。其主要性能指标:
        (1)显示模式:IBM方式和GW方式。共十种显示模式,其中两种为文字模式,八种为图形模式。
        (2)显示缓冲区:IBM和GW方式分别使用各自的显示存贮器。IBM显存共256K,分成4个平面,与EGA的所有存贮器结构完全相同。GW文字模式是CEGA卡特有的,GW显存共64K,分为基本区(首址为B8000)和扩展区(首址为B0000H)。图形方式下显示缓冲区首址为A0000H。
        (3)GW方式下字符显示页数为8页。
        (4)CGROM中固化有7445个16×16点阵的一、二级汉字和256个8×16点阵的ASCII字符。
        (5)BIOS固化在CEGA卡上的ROM里,称为GWBIOS。共32KB。在功能调用接口上,它与014卡上的BIOS和EGA上的BIOS基本保持了一致,并有所扩充。
        (6)实现了字符与图形共存,且互不干扰。
        8.VGA(Vidco Graphics Array)彩色显示器
        VGA是与PS/2一起推出的性能更好的彩色图形显示器。它与CGA、MDA、EGA均保持兼容,但在分辨率、颜色、容量、速度等性能上都有明显的改进和提高,成为个人计算机图形卡的一种标准。具体讲:显示容量为256_512KB。图形显示最大分辨率为640×480,显示颜色16种,颜色总数达262114种。另一种彩色显示模式分辨率为320×200,显示的颜色有256种,可用来显示高质量的色彩逼真、色调自然的有真实感的图形。在BIOS中有五种点阵的字库:8×8,8×14,9×14,8×16,9×16。其缓冲区首址根据显示模式的不同而各异:
        (1)0到6模式:B8000H
        (2)7模式:B0000H
        (3)其它模式:A0000H
        9.TVGA彩色图形显示器
        TVGA是美国Trident Microsystems公司开发的VGA兼容显示器,它与VGA在寄存器级上完全兼容,同时也有Hercules仿真模式。
        (1)存贮器容量为256_512KB;
        (2)分辨率有多种选择:640×350(256色),640×400(256色),640×480(256色),800×600(16色),1024×768(16色),所有不同颜色的总数为218。
        10.PGC(Professional Graphies controller)专业用图形显示器
        PGC是IBM公司开发的性能较好的一种图形显示器。它的主要特色是卡上有一个8088作为显示处理器使用,并有64KB固件,它能独立实现一组功能较强的二维和三维画图命令。其分辨率为640×480,有8个位平面,可同时显示256色。
        11.MCGA图形显示器
        MCGA是IBM为PS/2的25和30两种机型配套的图形显示器。它具有CGA兼容性,但与EGA不兼容。最高分辨率为640×480,可同时显示256种颜色,颜色总数为218种。
        12.IBM 8514/A图形显示器
        8514/A是IBM为PS/2的50、60和80等机型配套的高分辨率彩色显示器。当系统工作在VGA模式时,8514/A直接从VGA得到图象信号送监视器显示。
        当工作在8514/A的扩充模式时,则忽略VGA送来的信号。这样,8514/A不必重复VGA的硬件结构便可以与VGA保持完全兼容。
        13.ARTIST图形显示器
        ARTIST图形显示器系列产品具有屏幕大、分辨率高的优点,其主要性能为:
        (1)分辨率为1024×1024,4个位平面;
        (2)彩色表提供4096种颜色;
        (3)硬件产生基本作图能力;
        (4)图形字符及屏幕图形能放大到1-16倍;
        (5)实现硬件滚动;
        (6)三种工作方式:字符、图形、混合方式
        (7)显示存贮区容量:字符存贮区为8K×13位(字符模式);混合模式为64K。图形存贮区为256K。
        (8)具有分屏分区显示功能。
        (9)具有DMA传送能力。
        14.AGC图形显示器
        AGC图形显示器是美国IMAGRAPII公司开发的彩色图形显示器系列产品,主要性能:
        (1)分辨率高达1024×1024
        (2)颜色为256种,总的颜色数目可达2的24次方.
        (3)显存容量为1MB
        (4)CRTC采用日立公司的HD63484,画图及光栅操作速度相当快,可以支持许多CAD软件运行。
        (5)提供三种不同的方式:字符方式、图形方式、图形与字符混合方式。
        (6)显示缓冲区的地址为A0000H(1988年前的产品)或D0000H
        (7)图形功能非常丰富:提供许多基本的画图命令。
        三、汉字显示原理及BIOS支持环境
        1.汉字显示原理
        (1)西文字符显示
        在引进的大部分软件中,都是使用西文字符显示。其显示方式分为西文文本和西文图形。在西文文本方式下,它是以行和列进行显示,每屏共80×25×2=4000个字,有字符和属性两部分。其显示缓冲区的首地址根据CRT卡的不同而各异。单色CRT为B0000H,彩色CRT为B8000H。其显示过程为:
         ┏━━━━━┓ ┏━━━━┓ ┏━━━━━━━━━┓ ┏━━━━━━━┓
         ┃ASCII字符 ┃ ┃CRT字符 ┃ ┃通过BIOS或采用直接┃ ┃CRT显示缓冲区 ┃
         ┃ASCII属性 ┃→┃发生器  ┃→ ┃写屏取点阵和属性  ┃→┃ ┃
         ┗━━━━━┛ ┗━━━━┛ ┗━━━━━━━━━┛ ┗━━━━━━━┛
        在西文图形方式下,汉字显示是以图形符号出现的(一个汉字共32位),屏幕上的每一点可选择16种颜色,用4位表示。它们分别对应在显示缓冲区的4个位平面上。
        (2)汉字字符的显示
        为了便于我国使用国外软件,在西文系统的基础上,需要对原系统进行汉化工作。在汉化工作的早期都是使用的软汉字系统,但由于在实现该系统后,一方面对原软件的汉化工作量大;另一方面造成汉字显示速度明显下降。对西文软件不够兼容,造成许多软件不能在该汉字系统下使用。为了克服这些不足,后来我国自行生产了硬汉字系统和与之配套的CRT卡。
        A、软汉字库系统
        实现软汉字系统的方法有两种,一种是通过调用CCBIOS的INT 10H,在图形方式下仿真中西文兼容的文本显示环境,采用虚拟显示缓冲区的方法实现汉字的显示:
        ┏━━━━┓ ┏━━━━┓ ┏━━━━━━━━━━┓ ┏━━━━━━┓
        ┃汉字字符┃ ┃虚拟显示┃ ┃通过字模管理模块提取┃ ┃CRT图形显示 ┃
        ┃汉字属性┃→ ┃ 缓冲区 ┃→ ┃点阵和属性(从软字库)┃→ ┃   缓冲区   ┃
        ┗━━━━┛ ┗━━━━┛ ┗━━━━━━━━━━┛ ┗━━━━━━┛
         ↑
        调BIOS产生ASCII
        码汉字内码
        另一种是采用直接写屏的方式来实现汉字的显示。它是采用增加一种中文显示缓冲区的方法来完成汉字的显示。其主要方法是通过机器内部的时钟信号定期对CRT西文缓冲区和中文缓冲区进行判断比较,看两个缓冲区中的内容是否一样。根据结果进行相应的处理,如下所示:
        ┏━━━━┓ ┏━━━━┓   ┏━━━━━━━━━━┓ ┏━━━━━━┓
        ┃汉字字符┃ ┃虚拟显示┃   ┃通过字模管理模块提取┃ ┃CRT图形显示 ┃
        ┃汉字属性┃→ ┃ 缓冲区 ┃  ┌→┃点阵和属性(从软字库)┃→ ┃   缓冲区   ┃
        ┗━━━━┛ ┗━━━━┛  │  ┗━━━━━━━━━━┛ ┗━━━━━━┛
         ↑ │    │
        ASCII码 ┏━━━━┓  │
        汉字内码 ┃中文显示┃  │
         ┃ 缓冲区 ┃─┘
         ┗━━━━┛
        
        B、硬汉字库系统
        硬汉字库系统它是采用一种特殊的结构,把汉字字库固化在CRT卡中。实现汉字显示的方法同样有两种:即通过BIOS INT 10H和直接写屏的方式来实现汉字的显示。由于它能在文本方式下显示汉字,因此该汉字系统在处理汉字显示方面基本上达到了西文方式下的显示速度。为实现汉字系统在CRT上推广和应用起到了相当大的作用。目前采用硬汉字库系统的机器主要有两类:长城系列机和联想系列机。前者采用GWBIOS汉字支持环境实现在文本方式下的汉字显示,且该系统采用硬件线路实现字符和图形共存显示。但由于它所采用的扩展区地址经常变化(如长城0520CH为C0000H,长城286以上的机器为B0000H),从而造成许多软件不兼容。后者采用LX汉字支持环境实现在西文方式下的汉字显示,因而许多西文软件不需要修改就能在该环境下运行。
        2.汉字支持环境BIOS
        (1)CCBIOS
        这种基本输入、输出模块是在BIOS(西文)的基础上经过汉化后,工作在图形方式下。主要的操作系统有CCDOS、2.13系列、UCDOS及SPDOS等。由于它采用的是图形点阵汉字,因此只有图形CRT卡才能使用,像MDA这样无图形工作方式的CRT,就不能在CCRIOS上使用。该环境下的汉字显示方式是根据CRT的类型实现不同的显示。如长城0520A汉字显示的行数只有12行,而分辩率高的CRT(EGA、VGA)就能显示25、26行不等。
        (2)GWBIOS
        GWBIOS是“长城显示卡”提供的一种显示环境,它为系统提供了一个特定的中西文共存而互不相干扰的环境,从而能达到在西文方式下的效果。这些机型有014卡(长城0520C-H和部分早期生产的东海机)、CEGA/CVGA系列机(长城系列、东海系列、浪潮系列、双星系列)。
        由于GWBIOS系列采用了直接向屏幕显示缓冲区填写汉字内码的方法来实现汉字的显示,因而它能在西文方式下达到显示汉字的目的,从而与原西文方式保持了一致的效果。但在向显示缓冲区填写汉字时,由于它是采用的全角方式,所以除填写基本区,还要填写扩展区。通常基本区为B8000H,而扩展区根据CRT类型的不同而异。如014卡为C0000H,CEGA/CVGA为B0000。因而只要掌握了字符显示缓冲区首地址,就不难对原西文软件或系统进行汉化了。
        (3)联想汉卡下的汉字系统
        LX汉卡是一种与众不同的能在西文文本方式下显示汉字的系统。它在显示速度上和西文完全相同,即它采用硬件方式实现字符显示,并支持直接存取显示缓冲区操作,使得中西文保持高度兼容。它采用了以下方法实现西文文本方式下显示汉字:①它的屏幕显示格式仍为25×80。②支持直接存取显示缓冲区操作,只要把汉字的内码填入显示缓冲区后,由汉卡(硬件)直接显示汉字。由于它有这些特点,因此许多西文软件都能在LX下运行。这样大部分西文软件不需要汉化就能在LX环境下正常地显示。
        在图形功能方面,它模仿了CGA卡和EGA卡的方式,基本上重现了这些卡的图形功能。
        四、西文软件汉化的基本方法:
        由于我国使用的大部分软件或系统都是由国外引进的,为了在我国推广和使用这些软件或系统,首先需要解决的问题就必须对原版软件或系统进行汉化处理。这种汉化处理的关键所在就是必须针对不同的CRT进行相应的汉化工作。
        在汉化时一定仔细,否则就有可能达不到真正汉化的目的。本人在实际工作中就遇到许多软件汉化不够彻底,如现在比较流行的FOXBASE 2.1(汉化)中的SAVE SCREEN...(存/取屏幕)功能就不完善。经分析发现,该命令只能用存、取在西文文本方式下的显示缓冲区(直接存取)内容。而不能在汉字文本方式和图形方式(西文图形、汉字图形)下进行存、取操作。使用该命令时会造成屏幕混乱,从而达不到预期的目的。造成这种现象有以下几点:①我国在使用汉字时,其支持环境主要有两种,即CCBIOS(图形方式)和GWBIOS(字符方式或字符与图形共存方式)。而不是在西文文本方式下工作。②由于该命令采用了直接存取显屏操作,与汉字方式下的显示缓冲区的首地址不一样,所以造成屏幕显示混乱。其汉化过程主要有以下几个方面:
        (1)由于CRT有两种工作方式:即字符和图形方式。了解这两种工作方式对于汉化软件或系统是十分必要的。通常国外引进的软件大部分都工作在字符方式(西文状态),而汉字显示通常是工作于图形方式模式的(除经过特殊处理后的CGEA、CVGA、014卡)。因此汉化工作的第一步首先必须找到软件或程序有关CRT卡方式设置的程序段,根据CRT卡作字符或图形方式处理。
        (2)在国外引进的大部分软件中,为了提高字符的显示速度,采用了直接存取显示缓冲区的方法,来实现字符的显示。因此必须找到这段程序,作相应的处理。
        (3)关于BIOS的兼容性问题:目前我国汉化的BIOS有两种类型,一种是工作于图形方式下的CCDOS;另一种是工作于字符方式或字符与图形共存方式下的GWBIOS。
        (4)由于汉字采用的是全角字符方式,其高位字节为1。为此必须取消屏蔽高位的程序部分。
        (5)根据CRT类型修改其行数。
        (6)修改有关制表符。
        (7)对西文提示信息的修改。
        (8)对输入/输出数据项的处理(如数据库中的字段名、文件等)。
        (9)对图形字符的处理。
        