是否存在标准的BIOS Int 10h视频模式支持43行或更多?

5
我正在编写在操作系统加载之前以实模式运行的代码。我的程序的一部分涉及将信息转储到视频显示器上,但标准的80x25文本模式无法满足需求。
许多版本的Windows和其他操作系统似乎没有问题,在显示内核崩溃时切换到一些更大的文本模式,我认为是43行。我知道较大的文本模式已经存在很长时间了,所以我希望至少有一个标准模式可用。
这里有一个相当大的BIOS视频模式列表:

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

不幸的是,相同的模式号似乎在芯片组之间的含义差异很大。

我似乎记得曾经使用过一个叫做VESA BIOS的东西以一种设备无关的方式访问Super VGA图形模式,但我也记得那需要加载一个DOS TSR。由于DOS没有运行,这不是一个选择。

我正在寻找一种可以在各种硬件上使用的模式,包括VMware ESXi中的虚拟视频适配器。更改模式的代码也需要紧凑,所以我希望简单的Int 10h可以实现。

有任何想法吗?Windows和VMware内核恐慌是如何做到的?


1
640x350是古老的EGA视频模式,可容纳43+行8像素高。你看到的那些恐慌屏幕可能是视频模式,而不是文本模式。我记得EGA/VGA有43/50行的文本模式,可以在这里查看代码片段以切换到它们。链接 - Roman R.
1个回答

5

您可以使用80x25模式并加载8x8字体(ax = 1112h),这将导致80x50个字符。据我记得,这是相当标准的。


那么,在80x25模式下,MOV ax, 1112h INT 10h可以吗? - John Dvorak
1
发现这个链接:http://board.flatassembler.net/topic.php?t=3659,您还需要清除bx(根据http://webpages.charter.net/danrollins/techhelp/0159.HTM设置要使用的字体)。 - robertklep
谢谢提供信息!并非所有BIOS参考都列出了此调用,但一旦我知道要寻找它,我也找到了一个更好的参考。 :) [链接](http://www.ctyme.com/intr/int.htm)@Jan 不完全正确...您必须首先加载BL以指示要使用的字符块表,否则您可能会获得乱码输出。不确定所有值是什么,但BL = 00h似乎是“通常”的字符集。如果您处于80x25模式(模式03h),则无需设置模式,实际上现有文本将保持不变。 - Kevin
(在我评论之后才看到您的附加评论。那里也有很好的链接。) - Kevin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接