卡带字体
C64 “Dead Test”诊断卡带 Rev. 718220(Commodore 部件编号 314139 - 03)以特殊字体闻名。该字体嵌入卡带 ROM 中,不使用 C64 内置字符 ROM,也无需任何内置 ROM 正常工作,因为它是独立程序包。其显示字体独特,其他地方未使用过,见过的人一眼就能认出。
“Dead Test”卡带仅实现了 58 个字符(屏幕代码 $00 - $39),且无反显字符。它只实现了大写字母、数字、一些标点符号和数学运算符。部分字符取自正常字符集,正常字符集中 $00 位置的“@”字符被额外空格取代,$22 - $27 范围内实现了边框字符,$21 位置有神秘 C 形字符。
从视觉上看,这是另一种计算机字体,由矩形块状字符形状构成,类似字体还有 Commodore PET 的“901447m”字符 ROM。这些字体都受 MICR(磁性墨水字符识别)字符集 E - 13B 启发,“Dead Test”字体中的数字与 MICR 集非常相似,字母字符也符合这种风格。
意外的彩蛋
与 MICR E - 18B 字体的紧密联系,让我们更接近神秘字符 #0x21 的真实本质。这个字符从未被显示过,因为它在卡带代码中未被引用。它是 MICR 集中的“transit”符号,用于银行路由代码的分隔,这是对 MICR 集的明确致敬,也是隐藏在字体中的真正彩蛋。
实现方式
C64 既有 Commodore 64 架构,又有 Commodore Max 的功能。Commodore Max 在不同地区有不同名称,是 1982 年推出的低成本家用电脑,但同年就停产了。它配备了 SID、VIC II、MOS 6510 和一个 CIA,内存仅有 4K,没有用户端口,使用薄膜键盘,且没有内置任何 ROM,完全依赖卡带 ROM。
C64 在处理卡带方面有巧妙机制,卡带/扩展端口上有两个引脚/信号 `_GAME` 和 `_XROM`,用于根据连接的卡带类型配置机器。如果 `_GAME` 为低电平,`_XROM` 为高电平,C64 会进入 _Ultimax_ 模式,以使用 Commodore Max(Ultimax)卡带。
Ultimax 模式会将 C64 配置为特定的内存映射,C64 的内置 ROM,包括字符 ROM,都被切换出去了。许多早期的 C64 游戏卡带,如 _Omega Race_,实际上都是 Ultimax 卡带,由于这种兼容模式,它们在 C64 上也能正常运行。
“Dead Test”卡带采用了相同机制来绕过 C64 的内置 ROM,它是一个 8K 的 Ultimax 卡带,ROM 代码位于 $E000 - $FFFF,起始地址(复位向量)为 $E000。
字体(即字符矩阵)从 $EAD8 开始实现,卡带的剩余空间填充为 $AA。
点击此处下载“Dead Test”卡带代码的完整反汇编:["dead - test - disass.txt"](/nowgobang/misc/dead - test - disass.txt)。