|
yaya
银牌会员
    
积分 1009
发帖 353
注册 2003-9-4
状态 离线
|
『楼 主』:
用于 Config.sys 的驱动程序并列配置菜单 ConfigP.Mnu v1.01
使用 LLM 解释/回答一下
一、特点
1. 常见的配置菜单是逐级往下执行,不可返回,像串联。嵌套级数多时,菜单项目将会呈级数放大趋势,使菜单编写比较繁琐,重复项较多。本配置菜单是并列关系,菜单编写简捷,可阅读性强。菜单可连续选择,也可顺序返回。
2. 为显示中文菜单提供了一个平台。
3. 设有标题和尾注,每行都可单独设定颜色。
4. 设有注释,为菜单提供简要说明,可单独设定颜色和位置。
5. 可屏蔽显示信息。
二、简要说明
1. 菜单分为3种:嵌套菜单(NestMenu),复选菜单(CheckMenu),单选菜单(RadioMenu)。
嵌套菜单用来选择下一步打开哪一个菜单。它更像是一个目录,说明配置哪些内容,缺省加载哪些内容。
嵌套菜单可以没有项目。
复选菜单用来加载相容的驱动程序,可不选或全选。
单选菜单用来加载互斥的驱动程序,应选择1项且只能选择1项。
2. 项目分为2种:默认项目(DefaultItem),普通项目(Item)。
默认项目是启动时缺省加载的项目。
3. 配置块(block)是按需要组织在一起的一组驱动程序。可在配置块里设定参数,遥控AutoExec.bat。
可在 block=0 之前和 block=end 之后放置公共配置块。
4. 如果菜单中不含标题、尾注、默认颜色,则继承上一菜单内容。
5. 如果菜单中的标题、尾注不含颜色,则使用默认颜色。
6. 如果菜单中注释不含颜色、位置,则继承上一菜单内容。
三、使用方法
1. 选择项目方法
a. 按相应字母键。
b. 按↑/↓键,向上/向下顺序循环选择。
2. 设定项目方法
在复选菜单被选项目按空格键,设定项目/清除项目。
3. 选择菜单方法
a. 按→键,向后连续选择。
b. 按←键,顺序返回。
c. 在嵌套菜单被选项目按空格键,打开指定菜单。
4. 退出菜单方法
在任意菜单按回车键,退出菜单配置。
5. 开关参数
a. /s 屏蔽config.sys显示信息
b. /u 解除屏蔽
四、语法说明
1. 菜单
rem 0NestMenu=e,u,....
rem 0CheckMenu=e,u,....
rem 0RadioMenu=e,u,....
0 菜单顺序号
e 注释颜色(0...f),缺省color
u 注释位置(u显示在上部,d显示在下部),缺省d
.... 注释内容
例:=e,u,....
=e,,....
=,u,....
=,,....
=
2. 默认颜色,被选项目显示方式,缺省07,c
rem color=
背景前景色(00...ff)(闪烁已更改为高亮)
0黑 1蓝 2绿 3青 4红 5品红 6棕 7白 8灰 9亮蓝 a亮绿 b亮青 c亮红 d亮品红 e黄 f亮白
被选项目显示方式(c反色,h高亮)
例:=07,h
=07
=,h
3. 主菜单时间,时间标签,缺省60
rem time=30,....
30 时间(秒)
.... 时间标签
例:=30,剩余时间
=30
4. 标题
rem caption=7,....
7 标题颜色(0...f),缺省color
.... 标题内容
例:=7,....
=,....
=
5. 尾注
rem endnote=7,....
7 尾注颜色(0...f),缺省color
.... 尾注内容
例:=7,....
=,....
=
6. 项目
rem item=2=....
rem DefaultItem=2,11=....
数字 对于嵌套菜单,是菜单顺序号(打开第2页菜单)
对于单选菜单、复选菜单是配置块顺序号(包含第2,11配置块)
.... 项目说明
7. 配置块
rem block=0
....
rem block=end
0 配置块顺序号
end 配置块结束符
Last edited by yaya on 2006-3-28 at 16:26 ]
I. Features
1. The common configuration menu is executed step by step downward and cannot be returned, like a series connection. When the nesting level is large, the menu items will show an exponential growth trend, making the menu writing relatively tedious and with many repeated items. This configuration menu is in a parallel relationship, the menu writing is simple and the readability is strong. The menu can be continuously selected or returned in sequence.
2. Provides a platform for displaying Chinese menus.
3. Has a title and a footer, and each line can set the color separately.
4. Has comments, provides brief explanations for the menu, and can set the color and position separately.
5. Can shield the display information.
II. Brief Description
1. The menu is divided into 3 types: nested menu (NestMenu), check menu (CheckMenu), and radio menu (RadioMenu).
The nested menu is used to select which menu to open next. It is more like a directory, indicating which contents are configured and which contents are loaded by default.
The nested menu can have no items.
The check menu is used to load compatible drivers, which can be not selected or all selected.
The radio menu is used to load mutually exclusive drivers, and 1 item should be selected and only 1 item can be selected.
2. The items are divided into 2 types: default item (DefaultItem) and ordinary item (Item).
The default item is the item loaded by default at startup.
3. The configuration block (block) is a group of drivers organized together as needed. Parameters can be set in the configuration block, and AutoExec.bat can be remotely controlled.
Public configuration blocks can be placed before block = 0 and after block = end.
4. If the menu does not contain a title, a footer, or a default color, it inherits the content of the previous menu.
5. If the title and footer in the menu do not contain colors, the default color is used.
6. If the comment in the menu does not contain colors and positions, it inherits the content of the previous menu.
III. Usage Method
1. Method of selecting items
a. Press the corresponding letter key.
b. Press the ↑/↓ key to cycle up/down in sequence for selection.
2. Method of setting items
Press the space bar on the selected item in the check menu to set/clear the item.
3. Method of selecting menus
a. Press the → key to continuously select backward.
b. Press the ← key to return in sequence.
c. Press the space bar on the selected item in the nested menu to open the specified menu.
4. Method of exiting the menu
Press the Enter key in any menu to exit the menu configuration.
5. Switch parameters
a. /s Shield the display information of config.sys
b. /u Remove the shielding
IV. Syntax Description
1. Menu
rem 0NestMenu=e,u,....
rem 0CheckMenu=e,u,....
rem 0RadioMenu=e,u,....
0 Menu sequence number
e Comment color (0...f), default color
u Comment position (u is displayed at the upper part , d is displayed at the lower part ), default d
.... Comment content
Example: =e,u,....
=e,,....
=,u,....
=,,....
=
2. Default color, display mode of the selected item, default 07,c
rem color=
Background and foreground color (00...ff) (blinking has been changed to highlight)
0 black 1 blue 2 green 3 cyan 4 red 5 magenta 6 brown 7 white 8 gray 9 bright blue a bright green b bright cyan c bright red d bright magenta e yellow f bright white
Display mode of the selected item (c inverse color, h highlight)
Example: =07,h
=07
=,h
3. Main menu time, time label, default 60
rem time=30,....
30 Time (seconds)
.... Time label
Example: =30,Remaining time
=30
4. Title
rem caption=7,....
7 Title color (0...f), default color
.... Title content
Example: =7,....
=,....
=
5. Footer
rem endnote=7,....
7 Footer color (0...f), default color
.... Footer content
Example: =7,....
=,....
=
6. Item
rem item=2=....
rem DefaultItem=2,11=....
Number For the nested menu, it is the menu sequence number (open the 2nd page menu)
For the radio menu and the check menu, it is the configuration block sequence number (include the 2nd and 11th configuration blocks)
.... Item description
7. Configuration block
rem block=0
....
rem block=end
0 Configuration block sequence number
end Configuration block end symbol
Last edited by yaya on 2006-3-28 at 16:26 ]
附件
1: configp1.jpg (2006-3-26 15:43, 35.14 KiB, 下载附件所需积分 1 点
,下载次数: 23)
附件
2: configp2.jpg (2006-3-26 15:43, 31.69 KiB, 下载附件所需积分 1 点
,下载次数: 20)
附件
3: ConfigP.Mnu101.rar (2006-3-28 16:24, 58.12 KiB, 下载附件所需积分 1 点
,下载次数: 1131)
|
|
2006-2-10 09:33 |
|
|
yaya
银牌会员
    
