不点 发表于 2014-12-10 10:16:45

如果在 grub4dos 中集成 DOS 运行环境,哪个开源的 DOS 比较好,请推荐

本帖最后由 不点 于 2015-1-3 14:06 编辑

我知道的有 dosemu,dosbox,freedos。还有别的 DOS 环境吗?您更喜欢哪一个?





2015年1月3日更新:这个是按照第一方案编写的版本。运行的逻辑路线:对于不带 “--config-file=......” 参数的 grub.exe 来说,如果它发现在地址 2M 处有以前的 grub4dos 的备份,则执行退出 DOS 返回到 grub4dos 的功能。如果在地址 2M 处没有发现 grub4dos 的备份,则像从前一样,正常加载 grub.exe 自身所带的 grub4dos 环境。用 "grub.exe --config-file=" (后面为空) 可以强制按照以前无参数的情形去执行,即,强制正常加载 grub.exe 自身所带的 grub4dos 环境,因此,不去执行退出 DOS 的动作,即,不会返回到以前的 grub4dos 环境中。这种方法用来模拟以前不带 “--config-file=......” 参数的 grub.exe 的情况。

2014年12月27日更新:这个是基于 26 日的版本,支持 “DOS 时代菜鸟 DOS 工具箱” 里面的中文 DOS。调用 BIOS 成功清屏,已经算是完美。
2014年12月26日更新:尽最大努力,支持中文 DOS 环境,仍不完美,留作参照物。
2014年12月25日更新:添加了恢复视频状态的 BIOS 调用,希望对于 DOS 图形模式的恢复起到某些帮助作用。

新增功能:

在 grub4dos 下用 boot 命令启动 DOS 后,可以用不带参数的 grub.exe 从 DOS 返回到 grub4dos 中。

以后,从 grub4dos 切换到 DOS 用 quit 命令即可。而从 DOS 切换到 grub4dos 仍然是用不带参数的 grub.exe 命令。

补充说明:不限定 DOS 的种类。任何 DOS 都支持。




ernesthan 发表于 2014-12-10 10:46:09

freedos

xhwfq 发表于 2014-12-10 11:08:02

感觉集成一个basic更好,用basic编写菜单比批处理强大多了;D

李泽勇 发表于 2014-12-10 12:53:54

新人路过,帮顶

sgw888 发表于 2014-12-10 15:44:51

我只用过freedos 虽然感觉不如msdos 但是freedos 有它自己的优点.

并且一些商业公司也在偷偷的用freedos.

Bluebells 发表于 2014-12-10 17:50:52

本帖最后由 Bluebells 于 2014-12-10 17:51 编辑

MS-DOS不好用,freedos比它好!不过有些dos软件不知道为什么不支持freedos,而ms-dos就可以

不点 发表于 2014-12-10 17:52:30

本帖最后由 不点 于 2014-12-14 23:51 编辑

加载 DOS 环境的话,就存在常规内存争用的问题了。

gfxmenu 使用了较高端的常规内存,直接与 DOS 软件的内存发生冲突。所以,gfxmenu 不能再支持了。

其他的内存,比如磁盘读写缓冲区以及几何参数探测缓冲区,可以合并或精简。最后,grub4dos 内核只能占用 128K 的低端内存,即,0 ~ 0x1FFFF 的内存空间。其余的,都留给 DOS 软件使用。

由于不再支持 gfxmenu,我打算开辟一个新的分支,比如,版本号就叫做 0.5。这样,不影响使用旧版的、现有的 gfxmenu 的用户。


进一步研究发现,FreeDOS 内核使用了物理地址 0x700 ~ 0x10000 的空间,这与 grub4dos 发生了冲突。

1、grub4dos 的未压缩菜单位于 0x800,这不能再用了,必须挪到别处,或者干脆撤销(把未压缩和压缩的菜单合并,只使用压缩菜单空间)。

2、grub4dos 的堆栈栈顶位于 0x7000,代码位于 0x8200~0x10000。解决办法是,让 FreeDOS 不再使用 0x6800 ~0x10000 的空间。

xiaoy 发表于 2014-12-10 19:26:05

感觉不需要集成DOS    但是整个支持NTFS读写 就够了

sunsea 发表于 2014-12-10 20:24:27

dosbox貌似是VM86的,可以借鉴一下

jack95 发表于 2014-12-10 23:03:11

集成dos后有什么优势,能带动那方面的应用?

不点 发表于 2014-12-11 08:19:02

jack95 发表于 2014-12-10 23:03
集成dos后有什么优势,能带动那方面的应用?

自己用,自己觉得有用。所有的开发工作,都是首先自己要用,然后才去开发。至于说对别人有没有用,那是不知道的。自己需要运行 DOS 程序,弥补 grub4dos 的应用程序的缺乏,所以想做这个开发。



2013abcdefg 发表于 2014-12-11 09:14:35

我觉得还是FREEDOS合适一点,核心文件小

不点 发表于 2014-12-14 21:23:01

对 freedos 进行了初步改造。改造后的版本已经上载在一楼,请测试它是否可以正常使用。

jack95 发表于 2014-12-14 23:11:15

运行后直接进入grldr,选freedos后卡主

jack95 发表于 2014-12-15 10:44:46

可以进入freedos,如何返回开始的grub4dos环境?

