One feature request that comes up every now and then is permanent CUSTOM. Meaning: whenever the calculator would otherwise not be showing any menu, have it show the CUSTOM menu instead.
I have thought about how to implement this, quite a while ago in fact, and I came up with a clean approach, but also a usability issue. Let me explain from the start:
On the HP-42S, menus are organized in what I call "layers." These are unrelated to the menu hierarchy, but rather, they represent a stacking order, in which menus in the lower layers get hidden behind menus in the upper layers. And conversely, when a menu is dismissed, whatever menu was hidden behind it is revealed and becomes usable again.
The lowest layer is used for the application menus: SOLVER, ∫f(x), MATRIX, STAT, BASE, and VARMENU;
The next layer is used for the function menus: MODES, DISP, CLEAR, CONVERT, FLAGS, PROB, CUSTOM, PGM.FCN, PRINT, TOP.FCN, CATALOG, and MENU;
The next layer up is used for what I call the "transient" menu, which is the menu that is left behind when you do a global GTO or XEQ by selecting an item from the list of LBLs and ENDs, but don't let it execute, instead keeping it pressed until NULL;
Next comes a layer that is used for the ALPHA menu, specifically, when it is used for ALPHA mode, not ALPHA argument entry;
And finally, there is a layer that is used for the menus that are shown in the course of command entry, e.g. the menu of variables shown when you press RCL, or the stack menu that is shown when you press RCL <dot>.
My idea is to add a new level, below the application menu level, and use that for the permanent CUSTOM menu. That way, the CUSTOM menu would always show when no other menu would otherwise be showing, without interfering with the other menus at all. The amount of new code I'd have to write would be small, it would be simple, not much chance of introducing bugs.
There's just one problem: the ▲ and ▼ keys. In PRGM mode, you'll typically want to use SST and BST a lot, and having to use Shift all the time to reach them is going to be painful. And likewise, while debugging you'll also use SST a lot.
So there needs to be a quick and easy way to disable and re-enable the permanent CUSTOM menu.
I don't want to do this using a MODES setting, because that's not quick, it would require several keystrokes to get to the desired menu option.
Another option would be simply EXIT. The CUSTOM menu would live in the new, lower level, but it would be opened using the CUSTOM function, and closed using EXIT, like any other menu. I like this idea because it's very minimalistic as far as UI changes are concerned, but it does mean that people who are in the habit of getting out of menus by pressing EXIT a bunch of times rapidly are going to often end up overshooting and exiting CUSTOM without meaning to.
Still another option would be similar to the first, but would make Shift-2 (CUSTOM on the keyboard) a toggle, rather than only activating the CUSTOM menu, and would not let EXIT close the menu.
I'm sure there are ramifications to all of these choices. Like: what should Shift-2 do when some menu other than CUSTOM is active? Activate CUSTOM in the function menu layer, or exit all menus to return to CUSTOM in the lowest layer, or do nothing?
Thoughts?