积分 1009
发帖 353
注册 2003-9-4
状态 离线
|
『第 2 楼』:
使用 LLM 解释/回答一下
例1:统一的标题、尾注,每一菜单的功能由注释说明。
(实际使用时,需由'本是'的VTMagic.com将下面的中文字体换掉)
device=config.exe (由'本是'的VTMagic.com生成)
device=ConfigP.Mnu /s
rem 0NestMenu=e,u,首菜单
rem color=17,c
rem time=30,剩余时间
rem caption=
rem caption=
rem caption=
rem caption=3, 中文 MSDOS_7.1 启动盘
rem caption=4,================================================
rem endnote=2,按↑↓键或相应字母键选择项目,按空格键设定项目
rem endnote=2,按→键向后连续选择,按←键顺序返回,按回车退出菜单
rem item=1=选择启动模式 默认加载 umbpci
rem item=2=选择光驱 默认加载 vide-cdd
rem item=3=选择usb 默认不加载
rem 1RadioMenu=,,选择启动模式 (单选)
rem DefaultItem=0,2,11=加载 umbpci
rem item=0,1,11=加载 emm386
rem item==最小加载
rem 2CheckMenu=,,选择光驱 (复选)
rem DefaultItem=3,6=加载 vide-cdd
rem item=4,6=加载 aspicd
rem item=5,6=加载 usbcd
rem 3CheckMenu=,,选择usb (复选)
rem item=7=加载 usbaspi
rem item=8=加载 aspiohci
rem item=9=加载 aspiuhci
rem item=10=加载 di1000dd
rem block=0
device=himem.sys
rem block=1
device=emm386.exe noems
rem block=2
device=umbpci.sys
rem block=3
devicehigh=vide-cdd.sys /d:ide-cd
rem block=4
devicehigh=aspicd.sys /d:scsi-cd
rem block=5
device=usbcd.sys /d:usb-cd
rem block=6
set cm=cdrom
rem block=7
device=usbaspi.sys /r
rem block=8
device=aspiohci.sys /int /all
rem block=9
device=aspiuhci.sys /int /all
rem block=10
device=di1000dd.sys
rem block=11
dos=high,umb,auto
rem block=end
fcbshigh=4,0
fileshigh=30
buffershigh=30,0
lastdrivehigh=32
stackshigh=9,256
device=ConfigP.Mnu /u
例2:每一菜单有各自的标题,不用注释
device=config.exe
device=ConfigP.Mnu /s
rem 0NestMenu=
rem color=17,c
rem time=30,剩余时间
rem caption=
rem caption=
rem caption=
rem caption=3, 中文 MSDOS_7.1 启动盘
rem caption=4,================================================
rem endnote=2,按↑↓键或相应字母键选择项目,按空格键设定项目
rem endnote=2,按→键向后连续选择,按←键顺序返回,按回车退出菜单
rem item=1=选择启动模式 默认加载 umbpci
rem item=2=选择光驱 默认加载 vide-cdd
rem item=3=选择usb 默认不加载
rem 1RadioMenu=
rem caption=
rem caption=
rem caption=
rem caption=5, 选择启动模式 (单选)
rem caption=4,================================================
rem DefaultItem=0,2,11=加载 umbpci
rem item=0,1,11=加载 emm386
rem item==最小加载
rem 2CheckMenu=
rem caption=
rem caption=
rem caption=
rem caption=5, 选择光驱 (复选)
rem caption=4,================================================
rem DefaultItem=3,6=加载 vide-cdd
rem item=4,6=加载 aspicd
rem item=5,6=加载 usbcd
rem 3CheckMenu=
rem caption=
rem caption=
rem caption=
rem caption=5, 选择usb (复选)
rem caption=4,================================================
rem item=7=加载 usbaspi
rem item=8=加载 aspiohci
rem item=9=加载 aspiuhci
rem item=10=加载 di1000dd
rem block=0
device=himem.sys
rem block=1
device=emm386.exe noems
rem block=2
device=umbpci.sys
rem block=3
devicehigh=vide-cdd.sys /d:ide-cd
rem block=4
devicehigh=aspicd.sys /d:scsi-cd
rem block=5
device=usbcd.sys /d:usb-cd
rem block=6
set cm=cdrom
rem block=7
device=usbaspi.sys /r
rem block=8
device=aspiohci.sys /int /all
rem block=9
device=aspiuhci.sys /int /all
rem block=10
device=di1000dd.sys
rem block=11
dos=high,umb,auto
rem block=end
fcbshigh=4,0
fileshigh=30
buffershigh=30,0
lastdrivehigh=32
stackshigh=9,256
device=ConfigP.Mnu /u
例3:单一菜单,有公共配置块
device=config.exe
device=ConfigP.Mnu
rem RadioMenu=
rem color=17,c
rem time=30,剩余时间
rem caption=
rem caption=
rem caption=
rem caption=3, 中文 MSDOS_7.1 启动盘
rem caption=4,================================================
rem endnote=2,按↑↓键或相应字母键选择项目,按回车退出菜单
rem item=0=保护模式 加载 EMM386
rem item=0,2=保护模式 加载 EMM386 和 CD-ROM
rem item=0,2,3=保护模式 加载 EMM386 , CD-ROM 和 USB
rem item=1=实模式 加载 UMBPCI
rem DefaultItem=1,2=实模式 加载 UMBPCI 和 CD-ROM
rem item=1,2,3=实模式 加载 UMBPCI , CD-ROM 和 USB
device=himem.sys
rem block=0
device=emm386.exe noems
rem block=1
device=umbpci.sys
rem block=2
devicehigh=vide-cdd.sys /d:ide-cd
devicehigh=aspicd.sys /d:scsi-cd
rem 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
rem block=end
dos=high,umb,auto
fcbshigh=4,0
fileshigh=30
buffershigh=30,0
lastdrivehigh=32
stackshigh=9,256
例4:一页说明,没有目录(目前显示不了这么多汉字,只作为示例)
device=config.exe
device=ConfigP.Mnu /s
rem 0NestMenu=
rem color=17,c
rem time=30,剩余时间
rem caption=
rem caption=
rem caption=
rem caption=5, MS-DOS 7.10启动盘说明文件
rem caption=4,--------------------------------------------------
rem caption=5, 版权所有:xxxxxxxxxx 2003-10-12
rem caption=
rem caption=3,长文件名支持
rem caption=3,NTFS驱动器支持
rem caption=3,鼠标支持
rem caption=3,中文支持
rem caption=3,实用工具
rem caption=3,保护模式DOS程序支持
rem caption=3,直接启动Windows 3.x/9x
rem endnote=2,按→键向后连续选择菜单,按←键顺序返回,按回车退出菜单
rem endnote=2,按↑↓键选择项目,按空格键设定项目
rem 1RadioMenu=e,,选择启动模式 (单选)
rem caption=
rem caption=
rem caption=
rem caption=5, 中文 MSDOS_7.1 启动盘
rem caption=4,================================================
rem caption=
rem DefaultItem=0,2,11=加载 umbpci
rem item=0,1,11=加载 emm386
rem item==最小加载
rem 2CheckMenu=,,选择光驱 (复选)
rem DefaultItem=3,6=加载 vide-cdd
rem item=4,6=加载 aspicd
rem item=5,6=加载 usbcd
rem 3CheckMenu=,,选择usb (复选)
rem item=7=加载 usbaspi
rem item=8=加载 aspiohci
rem item=9=加载 aspiuhci
rem item=10=加载 di1000dd
rem block=0
device=himem.sys
rem block=1
device=emm386.exe noems
rem block=2
device=umbpci.sys
rem block=3
devicehigh=vide-cdd.sys /d:ide-cd
rem block=4
devicehigh=aspicd.sys /d:scsi-cd
rem block=5
device=usbcd.sys /d:usb-cd
rem block=6
set cm=cdrom
rem block=7
device=usbaspi.sys /r
rem block=8
device=aspiohci.sys /int /all
rem block=9
device=aspiuhci.sys /int /all
rem block=10
device=di1000dd.sys
rem block=11
dos=high,umb,auto
rem block=end
fcbshigh=4,0
fileshigh=30
buffershigh=30,0
lastdrivehigh=32
stackshigh=9,256
device=ConfigP.Mnu /u
Last edited by yaya on 2006-3-28 at 16:29 ]
Example 1: Unified title and endnotes, with the function of each menu explained by comments.
(When actually in use, the Chinese font below needs to be replaced by '本是' from VTMagic.com)
device=config.exe (Generated by '本是' from VTMagic.com)
device=ConfigP.Mnu /s
rem 0NestMenu=e,u,First menu
rem color=17,c
rem time=30,Remaining time
rem caption=
rem caption=
rem caption=
rem caption=3, Chinese MSDOS_7.1 Boot Disk
rem caption=4,================================================
rem endnote=2,Press the ↑↓ keys or corresponding letter keys to select items, press the space bar to set items
rem endnote=2,Press the → key to continuously select backward, press the ← key to return in order, press Enter to exit the menu
rem item=1=Select boot mode Default load umbpci
rem item=2=Select CD drive Default load vide-cdd
rem item=3=Select USB Default not load
rem 1RadioMenu=,,Select boot mode (Single selection)
rem DefaultItem=0,2,11=Load umbpci
rem item=0,1,11=Load emm386
rem item==Minimum load
rem 2CheckMenu=,,Select CD drive (Check)
rem DefaultItem=3,6=Load vide-cdd
rem item=4,6=Load aspicd
rem item=5,6=Load usbcd
rem 3CheckMenu=,,Select USB (Check)
rem item=7=Load usbaspi
rem item=8=Load aspiohci
rem item=9=Load aspiuhci
rem item=10=Load di1000dd
rem block=0
device=himem.sys
rem block=1
device=emm386.exe noems
rem block=2
device=umbpci.sys
rem block=3
devicehigh=vide-cdd.sys /d:ide-cd
rem block=4
devicehigh=aspicd.sys /d:scsi-cd
rem block=5
device=usbcd.sys /d:usb-cd
rem block=6
set cm=cdrom
rem block=7
device=usbaspi.sys /r
rem block=8
device=aspiohci.sys /int /all
rem block=9
device=aspiuhci.sys /int /all
rem block=10
device=di1000dd.sys
rem block=11
dos=high,umb,auto
rem block=end
fcbshigh=4,0
fileshigh=30
buffershigh=30,0
lastdrivehigh=32
stackshigh=9,256
device=ConfigP.Mnu /u
Example 2: Each menu has its own title, no comments
device=config.exe
device=ConfigP.Mnu /s
rem 0NestMenu=
rem color=17,c
rem time=30,Remaining time
rem caption=
rem caption=
rem caption=
rem caption=3, Chinese MSDOS_7.1 Boot Disk
rem caption=4,================================================
rem endnote=2,Press the ↑↓ keys or corresponding letter keys to select items, press the space bar to set items
rem endnote=2,Press the → key to continuously select backward, press the ← key to return in order, press Enter to exit the menu
rem item=1=Select boot mode Default load umbpci
rem item=2=Select CD drive Default load vide-cdd
rem item=3=Select USB Default not load
rem 1RadioMenu=
rem caption=
rem caption=
rem caption=
rem caption=5, Select boot mode (Single selection)
rem caption=4,================================================
rem DefaultItem=0,2,11=Load umbpci
rem item=0,1,11=Load emm386
rem item==Minimum load
rem 2CheckMenu=
rem caption=
rem caption=
rem caption=
rem caption=5, Select CD drive (Check)
rem caption=4,================================================
rem DefaultItem=3,6=Load vide-cdd
rem item=4,6=Load aspicd
rem item=5,6=Load usbcd
rem 3CheckMenu=
rem caption=
rem caption=
rem caption=
rem caption=5, Select USB (Check)
rem caption=4,================================================
rem item=7=Load usbaspi
rem item=8=Load aspiohci
rem item=9=Load aspiuhci
rem item=10=Load di1000dd
rem block=0
device=himem.sys
rem block=1
device=emm386.exe noems
rem block=2
device=umbpci.sys
rem block=3
devicehigh=vide-cdd.sys /d:ide-cd
rem block=4
devicehigh=aspicd.sys /d:scsi-cd
rem block=5
device=usbcd.sys /d:usb-cd
rem block=6
set cm=cdrom
rem block=7
device=usbaspi.sys /r
rem block=8
device=aspiohci.sys /int /all
rem block=9
device=aspiuhci.sys /int /all
rem block=10
device=di1000dd.sys
rem block=11
dos=high,umb,auto
rem block=end
fcbshigh=4,0
fileshigh=30
buffershigh=30,0
lastdrivehigh=32
stackshigh=9,256
device=ConfigP.Mnu /u
Example 3: Single menu, with public configuration block
device=config.exe
device=ConfigP.Mnu
rem RadioMenu=
rem color=17,c
rem time=30,Remaining time
rem caption=
rem caption=
rem caption=
rem caption=3, Chinese MSDOS_7.1 Boot Disk
rem caption=4,================================================
rem endnote=2,Press Enter to exit the menu
rem item=0=Protected mode Load EMM386
rem item=0,2=Protected mode Load EMM386 and CD-ROM
rem item=0,2,3=Protected mode Load EMM386, CD-ROM and USB
rem item=1=Real mode Load UMBPCI
rem DefaultItem=1,2=Real mode Load UMBPCI and CD-ROM
rem item=1,2,3=Real mode Load UMBPCI, CD-ROM and USB
device=himem.sys
rem block=0
device=emm386.exe noems
rem block=1
device=umbpci.sys
rem block=2
devicehigh=vide-cdd.sys /d:ide-cd
devicehigh=aspicd.sys /d:scsi-cd
rem 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
rem block=end
dos=high,umb,auto
fcbshigh=4,0
fileshigh=30
buffershigh=30,0
lastdrivehigh=32
stackshigh=9,256
Example 4: One page of instructions, no directory (currently can't display so many Chinese characters, just as an example)
device=config.exe
device=ConfigP.Mnu /s
rem 0NestMenu=
rem color=17,c
rem time=30,Remaining time
rem caption=
rem caption=
rem caption=
rem caption=5, MS-DOS 7.10 Boot Disk Instruction File
rem caption=4,--------------------------------------------------
rem caption=5, Copyright: xxxxxxxxxxx 2003-10-12
rem caption=
rem caption=3,Long filename support
rem caption=3,NTFS drive support
rem caption=3,Mouse support
rem caption=3,Chinese support
rem caption=3,Practical tools
rem caption=3,Protected mode DOS program support
rem caption=3,Directly boot Windows 3.x/9x
rem endnote=2,Press the → key to continuously select menus backward, press the ← key to return in order, press Enter to exit the menu
rem endnote=2,Press the ↑↓ keys to select items, press the space bar to set items
rem 1RadioMenu=e,,Select boot mode (Single selection)
rem caption=
rem caption=
rem caption=
rem caption=5, Chinese MSDOS_7.1 Boot Disk
rem caption=4,================================================
rem caption=
rem DefaultItem=0,2,11=Load umbpci
rem item=0,1,11=Load emm386
rem item==Minimum load
rem 2CheckMenu=,,Select CD drive (Check)
rem DefaultItem=3,6=Load vide-cdd
rem item=4,6=Load aspicd
rem item=5,6=Load usbcd
rem 3CheckMenu=,,Select USB (Check)
rem item=7=Load usbaspi
rem item=8=Load aspiohci
rem item=9=Load aspiuhci
rem item=10=Load di1000dd
rem block=0
device=himem.sys
rem block=1
device=emm386.exe noems
rem block=2
device=umbpci.sys
rem block=3
devicehigh=vide-cdd.sys /d:ide-cd
rem block=4
devicehigh=aspicd.sys /d:scsi-cd
rem block=5
device=usbcd.sys /d:usb-cd
rem block=6
set cm=cdrom
rem block=7
device=usbaspi.sys /r
rem block=8
device=aspiohci.sys /int /all
rem block=9
device=aspiuhci.sys /int /all
rem block=10
device=di1000dd.sys
rem block=11
dos=high,umb,auto
rem block=end
fcbshigh=4,0
fileshigh=30
buffershigh=30,0
lastdrivehigh=32
stackshigh=9,256
device=ConfigP.Mnu /u
Last edited by yaya on 2006-3-28 at 16:29 ]
|
|
2006-2-10 09:36 |
|
|
coolboy163
初级用户
 
