引数BCに与える直前のボタン情報は、
一応`(BUTTON(0) AND NOT BUTTON(2)) OR BUTTON(3)`とかやれば現在のBUTTON関数から求めることはできますが、
そんなことするより自前で記録するようにした方が早いですしプログラムが60fpsでない際の判定も安定させられます
また、関数として公開している関係上ボタン入力情報B0,BCを引数として与えていますが、
実際使うときはグローバル変数を直接参照するようにすれば呼び出しの記述をもっとシンプルにできるかと思います。その辺りはお好みで修正を。
(B0,BCは20行目以降のRETURNでしか使っていません)