中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS启动盘 & LOGO技术 (启动盘室) » [讨论]如何利用二次引导实现DOS启动菜单扩展
作者:
标题: [讨论]如何利用二次引导实现DOS启动菜单扩展 上一主题 | 下一主题
willsort
元老会员

Batchinger


积分 4432
发帖 1512
注册 2002-10-18
状态 离线
『楼 主』:  [讨论]如何利用二次引导实现DOS启动菜单扩展

To All:

      在纯DOS层下(不包括DOS启动前的引导层和DOS启动后的应用程序层)实现启动菜单通常采用Config/Autoexec文件来进行配置。但是这种配置菜单受到DOS内核的局限,无法在功能上得到更多的扩展。

      因此,使用外壳层的应用程序扩展启动菜单就属于相对的捷径了。但是由于DOS启动过程的封闭性,在其中要插入我们自己的扩展菜单,并不是很容易的事情;因为启动菜单的选择,可能意味着不同驱动程序的加载,所以扩展须在驱动加载之前就被执行,而这将扩展程序的位置限制到了 config.sys 文件中,任何驱动程序加载和DOS配置语句之前。同时DOS对 config.sys 的处理方式比较独特,类似于高级语言的编译环境,它们会对 config.sys 先进行预处理,然后再进行符号化,而 Boot.sys/bootcon.sys 等便利用了这些处理过程中的“间隙”比较有代表性的实现了启动菜单的扩展。

      但是,任何扩展程序都不是万能的,也都不一定完全满足用户的使用需求,这样可以让用户自定义菜单功能,就有其必要性。但是没有人会因为扩展启动菜单的功能而去研究DOS内核,所以创建一个可以容纳用户自编写菜单“插件”的“插槽”,似乎有其必要性。

      我将这个插槽放到了 autoexec.bat 中,因为在其中可以比较方便的使用诸如批处理、第三方脚本、图形界面菜单等应用程序层的资源。其基本思路如下:首次启动DOS后,直接单引导进入 autoexec.bat ,在其中创建自定义的菜单界面,并完成与用户之间的交互,然后根据交互结果生成新的 config/autoexec 文件,其中包含用户选择所需要的各项设备驱动、程序调用和环境配置命令以及恢复原有c/a文件的入口,然后重引导 DOS 而不重启计算机,以加载新 config/autoexec 文件,之后恢复原有的 c/a 文件,等待用户下一次重启。

      这种“二次引导”的实现思路,其实有很多DOS引导增强程序都已经实现。但是它们也同时做成了封闭式界面,用户很难再进行二次开发;同时它们中的大部分都是以重启而不是以重引导来实现新菜单的加载,这样的启动菜单便存在很大的“启动间隙”。
(未完待续...)

[ Last edited by willsort on 2006-1-8 at 16:54 ]



※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2006-1-8 16:49
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
不得不爱
超级版主

我爱DOS


积分 5310
发帖 2044
注册 2005-9-26
来自 四川南充
状态 离线
『第 2 楼』:  

1个字,高



我的网络U盘 我的网络第2个U盘
论坛软件下载链接
灵雨飘零论坛  
论坛新手必读,所有人的基本行为准则
刷QQ空间人气、留言的小软件
2006-1-8 19:41
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
hxj
中级用户




积分 377
发帖 66
注册 2005-4-4
状态 离线
『第 3 楼』:  

正在与网友讨论是否能从DOS不用重新启动直接返回光盘主菜问题,看到版主的帖后感到这一希望也许很快能实现,期等版主的“请听下回分解了”!!!

2006-1-9 03:47
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
chujiafu
银牌会员





积分 1329
发帖 591
注册 2004-5-26
来自 安徽 宿州
状态 离线
『第 4 楼』:  

是个技术难题。能不能不用Grub或者Jo.sys来实现启动时可选择从软盘启动、从硬盘启动或者从光盘启动。

2006-1-9 19:06
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
本是
银牌会员





积分 2201
发帖 789
注册 2005-1-27
状态 离线
『第 5 楼』:  

好思路!如果成功了,对DOS进行其它扩展可是方便得多!



my major is english----my love is dos----my teacher is the buddha----my friends--how about U
2006-1-10 09:08
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