积分 176
发帖 74
注册 2005-11-7
状态 离线
|
『第 3 楼』:
使用 LLM 解释/回答一下
刚上班,就上来看看了
呵呵,YAYA果真的厉害啊,放假还没歇息啊
看起来很完善了,我来试试
Just got to work, then came up to take a look. Hehe, YAYA is really amazing, still not resting during the holiday. It looks quite complete, I'll give it a try.
|
|
2006-2-10 15:30 |
|
|
weilong888
银牌会员
    
积分 1270
发帖 548
注册 2004-5-31
状态 离线
|
|
2006-2-10 18:37 |
|
|
本是
银牌会员
    
积分 2221
发帖 789
注册 2005-1-27
状态 离线
|
『第 5 楼』:
使用 LLM 解释/回答一下
好!!!功能更加强大了。大家可以继续提建议,有了新想法,才有更好的作品!
Well!!!The function is more powerful. Everyone can continue to put forward suggestions. With new ideas, there will be better works!
|

my major is english----my love is dos----my teacher is the buddha----my friends--how about U |
|
2006-2-10 22:15 |
|
|
jackiepeng
中级用户
  
积分 211
发帖 38
注册 2003-8-12
状态 离线
|
|
2006-2-15 11:18 |
|
|
yaya
银牌会员
    
积分 1009
发帖 353
注册 2003-9-4
状态 离线
|
『第 7 楼』:
使用 LLM 解释/回答一下
v1.01 发布于1楼
修改:背景闪烁位改为高亮。
使背景颜色丰富,实现正确的反色显示。
在此特别感谢版主willsort一再提出改进意见和思路!
逐级执行式菜单编辑器ConMenu.sys比较适用,还是返回执行式菜单编辑器ConMenuR.sys比较适用?很想听听反馈意见。
欢迎大家继续提建议和新想法。
v1.01 released on floor 1
Modified: The background flash bit is changed to highlight.
Make the background color rich and realize correct inverse color display.
Special thanks here to moderator willsort for repeatedly putting forward improvement suggestions and ideas!
Which is more suitable, the step-by-step execution menu editor ConMenu.sys or the return execution menu editor ConMenuR.sys? I really want to hear feedback.
Everyone is welcome to continue to put forward suggestions and new ideas.
|
|
2006-2-28 17:38 |
|
|
willsort
元老会员
         Batchinger
积分 4432
发帖 1512
注册 2002-10-18
状态 离线
|
『第 8 楼』:
使用 LLM 解释/回答一下
Re yaya:
感谢兄如此看重我的意见和建议!其实无论从算法设计还是从语言实现上我都无法给你提供多少切实有效的建议,而只能从程序之外做一些简单的黑箱测试,然后从一个客户的角度谈一谈自己的看法。同时,我对 DOS 启动技术的了解仍然不够全面和深入,之所以厚颜回复你的主题,一方面是为了表达对论坛原创作品的支持,希望能够抛砖引玉,使大家来关注你的程序以及其所涉及的领域;另一方面是彼时我恰在做二次引导扩展启动配置菜单的研究,希望能从你的程序中获得思路和灵感。后来,因为自己技术功底不足,我的研究半道夭折了,以后也就将注意力转回了我所爱好的批处理之上;现在看到你的邀请,感觉十分愧对兄的一腔热情,不得不勉力对兄的新作 ConMenuR 作了一些观摩和测试,所得如下,愿与兄及各位同仁共享。
关于返回执行和逐级执行的选择,我个人更看好“返回执行式菜单编辑器ConMenuR.sys”,因为它在程序算法上确实是一个突破,而在功能实现上也独出一格。与 IO.SYS 相比,解决了复式选择、重新选择、连续选择等关键性问题。而 Block 的创意性构思,也大大降低了 include 多级嵌套所带来的程序编写和菜单编写的复杂度,同时也增加了菜单的可阅读性。至于它所带来的默认设置复杂的问题,我认为可以通过以下的“同级的连续菜单”的实现来部分解决。
关于“同级的连续菜单”,与你的 ConMenuR 中的示例非常相近,它主要是针对不可返回的菜单而言的。就以 ConMenuR 示例的实现需求来说,如果菜单不可返回,而我们选择完内存管理程序后,还希望选择光驱和 USB 设备驱动,而这些选择如果作为二、三级菜单实现,就需要在每个一级菜单项中都实现二级菜单,在每个二级菜单项中都实现三级菜单,这样随着设备种类的增加,菜单项将会呈级数放大趋势。这正是你所提到的“编写菜单比较繁琐,重复项较多”的问题。
而如果将内存管理程序、光驱驱动和 USB 驱动都在同一级菜单中实现选择,即选择完内存管理后,不必进入下一级(或进入后又返回)而继续选择设备驱动,USB驱动亦然,这样就很大程度上节约了菜单编写上的重复性。目前版本的返回执行式菜单的实现,使这个功能变得没有太大必要了,但是如果实现的话,即在“返回菜单前”加上一项“继续选择”,或者加上一个“继续选择”的快捷键(比如Enter),那么用户就可以不必返回菜单而直接进行下一设备驱动的选择,在选择时间上与逐级执行式相比也不会有太大变化,默认设置的问题也就淡化了(当然它仍是有必要的)。同时,菜单返回的作用不再主要是进行“下一步”选择,而是进行“另一次”选择。
关于程序的测试情况,在我的虚拟机MSDOS7.10启动盘中,以你提供的示例进行测试,发现“rem color=”至“rem endnote=”一节所有行均不起作用,不过这应该是小问题,相信兄很快就能解决。
另外,再在一些细节上提供一些建议仅供参考:
1、快捷键布局:选择/反选-空格/Enter,返回-Backspace/LeftArrow,继续选择-Enter/RightArrow,直接执行-Esc,菜单选择-顺序数字/顺序字母/指定字符;
2、类 IO.SYS 的界面风格:菜单项文字继续向右缩进,已选择菜单项的显示(包括多级、复选的显示),倒计时的显示位置等等;
3、加入动态编辑菜单的功能;
4、加入屏蔽 device 项输出信息的选项。
Last edited by willsort on 2006-3-1 at 19:40 ]
Re yaya:
Thanks to you for attaching so much importance to my opinions and suggestions! Actually, I can't provide you with many practical and effective suggestions either from the algorithm design or from the language implementation, but can only do some simple black-box tests outside the program, and then talk about my own views from the perspective of a user. At the same time, my understanding of DOS boot technology is still not comprehensive and in-depth. The reason why I have the cheek to reply to your topic is, on the one hand, to express my support for the original works of the forum, hoping to draw out what others have in mind, so that everyone can pay attention to your program and the fields it involves; on the other hand, I was doing research on the secondary boot extended boot configuration menu at that time, hoping to get ideas and inspirations from your program. Later, because of my insufficient technical skills, my research came to a premature end halfway, and then I turned my attention back to batch processing that I love; now seeing your invitation, I feel very ashamed of your enthusiasm, and have to try my best to take a look at and test your new work ConMenuR, and the following are the results, which I am willing to share with you and colleagues.
Regarding the choice between returning execution and step-by-step execution, I personally prefer "Return Execution Menu Editor ConMenuR.sys" more, because it is indeed a breakthrough in the program algorithm and is unique in functional implementation. Compared with IO.SYS, it solves key problems such as multiple choices, re-selections, and continuous selections. The creative concept of Block also greatly reduces the complexity of program writing and menu writing brought by multi-level nesting of include, and also increases the readability of the menu. As for the problem of complex default settings it brings, I think it can be partially solved through the realization of "continuous menus at the same level" as follows.
Regarding "continuous menus at the same level", it is very similar to the example in your ConMenuR. It is mainly for non-returnable menus. Taking the implementation requirement of the ConMenuR example as an example, if the menu is non-returnable, and after we choose the memory management program, we also hope to choose the CD-ROM and USB device drivers. If these choices are implemented as secondary and tertiary menus, it is necessary to implement secondary menus in each primary menu item and tertiary menus in each secondary menu item. As the types of devices increase, the number of menu items will show a tendency to multiply. This is exactly the problem you mentioned that "it is cumbersome to write menus and there are many repeated items".
However, if the memory management program, CD-ROM driver, and USB driver are all implemented for selection in the same level menu, that is, after choosing the memory management, there is no need to enter the next level (or enter and then return) and continue to choose the device driver, and the same for the USB driver. In this way, the repetition in menu writing is largely saved. The current version of the implementation of the return execution menu makes this function not very necessary, but if it is implemented, that is, add an item "Continue to Choose" before "Return to Menu" or add a shortcut key ("Continue to Choose") such as Enter, then the user can directly choose the next device driver without returning to the menu, and there will not be too much difference in selection time compared with the step-by-step execution method, and the problem of default settings will also be diluted (of course, it is still necessary). At the same time, the role of menu return is no longer mainly for "next step" selection, but for "another" selection.
Regarding the test situation of the program, in my virtual machine MSDOS7.10 boot disk, I tested with the example you provided, and found that all lines from "rem color=" to "rem endnote=" do not work, but this should be a small problem, and I believe you will solve it soon.
In addition, some suggestions are provided for reference in some details:
1. Shortcut key layout: Select/Invert- Space/Enter, Return-Backspace/LeftArrow, Continue to Choose-Enter/RightArrow, Direct Execution-Esc, Menu Choose-Sequence number/Sequence letter/Specified character;
2. Interface style similar to IO.SYS: Indent menu item text further to the right, display of selected menu items (including display of multiple levels and checkboxes), display position of countdown, etc.;
3. Add the function of dynamic editing menu;
4. Add an option to block the output information of device items.
Last edited by willsort on 2006-3-1 at 19:40 ]
|

※ Batchinger 致 Bat Fans:请访问 批处理编程的异类 ,欢迎交流与共享批处理编程心得! |
|
2006-3-1 19:28 |
|
|
yaya
银牌会员
    
积分 1009
发帖 353
注册 2003-9-4
状态 离线
|
『第 9 楼』:
使用 LLM 解释/回答一下
Re willsort:
你的谦逊再一次让人领略大师风范!
感谢你提供的建议,非常有实用价值!近期我会逐一改进。
关于"已选择菜单项的显示",目前使用"+",我感觉使用"√"更适当,但这要使用ASCII字符"FB",与汉化字使用"80-FF"冲突,为避免冲突,有可能减少5个汉字。怎样更好,也请同仁共商。
关于"加入屏蔽device项输出信息的选项",device项是由config.sys模块执行的,怎样屏蔽device项输出信息,从网上浏览没有结果,有人说不能。
关于"“rem color=”至“rem endnote=”一节所有行均不起作用",是由于忘了更改说明文档。应该将上述内容移到"rem menu=l主菜单$0"这一行之下。我已更改了2楼的例子1和1楼的附件3。由此引起的不便深感歉意!
Re willsort:
Your modesty once again showcases the demeanor of a master!
Thank you for the suggestions provided, which are very practical! I will improve them one by one in the near future.
Regarding "Display of the selected menu item", currently using "+", I feel that using "√" is more appropriate, but this requires using the ASCII character "FB", which conflicts with the Chinese localization that uses "80-FF". To avoid the conflict, it may reduce 5 Chinese characters. How to do it better, please also discuss with colleagues.
Regarding "Add an option to shield the output information of the device item", the device item is executed by the config.sys module. How to shield the output information of the device item, there is no result from browsing the Internet, and some people say it cannot be done.
Regarding "The entire lines from "rem color=" to "rem endnote=" are all ineffective", it is because I forgot to change the instruction document. The above content should be moved under the line "rem menu=l Main Menu$0". I have changed example 1 on floor 2 and attachment 3 on floor 1. I am deeply sorry for the inconvenience caused!
|
|
2006-3-2 16:18 |
|
|
willsort
元老会员
         Batchinger
