SWAPはもともとスプライトとは無関係の命令ですよ。そして変数の中身がスプライト番号であっても、それ自体はスプライト自体とは無関係で、自分がスプライト番号として管理している変数というだけですね。 SWAPは本来AとBの変数を入れ替えようと思ったら、 T=B:B=A:A=T のようにTという一時的な変数を利用して入れ替えなければいけないのをまとめてやってくれる便利な命令的な感じですね。 上で作ったユーザー定義命令は、ランダムで選ばれたスプライトでも使えます。SPSWAPの第1引数と第2引数の管理番号のスプライトを入れ替えるので、その番号がランダムなら出来ますよ。 作った命令は選ばれたスプライトの位置を交換するためにOUT命令で今の位置を取り出して、それを交換してからセットすることで2つのスプライトを入れ替えているわけなので。