Newsgroups: comp.sys.handhelds

Hi,

Here's a little routine that expands the current menu by up to four
rows while still maintaining the stack and status display.  It also
allows menu tree traversing.  As an example, try using it in the units
menu by entering [ORANGE] [UNIT] XMENU [ENTER].  You should see all three
rows on the units menu.  Pressing any key in the top three rows will
enter a particular unit sub-menu and display all rows.  Pressing [+/-] in
the sub-menu will put you back in the unit menu agian.  To exit, press
[ON].
------------------------------------------------------------------
begin xmenu.doc
************************************************************
**                                                        **
**              XMENU - Menu Expander 1.02                **
**                                                        **
**             Copyright 1992 Brian Maguire               **
**                  All Right Reserved                    **
**                                                        **
************************************************************
 
DISCLAIMERS
 
XMENU is presented without warranties, expressed or 
implied.  The author makes no guarantee as to the fitness 
of this software.
 
XMENU can be copied freely provided the software is copied 
in its entirety.  The user cannot be charged, in whole or 
in part, except for the cost of reproduction.  No part of 
this package may be used for commercial purposes or as 
part of third party software (commercial or public), 
without written permission from the author.
 
************************************************************
 
ACKNOWLEDGEMENTS:
 
Special Thanks to Conan J. Fee whose XPNDR program 
inspired me to finish writing XMENU.  Also, thanks to 
Detlef Muller for his participation in writing XPNDR.
 
************************************************************
 
The expanded menu program displays a menu using as many as 
four rows at a time with the top four rows of keys 
corresponding to each row of menu labels.  This will 
normally be enough to display all rows of a built-in menu.  
If a menu contains more than four rows, a scroll indicator 
will be displayed in the status area.  Pressing ENTER will 
advance the menu screen one page.  Likewise, [ORANGE]-
ENTER will decrement the menu screen one page.
 
Pressing a key in the top four rows that corresponds to a 
menu label will immediately evaluate that menu item.  
Pressing any non-menu key will cause the 48 to beep.  
Pressing [ON] exits XMENU.
 
Menu tree structures are supported.  When a menu key 
creates a different menu, it is nested below the parent 
menu.  Pressing [+/] will exit the sub-menu and restore 
the calling parent menu.  Likewise, pressing [BLUE]-[+/-] 
will exit all sub-menus and restore the top most menu.
 
Because the VAR menu is unique in the fact that the 
contents of the menu can change by moving into a sub-
directory, but the menu definition doesn't actually 
change, UPDIR has been assigned to [ORANGE]-[+/-].
 
In addition to the menu display, XMENU also displays as 
many line of the stack as possible using the medium font 
size.  A total of six lines are used for both the menu and 
stack.  If the menu only uses two lines, four will be used 
for the stack.
 
Most menus are defined by a list or a program that 
generates a list.  This data list is used by the built-in 
menu commands to load the touch table (menu key bindings).  
But several menus, like the VAR menu, are defined by a 
list.  Instead, they load the touch table themselves, on 
the fly.  Because it is difficult to determine how many 
display lines will be needed for these menus, XMENU always 
allocates four.  The only built-in menus that are forced 
to four display lines are VAR, LIBRARY, PORT0, PORT1, 
PORT2, and any library menu.
 
The following criteria was used when writing this program
 
1) Self contained
        XMENU had to be a self standing program, not a library 
        or a directory.
 
2) Minimal amount of time writing
        I don't really have much free time so I tried to keep 
        it simply.  Very little time was spend trying to pack 
        the code.  I did try to document it enough so someone 
        who is familiar with RPL can follow it though.
 
************************************************************
 
Bug reports, comments, or questions can be sent to..
 
        Before 2-01-92  brian_maguire@mts.cc.wayne.edu
        After  2-01-92  brian@sparcom.com
 
************************************************************

XMENU.UUE
UUENCODER by Theodore A. Kaldis
BEGIN--cut here--CUT HERE--
begin 644 xmenu.bin
M2%!(4#0X+46=+>"A&+R)X^4$G2UPZ0:=+4"*08YO$"%BV!K6V0)[5N#@`RM`
M<.\#FP_VW@,70*!+8BLQT-D"1#)P`00K,5!B82LQ<.D&G2U02CFD&+2%070J
M`-,T,$VS$@/0=*"Q/XYO<#YAMC0F+`.D&'2Y`^@8UMD"#A3V2@4%$T:08C@4
M1I!B650`8&%\%.;X!BLQL/E@6QATN0,L&H9#84@8M!(#%T"0_P/I54"3+W0J
M`-,T,$T#TS0P30/3-#!-`],T*S$`30=\%.;X!OD_@(1!EV[0V0)-,8'R.)R5
M$_0XG2T@0$*3&59*.:U`H)47*T#`16'@/;`]!R%R@'T63#'@X`,A<D#.`RIQ
MT-D"(7(P&F%X63$9!2LQD`0$7!0&W@.0-Y9"$C1S,$LY*S$P]SB=+2!`0I,9
MED\Y@3H`7V%;&%1A85P4MCT'YQ/&FV&=+1"1`FX`$)$"6`#@OF022[8,!.\_
M4`,$SG,0(@=!2D"0031SL!(#12918Q+O/U`#!%P4!MX#(7+`VP-T)I9G$5L8
MI%EB'*>SA4%./<";89TM`*P#\!56$E$K,4`S!S@4AH1!+"IP``!8.!1F*V*\
M&=;9`BPJ<```D)-1L!(#YQ/&FV&=+<"B`@<`\#@9!2LQ4!<$84&@N&0REH,!
M.2LQ0!0Y*S%PZ0:=+8`8`PU`,-@#'QDFX3\C,M`4!-,8UMD"#"&V$@-_03"-
M89TMP!!B*S'`L633&-;9`HDBQEECEV[0V0*(!Q2H`^`5MA(#@3JP$@/I0#"-
M89TMD/\#&__3V0*(!_0-!.>ILQ(#`T"P\3^=+8!X0!$I@/[_YZFS$@--.18A
M.X$ZL!(#\T`PC6&=+9#_`QO_T]D"B`?D0&&O5("*8=']X^0#K`^&`$%\%.;X
M!EE4`&!A*S$P``0;_]/9`H@']!8:*S'0E&.=+8!X0`X4]J9C]Q@6W3_I50!@
M8:]4X.0#;C*``$$K,1"H`RLQ@!@#Z4`PV`,?&2;A/PX^L`($]SXPA%&1)H9#
M88`3QML#B#&`A$'&$+2%03H]UMD"2!B$)0,2_K,2`PPGQD9A#4!01`6!.K`2
M`^V[`*P#,S5VZ0:V$U858V2*0Q0YS^*TKCB7=$"*05L8M!(#N$YPMSB0BX,`
.0>BAHPP31)%32CDK,0``
`
end
size 869
END--cut here--CUT HERE--
Newsgroups: comp.sys.handhelds