无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 45666|回复: 180
打印 上一主题 下一主题

[发布] grub4dos支持VBE 显示模式的外部命令(阶段性完美版)

[复制链接]
跳转到指定楼层
1#
发表于 2011-10-14 00:24:36 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
下载最新版本附件。

直接在GRUB4DOS下作为外部命令运行即可。。

支持带字库参数(为了方便编程测试只支持VTEDIT生成的字库)。比如

vbe vfont=/vt.exe

效果图看附件。

执行之后会进入VBE 0x101 640*480*8的模式.

使用terminal console命令退出。

执行VESA之后不可以使用FONT/UNIFONT/SPLASHIMAGE/GFXMENU等图形界面的命令,可能会导致死机。

代码修改自这里

http://bbs.znpc.net/viewthread.php?tid=6136&extra=page%3D1

这边也有一个测试的版本
http://bbs.znpc.net/viewthread.php?tid=6139&page=2#pid48977

要使用VFONT字体需要加VFONT参数

例子:

vbe vfont=/vt.exe

为了便于测试,支持指定模式比如

vbe mode=0x101 (默认)640x480x8
vbe mode=0x103 800x600x8
vbe mode=0x107 1280x1024x8

具体的可以自己使用vbeprobe命令查看。

最新版本的参数介绍
vbe mode=[mode] vfont=[vfont] demo

1.vbe demo(vbe界面演示)
2.vbe mode=[mode] 进入指定的vbe 模式,配合vfont参数可以显示中文。

使用以下命令返回。
terminal console

最新版本可以使用color命令设置颜色。
color NORMAL [HIGHLIGHT [HELPTEXT [HEADING]]]

和console模式中的一样可以指定不同的地方显示不同的颜色。
例子:
color 0xff00 0xffffff 0xff00ff 0xffff00

颜色代码格式:0xRRGGBB
注:颜色代码是一个32位的数值(只有后面24位有效)。

另外还可以使用color 设置光标颜色和背景色
color -1 背景色 光标色
color -1 0 0xff0000

注:背景色只有x8(256色)的模式下有效。

2011-11-05  自动检测并使用800X600X32/24模式.
配合最新版GRUB4DOS使用2011-11-04以上的版本.
支持调用用GRUB4DOS的FONT命令加载的字库.
例子,如下两行就可以了.
font /unifont.hex
vbe

可以使用这里的工具生成小字库.
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=180142&page=151#pid2332577


2011-10-17
阶段性完美版。修复所有已知的BUG,支持显示一个启动图片。
例子:
vbe bmp=/test.bmp (效果看附件)

注:这个图片必需是BMP格式,24位色,并且是系统所支持的分辨率才可以使用。
比如800x600x24或1024x768x24等.

2011-10-16 更新
进入实用性阶段。支持设置颜色(包括光标的颜色)

2011-10-14 晚上11点更新
基本上可以作为日常使用了,尝试支持所有支持的模式,支持滚屏等。

注:如果发现执行之后是一片黑屏这时是没有死机的,可能是颜色不对。
输入以下命令回车后就可以返回了(盲打),一次不行就再输几次一般都可以正常退出的。
terminal console

[ 本帖最后由 chenall 于 2011-11-5 21:44 编辑 ]

20111014.png (3.91 KB, 下载次数: 323)

20111014.png

20111016170643289.png (13.86 KB, 下载次数: 244)

800x600x24 的效果图

800x600x24 的效果图

20111017222051352.jpg (84.37 KB, 下载次数: 240)

20111017222051352.jpg

vesa.rar

4.11 KB, 下载次数: 181, 下载积分: 无忧币 -2

vesa-2011-10-14.zip

5.17 KB, 下载次数: 121, 下载积分: 无忧币 -2

vbe-2011-10-16.zip

4.84 KB, 下载次数: 106, 下载积分: 无忧币 -2

vbe-2011-10-17.zip

5.46 KB, 下载次数: 79, 下载积分: 无忧币 -2

vbe-2011-10-19.zip

3.76 KB, 下载次数: 86, 下载积分: 无忧币 -2

vbe-2011-11-05.zip

4.39 KB, 下载次数: 251, 下载积分: 无忧币 -2

