|
本帖最后由 mdyblog 于 2015-1-11 11:56 编辑
>>bios千差万别,有些机子ok但有些不成,为什么视讯资料回存了,但偏偏没有显示,随便按一下Enter,
屏幕上卷,原来的画面出来了,其实视讯资料都在,只是中文系统不知道,我在这里用一个笨办法,
利用ah=0601h,int10h,屏幕上卷一行,告诉中文系统我回来了...
----------
是这样的,
1) 这些中文系统,本身有画面缓冲机制,在自己的程序内存—— “2级软显存” 中。
你按<Endter>, 他会根据“2级软显存”,重汇屏幕——执行滚屏驱动函数,
“2级软显存”,不受BIOS控制的。同时也不用OS来保护了。
所以上面显示不是INT10/1C恢复的,而是中文系统的TSR重绘的结果。
2)
中文系统会检测使系统,采用什么样的底层显示驱动。
下面的说的VirtualBox中,可能选择了FrameBuffer技术, 那么是图形模式——会占用很大的。
64K一般来说不够的。
1024*768*16/8=1.5M
这么大,只有保存到扩展内存了。
INT10/1C估计无能为力了。
你可以找到FrameBuffer 的地址,和格式,根据格式计算大小, 在保护模式中直接拷贝内存来恢复/保存。
注意实际的内存必上面计算1.5M的方法要大,因为规范中,内存不是连续完全 使用的,line间有些会丢弃不用的少量内存。
VRAM= line字节数 * 行数
|
|