中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 搜索 | 上传 | 帮助 »
English/Chinese Fix Translation
作者:
标题: 分享昔日经典——SPDOS5.0+WPS2.0 上一主题 | 下一主题
steper
初级用户





积分 40
发帖 13
注册 2006-4-20
状态 离线
『楼 主』:  分享昔日经典——SPDOS5.0+WPS2.0 [已使用 LLM 解释]

上世纪90年代中文系统几为UCDOS和SPDOS瓜分,这两种主流中文平台为许多计算机书籍作为必讲内容介绍。那时中学计算机只学三样:DOS、WPS、FOXBASE。

几天前从本论坛下载了一个SPDOS的软盘镜像,是旧的IMG文件(WinImage不能解压)。后来借了软驱用HD-COPY解压。原文件是DOS3.3版(不支持大硬盘)。自己做了个
spdos.img(DOS7版)。在这个Windows一统天下的时代,相信很多人对过去DOS时代的经典软件尚怀有感情。这个SPDOS平台在今天也没什么实用价值,网上很难找到。只是为了满足一下收藏的愿望。

该IMG文件可用WinImage解开,文件夹中文件为SPDOS5.0版(内含WPS2.0)。可用Virtual PC试验(运行WPS时若无反应按上下箭头键试试)。以下为最近本人试用总结:

1、用gular引导spdos.img可以运行SPDOS,但运行其中的WPS即死机。不知是不是我这台Athlon机独有的现象。(因为现在很多朋友运行DOS都是用gular引导一个软盘镜像)。

2、用DOS7软盘启动盘和U盘启动盘都可以运行其中的WPS,最好不要加载内存管理软件(指HIMEM、EMM386),否则SPDOS会占用大量内存。而不加载SPDOS占用内存反而少(可用MEM查看)。SPDOS吃内存蛮厉害的,且硬件适应性不如UCDOS,所以为什么UCDOS后来居上不是没有道理的(当然UCDOS打败SPDOS还有其它原因)。

3、WS、WS20、WS25都是WORDSTAR(WORDSTAR是WPS出来之前常用的字处理软件,功能比较少)。

4、我对DOS下的字处理软件比较感兴趣,精干短小(只有几个文件,一目了然),DOS下比较好的字处理软件有WPS、CCED、ED(CCDOS97中带的一个软件,好像介绍的不多,只有一个文件)。字处理自动断行是很重要的功能,现在好像只有WPS自动断行,其它的要手动设置。不过在WPS中制表实在是一件痛苦的事。

5、总结:DOS下的字处理软件还是以UCDOS及其中的WPS为最佳(网上有程一的UCDOS精简版,可下载一试)。

附:下载文件在中国DOS联盟文件上传系统中。
http://upload.cn-dos.net/img/1636.rar


   此帖被 +6 点积分     点击查看详情   
评分人:【 DOSroot 分数: +6  时间:2009-9-3 18:50
LLM 解释

技术背景与核心概念解释

1. SPDOS 与 WPS 的技术地位

SPDOS(Super P-DOS,希望汉字系统)与 WPS(Word Processing System,金山文字处理系统)是 20 世纪 90 年代中国个人计算机环境的基石。SPDOS 5.0 发布于 1990 年代初,是当时最为普及的字处理平台。WPS 2.0 则是运行于其上的核心应用,其操作逻辑深度模仿了美国 MicroPro 公司的 WordStar。

2. 内存管理误区解释

帖中提到的“加载 HIMEM/EMM386 后 SPDOS 反而占用更多内存”的现象,涉及 DOS 时代特有的内存映射机制:

  • 常规内存占用:SPDOS 及其内置的字库(Font Buffer)通常以 TSR(驻留程序)形式存在。若不加载内存管理器,SPDOS 必须驻留在 640KB 常规内存中。
  • 内存管理器冲突:早期版本的 SPDOS 对 XMS(扩展内存)或 EMS(扩充内存)的支持并不完善。当加载 EMM386.EXE 后,它会占用部分 UMB(上位内存)空间并开启 V86 模式。如果 SPDOS 未能正确识别这些管理器,或者配置参数不当(如未指定 HIGH 加载),它仍会强制占用常规内存,而内存管理器自身也会占用常规内存(约几 KB 到十几 KB),导致 MEM 命令显示的可用空间减小。
  • 字库缓冲:SPDOS 5.0 默认将汉字字库加载至内存以提高显示速度。在没有高位内存支持的环境下,这种行为会剧烈消耗常规内存,导致大型程序(如 FoxBase)无法运行。后来的 UCDOS 胜出,很大程度上归功于其能更成熟地将字库调度至 EMS/XMS 内存中。

