中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-09-06 05:34
中国DOS联盟论坛 » DOS启动盘 & LOGO技术 (启动盘室) » [分享][原创]自制DOS 7.1启动盘v1.0 查看 604 回复 4
楼 主 [分享][原创]自制DOS 7.1启动盘v1.0 发表于 2026-05-14 21:13 ·  中国 陕西 中国移动
新手上路
积分 4
发帖 1
注册 2024-05-02 16:32
2年会员
UID 185677
性别 男
来自 黑龙江省哈尔滨市
状态 离线
自己制作的MS-DOS 7.1启动盘,包含所有基本命令和debug。
如果有bug或者优化建议请给我发送邮件
下载:https://upload.cn-dos.net/img/2504.img
后期会继续更新2.0版本,敬请期待!

[ Last edited by RYSF13 on 2026-5-14 at 21:14 ]
main(){for(;;fork())puts("Catch me if you can!"),sleep(1);}
2 发表于 2026-08-17 14:11 ·  中国 河北 中国电信
新手上路
积分 31
发帖 7
注册 2026-08-16 13:59
UID 186236
性别 男
来自 中国-山东-淄博-临淄
状态 离线
刚过“新手保护期”,发一个DOS710.zip (7.9 MB)

注意,本程序不会自动分区,请手动敲FDISK

折腾了一段时间,弄了个 DOS 7.1 的安装盘,发上来分享一下。版本号定 1.00,算是第一个正式版。

主要特点:

三种安装模式

Mini DOS:只装核心 + 基础驱动(HIMEM、EMM386、VIDE-CDD 这几个)

Only DOS:只 SYS 传系统文件,不复制工具

Full DOS:完整系统 + DOS 工具包 

ADDON 管理
装完系统后可以按需装附加工具,四级菜单,按分类走:

中文系统:TWAY、CCDOS

声卡驱动:SBLIVE、SBPCL、SBPNP、CMEDIA、ESS、VIA

游戏:DOOM

应用软件:EDIT、MSAV、VC

设计上的一些处理

安装过程不用 PKUNZIP,用 XCOPY 直接复制展开的目录。之前用 ZIP 包在实机上遇到过 CRC 校验失败和内存不足的问题,干脆换成 XCOPY,省心。

菜单交互用的 CHOICE.COM,之前用 SET/P 在纯 DOS 下有时不等待输入就跳过了,换 CHOICE 之后稳定不少。

光盘启动后 BIOS 会把光盘映射成 C:,物理硬盘变成 D:。目前方案是固定往 C: 装,有需要的可以自己调整。

资源占用
ISO 大概 8MB,含 DOS 核心、工具包、ADDON 和 Windows 3.1。刻光盘、挂虚拟机、写 U 盘用都可以。

注意事项

适用 BIOS 启动,VirtualBox、VMware 和实机都试过能用。

安装过程需要 2MB 以上内存(DOS 系统本身 640KB 就能跑,但安装程序要把IMG加载进内存,1.44MB+640KB约等于2MB)。

注意:这个 ISO 是光盘版,不支持直接写入 U 盘做 USB-HDD 启动。我之前试过,写入后会将USB本身当做C盘,而D盘会成为电脑磁盘,所以建议老老实实刻盘或挂虚拟机用。如果你有办法让它从 U 盘启动,欢迎分享方法。

致谢
参考了论坛里 Wengier 等人做的 MS-DOS 7.10 安装盘,以及之前各位留下的资料,一并感谢。

下载
https://upload.cn-dos.net/dl/ZGw6eDVPQ2VLSnE6MTc4Njg2MjIxMQ.YiRQRKiL7_V7WU_AIdVs7zECEF1ZRnEt4CpVtAUQUK4
MD5: 9ad70a866851e51500773dc915e9cab5
SHA256: f92caa2f02260d5367b29eff1793abba28c6a178c8f3e69dabf442a795677360



有问题留言,谢谢
3 发表于 2026-08-17 14:13 ·  中国 河北 中国电信
新手上路
积分 31
发帖 7
注册 2026-08-16 13:59
UID 186236
性别 男
来自 中国-山东-淄博-临淄
状态 离线
我刚刚发的是一个zip包,顺便我也把之前的俩beta版本发一下

都是ZIP包,有需要的可以自行解压

beta2.zip (2.3 MB)

最近几天还会发这个自制系统的2.00版本,大家尽请期待
beta1.zip (12.8 MB)
[已使用 Gemini 解答]
Gemini 解答

技术背景与体系定位

帖中讨论的“自制 MS-DOS 7.1 安装盘”,其核心文件(IO.SYSMSDOS.SYSCOMMAND.COM 等)提取自 Windows 95 OSR2 / Windows 98 / Windows 98 SE。微软官方从未发布过独立的“MS-DOS 7.10 完整零售安装版”,其原生定位是作为 Windows 9x 的底层实模式引导与兼容层。

2000 年前后,中文社区(以中国 DOS 联盟 Wengier 制作的 MS-DOS 7.10 安装光盘为代表)通过提取 Windows 98 的实模式核心,结合自定义批处理、第三方开源/免费工具、声卡与中文驱动,封装出可独立分发和安装的系统介质。帖中作者制作的各种 beta 与正式版均属于此类社区二次封装分发。


技术机制与认知纠正

结合前楼及本帖发布的分发包,对其打包与运行机制中的技术细节和常见误区作如下说明:

1. 批处理交互指令:SET /PCHOICE.COM

  • 现象:作者在前楼提及“SET /P 在纯 DOS 下有时不等待输入就跳过,换 CHOICE 之后稳定不少”。
  • 技术事实:MS-DOS 7.10 的命令解释器 COMMAND.COM 原生不支持 SET /P 交互式赋值语法。
    • SET /P variable=[promptString] 是 Windows 2000 / XP 的 cmd.exe 引入的扩展语法。
    • 在 MS-DOS(包括 6.22 及 7.x 的 COMMAND.COM)下执行该语句时,解释器会将 /P 视作普通变量名或非法参数直接赋值并继续执行,表现为“不等待输入、瞬间跳过”。
    • 纯 DOS 环境下的标准化菜单交互方案是使用 CHOICE.COM 捕获按键并配合 %ERRORLEVEL% 条件跳转,或使用 4DOS 等第三方 Shell。

2. 光盘引导机制(El Torito)与盘符漂移

  • 现象:作者认为“光盘启动后 BIOS 会把光盘映射成 C:,物理硬盘变成 D:”,因此“固定往 C: 装”。
  • 技术事实:这是对 El Torito 光盘引导规范及 BIOS 驱动器仿真机制的误解:
    • 软盘仿真模式(Floppy Emulation):使用 1.44MB 或 2.88MB 引导镜像时,BIOS 会将其仿真为软驱 A:(原物理 A: 顺延为 B:),物理硬盘主分区仍为 C:
    • 硬盘仿真模式(Hard Disk Emulation):光盘引导扇区被指定为硬盘镜像,BIOS 会将其接管并映射为 C:(INT 13h,设备号 0x80),原物理硬盘被推移至 D:0x81)。
    • 非仿真模式(No Emulation):光盘引导扇区直接加载引导器(如 isolinux),不创建虚拟驱动器,后续驱动器盘符完全由 CONFIG.SYS 加载的光驱驱动(如 VIDE-CDD.SYS)与 MSCDEX / SHSUCDX 决定。
  • 潜在风险:如果安装程序硬编码“固定往 C: 安装”,在硬盘仿真模式下,安装程序实际写入的是基于内存/光盘的虚拟启动区,并未真正写入物理硬盘;而在软盘仿真模式下,C: 才是物理硬盘。规范的 DOS 安装脚本通常借助工具检测未写保护的固定磁盘(Fixed Disk),动态判断安装目标盘符。

3. PKUNZIP 的 CRC 报错与内存限制

  • 现象:使用 PKUNZIP 解压大型安装包时偶发“内存不足”或“CRC 校验错误”。
  • 技术事实
    • 16 位实模式下的解压程序(如 PKUNZIP 2.04g)完全在常规内存(Conventional Memory,640KB)中运行,维护解压哈希表和缓冲区。
    • 当安装盘加载了复杂的中文平台、声卡驻留驱动或 CONFIG.SYS 中 buffers/files 配置不当时,可用常规内存大幅缩减,易引发内存溢出。
    • 此外,早期 DOS 下内存管理器(如 EMM386.EXE 的 UMB 映射冲突)若未正确排除光驱/声卡占用的保留内存区域,会导致解压缓冲区数据被覆盖,从而产生虚假的“CRC Error”。
    • 现代 DOS 封装通常使用 32 位 DPMI 扩展的解压工具(如 Info-ZIP UNZIP32 或 DOS 版 7-Zip),直接利用扩展内存(XMS),避免常规内存瓶颈。

4. 内存需求与 RAMDisk 计算

  • 技术事实:作者提出的“1.44MB + 640KB 约等于 2MB 内存需求”存在计算逻辑偏差。
    • DOS 实模式寻址空间上限为 1MB(00000h–FFFFFh)。
    • 系统若需 2MB 以上内存,是因为安装环境启用了 HIMEM.SYS 访问扩展内存(XMS),并利用 XMS 创建了虚拟内存盘(RAMDisk,如 XMSDSK)用于展开解压临时文件和驱动。物理软盘/光盘仿真本身的扇区读取并不直接消耗扩展内存。
4 发表于 2026-08-18 11:30 ·  中国 河北 中国电信
新手上路
积分 31
发帖 7
注册 2026-08-16 13:59
UID 186236
性别 男
来自 中国-山东-淄博-临淄
状态 离线
===+自制MSDOS 7.10 启动光盘2.00版正式发布!!!+===

下载:
双版本.7z (12.6 MB)
第一个版本是我当时发的库存,还有很多问题
(下面的7z包里面是两个版本,包括之前发布的1.00版本)
(大家可以去下面投票)
注意,本产品目前还没有USB版本

2.00版更新功能


  • 1,自动分区(重大更新)(仅限2.00版本)


          我之前的1.00版本是不可以自动分区的,需要大家自己敲FDISK。
          但是,随着2.00的发布,这款光盘内部集成了GDISK,可以自动分区了
         (分区完之后还会强制要求重启,相信老用户都知道咋破解)
:R
cls
ECHO: Please restart your computer
Pause >nul
GOTO R


  • 2,自定义CONFIG.SYS和AUTOEXEC.BAT


         目前这个功能还仅限于简单选择,但是代码粘给大家看看,说不定有帮助(这里面的CSTART和ASTART标签是因为我当时是把两个BAT合到一起做的这个SETUP)
@ECHO OFF
CLS

:CSTART
ECHO:
ECHO:  ECONFIG 1.00 - CONFIG.SYS Customizer
ECHO:

IF EXIST C:\CONFIG.SYS GOTO CBackup
GOTO CWrite

:CBackup
COPY C:\CONFIG.SYS C:\CONFIG.000 > NUL
DEL C:\CONFIG.SYS

:CWrite
ECHO DEVICE=C:\DOS\ECHO.SYS W/e/l/c/o/m/e /t/o MS-DOS 7.10... > C:\CONFIG.SYS
ECHO DEVICE=C:\DOS\ECHO.SYS C/o/p/y/r/i/g/h/t M/i/c/r/o/s/o/f/t C/o/r/p. A/l/l /r/i/g/h/t/s /r/e/s/e/r/v/e/d. >> C:\CONFIG.SYS

:CMENU
CLS
ECHO:
ECHO:
ECHO:=====================================
ECHO:  Memory Manager Selection
ECHO:=====================================
ECHO:  1, Use HIMEM + EMM386
ECHO:  2, Use JEMMEX
ECHO:  3, Use None
ECHO:=====================================

CHOICE /C:123 /N "Press 1/2/3: "

IF ERRORLEVEL 3 GOTO CWrite2
IF ERRORLEVEL 2 GOTO CJEMMEX
IF ERRORLEVEL 1 GOTO CHIMEM
GOTO CMENU

:CHIMEM
ECHO DEVICE=C:\DOS\HIMEM.SYS >> C:\CONFIG.SYS
ECHO DEVICE=C:\DOS\EMM386.EXE NOEMS >> C:\CONFIG.SYS
GOTO CWrite2

:CJEMMEX
ECHO DEVICE=C:\DOS\JEMMEX.EXE >> C:\CONFIG.SYS
GOTO CWrite2

:CWrite2
ECHO DEVICEHIGH=C:\DOS\SETVER.EXE >> C:\CONFIG.SYS
ECHO DEVICEHIGH=C:\DOS\VIDE-CDD.SYS /D:IDE-CD >> C:\CONFIG.SYS
ECHO DOS=HIGH,UMB,AUTO >> C:\CONFIG.SYS
ECHO COUNTRY=001,936,C:\DOS\COUNTRY.SYS >> C:\CONFIG.SYS
ECHO FCBS=4,0 >> C:\CONFIG.SYS
ECHO FILES=30 >> C:\CONFIG.SYS
ECHO BUFFERS=20,0 >> C:\CONFIG.SYS
ECHO LASTDRIVE=Z >> C:\CONFIG.SYS
ECHO STACKS=9,256 >> C:\CONFIG.SYS
ECHO SHELL=C:\COMMAND.COM C:\ /E:640 /P >> C:\CONFIG.SYS

:ENDC
ECHO:
ECHO CONFIG.SYS has been created successfully!
ECHO:
PAUSE
GOTO ASTART

:ASTART
CLS
ECHO:
ECHO:  EAUTO 1.00 - AUTOEXEC.BAT Customizer
ECHO:

IF EXIST C:\AUTOEXEC.BAT GOTO ABackup
GOTO AWrite

:ABackup
COPY C:\AUTOEXEC.BAT C:\AUTOEXEC.000 > NUL
DEL C:\AUTOEXEC.BAT

:AWrite
ECHO @ECHO OFF > C:\AUTOEXEC.BAT
ECHO PROMPT $P$G >> C:\AUTOEXEC.BAT
ECHO PATH=C:\DOS >> C:\AUTOEXEC.BAT
ECHO SET DIRCMD=/4 >> C:\AUTOEXEC.BAT
ECHO MODE CON RATE=32 DELAY=1 >> C:\AUTOEXEC.BAT
ECHO BREAK ON >> C:\AUTOEXEC.BAT
ECHO LFNFOR ON >> C:\AUTOEXEC.BAT

:AMENU
CLS
ECHO:
ECHO:
ECHO:=====================================
ECHO:  AUTOEXEC.BAT Customizer
ECHO:=====================================
ECHO:  1, Load TSR Programs (Standard)
ECHO:  2, Load TSR Programs (Custom)
ECHO:  3, Load None (Minimal)
ECHO:=====================================

CHOICE /C:123 /N "Press 1/2/3: "

IF ERRORLEVEL 3 GOTO AM
IF ERRORLEVEL 2 GOTO AC
IF ERRORLEVEL 1 GOTO AS
GOTO AMENU

:AS
ECHO LH KILLER >> C:\AUTOEXEC.BAT
ECHO LH DOSKEY >> C:\AUTOEXEC.BAT
ECHO LH DOSLFN /Z:C:\DOS\CP437UNI.TBL >> C:\AUTOEXEC.BAT
ECHO LH MSCDEX /D:IDE-CD >> C:\AUTOEXEC.BAT
ECHO LH SHARE /L:30 >> C:\AUTOEXEC.BAT
ECHO LH CTMOUSE > NUL >> C:\AUTOEXEC.BAT
GOTO WENDA

:AC
CLS
ECHO:
ECHO:  Select TSR Programs to Load (Page 1 of 2)
ECHO:  1, KILLER
ECHO:  2, DOSKEY
ECHO:  3, DOSLFN
ECHO:  4, MSCDEX
ECHO:  N, Next Page
ECHO:  Q, Done (Finish)
ECHO:

:TP1
CHOICE /C:1234NQ /N "Select (1-4/N/Q): "

IF ERRORLEVEL 6 GOTO WENDA
IF ERRORLEVEL 5 GOTO TP2
IF ERRORLEVEL 4 GOTO MSCDEX
IF ERRORLEVEL 3 GOTO DOSLFN
IF ERRORLEVEL 2 GOTO DOSKEY
IF ERRORLEVEL 1 GOTO KILLER
GOTO TP1

:TP2
CLS
ECHO:
ECHO:  Select TSR Programs to Load (Page 2 of 2)
ECHO:  1, SHARE
ECHO:  2, CTMOUSE
ECHO:  P, Previous Page
ECHO:  Q, Done (Finish)
ECHO:

CHOICE /C:12PQ /N "Select (1-2/P/Q): "

IF ERRORLEVEL 4 GOTO WENDA
IF ERRORLEVEL 3 GOTO TP1
IF ERRORLEVEL 2 GOTO CTMOUSE
IF ERRORLEVEL 1 GOTO SHARE
GOTO TP2

:KILLER
ECHO LH KILLER >> C:\AUTOEXEC.BAT
GOTO TP1

OSKEY
ECHO LH DOSKEY >> C:\AUTOEXEC.BAT
GOTO TP1

OSLFN
ECHO LH DOSLFN /Z:C:\DOS\CP437UNI.TBL >> C:\AUTOEXEC.BAT
GOTO TP1

:MSCDEX
ECHO LH MSCDEX /D:IDE-CD >> C:\AUTOEXEC.BAT
GOTO TP1

:SHARE
ECHO LH SHARE /L:30 >> C:\AUTOEXEC.BAT
GOTO TP2

:CTMOUSE
ECHO LH CTMOUSE > NUL >> C:\AUTOEXEC.BAT
GOTO TP2

:AM
REM No TSR loaded
GOTO WENDA

:WENDA
ECHO CALL LOCKDRV.BAT >> C:\AUTOEXEC.BAT
ECHO ECHO. >> C:\AUTOEXEC.BAT
ECHO ECHO Now you are in MS-DOS 7.10 prompt. Type 'HELP' for help. >> C:\AUTOEXEC.BAT
ECHO ECHO. >> C:\AUTOEXEC.BAT

:ENDA
ECHO:
ECHO AUTOEXEC.BAT has been created successfully!
ECHO:
Pause
A:\SETUP.BAT


  • 3,自带WIN 3.1


           我原本想在Beta 1版本就加上这一点,但是当时启动盘功能还很差劲,甚至SETUP.BAT反复崩溃
           现在选择安装WIN3.1,会把文件复制到C盘并出现重启敲C:\WIN31\SETUP.EXE的提示
如果你想安装WIN3.1,强烈建议使用JEMMEX!
           

  • 4,其他更新


            替换安装盘里HIMEM为JEMMEX

如果有疑问,联系我:QQ:534373695





  
[已使用 Gemini 解答]
Gemini 解答

本帖讨论了基于 MS-DOS 7.10(源自 Windows 98/98SE 提取的核心及社区改造分发版本)制作自动化安装/启动光盘的实现细节。针对贴中涉及的批处理逻辑、内存管理及环境兼容性,进行以下技术解读与纠正:

1. 批处理交互与分支逻辑分析

帖中提供的批处理代码主要用于在目标盘动态生成 CONFIG.SYSAUTOEXEC.BAT。其中包含几处典型的 DOS 批处理编写问题与陷阱:

  • CHOICE 命令的 ERRORLEVEL 判断顺序: DOS 批处理中 IF ERRORLEVEL n 的判定规则是“当前退出码大于或等于 $n$ 即为真”。帖中作者正确地采用了从大到小的降序判断(如 IF ERRORLEVEL 3 在先,IF ERRORLEVEL 1 在后),避免了逻辑被低数值短路的问题。
  • 重定向输出中的特殊字符问题: 在 ASTART 块中,代码执行了 ECHO PROMPT $P$G >> C:\AUTOEXEC.BAT。在纯 MS-DOS 7.10 环境下,$P$G 作为字符串参数不会被解析为管道或重定向符;但在某些 NT 系列 CMD 模拟环境或特定扩展 Shell 下,>< 可能会被错误解析。在纯 DOS 下该写法有效。
  • 无限循环与死锁风险: 自动分区完成后的死循环提示:
    :R
    cls
    ECHO:Please restart your computer
    Pause >nul
    GOTO R
    
    在实机部署中,使用无响应死循环强制用户按物理重启键(或 Ctrl+Alt+Del)是早期装机盘的常见土法。但更规范的做法是调用软重启工具(如 REBOOT.COM 或通过 DEBUG 写入跳转到 FFFF:0000h 的指令重置机器),避免用户在文件系统缓存未刷新时直接断电。

2. 内存管理误区:Windows 3.1 与 JEMMEX / EMM386

帖子中声称“如果你想安装 WIN3.1,强烈建议使用 JEMMEX”,这一结论在技术事实上是错误的

  • JEMMEX 的工作机制JEMMEX.EXE(源自 FreeDOS 生态,由 Japheth 开发)是一个将 XMS 与 EMS 管理器整合到单一驱动中的工具,主要针对实模式 DOS 程序及保护模式 DOS 扩展器(DOS Extender)进行了优化。
  • Windows 3.1 386 增强模式(Enhanced Mode)的冲突
    • Windows 3.1 在启动 WIN386.EXE 进入 386 增强模式时,自身包含一个完整的虚拟内存管理系统(VxD 体系),需要通过标准 XMS 接口接管 CPU 的保护模式控制权。
    • JEMMEX 默认开启了自身的保护模式/V86 监视器,与 Windows 3.x 内部的 WIN386 核心存在严重的嵌套虚拟化冲突,极易导致 Windows 3.1 启动时发生蓝屏崩溃、GPF(一般保护性错误)或直接黑屏死机。
    • 正确做法:运行 Windows 3.1 的标准推荐配置应为微软原生的 HIMEM.SYS 加上 EMM386.EXE(通常加 NOEMS 参数,或仅在需要 EMS 时加 RAM 参数),或者完全不加载 EMM386(仅加载 HIMEM.SYS),交由 Windows 自身管理 UMB 和 EMS。

3. MS-DOS 7.10 配置文件中的参数细节

  • COUNTRY=001,936,C:\DOS\COUNTRY.SYS: 参数中的 001 是美国国家代码,936 是简体中文(GBK)代码页。在标准 MS-DOS 下,国家代码 086 对应中国。虽然设置 001,936 可以强行让系统在保持美式日期/时间格式的同时指定 936 代码页,但在未挂载支持 936 编码的显示驱动与字库(如倚天、中文双桥、UCDOS 或 MS-DOS 7.10 专用的中文补丁)时,控制台直接运行会导致部分字符集解析异常。
  • ECHO.SYS 驱动DEVICE=C:\DOS\ECHO.SYS ... 是早期启动盘为了在 CONFIG.SYS 执行阶段打印自定义文本(模拟图形化启动提示)而引入的第三方驱动。由于微软原生 MS-DOS 不支持在 CONFIG.SYS 中原生 ECHO 文本,该方式属于当年的通行技巧。
  • DOSLFNCP437UNI.TBLDOSLFN 是 DOS 下的长文件名支持 TSR。由于长文件名在 VFAT 系统中使用 Unicode 编码存储,DOSLFN 必须依赖转换表(如 CP437 到 Unicode 的映射表)。如果在中文环境下混合使用长文件名和 936 编码,应配合 CP936UNI.TBL,否则中文长文件名在目录列表中会显示为乱码或产生文件名校验错误。

4. 光盘启动与 USB-HDD 盘符漂移机制说明

帖中提及“光盘启动后 BIOS 会把光盘映射成 C:,物理硬盘变成 D:”,以及“写入 U 盘后会将 USB 自身当做 C 盘”,这是由系统引导阶段的 INT 13h 仿真机制决定的:

  • El Torito 光盘启动规范:启动光盘通常使用“软盘仿真(Floppy Emulation)”或“硬盘仿真(Hard Disk Emulation)”。若 ISO 制作时采用了硬盘仿真模式,BIOS 会将光盘介质接管为 DL=80h(即第一个物理硬盘,DOS 识别为 C:),而将原机器的物理硬盘顺延为 DL=81h(DOS 识别为 D:)。若改用 No-Emulation(无仿真)或标准的 1.44M 软盘仿真(光盘模拟为 A:),物理硬盘就会稳定保持为 C: 盘。
  • USB 启动环境:主板 BIOS 在引导 USB 设备时,会依据 USB 设备的 MBR 分区表将其模拟为 80h 驱动器,导致安装程序若硬编码向 C:\ 复制,实际上会将文件写入 U 盘自身。解决该问题的标准做法是通过批处理动态检测目标盘符(如利用 FINDRAMDRIVE 或专用的探测工具),而不是硬编码 C:\
5 发表于 2026-08-26 17:16 ·  中国 河北 中国电信
新手上路
积分 31
发帖 7
注册 2026-08-16 13:59
UID 186236
性别 男
来自 中国-山东-淄博-临淄
状态 离线
DOS71自制.7z (11.9 MB)

之前由于文件太大,超过20MB,没法上传,所以这次用了7z压缩包,推荐用7zip解压。
注意:USB版还在开发中,目前盘符会飘移,我还在想办法解决。
另外,2.1版本原本打算做汉化,目前还在进行中,暂时没有发布。
下载地址在上面

2.2版本更新内容:


SETUP加入启动LOGO
虽然不是必要功能,但算是一个小更新,启动时能看到画面了。

SETUP.BAT、ADDON.BAT改用BASIC重写
换成BASIC之后,加LOGO更方便了。如果你对代码感兴趣,可以联系我:QQ:534373695。


2.0 Mini版
这个版本没有任何更新,只是单独放出了一个纯Mini安装包,有需要的可以自行下载。
2.2后续计划
目前2.2还没结束,后面会陆续出几个衍生版:


  • 2.2 DOS98版:使用Win98自带的DOS内核,不做修改,作为一个衍生版本单独放出。

  • 2.2 DOS6.22版:使用MS-DOS 6.22内核,注意这个版本不支持FAT32,也不支持大硬盘。

  • 2.2 ME版:使用Windows ME内核(我习惯叫它Windows Mistake Edition),这个版本砍掉了SYS、DEBUG、EDIT等一大批工具,不建议正常使用,纯属整活。

  • 2.2 Bugs版:把我开发过程中遇到过的所有翻车现场都塞进安装程序里,不建议认真用,但可以试试看。

  • 2.2 Large版:会在现有基础上增加4DOS、UCDOS、大富翁3等更多ADDON工具。















[已使用 Gemini 解答]
Gemini 解答

本帖涉及 DOS 安装介质制作、引导机制、内存管理器选型以及 DOS 衍生版本的内核差异。对帖中涉及的技术细节解读与纠正如下:

1. USB 启动盘“盘符漂移”的底层原因

原帖提到“写入 U 盘后 USB 会被当做 C 盘,物理硬盘变成 D 盘”。

  • 机制成因:在传统 BIOS(Legacy BIOS)环境下,USB-HDD 模式引导时,主板 BIOS 的 INT 13h 中断服务会将当前启动的 U 盘映射为第一主驱动器(磁盘代号 80h)。DOS 系统初始化时根据 INT 13h 读出的磁盘顺序分配盘符,因此 80h 上的第一个主分区必定被分配为 C:,而主板内置的物理硬盘则被识别为第二驱动器(81h),盘符顺延为 D:
  • 光盘引导差异:使用 El Torito 标准的光盘启动(如软盘模拟模式)时,BIOS 通常将虚拟软盘镜像映射为 A:B:,因此物理硬盘仍为 C:
  • 解决方案:在纯 DOS 环境下解决 USB 启动盘符漂移,通常依赖 Grub4DOS 等前置引导器在实模式下执行磁盘交换(map (hd0) (hd1)map (hd1) (hd0),再执行 map --hook),或者在安装批处理中避免硬编码 C:,改用工具(如 GETDRV 或检测特定标记文件)动态识别目标物理磁盘的盘符。

2. Windows 3.1 与内存管理器(JEMMEX / HIMEM / EMM386)的兼容性

原帖在 4 楼提到“想安装 WIN3.1,强烈建议使用 JEMMEX”,该结论存在技术误区:

  • 标准兼容性事实:Windows 3.1(无论标准模式还是 386 增强模式)对第三方 EMS/XMS 内存管理器兼容性极差。JEMMEX 是 FreeDOS 生态下的集成式 XMS/EMS 管理器(基于 Jemm386/JemmEx 开发),其接管 CPU 保护模式(V86 模式)和 VCPI 机制的方式与 Windows 3.1 核心(WIN386.EXE)的 DPMI/VxD 分页机制冲突,常导致 386 增强模式启动时出现实模式崩溃或蓝屏。
  • 正确搭配:Windows 3.1 / 3.2 运行在 386 增强模式下,最稳定的配置是微软原生的 HIMEM.SYS(提供 XMS 驱动),尽量不加载 EMM386.EXE,若必须加载 EMM386,也需加入 NOEMS 开关以避免页框架抢占。

3. CONFIG.SYS 与 AUTOEXEC.BAT 配置细节纠正

原帖在 4 楼给出的配置文件生成逻辑存在几处配置冲突与语法错误:

  • COUNTRY=001,936,... 语法错误COUNTRY 命令的第一参数为国家代码(Country Code),第二参数为代码页(Code Page)。001 代表美国(代码页 437)。如果要配置简体中文环境(代码页 936),国家代码应为 086(即 COUNTRY=086,936,C:\DOS\COUNTRY.SYS)。使用 001,936 会导致部分区域日期/时间格式与双字节字符解析异常。
  • CHOICE 交互的 IF ERRORLEVEL 顺序:在 4 楼的 ACTP2 标签逻辑中:
    IF ERRORLEVEL 4 GOTO WENDA
    IF ERRORLEVEL 3 GOTO TP1
    IF ERRORLEVEL 2 GOTO CTMOUSE
    IF ERRORLEVEL 1 GOTO SHARE
    
    在 DOS 的 COMMAND.COM 中,IF ERRORLEVEL n 的语义是“返回值大于或等于 $n$”。原帖按照从大到小的顺序检测是正确的;但在早期版本中常有开发者误用升序(先判断 1),导致永远命中第一个分支。

4. 各版本 DOS 内核特性解析(关于 2.2 规划版)

原帖列出了几个不同内核计划,其实际技术差异如下:

  • MS-DOS 7.10 与 Win98 内核:原版 MS-DOS 7.10 即提取自 Windows 95 OSR2 / Windows 98 / 98 SE(核心文件为 IO.SYSMSDOS.SYS)。所谓“DOS 7.1 自制版”本质上是对 Windows 98 的实模式核心进行了去图形化包装,原生支持 FAT32 分区和大硬盘(LBA / INT 13h 扩展)。
  • MS-DOS 6.22 内核:仅支持 FAT12/FAT16 文件系统,单个逻辑驱动器最大容量为 2GB,不支持 INT 13h 扩展寻址(最大只能访问 BIOS 寻址限制内的 8.4GB 硬盘)。
  • Windows ME 内核(MS-DOS 8.0):微软在 WinME 的 IO.SYS 中默认禁用了实模式 DOS 引导功能(移除了直接进入纯实模式的接口,默认强制拉起 WIN.COM 并锁定了 AUTOEXEC.BAT/CONFIG.SYS 处理)。要在 WinME 内核下实现纯 DOS 运行,必须通过补丁修改 IO.SYS 中的跳转指令以解除实模式锁定。此外,WinME 移除了多项经典实模式维护工具。
论坛跳转: