Home » Archimedes archive » Acorn User » AU 1995-03.adf » !StarInfo_StarInfo » Bagnall/QT+/!QuickType/Libraries/Menus
Bagnall/QT+/!QuickType/Libraries/Menus
This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.
Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.
Tape/disk: | Home » Archimedes archive » Acorn User » AU 1995-03.adf » !StarInfo_StarInfo |
Filename: | Bagnall/QT+/!QuickType/Libraries/Menus |
Read OK: | ✔ |
File size: | 0BB0 bytes |
Load address: | 0000 |
Exec address: | 0000 |
File contents
1REM menu - Menu creation and linking code. 2REM Supports 3REM PROC createmenu - creates a single depth menu 4REM PROC link - links a submenu onto a menu 5REM PROC tick - ticks an option in a menu 6REM PROC Grey - greys out an option in a menu 7 8REM Requires menu%(X) array 9REM Places pointer in (X) 10REM Also needs ws% memory block for indirected data 11REM eg call. PROCcreatemenu("Yes,No,Maybe_g,Quit",3) 12REM defines menu#3, "Maybe" will be greyed out 13REM other _controls are t=ticked 14REM u=underlined 15REM w=writeable 16REM a=generate message 17REM g=greyed 18REM 19REM *********************************************************** 20 21DEFPROCmenu_CreateMenu(a$,a%) 22LOCAL b$,men%,width%,entry$,mode$ 23men%=menuspc% 24menu%(a%)=men% 25b$=FNmenu_precomma(a$):$(menuspc%)=b$ 26menuspc%?12=7 27menuspc%?13=2 28menuspc%?14=7 29menuspc%?15=0 30menuspc%!20=44 31menuspc%!24=0 32menuspc%+=28 33width%=LENb$ 34REPEAT 35 IF INSTR(a$,",") THEN !menuspc%=0 ELSE !menuspc%=&80 36 menuspc%!4=-1 37 menuspc%!8=&07000021 38 entry$=FNmenu_precomma(a$) 39 IF INSTR(entry$,"_") THEN 40 mode$=RIGHT$(entry$,LEN(entry$)-INSTR(entry$,"_")) 41 entry$=LEFT$(entry$,INSTR(entry$,"_")-1) 42 ELSE 43 mode$="" 44 ENDIF 45 IF INSTR(mode$,"t") THEN !menuspc%=!menuspc% OR 1 46 IF INSTR(mode$,"u") THEN !menuspc%=!menuspc% OR 2 47 IF INSTR(mode$,"w") THEN !menuspc%=!menuspc% OR 4 48 IF INSTR(mode$,"a") THEN !menuspc%=!menuspc% OR 8 49 IF INSTR(mode$,"g") THEN menuspc%!8=menuspc%!8 OR &400000 50 IF LENentry$<13 THEN 51 $(menuspc%+12)=entry$ 52 ELSE 53 !(menuspc%+12)=ws%:$(ws%)=entry$+CHR$13:ws%+=LENentry$+1 54 !(menuspc%+16)=0 55 !(menuspc%+20)=LENentry$+1 56 !(menuspc%+8)=!(menuspc%+8) OR 256 57 ENDIF 58 IF width%<LEN(entry$) THEN width%=LEN(entry$) 59 menuspc%+=24 60UNTIL a$="" 61men%!16=width%*16+10 62ENDPROC 63 64DEFPROCmenu_Link(menu%,item$,submenu%) 65LOCAL ptr%,mitem$ 66ptr%=menu%+4 67REPEAT 68 ptr%+=24 69 IF (!(ptr%+8) AND &100)=0 THEN 70 mitem$=$(ptr%+12) 71 ELSE 72 mitem$=$(ptr%!12) 73 ENDIF 74UNTIL (mitem$=item$) OR (?ptr% AND &80)=&80 75IF mitem$=item$ THEN ptr%!4=submenu% 76ENDPROC 77 78DEFPROCmenu_Tick(menu%,item$,eff%) 79LOCAL ptr%,mitem$ 80ptr%=menu%+4 81REPEAT 82 ptr%+=24 83 IF (!(ptr%+8) AND &100)=0 THEN 84 mitem$=$(ptr%+12) 85 ELSE 86 mitem$=$(ptr%!12) 87 ENDIF 88UNTIL (mitem$=item$) OR (?ptr% AND &80)=&80 89IF mitem$=item$ THEN 90 CASE eff% OF 91 WHEN 0 : ?ptr%=?ptr% AND &FE 92 WHEN 1 : ?ptr%=?ptr% OR &01 93 WHEN -1 : ?ptr%=?ptr% EOR &01 94 ENDCASE 95ENDIF 96ENDPROC 97 98DEFPROCmenu_Grey(menu%,item$,eff%) 99LOCAL ptr%,mitem$ 100ptr%=menu%+4 101REPEAT 102 ptr%+=24 103 IF (!(ptr%+8) AND &100)=0 THEN 104 mitem$=$(ptr%+12) 105 ELSE 106 mitem$=$(ptr%!12) 107 ENDIF 108UNTIL (mitem$=item$) OR (?ptr% AND &80)=&80 109IF mitem$=item$ THEN 110 CASE eff% OF 111 WHEN 0 : ptr%!8=ptr%!8 AND NOT(&400000) 112 WHEN 1 : ptr%!8=ptr%!8 OR &400000 113 WHEN -1 : ptr%!8=ptr%!8 EOR &400000 114 ENDCASE 115ENDIF 116ENDPROC 117 118DEFFNmenu_precomma(RETURN a$) 119LOCAL b$ 120IF INSTR(a$,",") THEN 121 b$=LEFT$(a$,INSTR(a$,",")-1) 122 a$=RIGHT$(a$,LEN(a$)-INSTR(a$,",")) 123 ELSE 124 b$=a$ 125 a$="" 126ENDIF 127=b$
,� menu - Menu creation and linking code. � Supports 5� PROC createmenu - creates a single depth menu /� PROC link - links a submenu onto a menu -� PROC tick - ticks an option in a menu 1� PROC Grey - greys out an option in a menu � Requires menu%(X) array � Places pointer in (X) 5� Also needs ws% memory block for indirected data 6� eg call. PROCcreatemenu("Yes,No,Maybe_g,Quit",3) 0� defines menu#3, "Maybe" will be greyed out "� other _controls are t=ticked &� u=underlined %� w=writeable ,� a=generate message "� g=greyed � A� *********************************************************** ��menu_CreateMenu(a$,a%) !� b$,men%,width%,entry$,mode$ men%=menuspc% menu%(a%)=men% (b$=�menu_precomma(a$):$(menuspc%)=b$ menuspc%?12=7 menuspc%?13=2 menuspc%?14=7 menuspc%?15=0 menuspc%!20=44 menuspc%!24=0 menuspc%+=28 !width%=�b$ "� #. � �a$,",") � !menuspc%=0 � !menuspc%=&80 $ menuspc%!4=-1 % menuspc%!8=&07000021 & entry$=�menu_precomma(a$) ' � �entry$,"_") � (- mode$=�entry$,�(entry$)-�entry$,"_")) )& entry$=�entry$,�entry$,"_")-1) * � + mode$="" , � -- � �mode$,"t") � !menuspc%=!menuspc% � 1 .- � �mode$,"u") � !menuspc%=!menuspc% � 2 /- � �mode$,"w") � !menuspc%=!menuspc% � 4 0- � �mode$,"a") � !menuspc%=!menuspc% � 8 15 � �mode$,"g") � menuspc%!8=menuspc%!8 � &400000 2 � �entry$<13 � 3 $(menuspc%+12)=entry$ 4 � 5; !(menuspc%+12)=ws%:$(ws%)=entry$+�13:ws%+=�entry$+1 6 !(menuspc%+16)=0 7 !(menuspc%+20)=�entry$+1 8) !(menuspc%+8)=!(menuspc%+8) � 256 9 � :+ � width%<�(entry$) � width%=�(entry$) ; menuspc%+=24 <� a$="" =men%!16=width%*16+10 >� ? @%��menu_Link(menu%,item$,submenu%) A� ptr%,mitem$ Bptr%=menu%+4 C� D ptr%+=24 E � (!(ptr%+8) � &100)=0 � F mitem$=$(ptr%+12) G � H mitem$=$(ptr%!12) I � J(� (mitem$=item$) � (?ptr% � &80)=&80 K$� mitem$=item$ � ptr%!4=submenu% L� M N!��menu_Tick(menu%,item$,eff%) O� ptr%,mitem$ Pptr%=menu%+4 Q� R ptr%+=24 S � (!(ptr%+8) � &100)=0 � T mitem$=$(ptr%+12) U � V mitem$=$(ptr%!12) W � X(� (mitem$=item$) � (?ptr% � &80)=&80 Y� mitem$=item$ � Z Ȏ eff% � [ � 0 : ?ptr%=?ptr% � &FE \ � 1 : ?ptr%=?ptr% � &01 ] � -1 : ?ptr%=?ptr% � &01 ^ � _� `� a b!��menu_Grey(menu%,item$,eff%) c� ptr%,mitem$ dptr%=menu%+4 e� f ptr%+=24 g � (!(ptr%+8) � &100)=0 � h mitem$=$(ptr%+12) i � j mitem$=$(ptr%!12) k � l(� (mitem$=item$) � (?ptr% � &80)=&80 m� mitem$=item$ � n Ȏ eff% � o( � 0 : ptr%!8=ptr%!8 � �(&400000) p& � 1 : ptr%!8=ptr%!8 � &400000 q% � -1 : ptr%!8=ptr%!8 � &400000 r � s� t� u vݤmenu_precomma(� a$) w� b$ x� �a$,",") � y b$=�a$,�a$,",")-1) z a$=�a$,�(a$)-�a$,",")) { � | b$=a$ } a$="" ~� =b$ �
00000000 0d 00 01 2c f4 20 6d 65 6e 75 20 2d 20 4d 65 6e |...,. menu - Men| 00000010 75 20 63 72 65 61 74 69 6f 6e 20 61 6e 64 20 6c |u creation and l| 00000020 69 6e 6b 69 6e 67 20 63 6f 64 65 2e 0d 00 02 0e |inking code.....| 00000030 f4 20 53 75 70 70 6f 72 74 73 0d 00 03 35 f4 20 |. Supports...5. | 00000040 20 20 50 52 4f 43 20 63 72 65 61 74 65 6d 65 6e | PROC createmen| 00000050 75 20 2d 20 63 72 65 61 74 65 73 20 61 20 73 69 |u - creates a si| 00000060 6e 67 6c 65 20 64 65 70 74 68 20 6d 65 6e 75 0d |ngle depth menu.| 00000070 00 04 2f f4 20 20 20 50 52 4f 43 20 6c 69 6e 6b |../. PROC link| 00000080 20 2d 20 6c 69 6e 6b 73 20 61 20 73 75 62 6d 65 | - links a subme| 00000090 6e 75 20 6f 6e 74 6f 20 61 20 6d 65 6e 75 0d 00 |nu onto a menu..| 000000a0 05 2d f4 20 20 20 50 52 4f 43 20 74 69 63 6b 20 |.-. PROC tick | 000000b0 2d 20 74 69 63 6b 73 20 61 6e 20 6f 70 74 69 6f |- ticks an optio| 000000c0 6e 20 69 6e 20 61 20 6d 65 6e 75 0d 00 06 31 f4 |n in a menu...1.| 000000d0 20 20 20 50 52 4f 43 20 47 72 65 79 20 2d 20 67 | PROC Grey - g| 000000e0 72 65 79 73 20 6f 75 74 20 61 6e 20 6f 70 74 69 |reys out an opti| 000000f0 6f 6e 20 69 6e 20 61 20 6d 65 6e 75 0d 00 07 04 |on in a menu....| 00000100 0d 00 08 1d f4 20 52 65 71 75 69 72 65 73 20 6d |..... Requires m| 00000110 65 6e 75 25 28 58 29 20 61 72 72 61 79 0d 00 09 |enu%(X) array...| 00000120 1b f4 20 50 6c 61 63 65 73 20 70 6f 69 6e 74 65 |.. Places pointe| 00000130 72 20 69 6e 20 28 58 29 0d 00 0a 35 f4 20 41 6c |r in (X)...5. Al| 00000140 73 6f 20 6e 65 65 64 73 20 77 73 25 20 6d 65 6d |so needs ws% mem| 00000150 6f 72 79 20 62 6c 6f 63 6b 20 66 6f 72 20 69 6e |ory block for in| 00000160 64 69 72 65 63 74 65 64 20 64 61 74 61 0d 00 0b |directed data...| 00000170 36 f4 20 65 67 20 63 61 6c 6c 2e 20 50 52 4f 43 |6. eg call. PROC| 00000180 63 72 65 61 74 65 6d 65 6e 75 28 22 59 65 73 2c |createmenu("Yes,| 00000190 4e 6f 2c 4d 61 79 62 65 5f 67 2c 51 75 69 74 22 |No,Maybe_g,Quit"| 000001a0 2c 33 29 0d 00 0c 30 f4 20 64 65 66 69 6e 65 73 |,3)...0. defines| 000001b0 20 6d 65 6e 75 23 33 2c 20 22 4d 61 79 62 65 22 | menu#3, "Maybe"| 000001c0 20 77 69 6c 6c 20 62 65 20 67 72 65 79 65 64 20 | will be greyed | 000001d0 6f 75 74 0d 00 0d 22 f4 20 6f 74 68 65 72 20 5f |out...". other _| 000001e0 63 6f 6e 74 72 6f 6c 73 20 61 72 65 20 74 3d 74 |controls are t=t| 000001f0 69 63 6b 65 64 0d 00 0e 26 f4 20 20 20 20 20 20 |icked...&. | 00000200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 | u| 00000210 3d 75 6e 64 65 72 6c 69 6e 65 64 0d 00 0f 25 f4 |=underlined...%.| 00000220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00000230 20 20 20 20 20 77 3d 77 72 69 74 65 61 62 6c 65 | w=writeable| 00000240 0d 00 10 2c f4 20 20 20 20 20 20 20 20 20 20 20 |...,. | 00000250 20 20 20 20 20 20 20 20 20 20 61 3d 67 65 6e 65 | a=gene| 00000260 72 61 74 65 20 6d 65 73 73 61 67 65 0d 00 11 22 |rate message..."| 00000270 f4 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |. | 00000280 20 20 20 20 20 20 67 3d 67 72 65 79 65 64 0d 00 | g=greyed..| 00000290 12 05 f4 0d 00 13 41 f4 20 2a 2a 2a 2a 2a 2a 2a |......A. *******| 000002a0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 000002d0 2a 2a 2a 2a 0d 00 14 04 0d 00 15 1c dd f2 6d 65 |****..........me| 000002e0 6e 75 5f 43 72 65 61 74 65 4d 65 6e 75 28 61 24 |nu_CreateMenu(a$| 000002f0 2c 61 25 29 0d 00 16 21 ea 20 62 24 2c 6d 65 6e |,a%)...!. b$,men| 00000300 25 2c 77 69 64 74 68 25 2c 65 6e 74 72 79 24 2c |%,width%,entry$,| 00000310 6d 6f 64 65 24 0d 00 17 11 6d 65 6e 25 3d 6d 65 |mode$....men%=me| 00000320 6e 75 73 70 63 25 0d 00 18 12 6d 65 6e 75 25 28 |nuspc%....menu%(| 00000330 61 25 29 3d 6d 65 6e 25 0d 00 19 28 62 24 3d a4 |a%)=men%...(b$=.| 00000340 6d 65 6e 75 5f 70 72 65 63 6f 6d 6d 61 28 61 24 |menu_precomma(a$| 00000350 29 3a 24 28 6d 65 6e 75 73 70 63 25 29 3d 62 24 |):$(menuspc%)=b$| 00000360 0d 00 1a 11 6d 65 6e 75 73 70 63 25 3f 31 32 3d |....menuspc%?12=| 00000370 37 0d 00 1b 11 6d 65 6e 75 73 70 63 25 3f 31 33 |7....menuspc%?13| 00000380 3d 32 0d 00 1c 11 6d 65 6e 75 73 70 63 25 3f 31 |=2....menuspc%?1| 00000390 34 3d 37 0d 00 1d 11 6d 65 6e 75 73 70 63 25 3f |4=7....menuspc%?| 000003a0 31 35 3d 30 0d 00 1e 12 6d 65 6e 75 73 70 63 25 |15=0....menuspc%| 000003b0 21 32 30 3d 34 34 0d 00 1f 11 6d 65 6e 75 73 70 |!20=44....menusp| 000003c0 63 25 21 32 34 3d 30 0d 00 20 10 6d 65 6e 75 73 |c%!24=0.. .menus| 000003d0 70 63 25 2b 3d 32 38 0d 00 21 0e 77 69 64 74 68 |pc%+=28..!.width| 000003e0 25 3d a9 62 24 0d 00 22 05 f5 0d 00 23 2e 20 20 |%=.b$.."....#. | 000003f0 e7 20 a7 61 24 2c 22 2c 22 29 20 8c 20 21 6d 65 |. .a$,",") . !me| 00000400 6e 75 73 70 63 25 3d 30 20 8b 20 21 6d 65 6e 75 |nuspc%=0 . !menu| 00000410 73 70 63 25 3d 26 38 30 0d 00 24 13 20 20 6d 65 |spc%=&80..$. me| 00000420 6e 75 73 70 63 25 21 34 3d 2d 31 0d 00 25 1a 20 |nuspc%!4=-1..%. | 00000430 20 6d 65 6e 75 73 70 63 25 21 38 3d 26 30 37 30 | menuspc%!8=&070| 00000440 30 30 30 32 31 0d 00 26 1f 20 20 65 6e 74 72 79 |00021..&. entry| 00000450 24 3d a4 6d 65 6e 75 5f 70 72 65 63 6f 6d 6d 61 |$=.menu_precomma| 00000460 28 61 24 29 0d 00 27 16 20 20 e7 20 a7 65 6e 74 |(a$)..'. . .ent| 00000470 72 79 24 2c 22 5f 22 29 20 8c 0d 00 28 2d 20 20 |ry$,"_") ...(- | 00000480 20 20 6d 6f 64 65 24 3d c2 65 6e 74 72 79 24 2c | mode$=.entry$,| 00000490 a9 28 65 6e 74 72 79 24 29 2d a7 65 6e 74 72 79 |.(entry$)-.entry| 000004a0 24 2c 22 5f 22 29 29 0d 00 29 26 20 20 20 20 65 |$,"_"))..)& e| 000004b0 6e 74 72 79 24 3d c0 65 6e 74 72 79 24 2c a7 65 |ntry$=.entry$,.e| 000004c0 6e 74 72 79 24 2c 22 5f 22 29 2d 31 29 0d 00 2a |ntry$,"_")-1)..*| 000004d0 08 20 20 20 cc 0d 00 2b 10 20 20 20 20 6d 6f 64 |. ...+. mod| 000004e0 65 24 3d 22 22 0d 00 2c 07 20 20 cd 0d 00 2d 2d |e$=""..,. ...--| 000004f0 20 20 e7 20 a7 6d 6f 64 65 24 2c 22 74 22 29 20 | . .mode$,"t") | 00000500 8c 20 21 6d 65 6e 75 73 70 63 25 3d 21 6d 65 6e |. !menuspc%=!men| 00000510 75 73 70 63 25 20 84 20 31 0d 00 2e 2d 20 20 e7 |uspc% . 1...- .| 00000520 20 a7 6d 6f 64 65 24 2c 22 75 22 29 20 8c 20 21 | .mode$,"u") . !| 00000530 6d 65 6e 75 73 70 63 25 3d 21 6d 65 6e 75 73 70 |menuspc%=!menusp| 00000540 63 25 20 84 20 32 0d 00 2f 2d 20 20 e7 20 a7 6d |c% . 2../- . .m| 00000550 6f 64 65 24 2c 22 77 22 29 20 8c 20 21 6d 65 6e |ode$,"w") . !men| 00000560 75 73 70 63 25 3d 21 6d 65 6e 75 73 70 63 25 20 |uspc%=!menuspc% | 00000570 84 20 34 0d 00 30 2d 20 20 e7 20 a7 6d 6f 64 65 |. 4..0- . .mode| 00000580 24 2c 22 61 22 29 20 8c 20 21 6d 65 6e 75 73 70 |$,"a") . !menusp| 00000590 63 25 3d 21 6d 65 6e 75 73 70 63 25 20 84 20 38 |c%=!menuspc% . 8| 000005a0 0d 00 31 35 20 20 e7 20 a7 6d 6f 64 65 24 2c 22 |..15 . .mode$,"| 000005b0 67 22 29 20 8c 20 6d 65 6e 75 73 70 63 25 21 38 |g") . menuspc%!8| 000005c0 3d 6d 65 6e 75 73 70 63 25 21 38 20 84 20 26 34 |=menuspc%!8 . &4| 000005d0 30 30 30 30 30 0d 00 32 14 20 20 e7 20 a9 65 6e |00000..2. . .en| 000005e0 74 72 79 24 3c 31 33 20 8c 0d 00 33 1d 20 20 20 |try$<13 ...3. | 000005f0 20 24 28 6d 65 6e 75 73 70 63 25 2b 31 32 29 3d | $(menuspc%+12)=| 00000600 65 6e 74 72 79 24 0d 00 34 08 20 20 20 cc 0d 00 |entry$..4. ...| 00000610 35 3b 20 20 20 20 21 28 6d 65 6e 75 73 70 63 25 |5; !(menuspc%| 00000620 2b 31 32 29 3d 77 73 25 3a 24 28 77 73 25 29 3d |+12)=ws%:$(ws%)=| 00000630 65 6e 74 72 79 24 2b bd 31 33 3a 77 73 25 2b 3d |entry$+.13:ws%+=| 00000640 a9 65 6e 74 72 79 24 2b 31 0d 00 36 18 20 20 20 |.entry$+1..6. | 00000650 20 21 28 6d 65 6e 75 73 70 63 25 2b 31 36 29 3d | !(menuspc%+16)=| 00000660 30 0d 00 37 20 20 20 20 20 21 28 6d 65 6e 75 73 |0..7 !(menus| 00000670 70 63 25 2b 32 30 29 3d a9 65 6e 74 72 79 24 2b |pc%+20)=.entry$+| 00000680 31 0d 00 38 29 20 20 20 20 21 28 6d 65 6e 75 73 |1..8) !(menus| 00000690 70 63 25 2b 38 29 3d 21 28 6d 65 6e 75 73 70 63 |pc%+8)=!(menuspc| 000006a0 25 2b 38 29 20 84 20 32 35 36 0d 00 39 08 20 20 |%+8) . 256..9. | 000006b0 20 cd 0d 00 3a 2b 20 20 e7 20 77 69 64 74 68 25 | ...:+ . width%| 000006c0 3c a9 28 65 6e 74 72 79 24 29 20 8c 20 77 69 64 |<.(entry$) . wid| 000006d0 74 68 25 3d a9 28 65 6e 74 72 79 24 29 0d 00 3b |th%=.(entry$)..;| 000006e0 12 20 20 6d 65 6e 75 73 70 63 25 2b 3d 32 34 0d |. menuspc%+=24.| 000006f0 00 3c 0b fd 20 61 24 3d 22 22 0d 00 3d 18 6d 65 |.<.. a$=""..=.me| 00000700 6e 25 21 31 36 3d 77 69 64 74 68 25 2a 31 36 2b |n%!16=width%*16+| 00000710 31 30 0d 00 3e 05 e1 0d 00 3f 04 0d 00 40 25 dd |10..>....?...@%.| 00000720 f2 6d 65 6e 75 5f 4c 69 6e 6b 28 6d 65 6e 75 25 |.menu_Link(menu%| 00000730 2c 69 74 65 6d 24 2c 73 75 62 6d 65 6e 75 25 29 |,item$,submenu%)| 00000740 0d 00 41 11 ea 20 70 74 72 25 2c 6d 69 74 65 6d |..A.. ptr%,mitem| 00000750 24 0d 00 42 10 70 74 72 25 3d 6d 65 6e 75 25 2b |$..B.ptr%=menu%+| 00000760 34 0d 00 43 05 f5 0d 00 44 0e 20 20 70 74 72 25 |4..C....D. ptr%| 00000770 2b 3d 32 34 0d 00 45 1e 20 20 e7 20 28 21 28 70 |+=24..E. . (!(p| 00000780 74 72 25 2b 38 29 20 80 20 26 31 30 30 29 3d 30 |tr%+8) . &100)=0| 00000790 20 8c 0d 00 46 19 20 20 20 20 6d 69 74 65 6d 24 | ...F. mitem$| 000007a0 3d 24 28 70 74 72 25 2b 31 32 29 0d 00 47 08 20 |=$(ptr%+12)..G. | 000007b0 20 20 cc 0d 00 48 19 20 20 20 20 6d 69 74 65 6d | ...H. mitem| 000007c0 24 3d 24 28 70 74 72 25 21 31 32 29 0d 00 49 07 |$=$(ptr%!12)..I.| 000007d0 20 20 cd 0d 00 4a 28 fd 20 28 6d 69 74 65 6d 24 | ...J(. (mitem$| 000007e0 3d 69 74 65 6d 24 29 20 84 20 28 3f 70 74 72 25 |=item$) . (?ptr%| 000007f0 20 80 20 26 38 30 29 3d 26 38 30 0d 00 4b 24 e7 | . &80)=&80..K$.| 00000800 20 6d 69 74 65 6d 24 3d 69 74 65 6d 24 20 8c 20 | mitem$=item$ . | 00000810 70 74 72 25 21 34 3d 73 75 62 6d 65 6e 75 25 0d |ptr%!4=submenu%.| 00000820 00 4c 05 e1 0d 00 4d 04 0d 00 4e 21 dd f2 6d 65 |.L....M...N!..me| 00000830 6e 75 5f 54 69 63 6b 28 6d 65 6e 75 25 2c 69 74 |nu_Tick(menu%,it| 00000840 65 6d 24 2c 65 66 66 25 29 0d 00 4f 11 ea 20 70 |em$,eff%)..O.. p| 00000850 74 72 25 2c 6d 69 74 65 6d 24 0d 00 50 10 70 74 |tr%,mitem$..P.pt| 00000860 72 25 3d 6d 65 6e 75 25 2b 34 0d 00 51 05 f5 0d |r%=menu%+4..Q...| 00000870 00 52 0e 20 20 70 74 72 25 2b 3d 32 34 0d 00 53 |.R. ptr%+=24..S| 00000880 1e 20 20 e7 20 28 21 28 70 74 72 25 2b 38 29 20 |. . (!(ptr%+8) | 00000890 80 20 26 31 30 30 29 3d 30 20 8c 0d 00 54 19 20 |. &100)=0 ...T. | 000008a0 20 20 20 6d 69 74 65 6d 24 3d 24 28 70 74 72 25 | mitem$=$(ptr%| 000008b0 2b 31 32 29 0d 00 55 08 20 20 20 cc 0d 00 56 19 |+12)..U. ...V.| 000008c0 20 20 20 20 6d 69 74 65 6d 24 3d 24 28 70 74 72 | mitem$=$(ptr| 000008d0 25 21 31 32 29 0d 00 57 07 20 20 cd 0d 00 58 28 |%!12)..W. ...X(| 000008e0 fd 20 28 6d 69 74 65 6d 24 3d 69 74 65 6d 24 29 |. (mitem$=item$)| 000008f0 20 84 20 28 3f 70 74 72 25 20 80 20 26 38 30 29 | . (?ptr% . &80)| 00000900 3d 26 38 30 0d 00 59 14 e7 20 6d 69 74 65 6d 24 |=&80..Y.. mitem$| 00000910 3d 69 74 65 6d 24 20 8c 0d 00 5a 0f 20 20 c8 8e |=item$ ...Z. ..| 00000920 20 65 66 66 25 20 ca 0d 00 5b 1f 20 20 20 c9 20 | eff% ...[. . | 00000930 20 30 20 3a 20 3f 70 74 72 25 3d 3f 70 74 72 25 | 0 : ?ptr%=?ptr%| 00000940 20 80 20 26 46 45 0d 00 5c 20 20 20 20 c9 20 20 | . &FE..\ . | 00000950 31 20 3a 20 3f 70 74 72 25 3d 3f 70 74 72 25 20 |1 : ?ptr%=?ptr% | 00000960 84 20 20 26 30 31 0d 00 5d 1f 20 20 20 c9 20 2d |. &01..]. . -| 00000970 31 20 3a 20 3f 70 74 72 25 3d 3f 70 74 72 25 20 |1 : ?ptr%=?ptr% | 00000980 82 20 26 30 31 0d 00 5e 07 20 20 cb 0d 00 5f 05 |. &01..^. ..._.| 00000990 cd 0d 00 60 05 e1 0d 00 61 04 0d 00 62 21 dd f2 |...`....a...b!..| 000009a0 6d 65 6e 75 5f 47 72 65 79 28 6d 65 6e 75 25 2c |menu_Grey(menu%,| 000009b0 69 74 65 6d 24 2c 65 66 66 25 29 0d 00 63 11 ea |item$,eff%)..c..| 000009c0 20 70 74 72 25 2c 6d 69 74 65 6d 24 0d 00 64 10 | ptr%,mitem$..d.| 000009d0 70 74 72 25 3d 6d 65 6e 75 25 2b 34 0d 00 65 05 |ptr%=menu%+4..e.| 000009e0 f5 0d 00 66 0e 20 20 70 74 72 25 2b 3d 32 34 0d |...f. ptr%+=24.| 000009f0 00 67 1e 20 20 e7 20 28 21 28 70 74 72 25 2b 38 |.g. . (!(ptr%+8| 00000a00 29 20 80 20 26 31 30 30 29 3d 30 20 8c 0d 00 68 |) . &100)=0 ...h| 00000a10 19 20 20 20 20 6d 69 74 65 6d 24 3d 24 28 70 74 |. mitem$=$(pt| 00000a20 72 25 2b 31 32 29 0d 00 69 08 20 20 20 cc 0d 00 |r%+12)..i. ...| 00000a30 6a 19 20 20 20 20 6d 69 74 65 6d 24 3d 24 28 70 |j. mitem$=$(p| 00000a40 74 72 25 21 31 32 29 0d 00 6b 07 20 20 cd 0d 00 |tr%!12)..k. ...| 00000a50 6c 28 fd 20 28 6d 69 74 65 6d 24 3d 69 74 65 6d |l(. (mitem$=item| 00000a60 24 29 20 84 20 28 3f 70 74 72 25 20 80 20 26 38 |$) . (?ptr% . &8| 00000a70 30 29 3d 26 38 30 0d 00 6d 14 e7 20 6d 69 74 65 |0)=&80..m.. mite| 00000a80 6d 24 3d 69 74 65 6d 24 20 8c 0d 00 6e 0f 20 20 |m$=item$ ...n. | 00000a90 c8 8e 20 65 66 66 25 20 ca 0d 00 6f 28 20 20 20 |.. eff% ...o( | 00000aa0 c9 20 20 30 20 3a 20 70 74 72 25 21 38 3d 70 74 |. 0 : ptr%!8=pt| 00000ab0 72 25 21 38 20 80 20 ac 28 26 34 30 30 30 30 30 |r%!8 . .(&400000| 00000ac0 29 0d 00 70 26 20 20 20 c9 20 20 31 20 3a 20 70 |)..p& . 1 : p| 00000ad0 74 72 25 21 38 3d 70 74 72 25 21 38 20 84 20 20 |tr%!8=ptr%!8 . | 00000ae0 26 34 30 30 30 30 30 0d 00 71 25 20 20 20 c9 20 |&400000..q% . | 00000af0 2d 31 20 3a 20 70 74 72 25 21 38 3d 70 74 72 25 |-1 : ptr%!8=ptr%| 00000b00 21 38 20 82 20 26 34 30 30 30 30 30 0d 00 72 07 |!8 . &400000..r.| 00000b10 20 20 cb 0d 00 73 05 cd 0d 00 74 05 e1 0d 00 75 | ...s....t....u| 00000b20 04 0d 00 76 19 dd a4 6d 65 6e 75 5f 70 72 65 63 |...v...menu_prec| 00000b30 6f 6d 6d 61 28 f8 20 61 24 29 0d 00 77 08 ea 20 |omma(. a$)..w.. | 00000b40 62 24 0d 00 78 10 e7 20 a7 61 24 2c 22 2c 22 29 |b$..x.. .a$,",")| 00000b50 20 8c 0d 00 79 18 20 20 62 24 3d c0 61 24 2c a7 | ...y. b$=.a$,.| 00000b60 61 24 2c 22 2c 22 29 2d 31 29 0d 00 7a 1c 20 20 |a$,",")-1)..z. | 00000b70 61 24 3d c2 61 24 2c a9 28 61 24 29 2d a7 61 24 |a$=.a$,.(a$)-.a$| 00000b80 2c 22 2c 22 29 29 0d 00 7b 06 20 cc 0d 00 7c 0b |,","))..{. ...|.| 00000b90 20 20 62 24 3d 61 24 0d 00 7d 0b 20 20 61 24 3d | b$=a$..}. a$=| 00000ba0 22 22 0d 00 7e 05 cd 0d 00 7f 07 3d 62 24 0d ff |""..~......=b$..| 00000bb0