MoofTCP 1.0:为 68k Mac 提供轻量 MacTCP 替代品
MoofTCP 1.0 以 MIT 协议发布,针对 68k Mac 和 System 6 提供 MacTCP 的替代实现,包含 DHCP 客户端、控制面板和卸载工具,已在 Mac Classic 与 Snow 模拟器上测试。
为何重写 MacTCP
MoofTCP 1.0 定位为 Apple MacTCP 的替代品。开发者指出,在 4 MB 内存的 Mac Classic 上,配合 BlueSCSI 等 SCSI Wi-Fi/Ethernet 适配器使用 MacTCP 时,响应可能偏慢、内存占用偏高,设置也较繁琐。MoofTCP 的设计目标按优先级排列为:可靠性、交互场景的低延迟、吞吐量,同时驻留内存不超过 MacTCP。实现采用可移植 C 从头编写 TCP/IP 栈,并为 System 6 提供控制面板、安装器和 DHCP 客户端。
该项目的发布文件包含 .dsk、.hqx 和 .sit 三种格式。安装程序会把 MacTCP 相关文件移到一旁,再装入 MoofTCP;移除按钮可以恢复原状,安装中断后可自行修复。安装后重启 Mac,在控制面板中填写 IP 地址、掩码、路由和 DNS,或勾选 DHCP 获取地址,再重启即可联网。
兼容与资源占用
MoofTCP 实现 MacTCP 的 .IPP 驱动接口(TCP、UDP、ICMP echo)和 dnrp 名称解析器,为 MacTCP 编写的程序无需修改即可运行。除完整版外,还提供 MoofTCP Lite,去掉 DHCP 客户端,可节省约 5 KB 系统内存。一个安装器同时包含两个版本,通过复选框选择。控制面板、安装器、诊断工具均随项目提供。
在真实 Mac Classic(System 6.0.8,4 MB,BlueSCSI v2 WiFi with DaynaPORT)和 Snow 模拟器上的测试显示:Flynn 和 Wikipedia Reader 在真实机与模拟器上均可用;MacTCP Watcher、NCSA Telnet、Fetch(FTP)、TurboGopher 在模拟器中可用;Eudora 能启动,但未测试邮件功能。
内存方面,完整版驱动代码为 95,623 字节,Lite 版为 90,722 字节。在真实 Mac Classic 单 Finder 环境下,完整版首次打开后系统堆空闲约 30.7 KB;MultiFinder 会按需扩展系统堆,空闲值波动更大。
已知限制与构建
MoofTCP 的兼容范围较窄:仅测试了 System 6.0.8 和 DaynaPORT 以太网驱动,不包含 IPv6。DHCP 实现较基础,没有租约 RELEASE、INIT-REBOOT 和地址冲突探测;程序运行时无法使用 UDP 端口 68;无 DHCP 服务器时,第一次打开会等待约 10 秒后失败。
源码构建依赖 Docker 和固定的 Retro68 交叉编译器镜像。核心栈位于 core/,不使用 malloc、不保留全局状态,并在桌面端启用了 AddressSanitizer 和 UBSan 的测试。模拟器测试需要用户自行提供 Apple 系统软件和 BlueSCSI DaynaPORT 镜像。项目方欢迎兼容性报告和代码贡献,并计划继续在真实硬件上做更长时间的测试,以及推进 DaynaPORT 的类似重写(MoofPort)。