作者在 Leaded Solder 上撰文,解释了该项目的动机:寻找一个不依赖外部计算机进行开发的、适用于其 Sega SG-1000 克隆机的自托管编程环境。在发现 Sega 内置的 BASIC 功能有限后,他们选择了 Forth,因为其极简主义、适用于嵌入式系统,以及能够包含集成汇编器,从而在硬件上直接进行原生代码开发。 移植工作从 CamelForth-80 开始,这是一个最初面向 CP/M-80 系统的 GPL 许可的 Forth 实现。根据项目的移植指南,作者需要通过处理硬件初始化、栈设置以及替换三个依赖 CP/M 的单词(KEY、KEY?、EMIT)来将代码适配到裸机 SG-1000 运行。 在汇编过程中,由于原始 Z80MR 汇编器与作者首选的 Zasm 工具之间的差异,出现了重大挑战。Zasm 的更严格的单通道求值要求导致 CamelForth 的头部宏在宏展开时出现问题,尤其是在条件汇编方面。作者通过为 docode 和非-docode 情况创建独立的宏变体来解决此问题。额外的复杂性在于 Zasm 难以解析 Forth 中包含特殊字符(如引号和逗号)的非常规单词名称,这需要修改宏调用以使用正确的字符串引用。通过使用 Zasm 的 --casefold 选项来模拟传统 CP/M 汇编器,解决了大小写敏感的标签处理问题。 就硬件交互而言,作者通过在 TMS9918 视频显示处理器的 Graphics 1 模式(32x24 瓦片显示)下实现 EMIT 函数来输出字符,承认了诸如缺乏硬件滚动等限制,但指出其适合电视显示。 该项目作为 RetroChallenge 2026/10 的一部分进行,这是一个每月一次的非正式怀旧计算竞赛,有助于集中开发精力。 作者强调自己对 Forth 的专业知识有限,并将项目定位为展示 Forth 移植有多么容易,而不是声称自己掌握了该语言。 当前工作重点在于让解释器在 Soggy-1000 硬件上运行,基础组件如 EXIT 单词已经成功汇编。