If it was setup as you have it here that is because there is no return from the gamestart function. Remember that Basic runs instructions one after another in the order presented and uses Gosub, goto and functions to control the program flow.
Your program should gosub GAMESTART and have a return at the end of the GAMESTART code ...OR... (this is Bad Programming practice but) Use a goto statement (so no return is expected) and at the end of the GAMESTART code use another Goto to redirect the program to the next section of code you need to run.
That is if I know what I think I know and that I read your code correctly.
[edit] just reread your code and I see that most of your code looks good at a glance but I didn't see the return from GAMESTART. Is that where your problem is coming from?
good luck.
Wasting CPU Cycles since the 286 was a hot machine.