CMBとCCMBの違い

戻る



 インタプリタの仕組みを理解するために、本質的でないと思われるのはバッサリ切り捨てました。いろいろな文や関数が省かれているのはもちろんですが、プログラムの構造もかなり変わっています。具体的には

などです。

 使えるコマンド・文・関数・PRINT文キャストもかなり減りました。残っているのは以下の通りです。

コマンド

DELETE
NEW(プログラム全消去のみ、フリーエリア設定はできない)
RUN(必ずプログラム先頭から実行。途中からの実行はできない)
LIST(文字列検索機能無し)


END
FOR〜NEXT
GOTO
GOSUB〜RETURN
INPUT
IF(1行IF文のみ、構造化IF構文は使えない)
PRINT、?
POKE

関数

ABS、CPL、FRE、NOT、NEG、PEEK、SGN

PRINT文キャスト

CHR、USGN



 構造化IF構文やWHILE〜WEND、REPEAT〜UNTILといった構文も無くなっています。それらはZ80から8086やH8に移行する際、CMBをいわゆる「tinyBASIC」とは一線を画す言語処理系にするために実装したわけですが。
 言い換えるとそれらが実装されていないようなCCMBは果たしてCMBの一族と言っていいのか? と思い、CCMBから省くべきかどうかで私は最後まで悩みました。しかし、結局はバッサリ切り捨てました。CCMBのソースが完璧に理解できるようになった人なら、CMBのソースも決して難解ではないはずです。まずCCMBを理解してもらうことが先だろう、と思いました。



 組み込み用マイコンやゲーム機などに自作の整数型BASICインタプリタを実装した方々はその名称に”tiny”と冠することが多かったようですが、私はあえて”tiny”という単語をを避けてきました。私が求めていたのはノスタルジーではなく未来志向だったからです。”tiny”を名乗ると「80年代ころにマイコン少年だった人の懐古趣味」と受け取られるのではないか、と危惧していました。
 もちろん、その80年代当時にわずか数キロバイトのメモリで動くtinyBASICインタプリタを世界で最初に作った「開拓者」の方々は、いまでも純粋に尊敬できます。でも我々はそこに戻るのではなく、それを超えなければいけない、と思っていました。

 でもまぁ、私も結局超ミニBASICをたいして発展させることもできないまま結構な年月がたってしまい、あまり偉そうなことをいう資格も無い気もします。