■テキストVRAM(EDTOP)について

 入力バッファ(EDTOP)は、入力して表示された内容をアスキーコードで保管している「テキストVRAM」です。
このEDTOPは以下の様に構成されています。

上記表のX・YはLOCATE文に対応してます。EDTOPは仮想スクリーン8行分用意されています(実際の表示は4行まで)。
各アドレスにアスキーコードが入ります。表示(入力)されていない部分には「0」は入ります。
X座標・Y座標に対するアドレスの求め方は &H6100+32*Y+X になります。
これを利用すれば、ゲーム等で当たり判定の判別に使用できます。

尚、このアドレスに値を書き込んでも表示は更新されません。


サンプルプログラム
 以下のプログラムを実行すると、画面に表示された"A"に向かって、左端から"*"が移動しますが、"A"の直前で停止します。
これは行20で移動先に表示物があるか確認している為です。行20を削除すると、"A"を無視して移動します。
行10の"LOCATE15,0"を"LOCATE25,0"に変化しても同様の動作をします。
従来ならゲーム等で画面上の表示物に対する当たり判定処理をする場合は配列変数を定義して記憶する必要がありました。
テキストVRAMを直接参照する事で、メモリ節約・実行速度の向上に大きく貢献できると言えるでしょう。

10 CLS:CLEAR:X=0:Y=0:LOCATE15,0:PRINT"A"
20 IF PEEK(&H6100+32*Y+X)<>0 THEN BEEP:END
30 LOCATEX,Y:PRINT"*";
40 IF INKEY$="" THEN 40 ELSE LOCATEX,Y:PRINT " ";:X=X+1:GOTO 20