While reconciling the Horizon Ramdisk ROS, CFG, and MENU programs I have been learning about GROM access. In all these years, I've never had much interest in GPL or GROM. That changed for a few reasons including the need to understand GROM to reconcile the source code and my curiosity of the magic that Tursi and Gazoo have been conjuring.
Since there is no better way to learn (IMHO) about something than to experiment with it, I found the source code for the 80-column Geneve version of BOOT. In its native configuration, it resides in two GPL banks and over-rides the title screen. Gazoo's XB27 suite does something similar with BOOT so I removed most of the Geneve-specific code and started playing around.
Gazoo, Atrax, and Omega have been most helpful testing and offering ideas. Although the program is not quite ready for release, I can tell you a few things about it:
1. The menu and all options are presented in 80 columns. F18A and V9938 80-column modes are supported.
2. BwG clock, MBP, Triple Tech, Geneve, and Clulow clocks are supported. Classic99's clock has been tested but not currently implemented due to space constraints. (incorporation will occur with future consolidation of the clock routines).
3. Menu files can be created as executables that are run from the menu itself. Chaining of menus is possible with this feature, allowing an "unlimited" number of selections.
4. The menu program can save itself to the Uber cartridge, similar to the function provided by Gazoo's cartridge code. It can also be saved to disk as BOOT.
5. Ramdisk boot tracking has been added for "DSK*." support, though this may not be necessary.
6. The cartridge finder has been updated to scan up to 16 GROM banks from g>9800 to g>983C. It will also find name headers in the same GROM, such as those found in the Mini Memory cartridge or XB27 suite. The HSGPL exhibits some odd behaviour that we are trying to track down.
7. Re-entry hooks are in place for potential return to the menu from external programs (provided they do not stomp on the menu code).
This program is by no means a formal project and I make no promises on how far I will take it. Once a few more tests are completed, I'll share the first release for folks to play with. I haven't settled on a name for the program so for now, it will refer to its roots as the "9640 Menu System".