我正在为我正在编写的 Forth 在 Commodore PET(为了好玩)上的双盒式磁带机上实现虚拟内存。如果你有兴趣的话,我到目前为止在http://github.com/chitselb/pettil 。
我打算使用 PET 的原生 192 字节磁带数据文件格式。哦,是的,所有东西都只有 32K 的 RAM 。我在语言中嵌入了 Woz 出色且非常节省内存的 Sweet-16 解释器。
Forth 块(通常)是 1024 字节。为块 ID 添加两个字节将可用虚拟地址空间限制为 64 兆,远远超过磁带上的容量。将有一个“播放”卡座(设备 1)和一个“记录”卡座(设备 2),并且 FLUSH 将涉及将整个虚拟内存从一个驱动器复制到另一个驱动器。为什么要向风车倾斜?因为在过去,盒式磁带是大多数 PET 所有者拥有的,包括在内。
大多数数据将是 Forth 代码的屏幕,在这个实现中它将是 1000 字节的文本和一个 24 字节的换行表,因为我也使用了 PET ROM 屏幕编辑器。我正在寻找的任何东西(可能)会为此目的击败简单的运行长度编码,但没有像 Lempel-Ziv 这样复杂的东西的 CPU 和内存开销。除了“忘记它”之外的所有建议都值得赞赏。