积分 4432
发帖 1512
注册 2002-10-18
状态 离线
|
『第 10 楼』:
使用 LLM 解释/回答一下
Re yaya:
关于已选用菜单项标记,不建议占用扩展ASCII区的字符,本来可以显示的汉字便有限,应该尽量保证它的充分利用。可以考虑从ASCII码表的非打印控制取寻找,比如04,07-10,16,26等字符,也可以取 > } 之类。或者向 IO.SYS 借鉴,将已选取项显示在菜单项下方,只是如何显示多级、复选、连续菜单项还是个问题,目前简化为只显示当前菜单的所有选择项。
屏蔽输出信息可以借鉴内部命令 ctty ,在命令行下执行 ctty nul 将NUL设备句柄复制给 stdin/stdout/stderr,从而将PC控制权移交NUL,封锁了所有输入输出。另外,command nul 也有类似的作用。
ASCII编码表
http://www.cn-dos.net/forum/viewthread.php?tid=18942
CTTY - Change console
CTTY:
push ds
pop es
mov si,81H
mov di,offset trangroup:parse_ctty
xor cx,cx
xor dx,dx
invoke cmd_parse
cmp ax,end_of_line
jz ctty_error
cmp ax,result_no_error
jnz ctty_error
push si
lds si,parse1_addr
mov di,offset trangroup:srcbuf
ctty_move_filename:
lodsb
stosb
cmp al,end_of_line_out
jnz ctty_move_filename
pop si
mov di,offset trangroup:parse_ctty
call parse_check_eol
jz nocolon
ctty_error:
jmp short isbaddev
nocolon:
mov dx,offset trangroup:srcbuf
MOV AX,(OPEN SHL 8) OR 2
INT 21h
JC ISBADDEV
MOV BX,AX
MOV AX,IOCTL SHL 8
INT 21h
TEST DL,80H
JNZ DEVISOK
CLOSEDEV:
MOV AH,CLOSE
INT 21h
ISBADDEV:
MOV DX,OFFSET TRANGROUP:BADDEV_ptr
invoke std_printf
JMP SHORT RESRET
DEVISOK:
push dx
mov ax,acrlf_ptr
mov dh,util_msg_class
push bx
invoke Tsysgetmsg
mov dx,si
mov ax,(write shl 8)
mov cx,2
int 21h
pop bx
pop dx
jc closedev
XOR DH,DH
OR DL,3
MOV AX,(IOCTL SHL 8) OR 1
INT 21h
PUSH BX
MOV CX,3
XOR BX,BX
ICLLOOP:
MOV AH,CLOSE
INT 21h
INC BX
LOOP ICLLOOP
POP BX
MOV AH,XDUP
INT 21h
MOV AH,XDUP
INT 21h
MOV AH,XDUP
INT 21h
MOV AH,CLOSE
INT 21h
RESRET:
MOV DS,
ASSUME DS:RESGROUP
PUSH DS
MOV AX,WORD PTR DS:
MOV ,AX
MOV AX,OFFSET DATARES:TrnLodCom1_Trap
PUSH AX
ZMMMM PROC FAR
RET
ZMMMM ENDP
Last edited by willsort on 2006-3-2 at 19:24 ]
Re yaya:
Regarding the marking of selected menu items, it is not recommended to occupy characters from the extended ASCII area. Since the number of Chinese characters that can be displayed is already limited, we should try to make full use of it. We can consider finding from the non-printable controls in the ASCII code table , such as characters like 04, 07-10, 16, 26, etc., or characters like > }. Alternatively, we can draw on IO.SYS, where selected items are displayed below the menu items. However, the issue of how to display multi-level, check-box, and continuous menu items is still a problem. Currently, it is simplified to only display all the selected items of the current menu.
To shield output information, we can draw on the internal command ctty. Executing ctty nul at the command line copies the NUL device handle to stdin/stdout/stderr, thereby transferring the PC control to NUL and blocking all input and output. Additionally, command nul has a similar effect.
ASCII Coding Table
http://www.cn-dos.net/forum/viewthread.php?tid=18942
CTTY - Change console
CTTY:
push ds
pop es
mov si,81H
mov di,offset trangroup:parse_ctty
xor cx,cx
xor dx,dx
invoke cmd_parse
cmp ax,end_of_line
jz ctty_error
cmp ax,result_no_error
jnz ctty_error
push si
lds si,parse1_addr
mov di,offset trangroup:srcbuf
ctty_move_filename:
lodsb
stosb
cmp al,end_of_line_out
jnz ctty_move_filename
pop si
mov di,offset trangroup:parse_ctty
call parse_check_eol
jz nocolon
ctty_error:
jmp short isbaddev
nocolon:
mov dx,offset trangroup:srcbuf
MOV AX,(OPEN SHL 8) OR 2
INT 21h
JC ISBADDEV
MOV BX,AX
MOV AX,IOCTL SHL 8
INT 21h
TEST DL,80H
JNZ DEVISOK
CLOSEDEV:
MOV AH,CLOSE
INT 21h
ISBADDEV:
MOV DX,OFFSET TRANGROUP:BADDEV_ptr
invoke std_printf
JMP SHORT RESRET
DEVISOK:
push dx
mov ax,acrlf_ptr
mov dh,util_msg_class
push bx
invoke Tsysgetmsg
mov dx,si
mov ax,(write shl 8)
mov cx,2
int 21h
pop bx
pop dx
jc closedev
XOR DH,DH
OR DL,3
MOV AX,(IOCTL SHL 8) OR 1
INT 21h
PUSH BX
MOV CX,3
XOR BX,BX
ICLLOOP:
MOV AH,CLOSE
INT 21h
INC BX
LOOP ICLLOOP
POP BX
MOV AH,XDUP
INT 21h
MOV AH,XDUP
INT 21h
MOV AH,XDUP
INT 21h
MOV AH,CLOSE
INT 21h
RESRET:
MOV DS,
ASSUME DS:RESGROUP
PUSH DS
MOV AX,WORD PTR DS:
MOV ,AX
MOV AX,OFFSET DATARES:TrnLodCom1_Trap
PUSH AX
ZMMMM PROC FAR
RET
ZMMMM ENDP
Last edited by willsort on 2006-3-2 at 19:24 ]
|

