加载失败
MS‑DOS 的内存模型把前 640KB 定义为常规内存(conventional memory),640KB 以上到 1MB 的区域可被分割成 UMB(Upper Memory Block)用来加载驱动或常驻程序以释放常规内存。为了让老式 DOS 程序或游戏运行,用户会手动编辑 CONFIG.SYS/AUTOEXEC.BAT 或使用 MEMMAKER(MS‑DOS 的自动化工具)把 MSCDEX(CD‑ROM 驱动)、鼠标驱动、COMMAND.COM 等迁移到高内存,但某些硬件驱动(如 Media Vision/Audio Spectrum 16 或特定的 SoundBlaster 兼容层)常常阻碍这些操作。评论还涉及 DOS 可执行文件头的 'MZ' 魔数(由 Mark Zbikowski 命名)以及与 AARD code(用于探测非 MS‑DOS 环境、与 Aaron R. Reynolds 有关)相关的历史片段。随着 Windows for Workgroups 3.11(含 VFAT 原型)、Windows 95 与 Windows NT 的部署,这类底层内存微调逐渐成为历史与怀旧话题。
大量评论回忆在 MS‑DOS(如 MS‑DOS 6/7)时代通过把驱动和 TSR(常驻程序)搬到 UMB(Upper Memory Block)来释放“常规内存”(conventional memory)的做法。有人具体报告在 386 DX‑33(8MB RAM、SoundBlaster)上把 MSCDEX、鼠标驱动、甚至 COMMAND.COM 都迁到高内存后得到 637KB 可用常规内存,其他人常见的结果是 620–63X KB。虽然 later DOS 有 MEMMAKER 自动化工具,但很多人觉得它过于侵入性,偏好手动编辑 CONFIG.SYS/AUTOEXEC.BAT 做精细调整。硬件兼容性问题(例如某些 Media Vision/Audio Spectrum 16 卡与 SoundBlaster 兼容层需要驻留低内存)经常打破这些优化,需要在功能与可用内存之间做权衡。
[来源1] [来源2] [来源3] [来源4] [来源5] [来源6] [来源7] [来源8]
评论指出常规内存限制直接影响 DOS 游戏与应用的功能与表现。举例来说,作者提到他们的游戏 PaybackTime 2 只能使用常规内存,因此缺乏复杂人物动画。玩家与开发者为此制作精简启动盘、移除鼠标驱动或用特殊配置尽量腾出几十 KB,仍常遇到装不下的问题。另有实例显示使用 Dr‑DOS(一个 MS‑DOS 兼容操作系统)在某些机器上能获得更多可用常规内存,从而运行原本受限的软件。
讨论转向 EXE 文件头的 'MZ' 魔数及其来源,多条评论断定 'MZ' 是 Mark Zbikowski 的姓名首字母而非 'Memory+Last' 的缩写,且该魔数存在于 DOS 可执行(以及保留 DOS stub 的 Windows EXE)头部。评论还提到 ARR 可能指 Aaron R. Reynolds,并把 AARD code(用于探测非 MS‑DOS 环境的检测代码)与早期 DOS/Windows 开发历史联系起来,相关人物和文献(例如 Raymond Chen 的文章与视频访谈)被引用来佐证。有人区分了 EXE 头部的 MZ 与在 DOS 内存管理代码中用作标记的 MZ,指出后者虽可能也是同一作者的签名,但未必有直接文献确认。
有评论指出,手工优化 DOS 内存曾是专业技能而非纯娱乐,有人靠能在便携机上同时运行 ACT! for DOS 与 Novell Netware 客户端拿到工作。Windows for Workgroups 3.11(WfWg 3.11)携带的 VFAT 和早期 32‑bit 驱动子系统被视为通向 Windows 95 的关键演进,随后 Windows 95/NT 系列普及后,底层的 DOS 内存微调逐渐失去实际意义。因此对 CONFIG.SYS/AUTOEXEC.BAT 的细致调整从职业必备变成了怀旧爱好或历史谈资。
UMB(Upper Memory Block): DOS 下位于 640KB 到 1MB 之间的高内存片段,用来把可移动驱动或 TSR 加载到高地址,从而释放常规内存。
常规内存(conventional memory): MS‑DOS 时代程序可用的前 640KB 内存上限,许多旧软件只能在此范围内运行,成为大量优化工作的目标。
TSR(Terminate-and-Stay-Resident): 常驻内存程序或驱动,程序退出后仍留在内存中提供持续功能(例如鼠标驱动或声卡兼容层),会占用宝贵的常规内存。
MEMMAKER: MS‑DOS 附带的自动内存优化工具,尝试把可移动驱动和 TSR 安置到 UMB,但会自动修改 CONFIG.SYS/AUTOEXEC.BAT,部分用户认为其过于侵入。
MZ(DOS EXE magic bytes): DOS 可执行文件(EXE)头部的魔数字节 'MZ',据称来自 Mark Zbikowski 的姓名首字母,用以标识 DOS 可执行格式,Windows EXE 中也保留该 DOS stub。
AARD code: 历史上用于检测是否运行在 MS‑DOS 的探测代码段,通常与 Aaron R. Reynolds 相关,曾在早期 Windows/DOS 兼容性讨论中引发争议。