Try adding a VSYNC before the GOTO @MOVE. That will make it so that SmileBASIC waits until the next frame until it starts executing code again, stabilizing the framerate. Without it your program runs really fast - one little press can send your player across the screen in an instant.