2020.8.26
前へ
次へ
ホームページトップへ戻る

[新連載]復活!TINY BASIC
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
すべてはここからはじまりました。
中日電工も。
40年前を振り返りつつ新連載です。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜



[第75回]


●INPUT

今回はINPUT命令の説明です。



INPUT命令はPRINT命令に似ています。
’INPUT’に続いて文字列(’または”で囲んだ文字列)のみを記述した場合には’PRINT’と同じ動作になります。
そこに変数名を記述すると、その変数名が表示され続いてコロン(:)が表示されて入力待ちになります。
通常INPUTの場合数値を入力することが多いのですが、上の解説では数式を入力することもできるようです。
確認のため試してみました。



おお。
できますね。
立派なものです。
ちなみにZB3BASICで同じことをするとERR:26が表示されます。
ERR:26はINPUT文の変数と入力した値の型が合わないというメッセージです。

説明に戻ります。
INPUT文で変数名の前に’または”で囲んだ文字列を置くと変数名は表示されずにその文字列と続いてコロン(:)が表示されて入力待ちになります。
この場合も式を入力するとそれが変数の値としてその変数に格納されます。
もし入力された式にエラーがあると”WHAT?”、”HOW?”、または”SORRY”が表示されたあと、再び入力待ちになります。
このときINPUT文はCTRL+Cを入力しない限り実行を終了することはできません。
オリジナルのTINY BASICではCTRL+Cを使ってブレークしますが、中日電工版TINY BASICではその目的でCTRL+Cを使うことはできません。
この機能についてはもう少し先で検討して決めたいと思っています。

プログラムの説明です。



最初にINPERR:があります。
INPERR:は入力エラーのときの処理プログラムです。
入力エラーがあったときはここでエラー処理をしたあと再びINPUT:にエントリします。
INPERR:は後で説明することにします。

INPUT:はINPUT文の最初のエントリポイントです。

02CD IP1:PUSH D

で現在のテキストプログラムの位置アドレスをスタックに一時保存します。

02CE CALL QTSTG

QTSTGについては[第46回]で説明をしました。
DEで示されるテキストエリアのアドレスに’または”で囲まれた文字列がある場合にはその文字列を表示したあと3バイト先(02D4)にジャンプします。
文字列ではなかったときは次の命令(JMP IP2)が実行されます。

まずは文字列だったときに、その文字列を表示したあとの処理について説明をします。

02D4 RST 7

RST 7は[第13回]で説明をしました。
変数A〜Zまたは配列@(N)(以下「変数」と表記します)をチェックします。
変数ではなかったときはキャリーフラグが立ちます。
キャリーフラグが立ったときはIP4にジャンプします。
変数だったときはIP3にジャンプします。
IP3:はIP2:の中にありますからIP2:のところで説明をすることにします。

IP4:ではPOP PSWをダミーとして実行します。
02CD IP1:PUSH D
でPUSH したDEを破棄するためです(DEは現在まで進めた値が有効になります)。
RST 1で’,’かどうかを確認します。
’,’だったときはセパレータなので次の項目の入力、表示のためにIP1に戻って処理を続けます。
’,’でなかったときはINPUT文の終わりと考えてRST 6を実行します。
RST 6は[第12回]で説明をしています。

説明が長くなりますので今回はここまでにします。
次回に続きます。

復活!TINY BASIC[第75回]
2020.8.26upload

前へ
次へ
ホームページトップへ戻る