必须配合2011-11-04以上的版本使用.

2#
 楼主| 发表于 2011-10-14 00:33:27 | 显示全部楼层

回复 #1 chenall 的帖子

这个只是个半成品。。还需要完善,有时间我再慢慢完善,顺便可以学习一下VBE的编程

很多东西都得临时学,如果有人可以给GRUB4DOS打一个补丁完美支持VBE的话就再好不过了,嘿嘿。
回复

使用道具 举报

3#
 楼主| 发表于 2011-10-14 18:00:35 | 显示全部楼层
再上传一下,参数有变化。

要使用VFONT字体需要加VFONT参数

例子:

vesa vfont=/vt.exe

为了便于测试,支持指定模式比如

vesa mode=0x101 (默认)640x480x8
vesa mode=0x103 800x600x8
vesa mode=0x107 1280x1024x8

具体的可以自己使用vbeprobe命令查看。

目前的版本只适应8位的颜色。其它的模式可以会显示异常。

另外这个版本支持光标显示了。滚屏的还没有处理,目前显示满一页就自动清屏。

vesa-2011-10-14.zip

4.79 KB, 下载次数: 51, 下载积分: 无忧币 -2

回复

使用道具 举报

4#
 楼主| 发表于 2011-10-14 23:51:20 | 显示全部楼层
再更新了一下,基本上可以作为日常的使用了,可以代替默认的CONSOLE模式。

使用了字库之后,这个目前可以支持显示64个不同的字,VFONT只支持30个。
回复

使用道具 举报

5#
 楼主| 发表于 2011-10-15 00:15:51 | 显示全部楼层

回复 #10 zxw 的帖子

你可以换一个显示模式看看。

用vbeprobe查看支持的模式。

然后使用类似如下的命令。
vesa mode=0x114
回复

使用道具 举报

6#
 楼主| 发表于 2011-10-15 00:48:03 | 显示全部楼层
重新上传了一个,强制指定颜色为纯白色。。

这下应该正常了,顺便把cls功能也修改了一下,用内存清零的方法来清屏。
回复

使用道具 举报

7#
 楼主| 发表于 2011-10-15 00:49:15 | 显示全部楼层

回复 #12 zxw 的帖子

你注意看一下应该在后面,vmware也有支持0x101模式的。


新的版本应该支持所有模式,一般情况下文字应该是白色的,光标颜色不同模式可能会不太一样。

[ 本帖最后由 chenall 于 2011-10-15 00:52 编辑 ]
回复

使用道具 举报

8#
 楼主| 发表于 2011-10-16 17:23:42 | 显示全部楼层
更新了一下,进入实用性阶段,,,,

具体见一楼介绍。

另外有一个问题,我不知如何处理,麻烦知道的朋友提供一些资料。
对于背景色的设置,8位色的模式色只要调用int 10修改调色板0的颜色就可以了。

其它模式下有没有类似的方法?
回复

使用道具 举报

9#
 楼主| 发表于 2011-10-17 22:24:44 | 显示全部楼层

回复 #25 zhuyoucheng 的帖子

谢谢报告,已经修复,请从一楼下载新的版本测试。

新的版本修正了在VMWARE或实机中显示字符可能会乱码的问题。

新的版本默认是800x600x24,如果不支持该模式则使用800x600x16,如果还是不支持必须手工指定。

如果有带bmp参数,会自动设置一个和BMP文件一样分辨率的模式。

[ 本帖最后由 chenall 于 2011-10-17 22:26 编辑 ]
回复

使用道具 举报

10#
 楼主| 发表于 2011-10-17 22:31:40 | 显示全部楼层
学不点一样,阶段性完美版。。。

也许以后我也不考虑8/15/16,特别是8位色。编程太麻烦了。去除这些的支持可以使得程序更小巧。方便以后移值到GRUB4DOS里面去。

目前对于设置背景图片我还没有任何头绪,不知有没有什么比较好有办法?

要显示一个图片比较简单,新的测试中就支持BMP格式,要支持其它格式也很简单。

问题是我不知道如何把这个图片设为背景。

难道要分配一块内存存放图片,然后输出字符的时候和这个进行比较运算。这样感觉效率太低了。
回复

使用道具 举报

