Ok, for the error message it looks like you are hitting [start] instead of [a]. [start] is unfortunately off limits for smile basic code, and just stops the code.
As for errors, you add 2 to cy instead of 1 for the down arrow. The biggest problem looks like the last two lines. It looks like you want to break out on [a] but gosub back to the menu line again instead. I think you want to goto....
@menu when [a] hasn't been clicked instead. [a] is a hard one to not have exit immediately since you probably click [a] after typing run to start the program. Normally this will exit the menu as soon as it is drawn because the button is still held down. I would also recommend not redrawing the whole screen every time through the loop, you don't need to for this program, just overwite > at the old
position and write it again at the new one. Just remember the ; so you don't start a new line. My first post in the thread has an improved version of your code. I turned the menu into a function. Set it up to pass in an array of menu items so you can reuse the code. Put the cursor handling in a repeat until loop, minimized screen redraw, and declared all variables with type specifiers. Good luck.
I tried to keep it to one screen but did have to end up squishing multiple lines together more than I would have liked. When I tried something like the attached it was getting too big to share as a screen shot.
I put all my demos in a folder called Sample and published it. The key is A2EE5KQV. You want the file called TextMenu but feel free to look at any of the demo programs for inspiration. Have a good night.