6年前に刊行されたC言語でtinyBASICを作る本は、もうすでに評価は終わっているでしょうし、今はほぼ廃刊の扱いなので、多少の批判的意見を書いても大丈夫でしょう。
目的は普通のパソコンやかなり小さい規模のマイコン学習ボードで同じtinyBASICを動作させて、特にマイコン学習ボードではスイッチ入力やLEDの点滅を制御させたかったみたいです。ゆくゆくはロボットの操縦でもやりたかったのでしょう。パソコンで十分に動作確認してからマイコンに移行、と。どちらもC言語でやれば良いではないか、と言う意見はとりあえず見なかったこととします。
開発系にかなり詳しい割には著者の自己紹介がほとんど出ていません。ですから著者像は想像するしかなく、内容的には私は元のtinyBASICというよりはポケットコンピュータのBASICを想起したので、ポケットコンピュータの開発者の一人か、あるいは当時はたくさんいたポケコン愛好者の一人と思います。BASICシステムのROMを熱心に解析する人は当時は珍しくありませんでした。後者は要するにハッカーですが、解析するだけなら違法ではありません。ただし、版元に断り無くネットなどに内容を発表したらものすごくまずいです。書けるのはせいぜい裏技と称する便利な使い方まで。
ポケコンBASICは独特のBASICで、表面的には十進浮動小数点演算が目立ちます。しかし、中身も独特で、おそらく最大のものはいわゆるスタックが非常に小さな事です。
たとえばC言語では局所変数に長大な配列を生成する、多分UNIX流の使い方があって、局所変数は普通はスタック(AUTO領域)と呼ばれるメモリ領域に取られます。tinyBASICもポケコンBASICも、当時のマイクロソフトのPC用BASICにも局所変数はありません。大域変数のみです。ですから、スタックは主にサブルーチン呼び出し時のリターンアドレスの保持に使われます。これはC言語でも同様。
元のtinyBASICには配列の計算時に使うFOR~NEXTループの開始アドレスやいわゆるDO変数などを保持する小さなメモリブロックがスタック上に取られます。おそらくこれは元々のダートマスBASICの設計を踏襲していると私は想像します。ダートマスBASICというのはBASICの原点です。
ダートマスBASICの文法書はネットで容易に手に入ります。開発は1960年代から開始されたとのことで、大型機のFORTRANはそのころはパンチカードにプログラムとデータを穿孔して計算機センターに提出すれば、翌日などにラインプリンタ用紙に結果が印字されたのが返却される、みたいな使い方でした。ですからバグ取りは大変な時間を費やします。
そこで、タイムシェアリングシステムと言って大型機に多数のタイプライタ型端末を接続して、CPUは高速ですから時分割で個々のユーザーをあたかも同時に相手しよう、という使い方が模索されました。今はWindowsでも普通にマルチユーザー・マルチタスクをやっていますが、当時はマルチタスクOSは大学の利用者(研究者)が開発するものでした。
BASICは教育用計算機言語として開発され、手軽に端末からプログラムを打ち込んで、即座に動作させることができる夢のようなシステム、だったはずです。
これの存在は米国ではかなり常識の線のようだったようで、intel 8080が発売されて即座にtinyBASIC計画がファンの雑誌(多分)に掲載されました。その経緯は上述の本に少しだけ書いてあります。
問題は著者がダートマスBASICの本体の構造を知らないみたいで、私も同様です。開発者による説明の本は持っていましたが、ダートマスBASICの内部構造までは解説されていなかったと思います。
なので、様々な伝説と手探り作業が始まってしまい、BASICインタプリタの作り方も自己流が流行ってしまった、ということ。当然のように大混乱となり、経緯を知っている方には懐かしいと思います。まあ、LISPの大混乱よりは少しまし、のような気はします。LISPの方は利用者個々人によって(各自が勝手に改造するので)文法が異なると言われたくらいです。どうやって改造するかは、気が向いたら紹介します。いわゆるマクロのことで、計算機言語にとっては割と重要事項ですから。
目的は普通のパソコンやかなり小さい規模のマイコン学習ボードで同じtinyBASICを動作させて、特にマイコン学習ボードではスイッチ入力やLEDの点滅を制御させたかったみたいです。ゆくゆくはロボットの操縦でもやりたかったのでしょう。パソコンで十分に動作確認してからマイコンに移行、と。どちらもC言語でやれば良いではないか、と言う意見はとりあえず見なかったこととします。
開発系にかなり詳しい割には著者の自己紹介がほとんど出ていません。ですから著者像は想像するしかなく、内容的には私は元のtinyBASICというよりはポケットコンピュータのBASICを想起したので、ポケットコンピュータの開発者の一人か、あるいは当時はたくさんいたポケコン愛好者の一人と思います。BASICシステムのROMを熱心に解析する人は当時は珍しくありませんでした。後者は要するにハッカーですが、解析するだけなら違法ではありません。ただし、版元に断り無くネットなどに内容を発表したらものすごくまずいです。書けるのはせいぜい裏技と称する便利な使い方まで。
ポケコンBASICは独特のBASICで、表面的には十進浮動小数点演算が目立ちます。しかし、中身も独特で、おそらく最大のものはいわゆるスタックが非常に小さな事です。
たとえばC言語では局所変数に長大な配列を生成する、多分UNIX流の使い方があって、局所変数は普通はスタック(AUTO領域)と呼ばれるメモリ領域に取られます。tinyBASICもポケコンBASICも、当時のマイクロソフトのPC用BASICにも局所変数はありません。大域変数のみです。ですから、スタックは主にサブルーチン呼び出し時のリターンアドレスの保持に使われます。これはC言語でも同様。
元のtinyBASICには配列の計算時に使うFOR~NEXTループの開始アドレスやいわゆるDO変数などを保持する小さなメモリブロックがスタック上に取られます。おそらくこれは元々のダートマスBASICの設計を踏襲していると私は想像します。ダートマスBASICというのはBASICの原点です。
ダートマスBASICの文法書はネットで容易に手に入ります。開発は1960年代から開始されたとのことで、大型機のFORTRANはそのころはパンチカードにプログラムとデータを穿孔して計算機センターに提出すれば、翌日などにラインプリンタ用紙に結果が印字されたのが返却される、みたいな使い方でした。ですからバグ取りは大変な時間を費やします。
そこで、タイムシェアリングシステムと言って大型機に多数のタイプライタ型端末を接続して、CPUは高速ですから時分割で個々のユーザーをあたかも同時に相手しよう、という使い方が模索されました。今はWindowsでも普通にマルチユーザー・マルチタスクをやっていますが、当時はマルチタスクOSは大学の利用者(研究者)が開発するものでした。
BASICは教育用計算機言語として開発され、手軽に端末からプログラムを打ち込んで、即座に動作させることができる夢のようなシステム、だったはずです。
これの存在は米国ではかなり常識の線のようだったようで、intel 8080が発売されて即座にtinyBASIC計画がファンの雑誌(多分)に掲載されました。その経緯は上述の本に少しだけ書いてあります。
問題は著者がダートマスBASICの本体の構造を知らないみたいで、私も同様です。開発者による説明の本は持っていましたが、ダートマスBASICの内部構造までは解説されていなかったと思います。
なので、様々な伝説と手探り作業が始まってしまい、BASICインタプリタの作り方も自己流が流行ってしまった、ということ。当然のように大混乱となり、経緯を知っている方には懐かしいと思います。まあ、LISPの大混乱よりは少しまし、のような気はします。LISPの方は利用者個々人によって(各自が勝手に改造するので)文法が異なると言われたくらいです。どうやって改造するかは、気が向いたら紹介します。いわゆるマクロのことで、計算機言語にとっては割と重要事項ですから。