无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
楼主: zhaohj
打印 上一主题 下一主题

GRUB4DOS更新建议、bug反馈专帖

    [复制链接]
1471#
发表于 2011-11-3 16:28:34 | 只看该作者

回复 #1470 hhh333 的帖子

我用“fontfile”,没有这方面的烦恼
回复

使用道具 举报

1472#
发表于 2011-11-3 16:29:31 | 只看该作者

回复 #1475 rockrock99 的帖子

外部命令fontfile和unifont使用了差不多的方案,,应该也是一样的吧..
回复

使用道具 举报

1473#
发表于 2011-11-3 16:49:13 | 只看该作者

回复 #1476 chenall 的帖子

fonfile光标没问题,unifont的光标只剩下三角
回复

使用道具 举报

1474#
发表于 2011-11-3 17:06:41 | 只看该作者
很简单,只需把 vbe.c 里面的这个函数更改一下便可:

static int vbe_getxy(void)
{
        return (fontx << 8) | fonty;
}

改为:

static int vbe_getxy(void)
{
        return (fonty << 8) | fontx;
}

当初设计者没有仔细考虑 x 和 y 的顺序问题。x 位于低字节,更有利于运算。BIOS 也是在 DL 中返回 x,而 DH 中是 y 的值。

受影响的外部命令不多,主要就是 fontfile、 unifont、 VBE 这类。

x 位于低字节,一个 (unsigned char) 转换就得到了,无须移位的动作。高字节上的 y,其使用频率低于 x。通常要频繁处理一行的信息,一行处理完了,才切换到另一行,这时候,才需要 y 的切换。因此,x 的使用频度高。


需要说明的是,暂且不要使用我改动 getxy 之后的版本。因为下一步我想彻底去掉 getxy 函数。直接用全局变量 fontx 和 fonty 就行了,没必要使用 getxy 函数。

[ 本帖最后由 不点 于 2011-11-3 17:30 编辑 ]
回复

使用道具 举报

1475#
发表于 2011-11-3 17:46:22 | 只看该作者
先上传一个测试版,如果没有问题的话再上传到SVN

        1.修正一个map的bug.                     bug fixed in map_func.
          相关贴子:
          http://bbs.wuyou.net/forum.php?mod=viewthread&tid=201887
          http://bbs.wuyou.net/forum.php?mod=viewthread&tid=201647
        2.忽略ISO9660文件系统上文件名的大小写.   Make name comparisoncase-insensitive on iso9660.
          可以使用以下命令禁用该功能.            You can use below command to disable this feature.
          write 0x4CA24 0
        3.cat命令添加--locatei参数,             added --locatei option for cat.
          查找时忽略大小写                      ignore case locate.
        eg.
          cat --locatei=Test (md)0x300+1

grub4dos-0.4.5b-2011-11-03.7z

264.67 KB, 下载次数: 180, 下载积分: 无忧币 -2

回复

使用道具 举报

1476#
 楼主| 发表于 2011-11-3 18:12:19 | 只看该作者
vbe(已修改getxy)测试未通过,而不点上传的版本(1464楼)是可以的。
cat --locatei 测试ok!
回复

使用道具 举报

1477#
发表于 2011-11-3 18:50:14 | 只看该作者
原帖由 chenall 于 2011-11-3 17:46 发表
先上传一个测试版,如果没有问题的话再上传到SVN

2.忽略ISO9660文件系统上文件名的大小写.   Make name comparisoncase-insensitive on iso9660.
          可以使用以下命令禁用该功能.            You can use below command to disable this feature.
          write 0x4CA24 0


不要这么多硬编码吧,以后升级了,会不会受影响?
回复

使用道具 举报

1478#
发表于 2011-11-3 19:19:25 | 只看该作者

回复 #1481 快雪时晴 的帖子

有多少人会需要区分大小写的情况,目前我还没有碰到....

这个只是暂时提供的变通修改的方法,以防万一的,万一有人需要区分大小写格式.

以后确实有必要了再增加一个命令去修改.

一般人可以忽略这个.
回复

使用道具 举报

1479#
 楼主| 发表于 2011-11-4 10:57:31 | 只看该作者
新版本VBE后CSPE又正常了,好消息。
但一直以来,有一个现象:如菜单中timeout 5,如果手动按“向下箭头”键,菜单底下还会跳出time 5 4 3 2 1的信息;
这时按除“向下箭头”外的任何键,这个现象就消失。
“向下箭头”键很特别。这个虚拟机可以重现,只要你只按“向下箭头”键,还会跳出倒计时。

[ 本帖最后由 zhaohj 于 2011-11-4 11:00 编辑 ]
回复

使用道具 举报

1480#
发表于 2011-11-4 16:01:38 | 只看该作者

回复 #1483 zhaohj 的帖子

我用QEMU测试的正常的呀.
回复

使用道具 举报

1481#
发表于 2011-11-4 17:09:52 | 只看该作者

回复 #1483 zhaohj 的帖子

