China DOS Union

-- Unite DOS · Advance DOS · Grow DOS --

Union site: www.cn-dos.net Forum site: www.cn-dos.net/forum
DOS stands for freedom, openness and progress. Let us work hard, learn from the openness and GNU spirit of FreeDOS and Linux, and together build and grow a free GNU GPL world!

中国DOS联盟论坛
The time now is 2026-06-20 16:23
中国DOS联盟论坛 » DOS汉化世界 & 中文系统 (中文化室) » Configuration menu for driver parallel configuration for Config.sys ConfigP.Mnu v1.01 View 29,324 Replies 115
Original Poster Posted 2006-02-10 09:33 ·  中国 山西 太原 联通
银牌会员
★★★
Credits 1,009
Posts 353
Joined 2003-09-04 00:00
22-year member
UID 9419
Gender Male
Status Offline
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 ]
Attachments
configp1.jpg
configp2.jpg
ConfigP.Mnu101.rar (58.12 KiB, Credits to download 1 pts, Downloads: 1131)
Floor 2 Posted 2006-02-10 09:36 ·  中国 山西 太原 联通
银牌会员
★★★
Credits 1,009
Posts 353
Joined 2003-09-04 00:00
22-year member
UID 9419
Gender Male
Status Offline
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 ]
Floor 3 Posted 2006-02-10 15:30 ·  中国 广西 桂林 电信
初级用户
★★
Credits 176
Posts 74
Joined 2005-11-07 16:51
20-year member
UID 44761
Status Offline
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.
Floor 4 Posted 2006-02-10 18:37 ·  中国 浙江 衢州 电信
银牌会员
★★★
Credits 1,270
Posts 548
Joined 2004-05-31 00:00
22-year member
UID 25754
Gender Male
Status Offline
This thing is well done.
Floor 5 Posted 2006-02-10 22:15 ·  中国 江苏 苏州 电信
银牌会员
★★★
Credits 2,227
Posts 790
Joined 2005-01-27 00:00
21-year member
UID 35703
Gender Male
Status Offline
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
Floor 6 Posted 2006-02-15 11:18 ·  中国 新疆 阿克苏地区 阿克苏市 电信
中级用户
Credits 211
Posts 38
Joined 2003-08-12 00:00
22-year member
UID 8478
Gender Male
Status Offline
Not bad, thanks for providing.
Floor 7 Posted 2006-02-28 17:38 ·  中国 山西 太原 联通
银牌会员
★★★
Credits 1,009
Posts 353
Joined 2003-09-04 00:00
22-year member
UID 9419
Gender Male
Status Offline
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.
Floor 8 Posted 2006-03-01 19:28 ·  中国 山西 临汾 中移铁通
元老会员
★★★★
Batchinger
Credits 4,432
Posts 1,512
Joined 2002-10-18 00:00
23-year member
UID 19
Gender Male
Status Offline
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:请访问 批处理编程的异类 ,欢迎交流与共享批处理编程心得!
Floor 9 Posted 2006-03-02 16:18 ·  中国 山西 太原 联通
银牌会员
★★★
Credits 1,009
Posts 353
Joined 2003-09-04 00:00
22-year member
UID 9419
Gender Male
Status Offline
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!
Floor 10 Posted 2006-03-02 19:23 ·  中国 山西 临汾 中移铁通
元老会员
★★★★
Batchinger
Credits 4,432
Posts 1,512
Joined 2002-10-18 00:00
23-year member
UID 19
Gender Male
Status Offline
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

; ****************************************************************
; *
; * ROUTINE: CTTY - Change console
; *
; * SYNTAX: CTTY device
; *
; * FUNCTION: If a valid console device is specified, CTTY will
; * duplicate the device handle to STDIN, STDOUT and
; * STDERR. This routine returns to LODCOM1.
; *
; * INPUT: command line at offset 81H
; *
; * OUTPUT: none
; *
; ****************************************************************

CTTY:
push ds ;AN000; Get local ES
pop es ;AN000;
mov si,81H ;AC000; Get command argument for CTTY

mov di,offset trangroup:parse_ctty ;AC000; Get adderss of PARSE_CTTY
xor cx,cx ;AC000; clear cx,dx
xor dx,dx ;AC000;
invoke cmd_parse ;AC000; call parser
cmp ax,end_of_line ;AN000; are we at end of line?
jz ctty_error ;AN000; yes - error
cmp ax,result_no_error ;AN000; did an error occur
jnz ctty_error ;AN000; YES -ERROR

