![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-13 16:25 |
共 47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行 |
| DOS汉化世界 & 中文系统 (中文化室) » 查寄存器值检测直接写屏汉字系统启动状态及显示状态 |
| 可打印版本 2,740 / 1 |
| 第1楼 本是 | 发表于 2005-12-22 12:31 |
| 银牌会员 发帖 790 积分 2,227 | |
|
查寄存器值检测直接写屏汉字系统启动状态及显示状态 查寄存器值检测直接写屏汉字系统启动状态及汉字显示状态[本是
原创!]如果以现在大家基本上都在用支持直接写屏(所以不再考虑CGA/MDA/HGA)的汉字系统为前提,思考检测汉字系统的存在与否(注意:是指汉字dos是否启动,而不是汉字是否能够显示(比如揿过CtrlF7键切换到西文状态))及汉字显示状态的激活与否,就比较简单了。 1。要支持直接写屏(现在通常都是置图形屏然后修改E/VGA寄存器值以打开本来只有文本屏才有的视频缓冲,允许写入B800:0000h(或B000:0000h),即看起来是文本屏,实质上还是图形屏--又称伪字符型直接写屏),就一定要修改图形控制器端口3CEh索引号为6的混合寄存器值,以设定存储器地址映射到主机存储器的相应地址范围。 jzEnDos6: ;check Chinese Character System Status mov dx,3CEh;端口3C4/5h, EGA图形控制器 索引/功能 al=6, 混合寄存器 mov al,06 ;索引号=6 out dx,al inc dx ;dx=3CFh in al,dx mov ah,al and al,00000001B ;图形允许位 and ah,00001000B ;存储器地址选择位的高位: 置1为映射Bx00:0000h文本屏址 not ah ;反其值, 置1变置0 or ah,al ;拼接 or ah,ah ;不允许图形+置0? ;jz EnDos;jnz CcDos ret 2。要支持汉字提示行定位在屏幕底部,又必定要修改CRT控制器3D4/5h(或3B4/5h)的18h号线比较寄存器(附带09h号最大扫描线数目寄存器)、0Ch/0Dh号起始地址寄存器高低字节等的值。 jzEnDos18: ;check Chinese Character System Status mov dx,3D4h;端口3D4/5h, EGA CRT控制器 索引/功能 al=18h, 线比较寄存器 mov al,18h ;索引号=18h out dx,al inc dx ;dx=3D5h in al,dx cmp al,0FFh;=缺省值0FFh? ;jz EnDos;jnz CcDos ret jzEnDosCD: ;check Chinese Character System Status mov dx,3D4h;端口3D4/5h, EGA CRT控制器 索引/功能 al=0C/0Dh, 起始地址寄存器高低字节 mov cx,0C0Dh mov al,ch ;索引号=0Ch out dx,al inc dx ;dx=3D5h in al,dx ;缺省值=0 mov ah,al dec dx mov al,cl ;索引号=0Dh out dx,al inc dx ;dx=3D5h in al,dx ;缺省值=0 or al,ah ;拼接 or al,al ;2个=缺省值0? ;jz EnDos;jnz CcDos ret 3。要支持直接写屏,还要修改时序发生器3C4/5h的颜色平面允许写寄存器02h,因为是伪字符型直接写屏,所以真正写字模上屏,又必定是写入图形视频缓冲,所以颜色平面允许写寄存器的值就不可能再是文本屏时的值3,而必是其它,这就成了可靠的是否在汉字显示状态的判断标准。--非直接写屏汉字系统也是如此--本来就是图形显示。 jzEnDisp2: ;check Chinese Character Display Status mov dx,3C4h;端口3C4/5h, EGA时序发生器 索引/功能 al=2, 颜色平面允许写寄存器 mov al,02 ;索引号=2 out dx,al inc dx ;dx=3C5h in al,dx cmp al,03 ;文本屏的缺省值 ;jz EnDisp;jnz CcDisp ret 这样去思考检测汉字系统的存在及汉字显示状态,应该是切中要害的。 请高手 指正!请大家 测试,并反馈信息! |
|
| 第2楼 fdsiuha | 发表于 2006-01-10 23:31 |
| 高级用户 发帖 302 积分 587 | |
|
一下子解决了我的好多问题...
实践中... |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |