2013-02-10 39 views
2

我正在寫代碼,在加載任何操作系統之前以實模式運行。我的程序的一部分涉及信息轉儲到視頻顯示器,而標準的80x25文本模式不會削減它。43行或更多是否有標準的BIOS Int 10h視頻模式?

許多版本的Windows和其他操作系統在切換到某些較大的文本模式時似乎沒有問題,我認爲,當它們顯示內核出現混亂時,這種方式是不合適的。我知道較大的文本模式已經存在了很長時間,所以我期望至少有一種標準模式。

有一個相當大的BIOS這裏的視頻模式列表:

http://www.columbia.edu/~em36/wpdos/videomodes.txt

不幸的是,同樣的模式數字似乎在芯片組之間的含義差異很大。

曾幾何時,我似乎記得曾經使用過稱爲VESA BIOS的設備以獨立於設備的方式訪問Super VGA圖形模式,但我似乎還記得涉及必須加載的DOS TSR。由於DOS沒有運行,這不是一個選項。

我正在尋找一種適用於各種硬件的模式,包括VMware ESXi中的虛擬視頻適配器。改變模式的代碼也需要緊湊,所以我希望一個簡單的Int 10h能做到這一點。

任何想法? VMware內核如何做到這一點?

+1

640x350是一個古老的EGA視頻模式,可存放超過8px的43行以上的視頻。您看到的恐慌屏幕可能是視頻模式,而不是文本模式。我記得EGA/VGA上的43/50行*文本*模式,但是在代碼片段中查看[這裏](http://computer-programming-forum.com/29-pascal/1f1b08c6aa9387f6.htm),然後切換到它們。 – 2013-02-10 13:52:44

回答

2

您可以使用80x25模式並加載8x8字體(ax = 1112h),這將導致80x50個字符。據我記得,這是非常標準的。

+0

因此,80x25模式下的'MOV ax,1112h' INT 10h會做什麼? – 2013-02-10 14:10:24

+1

發現這個:http://board.flatassembler.net/topic.php?t=3659你還需要清除bx(根據http://webpages.charter.net/danrollins/techhelp/0159 .HTM設置字體以使用) – robertklep 2013-02-10 16:07:09

+0

感謝您的信息!並不是所有的BIOS參考都列出了這個調用,但是一旦我知道要查找它,我也最終找到了更好的參考。 :) [鏈接](http://www.ctyme.com/intr/int.htm)@Jan不太...你必須先加載BL來指示要使用的char塊表,否則你可能會出現亂碼輸出。不知道所有的值是什麼,但BL = 00h似乎是'平常'的字符集。如果您處於80x25模式(模式03h),則無需設置模式,實際上現有文本將保持不變。 – Kevin 2013-02-10 17:42:41

相關問題