11#
 楼主| 发表于 2011-10-17 23:44:35 | 显示全部楼层
明天再试试看看把UNIFONT的字库移植过来。。。

为了方便测试VBE的功能我写了一个BIOS的外部命令,这样就可以不用编程直接测试。(当然了这个BIOS命令不单单是用于测试VBE功能的)

有兴趣的朋友可以试试,如果对中断资料比较熟的话,配合批处理没有什么不可能的。^_^.

http://chenall.net/post/grub4dos_biosint/

[ 本帖最后由 chenall 于 2011-10-17 23:46 编辑 ]
回复

使用道具 举报

12#
 楼主| 发表于 2011-10-18 11:20:35 | 显示全部楼层

回复 #35 zhaohj 的帖子

我也有类似的想法,所以新的GRUB4DOS将不会再增加功能,最多只是BUG修复。

差不多到年底如果没有发现BUG的话就可以正式发布0.4.5版了。

GFXMENU在新版里面也许会考虑作为外部命令。不过这些都是后话。

新的功能测试目前可以通过外部命令来先实现。
回复

使用道具 举报

13#
 楼主| 发表于 2011-10-18 11:22:52 | 显示全部楼层

回复 #33 不点 的帖子

嗯,就等你的成果了,以前的UNIFONT字库是可以直接使用,不过新的字库生成软件要收费,正在考虑查找新的方案呢,本来还想考虑移GRUB2的字库过来。。。
回复

使用道具 举报

14#
 楼主| 发表于 2011-10-18 11:30:40 | 显示全部楼层
原帖由 135956 于 2011-10-18 00:50 发表
outb/outw/outl 与 inb/inw/inl
这些具体表示什么意思呢?


这些自己上Google搜一下,直接和硬件打交道用的,可以通过读写指定端口来控制。

比如一个比较简单的

使用vbe mode=0x101的模式时

可以执行以下命令改变背景色

bios outb 0x3c8 0
bios outb 0x3c9 0x55
bios outb 0x3c9 0x55
bios outb 0x3c9 0x55

第一句就是告诉计算机接下来我要修改第0个调色板。
第二句是红色值
第三句是绿色
第四句是蓝色
回复

使用道具 举报

15#
 楼主| 发表于 2011-10-18 18:50:30 | 显示全部楼层

回复 #46 zhaohj 的帖子

本来就有自动匹配的啊。难道你的机器连32位也不支持?

24位的不支持会自动使用32位的。

用VMWARE测试通过,VMWARE就是32位的。
回复

使用道具 举报

16#
 楼主| 发表于 2011-10-18 22:03:59 | 显示全部楼层

回复 #50 xianglang 的帖子

8/15/16都需要转换颜色,造成编程的不方便。

一般来说除非太老的机子,否则至少要支持24/32位其中的一种。
回复

使用道具 举报

17#
 楼主| 发表于 2011-10-19 18:03:49 | 显示全部楼层
最新进展,初步实现背景图片。。。。

注:只是先按照我的思路去实现了一下。

目前状态是勉强可以使用.^_^

新的版本只支持23/24位。光标显示有问题,暂时禁用光标显示。其它的应该一切正常。

20111019175942889.png (176.34 KB, 下载次数: 168)

20111019175942889.png

vbe-2011-10-19.zip

5.03 KB, 下载次数: 30, 下载积分: 无忧币 -2

回复

使用道具 举报

18#
 楼主| 发表于 2011-10-19 18:04:59 | 显示全部楼层
如果这个方案可行的话,以后再考虑怎么优化一下代码,加快执行的速度。

目前如果有带背景,滚屏速度会比较慢。
回复

使用道具 举报

19#
 楼主| 发表于 2011-10-19 20:43:01 | 显示全部楼层
再上传一个。。

看看是否常。。。

[ 本帖最后由 chenall 于 2011-10-19 20:46 编辑 ]

20111019204452664.png (121.46 KB, 下载次数: 196)

20111019204452664.png

vbe-2011-10-19.zip

3.76 KB, 下载次数: 31, 下载积分: 无忧币 -2

回复

使用道具 举报

20#
 楼主| 发表于 2011-10-20 11:18:19 | 显示全部楼层