※ Batchinger 致 Bat Fans:请访问 批处理编程的异类 ,欢迎交流与共享批处理编程心得! |
|
2006-3-2 19:23 |
|
|
yaya
银牌会员
    
积分 1009
发帖 353
注册 2003-9-4
状态 离线
|
『第 11 楼』:
使用 LLM 解释/回答一下
Re willsort:
关于已选用菜单项标记,我非常赞成你的观点,不能浪费有限的汉化资源。我考虑使用'00-1f'中不使用的控制字符,自造一个图形符号。
关于屏蔽device输出信息,我认为应该单独编一段程序,在开始屏蔽的地方和结束屏蔽的地方分别加入命令。ConMenuR程序结束后,才由io.sys执行device,因此既便在ConMenuR程序中加入屏蔽代码,也无法控制屏蔽结束(ConMenuR不驻留内存)。
Re:
Regarding the mark of the selected menu item, I very much agree with your view that we should not waste limited localization resources. I consider using unused control characters in '00-1f' to create a graphic symbol by ourselves.
Regarding shielding the device output information, I think a separate program should be compiled, and commands should be added respectively at the place where shielding starts and ends. After the ConMenuR program ends, io.sys executes device, so even if shielding code is added in the ConMenuR program, the shielding cannot be controlled (ConMenuR does not reside in memory).
|
|
2006-3-4 09:41 |
|
|
yaya
银牌会员
    
积分 1009
发帖 353
注册 2003-9-4
状态 离线
|
『第 12 楼』:
使用 LLM 解释/回答一下
v1.10 2006/3/6 发布于1楼
修改:将时间显示位置上移到菜单项之下
修改:出错时由退出程序改为退出菜单
修改:子菜单不再显示剩余时间
修改:被选菜单项标记由"+"改为"√"
增加:"剩余时间"标签显示
增加:快捷键esc,在任意位置执行菜单
增加:快捷键←/→,-/=,向前/向后顺序显示菜单页
增加:快捷键spacebar,等同于enter
增加:快捷键(shift+'-')/(shift+'='),等同于↑/↓
v1.10 Released on March 6, 2006 in Floor 1
Modifications: Move the time display position up to below the menu item
Modifications: When an error occurs, exit the menu instead of exiting the program
Modifications: The submenu no longer displays the remaining time
Modifications: The selected menu item marker is changed from "+" to "√"
Additions: "Remaining Time" label display
Additions: Shortcut key esc, execute the menu at any position
Additions: Shortcut keys ←/→, -/=, display menu pages forward/backward in sequence
Additions: Shortcut key spacebar, equivalent to enter
Additions: Shortcut keys (shift+'-')/(shift+'='), equivalent to ↑/↓
|
|
2006-3-7 17:38 |
|
|
willsort
元老会员
         Batchinger
