extern int far-Cdecl AVGA256-driver-far[];
...
extern int far-Cdecl VESA256-driver-far[];
/* 支持的VGA集合 */
enum VGAs{
UnKnownVGA,
TridentVGA,
ParadiseVGA,
AheadVGA,
...
VesaVGA
};
/* 对应的BGI驱动程序名 */
unsigned char *Drivers[]={
"TVGA256",
"TVGA256",
"AVGA256",
...
"VESA256",
};
extern int DetectVGA(void);
/* 功 能:检测显示卡的型号
返回值:0-Unknowm1-Trident VGA2-Paradise VGA
...
x-不能检测出的VGA,但支持VESA
返回值同时写入全局变量vga-type */
extern int VesaFound(void);
/* 功 能:检测VESA BIOS的存在性
返 回:0-不支持VESA;
其它-VESA版本号(0x0102即1.02版);
返回值同时写入全程变量vesa-found. */
extern void InitVesa(void);
/* 功 能:初始化VESA.根据-vga-mode模式号换算成VESA的标准模式号填写页粒度(WinGranularity),页大小(WinSize),
和分页例程的入口地址(WinFuncPtr)
VESA的标准模式解释如下:
100h-640x400 256
101h-640x480 256
102h-800x600 16
103h-800x600 256
104h-1024x768 16
105h-1024x768 256 etc.
InitVesa供给InitVGA调用 */
extern void InitVGA(int mode);
/* 功 能:初始化显示系统(自动调用DetectVGA检测显示卡)
参 数:mode=TVGA320x200(0)
TVGA640x400(1)
TVGA640x480(2)
TVGA800x600(3)
TVGA1024x768(4)
返 回:InitVGA没有显式的返回值,但它初始化下列全程变量:
vga-mode,vga-width,vga-depth,vga-pages,PageSelect
必要时自动调用InitVesa
*/
extern int vga-type;
extern int vga-mode;
extern int vga-width;
extern int vga-depth;
extern int vga-pages;
extern int vga-pages;
extern char page-number;
extern int vesa-found;
...
程序3(初始化显示系统的程序片断):
...
int GraphDriver, GraphMode;
unsigned char *bgiDriver="PVGA256";
bgiDriver=Drivers[DetectVGA()];
GraphDriver=installuserdriver(bgiDriver,NULL);
GraphMode=TVGA800x600;
initgraph(&GraphDriver, &GraphMode," ");...
参考文献
1 来文占等编译.Super VGA高级编程指南.北京:北京科海培训中心,1991.5.
2 张一波编译.Super VGA与VESA编程指南.北京:海洋出版社,1992
本文关键字:程序设计 电脑-单片机-自动控制,电子学习 - 基础知识 - 电脑-单片机-自动控制
上一篇:八位无符号数乘法运算HDL实例