Home » Archimedes archive » Acorn User » AU 1998-13 (Christmas).adf » Regulars » StarInfo/Granger/Carbon/!CarbonDem/MenuPROCs

StarInfo/Granger/Carbon/!CarbonDem/MenuPROCs

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 1998-13 (Christmas).adf » Regulars
Filename: StarInfo/Granger/Carbon/!CarbonDem/MenuPROCs
Read OK:
File size: 0311 bytes
Load address: 0000
Exec address: 0000
File contents
   10REM Menus
   20REM LEN A.Granger 98
   30END
   40DEFPROCsetupmenu(menu%)
   50READtitle$,num%
   60$menu%=title$:width%=(LEN(title$)-2)*16:menu%!12=&70207:menu%!20=44:menu%!24=0:ptr%=menu%+28
   70FORi%=1 TOnum%
   80READmflags%,subptr%,item$
   90!ptr%=mflags%:ptr%!4=subptr%:ptr%!8=FNmenuflags(1,0,0,0,1,1,0,0,0,0,0,font1%)
  100DIMtext% LEN(item$)+1
  110$(text%)=item$:ptr%!12=text%:ptr%!16=-5:ptr%!20=40:a%=(LEN(item$)+1)*16
  120IFa%>width% THENwidth%=a%
  130ptr%+=24
  140NEXTi%
  150menu%!16=width%
  160ENDPROC
  170DEFFNmenuflags(text%,sp%,bor%,chor%,anti%,ind%,rjust%,half%,shade%,fcol%,bcol%,font%)
  180flag%=text%+(sp%<<1)+(bor%<<2)+(chor%<<3)+(1<<5)+(anti%<<6)+(ind%<<8)+(rjust%<<9)+(half%<<11)+(shade%<<22)
  190IFanti%=0 THENflag%+=(fcol%<<24)+(bcol%<<28) ELSE flag%+=(font%<<24)
  200=flag%
  210DEFPROCshowmenu(menu%,mx%,my%)
  220SYS&400D4,,menu%,mx%,my%
  230ENDPROC

