Palo Alto Tiny BASICをZ80-COREに移植してみました。Palo Alto Tiny BASICのソースファイルはいろいろと見つけられるのですが、Z80用となると、思いのほか見つかりにくかったのですが、皆さんはどうですか?
ソースコードとしては、下記のTinyBasic_2.0gを使用しました。
当初TinyBasic_2.0gはほかのサイトで見つけたのですが、G80S_tinyBASIC_2_0gとセットにはなっていませんでした。このサイトのソースコードを比べてみると、SIOを使用したボードには明らかにG80S_tinyBASIC_2_0gの方が適しているのですが、移植を開始する際に見つけることができず、TinyBasic_2.0gをベースに使用しました。結局は、TinyBasic_2.0gをG80S_tinyBASIC_2_0g相当に書き換える作業を行ったことになります。:-(
- http://retrodepot.net/?p=274
- TinyBASIC for the z80 – TinyBASIC 2.0g
- http://retrodepot.net/?attachment_id=283
- G80S_tinyBASIC_2_0g
- http://retrodepot.net/wp-content/uploads/2017/10/G80S_tinyBASIC_2_0g.txt
- http://retrodepot.net/?attachment_id=282
TinyBasic_2.0gは2.0と書かれているようにPalo Alto Tiny BASICのVERSION 2.0をベースにしています。Palo Alto Tiny BASICのバージョンに関しては以下の記事をご覧ください。
移植作業
Z80-COREへの移植作業では、以下の様な修正を行いました。
- コード、作業変数、BASICのプログラム格納領域などをZ80-COREに適したものに再配置する。
- コード領域はアドレスの下位領域に:この領域の上にBASICのプログラムが格納される
- 作業変数領域はアドレスの上位領域に:この領域の下に配列の領域が確保される
- Z80-COREのモニタの機能を利用した入出力処理を組み込む。
- 英文字の入力は、当時の利用環境に合わせ、小文字を入力しても大文字を入力するモニタルーチンを利用。
- 文字の出力処理には、CRの出力にLFを自動的に付加する文字出力ルーチンを使用する。
- RST命令による頻出処理のサブルーチンコールを通常のサブルーチンコールに書き換える。
- 電子的なコンソールでは使うことがないので、文字出力の出力抑止機能を削除する。
- オリジナルのソースコードでマクロ記述の部分が、生のコードで書かれている部分をマクロ記述に書き戻す。
- Z80-CORE用の追加機能
- 計時機能を組み込む。
- タクトスイッチやLEDの入出力機能を組み込む。
結局のところ、VERSION2.0のコードを利用して、VERSION3.0での変更と同様な変更を行ったようなことになったようです。
異なる使用法を考慮し、コードの配置場所が異なる2つのバージョンを生成できるようにしました。
- 全メモリがRAMに設定されている状態か、ROMに書き込めるようにしたバージョン
- コードを1000Hから配置
- ROMの配置状態でRAM領域に読み込み実行できるバージョン
- コードを4000Hから配置