VESA編程介紹?? (1)標(biāo)準(zhǔn)VGA BIOS及超級(jí)VGA模式號(hào)
---------------------------------------------------------------------------------
相關(guān)章節(jié):??
(1): 標(biāo)準(zhǔn)VGA BIOS及超級(jí)VGA模式號(hào)
(2):CPU顯存控制???? ?
(3):擴(kuò)展的VGA BIOS
(4): 擴(kuò)展的VGA BIOS(續(xù))及應(yīng)用舉例
---------------------------------------------------------------------------------
目的:
為提供簡(jiǎn)單的軟件應(yīng)用可以操縱高級(jí)的VGA適配器的能力,而提出的超級(jí)視頻適配器的標(biāo)準(zhǔn)化公用軟件接口。
概述:
該標(biāo)準(zhǔn)提供一系列應(yīng)用程序能夠使用的函數(shù)集。
1、獲取某一指定超級(jí)VGA設(shè)備的兼容性和其獨(dú)有的特點(diǎn)。
2、用以控制諸如顯示方式、初始化和顯存訪問(wèn)等等硬件操作。
這些功能作為VGA BIOS視頻設(shè)備的擴(kuò)展而提供,由10h中斷訪問(wèn)。
目錄:
1、介紹
2、目標(biāo)和目的
2-1、視頻環(huán)境信息
2-2、編程支持
2-3、兼容性
2-4、標(biāo)準(zhǔn)的情況
3、標(biāo)準(zhǔn)VGA BIOS
4、超級(jí)VGA模式號(hào)
5、CPU顯存控制
5-1、硬件設(shè)計(jì)的考慮
5-1-1、受限于CPU 64K/128K的地址空間
5-1-2、跨越CPU顯存窗口界限
5-1-3、處理來(lái)自不同區(qū)域的數(shù)據(jù)
5-1-4、將來(lái)自不同窗口的數(shù)據(jù)結(jié)合
5-2、硬件窗口的不同類型
5-2-1、單窗口系統(tǒng)
5-2-2、雙重窗口系統(tǒng)
6、擴(kuò)展的VGA BIOS
6-1、狀態(tài)信息
6-2、00h-返回超級(jí)VGA信息
6-3、01h-返回超級(jí)VGA模式信息
6-4、02h-設(shè)置超級(jí)VGA模式
6-5、03h-返回超級(jí)VGA模式
6-6、04h-保存/恢復(fù)超級(jí)VGA狀態(tài)
6-7、05h-超級(jí)VGA視頻存儲(chǔ)器窗口控制
6-8、06h-設(shè)置/獲取邏輯掃描線長(zhǎng)度
6-9、07h-設(shè)置/獲取顯示起點(diǎn)
6-10、08h-設(shè)置/獲取DAC調(diào)色板控制
7、應(yīng)用舉例
------------------------------------------------------------------------------------------
1、介紹
本文檔包含擴(kuò)展VGA視頻模式和功能的標(biāo)準(zhǔn)化接口的說(shuō)明書。該說(shuō)明書由以下結(jié)構(gòu)組成:為主要VESA委員會(huì)所認(rèn)可的標(biāo)準(zhǔn)擴(kuò)展視頻模式和功能以及非標(biāo)準(zhǔn)的視頻模式。從而使得一些獨(dú)立的VGA提供者能通過(guò)忽略對(duì)獨(dú)特的VGA硬件的復(fù)雜細(xì)節(jié)的認(rèn)識(shí),以一種統(tǒng)一的方式向應(yīng)用程序中添加擴(kuò)展VGA的使用。
該說(shuō)明書的主題是對(duì)擴(kuò)展VGA視頻模式和功能對(duì)于應(yīng)用軟件了解視頻模式的特性和操縱與視頻模式相關(guān)的擴(kuò)展存儲(chǔ)器的必要性作一個(gè)定義。
本文檔的閱讀者應(yīng)該已經(jīng)對(duì)于在硬件層進(jìn)行VGA編程和INTEL iAPX 實(shí)模式匯編語(yǔ)言有一定的了解。對(duì)于VGA編程不熟悉的讀者請(qǐng)?jiān)趪L試了解對(duì)于標(biāo)準(zhǔn)VGA擴(kuò)展之前先選擇閱讀大量現(xiàn)有的VGA編程教程。
2、目標(biāo)和目的
在PC圖象世界中,IBM VGA已經(jīng)成了事實(shí)上的標(biāo)準(zhǔn)。市場(chǎng)上現(xiàn)存的各種不同的VGA提供商都保證了與IBM VGA在BIOS和寄存器上的兼容。越來(lái)越多的VGA兼容產(chǎn)品形成了VGA的各種擴(kuò)展。這些擴(kuò)展有更高的分辨率、更多的色彩和一些圖象處理能力。強(qiáng)烈的競(jìng)爭(zhēng)提高了性價(jià)比,而受益的是最終用戶。
然而,對(duì)于那些意圖利用超級(jí)VGA環(huán)境的新優(yōu)點(diǎn)的軟件開發(fā)人員卻面臨著一些嚴(yán)重的問(wèn)題。由于沒(méi)有標(biāo)準(zhǔn)的硬件,他們不得不面對(duì)各不相同的超級(jí)VGA硬件結(jié)構(gòu)。缺乏通用的軟件接口,導(dǎo)致設(shè)計(jì)相關(guān)的軟件高昂的成本,而且在技術(shù)上也十分困難。除了OEM提供的VGA之外,幾乎沒(méi)有什么VGA產(chǎn)品的強(qiáng)大功能能被軟件所使用。
VESA VGA BIOS擴(kuò)展的出臺(tái)正是為了彌補(bǔ)這一缺陷。做為超級(jí)VGA圖形產(chǎn)品的通用軟件接口,其主要目的是使應(yīng)用軟件和系統(tǒng)軟件適應(yīng)和挖掘廣大的VGA擴(kuò)展中的豐富特性。
明確而言,VESA BIOS擴(kuò)展要解決以下問(wèn)題:
1、向應(yīng)用程序返回視頻環(huán)境信息。
2、幫助應(yīng)用程序?qū)τ布M(jìn)行初始化和編程。
2-1、視頻環(huán)境信息
如今,仍沒(méi)有標(biāo)準(zhǔn)的軟件機(jī)制能確定它在何種超級(jí)VGA硬件上運(yùn)行。只有通過(guò)OEM的產(chǎn)品特性才能知道該顯卡的存在。這通常通過(guò)讀取和測(cè)試每個(gè)OEM廠商特有的I/O端口來(lái)完成。如果不知道所處的硬件,很少的(如果有的話)底層硬件特性能夠被使用到。
VESA BIOS擴(kuò)展提供了一些函數(shù)來(lái)返回視頻環(huán)境的信息。這些函數(shù)返回諸如顯示方式的詳細(xì)資料等等的系統(tǒng)信息。函數(shù)00h返回普通系統(tǒng)級(jí)信息,包括一個(gè)OEM識(shí)別串。函數(shù)同時(shí)返回所支持的顯示方式的指針。函數(shù)01h能用來(lái)獲取每一種支持的顯示方式的詳細(xì)信息。函數(shù)03h返回當(dāng)前的顯示方式。
2-2、編程支持
由于不同的超級(jí)VGA產(chǎn)品有不同的硬件結(jié)構(gòu),軟件很難去適應(yīng)每一種環(huán)境。但是,既然它們都是基于VGA硬件結(jié)構(gòu)的,區(qū)別則主要在于顯示方式的初始化和內(nèi)存映射。結(jié)構(gòu)的其余部分通常是不被接觸的,包括I/O映射寄存器、CPU地址空間的視頻緩沖定位和DAC的位置及功能等。
VESA BIOS擴(kuò)展提供了一些針對(duì)不同超級(jí)VGA硬件設(shè)備的接口函數(shù)。其中最重要的是函數(shù)02h,設(shè)置超級(jí)VGA顯示方式。該函數(shù)將應(yīng)用程序從單調(diào)復(fù)雜的顯示方式設(shè)置中解脫出來(lái)。函數(shù)05h提供了針對(duì)下層內(nèi)存映射硬件的接口。函數(shù)04h能使應(yīng)用程序保存和恢復(fù)超級(jí)VGA狀態(tài)而不必了解任何實(shí)現(xiàn)細(xì)節(jié)。
2-3、兼容性
VESA BIOS擴(kuò)展的一個(gè)主要設(shè)計(jì)目的是確保對(duì)于標(biāo)準(zhǔn)VGA環(huán)境的最大程度的兼容。而不可 能是BIOS妥協(xié)性能來(lái)完成兼容。另一點(diǎn)是對(duì)現(xiàn)有的VGA BIOS做最小程度的修改。如同基于ROM的設(shè)備一樣,基于RAM的擴(kuò)展將是可能的。
2-4、標(biāo)準(zhǔn)的情況
VESA BIOS擴(kuò)展的目的是提供對(duì)擴(kuò)展VGA環(huán)境的支持。因而下層的硬件設(shè)備被假定為VGA。圖形軟件應(yīng)該向其驅(qū)動(dòng)標(biāo)準(zhǔn)VGA一樣來(lái)驅(qū)動(dòng)超級(jí)VGA:如,直接寫VGA幀緩存、操作圖形控制寄存器和直接設(shè)計(jì)調(diào)色板等等。硬件無(wú)須做重要的圖形處理。由于這個(gè)原因,VESA BIOS擴(kuò)展不提供任何圖形輸出函數(shù),如位塊傳送、畫線和畫圈等。
對(duì)VESA BIOS擴(kuò)展的函數(shù)約束是由于現(xiàn)存BIOS設(shè)備的ROM空間十分有限。
在VESA BIOS擴(kuò)展之外,還有對(duì)不同顯示器的操作和定時(shí)。這些東西在其它VESA論壇中涉及。VESA BIOS擴(kuò)展的目的是提供對(duì)超級(jí)VGA圖形模式的標(biāo)準(zhǔn)軟件接口,并不依賴顯示器和顯示器的定時(shí)問(wèn)題。
3、標(biāo)準(zhǔn)VGA BIOS
VESA BIOS擴(kuò)展的設(shè)計(jì)目標(biāo)是使之對(duì)標(biāo)準(zhǔn)VGA BIOS的影響最小。標(biāo)準(zhǔn)VGA BIOS的函數(shù)應(yīng)盡可能少的被修改。這是因?yàn)榭赡艽嬖赗OM擴(kuò)展。
但是,有兩個(gè)標(biāo)準(zhǔn)VGA BIOS函數(shù)受到VESA擴(kuò)展的影響。它們是函數(shù)00h(設(shè)置顯示方式)和函數(shù)0Fh(讀取當(dāng)前視頻狀態(tài))。使用VESA的程序不會(huì)通過(guò)VGA BIOS函數(shù)00h來(lái)設(shè)置顯示方式,同樣也不會(huì)使用函數(shù)0Fh。而是使用VESA函數(shù)02h(設(shè)置超級(jí)VGA模式)和03h(獲得超級(jí)VGA模式)。
為了使程序工作,VESA推薦將VESA BIOS擴(kuò)展的函數(shù)0Fh的返回值(由OEM決定)用VGA BIOS函數(shù)00h來(lái)重新初始化顯示方式。這樣,BIOS將有效地記錄下最近的超級(jí)VGA模式。
推薦(但并非命令)在超級(jí)VGA模式中支持輸出函數(shù)(如TTY-輸出、卷屏、畫點(diǎn)等等)。如果BIOS擴(kuò)展不支持這些函數(shù),模式屬性域(由VESA BIOS函數(shù)01h返回)的D2位(輸出函數(shù)支持)將被清除。
4、超級(jí)VGA模式號(hào)
標(biāo)準(zhǔn)VGA模式號(hào)有7位,目前范圍從00h到13h。OEM可以在14h-7Fh范圍內(nèi)定義擴(kuò)展顯示模式。80h-FFh范圍不能使用,因?yàn)閂GA BIOS函數(shù)00h(設(shè)置顯示方式)將第七位作為判斷是否清除顯存的標(biāo)志。
由于模式號(hào)7位的限制,VESA顯示模式號(hào)有15位寬。其數(shù)值通過(guò)BX寄存器傳送到VESA BIOS函數(shù)02h(設(shè)置超級(jí)VGA模式)來(lái)初始化超級(jí)VGA模式。
VESA模式號(hào)的格式如下:
D0-D8 模式號(hào)
如果D8為0 不是VESA定義的模式
如果D8為1 這是VESA定義的模式
D9-D14 VESA為今后的擴(kuò)展而保留(為0)
D15 保留(為0)
因此,VESA模式號(hào)從100h開始。這種編號(hào)方式實(shí)現(xiàn)地將標(biāo)準(zhǔn)VGA模式號(hào)和OEM模式號(hào)做為VESA模式號(hào)的一部分。這意味著普通的VGA顯示模式也能被VESA BIOS函數(shù)02h定義,即將模式號(hào)置入BL,而將高位的BH清除。OEM定義模式也可同樣地初始化。
例外,VESA定義了7位的模式號(hào),6Ah,來(lái)表示800x600,16色,4平面的顯示模式。相應(yīng)的15位模式號(hào)為102h。
以下是已經(jīng)定義了的VESA模式號(hào):
圖象 文本
15位模式號(hào) 7位模式號(hào) 分辨率 色彩 15位模式號(hào) 7位模式號(hào) 列數(shù) 行數(shù)
------------------------------------------------------------------------------------------
100h --- 640x400 256 108h --- 80 60
101h --- 640x480 256
109h --- 132 25
102h 6Ah 800x600 16 10Ah --- 132 43
103h --- 800x600 256 10Bh --- 132 50
10Ch --- 132 60
104h --- 1024x768 16
105h --- 1024x768 256
106h --- 1280x1024 16
107h --- 1280x1024 256
10Dh --- 320x200 32K 1:5:5:5
10Eh --- 320x200 64k 6:5:5
10Fh --- 320x200 16.8M 8:8:8
110h --- 640x480 32K 1:5:5:5
111h --- 640x480 64K 6:5:5
112h --- 640x480 16.5M 8:8:8
113h --- 800x600 32K 1:5:5:5
114h --- 800x600 64K 6:5:5
115h --- 800x600 16.5M 8:8:8
116h --- 1024x768 32K 1:5:5:5
117h --- 1024x768 64K 6:5:5
118h --- 1024x768 16.5M 8:8:8
119h --- 1280x1024 32K 1:5:5:5
11Ah --- 1280x1024 64K 6:5:5
11Bh --- 1280x1024 16.5M 8:8:8
11Ch --- 1600x1200 256
11Dh --- 1600x1200 32K 未檢驗(yàn)
11Eh --- 1600x1200 64K 未檢驗(yàn)
<End>