push si ;AN000; save position in line
lds si,parse1_addr ;AN000; get address of filespec
mov di,offset trangroup:srcbuf ;AN000; get address of srcbuf

ctty_move_filename: ;AN000; put filespec in srcbuf
lodsb ;AN000; get a char from buffer
stosb ;AN000; store in srcbuf
cmp al,end_of_line_out ;AN000; it char a terminator?
jnz ctty_move_filename ;AN000; no - keep moving
pop si ;AN000; get line position back
mov di,offset trangroup:parse_ctty ;AC000; Get adderss of PARSE_CTTY
call parse_check_eol ;AN000; are we at end of line?
jz nocolon ;AN000; yes - continue

ctty_error:
jmp short isbaddev ;AC000; yes - exit

nocolon:
mov dx,offset trangroup:srcbuf ;AN000; get address of srcbuf
MOV AX,(OPEN SHL 8) OR 2 ; Read and write
INT 21h ; Open new device
JC ISBADDEV
MOV BX,AX
MOV AX,IOCTL SHL 8
INT 21h
TEST DL,80H
JNZ DEVISOK

CLOSEDEV: ;AN007;
MOV AH,CLOSE ; Close initial handle
INT 21h

ISBADDEV:
MOV DX,OFFSET TRANGROUP:BADDEV_ptr
invoke std_printf
JMP SHORT RESRET

DEVISOK:
push dx ;AN007; save device info
mov ax,acrlf_ptr ;AN021; get message number for 0d, 0a
mov dh,util_msg_class ;AN021; this is a utility message
push bx ;AN021; save handle
invoke Tsysgetmsg ;AN021; get the address of the message
mov dx,si ;AN021; get address into dx
mov ax,(write shl 8) ;AN007; write to device
mov cx,2 ;AN007; write two bytes
int 21h ;AN007;
pop bx ;AN021; get back handle
pop dx ;AN007; get back device info
jc closedev ;AN007; if error, quit
XOR DH,DH
OR DL,3 ; Make sure has CON attributes
MOV AX,(IOCTL SHL 8) OR 1
INT 21h
PUSH BX ; Save handle
MOV CX,3
XOR BX,BX

ICLLOOP: ; Close basic handles
MOV AH,CLOSE
INT 21h
INC BX
LOOP ICLLOOP
POP BX ; Get handle
MOV AH,XDUP
INT 21h ; Dup it to 0
MOV AH,XDUP
INT 21h ; Dup to 1
MOV AH,XDUP
INT 21h ; Dup to 2
MOV AH,CLOSE ; Close initial handle
INT 21h

RESRET:
MOV DS,
ASSUME DS:RESGROUP
PUSH DS
MOV AX,WORD PTR DS: ; Get new 0 and 1
MOV ,AX
MOV AX,OFFSET DATARES:TrnLodCom1_Trap
PUSH AX

ZMMMM PROC FAR
RET ; Force header to be checked
ZMMMM ENDP


[ Last edited by willsort on 2006-3-2 at 19:24 ]
※ Batchinger 致 Bat Fans:请访问 批处理编程的异类 ,欢迎交流与共享批处理编程心得!
Floor 11 Posted 2006-03-04 09:41 ·  中国 山西 太原 联通
银牌会员
★★★
Credits 1,009
Posts 353
Joined 2003-09-04 00:00
22-year member
UID 9419
Gender Male
Status Offline
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).
Floor 12 Posted 2006-03-07 17:38 ·  中国 山西 太原 联通
银牌会员
★★★
Credits 1,009
Posts 353
Joined 2003-09-04 00:00
22-year member
UID 9419
Gender Male
Status Offline
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 ↑/↓
Floor 13 Posted 2006-03-07 22:20 ·  中国 山西 临汾 中移铁通
元老会员
★★★★
Batchinger
Credits 4,432
Posts 1,512
Joined 2002-10-18 00:00
23-year member
UID 19
Gender Male
Status Offline
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:请访问 批处理编程的异类 ,欢迎交流与共享批处理编程心得!
Floor 14 Posted 2006-03-08 10:36 ·  中国 浙江 湖州 联通
初级用户
★★
Credits 178
Posts 78
Joined 2005-08-09 17:09
20-year member
UID 41491
Gender Female
Status Offline
What a wide world, full of all kinds of things!
Floor 15 Posted 2006-03-09 16:52 ·  中国 山西 太原 联通
银牌会员
★★★
Credits 1,009
Posts 353
Joined 2003-09-04 00:00
22-year member
UID 9419
Gender Male
Status Offline
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.
1 2 3 8 Next ›
Forum Jump: