我正在实现虚拟内存的双盒式磁带甲板上的商品PET (为乐趣)为第四我写。如果你感兴趣的话,到目前为止,我在http://github.com/chitselb/pettil的网站上。
我计划使用PET的本机192字节盒式数据文件格式。哦,是的,所有的内存都只有32K。我已经嵌入沃兹的优秀和非常记忆效率高的甜-16解释器内的语言。
第四个块(通常)是1024字节。为块ID添加两个字节将可用的虚拟地址空间限制在64 meg,这比磁带上的容量要大得多。将有一个“播放”甲板(设备1)和一个“记录”甲板(设备2),而刷新将涉及将整个虚拟内存从一个驱动器复制到另一个驱动器。为什么要向风车倾斜?因为在过去,磁带是大多数PET业主拥有的,包括自己。
大部分数据将是Forth代码的屏幕,在这个实现中,它将是1000个字节的文本和一个24字节的换行表,因为我也在利用PET ROM屏幕编辑器。我正在寻找的是任何建议,这些建议将(很可能)击败简单的运行长度编码,但不需要像Lempel-Ziv这样复杂的东西的CPU和内存开销。除了“忘了它”之外,所有其他建议都会受到赞赏。
发布于 2013-09-13 21:08:37
如果您最担心的是第四种源代码,您可以将字符集限制在为colorForth选择的48个Chuck中,并使用his香农编码方案,平均每个字符会产生5.2位。他还声称colorForth源代码只有对象代码的两倍大。顺便说一句,在arrayForth中,字符集似乎略有不同(参见pg。47份用户手册 --数字的不同顺序、撇号而不是冒号等等)。
当然,使用Shannon编码与有色单词无关。如果您想一路走下去,像在colorForth中那样存储预解析的单词,您可以使用他在这里的计划。
他没有给出太多的细节,但是对于etherForth,他放弃了Shannon编码和使用了一个简单的6位编码,而是对同一个字符集使用了11 11xxxx,另外指示了一个16位标记,用于颜色和标记,包括F18指令和一些汇编程序原语(开始、结束,以及for)。这确实是一个非常酷的方案(特别是在18位F18上,每个字有3个空间)。非常简单而且非常紧凑。
总之,有一些想法。并不是对压缩问题的直接回答,而是将Forth源存储在压缩良好的形式中的一些方法。玩得开心!
https://stackoverflow.com/questions/18788388
复制相似问题