Home » Archimedes archive » Acorn User » AU 1995-10.adf » !Direct » Director/!Director/Utils/ExpandMenu

Director/!Director/Utils/ExpandMenu

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-10.adf » !Direct
Filename: Director/!Director/Utils/ExpandMenu
Read OK:
File size: 15F3 bytes
Load address: 0000
Exec address: 0000
Duplicates

There is 1 duplicate copy of this file in the archive:

File contents
    1REM >ExpandMenu
    2
    3PROCtaskwindow
    4
    5PRINT "Expand BackMenu file"'
    6PRINT "Shift-Drag files to input their paths if running in a task window"'
    7INPUT " Input  : "f$
    8PRINT '"Press Return for """f$+"<"""'
    9INPUT " Output : "o$:IF o$="" o$=f$+"<"
   10PRINT
   11
   12lf$=CHR$10
   13q$=CHR$34
   14tab$=STRING$(4," ")
   15tab2$=STRING$(8," ")
   16SYS "OS_File",5,f$ TO ,,,,len
   17DIM mem len
   18SYS "OS_File",&FF,f$,mem
   19DIM menu$(256),count(256)
   20menus=0
   21duplicates=FALSE
   22PROCcollate("",0)
   23SYS "OS_CLI","Create "+o$
   24throwback=FALSE
   25IF duplicates THEN
   26 SYS "XOS_SWINumberFromString",,"DDEUtils_ThrowbackStart" TO ;v
   27 throwback=(v AND 1)=0
   28 IF throwback THEN
   29  DIM canon 256
   30  SYS "OS_FSControl",37,o$,canon,,,256
   31  SYS "DDEUtils_ThrowbackStart"
   32  SYS "DDEUtils_ThrowbackSend",0,,canon
   33 ENDIF
   34ENDIF
   35out=OPENOUT(o$)
   36ON ERROR: ON ERROR OFF: PRINT REPORT$;" at ";ERL: CLOSE#out: END
   37out_line=0
   38PROCbput("|Start "+f$+lf$)
   39first_menu=TRUE
   40PROCshow_menu(0)
   41PROCbput(lf$)
   42PROCbput("|End"+lf$)
   43IF throwback SYS "DDEUtils_ThrowbackEnd"
   44ON ERROR OFF
   45CLOSE #out
   46SYS "OS_CLI","SetType "+o$+" Obey"
   47PRINT'"Done"'
   48PRINT "You will probably need to edit the file by hand now to"
   49PRINT "1) Replace %%0 with <MenuText> and %% with % or <37>"
   50PRINT "   in parameterised Menus"
   51PRINT "2) Delete key shortcuts from option texts (-key adds"
   52PRINT "   them for you)"'
   53END
   54:
   55DEF PROCcollate(root$,start)
   56LOCAL ptr,sub(),s,i,name$
   57DIM sub(50)
   58s=0
   59name$=$(mem+start)
   60PROCadd_menu(name$)
   61ptr=mem+start+28
   62REMPRINT MID$(root$+"."+name$,2)
   63REPEAT
   64 last=FNbit(7,!ptr)
   65 IF ptr!4<>-1 s+=1:sub(s)=ptr!4
   66 ptr+=24
   67UNTIL last
   68IF s>0 THEN
   69 FOR i=1 TO s
   70  PROCcollate(root$+"."+name$,sub(i))
   71 NEXT
   72ENDIF
   73ENDPROC
   74:
   75DEF PROCshow_menu(start)
   76LOCAL ptr,a,last,sub(),s,i
   77DIM sub(50)
   78s=0
   79ptr=mem+start
   80name$=$ptr
   81PROCbput(lf$)
   82PROCbput("Menu "+FNquoted(name$))
   83IF first_menu THEN
   84  PROCbput(" Pinboard")
   85  first_menu=FALSE
   86ENDIF
   87PROCbput(lf$)
   88PROCcheck("Duplicated definition of",name$)
   89
   90title_fg=ptr?12
   91title_bg=ptr?13
   92work_fg=ptr?14
   93work_bg=ptr?15
   94width=ptr!16
   95height=ptr!20
   96gap=ptr!24
   97a=ptr+28
   98REPEAT
   99 tick=FNbit(0,!a)
  100 line=FNbit(1,!a)
  101 write=FNbit(2,!a)
  102 last=FNbit(7,!a)
  103 sub=a!4
  104 flags=a!8
  105 text_bg=(flags>>28) AND 15
  106 text_fg=(flags>>24) AND 15
  107 text=mem+a!12
  108 command=mem+a!16+1 : REM all have a &07 at the start!
  109 type=a!20-1
  110 keys=command+LEN$command+1
  111 keys=keys+LEN$keys
  112 keys=(keys+1+3)ANDNOT3
  113 IF sub<>-1 s+=1:sub(s)=sub
  114 PROCbput(tab$+"Option "+FNquoted($text))
  115
  116 IF $command<>"" THEN command1$=FNcom($command) ELSE command1$=""
  117 IF type=0 THEN command2$=FNcom($(command+LEN$command+1)) ELSE command2$=""
  118 IF command2$="" AND LEFT$(command1$,10)="Filer_Run " AND INSTR(command1$,"|M")=0 AND sub=-1 THEN
  119   PROCbput(" -path "+MID$(command1$,11))
  120   command1$=""
  121 ENDIF
  122
  123 IF sub<>-1 THEN
  124  PROCbput(" -sub ")
  125  sub$=$(mem+sub)
  126  IF sub$<>$text PROCbput(FNquoted(sub$)) ELSE PROCbput("*")
  127 ENDIF
  128 IF sub<>-1 PROCcheck("Call to submenu",sub$)
  129
  130 FOR i=0 TO 3
  131  key=keys!(i*4)
  132  IF key<>&FF THEN
  133    IF i=0 THEN
  134      PROCbput(" -key "+FNkey(key))
  135    ELSE
  136      PRINT "Can't assign key ";FNkey(key)
  137    ENDIF
  138  ENDIF
  139 NEXT
  140
  141 IF tick PROCbput(" -tick")
  142 IF text_bg<>0 OR text_fg<>7 PROCbput(" -bg "+STR$text_bg+" -fg "+STR$text_fg)
  143 IF type>0 PROCbput(" -len "+STR$type)
  144 PROCbput(lf$)
  145
  146 IF command1$<>"" THEN PROCbput(tab2$+"Command "+command1$+lf$)
  147 IF command2$<>"" THEN PROCbput(tab2$+"Command "+command2$+lf$)
  148
  149 IF line PROCbput("Dash"+lf$)
  150 a+=24
  151UNTIL last
  152PROCbput("EndMenu"+lf$)
  153IF s>0 THEN
  154 FOR i=1 TO s
  155  PROCshow_menu(sub(i))
  156 NEXT
  157ENDIF
  158ENDPROC
  159:
  160DEF PROCbput(o$)
  161BPUT #out,o$;
  162IF RIGHT$(o$,1)=lf$ out_line+=1
  163ENDPROC
  164:
  165DEF FNquoted(a$)
  166  IF INSTR(a$," ") OR a$="" THEN =""""+a$+""""
  167=a$
  168:
  169DEF FNbit(b,n)
  170=(n AND (1<<b))>0
  171:
  172DEF FNkey(key)
  173 LOCAL m$
  174 m$=""
  175 IF key >= &180 AND key <= &1FF THEN
  176   IF key AND &10 THEN m$+=CHR$139
  177   IF key AND &20 THEN m$+="^"
  178   key = key AND NOT &30
  179 ENDIF
  180 IF key >= ASC"a" AND key <= ASC"z" THEN key = key - 64
  181
  182 CASE key OF
  183   WHEN &01E: =m$+"Home"
  184   WHEN &01D: =m$+"Return"
  185   WHEN &01C: =m$+"Backspace"
  186   WHEN &020: =m$+"Space"
  187   WHEN &07F: =m$+"Delete"
  188   WHEN &01B: =m$+"Esc"
  189   WHEN &180: =m$+"Print"
  190   WHEN &181: =m$+"F1"
  191   WHEN &182: =m$+"F2"
  192   WHEN &183: =m$+"F3"
  193   WHEN &184: =m$+"F4"
  194   WHEN &185: =m$+"F5"
  195   WHEN &186: =m$+"F6"
  196   WHEN &187: =m$+"F7"
  197   WHEN &188: =m$+"F8"
  198   WHEN &189: =m$+"F9"
  199   WHEN &18A: =m$+"Tab"
  200   WHEN &18B: =m$+"Copy"
  201   WHEN &18C: =m$+"Left"
  202   WHEN &18D: =m$+"Right"
  203   WHEN &18E: =m$+"Down"
  204   WHEN &18F: =m$+"Up"
  205   WHEN &1CA: =m$+"F10"
  206   WHEN &1CB: =m$+"F11"
  207   WHEN &1CC: =m$+"F12"
  208   WHEN &1CD: =m$+"Insert"
  209   OTHERWISE:
  210     IF (key >= 33 AND key <= 126) OR (key >= 128 AND key <= 255) THEN
  211       =CHR$(k)
  212     ELSE
  213       IF key >= 0 AND key <= 31
  214         ="^"+CHR$(key + 64)
  215       ENDIF
  216     ENDIF
  217 ENDCASE
  218 PRINT "Unknown key &";~key
  219="�"
  220:
  221DEF FNcom(c$)
  222LOCAL o$,i
  223o$=""
  224REPEAT
  225 i=INSTR(c$,"%")
  226 IF i=0 THEN
  227  o$+=c$
  228 ELSE
  229  o$+=LEFT$(c$,i)+"%"
  230  c$=MID$(c$,i+1)
  231 ENDIF
  232UNTIL i=0
  233=o$
  234:
  235DEF PROCadd_menu(n$)
  236LOCAL i
  237i=0
  238WHILE i<menus AND n$<>menu$(i)
  239 i+=1
  240ENDWHILE
  241IF n$<>menu$(i) menu$(i)=n$:menus+=1 ELSE duplicates=TRUE
  242count(i)+=1
  243ENDPROC
  244:
  245DEF PROCcheck(err$,n$)
  246LOCAL i
  247i=0
  248WHILE i<menus AND menu$(i)<>n$
  249 i+=1
  250ENDWHILE
  251IF count(i)>1 THEN
  252 IF throwback THEN
  253  SYS "DDEUtils_ThrowbackSend",1,,canon,out_line,0,err$+" �"+n$+"�"
  254 ELSE
  255  PRINTerr$+" �"+n$+"� at line ";out_line
  256 ENDIF
  257ENDIF
  258ENDPROC
  259:
  260DEF PROCtaskwindow
  261DIM buf 256
  262SYS "OS_GetEnv" TO env$
  263SYS "XOS_ReadArgs","quit/k,task/S,,,,,",env$,buf,256 TO ;v
  264IF v AND 1 ENDPROC
  265IF !buf<>0 THEN
  266 n$="":i=!buf:WHILE ?i>31:n$+=CHR$?i:i+=1:ENDWHILE
  267 l$="":i=LENn$:WHILE MID$(n$,i,1)<>".":l$=MID$(n$,i,1)+l$:i-=1:ENDWHILE
  268 IF buf!4=0 SYS "OS_CLI","TaskWindow -quit -name "+l$+" ""Run "+n$+" -task"""
  269ENDIF
  270ENDPROC