积分 4432
发帖 1512
注册 2002-10-18
状态 离线
『第 6 楼』:  

To All:

    二次引导实现启动配置菜单扩展的技术核心在于如何实现第二次引导过程,对此我最先想到的就是 BIOS 提供的现有的引导装入中断 INT19 ,这是最简单,也最直接的方法,通过 DEBUG 写一个二字节的程序即可实现。不熟悉 DEBUG 的朋友,将下面的脚本[1]创建为一个批处理,然后点击运行即可得到重引导程序 reboot.com 。

    需要说明的是,reboot.com 的运行必须是在实模式环境下,而且目前为止,我尚未听说可以在保护模式下可以重引导系统的独立软件。所以,它对 Windows 是不起作用的,在 DOS 下也通常要求不能加载 EMM386.EXE 及任何 TSR 程序。

    我很快做完了测试,在虚拟机的 MSDOS6.22 硬盘环境下,它的工作成绩尚算良好,它成功的实现了非重启的引导方式;只是在重引导之前,会首先检测软驱,如果其中存在可引导软盘,那么会立即从软盘引导;如果不存在,则出现选择引导设备的提示[2],等待回车确认后方才从硬盘引导。至于 BIOS 中的引导优先设置,则毫不理会。

    但在虚拟机的 MSDOS7.10 硬盘环境下,则出现了更严重的问题:reboot 之后,仍然会有先寻找软驱的问题;不仅如此,如果没有找到可引导软盘,会首先提示未找到操作系统(猜想是 BIOS 不识别 MSDOS7.10  的DOS引导扇区),再提示选择引导设备,然后在三次回车确定后,系统挂起不再有任何反应。

    而在虚拟机的 Win98 硬盘环境实模式命令行下,虽然仍然有未找到操作系统的提示,却仍会正常的重引导。

    于是我搜索了一些关于 INT19 的资料[4],最后确定单纯使用 INT19 无法完成目前的需要。
   
[1]生成 reboot.com 的批处理脚本
@echo off
if exist %0.bat set _me=%0.bat
if exist %0 set _me=%0
if not "%_me%"=="" debug < %_me% > nul
set _me=
goto end

a
int19
ret

n reboot.com
r cx
3
w
q

:end
[2]Reboot and Select proper Boot device

  Quote:
Reboot and Select proper Boot device
or Insert Boot Media in selected Boot device

[3]OS not found

  Quote:
OS not found
Install an OS on this hard drive

[4]INT 19 - SYSTEM - BOOTSTRAP LOADER

  Quote:
INT 19 - SYSTEM - BOOTSTRAP LOADER
Desc:        This interrupt reboots the system without clearing memory or restoring
          interrupt vectors.  Because interrupt vectors are preserved, this
          interrupt usually causes a system hang if any TSRs have hooked
          vectors from 00h through 1Ch, particularly INT 08.