� Menus
� � A.Granger 98
�
(��setupmenu(menu%)
2�title$,num%
<^$menu%=title$:width%=(�(title$)-2)*16:menu%!12=&70207:menu%!20=44:menu%!24=0:ptr%=menu%+28
F�i%=1 �num%
P�mflags%,subptr%,item$
ZP!ptr%=mflags%:ptr%!4=subptr%:ptr%!8=�menuflags(1,0,0,0,1,1,0,0,0,0,0,font1%)
d�text% �(item$)+1
nI$(text%)=item$:ptr%!12=text%:ptr%!16=-5:ptr%!20=40:a%=(�(item$)+1)*16
x�a%>width% �width%=a%
�ptr%+=24
��i%
�menu%!16=width%
��
�Vݤmenuflags(text%,sp%,bor%,chor%,anti%,ind%,rjust%,half%,shade%,fcol%,bcol%,font%)
�nflag%=text%+(sp%<<1)+(bor%<<2)+(chor%<<3)+(1<<5)+(anti%<<6)+(ind%<<8)+(rjust%<<9)+(half%<<11)+(shade%<<22)
�A�anti%=0 �flag%+=(fcol%<<24)+(bcol%<<28) � flag%+=(font%<<24)
�
=flag%
���showmenu(menu%,mx%,my%)
�ș&400D4,,menu%,mx%,my%
��
�
00000000  0d 00 0a 0b f4 20 4d 65  6e 75 73 0d 00 14 14 f4  |..... Menus.....|
00000010  20 a9 20 41 2e 47 72 61  6e 67 65 72 20 39 38 0d  | . A.Granger 98.|
00000020  00 1e 05 e0 0d 00 28 16  dd f2 73 65 74 75 70 6d  |......(...setupm|
00000030  65 6e 75 28 6d 65 6e 75  25 29 0d 00 32 10 f3 74  |enu(menu%)..2..t|
00000040  69 74 6c 65 24 2c 6e 75  6d 25 0d 00 3c 5e 24 6d  |itle$,num%..<^$m|
00000050  65 6e 75 25 3d 74 69 74  6c 65 24 3a 77 69 64 74  |enu%=title$:widt|
00000060  68 25 3d 28 a9 28 74 69  74 6c 65 24 29 2d 32 29  |h%=(.(title$)-2)|
00000070  2a 31 36 3a 6d 65 6e 75  25 21 31 32 3d 26 37 30  |*16:menu%!12=&70|
00000080  32 30 37 3a 6d 65 6e 75  25 21 32 30 3d 34 34 3a  |207:menu%!20=44:|
00000090  6d 65 6e 75 25 21 32 34  3d 30 3a 70 74 72 25 3d  |menu%!24=0:ptr%=|
000000a0  6d 65 6e 75 25 2b 32 38  0d 00 46 0f e3 69 25 3d  |menu%+28..F..i%=|
000000b0  31 20 b8 6e 75 6d 25 0d  00 50 1a f3 6d 66 6c 61  |1 .num%..P..mfla|
000000c0  67 73 25 2c 73 75 62 70  74 72 25 2c 69 74 65 6d  |gs%,subptr%,item|
000000d0  24 0d 00 5a 50 21 70 74  72 25 3d 6d 66 6c 61 67  |$..ZP!ptr%=mflag|
000000e0  73 25 3a 70 74 72 25 21  34 3d 73 75 62 70 74 72  |s%:ptr%!4=subptr|
000000f0  25 3a 70 74 72 25 21 38  3d a4 6d 65 6e 75 66 6c  |%:ptr%!8=.menufl|
00000100  61 67 73 28 31 2c 30 2c  30 2c 30 2c 31 2c 31 2c  |ags(1,0,0,0,1,1,|
00000110  30 2c 30 2c 30 2c 30 2c  30 2c 66 6f 6e 74 31 25  |0,0,0,0,0,font1%|
00000120  29 0d 00 64 15 de 74 65  78 74 25 20 a9 28 69 74  |)..d..text% .(it|
00000130  65 6d 24 29 2b 31 0d 00  6e 49 24 28 74 65 78 74  |em$)+1..nI$(text|
00000140  25 29 3d 69 74 65 6d 24  3a 70 74 72 25 21 31 32  |%)=item$:ptr%!12|
00000150  3d 74 65 78 74 25 3a 70  74 72 25 21 31 36 3d 2d  |=text%:ptr%!16=-|
00000160  35 3a 70 74 72 25 21 32  30 3d 34 30 3a 61 25 3d  |5:ptr%!20=40:a%=|
00000170  28 a9 28 69 74 65 6d 24  29 2b 31 29 2a 31 36 0d  |(.(item$)+1)*16.|
00000180  00 78 19 e7 61 25 3e 77  69 64 74 68 25 20 8c 77  |.x..a%>width% .w|
00000190  69 64 74 68 25 3d 61 25  0d 00 82 0c 70 74 72 25  |idth%=a%....ptr%|
000001a0  2b 3d 32 34 0d 00 8c 07  ed 69 25 0d 00 96 13 6d  |+=24.....i%....m|
000001b0  65 6e 75 25 21 31 36 3d  77 69 64 74 68 25 0d 00  |enu%!16=width%..|
000001c0  a0 05 e1 0d 00 aa 56 dd  a4 6d 65 6e 75 66 6c 61  |......V..menufla|
000001d0  67 73 28 74 65 78 74 25  2c 73 70 25 2c 62 6f 72  |gs(text%,sp%,bor|
000001e0  25 2c 63 68 6f 72 25 2c  61 6e 74 69 25 2c 69 6e  |%,chor%,anti%,in|
000001f0  64 25 2c 72 6a 75 73 74  25 2c 68 61 6c 66 25 2c  |d%,rjust%,half%,|
00000200  73 68 61 64 65 25 2c 66  63 6f 6c 25 2c 62 63 6f  |shade%,fcol%,bco|
00000210  6c 25 2c 66 6f 6e 74 25  29 0d 00 b4 6e 66 6c 61  |l%,font%)...nfla|
00000220  67 25 3d 74 65 78 74 25  2b 28 73 70 25 3c 3c 31  |g%=text%+(sp%<<1|
00000230  29 2b 28 62 6f 72 25 3c  3c 32 29 2b 28 63 68 6f  |)+(bor%<<2)+(cho|
00000240  72 25 3c 3c 33 29 2b 28  31 3c 3c 35 29 2b 28 61  |r%<<3)+(1<<5)+(a|
00000250  6e 74 69 25 3c 3c 36 29  2b 28 69 6e 64 25 3c 3c  |nti%<<6)+(ind%<<|
00000260  38 29 2b 28 72 6a 75 73  74 25 3c 3c 39 29 2b 28  |8)+(rjust%<<9)+(|
00000270  68 61 6c 66 25 3c 3c 31  31 29 2b 28 73 68 61 64  |half%<<11)+(shad|
00000280  65 25 3c 3c 32 32 29 0d  00 be 41 e7 61 6e 74 69  |e%<<22)...A.anti|
00000290  25 3d 30 20 8c 66 6c 61  67 25 2b 3d 28 66 63 6f  |%=0 .flag%+=(fco|
000002a0  6c 25 3c 3c 32 34 29 2b  28 62 63 6f 6c 25 3c 3c  |l%<<24)+(bcol%<<|
000002b0  32 38 29 20 8b 20 66 6c  61 67 25 2b 3d 28 66 6f  |28) . flag%+=(fo|
000002c0  6e 74 25 3c 3c 32 34 29  0d 00 c8 0a 3d 66 6c 61  |nt%<<24)....=fla|
000002d0  67 25 0d 00 d2 1d dd f2  73 68 6f 77 6d 65 6e 75  |g%......showmenu|
000002e0  28 6d 65 6e 75 25 2c 6d  78 25 2c 6d 79 25 29 0d  |(menu%,mx%,my%).|
000002f0  00 dc 1b c8 99 26 34 30  30 44 34 2c 2c 6d 65 6e  |.....&400D4,,men|
00000300  75 25 2c 6d 78 25 2c 6d  79 25 0d 00 e6 05 e1 0d  |u%,mx%,my%......|
00000310  ff                                                |.|
00000311