Ruijc,

I did not check the code in detail but at first look there is something that should not be done.

Code:
....
        goto timing
        goto startmenu
        endif
        NEXT
        red=1
        return

1. You have two "goto" s one after the other. When the first one runs, the second one will not run!

2. When the first one runs, then you will have a return address on stack; Thus, the next time you hit a return, where ever it is, it will ruin your logic flow. You must organize a logic flow that will clear the return address of the subroutine you are in. Example: set a flag and then exit the subroutine with "return".