回复 #60 zhaohj 的帖子

这个应该是你自己菜单的问题吧。

我在VBE环境中执行configfile未见异常。
回复

使用道具 举报

21#
 楼主| 发表于 2011-10-20 12:19:45 | 显示全部楼层
这个比较奇怪,因为启动时会自动卸载的。你确定是在BOOT前TERMINAL CONSOLE?是指在该PE菜单的最后一句使用TERMINAL CONSOLE。


试试这个,只是改变了VBE程序驻留内存的位置改到5M位置。

vbe-2011-10-20.zip

3.76 KB, 下载次数: 30, 下载积分: 无忧币 -2

回复

使用道具 举报

22#
 楼主| 发表于 2011-10-20 15:57:52 | 显示全部楼层

回复 #67 xianglang 的帖子

呵呵,因为BMP格式比较简单,特别是24/32位的图片。还有以前的XPM格式也很简单。

若要用PNG/JPG的话因为这些都是压缩的还需要额外的库支持,程序会变得很大。

不过这些都不是目前的重点。目前先保证稳定可以使用,图片的问题以后可以使用外部模块的方式来加载。

使用外部模块就不用考虑那么多了,内部使用的话要尽可能小巧一些。
回复

使用道具 举报

23#
 楼主| 发表于 2011-11-2 16:13:38 | 显示全部楼层
可能是CSPE使用到的内存比较多有冲突了,
回复

使用道具 举报

24#
 楼主| 发表于 2011-11-3 23:32:06 | 显示全部楼层
再上传一个可以使用UTF-8显示文字的VBE

使用新版grub4dos的font命令加载字库之后就可以了.

效果自己看...

采用的是类似于UNIFONT的处理方法,但去掉了许多的检测.偷了懒,省去了许多判断代码.只要不显示满一整行,应该没有什么问题.

适用于在菜单上显示汉字..只是一个过渡的版本.接下来就等不点的新版成品了..

[ 本帖最后由 chenall 于 2011-11-4 19:04 编辑 ]

test.png (51.75 KB, 下载次数: 151)

test.png

vbe-2011-11-03.zip

4.29 KB, 下载次数: 28, 下载积分: 无忧币 -2

回复

使用道具 举报

25#
 楼主| 发表于 2011-11-4 15:58:46 | 显示全部楼层
回复

使用道具 举报

26#
 楼主| 发表于 2011-11-4 18:56:45 | 显示全部楼层
抱歉,传错了.

是这个VBE.

可以启动VBE模式之后再加载字库,也可以先加载字库再启动VBE

用以下命令加载字库

font /unifont.hex

这个也可以替代UNIFONT了.

vbe-2011-11-04.zip

4.36 KB, 下载次数: 25, 下载积分: 无忧币 -2

回复

使用道具 举报

27#
 楼主| 发表于 2011-11-4 19:05:53 | 显示全部楼层
再上传一个配合最新测试版本使用的VBE.

如果使用的是今天的测试版GRUB4DOS需要配合这个VBE程序使用才正常 ..

附上24位图片效果图.



[ 本帖最后由 chenall 于 2011-11-4 19:14 编辑 ]

vbe-2011-11-04.zip

4.36 KB, 下载次数: 40, 下载积分: 无忧币 -2

回复

使用道具 举报

28#
 楼主| 发表于 2011-11-5 20:36:40 | 显示全部楼层
先在命令行下使用以下命令加载字库看看.

font /xxx/unifont.hex

另外0PE附带的GRLDR可能是旧版的,不支持.

喜欢小字库的可以试试这个小程序.

http://bbs.wuyou.net/forum.php?m ... page=151#pid2332577

可以生成足够小的字库.
回复

使用道具 举报

29#
 楼主| 发表于 2011-11-5 21:28:58 | 显示全部楼层

回复 #91 hotdll 的帖子

默认是0x115或0x114,可能是VMWARE不支持这两种模式.

稍后修改一下,自动检测一个800X600X32的模式.
回复

使用道具 举报

30#
 楼主| 发表于 2011-11-5 21:46:36 | 显示全部楼层

回复 #93 hotdll 的帖子

试试刚上传的版本有没有顺便解决了?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-6-14 22:00

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表