Notes:        Usually, the BIOS will try to read sector 1, head 0, track 0 from drive
          A: to 0000h:7C00h.  If this fails, and a hard disk is installed, the
          BIOS will read sector 1, head 0, track 0 of the first hard disk.
          This sector should contain a master bootstrap loader and a partition
          table (see #00650).  After loading the master boot sector at
          0000h:7C00h, the master bootstrap loader is given control
          (see #00653).        It will scan the partition table for an active
          partition, and will then load the operating system's bootstrap
          loader (contained in the first sector of the active partition) and
          give it control.
        true IBM PCs and most clones issue an INT 18 if neither floppy nor hard
          disk have a valid boot sector
        to accomplish a warm boot equivalent to Ctrl-Alt-Del, store 1234h in
          0040h:0072h and jump to FFFFh:0000h.        For a cold boot equivalent to
          a reset, store 0000h at 0040h:0072h before jumping.
        VDISK.SYS hooks this interrupt to allow applications to find out how
          much extended memory has been used by VDISKs (see #00649).  DOS 3.3+
          PRINT hooks INT 19 but does not set up a correct VDISK header block
          at the beginning of its INT 19 handler segment, thus causing some
          programs to overwrite extended memory which is already in use.
        the default handler is at F000h:E6F2h for 100% compatible BIOSes
        MS-DOS 3.2+ hangs on booting (even from floppy) if the hard disk
          contains extended partitions which point at each other in a loop,
          since it will never find the end of the linked list of extended
          partitions
        under Windows Real and Enhanced modes, calling INT 19 will hang the
          system in the same was as under bare DOS; under Windows Standard
          mode, INT 19 will successfully perform a cold reboot as it appears
          to have been redirected to a MOV AL,0FEh/OUT 64h,AL sequence
BUG:        when loading the remainder of the DOS system files fails, various
          versions of IBMBIO.COM/IO.SYS incorrectly restore INT 1E before
          calling INT 19, assuming that the boot sector had stored the
          contents of INT 1E at DS:SI instead of on the stack as it actually
          does





※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2006-1-10 13:56
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
DOSforever
金牌会员





积分 4639
发帖 2239
注册 2005-1-30
状态 离线
『第 7 楼』:  

请问“笑天”,为何需要“利用二次引导实现DOS启动菜单扩展”,这个需求性在哪儿?能否举个例子



DOS倒下了,但永远不死
DOS NEVER DIES !

投票调查:
http://www.cn-dos.net/forum/viewthread.php?tid=46187

本人尚未解决的疑难问题:
http://www.cn-dos.net/forum/viewthread.php?tid=15135
http://www.cn-dos.net/forum/viewthread.php?tid=47663
http://www.cn-dos.net/forum/viewthread.php?tid=48747
2006-1-11 12:39
查看资料  发短消息 网志   编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


积分 4432
发帖 1512
注册 2002-10-18
状态 离线
『第 8 楼』:  

Re DOSforever:

      需求性问题我在主题贴曾有提及,现说明我的主题缘起的初衷。

      我在制作 Wengier 超级启动盘 的中文启动菜单时,发现各种各样的菜单扩展程序都不完全满足我的理想要求,而且设计风格上也过于呆板,所以想自己做出改进;但是我只是比较擅长批处理,用 wbat 等其他工具写个菜单界面倒是可以,真要追踪 DOS 的启动过程并设计插入自己的代码未免有些强人所难,所以才想到设计一个可以方便的插入各种扩展菜单插件的“插槽”已满足我的需要。

      相信有不少想自己设计启动菜单功能和定制独特风格界面的朋友,擅长C、Basic或其他DOS编程语言和工具中的一种或几种,而对汇编语言以及DOS的启动过程可能并不太熟悉,为启动菜单而专门学习这些内容,似乎有些买珠求椟的奢侈。

      另外,现在有两个思路实现重引导:
         1、Win9x 系统有“退出到DOS”的功能,这可能是在保护模式下实现重引导的唯一实例,只是它在很多情况下它完成的是重启动而非重引导,而且 Win9x 系统的代码跟踪过于困难。

         2、在实模式下,将 reboot 所在盘的引导扇区代码载入内存中,然后用类似GRUB 的方式,绕过 INT19 中断直接调用 BIOS 的启动代码;这种方法存在中断向量表如何恢复,引导介质如何确定等多个问题,这方面我是个门外汉,很多东西都在摸索之中,正在研读 grub for dos 的 dosstart.S ,因为没有汇编基础,很吃力。

      在此,特向 Grub for DOS 的作者 不点 兄请教:根据我以上的描述,请问是否可以设计一个特化的 grub for dos?在DOS命令行或批处理环境中运行,可以完成直接从上一次的引导设备再次引导,而无需菜单选择,考虑到启动盘的需要,程序体积应该尽可能的小。如果此想法不太现实,那么是否可利用现有的 grub for dos 完成以上的功能?

      同时,向文本模式下汉字显示工具 VTMagic的作者 本是 兄请教:扩展ASCII字符和基本ASCII字符的字模是否在ROM/RAM中存放地址不同?内存中的字模信息是否会在文本模式初始化时被恢复?它是否可以通过某种方式实现重引导后不会被恢复?

[ Last edited by willsort on 2006-1-11 at 16:58 ]



※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2006-1-11 16:08
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
DOSforever
金牌会员





积分 4639
发帖 2239
注册 2005-1-30
状态 离线
『第 9 楼』:  

可能和我没有做过使用“菜单扩展程序”的启动盘有关,我确实看了你的主贴和你现在的回帖,可我还是看不出有使用“菜单扩展程序”来扩展菜单的必要性,难道DOS自身的多重配置菜单还不能满足需求吗?



DOS倒下了,但永远不死
DOS NEVER DIES !

投票调查:
http://www.cn-dos.net/forum/viewthread.php?tid=46187

本人尚未解决的疑难问题:
http://www.cn-dos.net/forum/viewthread.php?tid=15135
http://www.cn-dos.net/forum/viewthread.php?tid=47663
http://www.cn-dos.net/forum/viewthread.php?tid=48747
2006-1-11 16:27
查看资料  发短消息 网志   编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


积分 4432
发帖 1512
注册 2002-10-18
状态 离线
『第 10 楼』:  

Re DOSforever:

      你可以参阅以下汉化室关于DOS启动的几篇主题,在其中我曾有提及DOS系统启动菜单和菜单扩展程序的局限性和实现自定义扩展的原因。

[1] 功能远强于BOOTCON.SYS加CONFIG.CTL的启动控制工具[本是编译]
http://www.cn-dos.net/forum/viewthread.php?tid=18464&fpage=1

[2] [求助]不加载汉字系统也可以显示汉字?  
http://www.cn-dos.net/forum/viewthread.php?tid=6916&fpage=1



※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2006-1-11 16:43
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
DOSforever
金牌会员





积分 4639
发帖 2239
注册 2005-1-30
状态 离线
『第 11 楼』:  

多谢“笑天”不辞辛劳的把帖子找出来。由于内容太多,太长,我没有每一行都仔细的看,大致看了一下。我的理解是大家无非要在配置菜单中实现多重选择功能。我看了下 BOOT.SYS 1.42版为 MS-DOS 提供启动菜单选择系统配置的功能,并和 MS-DOS 自带的多重配置选择功能进行比较:

√  * 支持单层菜单,连续菜单,多层嵌套菜单 (不清楚什么叫连续菜单)
√  * 每个菜单最多可有9个菜单项(每个1行),上面可定制提示区 (和MS-DOS提供的相同)
    * 共可拥有25个连续菜单,各有不同系统配置
√  * 子菜单共可嵌套25层 (没试过 MS-DOS 最多允许嵌套几层)
√  * 菜单选择可通过输入数字键或用箭头移动 (同 MS-DOS )
√  * 每个菜单可定制倒计时间和默认选项 (同 MS-DOS )
√  * 完全支持MS/PC-DOS 5.00起的 DOS= 和其它新命令 (不用说了)
    * 支持LCD笔记本切换到外接监视器 (这个应该是笔记本本身要有这个功能才行吧,和软件没什么关系吧)
    * 支持启动时现场编辑 CONFIG.SYS 行内容 (这个好象任何DOS都没有这个功能)
    * 驻留占用DOS内存不到200字节(DOS 6.0及以上中不占内存!) (不用说了,不占任何内存)

打勾的地方即是 MS-DOS 也同样支持的功能,其它的一些功能,如超时自动选择某一项和菜单颜色选择都是支持的。我看唯一的 MS-DOS 多重配置的不足就是不能显示中文,但这一点我看无关紧要,并不是说本人的英文怎么好,而是一般而言计算机英语都是一些很简单的,没必要汉化。除非要作为一个实用软件提供给初学者使用。还有一点就是不支持复选(可能连续菜单指的就是这个),但是通过多重配置同样也可以实现这个功能,只不过烦琐了点。下面的 CONFIG.SYS 内容是我很多年以前在基于 MS-DOS 6.22 的基础上制作的启动盘,其中的显示的“中文”其实是西文制表符。该 CONFIG.SYS 启动后主要可以实现以下选择:

1、选择什么作为内存管理程序
2、选择什么作为命令解释器
3、选择内存使用的方式,即XMS,EMS
4、如果是选择 QEMM386 作为内存管理器还可以选择是否使用普通的UMB使用方式还是使用特有的 Stealth 方式
5、如果是使用特有的 Stealth 方式,再选择 Stealth 的方式是 MAP 方式还是 FRAME 方式

在进入每一个子菜单后都可以有菜单选择返回上一级菜单。其实 MS-DOS 也提供了一键返回功能,之不过要返回的话是一下子返回到根菜单。只要这样改动一下就可以实现逐级返回。

现在看起来这个启动盘很“土”,不支持很多新的功能,如USB,长文件名,NTFS的支持。我也一直想做一个新的启动盘,但一直没找到满意的“材料”,而且还在比较各个“材料”的优缺点。我把这个 CONFIG.SYS 的内容发出来只是想供大家评论一下,起抛砖引玉的作用。另外就是讨论一下是否有必要使用另外的软件来实现DOS启动菜单的扩展。(除了特殊情况外要用到启动时现场编辑 CONFIG.SYS 行内容)
[MENU]
SUBMENU=QUARTERDECK,Memory Managed by Quarterdeck QEMM386.SYS Version 8.0
SUBMENU=MICROSOFT,Memory Managed by Microsoft HIMEM.SYS V3.10 + EMM386.EXE V4.49
MENUDEFAULT=QUARTERDECK,5
MENUCOLOR=3,0

REM ============================================================================

  [QUARTERDECK]
  SUBMENU=QEMM-NDOS,NDOS.COM command interpreter Version 8.0
  SUBMENU=QEMM-COMMAND,COMMAND.COM command interpreter Version 6.22
  SUBMENU=MENU,Return to main MENU
  MENUDEFAULT=QEMM-NDOS,5
  MENUCOLOR=0,2

    [QEMM-NDOS]
    SUBMENU=Q-X&E-N,XMS & EMS
    MENUITEM=Q-X-N,XMS Only (No EMS)
    SUBMENU=QUARTERDECK,Return to upper menu
    MENUDEFAULT=Q-X&E-N,5
    MENUCOLOR=15,2
    [QEMM-COMMAND]
    SUBMENU=Q-X&E-C,XMS & EMS
    MENUITEM=Q-X-C,XMS Only (No EMS)
    SUBMENU=QUARTERDECK,Return to upper menu
    MENUCOLOR=14,2

      [Q-X&E-N]
      MENUITEM=QnEMS&N,Normal EMS
      SUBMENU=ST&N,StealthROM
      SUBMENU=QEMM-NDOS,Return to upper menu

        [ST&N]
        MENUITEM=STM&N,StealthROM Mapping Method
        MENUITEM=STF&N,StealthROM Frame Method
        SUBMENU=Q-X&E-N,Return to upper menu

      [Q-X&E-C]
      MENUITEM=QnEMS&C,Normal EMS
      SUBMENU=ST&C,StealthROM
      SUBMENU=QEMM-COMMAND,Return to upper menu

        [ST&C]
        MENUITEM=STM&C,StealthROM Mapping Method
        MENUITEM=STF&C,StealthROM Frame Method
        SUBMENU=Q-X&E-C,Return to upper menu

[QnEMS&N]
INCLUDE=Q_XMS&EMS
INCLUDE=QEMM_COMMON
INCLUDE=NDOS

[STM&N]
INCLUDE=STEALTH_M
INCLUDE=QEMM_COMMON
INCLUDE=NDOS

[STF&N]
INCLUDE=STEALTH_F
INCLUDE=QEMM_COMMON
INCLUDE=NDOS

[Q-X-N]
INCLUDE=Q_XMS
INCLUDE=QEMM_COMMON
INCLUDE=NDOS

[QnEMS&C]
INCLUDE=Q_XMS&EMS
INCLUDE=QEMM_COMMON
INCLUDE=COMMAND

[STM&C]
INCLUDE=STEALTH_M
INCLUDE=QEMM_COMMON
INCLUDE=COMMAND

[STF&C]
INCLUDE=STEALTH_F
INCLUDE=QEMM_COMMON
INCLUDE=COMMAND

[Q-X-C]
INCLUDE=Q_XMS
INCLUDE=QEMM_COMMON
INCLUDE=COMMAND


REM ============================================================================


  [MICROSOFT]
  SUBMENU=HIMEMM-NDOS,NDOS.COM command interpreter Version 8.0
  SUBMENU=HIMEMM-COMMAND,COMMAND.COM command interpreter Version 6.22
  SUBMENU=MENU,Return to main MENU
  MENUCOLOR=10,1

    [HIMEMM-NDOS]
    MENUITEM=MS-X&E-N,XMS & EMS
    MENUITEM=MS-X-N,XMS Only (No EMS)
    SUBMENU=MICROSOFT,Return to upper menu
    MENUCOLOR=15,1
    [HIMEMM-COMMAND]
    MENUITEM=MS-X&E-C,XMS & EMS
    MENUITEM=MS-X-C,XMS Only (No EMS)
    SUBMENU=MICROSOFT,Return to upper menu
    MENUCOLOR=14,1

[MS-X&E-N]
INCLUDE=HIMEMM-X&E
INCLUDE=NDOS

[MS-X-N]
INCLUDE=HIMEMM-X
INCLUDE=NDOS

[MS-X&E-C]
INCLUDE=HIMEMM-X&E
INCLUDE=COMMAND

[MS-X-C]
INCLUDE=HIMEMM-X
INCLUDE=COMMAND



REM ============================================================================



REM   赏屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯突
REM   ? The following paragraph is configuration modules  ?
REM   韧屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯图


[QEMM_COMMON]
DEVICE=A:\QEMM\DOS-UP.SYS REPORT
DEVICEHIGH=A:\QEMM\QDPMI.SYS VMOFF

Rem 谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
Rem ?The following section is QEMM module ?
Rem 滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
Rem The first line is utility parameters of QEMM386.SYS device driver
;DEVICE=A:\QEMM\QEMM386.SYS BK RAM NW3 ST:M|F BE:N BF:N SORT DBF=2 EMS:N SUS=N FILL:N XBDA:H USEXMS:N

[Q_XMS&EMS]
DEVICE=A:\QEMM\DOSDATA.SYS REPORT
DEVICE=A:\QEMM\QEMM386.SYS RAM BF:N BTO:30

[STEALTH_M]
DEVICE=A:\QEMM\DOSDATA.SYS REPORT
DEVICE=A:\QEMM\QEMM386.SYS RAM ST:M BF:N BTO:30

[STEALTH_F]
DEVICE=A:\QEMM\DOSDATA.SYS REPORT
DEVICE=A:\QEMM\QEMM386.SYS RAM ST:F BF:N BTO:30

[Q_XMS]
DEVICE=A:\QEMM\DOSDATA.SYS REPORT
DEVICE=A:\QEMM\QEMM386.SYS RAM BF:N BTO:30 EMS:N


Rem 谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
Rem ?The following section is HIEMM+EMM386 module ?
Rem 滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁

[HIMEMM-X&E]
DEVICE=A:\DOS\HIMEM.SYS /V
DEVICE=A:\DOS\EMM386.EXE RAM M3 HIGHSCAN I=B000-B7FF /V
[HIMEMM-X]
DEVICE=A:\DOS\HIMEM.SYS /V
DEVICE=A:\DOS\EMM386.EXE NOEMS HIGHSCAN I=B000-B7FF /V


[COMMON]
DEVICEHIGH/L:1=A:\DOS\TRICDVD.SYS /D:DISC0000
DEVICEHIGH/L:1=A:\DOS\ANSI.SYS/X/R
DEVICEHIGH?=A:\DOS\RAMDRIVE.SYS 1536 /E
DEVICEHIGH?=A:\DOS\RAMDRIVE.SYS 1536 /A
DEVICEHIGH?=A:\DOS\RAMDRIVE.SYS 4096 /E
DEVICEHIGH?=A:\DOS\RAMDRIVE.SYS 4096 /A
DEVICEHIGH?=A:\DOS\RAMDRIVE.SYS 16384 /E
DEVICEHIGH?=A:\DOS\RAMDRIVE.SYS 16384 /A
DEVICEHIGH?=A:\DOS\RAMDRIVE.SYS 32767 /E
DEVICEHIGH?=A:\DOS\RAMDRIVE.SYS 32767 /A
BUFFERS=45,0
FILES=20
DOS=UMB
LASTDRIVE=Z
FCBS=1,1
DOS=HIGH
;STACKS?=0,0
STACKS=9,256
SWITCHES=/F
NUMLOCK=ON
DRIVPARM?=/D:0/S:18/T:82

[COMMAND]
SHELL = A:\COMMAND.COM/P/E:512/MSG

[NDOS]
REM
REM The following section was added by Norton Utilities Install
REM
SHELL = A:\NDOS.COM @A:\NDOS.INI /P




DOS倒下了,但永远不死
DOS NEVER DIES !

投票调查:
http://www.cn-dos.net/forum/viewthread.php?tid=46187

本人尚未解决的疑难问题:
http://www.cn-dos.net/forum/viewthread.php?tid=15135
http://www.cn-dos.net/forum/viewthread.php?tid=47663
http://www.cn-dos.net/forum/viewthread.php?tid=48747
2006-1-11 18:16
查看资料  发短消息 网志   编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


积分 4432
发帖 1512
注册 2002-10-18
状态 离线
『第 12 楼』:  

Re DOSforever:

      很早看了你的回复,但是因为个人原因同时对此主题没有进一步的收获,故没有及时回复,请谅解,

      DOS 层的启动配置菜单实现应该可以有多种选择,最常用Config/Autoexec满足了大多数用户的一般使用需求,Bootcon / boot.sys 等满足少数用户可以预先加载驱动或配置程序及一些其它的需求。然而,正如你发现的,这并不是所有的需求。我在这里着重提出四点二者无法实现的例证,也包括你曾经提到过的。

      1、自定义菜单风格
      菜单风格有很多,但是我们所能选择的,却只有背景色/前景色,菜单标题,菜单项提示等少数几个项目,诸如菜单背景图,菜单项布局,菜单的多样化动态提示,菜单的下拉列表等各种各样的风格,对于许多设计开发者来说可能是切实的需要。

      2、菜单项的复选
      boot.sys 的连续菜单实际上只是一种近似意义上的复选,为了选择多个设备驱动,需要回答多个驱动加载的是否选择,这是低效且机械的设计。至于c/a的通过枚举所有可能的设备驱动组合来选择加载也只适用于驱动较少,如果可供选择设备有三个,那么枚举出的菜单选择项将会有8个排列组合,如果设备更多将只有分级选择,仍然治标不治本。对于你的config中ramdrive的加载选择的方式,我也持有同样的异议。

      3、菜单项的动态编辑
      boot.sys 的动态编辑只能实现单行指定语句参数的编辑,而无法实现语句命令的编辑,而至于我所需要的类似Grub那样的菜单项内容的整体编辑以及菜单项本身的编辑(增减、更改顺序、菜单提示、默认选择等),就更无从谈起了。

      4、中文及多语言的自由切换
      要想实现启动菜单的国际化,并非简单使用汉语或英语一种语言,而是通过多语言包实现菜单语言的兼容显示和动态切换,这在很多地方都已经有类似的实现。

      以上所说的这些,在 config.sys 中实现的难度将会很大,所以我才产生将之转移到autoexec 中通过批处理调用外部程序实现的思路。

      另外,因为一直无法联系到 不点 兄,所以重引导的实现暂时搁浅,希望兄与大家一同献计献策,以完成这个主题。



※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2006-1-16 01:35
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zhgwbzhd
高级用户





积分 506
发帖 187
注册 2005-12-4
状态 离线
『第 13 楼』:  

楼主弄完了吗?等待ing

2006-1-18 16:53
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lizhenduo
初级用户




积分 190
发帖 29
注册 2003-6-24
状态 离线
『第 14 楼』:  

willsort:
你的二次引导实现DOS启动菜单扩展的思路太好了,正是我需要的,希望尽快实现,并能使我们这些初学者容易实现扩展.
在纯DOS层下,我想加载一个大于5M的.img,使其再次引导.请帮忙.
谢谢了

2006-1-24 15:24
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
luobing
新手上路





积分 2
发帖 1
注册 2006-2-8
来自 nanjing
状态 离线
『第 15 楼』:  

我想,为什么要这么麻烦。自己改软盘或硬盘的主引导扇区,不就行了

2006-2-8 11:10
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: