初期のビデオゲーム、スタートレックについてはweb情報(日本語)がとても詳しいのでここでは述べません。1975年の英文資料によると、このゲーム作成に必要なtiny BASICの要求要件は、
16bit符号付き整数(-32768~+32767)
26個の変数 A-Z 大域変数のみ
RND関数 乱数発生
7つのBASIC命令
INPUT, PRINT, LET, GOTO, IF, GOSUB, RETURN
文字列はPRINT文の固定文字のみ
もちろん(計算機の変数の)配列は最低1個は必要です。端末はビデオ端末ですからDEC VT-100みたいなのを想定していたみたいです。こちらにはテレタイプASR-33のように紙テープ装置は付いていませんから、記録したいのなら何らかの入出力装置が必要です。あるいはPROMか。
日本で有名なのは1978年の共立出版bit臨時増刊「マイクロコンピュータのプログラミング」に掲載された、変更版のPalo Alto Tiny BASICです。2KB程度のROMあるいはRAMに入る大きさで、それとは別にBASICプログラム自体と動作のために最低0.5KB程度のRAMが必要です。CPUはintel 8080で、intel流のアセンブラで記述されていました。
上述の命令に加えて、FOR, NEXT, STOP, REMが追加され、関数ではABSとSIZEが追加されています。配列は@(式)の一つだけでテキストバッファの最後部から前に向かって伸びるので、プログラムが大きくなると配列の取れる要素数(SIZE)が小さくなります。
このtiny BASICプログラムの機械語列をメモリに入れて動作させると、ディスプレイ(あるいはテレタイプ)はコマンド待ちになって、タイピングでは行番号で開始するとプログラムの行と認識されてメモリ(テキストバッファ)に記録され、RUNコマンドでプログラムが起動します。このあたりは8bitパソコンやポケットコンピュータを知っている方には言わずもがなの動作と思います。
スタートレックのプログラム自体は同年に刊行された同じくbit臨時増刊「マイコンゲームを楽しもう。BASICプログラム集」に掲載されています。ただし、こちらのBASICでは実数と文字列の変数と関数が必要なのでtiny BASICで動作させるのならかなり変更が必要と思います。逆に言うと、計算機言語として、パソコンとしての最低限の必要な要素はtiny BASICで完成していた、ということ。
tiny BASICの計算機言語としての特徴はいくつかあると思います。最大のものは、人間が読めるテキストをそのまま解釈・実行している点です(さすがに行番号は2進数に変換される)。その後のパソコンBASICでは1行単位で中間言語に翻訳されていました。
もう一つは、サブルーチン呼び出しで元に戻るための情報がスタックに積まれるのは今の普通の計算機言語と同じですが、FOR-NEXTループの情報もスタックに積まれて行くことです。この設計はその後のパソコンBASICでも継続されました。C言語ではそんなものありません(局所変数はスタックに入るが)から、それ以前があるかどうか私は知りませんが、このtiny BASICのその後への影響は絶大だったと思います。
ちなみに、FOR-NEXTは配列計算(ベクトルと行列)で使うとプログラムが見やすくなる仕掛けで、原理的にはGOTO文(ループ)とIF文(条件分岐)で実現でき、GOSUB/RETURNと組み合わせれば可読性もある程度確保できます。上述の構想段階の(FOR-NEXTの無い)tiny BASICでは、このLISPみたいな書き方を想定していたようです。
16bit符号付き整数(-32768~+32767)
26個の変数 A-Z 大域変数のみ
RND関数 乱数発生
7つのBASIC命令
INPUT, PRINT, LET, GOTO, IF, GOSUB, RETURN
文字列はPRINT文の固定文字のみ
もちろん(計算機の変数の)配列は最低1個は必要です。端末はビデオ端末ですからDEC VT-100みたいなのを想定していたみたいです。こちらにはテレタイプASR-33のように紙テープ装置は付いていませんから、記録したいのなら何らかの入出力装置が必要です。あるいはPROMか。
日本で有名なのは1978年の共立出版bit臨時増刊「マイクロコンピュータのプログラミング」に掲載された、変更版のPalo Alto Tiny BASICです。2KB程度のROMあるいはRAMに入る大きさで、それとは別にBASICプログラム自体と動作のために最低0.5KB程度のRAMが必要です。CPUはintel 8080で、intel流のアセンブラで記述されていました。
上述の命令に加えて、FOR, NEXT, STOP, REMが追加され、関数ではABSとSIZEが追加されています。配列は@(式)の一つだけでテキストバッファの最後部から前に向かって伸びるので、プログラムが大きくなると配列の取れる要素数(SIZE)が小さくなります。
このtiny BASICプログラムの機械語列をメモリに入れて動作させると、ディスプレイ(あるいはテレタイプ)はコマンド待ちになって、タイピングでは行番号で開始するとプログラムの行と認識されてメモリ(テキストバッファ)に記録され、RUNコマンドでプログラムが起動します。このあたりは8bitパソコンやポケットコンピュータを知っている方には言わずもがなの動作と思います。
スタートレックのプログラム自体は同年に刊行された同じくbit臨時増刊「マイコンゲームを楽しもう。BASICプログラム集」に掲載されています。ただし、こちらのBASICでは実数と文字列の変数と関数が必要なのでtiny BASICで動作させるのならかなり変更が必要と思います。逆に言うと、計算機言語として、パソコンとしての最低限の必要な要素はtiny BASICで完成していた、ということ。
tiny BASICの計算機言語としての特徴はいくつかあると思います。最大のものは、人間が読めるテキストをそのまま解釈・実行している点です(さすがに行番号は2進数に変換される)。その後のパソコンBASICでは1行単位で中間言語に翻訳されていました。
もう一つは、サブルーチン呼び出しで元に戻るための情報がスタックに積まれるのは今の普通の計算機言語と同じですが、FOR-NEXTループの情報もスタックに積まれて行くことです。この設計はその後のパソコンBASICでも継続されました。C言語ではそんなものありません(局所変数はスタックに入るが)から、それ以前があるかどうか私は知りませんが、このtiny BASICのその後への影響は絶大だったと思います。
ちなみに、FOR-NEXTは配列計算(ベクトルと行列)で使うとプログラムが見やすくなる仕掛けで、原理的にはGOTO文(ループ)とIF文(条件分岐)で実現でき、GOSUB/RETURNと組み合わせれば可読性もある程度確保できます。上述の構想段階の(FOR-NEXTの無い)tiny BASICでは、このLISPみたいな書き方を想定していたようです。