Commodore Basic(Cbmbasic)是Commodore 64上提供的Microsoft Basic 6502版本的100%兼容版本。您可以在交互模式下使用它,也可以将基本文件作为命令行参数传递。
此源代码不模拟6502代码;所有代码都完全是本机代码。在1 GHz的CPU上,与1 MHz的6502相比,您可以获得1000倍的速度。
您可以在交互模式下使用cbmbasic,只需运行不带参数的二进制文件,也可以在命令行上指定一个ASCII编码的BASIC程序。您还可以将cbmbasic用作UNIX脚本语言,方法是向Basic程序添加hashbang行并使其可执行。
$ls-l hello.bas-rwxr-xr-x 1薄雾员工40 7 4月21:30你好。bas$cat hello.bas#!/usr/bin/cbmbasicPRINT";Hello World!";$./hello.bas Hello world!
cbmbasic实现了一个小插件系统,允许开发人员添加额外的语句、函数等。现在,您可以用";SYS 1";打开它(用";SYS 0";关闭),然后使用新的语句locate y,x(设置光标位置),系统字符串(运行命令行命令)和扩展的等待端口MASK,它实现了比尔·盖茨的复活节彩蛋。
BASIC解释器的核心在cbmbasic.c文件中,该文件与平台、字节顺序和位无关。对于所有I/O,它都调用到runtime.c中,因此只需更改runtime.c就可以使该项目适应任何操作系统。
核心解释器无法处理的所有函数调用都会在runtime.c中的kernaldispatch()中结束,在那里,switch语句会将这些调用分派给C函数。对于Commodore Basic,runtime.c必须支持几个Commodore内核库例程。其中一些非常重要(Chrin、CHROUT),而另一些仅用于某些基本语句(LOAD、SAVE、OPEN、SETTIM)。runtime.c还没有实现所有函数。
您可以随意将此项目用于任何目的,如果您愿意,可以给予表扬,如果您愿意,还可以将改进反馈给作者,这样其他人就可以从中受益。有关许可证详细信息,请参阅来源。