">>" and "<<" are binary bit shift operators.
"4" in decimal is equal to "0100" in binary, and "4>>3" shifts "0100" three bits to the right.
The result of the operation is "0001" in binary ("1" in decimal).
Don't use GOTO in a subroutine which is called by GOSUB.
When the program calls a subroutine with GOSUB, the pointer will be stacked, and when the program executes RETURN, the stacked pointer will be flushed.
A subroutine which is called by GOSUB should be finished by RETURN.