タイニーBASIC取扱説明書  


タイニーBASICは起動するとまず起動メッセージを表示し、次にプロンプトを表示します。ここでプログラムを入力するかコマンドを実行します。文字は数字と英大文字しか受け付け ません。大文字の入力は案外めんどうくさいので、小文字を入力したとき自動的に大文字に変換する機能を追加してあります。


【プログラム】
プロン プトに対して数字ではじまる文字列を入力すると、それはプログラムと解釈され、BASICプログラム領域に保存されます。BASICプログラム領域は配列領域と共有しており、配列を使わなければ24,000文字くらいになります。先頭の数字は行番号となり、プログラムは入力した順序にかかわりなく行番号の順に実行されます。行番号は1〜32767が使えますが、100から10ずつ増やしていくと行を追加するのに便利です。行番号が重なると、あとから入力した行で上書きされます。行を削除するには行番号だけを書きます。入力した文字列が無効だと 、その場では保存され、実行したときエラーを知らせます。


プログラムでは次に示すキーワードが使えます。キーワードは、ほかのキーワードと区別できるところまで書いたら「.」を付けて打ち切れます(たとえばGOS.のように)。空白は完全に省略できます。キーワードの多くは引数を付けて使 いますが、引数の詳細まで説明するとキリがないので、ソースやリスティングファイル、あるいはのちほど示すプログラム例から読み取ってください。タイニーBASICの文法の詳細をまとめた文書は、現在ではもう存在しません。


ステートメント 機能
LET 変数に値を代入する
PRINT 表示する
INPUT 入力を求める
GOTO 指定行へ分岐する
GOSUB 指定行を呼び出す
RETURN 呼び出しもとへ戻る
IF 条件が成立したら同行の続きを実行する
FOR〜NEXT 回数を指定して繰り返す
STOP 実行を停止する
REM 同行の続きを実行しない(注釈)

関数 機能
RND 引数以下の乱数を返す
ABS 引数の絶対値を返す
SIZE メモリの残りの容量を返す(単位はバイト)

比較演算子 意味
= 等しい(または代入する)
# 等しくない
> 左辺が右辺より大きい
>= 左辺が右辺より大きいか等しい
< 左辺が右辺より小さい
<= 左辺が右辺より小さいか等しい

算術演算子 意味
+ 加算
- 減算
* 乗算
/ 除算

変数 意味
A〜Z 符号付整数(-32767〜32767)
@(要素番号) 配列

【コマンド】
プロン プトに対して数字でない文字からはじまる文字列を入力すると、それはコマンドと解釈され、すぐ実行されます。 コマンドでは前述のプログラムのキーワードに加えて示すキーワードが使えます(次に示すキーワードはプログラムに使えません)。入力した文字列が無効だとその場でエラー になります。


コマンド 機能
NEW プログラムを消去する
LIST プログラムを表示する
RUN プログラムを実行する

【プログラム例-1
簡単なプログラムで入力から実行までの操作例を示します。赤色が入力、黒色がタイニーBASICの表示です。このプログラムは、円の半径を入力して面積を計算します。0を入力すると終了し、ほかの値だと結果を表示して繰り返します。計算のやりかたは、小学校の最近の教科書にしたがっています。 


OK
>100 INPUT "HANKEI ",R
>110 IF R=0 STOP
>120 PRINT "MENSEKI",R*R*3
>130 GOTO 100

OK
>RUN
HANKEI R:72
MENSEKI 15552
HANKEI R:0

OK
>_
 


【プログラム例-2
文法のよくわからないところを確認するため、いろいろな書きかたを試した例を示します。操作は入力済みのプログラムをLISTコマンドで表示するところから示しています。配列は宣言なしに使え、変数名は@、添字はメモリの限界まで指定できます。FOR〜NEXT文は組み合わせが利き、繰り返し範囲の指定に変数が使え、STEPで正負の増分を指定できます。PRINT文は、表示桁数を指定できます。本来、複数行になる記述を「;」で区切って1行で書けます。このプログラムはでたらめに発生した10個の数値を大きい順に表示します。


OK
>LIST

100 REM SET 10 RANDOM VALUES
110 FOR I=0 TO 9
120 @(I)=RND(1000)
130 NEXT I
140 REM SORT
150 FOR I=8 TO 0 STEP -1
160 FOR J=0 TO I
170 GOSUB 510
180 NEXT J
190 NEXT I
200 REM PRINT
210 FOR I=0 TO 9
220 PRINT #5,@(I)
230 NEXT I
240 STOP
500 REM SWAP SUBROUTINE
510 IF @(J)>=@(J+1) GOTO 550
520 T=@(J);@(J)=@(J+1);@(J+1)=T
550 RETURN

OK
>RUN
998
682
645
583
489
462
316
214
121
27

OK
>_