FOR T=0 TO LEN(MSG$)-1
LOCATE X+T,Y:?MSG$[T]
FOR I=1 TO XSLOW
WAIT
IF BUTTON(2)==#A THEN XSLOW=0
NEXT
NEXT
WAITを分解して必ず1(省略してますが)になるようにしているのがポイントです。これならばBUTTON(2)が有効になります。その上でループ中にボタンチェックを入れているのでSLOWが大きな数字の場合も反応が良くなる(はず)です。
他の部分はそのままで動くと思います。ただUSEの位置はLOADの後(3行目)の方がいいかなと思う部分や、DEF(ユーザー定義命令)なので、ローカル変数になる変数は全てVARをつけた方がいいとは思いますが、とりあえず動作上は問題ないはずです。
と言うことで、引き続き頑張ってください!