中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS汉化世界 & 中文系统 (中文化室) » “灵活运用”ucdos汉字系统[转帖]
English/Chinese Fix Translation
作者:
标题: “灵活运用”ucdos汉字系统[转帖] 上一主题 | 下一主题
ko20010214
版主




积分 7296
发帖 1628
注册 2002-10-16
状态 离线
『楼 主』:  “灵活运用”ucdos汉字系统[转帖] [已使用 LLM 解释]

“灵活运用”ucdos汉字系统

/

--------------------------------------------------------------------------------
   UCDOS汉字系统中的显示子库和显示支持部分是不可裁减的。可以裁减的部分是键盘支持部分,联想部分和打印支持部分。可裁减的部分各自是独立的,各种裁减的组合都不会引起系统问题。UCDOS汉字系统的最小配置约占用10k左右主存空间。
   当打印报表栏标题,把汉字放大时,常发现UCDOS汉字系统下,从配有硬字库的打印机手册找到的ESC功能码,直接用来控制打印机并不能如愿以偿,原因何在?
   原来,UCDOS与其它汉字系统一样,更换了原计算机打印,显示等模块的中断向量,与原计算机西文状态下相应模块的处理有差异。这种情形下,ESC功能码并不能有效地控制打印机。要解决这一问题,很简单,照前述UCDOS系统可裁减的性质,去掉UCDOS打印驱动程序,保留其余模块就可以了,这时用ESC功能码就能有效地控制打印机了。
   具体做法如下:
   运行ucdos.bat
   echo off
   cd\ucdos
   cclext16
   e350
   lx→(联想部分)
   kb→(键盘部分)
   (pp1→若有pp1,要在ucdos.bat中去掉)
   initl
   运行Setupa,裁减打印驱动程序。
   保留这次选择,热启动。
  
LLM 解释

技术背景与原理分析

该帖讨论的是 20 世纪 90 年代中国最流行的 DOS 中文平台之一——UCDOS 的优化与定制。在当时的硬件环境下,640KB 的基本内存(Base Memory)极其宝贵,且不同应用软件对打印控制字符的处理各异,因此“裁减”与“手动配置”是当时技术人员的必备技能。

1. UCDOS 的模块化架构与内存占用

UCDOS 并非单一程序,而是由多个独立的 TSR(Terminate and Stay Resident,内存驻留)程序组成的。

  • 核心模块:包括显示驱动(如 E350.COMVGA14.COM 等,取决于显卡类型)和汉字字库管理。这些是系统运行的基础,不可省略。
  • 可裁减模块
    • LX.EXE(联想输入):提供联想词库功能。
    • PY.EXEWB.EXE 等:提供具体的输入法。
    • PRNT.COM / PP*.COM:打印驱动程序,这是帖中讨论的重点。

2. 关于打印驱动与 ESC 指令冲突的解释

原文提到的“ESC 功能码失效”问题,源于 UCDOS 劫持了 BIOS 的 INT 17H(打印机服务中断)。

  • 冲突机制:在西文模式下,应用程序发送的 ESC 指令(如 ESC W 1 开启倍宽打印)直接传递给打印机固件。但在加载了 UCDOS 打印驱动后,INT 17H 被重定向,驱动程序会尝试接管这些控制码,以实现软件层面的汉字缩放、旋转或模拟打印。如果应用程序使用的是针对硬件硬字库的特定指令,而 UCDOS 驱动未能正确识别或拦截了这些指令,就会导致打印效果不符合预期。
  • 解决方案的局限性:帖中建议通过去掉打印驱动(如 PP1)来恢复硬件控制。这在处理带有硬字库的打印机(如当时的 EPSON LQ 系列)时非常有效,但也意味着失去了 UCDOS 的软件平滑缩放打印功能。

3. 针对后续回帖中“路径硬编码”与“袖珍版”问题的纠正

关于路径修改(Post #2 & #5): 用户 hanxin83 试图通过十六进制编辑 KNL.COM 来修改路径。实际上,UCDOS 内部对路径的处理并不统一。

  • 环境依赖:UCDOS 的许多模块依赖于环境变量 PATH 或启动时加载的 SET UCDOS=... 设置。
  • 硬编码问题:早期版本确实存在部分模块硬编码(Hard-coded)了 C:\UCDOS 路径的情况。但简单的字符串替换(将 C: 改为 A:)往往不奏效,因为二进制文件内部可能存在校验和(Checksum)检查,或者路径长度被固定。
  • Wengier 的补充:Post #5 指出 UCDOS 在某些逻辑中只识别文件夹名而忽略盘符,这取决于具体模块加载字库(如 HZK16)时使用的文件查找算法。在 DOS 环境下,正确的方法通常是使用 SUBST 命令将目标路径映射为虚拟盘符,或通过官方配置工具重新生成系统文件。

关于“袖珍版”与非法规避(Post #3 & #4):

  • 技术实现:所谓的“袖珍版”通常是第三方对 UCDOS 原始文件的精简封装。
  • RD16.COM 的角色RD16.COM 是 UCDOS 的字库读取管理程序(Read Dot matrix)。在正式版本中,该模块包含对硬件狗或特定授权文件的校验逻辑。
  • 合法性提示:Post #4 提到的“破解过的 RD16.com”涉及规避软件授权限制。从技术角度看,这是通过对二进制代码进行补丁(Patch),跳过了关键的跳转指令(如将 JZ 改为 JMPNOP),从而绕过路径检查或授权验证。根据法律与合规要求,不建议寻找或使用此类非授权修改的组件,建议通过合法的配置方式(如安装程序提供的路径设置)来解决部署问题。

4. 最小化配置的工程限制

UCDOS 在实现“10k 左右最小配置”时,实质上只加载了最基本的显示挂接,此时用户只能看到中文显示,无法进行中文输入和高级打印管理。这种配置在嵌入式 DOS 设备或自动化控制终端中较为常见,但并不适合办公使用。





ko20010214
=================================
大功告成,打个Kiss!
ko20010214@MSN.com
神州优雅Q300C
Intel CeleronM 370处理器 | 256MbDDR内存
40G硬盘 | USB2.0 | IEEE 1394
13.3 ' WXGA 宽屏(16:10) | COMBO光驱
10/100M网卡 | 四合一读卡器
2003-1-4 00:00
查看资料  发送邮件  发短消息  网志  OICQ (16959102)  编辑帖子  回复  引用回复
hanxin83
初级用户




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

发表一个新问题:我设法裁减UCDOS7.0,将其移到A:\UCDOS下... ...
将KNL.COM,HZK16,RD16.COM,ASC16都移了过来,并用十六进制编辑器将前两者中包含的
C:\UCDOS都改成了A:\UCDOS,但还不能用... ...


2003-1-5 00:00
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
ko20010214
版主




积分 7296
发帖 1628
注册 2002-10-16
状态 离线
『第 3 楼』:   使用 LLM 解释/回答一下

ucdos袖珍版好像只有一个限制,就是要在硬盘的根目录下的ucdos目录下才能运行。




ko20010214
=================================
大功告成,打个Kiss!
ko20010214@MSN.com
神州优雅Q300C
Intel CeleronM 370处理器 | 256MbDDR内存
40G硬盘 | USB2.0 | IEEE 1394
13.3 ' WXGA 宽屏(16:10) | COMBO光驱
10/100M网卡 | 四合一读卡器
2003-3-13 00:00
查看资料  发送邮件  发短消息  网志  OICQ (16959102)  编辑帖子  回复  引用回复
pfox
银牌会员




积分 1451
发帖 446
注册 2002-10-20
状态 离线
『第 4 楼』:   使用 LLM 解释/回答一下

以下是引用ko20010214在2003-3-13 23:05:23的发言:
ucdos袖珍版好像只有一个限制,就是要在硬盘的根目录下的ucdos目录下才能运行。


真正的袖珍版没有该问题,有该问题的袖珍版是没有破解的,你找一个破解过的RD16.com加入,执行就没有问题了。

付rd16.com。打开附件 链接已失效(管理员注)





我的下载空间
2003-3-14 00:00
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
Wengier
系统支持

“新DOS时代”站长


积分 27736
发帖 10521
注册 2002-10-9
状态 离线
『第 5 楼』:   使用 LLM 解释/回答一下

光将C:\UCDOS改成A:\UCDOS是没用的,因为两者其实是一回事,都是UCDOS文件夹下,而UCDOS只认后面的文件夹,盘符则是UCDOS启动盘符.




Wengier - 新DOS时代

欢迎大家来到我的“新DOS时代”网站,里面有各类DOS软件和资料,地址:
http://wendos.mycool.net/

E-Mail & MSN: wengierwu AT hotmail.com (最近比较忙,有事请联系DOSroot和雨露,谢谢!)

2003-3-15 00:00
查看资料  发送邮件  访问主页  发短消息  网志  OICQ (29206679)  编辑帖子  回复  引用回复

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


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



论坛跳转: