想象一下,您的硬盘上有几百个 DOS 游戏、软件、工具,运行时,必须一一进入目录,运行命令,太麻烦,也根本记不住!
这是我在 1996 年开发的软件,花了大概 5 天时间,用 Turbo C 2.0 开发。当时用它参加学校的研究生软件开发竞赛,获得一等奖。这个软件后来在学校和校外(主要是游戏吧)广泛使用。
软件小巧,不用安装,直接拷贝到硬盘上即可使用,其中的 README.EXE 是详细的说明文件。软件支持鼠标、键盘操作,自带汉字字库,不用安装中文汉字系统就可以使用。
转眼间,快 30 年过去了,当初的帅毛头小伙变成了如今的帅老登。每每回想起上个世纪 90 年代,和一帮兄弟们泡在机房熬夜,疯狂玩游戏的时光,总是不胜感怀、热泪盈眶,那是人生中最美好的青葱岁月!
大家如果对软件有什么疑问,可以发邮件联系:hwei1001@vip.sina.com。
希望大家喜欢我这个老登的小工具!也借此怀念一下我们曾经火热的青春!!!
青春虽已不再,出走半生,归来依然少年!~~~
下载:https://upload.cn-dos.net/img/2493.zip
界面:https://upload.cn-dos.net/img/2494.png
说明:https://upload.cn-dos.net/img/2495.png
文件:https://upload.cn-dos.net/img/2496.png
Gemini 解答
技术实现背景与核心机制补充
1996年DOS环境下实现“无需汉字系统的图形化菜单”,其核心技术选择与当时的环境强相关:
- 直接写寄存器的汉字显示:指绕过DOS的
INT 10h字符输出中断,直接操作VGA显卡的段寄存器0xA000(图形模式显存段)与CRTC(阴极射线管控制器)寄存器。通过读取自嵌的点阵字库(如16×16或24×24汉字库),将点阵数据逐位写入显存,实现汉字的直接渲染——这确实是当时的“黑科技”,因为主流中文系统(如UCDOS、CCDOS)依赖中断钩子或内存驻留程序来扩展DOS的字符输出,而直接写显存的方式既避免了与汉字系统的冲突,也因减少了中断调用的开销而提升了速度。- 图形界面绘制:DOS下的图形模式(如VGA 320×200×256色)需要手动计算像素坐标与颜色值。按钮、边框等元素本质是通过循环向显存写入连续像素块实现的,颜色规划依赖VGA的调色板寄存器(需通过
OUT指令设置0x3C8/0x3C9端口来定义256色中的具体颜色)。- 鼠标支持:DOS下需通过
INT 33h中断调用实现鼠标操作,该中断由鼠标驱动程序(如MOUSE.COM)提供,属于当时的常规外设支持。- 双向链表的数据结构:用于存储菜单条目(如游戏路径、命令参数),便于动态增删或调整菜单顺序,在Turbo C 2.0的内存模型下(小内存模型默认
64KB数据段),链表是管理可变数量条目的高效选择。历史意义与技术局限性
- 获奖原因:1996年DOS软件多为字符界面(依赖
INT 21h或INT 10h的文本模式),图形化界面+鼠标支持+独立汉字显示的组合在学生作品中属于“体验革新”,契合了当时用户对DOS操作“可视化”的需求(尤其是游戏吧场景下,非专业用户更依赖图形界面)。- 局限性:
- 自嵌字库导致软件体积无法做到极致小巧(16×16汉字库约占256KB);
- 直接写VGA寄存器的方式依赖硬件兼容性,在非标准VGA显卡(如某些兼容机的CGA/EGA克隆卡)上可能出现显示错位;
- 菜单数据的存储大概率依赖文本配置文件(未提及数据库),条目过多时加载速度会下降。
当年的技术语境
1996年Turbo C 2.0是DOS下最流行的C语言开发工具,其对直接硬件操作的支持(如
inportb()/outportb()函数)为这类“底层操作”提供了便利。而“无需汉字系统”的设计精准解决了当时的痛点——UCDOS等汉字系统需驻留内存(占用64KB以上常规内存),且与部分游戏的内存占用存在冲突,独立字库+直接渲染的方案在游戏场景下更具实用性。该工具的广泛传播(学校、游戏吧)也反映了当时DOS用户对“批量启动工具”的刚需——硬盘容量从几百MB向GB过渡,软件/游戏数量激增,而DOS本身缺乏图形化文件管理器(Windows 95虽已发布,但游戏吧仍以纯DOS环境为主)。
| 评分人 | 分数 | 时间 |
|---|---|---|
| AlexZhang | +24 | 2025-06-30 16:30 |
