Tiny BASICとはその昔作られた、OSがほぼ無いようなPCでRAM容量数KBで動くBASIC処理系です。英語版のwikipediaが詳しいです。
プチコン版を作るにあたり、各種Tiny BASIC(※1)がある中で、Palo Alto版を元にインタプリタ型とし、最も命令が少なそうなものを参考にしました。
プチコン版Tiny BASICの勇姿
処理速度。。。?プログラムによりますが、ループと計算を多く繰り返すようなプログラムでは、プチコン上で実行する速度に比べ、100倍以上遅いです。
動画の後半にある素数を求めるプログラムで、プチコン版だとは25個でTIME=12。Tiny版では7800くらい。(TIME:MAINCNTLのカウント値)
Tiny BASIC for Petitcom 起動後の画面。
現在はバージョン1.0alphaです。
Tiny BASIC on SMILE BASIC ! |
プチコン版Tiny BASICの仕様
- プログラムは99行まで
- プログラムは先頭に行番号が必要
- 変数はA〜Zの26個(数値用、文字列変数はない)
- コンソールで命令の直接実行も可能
- プロムラム実行中、Xボタンで中断可能
命令一覧
HELPコマンドの実行結果です。使える命令が分かるようになっています。
プチコン版TinyBASICのHELP |
補足説明
- GOTO命令の飛び先には、変数を指定できます。
- LINENOシステム関数は実行中の行番号を返します。GOTOと組み合わせると、なんちゃってGOSUB〜RETURNが実現できます。
- LIST命令でPAUSEパラメータが指定されると、LIST表示は1画面毎に停止し、キー入力(EnterかAボタン)を待ちます。
- SAVE、LOAD命令はパラメータに数値を指定します。プチコンの"GRP:TBn"(nは指定した数値)というファイルで保存されます。
- MEM命令は、プログラム可能な行数の残りを表示します。
オリジナルにあって、プチコン版にない機能
- コントロールキャラクタの表示 (^Lだとか^Gだとか)
- GOSUB〜RETURN
- 配列変数@
- 数値、変数の2バイト整数演算(演算はプチコンの数値変数による演算そのままなので)
- ほかにもいろいろあるかも
その他
プログラムの入力は、プチコンのLINPUT命令を利用しています。簡易な実装にはもってこいの命令で、ほぼオリジナルと同じような機能となるようです。しかし32桁しか入力できない、カーソル移動が無いためLIST結果の編集ができないなど、BASIC入力環境としての使い勝手はいまいちです。というわけで現在はbeta版作成中。
beta版以降の夢:
- LINPUTよりましなスクリーンエディタ
- GOSUB〜RETURN
- 配列変数 @
- FOR〜NEXT
- ほか
作った後に思いましたが、プチコンのSMILE BASICでTINY BASICを動かすのは
- 車輪の再々...々発明
- まさに屋上屋
- いまどき行番号?
TinyBASIC(alpha) for Petitcom