积分 4432
发帖 1512
注册 2002-10-18
状态 离线
|
『第 13 楼』:
使用 LLM 解释/回答一下
Re yaya:
以下有很多关于 ConMenuR 工作原理的疑问和猜测,很可能与实情想去甚远,请 yaya 兄聊作“哂”阅。
>>ConMenuR程序结束后,才由io.sys执行device
这里你的意思是否是说,ConMenuR 执行结束后,才由 IO.SYS 执行 ConMenuR.sys 之后的 DEVICE 语句?因为 Config.exe 和 ConMenuR.sys 本身都是通过 device 加载,如果 device 在 ConMenuR.sys 之后处理,则形成一个“鸡与蛋”的互生悖论。
如果以上问题的答案是肯定的,那么是否可以推断 ConMenuR.sys 的生存周期是在 IO.SYS 对 Config.sys 预处理和符号化之后,ConMenuR 之后的 DEVICE 命令执行之前,而它的作用域应该就是 REM Menu= 和 REM BLOCK=END 之间的 REM 之类的菜单配置语句和 device 之类的内存配置语句。虽然所有的内存配置命令在菜单结束前都不会被 io.sys 执行。
而这些配置语句又是如何被处理的?我的猜想是,因为在第一条device命令被加载前,所有的 device 语句均被预处理和符号化,那么它所需的 device 命令则应该是从预处理后的 config 工作区中获取的,否则 ConMenuR 需要将重新组装后的 device 原始语句再次符号化;而因为 rem 语句在预处理过程中是被忽略的,因此菜单配置所需的 REM 语句应该是从原始的 Config.sys 中读取所的。
这就意味着可以通过menu和block的分离(即block在config.sys文件中,而menu在自定义文件中),简单实现在非 config.sys 文件中实现菜单配置,从而绕过 IO.SYS 的语法检查机制,也从而实现更自由的菜单定制。
>>既便在ConMenuR程序中加入屏蔽代码,也无法控制屏蔽结束
考虑到 ConMenuR 可以重新组装 device 语句,则在菜单配置结束后自行增加一条关闭屏蔽输出的 device 或类 device 似也并非没有可能,甚至可以考虑将这条特殊的命令插入到 block 中其它任意位置。当然,前提是首先能够实现出这条特殊命令。
以下是关于 ConMenuR 菜单内部格式的一些设想和看法,权作参靠。
在我的设想中:
1、所有的菜单配置语句中分隔标记不会超过三个:空格、等号和逗号,他们的用法与IO.SYS定制的没有太大的不同,如图数学上的三色原理一样,我相信他们应该可以胜任Config配置菜单所有的语法表达,而这也同样促使在菜单项中可以显示更多的特殊字符。
2、而配制命令则会多一些,包括嵌套菜单NestMenu,复选菜单CheckMenu,单选菜单RadioMenu,它们决定了菜单的类型;还包括菜单项Item,缺省菜单项DefaultItem,公共菜单项CommonItem(即在分析此级菜单时总是会加载的项),他们决定了菜单项的类型;还有标题项Capation/TitleText(屏幕顶部,居中?高亮?),尾注项EndText(屏幕底部),提示文字项Text/NoteText(他们可以出现在菜单项之前、之后和之间,并且他们在 Config.sys 中的相对位置决定了在屏幕上的相对位置)。
最后,我想说的是,这个程序的名字似乎无法准确完全的涵盖它的已有功能和实现目标,至少它不是一个Editor。
Last edited by willsort on 2006-3-7 at 23:42 ]
Re yaya:
There are many questions and guesses below about how ConMenuR works, which are likely far from the actual situation. Please take a look at them, Brother yaya.
>>After the ConMenuR program ends, DEVICE is executed by io.sys
Do you mean here that after ConMenuR is executed, IO.SYS executes the DEVICE statement after ConMenuR.sys? Because Config.exe and ConMenuR.sys are both loaded through device. If device is processed after ConMenuR.sys, it forms a "chicken and egg" mutual paradox.
If the answer to the above question is yes, then can we infer that the life cycle of ConMenuR.sys is after IO.SYS preprocesses and symbolizes Config.sys and before the DEVICE command after ConMenuR is executed, and its scope should be the REM-like menu configuration statements and device-like memory configuration statements between REM Menu= and REM BLOCK=END. Although all memory configuration commands will not be executed by io.sys before the menu ends.
And how are these configuration statements processed? My guess is that since all DEVICE statements are preprocessed and symbolized before the first DEVICE command is loaded, the DEVICE commands it needs should be obtained from the preprocessed config workspace. Otherwise, ConMenuR needs to reassemble the original DEVICE statements and symbolize them again; and since REM statements are ignored during the preprocessing process, the REM statements needed for menu configuration should be read from the original Config.sys.
This means that by separating menu and block (that is, block is in the Config.sys file and menu is in a custom file), menu configuration can be simply realized in a non-Config.sys file, thus bypassing the syntax check mechanism of IO.SYS, and thus realizing more free menu customization.
>>Even if shielding code is added in the ConMenuR program, the shielding end cannot be controlled
Considering that ConMenuR can reassemble DEVICE statements, it is not impossible to add a DEVICE or device-like command to close shielding output by itself after the menu configuration ends. It can even be considered to insert this special command into any other position in the block. Of course, the premise is that this special command can be realized first.
The following are some ideas and opinions about the internal format of the ConMenuR menu, for reference only.
In my idea:
1. The separation marks in all menu configuration statements will not exceed three: space, equal sign and comma. Their usage is not much different from that customized by IO.SYS. Just like the three-color principle in mathematics, I believe they should be able to handle all the syntax expressions of the Config configuration menu, and this also promotes showing more special characters in menu items.
2. And there will be more configuration commands, including nested menu NestMenu, check menu CheckMenu, radio menu RadioMenu, which determine the type of menu; also including menu item Item, default menu item DefaultItem, common menu item CommonItem (that is, the item that is always loaded when analyzing this level of menu), which determine the type of menu item; also including title item Capation/TitleText (at the top of the screen, centered? Highlighted?), end note item EndText (at the bottom of the screen), prompt text item Text/NoteText (they can appear before, after and between menu items, and their relative positions in Config.sys determine their relative positions on the screen).
Finally, I want to say that the name of this program does not seem to accurately cover its existing functions and implementation goals. At least it is not an Editor.
Last edited by willsort on 2006-3-7 at 23:42 ]
|

※ Batchinger 致 Bat Fans:请访问 批处理编程的异类 ,欢迎交流与共享批处理编程心得! |
|
2006-3-7 22:20 |
|
|
shj99422
初级用户
 
积分 178
发帖 78
注册 2005-8-9
状态 离线
|
『第 14 楼』:
使用 LLM 解释/回答一下
真是大千世界无其不有啊
What a wide world, full of all kinds of things!
|
|
2006-3-8 10:36 |
|
|
yaya
银牌会员
    
积分 1009
发帖 353
注册 2003-9-4
状态 离线
|
『第 15 楼』:
使用 LLM 解释/回答一下
Re willsort:
关于 ConMenuR 工作原理,你说的很对。IO.SYS 对 Config.sys 预处理和符号化之后,开始从上到下逐条执行命令。执行到 device=ConMenuR.sys ,显示菜单,同用户互动,进行命令配置,然后屏蔽掉 rem block=0 到rem block=end 之间所有未选命令,加入一些必要的命令(如在 ConMenu 中加入 set cm0=...)。ConMenuR 退出后,IO.SYS 从 ConMenuR 之后逐条执行未屏蔽的命令。
关于在 ConMenuR 程序中加入屏蔽代码的问题,我觉得很必要,但限于水平低,目前还没能实现。希望同仁继续提供思路,或直接编一条程序供鉴赏。
关于分隔标记种类过多的问题,可以考虑缩减。目前在菜单项中不可使用的字符只有'$'。
各菜单页都可设置自己的标题,尾注,颜色。如果不想繁琐设置,'菜单页说明'提供了另一类显示途径。为了醒目,可以提供显示在菜单项之上/之下选择,高亮选择。
程序的名称是不够确切,它的功能是提供菜单,实现人/机互动,选择设备驱动程序,遥控自动批处理程序,实现启动引导。确实不是一个编辑器。
Re regarding resorting:
Regarding the working principle of ConMenuR, you are quite right. After IO.SYS preprocesses and symbolizes Config.sys, it starts executing commands one by one from top to bottom. When it executes device=ConMenuR.sys, it displays the menu, interacts with the user, configures commands, then shields all unselected commands between rem block=0 and rem block=end, and adds some necessary commands (such as adding set cm0=... in ConMenu). After ConMenuR exits, IO.SYS executes the unshielded commands one by one from after ConMenuR.
Regarding the issue of adding shielding code in the ConMenuR program, I think it is necessary, but due to low level, I haven't been able to implement it yet. I hope colleagues can continue to provide ideas or directly compile a program for appreciation.
Regarding the problem of too many types of separation marks, it can be considered to reduce them. Currently, the only character that cannot be used in menu items is '$'.
Each menu page can set its own title, footer, and color. If you don't want to set it cumbersome, 'Menu page description' provides another type of display approach. To be eye-catching, you can provide selection above/below the menu items and highlight the selection.
The name of the program is not quite accurate. Its function is to provide a menu, realize human-computer interaction, select device drivers, remotely control the automatic batch processing program, and realize boot guidance. It is indeed not an editor.
|
|
2006-3-9 16:52 |
|
|