不点 发表于 2014-12-15 11:39:08

jack95 发表于 2014-12-14 23:11
运行后直接进入grldr,选freedos后卡主

请您确认:这是卡死吗?是不能进入 DOS 命令行吗?

不点 发表于 2014-12-15 11:42:30

jack95 发表于 2014-12-15 10:44
可以进入freedos,如何返回开始的grub4dos环境?

麻烦请您确认,新版和旧版是否都能进入 DOS?

目前只是初步的工作,仅仅测试修改后的 FreeDOS 究竟能否正常工作。

其他工作还没开展,预计需要两个礼拜或两个月才能全部做完。

pcs2006 发表于 2014-12-15 15:43:19

jack95 发表于 2014-12-15 10:44
可以进入freedos,如何返回开始的grub4dos环境?

可以用grub.exe返回grub4dos环境,grub.exe请在本板置顶贴找,自行用UltraISO加入ima内即可

2013abcdefg 发表于 2014-12-15 18:51:52

我这两个都可以入到DOS

2013abcdefg 发表于 2014-12-15 21:52:00

发一个更小的DOS,我也不知道是什么DOS也不知是否商用的

roytam1 发表于 2014-12-16 07:54:14

2013abcdefg 发表于 2014-12-15 21:52
发一个更小的DOS,我也不知道是什么DOS也不知是否商用的

TBOS (TeraByte OS) free for personal use
TeraByte Unlimited makes TBOS available as part of the TeraByte OS Deployment Tool Suite.

Short description: TBOS (TeraByte OS) is a small basic real-mode OS that can run most DOS programs. (It's pronounced "Tee Boss")

TBOS itself (tbos.sys) is a minimalistic DOS kernel (just 18kB) which allows you to run some DOS programs. But it has not implemented a lot of DOS services so many programs hangs with error message - e.g. I tried to replace shell by datalight minicmd, freecom, ms-dos 6.22 command.com, cwsd-stubbed bash but nothink works. It also don't support HDD/FAT16, runs only on a floppy (similar to FlopOS)

ql1307096 发表于 2014-12-16 15:14:31

不知道这个跟map img镜像有什么区别呢?

不点 发表于 2014-12-18 17:14:42

ql1307096 发表于 2014-12-16 15:14
不知道这个跟map img镜像有什么区别呢?

差别不是太大。目前通过 img 进入 DOS 之后,无法返回到 grub4dos 中。注意,通过 grub.exe 可以再次进入 grub4dos,但那不等于退回到 grub4dos。用 grub.exe 重新进入 grub4dos 后,那是一个全新的 grub4dos 环境,原来的变量都丢失了。

改进之后,可以自由地在 grub4dos 与 DOS 之间切换,两者的运行环境都不破坏,变量都不丢失。

至于说具体的实现手段,还在权衡之中。

不点 发表于 2014-12-18 18:24:42

又考虑了几天,觉得应该分步骤实现。

作为第一步,目前先考虑简单的情况,以 “概念证明” 的性质来实现。

这个阶段的 DOS 限定为只使用 1M 以内的空间,不使用扩展内存。如此一来,与 grub4dos 的冲突将减少,因此容易解决冲突问题。

以后,当把 grub4dos 的内核搬到扩展内存顶端以后,再考虑不限制 DOS 内存的问题。

当从 grub4dos 切换到 dos 时,保存 grub4dos 的环境。

当从 dos 切换到 grub4dos 时,也保存 DOS 的环境。

所以,关键是实现一个切换的接口。目前考虑以命令的方式来实现。

在 dos 下实现一个 breakdos 命令,可以从 dos 返回到 grub4dos 环境。
在 grub4dos 下实现一个 resumedos 命令,可以从 grub4dos 进入 DOS 环境并恢复到原先的状态。

月光海洋 发表于 2014-12-18 22:07:19

这个会不会使p大的0pe更加强大

pseudo 发表于 2014-12-18 22:25:56

本帖最后由 pseudo 于 2014-12-18 22:28 编辑

细节:resumedos超过8字符了。即使支持长文件名也尽量不动用长名为好。
用todos、togrub,或者doshome、grubhome,dos2grub、grub2dos之类?

roytam1 发表于 2014-12-18 23:06:02

這樣的話直接把DOS接口造成TSR讓各種DOS使用就好

cchessbd 发表于 2014-12-19 07:56:43

我喜欢freedos,最主要的是他不怕逻辑锁,可在带锁硬盘启动。

不点 发表于 2014-12-21 17:33:57

2014年12月21日:编译了 grub4dos,请测试常规功能是否正常。也测试新增的功能是否正常。

新增功能:

在 grub4dos 下用 boot 命令启动 DOS 后,可以用不带参数的 grub.exe 从 DOS 返回到 grub4dos 中。

以后,从 grub4dos 切换到 DOS 用 quit 命令即可。而从 DOS 切换到 grub4dos 仍然是用不带参数的 grub.exe 命令。

补充说明:不限定 DOS 的种类。任何 DOS 都支持。

jack95 发表于 2014-12-21 19:34:39

不懂如何测试
页: [1] 2 3
查看完整版本: 如果在 grub4dos 中集成 DOS 运行环境,哪个开源的 DOS 比较好,请推荐