一、特点
1. 常见的配置菜单是逐级往下执行,不可返回,像串联。嵌套级数多时,菜单项目将会呈级数放大趋势,使菜单编写比较繁琐,重复项较多。本配置菜单是并列关系,菜单编写简捷,可阅读性强,为菜单界面布置提供较大灵活性。
2. 所有可选择项目布置在1个界面上,阅读方便,选择快捷。
3. 工作在800×600 16位增强色(114模式)。
4. 可加载jpg格式背景图像。如果不加载背景图像,则用背景颜色替代。
5. 可加载中文字库(hzk16/gbk16字体,压缩/非压缩字体,自带字体),内嵌中英文字符显示程序,为显示中文菜单提供了一个良好的平台。
6. 可屏蔽Config.sys处理过程中的显示信息。
二、简要说明
1. 选项组分为2类:复选类选项组(CheckOption),单选类选项组(RadioOption)。
复选类选项组用来加载相容的驱动程序,可不选或全选。
单选类选项组用来加载互斥的驱动程序,应选择1项且只能选择1项。
2. 项目分为2类:预加载项目(LoadItem),普通项目(Item)。
预加载项目是启动时缺省加载的项目。
3. 项目之间可以关联,有2类:被选关联(relate),未选关联(unrelate)。
被选关联:主控被选,被控有效。
未选关联:主控被选,被控无效。
有效,则可选,才有被选/未选之分。
无效,则不可选,皆按未选对待。
利用被选关联,可以组成多级菜单。利用未选关联,可以屏蔽有关项目。
4. 配置块(block)是按需要组织在一起的一组驱动程序。可在配置块里设定参数,遥控'AutoExec.bat'。可在'block=0'之前和'block=end'之后放置公共配置块。
5. 如果不加载中文字体,则显示英文。
三、使用方法
1. 选项组选择方法
按Tab或`键
2. 项目选择方法
按方向键顺序循环选择
3. 项目设定方法
复选类选项组 按空格或回车键,选定/清除
单选类选项组 按方向键的同时既被选定
4. 菜单退出方法
按Esc或退格键
只有1组单选类选项组时,可按空格或回车键
选择'退出'按钮,按空格或回车键
5. 开关参数
/s 屏蔽config.sys显示信息。
/u 解除屏蔽。
6. 英文字母大小写转换
在同一行中,默认为大写,遇^转换。
例:c^onfig^p.m^nu 显示为 ConfigP.Mnu
四、语法说明
1. 选项组
; 选项组顺序号CheckOption=左上角x,左上角y,右下角x,右下角y=项目布置=标签颜色,标签内容
; 选项组顺序号RadioOption=左上角x,左上角y,右下角x,右下角y=项目布置=标签颜色,标签内容
选项组类型 CheckOption 复选类选项组;RadioOption 单选类选项组
选项组顺序号 0-99 顺序编号
选项组范围 左上角为原点,水平象素x(0-799),垂直象素y(0-599)
项目布置 1行有几列(1,2,3,...)
标签颜色 红(00-ff)绿(00-ff)兰(00-ff)
标签内容
例: =100,100,700,140=3=ffff00,上位内存管理
=100,170,700,250=4=,加载光驱驱动
2. 项目颜色
; color=未选项背景,未选项前景,被选项背景,被选项前景
缺省 黑,白,白,高白
背景/前景颜色 红(00-ff)绿(00-ff)兰(00-ff)
未选项背景也就是屏幕背景(未加载图像或加载部分图像时)
未选项背景=被选项背景时,加载图像时字符以图像为背景
未选项背景≠被选项背景时,加载图像时字符以被选项背景取代图像背景
例: =000000,808080,808080,ffffff
=000080,808080,000080,ffffff
3. 字体
; rem font=字体名称
字体类型 hzk16/gbk16 压缩/非压缩 自带字体(可用于任何语言)
字体名称 可带路径
自带字体格式 偏移 长度 描述
00 2字节 字符数量(x)
02 2x字节 字符内码(8100-ffff)
2x+02 32x 字符点阵映象,横向取模
注:附带16j.dot/16g.dot为压缩hzk16/gbk16字体
可使用本是的Mkfon.com生成自带字体
例:=16g.dot
4. 动态项目提示
; rem prompt=列=提示颜色
缺省 8列,被选项前景
提示位置 列(1-83) 行在时间位置
提示颜色 红(00-ff)绿(00-ff)兰(00-ff)
例: =3=ff0000
==ff0000
=
5. 等待时间
; time=行=时间,标签
缺省 33行60秒
时间位置 行(1-33)
时间长度 秒(0-60)
时间标签 "剩余时间"
例: =32=30,剩余时间
=32=30
=32
=
6. 背景图像
; image=水平象素偏移,垂直象素偏移=名称
缺省 偏移0,0
图像位置 左上角为原点(0,0),水平象素(0-799),垂直象素(0-599)
图像名称 jpg格式,最大象素800*600
例: =0,0=lt.jpg
==lt.jpg
=500,100=xy.jpg
7. 关联
; relate=主控项目顺序号,主控项目顺序号,...=被控项目顺序号,被控项目顺序号,...
关联类型 relate 被选关联, unrelate 未选关联
例: =1=3,4 =1,2=3,4
8. 注释
; note=行,列=注释颜色,注释内容
注释位置 行(1-33),列(1-100)
注释颜色 红(00-ff)绿(00-ff)兰(00-ff)
注释内容
例: =2,20=800000,中文 MSDOS_7.1 启动盘
=2,20=,中文 MSDOS_7.1 启动盘
9. 项目
; 项目顺序号LoadItem=配置块顺序号,配置块顺序号,...=项目标题=项目动态提示
; 项目顺序号Item=配置块顺序号,配置块顺序号,...=项目内容
项目顺序号 0-99 顺序编号
配置块顺序号 该项目所包含的配置块
项目标题
项目动态提示
例: LoadItem=0,9=加载 umbpci=使用上位内存
10. 配置块
; block=配置块顺序号
....
; block=end
配置块顺序号 0-99 顺序编号
end 配置块结束符
例: ; block=0
decice=umbpci.sys
set cm=cdrom
; block=1
decice=emm386.exe
...
; block=end
五、其他说明
1. rem可用'; '代替。
2.选项组标签颜色(或注释内容颜色),全部缺省时按未选项目前景处理,否则按前一选项组标签颜色(或注释内容颜色)处理。
3. 颜色可参考'web_216颜色表',但不局限于此表。
例1:特点 多选项组,加载全屏图像
选择第2项目“最小加载”时,屏蔽第3-20项目
device=ConfigP.Mnu /s
; color=000099,bbbbbb,000099,ffffff
; prompt=12=ff33ff
; time=32=10,剩余时间
; image=0,0=lt.jpg
; font=16g.dot
; note=2,40=00ffff,中文 MSDOS_7.1 启动盘
; note=3,30=,─────────────────────
; note=33,29=00ff00,按T^ab选择项目组,按方向键选择项目,按回车键更改
; unrelate=2=3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20
; 0RadioOption=100,100,700,140=3=ffcc00,上位内存管理
; 0LoadItem=0,20=umbpci=使用上位内存
; 1item=1,20=emm386=使用上位内存,扩充内存
; 2item=21=最小系统
; 1CheckOption=100,170,700,250=4=,加载光驱驱动
; 3LoadItem=2=udvd
; 4Item=3=qcdrom
; 5Item=4=gcdrom
; 6Item=5=uide
; 7item=6=vide-cdd
; 8item=7=aspicd
; 9item=8=usbcd
; 2CheckOption=100,280,700,320=4=,加载 usb 驱动
; 10item=9=usbaspi
; 11item=10=di1000dd
; 12item=11=aspiohci
; 13item=12=aspiuhci
; 3CheckOption=100,350,700,450=4=,项目支持
; 14Loaditem=13=长文件名
; 15Loaditem=14=中文=加载acios,支持gbk
; 16Loaditem=15=鼠标
; 17item=16=高速缓存=在DOS下按装Windows,必须先运行此磁盘高速缓存程序,以加快安装。
; 18item=17=vpc9x文件共享=在vpc5.2中共享文件夹
; 19item=18=vpc2k7文件共享=在vpv2007中共享文件夹
; 20item=19=ntfs分区=ntfs分区读写支持
device=himem.sys
; block=0
device=umbpci.sys
; block=1
device=emm386.exe NOEMS
; block=2
device=udvd.sys /d:udv-cd
; block=3
device=qcdrom.sys /d:qcd-cd
; block=4
device=gcdrom.sys /d:gcd-cd
; block=5
DEVICE=uide.sys /s40 /d:uid-cd
; block=6
device=vide-cdd.sys /d:vid-cd
; block=7
device=aspicd.sys /d:asp-cd
; block=8
device=usbcd.sys /d:usb-cd
; block=9
device=usbaspi.sys /r /NORST
; block=10
device=di1000dd.sys
; block=11
device=aspiohci.sys /int /all
; block=12
device=aspiuhci.sys /int /all
; block=13
set cwjm=1
; block=14
set zw=1
; block=15
set sb=1
; block=16
set gshc=1
; block=17
set vpc=1
; block=18
set vpc=2
; block=19
set ntfs=1
; block=20
dos=high,umb,auto
; block=21
set zx=1
; block=end
fcbshigh=4,0
fileshigh=30
buffershigh=30,0
lastdrive=z
device=ConfigP.Mnu /u
对应的autoexec.bat
@echo off
set DIRCMD=/O:N /O:G /P /4
path=a:\;c:\;z:\
if not %zx%#==1# goto cwjm
set zx=
goto end
:cwjm
if not %cwjm%#==1# goto sb
LFNFOR ON
DOSLFN /C- /Z:CP936UNI.TBL > nul
set cwjm=
:sb
if not %sb%#==1# goto gshc
ctmouse > nul
mousclip > nul
set sb=
:gshc
if not %gshc%#==1# goto vpc1
smartdrv /X 4096 2048 > nul
set gshc=
:vpc1
if not %vpc%#==1# goto vpc2
fshare98 > nul
:: idle > nul
set vpc=
goto ntfs
:vpc2
if not %vpc%#==2# goto ntfs
fshare07 > nul
set vpc=
:ntfs
if not %ntfs%#==1# goto zw
call nt.bat > nul
set ntfs=
:zw
if not %zw%#==1# goto gg
call ac.bat > nul
set zw=
:gg
doskey > nul
SHCDX33c /d:?udv-cd /d:?qcd-cd /d:?gcd-cd /d:?uid-cd /d:?vid-cd /d:?asp-cd /d:?usb-cd > nul
ansi > nul
call m.bat
:end
例2:特点 只有1组单选类选项组,加载局部图像
device=ConfigP.Mnu /s
; color=0000bb,bbbbbb,0000bb,ffffff
; time=31=10,剩余时间
; prompt=8=ff33ff
; font=16g.dot
; image=500,100=xy.jpg
; note=2,40=00ffff,中文 MSDOS_7.1 启动盘
; note=3,30=,─────────────────────
; note=33,38=00ff00,按方向键选择项目,按回车键执行
; RadioOption=100,100,450,500=1=cccc00,选择启动模式
; item=0=保护模式 加载 EMM386=使用上位内存
; item=0,2,4=保护模式 加载 EMM386 和 CD-ROM
; item=0,2,3,4=保护模式 加载 EMM386 , CD-ROM 和 USB
; item=1=实模式 加载 UMBPCI
; LoadItem=1,2,4=实模式 加载 UMBPCI 和 CD-ROM
; item=1,2,3,4=实模式 加载 UMBPCI , CD-ROM 和 USB
device=himem.sys
; block=0
device=emm386.exe noems
; block=1
device=umbpci.sys
; block=2
devicehigh=vide-cdd.sys /d:ide-cd
devicehigh=aspicd.sys /d:scsi-cd
; block=3
device=usbcd.sys /d:usb-cd
device=usbaspi.sys /r
device=aspiohci.sys /int /all
device=aspiuhci.sys /int /all
device=di1000dd.sys
; block=4
set cdrom=1
; block=end
dos=high,umb,auto
fcbshigh=4,0
fileshigh=30
buffershigh=30,0
lastdrivehigh=32
stackshigh=9,256
device=ConfigP.Mnu /u
例3:特点 多级选择
选择第0项目“DOS工具箱”时,第3、4项目才有效(可选择)
......
; relate=0=3,4
; RadioOption=100,100,700,140 6,8,10,72=3=ffcc00,选择类型
; 0Item==DOS工具箱
; 1Loaditem=0=纯DOS
; 2item=3=江民杀毒
; RadioOption=100,225,700,265=2=ffcc00,DOS工具箱
; 3LoadItem=1=ghost8.3
; 4item=2=中文版DM
........
; block=0
set config=dos
; block=1
set config=ghost
; block=2
set config=dm
; block=3
set config=jm
........
v4.00 2009/4/6
修改:由显示模式111(640×480 16位增强色)改为显示模式114(800×600 16位增强色),容纳更多信息
增加:字体格式,可加载hzk16、gbk16字体,可加载压缩、非压缩字体,可加载自带字体
增加:项目动态提示,便于详细描述项目用途
修改:可以在虚拟机VM中正常使用
修改:选项组位置由行列确定改为由象素确定
修改:内部使用保护模式,不需要预先加载himem.sys
修改:按钮文字由“继续”改为“确定”
修改:关联算法
v4.01 2009/4/26
修改:上下方向键可在本列移动,左右方向键可跨行移动
修正:项目标题字符数量被限制
改进:与虚拟机的兼容性
v4.02 2009/5/11
修改:关联表达式可设置多项主控
[ Last edited by yaya on 2009-5-11 at 23:13 ]
1. 常见的配置菜单是逐级往下执行,不可返回,像串联。嵌套级数多时,菜单项目将会呈级数放大趋势,使菜单编写比较繁琐,重复项较多。本配置菜单是并列关系,菜单编写简捷,可阅读性强,为菜单界面布置提供较大灵活性。
2. 所有可选择项目布置在1个界面上,阅读方便,选择快捷。
3. 工作在800×600 16位增强色(114模式)。
4. 可加载jpg格式背景图像。如果不加载背景图像,则用背景颜色替代。
5. 可加载中文字库(hzk16/gbk16字体,压缩/非压缩字体,自带字体),内嵌中英文字符显示程序,为显示中文菜单提供了一个良好的平台。
6. 可屏蔽Config.sys处理过程中的显示信息。
二、简要说明
1. 选项组分为2类:复选类选项组(CheckOption),单选类选项组(RadioOption)。
复选类选项组用来加载相容的驱动程序,可不选或全选。
单选类选项组用来加载互斥的驱动程序,应选择1项且只能选择1项。
2. 项目分为2类:预加载项目(LoadItem),普通项目(Item)。
预加载项目是启动时缺省加载的项目。
3. 项目之间可以关联,有2类:被选关联(relate),未选关联(unrelate)。
被选关联:主控被选,被控有效。
未选关联:主控被选,被控无效。
有效,则可选,才有被选/未选之分。
无效,则不可选,皆按未选对待。
利用被选关联,可以组成多级菜单。利用未选关联,可以屏蔽有关项目。
4. 配置块(block)是按需要组织在一起的一组驱动程序。可在配置块里设定参数,遥控'AutoExec.bat'。可在'block=0'之前和'block=end'之后放置公共配置块。
5. 如果不加载中文字体,则显示英文。
三、使用方法
1. 选项组选择方法
按Tab或`键
2. 项目选择方法
按方向键顺序循环选择
3. 项目设定方法
复选类选项组 按空格或回车键,选定/清除
单选类选项组 按方向键的同时既被选定
4. 菜单退出方法
按Esc或退格键
只有1组单选类选项组时,可按空格或回车键
选择'退出'按钮,按空格或回车键
5. 开关参数
/s 屏蔽config.sys显示信息。
/u 解除屏蔽。
6. 英文字母大小写转换
在同一行中,默认为大写,遇^转换。
例:c^onfig^p.m^nu 显示为 ConfigP.Mnu
四、语法说明
1. 选项组
; 选项组顺序号CheckOption=左上角x,左上角y,右下角x,右下角y=项目布置=标签颜色,标签内容
; 选项组顺序号RadioOption=左上角x,左上角y,右下角x,右下角y=项目布置=标签颜色,标签内容
选项组类型 CheckOption 复选类选项组;RadioOption 单选类选项组
选项组顺序号 0-99 顺序编号
选项组范围 左上角为原点,水平象素x(0-799),垂直象素y(0-599)
项目布置 1行有几列(1,2,3,...)
标签颜色 红(00-ff)绿(00-ff)兰(00-ff)
标签内容
例: =100,100,700,140=3=ffff00,上位内存管理
=100,170,700,250=4=,加载光驱驱动
2. 项目颜色
; color=未选项背景,未选项前景,被选项背景,被选项前景
缺省 黑,白,白,高白
背景/前景颜色 红(00-ff)绿(00-ff)兰(00-ff)
未选项背景也就是屏幕背景(未加载图像或加载部分图像时)
未选项背景=被选项背景时,加载图像时字符以图像为背景
未选项背景≠被选项背景时,加载图像时字符以被选项背景取代图像背景
例: =000000,808080,808080,ffffff
=000080,808080,000080,ffffff
3. 字体
; rem font=字体名称
字体类型 hzk16/gbk16 压缩/非压缩 自带字体(可用于任何语言)
字体名称 可带路径
自带字体格式 偏移 长度 描述
00 2字节 字符数量(x)
02 2x字节 字符内码(8100-ffff)
2x+02 32x 字符点阵映象,横向取模
注:附带16j.dot/16g.dot为压缩hzk16/gbk16字体
可使用本是的Mkfon.com生成自带字体
例:=16g.dot
4. 动态项目提示
; rem prompt=列=提示颜色
缺省 8列,被选项前景
提示位置 列(1-83) 行在时间位置
提示颜色 红(00-ff)绿(00-ff)兰(00-ff)
例: =3=ff0000
==ff0000
=
5. 等待时间
; time=行=时间,标签
缺省 33行60秒
时间位置 行(1-33)
时间长度 秒(0-60)
时间标签 "剩余时间"
例: =32=30,剩余时间
=32=30
=32
=
6. 背景图像
; image=水平象素偏移,垂直象素偏移=名称
缺省 偏移0,0
图像位置 左上角为原点(0,0),水平象素(0-799),垂直象素(0-599)
图像名称 jpg格式,最大象素800*600
例: =0,0=lt.jpg
==lt.jpg
=500,100=xy.jpg
7. 关联
; relate=主控项目顺序号,主控项目顺序号,...=被控项目顺序号,被控项目顺序号,...
关联类型 relate 被选关联, unrelate 未选关联
例: =1=3,4 =1,2=3,4
8. 注释
; note=行,列=注释颜色,注释内容
注释位置 行(1-33),列(1-100)
注释颜色 红(00-ff)绿(00-ff)兰(00-ff)
注释内容
例: =2,20=800000,中文 MSDOS_7.1 启动盘
=2,20=,中文 MSDOS_7.1 启动盘
9. 项目
; 项目顺序号LoadItem=配置块顺序号,配置块顺序号,...=项目标题=项目动态提示
; 项目顺序号Item=配置块顺序号,配置块顺序号,...=项目内容
项目顺序号 0-99 顺序编号
配置块顺序号 该项目所包含的配置块
项目标题
项目动态提示
例: LoadItem=0,9=加载 umbpci=使用上位内存
10. 配置块
; block=配置块顺序号
....
; block=end
配置块顺序号 0-99 顺序编号
end 配置块结束符
例: ; block=0
decice=umbpci.sys
set cm=cdrom
; block=1
decice=emm386.exe
...
; block=end
五、其他说明
1. rem可用'; '代替。
2.选项组标签颜色(或注释内容颜色),全部缺省时按未选项目前景处理,否则按前一选项组标签颜色(或注释内容颜色)处理。
3. 颜色可参考'web_216颜色表',但不局限于此表。
例1:特点 多选项组,加载全屏图像
选择第2项目“最小加载”时,屏蔽第3-20项目
device=ConfigP.Mnu /s
; color=000099,bbbbbb,000099,ffffff
; prompt=12=ff33ff
; time=32=10,剩余时间
; image=0,0=lt.jpg
; font=16g.dot
; note=2,40=00ffff,中文 MSDOS_7.1 启动盘
; note=3,30=,─────────────────────
; note=33,29=00ff00,按T^ab选择项目组,按方向键选择项目,按回车键更改
; unrelate=2=3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20
; 0RadioOption=100,100,700,140=3=ffcc00,上位内存管理
; 0LoadItem=0,20=umbpci=使用上位内存
; 1item=1,20=emm386=使用上位内存,扩充内存
; 2item=21=最小系统
; 1CheckOption=100,170,700,250=4=,加载光驱驱动
; 3LoadItem=2=udvd
; 4Item=3=qcdrom
; 5Item=4=gcdrom
; 6Item=5=uide
; 7item=6=vide-cdd
; 8item=7=aspicd
; 9item=8=usbcd
; 2CheckOption=100,280,700,320=4=,加载 usb 驱动
; 10item=9=usbaspi
; 11item=10=di1000dd
; 12item=11=aspiohci
; 13item=12=aspiuhci
; 3CheckOption=100,350,700,450=4=,项目支持
; 14Loaditem=13=长文件名
; 15Loaditem=14=中文=加载acios,支持gbk
; 16Loaditem=15=鼠标
; 17item=16=高速缓存=在DOS下按装Windows,必须先运行此磁盘高速缓存程序,以加快安装。
; 18item=17=vpc9x文件共享=在vpc5.2中共享文件夹
; 19item=18=vpc2k7文件共享=在vpv2007中共享文件夹
; 20item=19=ntfs分区=ntfs分区读写支持
device=himem.sys
; block=0
device=umbpci.sys
; block=1
device=emm386.exe NOEMS
; block=2
device=udvd.sys /d:udv-cd
; block=3
device=qcdrom.sys /d:qcd-cd
; block=4
device=gcdrom.sys /d:gcd-cd
; block=5
DEVICE=uide.sys /s40 /d:uid-cd
; block=6
device=vide-cdd.sys /d:vid-cd
; block=7
device=aspicd.sys /d:asp-cd
; block=8
device=usbcd.sys /d:usb-cd
; block=9
device=usbaspi.sys /r /NORST
; block=10
device=di1000dd.sys
; block=11
device=aspiohci.sys /int /all
; block=12
device=aspiuhci.sys /int /all
; block=13
set cwjm=1
; block=14
set zw=1
; block=15
set sb=1
; block=16
set gshc=1
; block=17
set vpc=1
; block=18
set vpc=2
; block=19
set ntfs=1
; block=20
dos=high,umb,auto
; block=21
set zx=1
; block=end
fcbshigh=4,0
fileshigh=30
buffershigh=30,0
lastdrive=z
device=ConfigP.Mnu /u
对应的autoexec.bat
@echo off
set DIRCMD=/O:N /O:G /P /4
path=a:\;c:\;z:\
if not %zx%#==1# goto cwjm
set zx=
goto end
:cwjm
if not %cwjm%#==1# goto sb
LFNFOR ON
DOSLFN /C- /Z:CP936UNI.TBL > nul
set cwjm=
:sb
if not %sb%#==1# goto gshc
ctmouse > nul
mousclip > nul
set sb=
:gshc
if not %gshc%#==1# goto vpc1
smartdrv /X 4096 2048 > nul
set gshc=
:vpc1
if not %vpc%#==1# goto vpc2
fshare98 > nul
:: idle > nul
set vpc=
goto ntfs
:vpc2
if not %vpc%#==2# goto ntfs
fshare07 > nul
set vpc=
:ntfs
if not %ntfs%#==1# goto zw
call nt.bat > nul
set ntfs=
:zw
if not %zw%#==1# goto gg
call ac.bat > nul
set zw=
:gg
doskey > nul
SHCDX33c /d:?udv-cd /d:?qcd-cd /d:?gcd-cd /d:?uid-cd /d:?vid-cd /d:?asp-cd /d:?usb-cd > nul
ansi > nul
call m.bat
:end
例2:特点 只有1组单选类选项组,加载局部图像
device=ConfigP.Mnu /s
; color=0000bb,bbbbbb,0000bb,ffffff
; time=31=10,剩余时间
; prompt=8=ff33ff
; font=16g.dot
; image=500,100=xy.jpg
; note=2,40=00ffff,中文 MSDOS_7.1 启动盘
; note=3,30=,─────────────────────
; note=33,38=00ff00,按方向键选择项目,按回车键执行
; RadioOption=100,100,450,500=1=cccc00,选择启动模式
; item=0=保护模式 加载 EMM386=使用上位内存
; item=0,2,4=保护模式 加载 EMM386 和 CD-ROM
; item=0,2,3,4=保护模式 加载 EMM386 , CD-ROM 和 USB
; item=1=实模式 加载 UMBPCI
; LoadItem=1,2,4=实模式 加载 UMBPCI 和 CD-ROM
; item=1,2,3,4=实模式 加载 UMBPCI , CD-ROM 和 USB
device=himem.sys
; block=0
device=emm386.exe noems
; block=1
device=umbpci.sys
; block=2
devicehigh=vide-cdd.sys /d:ide-cd
devicehigh=aspicd.sys /d:scsi-cd
; block=3
device=usbcd.sys /d:usb-cd
device=usbaspi.sys /r
device=aspiohci.sys /int /all
device=aspiuhci.sys /int /all
device=di1000dd.sys
; block=4
set cdrom=1
; block=end
dos=high,umb,auto
fcbshigh=4,0
fileshigh=30
buffershigh=30,0
lastdrivehigh=32
stackshigh=9,256
device=ConfigP.Mnu /u
例3:特点 多级选择
选择第0项目“DOS工具箱”时,第3、4项目才有效(可选择)
......
; relate=0=3,4
; RadioOption=100,100,700,140 6,8,10,72=3=ffcc00,选择类型
; 0Item==DOS工具箱
; 1Loaditem=0=纯DOS
; 2item=3=江民杀毒
; RadioOption=100,225,700,265=2=ffcc00,DOS工具箱
; 3LoadItem=1=ghost8.3
; 4item=2=中文版DM
........
; block=0
set config=dos
; block=1
set config=ghost
; block=2
set config=dm
; block=3
set config=jm
........
v4.00 2009/4/6
修改:由显示模式111(640×480 16位增强色)改为显示模式114(800×600 16位增强色),容纳更多信息
增加:字体格式,可加载hzk16、gbk16字体,可加载压缩、非压缩字体,可加载自带字体
增加:项目动态提示,便于详细描述项目用途
修改:可以在虚拟机VM中正常使用
修改:选项组位置由行列确定改为由象素确定
修改:内部使用保护模式,不需要预先加载himem.sys
修改:按钮文字由“继续”改为“确定”
修改:关联算法
v4.01 2009/4/26
修改:上下方向键可在本列移动,左右方向键可跨行移动
修正:项目标题字符数量被限制
改进:与虚拟机的兼容性
v4.02 2009/5/11
修改:关联表达式可设置多项主控
[ Last edited by yaya on 2009-5-11 at 23:13 ]
Gemini 解答
这是一份针对 CN-DOS 论坛关于
ConfigP.Mnu v4.02讨论帖的技术解析与补充说明。1. 软件定位与核心机制
ConfigP.Mnu是由 yaya 开发的Config.sys增强插件。其核心价值在于打破了 MS-DOS 原生配置菜单([Menu]块)的线性串联限制,实现了并列式、图形化的交互界面。在传统的
Config.sys中,若要实现多组驱动的自由组合,开发者必须编写大量的嵌套菜单块(Block),导致配置逻辑随功能增加呈几何倍数复杂化。ConfigP.Mnu通过在图形界面下实时处理关联逻辑(relate/unrelate),并将选择结果映射到特定的配置块(block),极大简化了复杂启动盘的制作。2. 技术细节解析
GBK 汉字内码转换算法
在帖子中,本是(Post #2)与 yaya(Post #3)讨论了汉字内码转字库偏移量的算法。这是 DOS 时代中文显示的核心技术。
- 本是提出的算法:是标准的区位码/GBK 逻辑判断法,通过判断高位字节(AH)和低位字节(AL)的范围,将 GBK 编码空间(非连续)映射到连续的字库偏移地址。
- yaya 的算法:
((ch1-0x81)*0xbe+(ch2-0x40)-ch2/0x80)*2*10(十六进制)。
0xbe(190) 是 GBK 每个区位对应的字符总数。-ch2/0x80是为了处理 GBK 编码中跳过的0x7F位(DEL 键)。- 最后乘以
2*10(即 32 字节)对应 16x16 点阵字库中每个汉字占用的存储空间。关联逻辑 (Relate/Unrelate)
这是该工具最强大的功能。
- relate(被选关联):主控项选中后,被控项才变为可用状态(Enabled)。常用于制作二级子菜单。
- unrelate(未选关联):主控项选中后,被控项强制失效(Disabled)。常用于排除互斥驱动(如加载了
UMBPCI就不能加载EMM386)。- 历史修正:在早期版本中,关联逻辑仅支持单对单或单对多。v4.02 修正了算法,支持多主控项关联,解决了 VeDe 在 Post #13 中提出的“无法指定多个主控项目顺序号”的问题。
3. 环境与兼容性问题纠正
800×600 分辨率与 VBE 模式
v4.0 引入了 VESA VBE 模式 0x114 (800x600, 16-bit High Color)。
- 显示不全问题(Post #17/20):VeDe 发现屏幕右侧标题显示不全。这并非纯粹的软件 Bug,而是当年 DOS 硬件环境的典型现象:
- VBE 兼容性:部分显卡(或老旧虚拟机的 VBE 实现)对非标准 VBE 模式的逻辑扫描线宽度(Scanline Width)处理不一致,导致横向像素越界时坐标计算偏移。
- 坐标溢出:早期版本中项目标题长度可能被硬编码限制在特定缓冲区内,yaya 在 v4.01 中明确修正了“项目标题字符数量限制”。
虚拟机兼容性
Post #19 提到的虚拟机差异是 DOS 开发的常态。
- QEMU/Bochs:对 VBE 寄存器的模拟较为底层,若程序未正确处理显存分页(Bank Switching)或线性帧缓冲区(LFB),容易花屏。
- VMware/VirtualBox:对 VBE 2.0+ 支持较好,这也是为何 xiaolongkun0 在这些环境下无法复现问题的原因。
4. 关键更新总结 (v4.0 - v4.02)
- 保护模式集成:v4.0 开始内部使用保护模式处理显示逻辑,不再强依赖
HIMEM.SYS预加载,提高了在某些特殊引导环境下的稳定性。- 字体支持:支持压缩格式的
.dot字库。这在 DOS 软盘时代至关重要,因为完整的 GBK 字库文件体积超过 1MB,通过压缩可以显著节省启动盘空间。- 交互改进:v4.01 引入了真正的二维导航,方向键不再是简单的线性循环,而是可以根据 UI 布局进行逻辑上的上下左右移动。
5. 使用建议与规范
在编写
Config.sys时,请务必注意ConfigP.Mnu的两次调用:
- 第一次调用:
device=ConfigP.Mnu /s。/s参数用于静默模式,防止 DOS 原生的配置行回显破坏图形界面。- 配置定义:在两次调用之间定义所有的
block块和 UI 参数。- 第二次调用:
device=ConfigP.Mnu /u。/u参数用于解除屏蔽并释放临时资源,确保后续驱动加载信息的正常显示。技术前提:该工具依赖显卡对 VESA 1.2+ 标准的支持。在一些仅支持 VGA (640x480, 16 colors) 的极老旧工业级硬件上可能无法运行。
附件

另外那个“确定”按钮不知道是否可以隐藏,在风格更改的情况下,该按钮因为不可以更改风格,可能会造成视觉整体上的不和谐。