3. 硬件兼容性与“死机”原因

在 2009 年(原帖发布时间)使用 Athlon 处理器或虚拟机运行 SPDOS 5.0/WPS 2.0 出现死机,通常由以下技术限制导致:

  • I/O 端口冲突:SPDOS 为实现汉字平滑显示,常直接操作 VGA 显卡的寄存器(如切换显存页)。现代 CPU 的执行速度远超当年硬件,若程序中存在基于空循环的定时逻辑(类似 Pascal 的 Runtime Error 200 错误),会导致初始化失败或系统挂起。
  • 指令集与实模式限制:WPS 2.0 运行在 16 位实模式下。通过 GRUB4DOS(帖子提到的 gular 应为误称)引导镜像时,若未正确处理 A20 地址线切换或实模式环境初始化,可能导致 WPS 访问非法内存地址引发死机。
  • VGA 显示限制:yksoft1 在回复中提到的“VGA 版”问题,是指早期中文系统区分单色(Hercules)、CGA、EGA 和 VGA 驱动。若驱动版本与虚拟机的视频适配器模拟不匹配,会导致显示黑屏或字符乱码,表现为“无反应”。

4. WordStar (WS) 与 WPS 的继承关系

原帖中提到的 WS, WS20, WS25 实际上是 WordStar 的不同汉化/修改版本。

  • WPS 2.0 完整继承了 WordStar 的快捷键体系(如 Ctrl+K+D 保存退出,Ctrl+Q+F 查找)。
  • 在 SPDOS 环境中,这些 .EXE 文件通常是针对中文显示优化的微型编辑器。

5. 关于字处理软件的横向对比

原帖作者对“自动断行”和“制表功能”的观察,反映了当年 DOS 软件的功能分化:

  • WPS 2.0:定位为排版软件,支持模拟显示和多种打印机驱动,但在处理复杂表格时,需手动拼接制表符(Box-drawing characters),效率极低。
  • CCED:由朱崇君开发。其核心优势在于“中文字表处理”,它引入了类似电子表格的逻辑处理文本文档中的线条,解决了 WPS 早期版本在制表上的痛点。
  • ED/EDLIN:这些是行编辑器或简易文本编辑器,主要用于修改 AUTOEXEC.BAT 等配置文件,不具备排版功能。

6. 软盘镜像格式说明

原帖提到的“WinImage 不能解压”的旧 IMG 文件,通常是 HD-COPYTeleDisk 生成的专有格式。这些工具在 90 年代初常用于绕过某些软盘的物理坏道加密或处理非标准扇区(如 1.2MB 的 5.25 英寸盘或 1.44MB 格式下的特殊扇区布局)。这类镜像通常包含完整的引导扇区和物理磁道信息,普通的 FAT 文件提取工具无法直接识别其底层编码。



2009-8-4 10:48
查看资料  发短消息  网志   编辑帖子  回复  引用回复
wangfangjian
中级用户





积分 274
发帖 192
注册 2009-1-7
状态 离线
『第 2 楼』:   使用 LLM 解释/回答一下

谢谢分享
下来看看看


2009-8-6 07:11
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
sswv
初级用户





积分 81
发帖 35
注册 2008-10-26
状态 离线
『第 3 楼』:   使用 LLM 解释/回答一下

赞!实验可用。


2009-8-8 00:41
查看资料  发短消息  网志   编辑帖子  回复  引用回复
yksoft1
高级用户





积分 823
发帖 395
注册 2006-1-28
状态 离线
『第 4 楼』:   [已使用 LLM 解释]

SPDOSNT+WPSNT那个内存需求非常恐怖

17行那个问题是你没有搞到VGA版罢了

Last edited by yksoft1 on 2009-8-9 at 13:21 ]
LLM 解释

历史背景与技术原理解析

在 20 世纪 90 年代初的中国 DOS 环境中,SPDOS (Super P-DOS)WPS (Word Processing System) 是金山公司的核心产品。SPDOS 本质上是一个常驻内存的中文支撑环境(TSR),其主要任务是拦截 BIOS 或硬件中断,以实现汉字的图形化显示和输入法支持。

针对帖子中提到的技术现象,以下是基于当年软硬件环境的详细解释:

1. SPDOS 与内存管理的矛盾

