十字ボタンの上下でVYに数値を代入していますがカーソル位置の変更は PXしか行っていないのでボタンを押した結果が反映されていません。 この場合はPXでは無くPYを変更するとカーソルが上下に移動するように なります。 またボタン状態を取得した後にPXとPYに数値を代入しているので 十時ボタンを押してカーソルの位置を変更しても無効になってしまいます。 カーソルの初期値の設定はループの前で行うようにして下さい。