Donkey.bas 已经 45 岁了 – 131 行的辉煌
一个基于浏览器的 DONKEY.BAS 移植版——这是一款仅 131 行的 BASIC 游戏,曾与早期 IBM PC 捆绑并由比尔·盖茨共同编写——引发了人们对 1980 年代家用计算机那种简单而易上手体验的怀旧。评论者回忆起通过编辑捆绑游戏如 DONKEY.BAS、GORILLA.BAS 和 NIBBLES.BAS 来学习编程,抄录杂志上的代码列表,以及探索早期音频和图形硬件。讨论还强调了将 QBasic 和 GW-BASIC 逼真地模拟到浏览器中的现代努力,并将这些“开箱即用”的环境与当今更复杂、依赖繁重的工具链形成对比。
浏览器移植与游戏反馈
- 将 DONKEY.BAS 移植到浏览器,因能用约 131 行原始 BASIC 复现整款游戏而备受赞赏。
- 一些用户报告了渲染 bug(在特定 Firefox/macOS 窗口尺寸下会严重闪烁);链接的一个 pull request 声称已修复该问题。
- 原始碰撞检测被描述为天生有 bug:即使视觉上已经越过驴,变道时仍可能触发撞击,这与经典代码中的行为一致(第 1750 行)。
- 现代移植版增加了额外内容:作弊模式、可扮演驴、以及基于图片的彩蛋(例如大失败时出现驴的照片、多次获胜时出现比尔·盖茨的照片)。
BASIC、QBasic 与模拟项目
- 一个很长的分支讨论了一个高保真的浏览器内 QBasic/QuickBasic 4.5 项目:
- 实现了虚拟 CPU 和硬件抽象层。
- 模拟了 VGA、多种屏幕模式、VRAM 访问、隐藏页、vsync 等待、BIOS 调用、中断(包括通过 int 33h 的鼠标)、PEEK/POKE,甚至还有虚拟调制解调器和打印机。
- 设计为一个符合时代特征、可自包含的环境,并与 DOSBox 形成对比;后者被认为设备完整性较差,也不太适合普通用户使用。
- 人们还提到相关 BASIC 实现的兴趣:GW-BASIC 分支、pcBasic(Python 中的 GW-BASIC 模拟器),以及作为 Visual Basic 精神继承者的 GAMBAS。
老硬件、声音与存储
- 讨论了早期 IBM PC 扬声器与移植版中更丰富音效的对比。原始机器只有简单的动态扬声器,但演示程序把它们用到了令人惊讶的程度(PC speaker MOD 播放器、游戏开场、“Realsound”等)。
- 还提到其他扬声器技术(静电、电陶瓷、平面磁性)。
- 关于从 5.25" 软盘中恢复旧 QBASIC 程序:据说 5.25" 介质老化相对较慢;推荐使用 Greaseweazle 做原始磁读取。
怀旧与学习编程
- DONKEY.BAS、GORILLA.BAS 和 NIBBLES.BAS 被反复提及为最早接触编程的入口:
- 孩子们通过按某个键发现源代码,然后修改爆炸、重力、碰撞检测或生命数来“作弊”。
- 杂志上的 BASIC 列表和简单的恶搞程序促成了实验精神。
- GORILLA.BAS 和 NIBBLES.BAS 被记作在 DOS 5+ 机器上捆绑附带的“入门毒品”,而在那个商业游戏昂贵或稀缺的年代,这一点因地区而异。
简单性、工具链与“我们失去了什么”
- 一些评论赞扬早期 BASIC 环境小巧、开箱即用、易于上手,相比之下,现代技术栈有大量依赖。
- 也有人指出,尽管 BASIC 在技术上算不上优秀语言,但 DOS 时代的系统(CONFIG.SYS/AUTOEXEC.BAT、独立目录)让理解和修复自己的机器变得很容易。
- 与 SDL、raylib、Godot、Unreal、Python 和 VB/GAMBAS 的比较突出了现代生态系统更强大,但不如以前那样透明和有趣。