那不是问题。那是一个特性。叫做 “单键选择功能”,只要用户有一个按键,就可以选择菜单项了。这方便了手机用户。

任何一个按键都可能被用来当作 “单一选择按键”,只要始终按这一个键,就认为用户只有这一个按键起作用,并且用户希望用这个键来选择菜单并运行。由于用户只有一个按键,选择之后,5 秒自动运行。如果不希望运行,可以继续按键,而选择别的菜单。

[ 本帖最后由 不点 于 2011-11-4 17:48 编辑 ]
回复

使用道具 举报

1482#
 楼主| 发表于 2011-11-4 17:25:59 | 只看该作者
原帖由 不点 于 2011-11-4 17:09 发表
那不是问题。那是一个特性。叫做 “单键选择功能”,只要用户有一个按键,就可以选择菜单项了。这方便了手机用户。

任何一个按键都可能被用来当作 “单一选择按键”,只要始终按这一个键,就认为用户只有这一 ...


哇,还是为了方便手机用户啊!
考虑得太周到了。
回复

使用道具 举报

1483#
发表于 2011-11-4 17:47:16 | 只看该作者
那不是 “考虑” 得方便(我可考虑不到那么多),而是以前用户提出的要求。

用户提出,在一些新型设备上,没有回车键,也没有箭头键,无法选择并执行菜单。

经过考虑之后,我决定用这样一种 “任何一个单键都可以选择执行” 的方式来满足用户的需求。

可惜的是,尽管 README 中有说明,但不少人不看 README 文件,因此把这个功能当成 bug 了。
回复

使用道具 举报

1484#
发表于 2011-11-4 18:02:27 | 只看该作者

回复 #1487 不点 的帖子

一路都看时空论坛的人才知道这个,当时提出了几套方案,这个是最方便的
回复

使用道具 举报

1485#
发表于 2011-11-4 18:19:11 | 只看该作者
最新版grldr(11.4)
unifont /BOOT/GRUB/FONTS菜单下
按方向键,出现一大堆的小三角(原来的选中符号),同时左侧框线消失。
unifont和FONTS是zxw的那个帖子里边的。

另外,这个版本是不是支持font /BOOT/GRUB/FONTS(假设FONTS是支持的字体),不需要chenaii老大发的vbefont外置命令呀
回复

使用道具 举报

1486#
发表于 2011-11-4 19:04:05 | 只看该作者

回复 #1489 tingyue-wu 的帖子

unifont已经和最近的版本不兼容了.暂时没有打算更新,可以使用新的VBE方案..
回复

使用道具 举报

1487#
发表于 2011-11-4 19:07:06 | 只看该作者

回复 #1490 chenall 的帖子

最后一问没回答,11.4的版本是不是不需要vbe文件?
回复

使用道具 举报

1488#
发表于 2011-11-4 19:15:56 | 只看该作者

回复 #1491 tingyue-wu 的帖子

目前的GRUB4DOS还没有内置VBE显示的支持,必须使用VBE外部命令.

如果有支持的话会有说明的.
回复

使用道具 举报

1489#
发表于 2011-11-4 19:44:01 | 只看该作者
unifont-5.1.20080820.hex这个字体很漂亮。虽然文件大点。

vbe
font %dev%/BOOT/GRUB/unifont-5.1.20080820.hex
我这样写,出现vbe模式后需要按回车才显示中文菜单,不能直接显示菜单吗?
回复

使用道具 举报

1490#
发表于 2011-11-4 19:52:55 | 只看该作者
给你一个不用按回车的VBE

必须使用最新的测试版本

vbe-2011-11-04.zip

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

GRUB4DOS_TEST.rar

268.21 KB, 下载次数: 96, 下载积分: 无忧币 -2

回复

使用道具 举报

1491#
发表于 2011-11-4 19:54:55 | 只看该作者
很好 很强大。
回复

使用道具 举报

1492#
发表于 2011-11-4 22:54:42 | 只看该作者
原帖由 tingyue-wu 于 2011-11-4 19:44 发表

unifont-5.1.20080820.hex 这个字体很漂亮。虽然文件大点。


不怕大,只怕小。

嫌它大了,你可以裁剪它,把不想要的字符删除即可。

这个字库是文本格式的,只要用 Linux 的 vi 来修改它就可以了。你可以下载一个 vim for windows 来编辑这些文本格式的文件。

每一行就是一个 unicode 字符的点阵。你可以随意删去不想要的行。但要注意以下几点:

1、不要插入空白行,不要插入空格之类的多余字符。

2、不要在文件头部或尾部添加多余的字符,例如多余的空行。

3、十六进制的点阵表示,不要使用小写的 abcdef,而要统一使用大写的 ABCDEF。

4、文件使用换行符(即 LF,或者 "\n",或者 ASCII 码的 0x0A )来作为一行的结尾,不要添加回车符(即 CR,或者 "\r",或者 ASCII 码的 0x0D)。

