で、何とか今の知識でかつてのBASICをまとめようと資料を集めると、予想以上に中身がばらばらなので諦めました。参考にしようとしたのは、
ダートマスBASIC。BASICの原点。しかし版が複数あって後期はかなり印象が違う。
東大版PaloAltoTinyBASIC。日本で有名なtiny BASICの一つで、次の本の原点。
C言語でtinyBASICを作ろう、の本のあまりtinyとは言えないtiny BASIC。
我が国のパソコンの原点、NEC PC-8001のN-BASIC (マイクロソフト製)。
SHARP PC-5000に入っていたGW-BASIC (マイクロソフト製)。16bitパソコン。
カシオのポケコンAI-1000のBASICカートリッジのBASIC。後期ポケコン代表。
後は現在のVisualBASICとか表計算ソフトのVBAとか。
で、これらが見事なまでにばらばらな感じです。
ダートマスBASICの数値は浮動小数点数しかなく、配列の要素もこれで指定します。FOR-NEXTは純粋なループの構文みたいで、FORTRANで言うDO変数の特別扱いは無いみたいです。ちなみにC言語のfor文も単なるループです。
1パスコンパイラ、ということです。ですからGO TO文の飛び先とか変数のアドレスは実行直前に分かっていて、インタプリタが改めてありかを探す必要はありません。しかし、配列計算では(少なくとも当時は)指定に整数を使う方がずっと高速ですから、そのためのMAT命令群が別に設けられていました。しかし、パソコンBASICやもちろんポケコンBASICにもMAT命令があるようなBASICは極めて例外的だったと思います。
東大版PaloAltoTinyBASICは16bit符号付き整数とその配列しか扱えません。GO TO文のオペランドは何と式なので、工夫すると旧FORTRANの計算型とか割り当て型のGO TO文になります。が、容易に想像できるように極めて危険な使い方になります。ダートマスBASICでは固定の行番号しか許されません。
C言語のswitch-caseの構文はあった方が良いので、後期のダートマスBASICではON i GO TO a1, a2, a3, ...の書き方があります。これはN-BASICにも取り入れられています。
ポケットコンピュータBASICの最大の特徴は、GOSUBのリターンアドレス用のスタックとFOR文用のスタックが別に設けられていて、それぞれはそんなに深くは割り当てられていません。そのため、元のtinyBASICやパソコンBASICとプログラムの組み方によっては動作が異なると思います。また多分、tiny BASICと同様にFORに対するNEXTが複数あっても動作してしまいます。
もうこの時点で私の頭の中は混乱してしまって、どれを基本にして良いものやら、の感じになりました。
感想として、tinyBASICのやり方はメモリが2KB (キロバイト)とかの極端にメモリが小さい場合のみに考慮した方が良いと思います。
今の制御用マイコンでもROMが1MB、RAMが96KBとかで、秋葉原の部品ショップで単体で1000円程度、試作用ボードでも2000円程度。もちろん1000個単位で注文すればずっと安くなると思います。普通はC言語でプログラムを作ります。BASICだと16bit機のBASICのやり方が良いと思います。ええ、私は当時のマイクロソフトのBASICはとても気に入っていました。FORTRAN系の言語は作成時の効率が良いのです。
ポケコンのBASICはこれはこれで良い工夫と思います。ただし、実行時の効率は期待されていないと思います。関数電卓はとりあえずの数値計算で設計が外れていないことを確かめる感じの装置と思います。ポケコンBASICも軽く設計内容を確認するための装置と思います。
あまりまともな説明になりませんでしたが、これでこの話題(BASIC一般)は一旦終了します。目的の1行コンパイラによるマルチタスクシステムの構築の可能性に関しては、稿を改めないと収拾が付かないような気がしてきました。
ダートマスBASIC。BASICの原点。しかし版が複数あって後期はかなり印象が違う。
東大版PaloAltoTinyBASIC。日本で有名なtiny BASICの一つで、次の本の原点。
C言語でtinyBASICを作ろう、の本のあまりtinyとは言えないtiny BASIC。
我が国のパソコンの原点、NEC PC-8001のN-BASIC (マイクロソフト製)。
SHARP PC-5000に入っていたGW-BASIC (マイクロソフト製)。16bitパソコン。
カシオのポケコンAI-1000のBASICカートリッジのBASIC。後期ポケコン代表。
後は現在のVisualBASICとか表計算ソフトのVBAとか。
で、これらが見事なまでにばらばらな感じです。
ダートマスBASICの数値は浮動小数点数しかなく、配列の要素もこれで指定します。FOR-NEXTは純粋なループの構文みたいで、FORTRANで言うDO変数の特別扱いは無いみたいです。ちなみにC言語のfor文も単なるループです。
1パスコンパイラ、ということです。ですからGO TO文の飛び先とか変数のアドレスは実行直前に分かっていて、インタプリタが改めてありかを探す必要はありません。しかし、配列計算では(少なくとも当時は)指定に整数を使う方がずっと高速ですから、そのためのMAT命令群が別に設けられていました。しかし、パソコンBASICやもちろんポケコンBASICにもMAT命令があるようなBASICは極めて例外的だったと思います。
東大版PaloAltoTinyBASICは16bit符号付き整数とその配列しか扱えません。GO TO文のオペランドは何と式なので、工夫すると旧FORTRANの計算型とか割り当て型のGO TO文になります。が、容易に想像できるように極めて危険な使い方になります。ダートマスBASICでは固定の行番号しか許されません。
C言語のswitch-caseの構文はあった方が良いので、後期のダートマスBASICではON i GO TO a1, a2, a3, ...の書き方があります。これはN-BASICにも取り入れられています。
ポケットコンピュータBASICの最大の特徴は、GOSUBのリターンアドレス用のスタックとFOR文用のスタックが別に設けられていて、それぞれはそんなに深くは割り当てられていません。そのため、元のtinyBASICやパソコンBASICとプログラムの組み方によっては動作が異なると思います。また多分、tiny BASICと同様にFORに対するNEXTが複数あっても動作してしまいます。
もうこの時点で私の頭の中は混乱してしまって、どれを基本にして良いものやら、の感じになりました。
感想として、tinyBASICのやり方はメモリが2KB (キロバイト)とかの極端にメモリが小さい場合のみに考慮した方が良いと思います。
今の制御用マイコンでもROMが1MB、RAMが96KBとかで、秋葉原の部品ショップで単体で1000円程度、試作用ボードでも2000円程度。もちろん1000個単位で注文すればずっと安くなると思います。普通はC言語でプログラムを作ります。BASICだと16bit機のBASICのやり方が良いと思います。ええ、私は当時のマイクロソフトのBASICはとても気に入っていました。FORTRAN系の言語は作成時の効率が良いのです。
ポケコンのBASICはこれはこれで良い工夫と思います。ただし、実行時の効率は期待されていないと思います。関数電卓はとりあえずの数値計算で設計が外れていないことを確かめる感じの装置と思います。ポケコンBASICも軽く設計内容を確認するための装置と思います。
あまりまともな説明になりませんでしたが、これでこの話題(BASIC一般)は一旦終了します。目的の1行コンパイラによるマルチタスクシステムの構築の可能性に関しては、稿を改めないと収拾が付かないような気がしてきました。