With your snippet I get around 30 fps. If I take out the for next loop I get a decent frame rate of 60. So try taking out the for loop to see if you get a decent frame rate. It could be how you programmed your menu that is causing a low frame rate. I had the same problem when creating my menu. Using a lot of "SET TEXT" commands will slow down your program.
This will result in low fps
Rem ***** Main Source File *****
Sync on
Sync Rate 60
Do
cls
ink rgb(255,0,0),0
set text font "Courier New"
set text size 30
set text to normal
Print "LAG?!"
ink rgb(0,255,0),0
set text to bold
set text size 40
set text font "Arial"
print "Low fps"
ink rgb(0,0,255)
set text to italic
set text size 50
set text font "Calibri"
print "Really low fps"
CENTER TEXT Screen Width()/2,Screen Height()/2,"FPS = " + STR$(Screen Fps())
sync
Loop
I get around 20 fps with that and my specs are 4gb Ram ddr3, intel i7-820qm 1.73 turbo 3.06, windows 7 - 32 bit, nvidia 230m 1gb graphics card.
So if you are using a lot of text commands in your menu try replacing them with sprites.
A clever person solves a problem, a wise person avoids it - Albert Einstein