5、每行的开头有四个字节表示这个 unicode 的序号(即它的码值),第 5 个字节是冒号(当然是英文的冒号了)。

6、每行只有两种可能的长度:窄字符的行有 37 个可打印字符,加上结尾的换行符共有 38 个字节。而宽字符的行有 69 个可打印字符,加上结尾的换行符,是 70 个字节。不允许有其他长度的行存在。

只要遵守以上这些规矩,你甚至也可以添加一些原来不存在的 unicode 字符的点阵。




[ 本帖最后由 不点 于 2011-11-4 23:07 编辑 ]
回复

使用道具 举报

1493#
发表于 2011-11-4 23:04:15 | 只看该作者

回复 #1496 不点 的帖子

嘻嘻,我觉得这个字库格式还是很强大的,

比如可以自己添加一些图形字库进去,只需要把图形转换为点阵字库添加进去就行了.

@不点

有没有转换工具可以把其它的字体转换为.HEX格式?

BTW: svn 源码已经更新了.

另外:

目前GRUB4DOS有两个源码库,一个托管在GoogleCode上的使用SVN格式.

svn checkout http://grub4dos-chenall.googlecode.com/svn/trunk/

还有一个在github.com上的用GIT管理的.(更新了好久了)
git clone git://github.com/chenall/GRUB4DOS.git

喜欢用GIT管理源码的同学可以试试.我也正在学习.

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

使用道具 举报

1494#
发表于 2011-11-4 23:09:41 | 只看该作者
原帖由 chenall 于 2011-11-4 23:04 发表

@不点

有没有转换工具可以把其它的字体转换为 .HEX 格式?


暂且不知道。自己写一个,应该也不难。
回复

使用道具 举报

1495#
发表于 2011-11-5 15:35:08 | 只看该作者
由于新的版本不支持FONTFILE/UNIFONT.

使用UNIFONT的现在可以直接用VBE来代替.

使用FONTFILE的可以用内置命令,如果是为了加载小字库,目前需要有人写一个小程序.

根据MENU.LST菜单文件从UNIFONT.HEX或其它字库中提取字模生成小字库.

这个提取的方法很简单.有兴趣的自己用记事本打开UNIFONT.HEX看看就明白了.

就是把菜单文件中的文字排序一下,提取所有用到的字符的UNICODE编码.然后根据这个编码从UNIFONT.HEX提取相应字模.
回复

使用道具 举报

1496#
发表于 2011-11-5 17:30:24 | 只看该作者

回复 #1496 不点 的帖子

非常感谢。
一会更新VBE和菜单为UTF-8
回复

使用道具 举报

1497#
发表于 2011-11-5 20:34:29 | 只看该作者
可以根据文件和UNIFONT.HEX生成小字库的小程序来了(用C语言写的,很简陋的程序)

直接在WINDOWS的命令下使用.

要求.
1.UNIFONT.HEX还有MKFON.EXE还有来源文件要在同一目录下.
2.来源文件必须是UTF-8编码格式.可以是GRUB4DOS的批处理/菜单文件或其它文本文件.
3.输出文件固定为menu.hex

使用方法

在命令行中执行MKFON SOURCE或直接把来源文件拖放到MKFON.EXE程序上去.
比如以下命令会根据menu.lst里面的文字生成一个对应的HEX字库
mkfon menu.lst

使用新版GRUB4DOS的font /menu.hex命令就可以加载该字库.

需要显示什么文字就加入什么样的字库...

mkfon.zip

2.86 KB, 下载次数: 256, 下载积分: 无忧币 -2

回复

使用道具 举报

1498#
发表于 2011-11-6 16:01:44 | 只看该作者
hd0 是实体硬盘, hd1是硬盘镜像文件, 两个磁盘相互映射后, 会多出一个分区, 这是怎么回事呢?

11.3 版本
grub>find
(hd0,4)
(hd0,0)
(hd0,2)
(hd0,3)
(hd0,5)
(hd1,0)
grub>map (hd1) (hd0)
grub>map (hd0) (hd1)
grub>map --rehook
grub>find
(hd0,4)
(hd0,0)

(hd1,0)
(hd1,2)
(hd1,3)
(hd1,4)
(hd1,5)
回复

使用道具 举报

1499#
 楼主| 发表于 2011-11-6 16:25:03 | 只看该作者
楼上的分区排列很奇怪,怀疑分区表有问题。
先进系统或PE,用diskgen看一下磁盘分布贴图
g4d下用geometry (hd0) 贴图。
我虚拟机环境,模拟了你的分区情况

[ 本帖最后由 zhaohj 于 2011-11-6 16:40 编辑 ]

Snap1.jpg (67.19 KB, 下载次数: 164)

Snap1.jpg

Snap2.jpg (72.81 KB, 下载次数: 180)

Snap2.jpg
回复

使用道具 举报

1500#
发表于 2011-11-6 17:19:45 | 只看该作者

回复 #1501 chenall 的帖子

UNIFONT.HEX文件哪里寻找?
什么格式
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-12-1 08:07

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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