修改者为任天堂NES制作了一款类Unix操作系统

摘要:

任天堂将 Famicom 定位为比其西方同类产品 NES 更像一台电脑,因此将其命名为"家庭电脑"(Family Computer)。磁盘系统(Disk System)附加组件带来的额外存储空间和内存进一步推动了它的发展潜力,一位修改者通过将类似 Unix 的操作系统移植到控制台上证明了这一点。

修改者"decrazyo"最近上传了一段视频,记录了他如何将一个类似 Linux 的操作系统转换为在未修改的 NES 上运行。源代码可在GitHub上获取,有兴趣的人可以尝试或改进:

https://github.com/decrazyo/lng-fds

该系统符合 PC 操作系统的基本要求,理论上可以运行各种应用程序,并完全在任天堂于 20 世纪 80 年代发布的硬件上运行。虽然当时定义游戏机市场的 NES 不具备这个项目所需的规格,但它在日本的增强版同类产品--Famicom Disk System(FDS)--拥有足够的额外内存和存储空间,经过一些重大调整后就能完成任务。游戏机的官方键盘也有助于输入。

2024-02-13-image-23-j_1100.webp

decrazyo 并没有尝试移植 Linux,而是创建了一个符合 Unix 标准的操作系统,如用户与硬件之间的内核分离、分层文件系统、抢占式多任务处理和类似 Unix 的外壳。选择的基础是 Little Unix (LUnix),这是一个为 Commodore 64 设计的系统与 FDS 的硬件规格非常相似。

转换过程包括定义内存映射、编写新的系统初始化代码、重新组织 LUnix 处理内存的方式以匹配 Famicom 的 RAM,以及为键盘和图片处理单元编写新的驱动程序。新的驱动程序之所以能够完成,要归功于几十年来其他修改者和开发者提供的详尽文档。

2024-02-13-image-2-p.webp

编写新的磁盘驱动器是最具挑战性的部分,因为与大多数磁盘驱动器不同,FDS 是按顺序而不是任意读取扇区的。尽管如此,decrazyo 还是设法编写了一个将磁盘视为只读的驱动程序,最终让他可以启动 shell。

虽然成品存在一些严重缺陷,如视觉故障和磁盘驱动器导致的性能缓慢,但它证明了 NES 可以运行 Unix 风格的操作系统。它是在一个 NES 模拟器上以 1000% 的速度运行测试的,以补偿性能,但 decrazyo 展示了它通过 Everdrive ROM 卡带在美国版 NES 上运行的情况。

使用增强型卡带将代码转移到游戏机的芯片可能仍然属于实验规则的范围,因为大量的官方 NES 卡带都使用了额外的硬件来扩展游戏机的功能。不过,看到有人在真正的 FDS 上尝试操作系统还是很有趣的。

2022 年,另一位修改者在 NES 上制作了一个纯图形操作系统。虽然没有键盘导致输入困难,但它支持大量应用程序。

查看评论
created by ceallan