INT 10H 是由 BIOS 對螢幕及顯示器所提供的服務程式,而後倚天公司針對倚天中文提供了許多服務程式,這些服務程式也加掛在 INT 10H 內。使用 INT 10H 中斷服務程式時,先指定 AH 暫存器為下表編號其中之一,該編號表示欲呼叫的功用,而其他暫存器的詳細說明,參考表後文字,當一切設定好之後再呼叫 INT 10H。底下是它們的說明:
編號 | 功用 | 編號 | 功用 |
00 | 設定顯示模式 | 01 | 設定文字模式時游標大小 |
02 | 設定游標位置 | 03 | 讀取游標位置 |
04 | 讀取光筆位置 | 05 | 選擇顯示頁 |
06 | 向上捲動螢幕 | 07 | 向下捲動螢幕 |
08 | 讀取游標所在位置之字元及屬性 | 09 | 在游標所在位置寫入字元及屬性 |
0A | 在游標所在位置寫入一字元 | 0B | 設定調色盤 |
0C | 寫入一有顏色的點 | 0D | 讀取點 |
0E | 寫入字串 | 0F | 讀取模式狀態 |
註一。
註一的 16 色。呼叫此中斷時,先決定要設定背景色抑或調色盤,
- 要設定背景色時,則使 BH 為 0,再使 BL 之數值為 0 到 0fh 之間表示註一的 16 色之一。
- 要設定調色盤時,則使 BH 為 1。再設定 BL 為零或一表示選擇那一種調色盤。
背景色只有在前景色為 0 時才會顯現出來。
AH=0Ch/INT 10H 是在繪圖模式中印出一點 ( 也就是寫入點像,write graphics pixel ),而 AH=0DH/INT 10H 則是讀取點像 ( read graphics pixel )。
寫入時,要寫入位置 X 座標存於 CX 暫存器,Y 座標存於 DX 暫存器,顏色存於 AL 暫存器。和文字模式相同,螢光幕上的 Y 座標是最上面一列為零,越下面越大,X 座標則和數學的定義相同。CX、DX、AL 值之範圍與顯示模式有關:
顯示模式 | X 座標 | Y 座標 | 顏色 |
4 | 0~319 | 0~199 | 0、1 |
5 | 0~319 | 0~199 | 0~3 |
6 | 0~639 | 0~199 | 0、1 |
AH=0DH/INT 10H 則是讀取某一位置之點像,您必須指定 CX、DX,而 INT 10H 會傳回該位置點像之顏色。
這個副程式是使顯示器像打字機一樣的印出字元來,在前面用 AH=09H/INT 10H 和 AH=0AH/INT 10H 都可以在螢光幕上顯示字元,但是這兩奘方式顯示字元之後,游標位置並不移動,而 AH=0EH/INT 10H 則會使游標位置移動,每顯示一個字元,游標會往右移一格,假如已經到最右邊了,則游標會移到最左邊並移到下一列,假如已經移到最下面一列的最右邊,則螢幕會向上捲動。
AL 暫存器存要顯示的字元,BH 為目前的顯示頁,如果是在圖形模式,則 BH 須設為 0,假如是在圖形模式下,也可以設定 BL 來表示文字的顏色,文字模式下的 BL 則無功能。
這個服務程式是得到目前的顯示模式,呼叫前只需使 AH 設為 0fh,當由 INT 10H 返回時,顯示模式存於 AL 暫存器 ( 參考 AH=00H/INT 10H 的顯示模式表 ),目前的顯示頁存於 BH 暫存器,總字元行數存於 AH 暫存器。
註一: 所謂屬性是指字元的顏色、背景顏色、是否閃爍、有沒有底線等性質。在彩色顯示卡 ( CGA/EGA/VGA 等 ) 的文字模式中,顏色是用 4 個位元表示,故可以表現出 16 種顏色,如下表:
二進位數 | 顏色 | 例子 | 二進位數 | 顏色 | 例子 |
0000 | 黑色 | black | 1000 | 灰色 | gray |
0001 | 藍色 | blue | 1001 | 淡藍色 | light blue |
0010 | 綠色 | green | 1010 | 淡綠色 | light green |
0011 | 青色 | cyan | 1000 | 淡青色 | light cyan |
0100 | 紅色 | red | 1100 | 淡紅色 | light red |
0101 | 紫紅色 | magenta | 1101 | 淡紫紅色 | light magenta |
0110 | 棕色 | brown | 1110 | 黃色 | yellow |
0111 | 銀色 | light gray | 1111 | 白色 | white |
在彩色顯示器裏,如 CGA、EGA、VGA 等,常用一個位元組 ( 8 個位元 ) 來表示文字顏色和背景顏色,通常以第 0~3 位元表示文字本身顏色;第 4~6 位元表示背景顏色,背景顏色只有上表左欄的 8 種而已;第 7 個位元,表示是否閃爍,0 表示不閃爍,1 表示閃爍。
但是在單色顯示器裏,如 MDA 和 Hercules 卡中,這些顏色表並無意義,所以屬性解釋方式不同,請看下表:
數值 | 屬性 |
00H | 空白,不顯示任何資料 |
77H | 顯示白色方塊 |
07H | 正常的黑底白字 |
70H | 反白的白底黑字 |
01H | 加底線 |
BIOS 呼叫 INT 10H,AH=00H
設定螢幕影相模式
模式碼: 解析度 顏色數目 頁數 位址
BIOS 呼叫 INT 10H,AH=01H
設定游標形狀
註:正常: CH=0DH,CL=0EH
BIOS 呼叫 INT 10H,AH=02H
設定游標位置
BIOS 呼叫 INT 10H,AH=03H
取得游標位置
游標的 列 數 => (DH)
游標的 行 數 => (DL)
游標的啟始線 => (CH)
游標的終止線 => (CL)
註:正常: CH=0DH,CL=0EH
BIOS 呼叫 INT 10H,AH=05H
畫面頁區的號擇
INT 10h,AH=06H
把指定的視窗範圍上捲
顏色屬性: bh =b7 b6 b5 b4 b3 b2 b1 b0
bit0~2 :字體顏色 (0:黑,1:藍,2:綠,3:青,4:紅,5:紫,6:綜,7:白)
bit3 :字體亮度 (0:字體正常,1:字體高亮度)
bit4~6 :背景顏色 (0:黑,1:藍,2:綠,3:青,4:紅,5:紫,6:綜,7:白)
bit7 :字體閃爍 (0:不閃爍,1:字體閃爍)
INT 10h,AH=07H
把指定的視窗範圍下捲
顏色屬性: bh =b7b6b5b4b3b2b1b0
bit0~2 :字體顏色 (0:黑,1:藍,2:綠,3:青,4:紅,5:紫,6:綜,7:白)
bit3 :字體亮度 (0:字體正常,1:字體高亮度)
bit4~6 :背景顏色 (0:黑,1:藍,2:綠,3:青,4:紅,5:紫,6:綜,7:白)
bit7 :字體閃爍 (0:不閃爍,1:字
BIOS 呼叫 INT 10H,AH=08H
讀取游標所在位置的字元及屬性
字元 ascii => (AL)
字元的屬性 => (AH)
顏色屬性: ah =b7b6b5b4b3b2b1b0
bit0~2 :字體顏色 (0:黑,1:藍,2:綠,3:青,4:紅,5:紫,6:綜,7:白)
bit3 :字體亮度 (0:字體正常,1:字體高亮度)
bit4~6 :背景顏色 (0:黑,1:藍,2:綠,3:青,4:紅,5:紫,6:綜,7:白)
bit7 :字體閃爍 (0:不閃爍,1:字體閃爍)
BIOS 呼叫 INT 10H,AH=09H
寫入字元及屬性在游標所在位置,游標不動 (繪圖模式亦能使用)
顏色屬性: bl =b7b6b5b4b3b2b1b0
bit0~2 :字體顏色 (0:黑,1:藍,2:綠,3:青,4:紅,5:紫,6:綜,7:白)
bit3 :字體亮度 (0:字體正常,1:字體高亮度)
bit4~6 :背景顏色 (0:黑,1:藍,2:綠,3:青,4:紅,5:紫,6:綜,7:白)
bit7 :字體閃爍 (0:不閃爍,1:字體閃爍)
BIOS 呼叫 INT 10H,AH=0AH
寫入字元在游標所在位置,游標不動,屬性不變 (繪圖模式亦能使用)
└┘
┌┐
BIOS 呼叫 INT 10H,AH=0BH
設定文字模式(0~3)的邊框顏色 或 繪圖模式(4、5)的背景顏色
BIOS 呼叫 INT 10H,AH=0BH
設定繪圖模式(4、5)的調色盤
bit0 = 0 (黑、綠、紅、黃)
BIOS 呼叫 INT 10H,AH=0CH
在繪圖模式下畫一點
BIOS 呼叫 INT 10H,AH=0DH
在繪圖模式下讀點像值
像點的顏色值 => (AL)
BIOS 呼叫 INT 10H,AH=0EH
在文字模式 或 繪圖模式下顯示一字元,游標則右移一格
註:所謂 TTY 就是類似打字機輸出方式,每顯示一字元,游標則右移一格,
BIOS 呼叫 INT 10H,AH=0FH
取得螢幕影相模式
每行字數 => (AH)
模式號碼 => (AL)
使用頁碼 => (BH)
模式碼: 解析度 顏色數目 頁數 位址
頁 B8000H~BBF3FH
BIOS 呼叫 INT 10H,AX=1130H
讀取 VGA BIOS 中有關字形的資訊
取出的位址 => (ES:BP)
目前字形的高度 => (CX)
目前字形下螢幕列數-1 => (DL)
位址模式:00H:中斷 1FH 的位址
註:中斷向量 1fh 的值亦是指向 ascii 值大於 127 的字形表位址
BIOS 呼叫 INT 10H,AH=13H
顯示一列字串
寫入 AL=00H:字串的屬性由 BL 決定,所以 CX 所指的長度以 byte 為單位
模式 AL=01H:同 AL=00H,但游標會移到字串尾端,未顯示字元的位置
顏色屬性: bl =b7b6b5b4b3b2b1b0
bit0~2 :字體顏色 (0:黑,1:藍,2:綠,3:青,4:紅,5:紫,6:綜,7:白)
bit3 :字體亮度 (0:字體正常,1:字體高亮度)
bit4~6 :背景顏色 (0:黑,1:藍,2:綠,3:青,4:紅,5:紫,6:綜,7:白)
bit7 :字體閃爍 (0:不閃爍,1:字體閃爍)
BIOS 呼叫 INT 10H,AH=80H
倚天中文的控制
控 51H:釋放中文 30H:內碼輸入法 74H:透通模式切換
制 71H:釋放中文 31H:倉頡輸入法 4CH:條列模式(L)
碼 41H:切換為英文模式 32H:簡易輸入法 6CH:條列模式切換
BIOS 呼叫 INT 10H,AH=91H
檢查是否有載入倚天中文
載入狀態 => (AH != 91H 表有載入,AH = 91H 表未載入)
目前模式 => (DH),(bit7=0 表中文模式,bit7=1 表英文模式)