折角なので、別の観点のアドバイス。
BA=BUTTON(2,16)
を実行すると、Out of range in SLOT:LINE(BUTTON)
と表示されるはず(SLOTとLINEは、それぞれプログラムスロット、プログラム中の行をあらわす数値)
Out of range(範囲外)と言うことから、引数(命令に渡す数値や文字など)が、指定できる範囲を越えている、と理解して、キーボード右上の?ボタンから、BUTTON命令の説明(特に引数の説明)をよく確認する。
と言うアプローチで僕は問題解決を考えています。
折角なのでDIVを使った例をおいておきます。
LOCATE 10,5
PRINT "A"
@LOOP
TOUCH OUT STTM,TX,TY
IF STTM!=0&&TX DIV 8==10&&TY DIV 8==5 THEN
'ほげほげ
ENDIF
GOTO @LOOP
DIV を使うと、0~7の時、8~15、・・の等間隔の判定をシンプルに記述出来ます。
32と書いてある場所(4箇所)を変えると格子の幅を変えることが出来ます。
格子の幅を8にすると、PRINT 文で表示した文字と同じサイズの格子になります。(但し、3DSの仕様で、外周付近は判定出来ません)
LOCATE 3,2:PRINT"A"
で表示した文字がタッチされたかは、
24行目を以下に書き換えると判定できます。
IF TX DIV 8==3 && TY DIV 8==2 THEN PRINT"タッチ"