显卡的vbe标准

原作者地址

显卡的vbe标准

现在的显卡几乎全部支持VESA(电子视频标准协会)制定的标准,该标准的英文全称为VESA BIOS EXTENSION,简写VBE。这个标准经过1.0、1.1、1.2、2.0、2.0 Pro、3.0的升级,目前的最高版本是3.0。
制订这个标准的成员来自Intel、Matrox、Microsoft、Nvidia、Phillips、SciTech、Trident、ULSI等诸多公司或组织,也就是说它是被全面支持的,比如市面上几乎所有的PC机显卡都遵从这一标准;还有在当你安装LINUX或WINDOWS时或别的什么具备图形界面的操作系统时,如果系统无法识别你的显卡或找不到相应的驱动时,它们都会使用基于VBE标准的驱动以实现最基本的显示能力及硬件特性。所以不论你是底层编程的爱好者还是自动控制程序界面的实现者,甚至想在自己写的操作系统中加入对图形的支持,你都应该对VBE有所认识,并尽量地去掌握它,而关于VBE的文档都是英文的,虽然有人想汉化,但我目前还未找到一份完整的汉化版,因此在这个系列的文章中,我会用相当的篇幅来介绍VBE,并会结合NEO SDK的源代码以让你有更深的认识。
先让我们来预览一下VBE的特性:
l SVGA图形控制设备的标准应用程序接口
l 可选的操作系统保护模式图形接口(譬如可被用Windows,OS/2和UNIX等)
l 用以设置所支持显示模式刷新率的标准方案
l 支持液晶眼镜显示设备
l 识别视频产品和厂商的标准方法
l OEM厂商可通过第14H号子功能追加扩展功能
l 通过补充说明可扩展现有接口

好了,上面的特性能让你对VBE有一个大概的了解,现在切入正题,我们从设置显卡的显示模式开始。
在VBE标准中,设置显示模式是通过第02H号子功能实现的,为实现设置过程,我们要做如下步骤:

  1. 将寄存器AH设置为0x4F(VBE的功能入口),AL设置为0x02(子功能号),当然你也可以直接将0x4F02赋值给AX
  2. 然后将你要设置的显示模式的信息赋给寄存器BX。其中BX的第0位到第8位(以后简称为D0D8)是模式号(关于模式号见附表);D9D10保留置0;D11是刷新率标志位,为0时表示使用当前的默认刷新率,为1表示使用用户自定义的刷新率;D12-13也保留,置0即可;D14是显存寻址模式标志,为0表示使用窗口模式(也有译作换页模式但会与NEO中的概念冲突),否则使用线性模式,线性模式需要保护模式的支持(譬如通过DMPI支持);D15是清空显存标志,为0表示显示模式切换时清空显存原有内容,为1则保留;以上介绍的各个字节位初级应用只需要使用到D0~D8即模式号,其它的可以暂放一边
  3. 如果需要自定义显示的刷新率,就将指向CRTC结构的指针赋给ES:DI,否则跳过这一步(有关于CRTC结构的介绍由于篇幅问题请直接参阅VBE标准文档)
  4. 调用第10H号中断,你可以用库函数譬如int86(),也可以用内嵌汇编
    如果不出意外,你会发现显示模式已经被你设置了为你想要的了,当然也许会出错,错误的返回值你可以从寄存器AX中获得,AX中的值在VBE中被称为返回状态,除了32位保护模式接口的专有子功能,每个子功能在调用后都会往AX中返回一个状态值,它有以下的可能:
    AL == 4Fh:子功能被支持
    AL != 4Fh:子功能不被支持
    AH ==00h:功能调用成功
    AH ==01h:功能调用失败
    AH ==02h:子功能在当前的硬件设置中不被支持

下面给出一段NEO SDK中的代码用作示例:
/切换到指定图形模式/
r.x.ax = 0x4f02;
r.x.bx = mode;
int86(0x10, &r, &r);
if (r.x.ax != 0x4F) return FALSE; /切换失败/

模式

在这里插入图片描述
在这里插入图片描述
注:
A. 颜色数目一栏中的32K指32768;64K指65536;16.8M指16777216
B. 约定:在本系列之后的文档中,32K和64K被称为高彩色,16.8M被称为真彩色
C. 15位模式号为VBE标准模式号;7位模式号是OEM自定义的模式号,VBE只定义了一个模式的7位模式号,即102h模式,其对应的7位模式号为6Ah
如果显卡支持vbe,我们就应该切换到vga13显示模式下工作

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Windows 3.x 下少见的通用显示卡驱动,世所罕见,怀旧必须。 Windows 3.1 256 Color Display Driver Release Notes Copyright 1993 Microsoft Corporation -------------------------------------------------- This disk contains a new high-speed 256 color display driver for Windows 3.1 which supports most non-accelerated Super VGA display types. If you have a Video card other than what is listed below you may not want to use these drivers. For 800x600 256 colors and 1024x768 256 colorsresolutions you will need 1Mb of memory on you video card. You can install this driver by using Windows Setup to select one of the following display types: Super VGA 640x480 256 colors Super VGA 800x600 256 Large ; Large fonts Super VGA 800x600 256 Small ; Small fonts Super VGA 1024x768 256 Large ; Large fonts Super VGA 1024x768 256 Small ; Small fonts Displays supported by these selections include the following: ATI VGA series, including ATI VGA Wonder ATI VGA Wonder Plus ATI VGA Wonder 24XL Cirrus Logic VGA (6420, 5420 series) Oak Technology VGA (077 series) Paradise VGA, including Paradise VGA 1024 Paradise VGA Professional Trident VGA (8900C series) *, including Trident Impact Tseng VGA (ET4000 series) **, including: Boca VGA Cardinal VGA Diamond Speedstar series Everex Viewpoint series Metheus Premier VGA Orchid Prodesigner II Sigma VGA Legend STB Powergraph Video Seven VGA, including Video Seven FastWrite Video Seven 1024i Video Seven VRAM Video Seven VRAM II Western Digital VGA * NOTE: MS-DOS applications run on Trident adapters may not be restored correctly when switched back to full-screen mode from Windows. ** NOTE: MS-DOS applications run on some Tseng ET4000 adapters may not be restored correctly when switched back to full-screen mode from Windows. If this happens, use Windows Setup to select one of the ET4000 options. However, this may slow the operation of windowe

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值