Applesoft Liteという名前で、Replica-1用に移植されたAPPLE II BASIC(Applesoft BASIC)を6502-COREに移植したものです。

10K BASICからグラフィックスなどの機種依存機能を取りのぞき8KB程度のコード領域に収まるように調整された実数型BASICインタプリタで実数値の有効数字は9桁になっています。残念ながら、移植の際にコードサイズを8KB程度に抑えるために、三角関数の機能も削除されています。

コードサイズが8KBに抑えられているのでSTD構成のPORTINGエリアに組み込むことができます。

APPLE II BASICのソースコード

利用させていただいたソースしたコードや簡単な説明などは以下のWEBページに示されています。

APPLE II BASICインタプリタの起動

APPLE II BASICのプログラムファイルは[XUM-APPLEII-BASIC-LITE-std.SREC]です。

APPLE II BASICのロードと起動手順は、\ref{sec:execute-basic}節に示した方法に準じて実行してください。

プログラムがロードされたらUniversal Monitorのプロンプトに対し、単にGと入力しエンターを押すことで、APPLE II BASICを起動することができます。

Gコマンドで明示的にアドレスを指定してAPPLE II BASICを起動したければ、GD000と入力しエンターを押しても構いません。

APPLE II BASICの起動例を「APPLE II BASIC BASICのロードと起動」に示します。Universal Monitorと同じプロンプト’]’が出てきたので、起動に失敗したかな???とどっきりしてしまいますが、無事APPLE II BASICが起動されました。

APPLE IIの利用経験がある方はお判りでしょうが、これがAPPLE II BASICのプロンプトなんですよね。

念のためPRINT 1/3と入力すると、0.999999999が出力され、有効桁数が9桁の実数BASICが確かに起動されていることが確認できます。

APPLE II BASIC BASICのロードと起動

APPLE II BASICのベンチマーク

創世期のマイクロコンピュータの作成や使用を楽しんでいるコミュニティーでは、実数型BASICの性能評価に、マンデルブロ集合の表示プログラムを使うことが流行しているようです。

ここでは、それに倣いプログラムを実行してみましょう。

下記のページの中ほどに、マンデルブロ集合の表示プログラムASCIIART.BASが書かれています。

BASICプログラムの入力

プログラムを手で入力するのはかなりきついので、BASICインタプリタを6502-COREにロードするときに使用した、TeraTermのファイル転送機能を使用します。

Universal Monitorでは、ファイルをロードするときにLコマンドを使用しましたが、BASICインタプリタの場合には、インタプリタがプログラム実行の待機状態にあるときに、ファイルの転送機能を使用するだけでプログラムをロードできます。

BASICインタプリタにプログラムを送り込む場合、BASICインタプリタがプログラムを読み込んで内部形式に変換するための時間がかかるため、1行ごとに300ms程度待つ設定に変更してから送るとよいでしょう。

TeraTermでは、[Setup -> Serial Port…]で設定用のダイアログを開き、ダイアログ中央右の[msec/line]の部分に300程度を設定します。

プログラムの読み込み時や実行時にエラーが生じるようであれば、転送速度が速い可能性があるので、待ち時間を増やし、時間的余裕がありそうであれば待ち時間を少し短くするなど、試行錯誤をする必要があるかもしれません。

なお、BASICプログラムの送信が終わったら、後のSレコードファイルのロードのために、設定を0に戻しておくとよいでしょう。

マンデルブロ集合の表示プログラムの読み込み直後の状況を「マンデルブロ集合の表示プログラムの読み込み直後」に示します。

マンデルブロ集合の表示プログラムの読み込み直後

また、マンデルブロ集合の表示プログラムをLISTコマンドで表示させた状況を「マンデルブロ集合の表示プログラムのLIST表示」に示します。

シンプルなプログラムですが、実数乗算がそれなりに使用されていることが見て取れます。

マンデルブロ集合の表示プログラムのLIST表示

ベンチマークプログラムの実行

さて、いよいよマンデルブロ集合の表示プログラムの実行です。その結果を「マンデルブロ集合の表示プログラムの実行結果」に示します。

マンデルブロ集合の表示プログラムの実行結果

6502-COREのクロックが2MHzの設定で、4分01秒で実行できました。また、動作保証はしていませんが、クロックが4MHzの設定で、2分01秒で実行できました。

マンデルブロ集合の表示プログラムの実行時間は、「はりせん」さんが以下のページにまとめられています。

壮観です。

どのマイクロコンピュータとどの処理系が、どのようなスコアを出しているか興味が尽きませんね。

表を見ると、機能的にR65C02相当のW65C02の2MHzで有効桁数が6桁のBASICで3分24秒と報告されています。有効桁数がAPPLE II BASICの方が9桁と大きいので、少し遅いのは妥当な結果のようです。