中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS软件下载 & 游戏分享 (下载室) » dos下高分辨率显示环境的实现(vmc)
« [1] [2] »
作者:
标题: dos下高分辨率显示环境的实现(vmc) 上一主题 | 下一主题
knifeflying
初级用户





积分 72
发帖 30
注册 2007-10-12
状态 离线
『楼 主』:  dos下高分辨率显示环境的实现(vmc)

前一段时间一直折腾linux下的分辨率问题,向同学请教有关于framebuffer的知识。提高分辨率后字符显示更加清晰,显示的内容更多。我到国内外各个论坛和网站搜索,却没有找到dos类似的工具实现高分辨率文字显示,论坛的好多人也试图寻找类似的解决方案,结果多是无功而返。

    这里说高分辨率下的文字显示其实是不恰当的,文字模式其实是固定的,没有分辨率一说,标准的是80x25,意思是显示25行,每行80个字符(当然还有43和50行),这样的显示显然不能满足现在日益增大的显示屏。高分辨率下的字符其实都是图形,每个字都是拿点拼成的,需要更多的存储空间,而不像字符模式,每个字符两个字节就可以控制内容、颜色、闪烁等等。

    linux采用framebuffer driver,Linux是工作在保护模式下(用户进程无法直接操作硬件),所以无法使用显卡BIOS里提供的中断来实现直接写屏,Linux采用FrameBuffer这个抽象设备来实现直接写屏。

    我在空闲时间阅读了VESA显示模式的书,VESA采用中断可以实现用户屏幕每个像素的直接控制,进而实现高分辨率的输出。我编写了下面的程序vmc(Video Mode Changer),希望能够对大家有所帮助。

    现在大多的显卡都支持VESA标准了(最新3.0),但是显示芯片生产厂家标准不一,方案各异,虽然windows下驱动能够达到如1600x1200x32bit的显示模式,但是VESA直接写屏模式不一定能支持这么高的效果。vmc能够判断您的显卡是否采用VESA标准,并且检测其支持的所有显示模式,将他们(模式代号,分辨率,色深)列表输出,然后就可以采用“vmc 模式代号”实现高分显示了。

    vmc /l        检测您的显卡,并列出支持的显示模式
    vmc /c        检测并输出现在的显示模式代号
    vmc NNN        将显示模式变为NNN(模式代号)
    vmc /?        帮助
详细情况请阅读附件中readme.txt。

附件 1: VMC1_0.zip (2009-3-3 15:41, 17.48 K,下载次数: 272)
2009-3-3 15:41
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
knifeflying
初级用户





积分 72
发帖 30
注册 2007-10-12
状态 离线
『第 2 楼』:  

我笔记本的屏幕标准分辨率为1280x800,VESA 1280x800x256color的模式代号为352,以下是不同模式下的显示效果:


普通模式全屏显示效果,其为25x80文本模式,显示内容非常少。



高分模式全屏显示效果,可显示51x160的文本,行数和每行显示的内容都大大增加了。




普通模式的字体显示细节,每个字符需要多个像素缩放而成,字符周围虚化。




高分模式的字体显示细节,每个字符都采用最基本的像素(8x16)显示而成,边界明显,字体小巧清秀。

2009-3-3 15:53
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
IamAlian
初级用户





积分 21
发帖 10
注册 2007-9-24
状态 离线
『第 3 楼』:  

不错,顶一个

2009-3-5 05:51
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
aq2007
初级用户





积分 20
发帖 9
注册 2007-4-27
状态 离线
『第 4 楼』:  

不错.顶一下

2009-4-2 10:58
查看资料  发短消息 网志   编辑帖子  回复  引用回复
JUE1980TH
新手上路





积分 9
发帖 5
注册 2009-2-17
状态 离线
『第 5 楼』:  

意思明白,但不知道怎么用,顺便图全挂了。。

2009-4-2 14:48
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
yaya
银牌会员





积分 1009
发帖 353
注册 2003-9-4
状态 离线
『第 6 楼』:  

分享

2009-4-3 00:35
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
study9787
新手上路





积分 2
发帖 1
注册 2009-2-27
状态 离线
『第 7 楼』:  

頂一個

2009-4-3 06:39
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
kingst
新手上路





积分 4
发帖 2
注册 2008-5-29
状态 离线
『第 8 楼』:  

谢谢分享~

2009-4-3 07:10
查看资料  发短消息 网志   编辑帖子  回复  引用回复
netwinxp
高级用户





积分 741
发帖 366
注册 2007-7-25
状态 离线
『第 9 楼』:  

问题的关键是,很多的DOS软件会调整显示模式,并直接写屏,所以基本上只在command.com环境里面有用。

2009-4-3 08:23
查看资料  发短消息 网志   编辑帖子  回复  引用回复
store88
中级用户




积分 416
发帖 125
注册 2005-6-9
状态 离线
『第 10 楼』:  

太棒了呀 谢谢

针对不同的分辨率最好有个公用的模式

[ Last edited by store88 on 2009-4-15 at 05:17 ]

2009-4-15 05:16
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
knifeflying
初级用户





积分 72
发帖 30
注册 2007-10-12
状态 离线
『第 11 楼』:  

显卡芯片不同,相同的显示模式的编号是不同的。不过这不是问题,用软件检测一下就可以。
dos下的应用软件凡是牵扯到写屏的,都是自己定义屏幕显示。这样真是没办法。没有一个统一的显示平台,没有统一的显示接口。
dos太简单!

2009-4-28 08:46
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
dosmac
新手上路





积分 6
发帖 3
注册 2007-3-14
状态 离线
『第 12 楼』:  

非常有用的东西,感谢楼主的贡献

2009-6-8 06:45
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
kaixinmao
初级用户





积分 27
发帖 14
注册 2007-4-7
状态 离线
『第 13 楼』:  检测下虚拟机的硬件

哈哈,就是这样

2010-4-4 09:27
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
yc544545058
新手上路




积分 6
发帖 3
注册 2009-12-11
状态 离线
『第 14 楼』:  

多谢啦!!!!!!!!!!!!!!!!!!!!



I am me ......
2010-4-20 11:06
查看资料  发短消息 网志   编辑帖子  回复  引用回复
yiqingnan
初级用户





积分 38
发帖 24
注册 2010-3-21
状态 离线
『第 15 楼』:  

常来常往
谢谢分享

2010-4-20 14:11
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: