BASIC - 入力関係
ポケコンのBASICでのキー入力に関するテクニックです。
CALL 48381
CALL 48381またはCALL &HBCFDを実行すると、何かのキーを押すまで止まります。
CALLという命令は機械語を直接実行する命令です。アドレスを誤って入力すると大変なことになる可能性がありますので十分に注意して使ってください。
10 PRINT "PRESS ANY KEY"
20 CALL 48381
30 PRINT "THANK YOU"
正しく入力して実行してください。
実行すると"PRESS ANY KEY"と表示されて止まります。その後、何かのキーを押すと"THANK YOU"と表示されて終了します。
このように、CALL 48381は入力を待つときにとても便利です。
応用として、入力されたキーを検出するプログラムを作りました。
10 CALL 48381
20 PRINT INKEY$ ;
30 GOTO 10
押したキーを次々に表示しています。実行してみてわかると思いますが、キーを押しっぱなしにしても次に進みません。これはCALL 48381がキーを離している状態からキーを押すまで止まっている仕組みになっているからです。
もう少し丁寧に書くと、
10 CALL 48381
20 K$=INKEY$
30 IF K$="" GOTO 10
40 PRINT K$;
50 GOTO 10
こうなります。なぜこれが丁寧なのかというと、CALL 48381を実行したすぐあとにINKEY$を実行しても、INKEY$が実行される前にキーを離していればINKEY$でキーを検出できません。だから、ほんの一瞬だけキーを押した場合には不具合が出る可能性があります。
それを回避するため、いったんINKEY$の内容をK$に代入し、K$がNULLならもう一度CALL 48381からはじめさせています。
E-Mail:
Weblog: Tosikの雑記