楼主(steper)观察到“不加载 HIMEM/EMM386 时 SPDOS 占用内存反而少”,这与现代内存管理经验看似相悖,但在当时的工程实现上有其逻辑:

  • 常规内存竞争:SPDOS 5.0 及其后续版本(如 SPDOSNT)包含了庞大的汉字点阵字库和输入法库。如果系统没有加载 EMM386 提供 UMB(上位内存),SPDOS 通常会根据配置选择将字库缓存在常规内存、扩充内存(EMS)或通过磁盘交换。
  • EMS/XMS 依赖:当加载了内存管理软件后,SPDOS 会尝试利用高端内存区域。但由于早期版本的内存寻址算法(尤其是 SPDOSNT)并不完善,其管理开销、缓冲区分配以及对实模式地址空间的占用,有时会导致常规内存(640KB 限制)的“可用空闲块”显著减少。
  • SPDOSNT 的特殊性:yksoft1 提到的 SPDOSNT 是金山在 486 时代推出的 32 位增强版本,它利用了 DPMI(DOS 保护模式接口)技术。虽然能处理更复杂的字型渲染,但在 DOS 这种内存敏感的环境下,其常驻部分及其对扩展内存的锁定会导致严重的资源紧张。

2. “17 行”显示问题与 VGA 版本

yksoft1 指出的“17 行问题”触及了 DOS 时代中文系统最核心的兼容性障碍——显示适配器的分辨率差异。

  • EGA 与 VGA 的分辨率差异
    • EGA (Enhanced Graphics Adapter):标准图形分辨率为 640×350。使用 16 点阵字库时,垂直方向可显示 $350 / 16 \approx 21.8$ 行。除去状态栏,实际文本显示通常在 17 到 20 行之间。
    • VGA (Video Graphics Array):标准图形分辨率为 640×480。使用 16 点阵字库时,垂直方向可显示 $480 / 16 = 30$ 行。
  • 硬件写屏限制:早期的 SPDOS 针对特定的硬件接口进行优化。如果用户使用的是早期的、针对 EGA/MGA 优化的版本,即便在 VGA 显示器上运行,软件也只能调用 640×350 模式,导致屏幕下方出现大量黑边,或仅能显示 17 行文本。
  • VGA 版的意义:yksoft1 提到的“VGA 版”通过调用 VGA 的 12H 中断(640×480, 16色图形模式),能够利用完整的 480 像素高度,从而支持 25 行(标准的 DOS 行数)甚至 30 行中文显示。

3. 运行死机与硬件适应性

关于在 Athlon 等较新 CPU 环境下引导镜像死机的问题:

  • 时钟频率敏感 (Runtime Error 200):当时的许多软件使用 Borland Pascal 编写,其内置的 CRT 单元在高速 CPU 上运行时,会因初始化时的延迟计数溢出而导致崩溃。
  • 硬件模拟差异:SPDOS 的输入法和字体引擎往往直接操作显存地址(如 A000h 段)和键盘控制器端口。Virtual PC 等模拟器对这些底层 I/O 行为的响应若与物理硬件微有差异,极易触发死机。
  • UCDOS 的竞争优势:如楼主所述,UCDOS 之所以后来居上,是因为其采用了更为通用的 VESA 驱动标准和灵活的内存加载方案(如 RDHMA 命令将字库调入 HMA),且对各类克隆机主板的兼容性远强于深度绑定金山自家汉卡的 SPDOS 早期逻辑。

4. 技术术语澄清

  • WS, WS20, WS25:这些是 WordStar 的命令。WordStar 是 WPS 出现之前的行业标准,WPS 的操作指令(如 Ctrl+K+B 标记块)完全继承自 WordStar 的操作习惯,这也是为何金山保留这些兼容程序的原因。
  • IMG 镜像解压:早期使用 HD-COPY 制作的镜像(.IMG/.F35)可能包含特殊的非标准扇区分布(如 1.2MB 或加密格式),导致现代 WinImage 无法识别。这种情况下,使用 DOS 下的原版 HD-COPY 进行物理回写或利用虚拟软驱加载是标准处理方式。




YKSOFT Systems
2009-8-9 13:19
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
xa139
新手上路





积分 5
发帖 5
注册 2009-8-1
状态 离线
『第 5 楼』:   使用 LLM 解释/回答一下

谢谢steper分享


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





积分 6
发帖 3
注册 2023-11-8
状态 离线
『第 6 楼』:   [已使用 LLM 解释]

谢谢steper分享
LLM 解释

1. SPDOS 与 WPS 的历史背景

SPDOS(Super P-DOS,超想中文系统)是 20 世纪 90 年代初期由四通集团开发的中文环境,它是当时中国最流行的中文平台之一。WPS(Word Processing System)2.0 则是由求伯君在香港金山公司开发并挂接在 SPDOS 平台上的字处理软件。WPS 的操作逻辑大量参考了国际上早期的字处理标杆 WordStar(如 Ctrl+K 等组合键序列),这使得从 CP/M 或早期 DOS 时代转过来的用户能快速上手。

2. 内存管理机制与“内存占用多”的现象

在 DOS 环境下,SPDOS 的内存占用策略与后来的 UCDOS 有显著差异:

  • 常规内存(Conventional Memory)限制:SPDOS 5.0 及其核心组件主要加载在 640KB 的常规内存中。当用户未加载 HIMEM.SYSEMM386.EXE 时,系统无法利用高内存区(HMA)或上位内存(UMB),所有的驱动(如字库驱动、打印驱动)都会堆积在 640KB 空间内。
  • 内存“增加”的误解:用户提到加载内存管理软件后 SPDOS 占用更多内存,这通常是因为加载 HIMEM.SYS 等驱动本身会占用几十 KB 的常规内存(用于管理表和代码)。如果未通过 DEVICEHIGHLOADHIGH 将 SPDOS 的组件移入 UMB,常规内存的可用空间确实会进一步压缩。
  • 字库加载:SPDOS 默认通过磁盘缓冲或 EMS(扩展内存)加载字库。如果系统没有 EMS 内存,它可能会尝试在常规内存中保留更大的缓冲区以提高显示速度,从而导致可用常规内存锐减。

3. 硬件兼容性与现代 CPU 的“死机”问题

帖子中提到的在 Athlon 或现代硬件上运行 WPS 死机,通常由以下技术原因引起:

  • 时钟频率依赖(Timing Loops):早期 DOS 软件(尤其是使用 Borland Turbo Pascal 编写或包含特定汇编优化循环的软件)常使用简单的循环指令来计算时间。在主频极高的现代 CPU 上,这些循环会瞬间完成甚至导致溢出(如经典的“Runtime Error 200”),表现为程序启动即崩溃或挂起。
  • 直接硬件访问:SPDOS 为提高显示效率,往往绕过 BIOS 直接读写 VGA 控制器的寄存器。现代显卡或虚拟化环境(如 Grub 引导的镜像环境)对这些非标准寄存器操作的仿真不完全,容易导致显示异常或系统挂起。
  • 中断冲突:SPDOS 占用了特定的软中断(如 INT 10h 的钩子)来实现汉字显示。在通过 Grub 等多重启动工具加载镜像时,若内存中残留了未清理的实模式代码或 BIOS 状态不符合预期,极易发生冲突。

4. 磁盘镜像格式问题

用户提到的“旧 IMG 文件无法解压”,通常是因为 20 世纪 90 年代初流行的磁盘镜像工具(如 HD-COPY, TeleDisk, CopyWrite)采用的是专有的扇区布局或压缩算法。

  • HD-COPY:它是当年处理坏道或特殊格式软盘的事实标准,其生成的镜像可能包含非标准的扇区交错(Interleave)信息。
  • WinImage 兼容性:WinImage 主要支持标准的 IBM 格式镜像(如 1.44MB, 1.2MB, 720KB)。如果原始镜像带有文件头(如 .TD0 或特定厂商的 Header)或者是非标准扇区数,WinImage 将无法识别。

5. SPDOS 与 UCDOS 的技术竞争

UCDOS 后来居上的主要技术原因在于:

  1. 模块化设计:UCDOS 的内核、输入法、字库驱动是高度分离的,可以根据内存情况动态加载(如 RD16WB 等)。
  2. 优秀的内存利用:UCDOS 较早实现了将字库索引和部分内核移入 XMS/EMS,极大地释放了常规内存。
  3. 万能显卡驱动(VGA/VESA 支持):UCDOS 对不同厂商显卡的兼容性(通过 WPSVGA.DRV 等驱动)优于早期固定针对几种显卡开发的 SPDOS。

6. 技术实现补充

  • WS 家族:帖子提到的 WSWS20WS25 确实是 WordStar 的不同版本。WPS 正是通过完全兼容 WordStar 的排版指令和操作习惯,才在 20 世纪 90 年代初迅速替代了原有的西文编辑器。
  • 自动断行(Word Wrap):这是字处理软件(Word Processor)与文本编辑器(Text Editor,如 EDIT, CCED 的早期版本)的核心区别。WPS 内部通过计算字符宽度并在缓冲区中动态插入不可见的换行标记来实现这一功能,而当时的 CCED 更多是面向表格处理,其逻辑基于固定列宽。


2023-11-11 09:01
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
qfonline
初级用户




积分 151
发帖 17
注册 2003-6-6
状态 离线
『第 7 楼』:  谢谢分享 使用 LLM 解释/回答一下

谢谢分享···


2024-3-28 10:30
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
cdma20001
初级用户





积分 26
发帖 13
注册 2025-6-6
状态 离线
『第 8 楼』:   使用 LLM 解释/回答一下

感谢分享


2025-6-8 23:22
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复

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


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



论坛跳转: