?? vesa編程介紹4.htm
字號:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0077)http://shaker.myrice.com/document/vesa-program-introduce/vesa-introduce-4.htm -->
<HTML><HEAD><TITLE>VESA編程介紹</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<META content="MSHTML 6.00.2800.1276" name=GENERATOR>
<META content=FrontPage.Editor.Document name=ProgId></HEAD>
<BODY>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%">===========================================================================================</P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
size=4>VESA <FONT lang=ZH-CN face=宋體>編程介紹
(4):</FONT></FONT><FONT face=宋體 size=3>擴展的VGA BIOS續</FONT><FONT size=3><FONT
face=宋體>及</FONT><FONT face=宋體>應用舉例</FONT></FONT><FONT
size=2> </FONT></P><FONT size=3><B>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%">---------------------------------------------------------------------------------</P></B></FONT>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
size=2>相關章節: </FONT> <FONT size=2> <A
href="http://shaker.myrice.com/document/vesa-program-introduce/vesa-introduce-1.htm">(1):
標準<FONT face="Times New Roman">VGA BIOS</FONT>及超級<FONT
face="Times New Roman">VGA</FONT>模式號</A> <A
href="http://shaker.myrice.com/document/vesa-program-introduce/vesa-introduce-2.htm"><FONT
face="Times New Roman">(2)</FONT>:CPU<FONT lang=ZH-CN>顯存控制</FONT></A><FONT
lang=ZH-CN> </FONT><A
href="http://shaker.myrice.com/document/vesa-program-introduce/vesa-introduce-3.htm"><FONT
lang=ZH-CN face="Times New Roman">(3)</FONT>:<FONT lang=ZH-CN>擴展的VGA
BIOS</FONT></A></FONT> <FONT lang=ZH-CN face="Times New Roman"
size=2> </FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
lang=ZH-CN face="Times New Roman"
size=2>
(4): </FONT><FONT lang=ZH-CN size=2>擴展的VGA BIOS</FONT><FONT lang=ZH-CN
face="Times New Roman" size=2>(</FONT><FONT lang=ZH-CN size=2>續</FONT><FONT
lang=ZH-CN face="Times New Roman" size=2>)</FONT><FONT lang=ZH-CN
size=2>及應用舉例</FONT></P><FONT size=3><B>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%">---------------------------------------------------------------------------------</P></B></FONT>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
face=宋體 size=2>6-6、04h-保存/恢復超級VGA狀態</FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
face=宋體 size=2>該函數提供了保存和恢復超級VGA顯示狀態的機制。該函數是標準VGA
BIOS函數1Ch(保存/恢復顯示狀態)的三個子函數的超集。完整的超級VGA狀態(除了顯存)可通過設置請求狀態遮蓋(于CX寄存器)為000Fh來保存和恢復。</FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
face=宋體 size=2>輸入:AH = 4Fh 超級VGA支持</FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
face=宋體 size=2>AL = 04h 保存/恢復超級VGA顯示狀態</FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
face=宋體 size=2>DL = 00h 返回保存/恢復狀態緩沖區大小</FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
face=宋體 size=2>CX = 請求狀態</FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
face=宋體 size=2>D0 = 保存/恢復顯示硬件狀態</FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
face=宋體 size=2>D1 = 保存/恢復顯示BIOS數據狀態</FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
face=宋體 size=2>D2 = 保存/恢復顯示DAC狀態</FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
face=宋體 size=2>D3 = 保存/恢復超級VGA狀態</FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
face=宋體 size=2>輸出:AX = 狀態</FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
face=宋體 size=2>BX = 狀態緩沖區內64字節塊的塊數</FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
face=宋體 size=2>(其它寄存器保持不變)</FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
face=宋體 size=2>輸入:AH = 4Fh 超級VGA支持</FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
face=宋體 size=2>AL = 04h 保存/恢復超級VGA顯示狀態</FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
face=宋體 size=2>DL = 01h 保存超級VGA狀態</FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
face=宋體 size=2>CX = 請求狀態(同上)</FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
face=宋體 size=2>ES:BX = 緩沖區指針</FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
face=宋體 size=2>輸出:AX = 狀態</FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
face=宋體 size=2>(其它寄存器保持不變)</FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
face=宋體 size=2>輸入:AH = 4Fh 超級VGA支持</FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
face=宋體 size=2>AL = 04h 保存/恢復超級VGA顯示狀態</FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
face=宋體 size=2>DL = 02h 恢復超級VGA狀態</FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
face=宋體 size=2>CX = 請求狀態(同上)</FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
face=宋體 size=2>ES:BX = 緩沖區指針</FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
face=宋體 size=2>輸出:AX = 狀態</FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
face=宋體 size=2>(其它寄存器保持不變)</FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
face=宋體 size=2>注意:</FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
face=宋體 size=2>基于對VGA環境完全兼容的目標,標準VGA BIOS函數1Ch(保存/恢復VGA狀態)沒有被擴展為保存超級VGA顯示狀態。VGA
BIOS兼容性需要函數1Ch返回一個有特定目錄的特定緩沖區大小,其目錄中以沒有空間放下超級VGA狀態了。</FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
face=宋體 size=2>6-7、05h-超級VGA視頻存儲器窗口控制(設置BANK)</FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
face=宋體 size=2>該函數設置或獲得指定窗口在顯存中的位置。函數允許對硬件頁寄存器的直接訪問。為了更好地使用此函數,程序應使用VESA
BIOS函數01h(返回超級VGA模式信息)來決定窗口的大小、位置和間隔尺寸。</FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
face=宋體 size=2>輸入:AH = 4Fh 超級VGA支持</FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
face=宋體 size=2>AL = 05h 超級VGA顯存窗口控制</FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
face=宋體 size=2>BH = 00h 選擇超級VGA顯存窗口</FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
face=宋體 size=2>BL = 窗口號</FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
face=宋體 size=2>0 = 窗口A</FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
face=宋體 size=2>1 = 窗口B</FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
face=宋體 size=2>DX = 窗口在顯存中的位置(<FONT color=#ff0000>以窗口間隔尺寸為單位</FONT>)</FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
face=宋體 size=2>輸出:AX = 狀態</FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
face=宋體 size=2>(見下面注釋)</FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
face=宋體 size=2>輸入:AH = 4Fh 超級VGA支持</FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
face=宋體 size=2>AL = 05h 超級VGA顯存窗口控制</FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
face=宋體 size=2>BH = 01h 返回超級VGA顯存窗口</FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
face=宋體 size=2>BL = 窗口號</FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
face=宋體 size=2>0 = 窗口A</FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
face=宋體 size=2>1 = 窗口B</FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
face=宋體 size=2><FONT lang=ZH-CN>輸出:</FONT>AX = <FONT
lang=ZH-CN>狀態</FONT></FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
face=宋體 size=2>DX = 窗口在顯存中的位置(<FONT color=#ff0000>以窗口間隔尺寸為單位</FONT>)</FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
face=宋體 size=2>(見如下注釋)</FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
face=宋體 size=2>注釋:</FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
face=宋體 size=2>該函數也能通過遠程調用由程序直接訪問。BIOS函數地址能通過VESA
BIOS函數01h(返回超級VGA信息)獲得。模式信息塊中包含有此函數地址。注意在每一次BIOS執行時函數地址都會不同,所以應在每次設置模式后獲取函數指針。</FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
face=宋體
size=2>如果是遠程調用的話,沒有狀態信息會被返回給程序。同時,AX和DX寄存器將遭破壞。因此,若AX、DX寄存器值需保留,應在遠程調用前事先作準備。</FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
face=宋體 size=2>若要作遠程調用,程序必須在BH、BL和DX(對于設置窗口)中裝入參數,但不必裝入AH和AL。</FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
face=宋體 size=2>6-8、06h-設置/獲取邏輯掃描線長度</FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
face=宋體
size=2>該函數設置或獲得邏輯掃描線長度。函數允許程序建立大于顯示區域的邏輯顯存緩沖區。然后函數07h就能允許程序設置開始顯示的位置。</FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
face=宋體 size=2>輸入:AH = 4Fh 超級VGA支持</FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
face=宋體 size=2>AL = 06h 邏輯掃描線長度</FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
face=宋體 size=2>BL = 00h 選擇掃描線長度</FONT></P>
<P
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -