我正在Commodore PET(为了好玩)的双盒式磁带录像机上实现虚拟内存,我正在写作.如果您有兴趣,我到目前为止在http://github.com/chitselb/pettil.
我打算使用PET的原生192字节盒式数据文件格式.哦,是的,一切只有32K的RAM .我已经在语言中嵌入了Woz优秀且非常节省内存的Sweet-16解释器.
Forth块(通常)为1024字节.为块ID添加两个字节会使可用的虚拟地址空间达到64 meg,这比磁带上的容量更大.将存在"播放"牌组(设备1)和"记录"牌组(设备2),并且FLUSH将涉及将整个虚拟存储器从一个驱动器复制到另一个驱动器.为什么要在风车上倾斜?因为当天早些时候,盒式磁带是大多数PET用户所拥有的,包括在内.
大多数数据将是Forth代码的屏幕,在此实现中将是1000字节的文本和24字节的换行表,因为我也在利用PET ROM屏幕编辑器.我正在寻找的是任何可能(可能)为此目的击败简单的运行长度编码的建议,但没有像Lempel-Ziv这样复杂的东西的CPU和内存开销.除了"忘记它"之外的所有建议都表示赞赏.
当返回堆栈发挥作用时,堆栈注释应该是什么样的?
: FOO ( d2 d1 tos -- sum flag )
... ;
Run Code Online (Sandbox Code Playgroud)
这个词需要5个单元格并返回2个单元格,但是当使用返回堆栈时,括号之间会是什么?例如,堆栈注释如何查找:
: BAZ ( d2 d1 tos -- d )
BASE @ >R >R ( d2 d1 )
2SWAP D- ( d )
R> DUP
R@ BAR
R> BONK ;
Run Code Online (Sandbox Code Playgroud)