ユーザーに数値や文字を入力させたいシーンもあるでしょう。BASICではデータをキーボードより入力させるINPUT命令、何らかのキーが押された事を検出するINKEY$関数があります。
INPUT命令
INPUT命令が実行されると入力待機の状態となり、値を入力して[Return(Enter)]キーを押すまで次のプログラム行に進みません。
INPUT <“プロンプト文字列”;> [入力変数1]<,入力変数2><,入力変数3>…
“プロンプト文字列”; の記述は省略すると「?(クエスチョンマーク)」のプロンプトが表示されます。入力変数は複数指定できます。複数指定すると、「,(カンマ)」で区切って指定数分入力することになります。
たとえば、以下のプログラムを実行すると、2つの数値を入力する事で、それらを掛け算した計算結果を出力してくれます。
10 INPUT "Input 2 values";A,B 20 PRINT A*B

INKEY$関数
INKEY$関数は、現在押されているキーボードの文字を返します。INPUTのように入力待機はしません。現在の入力文字を返して、すぐ次のプログラム行に進みます。何も入力されていないときはヌル文字(何もない事を示す空文字)を返します。
たとえば、以下のプログラムを実行すると、キーボードで入力した文字が素直にそのまま画面に出力されます。
10 A$=INKEY$ 20 PRINT A$; 30 GOTO 10

厳密には・・・
先ほどは、便宜上「INKEY$関数は現在押されているキーボードの文字を返す」と説明しましたが、実を言うと厳密にはINKEY$を呼び出す毎に、システム内部のキー入力バッファより1個の入力文字をロードしているので、実際には現在のキー押下の状態を示しているわけではありません。その証拠に2個以上のキーを同時に押しているかの判断ができません(入力された順番で呼び出し順に取得されます)。