浏览器中的Palo Alto Tiny Basic

2020-10-24 07:30:04

2020年10月10日,马丁·马尔·马利修改了李琛·王的Palo Alto Tiny Basic的第二版,以便在他的ASM80基于浏览器的汇编器和仿真器上运行。在他的许可下,我已经将源代码上传到GitHub。

Palo Alto Tiny Basic诞生于由人民计算机公司发起并由家庭酿造计算机俱乐部发起的微型BASIC运动。成员史蒂夫·沃兹尼亚克(Steve Wozniak)和汤姆·皮特曼(Tom Pittman)将开发自己的基础知识(分别是Integer Basic和6800 Tiny Basic)。王分析了牛郎星的Basic代码,并对Tiny Basic Extended进行了编辑。王在时事通讯中发表了8080的装载机,评论了给业余爱好者的公开信:

Altair Basic有一个二十字节长或二十一字节长的引导加载程序。原则上,您可以使用此引导程序加载您自己的加载器,然后该加载器将加载到您的程序中。然而,由于比尔·盖茨先生声称他还没有支付足够的钱,所以他有称人们为小偷的情绪。(参见HBCC时事通讯‘12-1。)。我决定自己编写一个代码。结果是一个16字节长的引导。这个还是太长了,也许我们的专业专家可以把它缩短一些。暂时欢迎你抄袭我的,我不会叫你小偷(包括盖茨先生)。

因此,不足为奇的是,李琛·王(音译)免费提供了他的基本实现。(我在为Basic Interpreter文章所做的研究中发现了阅读旧的Homebrew时事通讯文章的这句话。)。

Tiny Basic唯一较小的实现是Minol,它使用无符号字节而不是有符号整数,并且使用非标准命令。同样在2KB以下,当常用的口译方法是4KB ROM时,Palo Alto Tmall Basic支持更典型的语言版本,同时为TRS-80、Bally Astrocade、Sharp PC-1211和Cromemco的特定硬件留出了广泛的定制空间,这一点被多次利用。

玩我小时候用过的三台电脑背后的源代码很有趣。我学到了一些东西:

该代码的结构非常好,并且具有很好的可扩展性。我在不到一个小时的时间里添加了几个命令(PEEK、FRE())。您所需要做的就是在关键字表中插入新命令,然后在其他地方调整代码。

我非常兴奋地在代码中发现了几个小错误:众所周知,系统只有三条错误消息(“什么?”对于语法错误,“如何?”对于功能错误,“抱歉”表示容量问题)。如果在没有相应的GOSUB的情况下执行返回,您会得到一个“什么?”而不是问“怎么做?”

10输入“Hello world”在应该导致语法错误时充当有效的打印语句,因为没有指定接收输入的变量。

该语言只支持整数,但小数不会像应有的那样被忽略。打印1.1、1.2输出1和0。

那里有一个复活节彩蛋!“W”、“an”、“G”

RST1例程是一项艺术作品,它使用调用堆栈来确定其参数的位置,其中RST1之后的字节指定要匹配的字符,RST1之后的字节指定要跳转到的偏移量。Wang能够编写如此高效的内存代码,这就是他不需要实现IL虚拟机的原因。