Not sure about the enormous part, but my Kinematic program has a pretty fancy menu thing going on, If I remember correctly, there is only one piece of code for menus, but there are two different menus. This should be expandable to many menus, all on the same code (it would probably be pretty large, but its one of the smallest ways I can think of for making a bunch of custom menus)
Here is the code with a bit of annotation...
Code: Lbl 3
1->Q //just the initial position of the cursor, 1 is the first option, 2 is the 2nd and so on...
Repeat max(K={21,105,45 //leave the menu if either 2nd, Enter or Clear is pressed. Once you've left the menu, you simply need to redirect the user to the right place depending on the value of K and Q (if K = 45, leave the program) (if Q = 1, go to option 1), etc.
"integralPhi integralPhi
real(6,0,34,16+8Q,15 //[re]drawing the cursor at the new position
real(6,0,33,16+8Q,10
Repeat K //here, any value K is accepted (any keypress) but only up, down, clear, enter and 2nd will be checked for, and any other keypress will end up back here (the cursor will blink)
getKey->K
End
"integralPhi integralPhi //just the cursor that I picked... could be an arrow or whatever...
If max(K={25,34:Then
real(6,0,34,16+8Q,30 //erasing the cursor
real(6,0,33,16+8Q,30
End
Q+(K=34)-(K=25->Q //incrementing and decrementing Q depending on which key was pressed, pretty standard...
Q-A(Q=A+1)+Anot(Q->Q //where the magic happens, figures out when to loop back from A. Since both menus here start at Q=1, it will loop back down when Q=0, and will loop back up when Q=A+1, which is one lower than the last element, which is too far
End
Basically, before reaching the code above, something like the code below needs to be done (initialising the variables A and B, and displaying the menu options)
Code: "UARM/Oblique/Back //The menu Options for menu 2
real(6,0,52,24,15,47
real(6,0,53,25,10,47 //displaying them (twice to get some fancy effect going on?)
3->A //A is the amount of options
Goto 3 //go to the menu code...
Code: "UARM/Oblique/Help/Quit //The menu Options for menu 1
real(6,0,52,24,15,47
real(6,0,53,25,10,47 //displaying them (twice to get some fancy effect going on?)
4->A //A is the amount of options
Hopefully this helps a little... I guess it's one of many ways you could go, when it comes to menus, I'm sure you could find very creative things