I'm not sure whether this actually belongs under custom menus, custom text input, or validation of user input, or perhaps neither (maybe it should be it's own technique?).
This has also probably been done before, but I have not yet seen it on TIBD, so I thought I'd put it out there. Basically, if you want to have a user select one of several, modes, values, levels, etc., one option is to have a sort of bar, or row of dots spaced at an even interval across the screen. You then have a sort of a slider/cursor that can be moved around on the selection bar with the arrow keys. I realize that I am not explaining this well at all, so here is an excerpt from a game that I made:
:Clrdraw :Axesoff :ZFrac1/3 :For(A,-2,2 :Pt-On(5A,0 :End :Text(1,1,"Use arrows to set difficulty :Text(7,1,"Hit enter to continue :Text(20,10,"Easy :Text(20,70,"Hard :Text(-1,40,18,"DIFFICULTY :0 -> A :Repeat K=0 :Pt-On(A,0,2 :Repeat K :getkey -> K :End :If K=24 and A>-10 or K=26 and A<10:Then :Pt-Off(A,0,2 :A-5(K=24)+5(K=26 -> A :End :End :-.2A+3 -> F
In the above code, if you do not already have the ability to type in lower case on your calc, and you do not feel like activating it with the short assembly code found on the assembly code page of this website, then leave out the Hard and Easy and instructional text altogether. If it's all CAPS, it won't line up properly, so just leave that out if you can't use lowercase.
A represents the position of the cursor/slider, while F represents the value that I use for difficulty in the game. If you want to see the result, add Pause F to the end of the entire code. Note: 1 = Hard and 5 = Easy. I find this technique useful especially things for which there are more than 7 or 8 possible values, making a standard menu or a typical custom menu impractical. I also think it is more attractive/visually appealing.
The above code is used as a partially unoptimized, general example.
This code and format can obviously be modified in many ways, this is just the basic idea, which I have found to be highly effective in my programs.
Let me know what you think.
Finally, if you do not have a certain OS, you will not have the zoom option of ZFrac1/3.
you can use this instead:
:47/3 -> Xmax :-Xmax -> Xmin :31/3 -> Ymax :-Ymax -> Ymin