あまさと しおんさんが指摘しているように、GOTOで戻っているために、Aボタンを押している間、34行目以降にあると思われる、SPOFS 0,X,Yが実行され無いために重く感じられるのではないでしょうか。 また、GOSUBで呼び出してGOTOで戻るとスタックオーバーフローの元になるのでRETURNで戻るようにしてください。戻ったときに、処理を分ける必要があれば、そのための変数に値を設定して、サブルーチンから戻ってからその値を判定して処理を分けた方が良いと思います。(対処例なのででK・Zにとってもっと分かりやすい方法があればその方法を使ってください。)