� >ExpandMenu

�taskwindow

� "Expand BackMenu file"'
J� "Shift-Drag files to input their paths if running in a task window"'
� " Input  : "f$
%� '"Press Return for """f$+"<"""'
	&� " Output : "o$:� o$="" o$=f$+"<"

�

lf$=�10

q$=�34
tab$=�4," ")
tab2$=�8," ")
ș "OS_File",5,f$ � ,,,,len

� mem len
ș "OS_File",&FF,f$,mem
� menu$(256),count(256)
menus=0
duplicates=�
�collate("",0)
ș "OS_CLI","Create "+o$
throwback=�
� duplicates �
A ș "XOS_SWINumberFromString",,"DDEUtils_ThrowbackStart" � ;v
 throwback=(v � 1)=0
 � throwback �
  � canon 256
)  ș "OS_FSControl",37,o$,canon,,,256
"  ș "DDEUtils_ThrowbackStart"
 *  ș "DDEUtils_ThrowbackSend",0,,canon
! �
"�
#
out=�(o$)
$'� �: � � �: � �$;" at ";�: �#out: �
%out_line=0
&�bput("|Start "+f$+lf$)
'first_menu=�
(�show_menu(0)
)�bput(lf$)
*�bput("|End"+lf$)
+*� throwback ș "DDEUtils_ThrowbackEnd"
,	� � �
-
� #out
.%ș "OS_CLI","SetType "+o$+" Obey"
/
�'"Done"'
0>� "You will probably need to edit the file by hand now to"
1<� "1) Replace %%0 with <MenuText> and %% with % or <37>"
2!� "   in parameterised Menus"
3<� "2) Delete key shortcuts from option texts (-key adds"
4� "   them for you)"'
5�
6:
7� �collate(root$,start)
8� ptr,sub(),s,i,name$
9
� sub(50)
:s=0
;name$=$(mem+start)
<�add_menu(name$)
=ptr=mem+start+28
>"�PRINT MID$(root$+"."+name$,2)
?�
@ last=�bit(7,!ptr)
A" � ptr!4<>-1 s+=1:sub(s)=ptr!4
B ptr+=24
C
� last
D� s>0 �
E � i=1 � s
F&  �collate(root$+"."+name$,sub(i))
G �
H�
I�
J:
K� �show_menu(start)
L� ptr,a,last,sub(),s,i
M
� sub(50)
Ns=0
Optr=mem+start
Pname$=$ptr
Q�bput(lf$)
R!�bput("Menu "+�quoted(name$))
S� first_menu �
T  �bput(" Pinboard")
U  first_menu=�
V�
W�bput(lf$)
X,�check("Duplicated definition of",name$)
Y
Ztitle_fg=ptr?12
[title_bg=ptr?13
\work_fg=ptr?14
]work_bg=ptr?15
^width=ptr!16
_height=ptr!20
`gap=ptr!24
aa=ptr+28
b�
c tick=�bit(0,!a)
d line=�bit(1,!a)
e write=�bit(2,!a)
f last=�bit(7,!a)
g sub=a!4
h flags=a!8
i text_bg=(flags>>28) � 15
j text_fg=(flags>>24) � 15
k text=mem+a!12
l8 command=mem+a!16+1 : � all have a &07 at the start!
m type=a!20-1
n keys=command+�$command+1
o keys=keys+�$keys
p keys=(keys+1+3)��3
q � sub<>-1 s+=1:sub(s)=sub
r) �bput(tab$+"Option "+�quoted($text))
s
t= � $command<>"" � command1$=�com($command) � command1$=""
uE � type=0 � command2$=�com($(command+�$command+1)) � command2$=""
vQ � command2$="" � �command1$,10)="Filer_Run " � �command1$,"|M")=0 � sub=-1 �
w&   �bput(" -path "+�command1$,11))
x   command1$=""
y �
z
{ � sub<>-1 �
|  �bput(" -sub ")
}  sub$=$(mem+sub)
~5  � sub$<>$text �bput(�quoted(sub$)) � �bput("*")
 �
�- � sub<>-1 �check("Call to submenu",sub$)
�
� � i=0 � 3
�  key=keys!(i*4)
�  � key<>&FF �
�    � i=0 �
�#      �bput(" -key "+�key(key))
�	    �
�)      � "Can't assign key ";�key(key)
�	    �
�  �
� �
�
� � tick �bput(" -tick")
�G � text_bg<>0 � text_fg<>7 �bput(" -bg "+�text_bg+" -fg "+�text_fg)
�# � type>0 �bput(" -len "+�type)
� �bput(lf$)
�
�< � command1$<>"" � �bput(tab2$+"Command "+command1$+lf$)
�< � command2$<>"" � �bput(tab2$+"Command "+command2$+lf$)
�
� � line �bput("Dash"+lf$)
�
 a+=24
�
� last
��bput("EndMenu"+lf$)
�� s>0 �
� � i=1 � s
�  �show_menu(sub(i))
� �
��
��
�:
�� �bput(o$)
�� #out,o$;
�� �o$,1)=lf$ out_line+=1
��
�:
�� �quoted(a$)
�(  � �a$," ") � a$="" � =""""+a$+""""
�=a$
�:
�� �bit(b,n)
�=(n � (1<<b))>0
�:
�� �key(key)
�	 � m$
�
 m$=""
�" � key >= &180 � key <= &1FF �
�   � key � &10 � m$+=�139
�   � key � &20 � m$+="^"
�   key = key � � &30
� �
�1 � key >= �"a" � key <= �"z" � key = key - 64
�
�
 Ȏ key �
�   � &01E: =m$+"Home"
�   � &01D: =m$+"Return"
�   � &01C: =m$+"Backspace"
�   � &020: =m$+"Space"
�   � &07F: =m$+"Delete"
�   � &01B: =m$+"Esc"
�   � &180: =m$+"Print"
�   � &181: =m$+"F1"
�   � &182: =m$+"F2"
�   � &183: =m$+"F3"
�   � &184: =m$+"F4"
�   � &185: =m$+"F5"
�   � &186: =m$+"F6"
�   � &187: =m$+"F7"
�   � &188: =m$+"F8"
�   � &189: =m$+"F9"
�   � &18A: =m$+"Tab"
�   � &18B: =m$+"Copy"
�   � &18C: =m$+"Left"
�   � &18D: =m$+"Right"
�   � &18E: =m$+"Down"
�   � &18F: =m$+"Up"
�   � &1CA: =m$+"F10"
�   � &1CB: =m$+"F11"
�   � &1CC: =m$+"F12"
�   � &1CD: =m$+"Insert"
�	   :
�A     � (key >= 33 � key <= 126) � (key >= 128 � key <= 255) �
�       =�(k)
�
     �
�!       � key >= 0 � key <= 31
�         ="^"+�(key + 64)
�       �
�
     �
� �
� � "Unknown key &";~key
�="�"
�:
�� �com(c$)
�
� o$,i
�	o$=""
��
� i=�c$,"%")
� � i=0 �
�  o$+=c$
� �
�  o$+=�c$,i)+"%"
�  c$=�c$,i+1)
� �
�	� i=0
�=o$
�:
�� �add_menu(n$)
�� i
�i=0
�ȕ i<menus � n$<>menu$(i)
�	 i+=1
��
�6� n$<>menu$(i) menu$(i)=n$:menus+=1 � duplicates=�
�count(i)+=1
��
�:
�� �check(err$,n$)
�� i
�i=0
�ȕ i<menus � menu$(i)<>n$
�	 i+=1
��
�� count(i)>1 �
� � throwback �
�F  ș "DDEUtils_ThrowbackSend",1,,canon,out_line,0,err$+" �"+n$+"�"
� �
�)  �err$+" �"+n$+"� at line ";out_line
 �
�
�
:
� �taskwindow

� buf 256
ș "OS_GetEnv" � env$
<ș "XOS_ReadArgs","quit/k,task/S,,,,,",env$,buf,256 � ;v

� v � 1 �
	� !buf<>0 �

) n$="":i=!buf:ȕ ?i>31:n$+=�?i:i+=1:�
7 l$="":i=�n$:ȕ �n$,i,1)<>".":l$=�n$,i,1)+l$:i-=1:�
O � buf!4=0 ș "OS_CLI","TaskWindow -quit -name "+l$+" ""Run "+n$+" -task"""

�
�
�
00000000  0d 00 01 11 f4 20 3e 45  78 70 61 6e 64 4d 65 6e  |..... >ExpandMen|
00000010  75 0d 00 02 04 0d 00 03  0f f2 74 61 73 6b 77 69  |u.........taskwi|
00000020  6e 64 6f 77 0d 00 04 04  0d 00 05 1d f1 20 22 45  |ndow......... "E|
00000030  78 70 61 6e 64 20 42 61  63 6b 4d 65 6e 75 20 66  |xpand BackMenu f|
00000040  69 6c 65 22 27 0d 00 06  4a f1 20 22 53 68 69 66  |ile"'...J. "Shif|
00000050  74 2d 44 72 61 67 20 66  69 6c 65 73 20 74 6f 20  |t-Drag files to |
00000060  69 6e 70 75 74 20 74 68  65 69 72 20 70 61 74 68  |input their path|
00000070  73 20 69 66 20 72 75 6e  6e 69 6e 67 20 69 6e 20  |s if running in |
00000080  61 20 74 61 73 6b 20 77  69 6e 64 6f 77 22 27 0d  |a task window"'.|
00000090  00 07 14 e8 20 22 20 49  6e 70 75 74 20 20 3a 20  |.... " Input  : |
000000a0  22 66 24 0d 00 08 25 f1  20 27 22 50 72 65 73 73  |"f$...%. '"Press|
000000b0  20 52 65 74 75 72 6e 20  66 6f 72 20 22 22 22 66  | Return for """f|
000000c0  24 2b 22 3c 22 22 22 27  0d 00 09 26 e8 20 22 20  |$+"<"""'...&. " |
000000d0  4f 75 74 70 75 74 20 3a  20 22 6f 24 3a e7 20 6f  |Output : "o$:. o|
000000e0  24 3d 22 22 20 6f 24 3d  66 24 2b 22 3c 22 0d 00  |$="" o$=f$+"<"..|
000000f0  0a 05 f1 0d 00 0b 04 0d  00 0c 0b 6c 66 24 3d bd  |...........lf$=.|
00000100  31 30 0d 00 0d 0a 71 24  3d bd 33 34 0d 00 0e 10  |10....q$=.34....|
00000110  74 61 62 24 3d c4 34 2c  22 20 22 29 0d 00 0f 11  |tab$=.4," ")....|
00000120  74 61 62 32 24 3d c4 38  2c 22 20 22 29 0d 00 10  |tab2$=.8," ")...|
00000130  1f c8 99 20 22 4f 53 5f  46 69 6c 65 22 2c 35 2c  |... "OS_File",5,|
00000140  66 24 20 b8 20 2c 2c 2c  2c 6c 65 6e 0d 00 11 0d  |f$ . ,,,,len....|
00000150  de 20 6d 65 6d 20 6c 65  6e 0d 00 12 1b c8 99 20  |. mem len...... |
00000160  22 4f 53 5f 46 69 6c 65  22 2c 26 46 46 2c 66 24  |"OS_File",&FF,f$|
00000170  2c 6d 65 6d 0d 00 13 1b  de 20 6d 65 6e 75 24 28  |,mem..... menu$(|
00000180  32 35 36 29 2c 63 6f 75  6e 74 28 32 35 36 29 0d  |256),count(256).|
00000190  00 14 0b 6d 65 6e 75 73  3d 30 0d 00 15 10 64 75  |...menus=0....du|
000001a0  70 6c 69 63 61 74 65 73  3d a3 0d 00 16 12 f2 63  |plicates=......c|
000001b0  6f 6c 6c 61 74 65 28 22  22 2c 30 29 0d 00 17 1c  |ollate("",0)....|
000001c0  c8 99 20 22 4f 53 5f 43  4c 49 22 2c 22 43 72 65  |.. "OS_CLI","Cre|
000001d0  61 74 65 20 22 2b 6f 24  0d 00 18 0f 74 68 72 6f  |ate "+o$....thro|
000001e0  77 62 61 63 6b 3d a3 0d  00 19 12 e7 20 64 75 70  |wback=...... dup|
000001f0  6c 69 63 61 74 65 73 20  8c 0d 00 1a 41 20 c8 99  |licates ....A ..|
00000200  20 22 58 4f 53 5f 53 57  49 4e 75 6d 62 65 72 46  | "XOS_SWINumberF|
00000210  72 6f 6d 53 74 72 69 6e  67 22 2c 2c 22 44 44 45  |romString",,"DDE|
00000220  55 74 69 6c 73 5f 54 68  72 6f 77 62 61 63 6b 53  |Utils_ThrowbackS|
00000230  74 61 72 74 22 20 b8 20  3b 76 0d 00 1b 18 20 74  |tart" . ;v.... t|
00000240  68 72 6f 77 62 61 63 6b  3d 28 76 20 80 20 31 29  |hrowback=(v . 1)|
00000250  3d 30 0d 00 1c 12 20 e7  20 74 68 72 6f 77 62 61  |=0.... . throwba|
00000260  63 6b 20 8c 0d 00 1d 11  20 20 de 20 63 61 6e 6f  |ck .....  . cano|
00000270  6e 20 32 35 36 0d 00 1e  29 20 20 c8 99 20 22 4f  |n 256...)  .. "O|
00000280  53 5f 46 53 43 6f 6e 74  72 6f 6c 22 2c 33 37 2c  |S_FSControl",37,|
00000290  6f 24 2c 63 61 6e 6f 6e  2c 2c 2c 32 35 36 0d 00  |o$,canon,,,256..|
000002a0  1f 22 20 20 c8 99 20 22  44 44 45 55 74 69 6c 73  |."  .. "DDEUtils|
000002b0  5f 54 68 72 6f 77 62 61  63 6b 53 74 61 72 74 22  |_ThrowbackStart"|
000002c0  0d 00 20 2a 20 20 c8 99  20 22 44 44 45 55 74 69  |.. *  .. "DDEUti|
000002d0  6c 73 5f 54 68 72 6f 77  62 61 63 6b 53 65 6e 64  |ls_ThrowbackSend|
000002e0  22 2c 30 2c 2c 63 61 6e  6f 6e 0d 00 21 06 20 cd  |",0,,canon..!. .|
000002f0  0d 00 22 05 cd 0d 00 23  0d 6f 75 74 3d ae 28 6f  |.."....#.out=.(o|
00000300  24 29 0d 00 24 27 ee 20  85 3a 20 ee 20 85 20 87  |$)..$'. .: . . .|
00000310  3a 20 f1 20 f6 24 3b 22  20 61 74 20 22 3b 9e 3a  |: . .$;" at ";.:|
00000320  20 d9 23 6f 75 74 3a 20  e0 0d 00 25 0e 6f 75 74  | .#out: ...%.out|
00000330  5f 6c 69 6e 65 3d 30 0d  00 26 1b f2 62 70 75 74  |_line=0..&..bput|
00000340  28 22 7c 53 74 61 72 74  20 22 2b 66 24 2b 6c 66  |("|Start "+f$+lf|
00000350  24 29 0d 00 27 10 66 69  72 73 74 5f 6d 65 6e 75  |$)..'.first_menu|
00000360  3d b9 0d 00 28 11 f2 73  68 6f 77 5f 6d 65 6e 75  |=...(..show_menu|
00000370  28 30 29 0d 00 29 0e f2  62 70 75 74 28 6c 66 24  |(0)..)..bput(lf$|
00000380  29 0d 00 2a 15 f2 62 70  75 74 28 22 7c 45 6e 64  |)..*..bput("|End|
00000390  22 2b 6c 66 24 29 0d 00  2b 2a e7 20 74 68 72 6f  |"+lf$)..+*. thro|
000003a0  77 62 61 63 6b 20 c8 99  20 22 44 44 45 55 74 69  |wback .. "DDEUti|
000003b0  6c 73 5f 54 68 72 6f 77  62 61 63 6b 45 6e 64 22  |ls_ThrowbackEnd"|
000003c0  0d 00 2c 09 ee 20 85 20  87 0d 00 2d 0a d9 20 23  |..,.. . ...-.. #|
000003d0  6f 75 74 0d 00 2e 25 c8  99 20 22 4f 53 5f 43 4c  |out...%.. "OS_CL|
000003e0  49 22 2c 22 53 65 74 54  79 70 65 20 22 2b 6f 24  |I","SetType "+o$|
000003f0  2b 22 20 4f 62 65 79 22  0d 00 2f 0d f1 27 22 44  |+" Obey"../..'"D|
00000400  6f 6e 65 22 27 0d 00 30  3e f1 20 22 59 6f 75 20  |one"'..0>. "You |
00000410  77 69 6c 6c 20 70 72 6f  62 61 62 6c 79 20 6e 65  |will probably ne|
00000420  65 64 20 74 6f 20 65 64  69 74 20 74 68 65 20 66  |ed to edit the f|
00000430  69 6c 65 20 62 79 20 68  61 6e 64 20 6e 6f 77 20  |ile by hand now |
00000440  74 6f 22 0d 00 31 3c f1  20 22 31 29 20 52 65 70  |to"..1<. "1) Rep|
00000450  6c 61 63 65 20 25 25 30  20 77 69 74 68 20 3c 4d  |lace %%0 with <M|
00000460  65 6e 75 54 65 78 74 3e  20 61 6e 64 20 25 25 20  |enuText> and %% |
00000470  77 69 74 68 20 25 20 6f  72 20 3c 33 37 3e 22 0d  |with % or <37>".|
00000480  00 32 21 f1 20 22 20 20  20 69 6e 20 70 61 72 61  |.2!. "   in para|
00000490  6d 65 74 65 72 69 73 65  64 20 4d 65 6e 75 73 22  |meterised Menus"|
000004a0  0d 00 33 3c f1 20 22 32  29 20 44 65 6c 65 74 65  |..3<. "2) Delete|
000004b0  20 6b 65 79 20 73 68 6f  72 74 63 75 74 73 20 66  | key shortcuts f|
000004c0  72 6f 6d 20 6f 70 74 69  6f 6e 20 74 65 78 74 73  |rom option texts|
000004d0  20 28 2d 6b 65 79 20 61  64 64 73 22 0d 00 34 19  | (-key adds"..4.|
000004e0  f1 20 22 20 20 20 74 68  65 6d 20 66 6f 72 20 79  |. "   them for y|
000004f0  6f 75 29 22 27 0d 00 35  05 e0 0d 00 36 05 3a 0d  |ou)"'..5....6.:.|
00000500  00 37 1b dd 20 f2 63 6f  6c 6c 61 74 65 28 72 6f  |.7.. .collate(ro|
00000510  6f 74 24 2c 73 74 61 72  74 29 0d 00 38 19 ea 20  |ot$,start)..8.. |
00000520  70 74 72 2c 73 75 62 28  29 2c 73 2c 69 2c 6e 61  |ptr,sub(),s,i,na|
00000530  6d 65 24 0d 00 39 0d de  20 73 75 62 28 35 30 29  |me$..9.. sub(50)|
00000540  0d 00 3a 07 73 3d 30 0d  00 3b 16 6e 61 6d 65 24  |..:.s=0..;.name$|
00000550  3d 24 28 6d 65 6d 2b 73  74 61 72 74 29 0d 00 3c  |=$(mem+start)..<|
00000560  14 f2 61 64 64 5f 6d 65  6e 75 28 6e 61 6d 65 24  |..add_menu(name$|
00000570  29 0d 00 3d 14 70 74 72  3d 6d 65 6d 2b 73 74 61  |)..=.ptr=mem+sta|
00000580  72 74 2b 32 38 0d 00 3e  22 f4 50 52 49 4e 54 20  |rt+28..>".PRINT |
00000590  4d 49 44 24 28 72 6f 6f  74 24 2b 22 2e 22 2b 6e  |MID$(root$+"."+n|
000005a0  61 6d 65 24 2c 32 29 0d  00 3f 05 f5 0d 00 40 16  |ame$,2)..?....@.|
000005b0  20 6c 61 73 74 3d a4 62  69 74 28 37 2c 21 70 74  | last=.bit(7,!pt|
000005c0  72 29 0d 00 41 22 20 e7  20 70 74 72 21 34 3c 3e  |r)..A" . ptr!4<>|
000005d0  2d 31 20 73 2b 3d 31 3a  73 75 62 28 73 29 3d 70  |-1 s+=1:sub(s)=p|
000005e0  74 72 21 34 0d 00 42 0c  20 70 74 72 2b 3d 32 34  |tr!4..B. ptr+=24|
000005f0  0d 00 43 0a fd 20 6c 61  73 74 0d 00 44 0b e7 20  |..C.. last..D.. |
00000600  73 3e 30 20 8c 0d 00 45  0e 20 e3 20 69 3d 31 20  |s>0 ...E. . i=1 |
00000610  b8 20 73 0d 00 46 26 20  20 f2 63 6f 6c 6c 61 74  |. s..F&  .collat|
00000620  65 28 72 6f 6f 74 24 2b  22 2e 22 2b 6e 61 6d 65  |e(root$+"."+name|
00000630  24 2c 73 75 62 28 69 29  29 0d 00 47 06 20 ed 0d  |$,sub(i))..G. ..|
00000640  00 48 05 cd 0d 00 49 05  e1 0d 00 4a 05 3a 0d 00  |.H....I....J.:..|
00000650  4b 17 dd 20 f2 73 68 6f  77 5f 6d 65 6e 75 28 73  |K.. .show_menu(s|
00000660  74 61 72 74 29 0d 00 4c  1a ea 20 70 74 72 2c 61  |tart)..L.. ptr,a|
00000670  2c 6c 61 73 74 2c 73 75  62 28 29 2c 73 2c 69 0d  |,last,sub(),s,i.|
00000680  00 4d 0d de 20 73 75 62  28 35 30 29 0d 00 4e 07  |.M.. sub(50)..N.|
00000690  73 3d 30 0d 00 4f 11 70  74 72 3d 6d 65 6d 2b 73  |s=0..O.ptr=mem+s|
000006a0  74 61 72 74 0d 00 50 0e  6e 61 6d 65 24 3d 24 70  |tart..P.name$=$p|
000006b0  74 72 0d 00 51 0e f2 62  70 75 74 28 6c 66 24 29  |tr..Q..bput(lf$)|
000006c0  0d 00 52 21 f2 62 70 75  74 28 22 4d 65 6e 75 20  |..R!.bput("Menu |
000006d0  22 2b a4 71 75 6f 74 65  64 28 6e 61 6d 65 24 29  |"+.quoted(name$)|
000006e0  29 0d 00 53 12 e7 20 66  69 72 73 74 5f 6d 65 6e  |)..S.. first_men|
000006f0  75 20 8c 0d 00 54 18 20  20 f2 62 70 75 74 28 22  |u ...T.  .bput("|
00000700  20 50 69 6e 62 6f 61 72  64 22 29 0d 00 55 12 20  | Pinboard")..U. |
00000710  20 66 69 72 73 74 5f 6d  65 6e 75 3d a3 0d 00 56  | first_menu=...V|
00000720  05 cd 0d 00 57 0e f2 62  70 75 74 28 6c 66 24 29  |....W..bput(lf$)|
00000730  0d 00 58 2c f2 63 68 65  63 6b 28 22 44 75 70 6c  |..X,.check("Dupl|
00000740  69 63 61 74 65 64 20 64  65 66 69 6e 69 74 69 6f  |icated definitio|
00000750  6e 20 6f 66 22 2c 6e 61  6d 65 24 29 0d 00 59 04  |n of",name$)..Y.|
00000760  0d 00 5a 13 74 69 74 6c  65 5f 66 67 3d 70 74 72  |..Z.title_fg=ptr|
00000770  3f 31 32 0d 00 5b 13 74  69 74 6c 65 5f 62 67 3d  |?12..[.title_bg=|
00000780  70 74 72 3f 31 33 0d 00  5c 12 77 6f 72 6b 5f 66  |ptr?13..\.work_f|
00000790  67 3d 70 74 72 3f 31 34  0d 00 5d 12 77 6f 72 6b  |g=ptr?14..].work|
000007a0  5f 62 67 3d 70 74 72 3f  31 35 0d 00 5e 10 77 69  |_bg=ptr?15..^.wi|
000007b0  64 74 68 3d 70 74 72 21  31 36 0d 00 5f 11 68 65  |dth=ptr!16.._.he|
000007c0  69 67 68 74 3d 70 74 72  21 32 30 0d 00 60 0e 67  |ight=ptr!20..`.g|
000007d0  61 70 3d 70 74 72 21 32  34 0d 00 61 0c 61 3d 70  |ap=ptr!24..a.a=p|
000007e0  74 72 2b 32 38 0d 00 62  05 f5 0d 00 63 14 20 74  |tr+28..b....c. t|
000007f0  69 63 6b 3d a4 62 69 74  28 30 2c 21 61 29 0d 00  |ick=.bit(0,!a)..|
00000800  64 14 20 6c 69 6e 65 3d  a4 62 69 74 28 31 2c 21  |d. line=.bit(1,!|
00000810  61 29 0d 00 65 15 20 77  72 69 74 65 3d a4 62 69  |a)..e. write=.bi|
00000820  74 28 32 2c 21 61 29 0d  00 66 14 20 6c 61 73 74  |t(2,!a)..f. last|
00000830  3d a4 62 69 74 28 37 2c  21 61 29 0d 00 67 0c 20  |=.bit(7,!a)..g. |
00000840  73 75 62 3d 61 21 34 0d  00 68 0e 20 66 6c 61 67  |sub=a!4..h. flag|
00000850  73 3d 61 21 38 0d 00 69  1d 20 74 65 78 74 5f 62  |s=a!8..i. text_b|
00000860  67 3d 28 66 6c 61 67 73  3e 3e 32 38 29 20 80 20  |g=(flags>>28) . |
00000870  31 35 0d 00 6a 1d 20 74  65 78 74 5f 66 67 3d 28  |15..j. text_fg=(|
00000880  66 6c 61 67 73 3e 3e 32  34 29 20 80 20 31 35 0d  |flags>>24) . 15.|
00000890  00 6b 12 20 74 65 78 74  3d 6d 65 6d 2b 61 21 31  |.k. text=mem+a!1|
000008a0  32 0d 00 6c 38 20 63 6f  6d 6d 61 6e 64 3d 6d 65  |2..l8 command=me|
000008b0  6d 2b 61 21 31 36 2b 31  20 3a 20 f4 20 61 6c 6c  |m+a!16+1 : . all|
000008c0  20 68 61 76 65 20 61 20  26 30 37 20 61 74 20 74  | have a &07 at t|
000008d0  68 65 20 73 74 61 72 74  21 0d 00 6d 10 20 74 79  |he start!..m. ty|
000008e0  70 65 3d 61 21 32 30 2d  31 0d 00 6e 1d 20 6b 65  |pe=a!20-1..n. ke|
000008f0  79 73 3d 63 6f 6d 6d 61  6e 64 2b a9 24 63 6f 6d  |ys=command+.$com|
00000900  6d 61 6e 64 2b 31 0d 00  6f 15 20 6b 65 79 73 3d  |mand+1..o. keys=|
00000910  6b 65 79 73 2b a9 24 6b  65 79 73 0d 00 70 17 20  |keys+.$keys..p. |
00000920  6b 65 79 73 3d 28 6b 65  79 73 2b 31 2b 33 29 80  |keys=(keys+1+3).|
00000930  ac 33 0d 00 71 1e 20 e7  20 73 75 62 3c 3e 2d 31  |.3..q. . sub<>-1|
00000940  20 73 2b 3d 31 3a 73 75  62 28 73 29 3d 73 75 62  | s+=1:sub(s)=sub|
00000950  0d 00 72 29 20 f2 62 70  75 74 28 74 61 62 24 2b  |..r) .bput(tab$+|
00000960  22 4f 70 74 69 6f 6e 20  22 2b a4 71 75 6f 74 65  |"Option "+.quote|
00000970  64 28 24 74 65 78 74 29  29 0d 00 73 04 0d 00 74  |d($text))..s...t|
00000980  3d 20 e7 20 24 63 6f 6d  6d 61 6e 64 3c 3e 22 22  |= . $command<>""|
00000990  20 8c 20 63 6f 6d 6d 61  6e 64 31 24 3d a4 63 6f  | . command1$=.co|
000009a0  6d 28 24 63 6f 6d 6d 61  6e 64 29 20 8b 20 63 6f  |m($command) . co|
000009b0  6d 6d 61 6e 64 31 24 3d  22 22 0d 00 75 45 20 e7  |mmand1$=""..uE .|
000009c0  20 74 79 70 65 3d 30 20  8c 20 63 6f 6d 6d 61 6e  | type=0 . comman|
000009d0  64 32 24 3d a4 63 6f 6d  28 24 28 63 6f 6d 6d 61  |d2$=.com($(comma|
000009e0  6e 64 2b a9 24 63 6f 6d  6d 61 6e 64 2b 31 29 29  |nd+.$command+1))|
000009f0  20 8b 20 63 6f 6d 6d 61  6e 64 32 24 3d 22 22 0d  | . command2$="".|
00000a00  00 76 51 20 e7 20 63 6f  6d 6d 61 6e 64 32 24 3d  |.vQ . command2$=|
00000a10  22 22 20 80 20 c0 63 6f  6d 6d 61 6e 64 31 24 2c  |"" . .command1$,|
00000a20  31 30 29 3d 22 46 69 6c  65 72 5f 52 75 6e 20 22  |10)="Filer_Run "|
00000a30  20 80 20 a7 63 6f 6d 6d  61 6e 64 31 24 2c 22 7c  | . .command1$,"||
00000a40  4d 22 29 3d 30 20 80 20  73 75 62 3d 2d 31 20 8c  |M")=0 . sub=-1 .|
00000a50  0d 00 77 26 20 20 20 f2  62 70 75 74 28 22 20 2d  |..w&   .bput(" -|
00000a60  70 61 74 68 20 22 2b c1  63 6f 6d 6d 61 6e 64 31  |path "+.command1|
00000a70  24 2c 31 31 29 29 0d 00  78 13 20 20 20 63 6f 6d  |$,11))..x.   com|
00000a80  6d 61 6e 64 31 24 3d 22  22 0d 00 79 06 20 cd 0d  |mand1$=""..y. ..|
00000a90  00 7a 04 0d 00 7b 10 20  e7 20 73 75 62 3c 3e 2d  |.z...{. . sub<>-|
00000aa0  31 20 8c 0d 00 7c 15 20  20 f2 62 70 75 74 28 22  |1 ...|.  .bput("|
00000ab0  20 2d 73 75 62 20 22 29  0d 00 7d 15 20 20 73 75  | -sub ")..}.  su|
00000ac0  62 24 3d 24 28 6d 65 6d  2b 73 75 62 29 0d 00 7e  |b$=$(mem+sub)..~|
00000ad0  35 20 20 e7 20 73 75 62  24 3c 3e 24 74 65 78 74  |5  . sub$<>$text|
00000ae0  20 f2 62 70 75 74 28 a4  71 75 6f 74 65 64 28 73  | .bput(.quoted(s|
00000af0  75 62 24 29 29 20 8b 20  f2 62 70 75 74 28 22 2a  |ub$)) . .bput("*|
00000b00  22 29 0d 00 7f 06 20 cd  0d 00 80 2d 20 e7 20 73  |").... ....- . s|
00000b10  75 62 3c 3e 2d 31 20 f2  63 68 65 63 6b 28 22 43  |ub<>-1 .check("C|
00000b20  61 6c 6c 20 74 6f 20 73  75 62 6d 65 6e 75 22 2c  |all to submenu",|
00000b30  73 75 62 24 29 0d 00 81  04 0d 00 82 0e 20 e3 20  |sub$)........ . |
00000b40  69 3d 30 20 b8 20 33 0d  00 83 14 20 20 6b 65 79  |i=0 . 3....  key|
00000b50  3d 6b 65 79 73 21 28 69  2a 34 29 0d 00 84 12 20  |=keys!(i*4).... |
00000b60  20 e7 20 6b 65 79 3c 3e  26 46 46 20 8c 0d 00 85  | . key<>&FF ....|
00000b70  0f 20 20 20 20 e7 20 69  3d 30 20 8c 0d 00 86 23  |.    . i=0 ....#|
00000b80  20 20 20 20 20 20 f2 62  70 75 74 28 22 20 2d 6b  |      .bput(" -k|
00000b90  65 79 20 22 2b a4 6b 65  79 28 6b 65 79 29 29 0d  |ey "+.key(key)).|
00000ba0  00 87 09 20 20 20 20 cc  0d 00 88 29 20 20 20 20  |...    ....)    |
00000bb0  20 20 f1 20 22 43 61 6e  27 74 20 61 73 73 69 67  |  . "Can't assig|
00000bc0  6e 20 6b 65 79 20 22 3b  a4 6b 65 79 28 6b 65 79  |n key ";.key(key|
00000bd0  29 0d 00 89 09 20 20 20  20 cd 0d 00 8a 07 20 20  |)....    .....  |
00000be0  cd 0d 00 8b 06 20 ed 0d  00 8c 04 0d 00 8d 1b 20  |..... ......... |
00000bf0  e7 20 74 69 63 6b 20 f2  62 70 75 74 28 22 20 2d  |. tick .bput(" -|
00000c00  74 69 63 6b 22 29 0d 00  8e 47 20 e7 20 74 65 78  |tick")...G . tex|
00000c10  74 5f 62 67 3c 3e 30 20  84 20 74 65 78 74 5f 66  |t_bg<>0 . text_f|
00000c20  67 3c 3e 37 20 f2 62 70  75 74 28 22 20 2d 62 67  |g<>7 .bput(" -bg|
00000c30  20 22 2b c3 74 65 78 74  5f 62 67 2b 22 20 2d 66  | "+.text_bg+" -f|
00000c40  67 20 22 2b c3 74 65 78  74 5f 66 67 29 0d 00 8f  |g "+.text_fg)...|
00000c50  23 20 e7 20 74 79 70 65  3e 30 20 f2 62 70 75 74  |# . type>0 .bput|
00000c60  28 22 20 2d 6c 65 6e 20  22 2b c3 74 79 70 65 29  |(" -len "+.type)|
00000c70  0d 00 90 0f 20 f2 62 70  75 74 28 6c 66 24 29 0d  |.... .bput(lf$).|
00000c80  00 91 04 0d 00 92 3c 20  e7 20 63 6f 6d 6d 61 6e  |......< . comman|
00000c90  64 31 24 3c 3e 22 22 20  8c 20 f2 62 70 75 74 28  |d1$<>"" . .bput(|
00000ca0  74 61 62 32 24 2b 22 43  6f 6d 6d 61 6e 64 20 22  |tab2$+"Command "|
00000cb0  2b 63 6f 6d 6d 61 6e 64  31 24 2b 6c 66 24 29 0d  |+command1$+lf$).|
00000cc0  00 93 3c 20 e7 20 63 6f  6d 6d 61 6e 64 32 24 3c  |..< . command2$<|
00000cd0  3e 22 22 20 8c 20 f2 62  70 75 74 28 74 61 62 32  |>"" . .bput(tab2|
00000ce0  24 2b 22 43 6f 6d 6d 61  6e 64 20 22 2b 63 6f 6d  |$+"Command "+com|
00000cf0  6d 61 6e 64 32 24 2b 6c  66 24 29 0d 00 94 04 0d  |mand2$+lf$).....|
00000d00  00 95 1d 20 e7 20 6c 69  6e 65 20 f2 62 70 75 74  |... . line .bput|
00000d10  28 22 44 61 73 68 22 2b  6c 66 24 29 0d 00 96 0a  |("Dash"+lf$)....|
00000d20  20 61 2b 3d 32 34 0d 00  97 0a fd 20 6c 61 73 74  | a+=24..... last|
00000d30  0d 00 98 18 f2 62 70 75  74 28 22 45 6e 64 4d 65  |.....bput("EndMe|
00000d40  6e 75 22 2b 6c 66 24 29  0d 00 99 0b e7 20 73 3e  |nu"+lf$)..... s>|
00000d50  30 20 8c 0d 00 9a 0e 20  e3 20 69 3d 31 20 b8 20  |0 ..... . i=1 . |
00000d60  73 0d 00 9b 18 20 20 f2  73 68 6f 77 5f 6d 65 6e  |s....  .show_men|
00000d70  75 28 73 75 62 28 69 29  29 0d 00 9c 06 20 ed 0d  |u(sub(i)).... ..|
00000d80  00 9d 05 cd 0d 00 9e 05  e1 0d 00 9f 05 3a 0d 00  |.............:..|
00000d90  a0 0f dd 20 f2 62 70 75  74 28 6f 24 29 0d 00 a1  |... .bput(o$)...|
00000da0  0e d5 20 23 6f 75 74 2c  6f 24 3b 0d 00 a2 1c e7  |.. #out,o$;.....|
00000db0  20 c2 6f 24 2c 31 29 3d  6c 66 24 20 6f 75 74 5f  | .o$,1)=lf$ out_|
00000dc0  6c 69 6e 65 2b 3d 31 0d  00 a3 05 e1 0d 00 a4 05  |line+=1.........|
00000dd0  3a 0d 00 a5 11 dd 20 a4  71 75 6f 74 65 64 28 61  |:..... .quoted(a|
00000de0  24 29 0d 00 a6 28 20 20  e7 20 a7 61 24 2c 22 20  |$)...(  . .a$," |
00000df0  22 29 20 84 20 61 24 3d  22 22 20 8c 20 3d 22 22  |") . a$="" . =""|
00000e00  22 22 2b 61 24 2b 22 22  22 22 0d 00 a7 07 3d 61  |""+a$+""""....=a|
00000e10  24 0d 00 a8 05 3a 0d 00  a9 0f dd 20 a4 62 69 74  |$....:..... .bit|
00000e20  28 62 2c 6e 29 0d 00 aa  13 3d 28 6e 20 80 20 28  |(b,n)....=(n . (|
00000e30  31 3c 3c 62 29 29 3e 30  0d 00 ab 05 3a 0d 00 ac  |1<<b))>0....:...|
00000e40  0f dd 20 a4 6b 65 79 28  6b 65 79 29 0d 00 ad 09  |.. .key(key)....|
00000e50  20 ea 20 6d 24 0d 00 ae  0a 20 6d 24 3d 22 22 0d  | . m$.... m$="".|
00000e60  00 af 22 20 e7 20 6b 65  79 20 3e 3d 20 26 31 38  |.." . key >= &18|
00000e70  30 20 80 20 6b 65 79 20  3c 3d 20 26 31 46 46 20  |0 . key <= &1FF |
00000e80  8c 0d 00 b0 1d 20 20 20  e7 20 6b 65 79 20 80 20  |.....   . key . |
00000e90  26 31 30 20 8c 20 6d 24  2b 3d bd 31 33 39 0d 00  |&10 . m$+=.139..|
00000ea0  b1 1c 20 20 20 e7 20 6b  65 79 20 80 20 26 32 30  |..   . key . &20|
00000eb0  20 8c 20 6d 24 2b 3d 22  5e 22 0d 00 b2 18 20 20  | . m$+="^"....  |
00000ec0  20 6b 65 79 20 3d 20 6b  65 79 20 80 20 ac 20 26  | key = key . . &|
00000ed0  33 30 0d 00 b3 06 20 cd  0d 00 b4 31 20 e7 20 6b  |30.... ....1 . k|
00000ee0  65 79 20 3e 3d 20 97 22  61 22 20 80 20 6b 65 79  |ey >= ."a" . key|
00000ef0  20 3c 3d 20 97 22 7a 22  20 8c 20 6b 65 79 20 3d  | <= ."z" . key =|
00000f00  20 6b 65 79 20 2d 20 36  34 0d 00 b5 04 0d 00 b6  | key - 64.......|
00000f10  0d 20 c8 8e 20 6b 65 79  20 ca 0d 00 b7 19 20 20  |. .. key .....  |
00000f20  20 c9 20 26 30 31 45 3a  20 3d 6d 24 2b 22 48 6f  | . &01E: =m$+"Ho|
00000f30  6d 65 22 0d 00 b8 1b 20  20 20 c9 20 26 30 31 44  |me"....   . &01D|
00000f40  3a 20 3d 6d 24 2b 22 52  65 74 75 72 6e 22 0d 00  |: =m$+"Return"..|
00000f50  b9 1e 20 20 20 c9 20 26  30 31 43 3a 20 3d 6d 24  |..   . &01C: =m$|
00000f60  2b 22 42 61 63 6b 73 70  61 63 65 22 0d 00 ba 1a  |+"Backspace"....|
00000f70  20 20 20 c9 20 26 30 32  30 3a 20 3d 6d 24 2b 22  |   . &020: =m$+"|
00000f80  53 70 61 63 65 22 0d 00  bb 1b 20 20 20 c9 20 26  |Space"....   . &|
00000f90  30 37 46 3a 20 3d 6d 24  2b 22 44 65 6c 65 74 65  |07F: =m$+"Delete|
00000fa0  22 0d 00 bc 18 20 20 20  c9 20 26 30 31 42 3a 20  |"....   . &01B: |
00000fb0  3d 6d 24 2b 22 45 73 63  22 0d 00 bd 1a 20 20 20  |=m$+"Esc"....   |
00000fc0  c9 20 26 31 38 30 3a 20  3d 6d 24 2b 22 50 72 69  |. &180: =m$+"Pri|
00000fd0  6e 74 22 0d 00 be 17 20  20 20 c9 20 26 31 38 31  |nt"....   . &181|
00000fe0  3a 20 3d 6d 24 2b 22 46  31 22 0d 00 bf 17 20 20  |: =m$+"F1"....  |
00000ff0  20 c9 20 26 31 38 32 3a  20 3d 6d 24 2b 22 46 32  | . &182: =m$+"F2|
00001000  22 0d 00 c0 17 20 20 20  c9 20 26 31 38 33 3a 20  |"....   . &183: |
00001010  3d 6d 24 2b 22 46 33 22  0d 00 c1 17 20 20 20 c9  |=m$+"F3"....   .|
00001020  20 26 31 38 34 3a 20 3d  6d 24 2b 22 46 34 22 0d  | &184: =m$+"F4".|
00001030  00 c2 17 20 20 20 c9 20  26 31 38 35 3a 20 3d 6d  |...   . &185: =m|
00001040  24 2b 22 46 35 22 0d 00  c3 17 20 20 20 c9 20 26  |$+"F5"....   . &|
00001050  31 38 36 3a 20 3d 6d 24  2b 22 46 36 22 0d 00 c4  |186: =m$+"F6"...|
00001060  17 20 20 20 c9 20 26 31  38 37 3a 20 3d 6d 24 2b  |.   . &187: =m$+|
00001070  22 46 37 22 0d 00 c5 17  20 20 20 c9 20 26 31 38  |"F7"....   . &18|
00001080  38 3a 20 3d 6d 24 2b 22  46 38 22 0d 00 c6 17 20  |8: =m$+"F8".... |
00001090  20 20 c9 20 26 31 38 39  3a 20 3d 6d 24 2b 22 46  |  . &189: =m$+"F|
000010a0  39 22 0d 00 c7 18 20 20  20 c9 20 26 31 38 41 3a  |9"....   . &18A:|
000010b0  20 3d 6d 24 2b 22 54 61  62 22 0d 00 c8 19 20 20  | =m$+"Tab"....  |
000010c0  20 c9 20 26 31 38 42 3a  20 3d 6d 24 2b 22 43 6f  | . &18B: =m$+"Co|
000010d0  70 79 22 0d 00 c9 19 20  20 20 c9 20 26 31 38 43  |py"....   . &18C|
000010e0  3a 20 3d 6d 24 2b 22 4c  65 66 74 22 0d 00 ca 1a  |: =m$+"Left"....|
000010f0  20 20 20 c9 20 26 31 38  44 3a 20 3d 6d 24 2b 22  |   . &18D: =m$+"|
00001100  52 69 67 68 74 22 0d 00  cb 19 20 20 20 c9 20 26  |Right"....   . &|
00001110  31 38 45 3a 20 3d 6d 24  2b 22 44 6f 77 6e 22 0d  |18E: =m$+"Down".|
00001120  00 cc 17 20 20 20 c9 20  26 31 38 46 3a 20 3d 6d  |...   . &18F: =m|
00001130  24 2b 22 55 70 22 0d 00  cd 18 20 20 20 c9 20 26  |$+"Up"....   . &|
00001140  31 43 41 3a 20 3d 6d 24  2b 22 46 31 30 22 0d 00  |1CA: =m$+"F10"..|
00001150  ce 18 20 20 20 c9 20 26  31 43 42 3a 20 3d 6d 24  |..   . &1CB: =m$|
00001160  2b 22 46 31 31 22 0d 00  cf 18 20 20 20 c9 20 26  |+"F11"....   . &|
00001170  31 43 43 3a 20 3d 6d 24  2b 22 46 31 32 22 0d 00  |1CC: =m$+"F12"..|
00001180  d0 1b 20 20 20 c9 20 26  31 43 44 3a 20 3d 6d 24  |..   . &1CD: =m$|
00001190  2b 22 49 6e 73 65 72 74  22 0d 00 d1 09 20 20 20  |+"Insert"....   |
000011a0  7f 3a 0d 00 d2 41 20 20  20 20 20 e7 20 28 6b 65  |.:...A     . (ke|
000011b0  79 20 3e 3d 20 33 33 20  80 20 6b 65 79 20 3c 3d  |y >= 33 . key <=|
000011c0  20 31 32 36 29 20 84 20  28 6b 65 79 20 3e 3d 20  | 126) . (key >= |
000011d0  31 32 38 20 80 20 6b 65  79 20 3c 3d 20 32 35 35  |128 . key <= 255|
000011e0  29 20 8c 0d 00 d3 10 20  20 20 20 20 20 20 3d bd  |) .....       =.|
000011f0  28 6b 29 0d 00 d4 0a 20  20 20 20 20 cc 0d 00 d5  |(k)....     ....|
00001200  21 20 20 20 20 20 20 20  e7 20 6b 65 79 20 3e 3d  |!       . key >=|
00001210  20 30 20 80 20 6b 65 79  20 3c 3d 20 33 31 0d 00  | 0 . key <= 31..|
00001220  d6 1d 20 20 20 20 20 20  20 20 20 3d 22 5e 22 2b  |..         ="^"+|
00001230  bd 28 6b 65 79 20 2b 20  36 34 29 0d 00 d7 0c 20  |.(key + 64).... |
00001240  20 20 20 20 20 20 cd 0d  00 d8 0a 20 20 20 20 20  |      .....     |
00001250  cd 0d 00 d9 06 20 cb 0d  00 da 1b 20 f1 20 22 55  |..... ..... . "U|
00001260  6e 6b 6e 6f 77 6e 20 6b  65 79 20 26 22 3b 7e 6b  |nknown key &";~k|
00001270  65 79 0d 00 db 08 3d 22  a4 22 0d 00 dc 05 3a 0d  |ey....="."....:.|
00001280  00 dd 0e dd 20 a4 63 6f  6d 28 63 24 29 0d 00 de  |.... .com(c$)...|
00001290  0a ea 20 6f 24 2c 69 0d  00 df 09 6f 24 3d 22 22  |.. o$,i....o$=""|
000012a0  0d 00 e0 05 f5 0d 00 e1  0f 20 69 3d a7 63 24 2c  |......... i=.c$,|
000012b0  22 25 22 29 0d 00 e2 0c  20 e7 20 69 3d 30 20 8c  |"%").... . i=0 .|
000012c0  0d 00 e3 0c 20 20 6f 24  2b 3d 63 24 0d 00 e4 06  |....  o$+=c$....|
000012d0  20 cc 0d 00 e5 14 20 20  6f 24 2b 3d c0 63 24 2c  | .....  o$+=.c$,|
000012e0  69 29 2b 22 25 22 0d 00  e6 11 20 20 63 24 3d c1  |i)+"%"....  c$=.|
000012f0  63 24 2c 69 2b 31 29 0d  00 e7 06 20 cd 0d 00 e8  |c$,i+1).... ....|
00001300  09 fd 20 69 3d 30 0d 00  e9 07 3d 6f 24 0d 00 ea  |.. i=0....=o$...|
00001310  05 3a 0d 00 eb 13 dd 20  f2 61 64 64 5f 6d 65 6e  |.:..... .add_men|
00001320  75 28 6e 24 29 0d 00 ec  07 ea 20 69 0d 00 ed 07  |u(n$)..... i....|
00001330  69 3d 30 0d 00 ee 1d c8  95 20 69 3c 6d 65 6e 75  |i=0...... i<menu|
00001340  73 20 80 20 6e 24 3c 3e  6d 65 6e 75 24 28 69 29  |s . n$<>menu$(i)|
00001350  0d 00 ef 09 20 69 2b 3d  31 0d 00 f0 05 ce 0d 00  |.... i+=1.......|
00001360  f1 36 e7 20 6e 24 3c 3e  6d 65 6e 75 24 28 69 29  |.6. n$<>menu$(i)|
00001370  20 6d 65 6e 75 24 28 69  29 3d 6e 24 3a 6d 65 6e  | menu$(i)=n$:men|
00001380  75 73 2b 3d 31 20 8b 20  64 75 70 6c 69 63 61 74  |us+=1 . duplicat|
00001390  65 73 3d b9 0d 00 f2 0f  63 6f 75 6e 74 28 69 29  |es=.....count(i)|
000013a0  2b 3d 31 0d 00 f3 05 e1  0d 00 f4 05 3a 0d 00 f5  |+=1.........:...|
000013b0  15 dd 20 f2 63 68 65 63  6b 28 65 72 72 24 2c 6e  |.. .check(err$,n|
000013c0  24 29 0d 00 f6 07 ea 20  69 0d 00 f7 07 69 3d 30  |$)..... i....i=0|
000013d0  0d 00 f8 1d c8 95 20 69  3c 6d 65 6e 75 73 20 80  |...... i<menus .|
000013e0  20 6d 65 6e 75 24 28 69  29 3c 3e 6e 24 0d 00 f9  | menu$(i)<>n$...|
000013f0  09 20 69 2b 3d 31 0d 00  fa 05 ce 0d 00 fb 12 e7  |. i+=1..........|
00001400  20 63 6f 75 6e 74 28 69  29 3e 31 20 8c 0d 00 fc  | count(i)>1 ....|
00001410  12 20 e7 20 74 68 72 6f  77 62 61 63 6b 20 8c 0d  |. . throwback ..|
00001420  00 fd 46 20 20 c8 99 20  22 44 44 45 55 74 69 6c  |..F  .. "DDEUtil|
00001430  73 5f 54 68 72 6f 77 62  61 63 6b 53 65 6e 64 22  |s_ThrowbackSend"|
00001440  2c 31 2c 2c 63 61 6e 6f  6e 2c 6f 75 74 5f 6c 69  |,1,,canon,out_li|
00001450  6e 65 2c 30 2c 65 72 72  24 2b 22 20 90 22 2b 6e  |ne,0,err$+" ."+n|
00001460  24 2b 22 91 22 0d 00 fe  06 20 cc 0d 00 ff 29 20  |$+".".... ....) |
00001470  20 f1 65 72 72 24 2b 22  20 90 22 2b 6e 24 2b 22  | .err$+" ."+n$+"|
00001480  91 20 61 74 20 6c 69 6e  65 20 22 3b 6f 75 74 5f  |. at line ";out_|
00001490  6c 69 6e 65 0d 01 00 06  20 cd 0d 01 01 05 cd 0d  |line.... .......|
000014a0  01 02 05 e1 0d 01 03 05  3a 0d 01 04 11 dd 20 f2  |........:..... .|
000014b0  74 61 73 6b 77 69 6e 64  6f 77 0d 01 05 0d de 20  |taskwindow..... |
000014c0  62 75 66 20 32 35 36 0d  01 06 19 c8 99 20 22 4f  |buf 256...... "O|
000014d0  53 5f 47 65 74 45 6e 76  22 20 b8 20 65 6e 76 24  |S_GetEnv" . env$|
000014e0  0d 01 07 3c c8 99 20 22  58 4f 53 5f 52 65 61 64  |...<.. "XOS_Read|
000014f0  41 72 67 73 22 2c 22 71  75 69 74 2f 6b 2c 74 61  |Args","quit/k,ta|
00001500  73 6b 2f 53 2c 2c 2c 2c  2c 22 2c 65 6e 76 24 2c  |sk/S,,,,,",env$,|
00001510  62 75 66 2c 32 35 36 20  b8 20 3b 76 0d 01 08 0d  |buf,256 . ;v....|
00001520  e7 20 76 20 80 20 31 20  e1 0d 01 09 0f e7 20 21  |. v . 1 ...... !|
00001530  62 75 66 3c 3e 30 20 8c  0d 01 0a 29 20 6e 24 3d  |buf<>0 ....) n$=|
00001540  22 22 3a 69 3d 21 62 75  66 3a c8 95 20 3f 69 3e  |"":i=!buf:.. ?i>|
00001550  33 31 3a 6e 24 2b 3d bd  3f 69 3a 69 2b 3d 31 3a  |31:n$+=.?i:i+=1:|
00001560  ce 0d 01 0b 37 20 6c 24  3d 22 22 3a 69 3d a9 6e  |....7 l$="":i=.n|
00001570  24 3a c8 95 20 c1 6e 24  2c 69 2c 31 29 3c 3e 22  |$:.. .n$,i,1)<>"|
00001580  2e 22 3a 6c 24 3d c1 6e  24 2c 69 2c 31 29 2b 6c  |.":l$=.n$,i,1)+l|
00001590  24 3a 69 2d 3d 31 3a ce  0d 01 0c 4f 20 e7 20 62  |$:i-=1:....O . b|
000015a0  75 66 21 34 3d 30 20 c8  99 20 22 4f 53 5f 43 4c  |uf!4=0 .. "OS_CL|
000015b0  49 22 2c 22 54 61 73 6b  57 69 6e 64 6f 77 20 2d  |I","TaskWindow -|
000015c0  71 75 69 74 20 2d 6e 61  6d 65 20 22 2b 6c 24 2b  |quit -name "+l$+|
000015d0  22 20 22 22 52 75 6e 20  22 2b 6e 24 2b 22 20 2d  |" ""Run "+n$+" -|
000015e0  74 61 73 6b 22 22 22 0d  01 0d 05 cd 0d 01 0e 05  |task""".........|
000015f0  e1 0d ff                                          |...|
000015f3