線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1667
推到 Plurk!
推到 Facebook!

如何更改VGA 字型

 
jackkcg
站務副站長


發表:891
回覆:1050
積分:848
註冊:2002-03-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-12-13 22:25:16 IP:61.221.xxx.xxx 未訂閱
如何更改VGA 字型 --------------------------------------------------------------------------------發信人: Hentai@cis_nctu (ああっ!すくるどさまっ), 信區: sources 標 題: 如何更改VGA 字型 發信站: 交大資科_BBS (May 17 14:11:56 1995) 轉信站: cis_nctu 在programming 板又提到這個問題,乾脆把我自己的程式 整理一下 post 上來..... 底下,是我用組語寫的,專門給C 用的程式。使用方法, 很簡單,只有這兩個函數。一個是把現在螢幕的字型 bitmap 資料讀到 buffer 裡去。一個是把bitmap 字型寫到螢幕 上面。 底下第一段是一個 .h 檔。其實只有兩行而已,只要這兩 行加到程式裡去就可以了。第二段是一個 .asm 檔。 save 下來後用 masm /mx (tasm 也可以)然後跟要用的程 式link 再一起就可以了。 注意的是,這個程式將 VGA 螢幕改為對應到 seg a000-bfff 後進行讀寫 font 的工作。如果這段空間被 memory map 掉(如 emm386 或 qemm 把 b000-b7ff 弄成 UMB 或在倚天 中文系統下),都將會嚴重的 bug 產生。使用前應自己做 檢查,如果有上述情形,就不要使用到這兩個函數。最簡 單的檢查方式就是把 b000-b7ff 這段中間隨便填入一個非 0xff 的數字,然後再讀出來看看這個數字對不對。正常的 話這段空間應該是不能修改的。如果發現這段空間被你程 式修改了,就不要使用這兩個函數了。 試過有問題的話麻煩請告訴我。 ----------------------------- .h ---------------------------------------- /* void ReadFont(char far *buffer,int code); */ /* Read ASCII code FONT to buffer */ void ReadFont(char far *buffer,int code); /* void WriteFont(int code,char far *buffer); */ /* Write buffer to ASCII code FONT */ void WriteFont(int code,char far *buffer); ---------------------------- .asm ---------------------------------------- .286 .MODEL SMALL ReadFont PROTO C buffer:DWORD,code:WORD WriteFont PROTO C code:WORD,buffer:DWORD .CODE ; Read ASCII code FONT TO buffer ReadFont PROC C buffer:DWORD,code:WORD PUSH SI PUSH DI PUSH DS PUSH ES MOV SI,code LES DI,buffer MOV AX,0A000H MOV DS,AX SHL SI,5 MOV CX,8 MOV DX,3CEH MOV AX,206H OUT DX,AX MOV AX,204H OUT DX,AX ReadFont2: MOVSB INC SI INC DI LOOP ReadFont2 MOV AX,0B000H MOV DS,AX SUB SI,16 SUB DI,15 MOV CX,8 ReadFont1: MOVSB INC SI INC DI LOOP ReadFont1 MOV AX,4 OUT DX,AX MOV AX,0E06H OUT DX,AX POP ES POP DS POP DI POP SI RET ReadFont ENDP ; Write buffer TO ASCII code FONT WriteFont PROC C code:WORD,buffer:DWORD PUSH SI PUSH DI PUSH DS PUSH ES MOV DI,code LDS SI,buffer MOV AX,0A000H MOV ES,AX SHL DI,5 MOV CX,8 MOV DX,3CEH MOV AX,206H OUT DX,AX MOV DX,3C4H MOV AX,0C02H OUT DX,AX WrtFont2: MOVSB INC DI INC SI LOOP WrtFont2 MOV AX,0B000H MOV ES,AX SUB DI,16 SUB SI,15 MOV CX,8 WrtFont1: MOVSB INC DI INC SI LOOP WrtFont1 MOV AX,302H OUT DX,AX MOV DX,3CEH MOV AX,0E06H OUT DX,AX POP ES POP DS POP DI POP SI RET WriteFont ENDP END -------------------------------------------------------------------------------- Hentai 不hentai 就不叫Hentai 了 發表人 - jackkcg 於 2002/12/14 10:07:33
------
**********************************************************
哈哈&兵燹
最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好

Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知
K.表Knowlege 知識,就是本站的標語:Open our mind
axsoft
版主


發表:681
回覆:1056
積分:969
註冊:2002-03-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-12-13 22:39:32 IP:61.218.xxx.xxx 未訂閱
jackkcg 哥哥 :   您好像貼錯區了吧!這裡不是工具討論區耶!....    <>網<>路志<>工聯盟---- href="http://www.vista.org.tw">http://www.vista.org.tw ---[ 發問前請先找找舊文章 ]---
jackkcg
站務副站長


發表:891
回覆:1050
積分:848
註冊:2002-03-23

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-12-13 22:43:04 IP:61.221.xxx.xxx 未訂閱
axsoft 大大 我以為有關dos的都上來此處 報歉 報歉 我把它改掉 轉貼 asm 相關文章 發表人 - jackkcg 於 2002/12/14 10:08:56
------
**********************************************************
哈哈&兵燹
最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好

Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知
K.表Knowlege 知識,就是本站的標語:Open our mind
系統時間:2024-05-05 20:39:01
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!