Home » Archimedes archive » Acorn User » AU 1994-03.adf » !StarInfo_StarInfo » Wickett/!Insert/!RunImage

Wickett/!Insert/!RunImage

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 1994-03.adf » !StarInfo_StarInfo
Filename: Wickett/!Insert/!RunImage
Read OK:
File size: 14FE bytes
Load address: 0000
Exec address: 0000
File contents
   10REM     >!RunImage - !Insert
   20REM By  Barry Wickett
   30REM For 32-bit machines
   40REM (c) AU March 1994
   50
   60PROCinitiate
   70ON ERROR exit=FNcheck(REPORT$+", EXIT?")
   80
   90WHILE NOT exit
  100  poll%=%1110110110010
  110  IF (calltype%<2 OR ts%=-1) AND NOTsending% THEN poll%=poll%OR1
  120  SYS "Wimp_Poll",0,blk% TO reason%
  130  CASE reason% OF
  140    WHEN 0:IF sending% OR INKEY(-1) THEN PROCsend
  150    WHEN 2:SYS "Wimp_OpenWindow",,blk%
  160    WHEN 3:SYS "Wimp_CloseWindow",,blk%
  170    WHEN 6:PROCmouse(!blk%,blk%!4,blk%!8,blk%!12,blk%!16)
  180    WHEN 9:IF !blk%=2 THEN PROCclosedown
  190    WHEN 17,18:PROCmessage(blk%!4,blk%!8,blk%!16)
  200  ENDCASE
  210ENDWHILE
  220PROCclosedown
  230
  240DEF PROCinitiate
  250mblen%=128
  260bs%=16*1024
  270DIM blk% 1000,menubuffer% mblen%,text% bs%
  280$blk%="TASK"
  290program$="Keyboard Insert"
  300dir$="<Insert$Dir>"
  310SYS "Wimp_Initialise",200,!blk%,program$ TO ,mytask%
  320iconbar%=FNcreateicon(-1,0,0,68,68,&2002,"!insert")
  330SYS "Wimp_OpenTemplate",,dir$+".Templates"
  340info%=FNloadtemplate("info",256)
  350options%=FNloadtemplate("options",256)
  360SYS "Wimp_CloseTemplate"
  370menuptr%=menubuffer%
  380menubar%=FNcrmenu("Insert,Info>,info%,Options>,options%,Quit")
  390barheight%=items%*44+96
  400exit=FALSE
  410ts%=-1
  420sending%=FALSE
  430calltype%=0
  440ENDPROC
  450
  460DEF PROCclosedown
  470SYS "Wimp_CloseDown",mytask%
  480END
  490
  500DEF PROCsend
  510IF sending% THEN
  520 IF tp%<ts% THEN
  530 key%=text%?tp%
  540 IF key%=10 THEN key%=13
  550  SYS "Wimp_ProcessKey",key%
  560  tp%+=1
  570 ELSE
  580  sending%=FALSE
  590  tp%=0
  600 ENDIF
  610ELSE
  620 IF calltype%=2 AND INKEY(-1) THEN
  630  SYS "Wimp_GetPointerInfo",,blk%
  640  IF blk%!12=-2 AND blk%!16=iconbar% THEN
  650    sending%=TRUE
  660    tp%=0
  670  ENDIF
  680  REPEAT
  690  UNTIL NOT INKEY(-1)
  700 ENDIF
  710ENDIF
  720ENDPROC
  730
  740DEF PROCmouse(mx%,my%,but%,wind%,icon%)
  750CASE wind% OF
  760  WHEN -2
  770    CASE but% OF
  780      WHEN 2:PROCmenu(menubar%,mx%,barheight%)
  790      WHEN 4:IF calltype%=1 THEN sending%=TRUE:tp%=0
  800    ENDCASE
  810  WHEN options%:IF icon%>=0 THEN calltype%=icon%:SYS "Wimp_CreateMenu",,-1
  820ENDCASE
  830ENDPROC
  840
  850DEF PROCmenu(data%,x%,y%)
  860openmenu%=data%
  870x%=x%-(data%!16)/2-16
  880SYS "Wimp_CreateMenu",,data%,x%,y%
  890ENDPROC
  900
  910DEF PROCmessage(task%,ref%,message%)
  920CASE message% OF
  930  WHEN 0:PROCclosedown
  940  WHEN 1:
  950    IF blk%!40=&FFF
  960      size%=blk%!36
  970      IF size%<=bs% THEN
  980        trans%=0
  990        tp%=0
 1000        ts%=-1
 1010        file$=FNstring(blk%+44)
 1020        blk%!20=text%
 1030        blk%!24=size%
 1040        PROCreply(18,6)
 1050      ELSE
 1060        PROCreport("File too large")
 1070      ENDIF
 1080    ENDIF
 1090  WHEN 3:
 1100    IF blk%!40=&FFF THEN
 1110      file$=FNstring(blk%+44)
 1120      SYS "OS_File",5,file$ TO ,,,,size%
 1130      IF size%<=bs% THEN
 1140        ts%=-1
 1150        SYS "Wimp_GetPointerInfo",,blk%+8
 1160        blk%!28=blk%!8
 1170        blk%!32=blk%!12
 1180        blk%!36=-1
 1190        !blk%=(48+LENfile$)ANDNOT3
 1200        $(blk%+44)=file$+CHR$0
 1210        PROCreply(17,4)
 1220        SYS "OS_File",255,file$,text%
 1230        ts%=size%
 1240        tp%=0
 1250        IF calltype%=0 THEN sending%=TRUE
 1260      ELSE
 1270        PROCreport("File too large")
 1280      ENDIF
 1290    ENDIF
 1300  WHEN 7:
 1310    trans%+=blk%!24
 1320    IF trans%=size% THEN
 1330      ts%=size%
 1340      tp%=0
 1350      IF calltype%=0 THEN sending%=TRUE
 1360    ELSE
 1370      blk%!20+=blk%!24
 1380      blk%!24=size%-trans%
 1390      PROCreply(18,6)
 1400    ENDIF
 1410ENDCASE
 1420ENDPROC
 1430
 1440DEF PROCreply(type%,reason%)
 1450blk%!12=ref%
 1460blk%!16=reason%
 1470SYS "Wimp_SendMessage",type%,blk%,task%
 1480ENDPROC
 1490
 1500DEF FNloadtemplate(title$,indir%)
 1510DIM buff% indir%
 1520SYS "Wimp_LoadTemplate",,blk%,buff%,buff%+indir%,-1,title$
 1530SYS "Wimp_CreateWindow",,blk% TO wind%
 1540=wind%
 1550
 1560DEF FNcrmenu(text$)
 1570oldptr%=menuptr%
 1580items%=0
 1590text$+=","
 1600title$=FNnextword(text$)
 1610$menuptr%=title$
 1620max%=LENtitle$
 1630menuptr%!12=&70207
 1640menuptr%!20=44
 1650menuptr%!24=0
 1660menuptr%+=4
 1670WHILE text$<>""
 1680  items%+=1
 1690  menuptr%+=24
 1700  !menuptr%=0
 1710  menuptr%!4=0
 1720  word$=FNnextword(text$)
 1730  token$=FNtoken(word$)
 1740  WHILE token$<>""
 1750    CASE token$ OF
 1760      WHEN ">":menuptr%!4=EVAL(FNnextword(text$))
 1770      WHEN "/":!menuptr%=!menuptr% OR 1
 1780      WHEN "-":!menuptr%=!menuptr% OR 2
 1790      WHEN "!":!menuptr%=!menuptr% OR 4
 1800    ENDCASE
 1810    token$=FNtoken(word$)
 1820  ENDWHILE
 1830  menuptr%!8=(7<<24) OR %10001
 1840  IF !menuptr% AND 4 OR token$="#" THEN
 1850    menuptr%!8=menuptr%!8 OR 1<<8
 1860    menuptr%!12=EVAL(FNnextword(text$))
 1870    menuptr%!16=-1
 1880    menuptr%!20=EVAL(word$)
 1890    IF menuptr%!20>max% AND (!menuptr% AND 4)=0 THEN max%=menuptr%!20
 1900  ELSE
 1910    IF LENword$>12 THEN
 1920      menuptr%!8=menuptr%!8 OR 1<<8
 1930      DIM menuptr%!12 LENword$
 1940      $(menuptr%!12)=word$
 1950      menuptr%!16=-1
 1960      menuptr%!20=LENword$
 1970    ELSE
 1980      $(menuptr%+12)=word$
 1990    ENDIF
 2000    IF LENword$>max% THEN max%=LENword$
 2010  ENDIF
 2020ENDWHILE
 2030!menuptr%=!menuptr% OR &80
 2040menuptr%+=24
 2050oldptr%!16=max%*16+8
 2060=oldptr%
 2070
 2080DEF FNtoken(RETURN word$)
 2090token$=""
 2100IF INSTR(">/!#-",RIGHT$(word$)) THEN
 2110  token$=RIGHT$(word$,1)
 2120  word$=LEFT$(word$,LENword$-1)
 2130ENDIF
 2140=token$
 2150
 2160DEF FNnextword(RETURN text$)
 2170LOCAL word$,pos%
 2180pos%=INSTR(text$,",")
 2190word$=LEFT$(text$,pos%-1)
 2200text$=MID$(text$,pos%+1)
 2210=word$
 2220
 2230DEF FNcreateicon(!blk%,blk%!4,blk%!8,blk%!12,blk%!16,blk%!20,$(blk%+24))
 2240SYS "Wimp_CreateIcon",,blk% TO icon%
 2250=icon%
 2260
 2270DEF FNcheck(message$)
 2280SYS "Wimp_DragBox",,0
 2290!blk%=0
 2300$(blk%+4)=message$
 2310SYS "Wimp_ReportError",blk%,19,"Message from "+program$ TO ,answer%
 2320IF answer%=1 THEN =TRUE ELSE =FALSE
 2330
 2340DEF FNstring(b%)
 2350LOCAL s$
 2360s$=""
 2370WHILE ?b%>31
 2380  s$+=CHR$(?b%)
 2390  b%+=1
 2400ENDWHILE
 2410=s$
 2420
 2430DEF PROCreport(message$)
 2440SYS "Wimp_DragBox",,0
 2450!blk%=0
 2460$(blk%+4)=message$
 2470SYS "Wimp_ReportError",blk%,1,program$
 2480ENDPROC

�     >!RunImage - !Insert
� By  Barry Wickett
� For 32-bit machines
(� (c) AU March 1994
2
<
�initiate
F!� � exit=�check(�$+", EXIT?")
P
Z
ȕ � exit
d  poll%=%1110110110010
n:  � (calltype%<2 � ts%=-1) � �sending% � poll%=poll%�1
x%  ș "Wimp_Poll",0,blk% � reason%
�  Ȏ reason% �
�&    � 0:� sending% � �(-1) � �send
�&    � 2:ș "Wimp_OpenWindow",,blk%
�'    � 3:ș "Wimp_CloseWindow",,blk%
�7    � 6:�mouse(!blk%,blk%!4,blk%!8,blk%!12,blk%!16)
�"    � 9:� !blk%=2 � �closedown
�/    � 17,18:�message(blk%!4,blk%!8,blk%!16)
�  �
��
��closedown
�
�� �initiate
�mblen%=128
bs%=16*1024
,� blk% 1000,menubuffer% mblen%,text% bs%
$blk%="TASK"
"program$="Keyboard Insert"
,dir$="<Insert$Dir>"
66ș "Wimp_Initialise",200,!blk%,program$ � ,mytask%
@6iconbar%=�createicon(-1,0,0,68,68,&2002,"!insert")
J-ș "Wimp_OpenTemplate",,dir$+".Templates"
T#info%=�loadtemplate("info",256)
^)options%=�loadtemplate("options",256)
hș "Wimp_CloseTemplate"
rmenuptr%=menubuffer%
|Amenubar%=�crmenu("Insert,Info>,info%,Options>,options%,Quit")
�barheight%=items%*44+96
�
exit=�
�
ts%=-1
�sending%=�
�calltype%=0
��
�
�� �closedown
�ș "Wimp_CloseDown",mytask%
��
�
�� �send
�� sending% �
 � tp%<ts% �
 key%=text%?tp%
 � key%=10 � key%=13
&  ș "Wimp_ProcessKey",key%
0  tp%+=1
: �
D  sending%=�
N  tp%=0
X �
b�
l � calltype%=2 � �(-1) �
v$  ș "Wimp_GetPointerInfo",,blk%
�'  � blk%!12=-2 � blk%!16=iconbar% �
�    sending%=�
�
    tp%=0
�  �
�  �
�  � � �(-1)
� �
��
��
�
�&� �mouse(mx%,my%,but%,wind%,icon%)
�Ȏ wind% �
�
  � -2
    Ȏ but% �
,      � 2:�menu(menubar%,mx%,barheight%)
.      � 4:� calltype%=1 � sending%=�:tp%=0
 	    �
*F  � options%:� icon%>=0 � calltype%=icon%:ș "Wimp_CreateMenu",,-1
4�
>�
H
R� �menu(data%,x%,y%)
\openmenu%=data%
fx%=x%-(data%!16)/2-16
p%ș "Wimp_CreateMenu",,data%,x%,y%
z�
�
�#� �message(task%,ref%,message%)
�Ȏ message% �
�  � 0:�closedown
�
  � 1:
�    � blk%!40=&FFF
�      size%=blk%!36
�      � size%<=bs% �
�        trans%=0
�        tp%=0
�        ts%=-1
�"        file$=�string(blk%+44)
�        blk%!20=text%
        blk%!24=size%
        �reply(18,6)
      �
$%        �report("File too large")
.      �
8	    �
B
  � 3:
L    � blk%!40=&FFF �
V       file$=�string(blk%+44)
`*      ș "OS_File",5,file$ � ,,,,size%
j      � size%<=bs% �
t        ts%=-1
~,        ș "Wimp_GetPointerInfo",,blk%+8
�        blk%!28=blk%!8
�        blk%!32=blk%!12
�        blk%!36=-1
�         !blk%=(48+�file$)��3
�        $(blk%+44)=file$+�0
�        �reply(17,4)
�(        ș "OS_File",255,file$,text%
�        ts%=size%
�        tp%=0
�&        � calltype%=0 � sending%=�
�      �
�%        �report("File too large")
      �

	    �

  � 7:
    trans%+=blk%!24
(    � trans%=size% �
2      ts%=size%
<      tp%=0
F$      � calltype%=0 � sending%=�
P	    �
Z      blk%!20+=blk%!24
d      blk%!24=size%-trans%
n      �reply(18,6)
x	    �
��
��
�
�� �reply(type%,reason%)
�blk%!12=ref%
�blk%!16=reason%
�*ș "Wimp_SendMessage",type%,blk%,task%
��
�
�"� �loadtemplate(title$,indir%)
�� buff% indir%
�=ș "Wimp_LoadTemplate",,blk%,buff%,buff%+indir%,-1,title$
�(ș "Wimp_CreateWindow",,blk% � wind%

=wind%

� �crmenu(text$)
"oldptr%=menuptr%
,items%=0
6text$+=","
@title$=�nextword(text$)
J$menuptr%=title$
Tmax%=�title$
^menuptr%!12=&70207
hmenuptr%!20=44
rmenuptr%!24=0
|menuptr%+=4
�ȕ text$<>""
�  items%+=1
�  menuptr%+=24
�  !menuptr%=0
�  menuptr%!4=0
�  word$=�nextword(text$)
�  token$=�token(word$)
�  ȕ token$<>""
�    Ȏ token$ �
�.      � ">":menuptr%!4=�(�nextword(text$))
�'      � "/":!menuptr%=!menuptr% � 1
�'      � "-":!menuptr%=!menuptr% � 2
�'      � "!":!menuptr%=!menuptr% � 4
	    �
    token$=�token(word$)
  �
&!  menuptr%!8=(7<<24) � %10001
0$  � !menuptr% � 4 � token$="#" �
:$    menuptr%!8=menuptr%!8 � 1<<8
D'    menuptr%!12=�(�nextword(text$))
N    menuptr%!16=-1
X    menuptr%!20=�(word$)
bA    � menuptr%!20>max% � (!menuptr% � 4)=0 � max%=menuptr%!20
l  �
v    � �word$>12 �
�&      menuptr%!8=menuptr%!8 � 1<<8
�      � menuptr%!12 �word$
�      $(menuptr%!12)=word$
�      menuptr%!16=-1
�      menuptr%!20=�word$
�	    �
�      $(menuptr%+12)=word$
�	    �
�#    � �word$>max% � max%=�word$
�  �
��
�!menuptr%=!menuptr% � &80
�menuptr%+=24
oldptr%!16=max%*16+8
=oldptr%

 � �token(� word$)
*
token$=""
4� �">/!#-",�word$)) �
>  token$=�word$,1)
H  word$=�word$,�word$-1)
R�
\=token$
f
p� �nextword(� text$)
z� word$,pos%
�pos%=�text$,",")
�word$=�text$,pos%-1)
�text$=�text$,pos%+1)
�
=word$
�
�I� �createicon(!blk%,blk%!4,blk%!8,blk%!12,blk%!16,blk%!20,$(blk%+24))
�&ș "Wimp_CreateIcon",,blk% � icon%
�
=icon%
�
�� �check(message$)
�ș "Wimp_DragBox",,0
�!blk%=0
�$(blk%+4)=message$
	Eș "Wimp_ReportError",blk%,19,"Message from "+program$ � ,answer%
	� answer%=1 � =� � =�
	
	$� �string(b%)
	.� s$
	8	s$=""
	B
ȕ ?b%>31
	L  s$+=�(?b%)
	V  b%+=1
	`�
	j=s$
	t
	~� �report(message$)
	�ș "Wimp_DragBox",,0
	�!blk%=0
	�$(blk%+4)=message$
	�)ș "Wimp_ReportError",blk%,1,program$
	��
�
00000000  0d 00 0a 1e f4 20 20 20  20 20 3e 21 52 75 6e 49  |.....     >!RunI|
00000010  6d 61 67 65 20 2d 20 21  49 6e 73 65 72 74 0d 00  |mage - !Insert..|
00000020  14 17 f4 20 42 79 20 20  42 61 72 72 79 20 57 69  |... By  Barry Wi|
00000030  63 6b 65 74 74 0d 00 1e  19 f4 20 46 6f 72 20 33  |ckett..... For 3|
00000040  32 2d 62 69 74 20 6d 61  63 68 69 6e 65 73 0d 00  |2-bit machines..|
00000050  28 17 f4 20 28 63 29 20  41 55 20 4d 61 72 63 68  |(.. (c) AU March|
00000060  20 31 39 39 34 0d 00 32  04 0d 00 3c 0d f2 69 6e  | 1994..2...<..in|
00000070  69 74 69 61 74 65 0d 00  46 21 ee 20 85 20 65 78  |itiate..F!. . ex|
00000080  69 74 3d a4 63 68 65 63  6b 28 f6 24 2b 22 2c 20  |it=.check(.$+", |
00000090  45 58 49 54 3f 22 29 0d  00 50 04 0d 00 5a 0d c8  |EXIT?")..P...Z..|
000000a0  95 20 ac 20 65 78 69 74  0d 00 64 1a 20 20 70 6f  |. . exit..d.  po|
000000b0  6c 6c 25 3d 25 31 31 31  30 31 31 30 31 31 30 30  |ll%=%11101101100|
000000c0  31 30 0d 00 6e 3a 20 20  e7 20 28 63 61 6c 6c 74  |10..n:  . (callt|
000000d0  79 70 65 25 3c 32 20 84  20 74 73 25 3d 2d 31 29  |ype%<2 . ts%=-1)|
000000e0  20 80 20 ac 73 65 6e 64  69 6e 67 25 20 8c 20 70  | . .sending% . p|
000000f0  6f 6c 6c 25 3d 70 6f 6c  6c 25 84 31 0d 00 78 25  |oll%=poll%.1..x%|
00000100  20 20 c8 99 20 22 57 69  6d 70 5f 50 6f 6c 6c 22  |  .. "Wimp_Poll"|
00000110  2c 30 2c 62 6c 6b 25 20  b8 20 72 65 61 73 6f 6e  |,0,blk% . reason|
00000120  25 0d 00 82 12 20 20 c8  8e 20 72 65 61 73 6f 6e  |%....  .. reason|
00000130  25 20 ca 0d 00 8c 26 20  20 20 20 c9 20 30 3a e7  |% ....&    . 0:.|
00000140  20 73 65 6e 64 69 6e 67  25 20 84 20 a6 28 2d 31  | sending% . .(-1|
00000150  29 20 8c 20 f2 73 65 6e  64 0d 00 96 26 20 20 20  |) . .send...&   |
00000160  20 c9 20 32 3a c8 99 20  22 57 69 6d 70 5f 4f 70  | . 2:.. "Wimp_Op|
00000170  65 6e 57 69 6e 64 6f 77  22 2c 2c 62 6c 6b 25 0d  |enWindow",,blk%.|
00000180  00 a0 27 20 20 20 20 c9  20 33 3a c8 99 20 22 57  |..'    . 3:.. "W|
00000190  69 6d 70 5f 43 6c 6f 73  65 57 69 6e 64 6f 77 22  |imp_CloseWindow"|
000001a0  2c 2c 62 6c 6b 25 0d 00  aa 37 20 20 20 20 c9 20  |,,blk%...7    . |
000001b0  36 3a f2 6d 6f 75 73 65  28 21 62 6c 6b 25 2c 62  |6:.mouse(!blk%,b|
000001c0  6c 6b 25 21 34 2c 62 6c  6b 25 21 38 2c 62 6c 6b  |lk%!4,blk%!8,blk|
000001d0  25 21 31 32 2c 62 6c 6b  25 21 31 36 29 0d 00 b4  |%!12,blk%!16)...|
000001e0  22 20 20 20 20 c9 20 39  3a e7 20 21 62 6c 6b 25  |"    . 9:. !blk%|
000001f0  3d 32 20 8c 20 f2 63 6c  6f 73 65 64 6f 77 6e 0d  |=2 . .closedown.|
00000200  00 be 2f 20 20 20 20 c9  20 31 37 2c 31 38 3a f2  |../    . 17,18:.|
00000210  6d 65 73 73 61 67 65 28  62 6c 6b 25 21 34 2c 62  |message(blk%!4,b|
00000220  6c 6b 25 21 38 2c 62 6c  6b 25 21 31 36 29 0d 00  |lk%!8,blk%!16)..|
00000230  c8 07 20 20 cb 0d 00 d2  05 ce 0d 00 dc 0e f2 63  |..  ...........c|
00000240  6c 6f 73 65 64 6f 77 6e  0d 00 e6 04 0d 00 f0 0f  |losedown........|
00000250  dd 20 f2 69 6e 69 74 69  61 74 65 0d 00 fa 0e 6d  |. .initiate....m|
00000260  62 6c 65 6e 25 3d 31 32  38 0d 01 04 0f 62 73 25  |blen%=128....bs%|
00000270  3d 31 36 2a 31 30 32 34  0d 01 0e 2c de 20 62 6c  |=16*1024...,. bl|
00000280  6b 25 20 31 30 30 30 2c  6d 65 6e 75 62 75 66 66  |k% 1000,menubuff|
00000290  65 72 25 20 6d 62 6c 65  6e 25 2c 74 65 78 74 25  |er% mblen%,text%|
000002a0  20 62 73 25 0d 01 18 10  24 62 6c 6b 25 3d 22 54  | bs%....$blk%="T|
000002b0  41 53 4b 22 0d 01 22 1e  70 72 6f 67 72 61 6d 24  |ASK"..".program$|
000002c0  3d 22 4b 65 79 62 6f 61  72 64 20 49 6e 73 65 72  |="Keyboard Inser|
000002d0  74 22 0d 01 2c 17 64 69  72 24 3d 22 3c 49 6e 73  |t"..,.dir$="<Ins|
000002e0  65 72 74 24 44 69 72 3e  22 0d 01 36 36 c8 99 20  |ert$Dir>"..66.. |
000002f0  22 57 69 6d 70 5f 49 6e  69 74 69 61 6c 69 73 65  |"Wimp_Initialise|
00000300  22 2c 32 30 30 2c 21 62  6c 6b 25 2c 70 72 6f 67  |",200,!blk%,prog|
00000310  72 61 6d 24 20 b8 20 2c  6d 79 74 61 73 6b 25 0d  |ram$ . ,mytask%.|
00000320  01 40 36 69 63 6f 6e 62  61 72 25 3d a4 63 72 65  |.@6iconbar%=.cre|
00000330  61 74 65 69 63 6f 6e 28  2d 31 2c 30 2c 30 2c 36  |ateicon(-1,0,0,6|
00000340  38 2c 36 38 2c 26 32 30  30 32 2c 22 21 69 6e 73  |8,68,&2002,"!ins|
00000350  65 72 74 22 29 0d 01 4a  2d c8 99 20 22 57 69 6d  |ert")..J-.. "Wim|
00000360  70 5f 4f 70 65 6e 54 65  6d 70 6c 61 74 65 22 2c  |p_OpenTemplate",|
00000370  2c 64 69 72 24 2b 22 2e  54 65 6d 70 6c 61 74 65  |,dir$+".Template|
00000380  73 22 0d 01 54 23 69 6e  66 6f 25 3d a4 6c 6f 61  |s"..T#info%=.loa|
00000390  64 74 65 6d 70 6c 61 74  65 28 22 69 6e 66 6f 22  |dtemplate("info"|
000003a0  2c 32 35 36 29 0d 01 5e  29 6f 70 74 69 6f 6e 73  |,256)..^)options|
000003b0  25 3d a4 6c 6f 61 64 74  65 6d 70 6c 61 74 65 28  |%=.loadtemplate(|
000003c0  22 6f 70 74 69 6f 6e 73  22 2c 32 35 36 29 0d 01  |"options",256)..|
000003d0  68 1b c8 99 20 22 57 69  6d 70 5f 43 6c 6f 73 65  |h... "Wimp_Close|
000003e0  54 65 6d 70 6c 61 74 65  22 0d 01 72 18 6d 65 6e  |Template"..r.men|
000003f0  75 70 74 72 25 3d 6d 65  6e 75 62 75 66 66 65 72  |uptr%=menubuffer|
00000400  25 0d 01 7c 41 6d 65 6e  75 62 61 72 25 3d a4 63  |%..|Amenubar%=.c|
00000410  72 6d 65 6e 75 28 22 49  6e 73 65 72 74 2c 49 6e  |rmenu("Insert,In|
00000420  66 6f 3e 2c 69 6e 66 6f  25 2c 4f 70 74 69 6f 6e  |fo>,info%,Option|
00000430  73 3e 2c 6f 70 74 69 6f  6e 73 25 2c 51 75 69 74  |s>,options%,Quit|
00000440  22 29 0d 01 86 1b 62 61  72 68 65 69 67 68 74 25  |")....barheight%|
00000450  3d 69 74 65 6d 73 25 2a  34 34 2b 39 36 0d 01 90  |=items%*44+96...|
00000460  0a 65 78 69 74 3d a3 0d  01 9a 0a 74 73 25 3d 2d  |.exit=.....ts%=-|
00000470  31 0d 01 a4 0e 73 65 6e  64 69 6e 67 25 3d a3 0d  |1....sending%=..|
00000480  01 ae 0f 63 61 6c 6c 74  79 70 65 25 3d 30 0d 01  |...calltype%=0..|
00000490  b8 05 e1 0d 01 c2 04 0d  01 cc 10 dd 20 f2 63 6c  |............ .cl|
000004a0  6f 73 65 64 6f 77 6e 0d  01 d6 1f c8 99 20 22 57  |osedown...... "W|
000004b0  69 6d 70 5f 43 6c 6f 73  65 44 6f 77 6e 22 2c 6d  |imp_CloseDown",m|
000004c0  79 74 61 73 6b 25 0d 01  e0 05 e0 0d 01 ea 04 0d  |ytask%..........|
000004d0  01 f4 0b dd 20 f2 73 65  6e 64 0d 01 fe 10 e7 20  |.... .send..... |
000004e0  73 65 6e 64 69 6e 67 25  20 8c 0d 02 08 10 20 e7  |sending% ..... .|
000004f0  20 74 70 25 3c 74 73 25  20 8c 0d 02 12 13 20 6b  | tp%<ts% ..... k|
00000500  65 79 25 3d 74 65 78 74  25 3f 74 70 25 0d 02 1c  |ey%=text%?tp%...|
00000510  18 20 e7 20 6b 65 79 25  3d 31 30 20 8c 20 6b 65  |. . key%=10 . ke|
00000520  79 25 3d 31 33 0d 02 26  1f 20 20 c8 99 20 22 57  |y%=13..&.  .. "W|
00000530  69 6d 70 5f 50 72 6f 63  65 73 73 4b 65 79 22 2c  |imp_ProcessKey",|
00000540  6b 65 79 25 0d 02 30 0c  20 20 74 70 25 2b 3d 31  |key%..0.  tp%+=1|
00000550  0d 02 3a 06 20 cc 0d 02  44 10 20 20 73 65 6e 64  |..:. ...D.  send|
00000560  69 6e 67 25 3d a3 0d 02  4e 0b 20 20 74 70 25 3d  |ing%=...N.  tp%=|
00000570  30 0d 02 58 06 20 cd 0d  02 62 05 cc 0d 02 6c 1c  |0..X. ...b....l.|
00000580  20 e7 20 63 61 6c 6c 74  79 70 65 25 3d 32 20 80  | . calltype%=2 .|
00000590  20 a6 28 2d 31 29 20 8c  0d 02 76 24 20 20 c8 99  | .(-1) ...v$  ..|
000005a0  20 22 57 69 6d 70 5f 47  65 74 50 6f 69 6e 74 65  | "Wimp_GetPointe|
000005b0  72 49 6e 66 6f 22 2c 2c  62 6c 6b 25 0d 02 80 27  |rInfo",,blk%...'|
000005c0  20 20 e7 20 62 6c 6b 25  21 31 32 3d 2d 32 20 80  |  . blk%!12=-2 .|
000005d0  20 62 6c 6b 25 21 31 36  3d 69 63 6f 6e 62 61 72  | blk%!16=iconbar|
000005e0  25 20 8c 0d 02 8a 12 20  20 20 20 73 65 6e 64 69  |% .....    sendi|
000005f0  6e 67 25 3d b9 0d 02 94  0d 20 20 20 20 74 70 25  |ng%=.....    tp%|
00000600  3d 30 0d 02 9e 07 20 20  cd 0d 02 a8 07 20 20 f5  |=0....  .....  .|
00000610  0d 02 b2 0f 20 20 fd 20  ac 20 a6 28 2d 31 29 0d  |....  . . .(-1).|
00000620  02 bc 06 20 cd 0d 02 c6  05 cd 0d 02 d0 05 e1 0d  |... ............|
00000630  02 da 04 0d 02 e4 26 dd  20 f2 6d 6f 75 73 65 28  |......&. .mouse(|
00000640  6d 78 25 2c 6d 79 25 2c  62 75 74 25 2c 77 69 6e  |mx%,my%,but%,win|
00000650  64 25 2c 69 63 6f 6e 25  29 0d 02 ee 0e c8 8e 20  |d%,icon%)...... |
00000660  77 69 6e 64 25 20 ca 0d  02 f8 0a 20 20 c9 20 2d  |wind% .....  . -|
00000670  32 0d 03 02 11 20 20 20  20 c8 8e 20 62 75 74 25  |2....    .. but%|
00000680  20 ca 0d 03 0c 2c 20 20  20 20 20 20 c9 20 32 3a  | ....,      . 2:|
00000690  f2 6d 65 6e 75 28 6d 65  6e 75 62 61 72 25 2c 6d  |.menu(menubar%,m|
000006a0  78 25 2c 62 61 72 68 65  69 67 68 74 25 29 0d 03  |x%,barheight%)..|
000006b0  16 2e 20 20 20 20 20 20  c9 20 34 3a e7 20 63 61  |..      . 4:. ca|
000006c0  6c 6c 74 79 70 65 25 3d  31 20 8c 20 73 65 6e 64  |lltype%=1 . send|
000006d0  69 6e 67 25 3d b9 3a 74  70 25 3d 30 0d 03 20 09  |ing%=.:tp%=0.. .|
000006e0  20 20 20 20 cb 0d 03 2a  46 20 20 c9 20 6f 70 74  |    ...*F  . opt|
000006f0  69 6f 6e 73 25 3a e7 20  69 63 6f 6e 25 3e 3d 30  |ions%:. icon%>=0|
00000700  20 8c 20 63 61 6c 6c 74  79 70 65 25 3d 69 63 6f  | . calltype%=ico|
00000710  6e 25 3a c8 99 20 22 57  69 6d 70 5f 43 72 65 61  |n%:.. "Wimp_Crea|
00000720  74 65 4d 65 6e 75 22 2c  2c 2d 31 0d 03 34 05 cb  |teMenu",,-1..4..|
00000730  0d 03 3e 05 e1 0d 03 48  04 0d 03 52 18 dd 20 f2  |..>....H...R.. .|
00000740  6d 65 6e 75 28 64 61 74  61 25 2c 78 25 2c 79 25  |menu(data%,x%,y%|
00000750  29 0d 03 5c 13 6f 70 65  6e 6d 65 6e 75 25 3d 64  |)..\.openmenu%=d|
00000760  61 74 61 25 0d 03 66 19  78 25 3d 78 25 2d 28 64  |ata%..f.x%=x%-(d|
00000770  61 74 61 25 21 31 36 29  2f 32 2d 31 36 0d 03 70  |ata%!16)/2-16..p|
00000780  25 c8 99 20 22 57 69 6d  70 5f 43 72 65 61 74 65  |%.. "Wimp_Create|
00000790  4d 65 6e 75 22 2c 2c 64  61 74 61 25 2c 78 25 2c  |Menu",,data%,x%,|
000007a0  79 25 0d 03 7a 05 e1 0d  03 84 04 0d 03 8e 23 dd  |y%..z.........#.|
000007b0  20 f2 6d 65 73 73 61 67  65 28 74 61 73 6b 25 2c  | .message(task%,|
000007c0  72 65 66 25 2c 6d 65 73  73 61 67 65 25 29 0d 03  |ref%,message%)..|
000007d0  98 11 c8 8e 20 6d 65 73  73 61 67 65 25 20 ca 0d  |.... message% ..|
000007e0  03 a2 14 20 20 c9 20 30  3a f2 63 6c 6f 73 65 64  |...  . 0:.closed|
000007f0  6f 77 6e 0d 03 ac 0a 20  20 c9 20 31 3a 0d 03 b6  |own....  . 1:...|
00000800  16 20 20 20 20 e7 20 62  6c 6b 25 21 34 30 3d 26  |.    . blk%!40=&|
00000810  46 46 46 0d 03 c0 17 20  20 20 20 20 20 73 69 7a  |FFF....      siz|
00000820  65 25 3d 62 6c 6b 25 21  33 36 0d 03 ca 18 20 20  |e%=blk%!36....  |
00000830  20 20 20 20 e7 20 73 69  7a 65 25 3c 3d 62 73 25  |    . size%<=bs%|
00000840  20 8c 0d 03 d4 14 20 20  20 20 20 20 20 20 74 72  | .....        tr|
00000850  61 6e 73 25 3d 30 0d 03  de 11 20 20 20 20 20 20  |ans%=0....      |
00000860  20 20 74 70 25 3d 30 0d  03 e8 12 20 20 20 20 20  |  tp%=0....     |
00000870  20 20 20 74 73 25 3d 2d  31 0d 03 f2 22 20 20 20  |   ts%=-1..."   |
00000880  20 20 20 20 20 66 69 6c  65 24 3d a4 73 74 72 69  |     file$=.stri|
00000890  6e 67 28 62 6c 6b 25 2b  34 34 29 0d 03 fc 19 20  |ng(blk%+44).... |
000008a0  20 20 20 20 20 20 20 62  6c 6b 25 21 32 30 3d 74  |       blk%!20=t|
000008b0  65 78 74 25 0d 04 06 19  20 20 20 20 20 20 20 20  |ext%....        |
000008c0  62 6c 6b 25 21 32 34 3d  73 69 7a 65 25 0d 04 10  |blk%!24=size%...|
000008d0  18 20 20 20 20 20 20 20  20 f2 72 65 70 6c 79 28  |.        .reply(|
000008e0  31 38 2c 36 29 0d 04 1a  0b 20 20 20 20 20 20 cc  |18,6)....      .|
000008f0  0d 04 24 25 20 20 20 20  20 20 20 20 f2 72 65 70  |..$%        .rep|
00000900  6f 72 74 28 22 46 69 6c  65 20 74 6f 6f 20 6c 61  |ort("File too la|
00000910  72 67 65 22 29 0d 04 2e  0b 20 20 20 20 20 20 cd  |rge")....      .|
00000920  0d 04 38 09 20 20 20 20  cd 0d 04 42 0a 20 20 c9  |..8.    ...B.  .|
00000930  20 33 3a 0d 04 4c 18 20  20 20 20 e7 20 62 6c 6b  | 3:..L.    . blk|
00000940  25 21 34 30 3d 26 46 46  46 20 8c 0d 04 56 20 20  |%!40=&FFF ...V  |
00000950  20 20 20 20 20 66 69 6c  65 24 3d a4 73 74 72 69  |     file$=.stri|
00000960  6e 67 28 62 6c 6b 25 2b  34 34 29 0d 04 60 2a 20  |ng(blk%+44)..`* |
00000970  20 20 20 20 20 c8 99 20  22 4f 53 5f 46 69 6c 65  |     .. "OS_File|
00000980  22 2c 35 2c 66 69 6c 65  24 20 b8 20 2c 2c 2c 2c  |",5,file$ . ,,,,|
00000990  73 69 7a 65 25 0d 04 6a  18 20 20 20 20 20 20 e7  |size%..j.      .|
000009a0  20 73 69 7a 65 25 3c 3d  62 73 25 20 8c 0d 04 74  | size%<=bs% ...t|
000009b0  12 20 20 20 20 20 20 20  20 74 73 25 3d 2d 31 0d  |.        ts%=-1.|
000009c0  04 7e 2c 20 20 20 20 20  20 20 20 c8 99 20 22 57  |.~,        .. "W|
000009d0  69 6d 70 5f 47 65 74 50  6f 69 6e 74 65 72 49 6e  |imp_GetPointerIn|
000009e0  66 6f 22 2c 2c 62 6c 6b  25 2b 38 0d 04 88 1a 20  |fo",,blk%+8.... |
000009f0  20 20 20 20 20 20 20 62  6c 6b 25 21 32 38 3d 62  |       blk%!28=b|
00000a00  6c 6b 25 21 38 0d 04 92  1b 20 20 20 20 20 20 20  |lk%!8....       |
00000a10  20 62 6c 6b 25 21 33 32  3d 62 6c 6b 25 21 31 32  | blk%!32=blk%!12|
00000a20  0d 04 9c 16 20 20 20 20  20 20 20 20 62 6c 6b 25  |....        blk%|
00000a30  21 33 36 3d 2d 31 0d 04  a6 20 20 20 20 20 20 20  |!36=-1...       |
00000a40  20 20 21 62 6c 6b 25 3d  28 34 38 2b a9 66 69 6c  |  !blk%=(48+.fil|
00000a50  65 24 29 80 ac 33 0d 04  b0 1f 20 20 20 20 20 20  |e$)..3....      |
00000a60  20 20 24 28 62 6c 6b 25  2b 34 34 29 3d 66 69 6c  |  $(blk%+44)=fil|
00000a70  65 24 2b bd 30 0d 04 ba  18 20 20 20 20 20 20 20  |e$+.0....       |
00000a80  20 f2 72 65 70 6c 79 28  31 37 2c 34 29 0d 04 c4  | .reply(17,4)...|
00000a90  28 20 20 20 20 20 20 20  20 c8 99 20 22 4f 53 5f  |(        .. "OS_|
00000aa0  46 69 6c 65 22 2c 32 35  35 2c 66 69 6c 65 24 2c  |File",255,file$,|
00000ab0  74 65 78 74 25 0d 04 ce  15 20 20 20 20 20 20 20  |text%....       |
00000ac0  20 74 73 25 3d 73 69 7a  65 25 0d 04 d8 11 20 20  | ts%=size%....  |
00000ad0  20 20 20 20 20 20 74 70  25 3d 30 0d 04 e2 26 20  |      tp%=0...& |
00000ae0  20 20 20 20 20 20 20 e7  20 63 61 6c 6c 74 79 70  |       . calltyp|
00000af0  65 25 3d 30 20 8c 20 73  65 6e 64 69 6e 67 25 3d  |e%=0 . sending%=|
00000b00  b9 0d 04 ec 0b 20 20 20  20 20 20 cc 0d 04 f6 25  |.....      ....%|
00000b10  20 20 20 20 20 20 20 20  f2 72 65 70 6f 72 74 28  |        .report(|
00000b20  22 46 69 6c 65 20 74 6f  6f 20 6c 61 72 67 65 22  |"File too large"|
00000b30  29 0d 05 00 0b 20 20 20  20 20 20 cd 0d 05 0a 09  |)....      .....|
00000b40  20 20 20 20 cd 0d 05 14  0a 20 20 c9 20 37 3a 0d  |    .....  . 7:.|
00000b50  05 1e 17 20 20 20 20 74  72 61 6e 73 25 2b 3d 62  |...    trans%+=b|
00000b60  6c 6b 25 21 32 34 0d 05  28 18 20 20 20 20 e7 20  |lk%!24..(.    . |
00000b70  74 72 61 6e 73 25 3d 73  69 7a 65 25 20 8c 0d 05  |trans%=size% ...|
00000b80  32 13 20 20 20 20 20 20  74 73 25 3d 73 69 7a 65  |2.      ts%=size|
00000b90  25 0d 05 3c 0f 20 20 20  20 20 20 74 70 25 3d 30  |%..<.      tp%=0|
00000ba0  0d 05 46 24 20 20 20 20  20 20 e7 20 63 61 6c 6c  |..F$      . call|
00000bb0  74 79 70 65 25 3d 30 20  8c 20 73 65 6e 64 69 6e  |type%=0 . sendin|
00000bc0  67 25 3d b9 0d 05 50 09  20 20 20 20 cc 0d 05 5a  |g%=...P.    ...Z|
00000bd0  1a 20 20 20 20 20 20 62  6c 6b 25 21 32 30 2b 3d  |.      blk%!20+=|
00000be0  62 6c 6b 25 21 32 34 0d  05 64 1e 20 20 20 20 20  |blk%!24..d.     |
00000bf0  20 62 6c 6b 25 21 32 34  3d 73 69 7a 65 25 2d 74  | blk%!24=size%-t|
00000c00  72 61 6e 73 25 0d 05 6e  16 20 20 20 20 20 20 f2  |rans%..n.      .|
00000c10  72 65 70 6c 79 28 31 38  2c 36 29 0d 05 78 09 20  |reply(18,6)..x. |
00000c20  20 20 20 cd 0d 05 82 05  cb 0d 05 8c 05 e1 0d 05  |   .............|
00000c30  96 04 0d 05 a0 1b dd 20  f2 72 65 70 6c 79 28 74  |....... .reply(t|
00000c40  79 70 65 25 2c 72 65 61  73 6f 6e 25 29 0d 05 aa  |ype%,reason%)...|
00000c50  10 62 6c 6b 25 21 31 32  3d 72 65 66 25 0d 05 b4  |.blk%!12=ref%...|
00000c60  13 62 6c 6b 25 21 31 36  3d 72 65 61 73 6f 6e 25  |.blk%!16=reason%|
00000c70  0d 05 be 2a c8 99 20 22  57 69 6d 70 5f 53 65 6e  |...*.. "Wimp_Sen|
00000c80  64 4d 65 73 73 61 67 65  22 2c 74 79 70 65 25 2c  |dMessage",type%,|
00000c90  62 6c 6b 25 2c 74 61 73  6b 25 0d 05 c8 05 e1 0d  |blk%,task%......|
00000ca0  05 d2 04 0d 05 dc 22 dd  20 a4 6c 6f 61 64 74 65  |......". .loadte|
00000cb0  6d 70 6c 61 74 65 28 74  69 74 6c 65 24 2c 69 6e  |mplate(title$,in|
00000cc0  64 69 72 25 29 0d 05 e6  12 de 20 62 75 66 66 25  |dir%)..... buff%|
00000cd0  20 69 6e 64 69 72 25 0d  05 f0 3d c8 99 20 22 57  | indir%...=.. "W|
00000ce0  69 6d 70 5f 4c 6f 61 64  54 65 6d 70 6c 61 74 65  |imp_LoadTemplate|
00000cf0  22 2c 2c 62 6c 6b 25 2c  62 75 66 66 25 2c 62 75  |",,blk%,buff%,bu|
00000d00  66 66 25 2b 69 6e 64 69  72 25 2c 2d 31 2c 74 69  |ff%+indir%,-1,ti|
00000d10  74 6c 65 24 0d 05 fa 28  c8 99 20 22 57 69 6d 70  |tle$...(.. "Wimp|
00000d20  5f 43 72 65 61 74 65 57  69 6e 64 6f 77 22 2c 2c  |_CreateWindow",,|
00000d30  62 6c 6b 25 20 b8 20 77  69 6e 64 25 0d 06 04 0a  |blk% . wind%....|
00000d40  3d 77 69 6e 64 25 0d 06  0e 04 0d 06 18 14 dd 20  |=wind%......... |
00000d50  a4 63 72 6d 65 6e 75 28  74 65 78 74 24 29 0d 06  |.crmenu(text$)..|
00000d60  22 14 6f 6c 64 70 74 72  25 3d 6d 65 6e 75 70 74  |".oldptr%=menupt|
00000d70  72 25 0d 06 2c 0c 69 74  65 6d 73 25 3d 30 0d 06  |r%..,.items%=0..|
00000d80  36 0e 74 65 78 74 24 2b  3d 22 2c 22 0d 06 40 1b  |6.text$+=","..@.|
00000d90  74 69 74 6c 65 24 3d a4  6e 65 78 74 77 6f 72 64  |title$=.nextword|
00000da0  28 74 65 78 74 24 29 0d  06 4a 14 24 6d 65 6e 75  |(text$)..J.$menu|
00000db0  70 74 72 25 3d 74 69 74  6c 65 24 0d 06 54 10 6d  |ptr%=title$..T.m|
00000dc0  61 78 25 3d a9 74 69 74  6c 65 24 0d 06 5e 16 6d  |ax%=.title$..^.m|
00000dd0  65 6e 75 70 74 72 25 21  31 32 3d 26 37 30 32 30  |enuptr%!12=&7020|
00000de0  37 0d 06 68 12 6d 65 6e  75 70 74 72 25 21 32 30  |7..h.menuptr%!20|
00000df0  3d 34 34 0d 06 72 11 6d  65 6e 75 70 74 72 25 21  |=44..r.menuptr%!|
00000e00  32 34 3d 30 0d 06 7c 0f  6d 65 6e 75 70 74 72 25  |24=0..|.menuptr%|
00000e10  2b 3d 34 0d 06 86 10 c8  95 20 74 65 78 74 24 3c  |+=4...... text$<|
00000e20  3e 22 22 0d 06 90 0f 20  20 69 74 65 6d 73 25 2b  |>""....  items%+|
00000e30  3d 31 0d 06 9a 12 20 20  6d 65 6e 75 70 74 72 25  |=1....  menuptr%|
00000e40  2b 3d 32 34 0d 06 a4 11  20 20 21 6d 65 6e 75 70  |+=24....  !menup|
00000e50  74 72 25 3d 30 0d 06 ae  12 20 20 6d 65 6e 75 70  |tr%=0....  menup|
00000e60  74 72 25 21 34 3d 30 0d  06 b8 1c 20 20 77 6f 72  |tr%!4=0....  wor|
00000e70  64 24 3d a4 6e 65 78 74  77 6f 72 64 28 74 65 78  |d$=.nextword(tex|
00000e80  74 24 29 0d 06 c2 1a 20  20 74 6f 6b 65 6e 24 3d  |t$)....  token$=|
00000e90  a4 74 6f 6b 65 6e 28 77  6f 72 64 24 29 0d 06 cc  |.token(word$)...|
00000ea0  13 20 20 c8 95 20 74 6f  6b 65 6e 24 3c 3e 22 22  |.  .. token$<>""|
00000eb0  0d 06 d6 13 20 20 20 20  c8 8e 20 74 6f 6b 65 6e  |....    .. token|
00000ec0  24 20 ca 0d 06 e0 2e 20  20 20 20 20 20 c9 20 22  |$ .....      . "|
00000ed0  3e 22 3a 6d 65 6e 75 70  74 72 25 21 34 3d a0 28  |>":menuptr%!4=.(|
00000ee0  a4 6e 65 78 74 77 6f 72  64 28 74 65 78 74 24 29  |.nextword(text$)|
00000ef0  29 0d 06 ea 27 20 20 20  20 20 20 c9 20 22 2f 22  |)...'      . "/"|
00000f00  3a 21 6d 65 6e 75 70 74  72 25 3d 21 6d 65 6e 75  |:!menuptr%=!menu|
00000f10  70 74 72 25 20 84 20 31  0d 06 f4 27 20 20 20 20  |ptr% . 1...'    |
00000f20  20 20 c9 20 22 2d 22 3a  21 6d 65 6e 75 70 74 72  |  . "-":!menuptr|
00000f30  25 3d 21 6d 65 6e 75 70  74 72 25 20 84 20 32 0d  |%=!menuptr% . 2.|
00000f40  06 fe 27 20 20 20 20 20  20 c9 20 22 21 22 3a 21  |..'      . "!":!|
00000f50  6d 65 6e 75 70 74 72 25  3d 21 6d 65 6e 75 70 74  |menuptr%=!menupt|
00000f60  72 25 20 84 20 34 0d 07  08 09 20 20 20 20 cb 0d  |r% . 4....    ..|
00000f70  07 12 1c 20 20 20 20 74  6f 6b 65 6e 24 3d a4 74  |...    token$=.t|
00000f80  6f 6b 65 6e 28 77 6f 72  64 24 29 0d 07 1c 07 20  |oken(word$).... |
00000f90  20 ce 0d 07 26 21 20 20  6d 65 6e 75 70 74 72 25  | ...&!  menuptr%|
00000fa0  21 38 3d 28 37 3c 3c 32  34 29 20 84 20 25 31 30  |!8=(7<<24) . %10|
00000fb0  30 30 31 0d 07 30 24 20  20 e7 20 21 6d 65 6e 75  |001..0$  . !menu|
00000fc0  70 74 72 25 20 80 20 34  20 84 20 74 6f 6b 65 6e  |ptr% . 4 . token|
00000fd0  24 3d 22 23 22 20 8c 0d  07 3a 24 20 20 20 20 6d  |$="#" ...:$    m|
00000fe0  65 6e 75 70 74 72 25 21  38 3d 6d 65 6e 75 70 74  |enuptr%!8=menupt|
00000ff0  72 25 21 38 20 84 20 31  3c 3c 38 0d 07 44 27 20  |r%!8 . 1<<8..D' |
00001000  20 20 20 6d 65 6e 75 70  74 72 25 21 31 32 3d a0  |   menuptr%!12=.|
00001010  28 a4 6e 65 78 74 77 6f  72 64 28 74 65 78 74 24  |(.nextword(text$|
00001020  29 29 0d 07 4e 16 20 20  20 20 6d 65 6e 75 70 74  |))..N.    menupt|
00001030  72 25 21 31 36 3d 2d 31  0d 07 58 1c 20 20 20 20  |r%!16=-1..X.    |
00001040  6d 65 6e 75 70 74 72 25  21 32 30 3d a0 28 77 6f  |menuptr%!20=.(wo|
00001050  72 64 24 29 0d 07 62 41  20 20 20 20 e7 20 6d 65  |rd$)..bA    . me|
00001060  6e 75 70 74 72 25 21 32  30 3e 6d 61 78 25 20 80  |nuptr%!20>max% .|
00001070  20 28 21 6d 65 6e 75 70  74 72 25 20 80 20 34 29  | (!menuptr% . 4)|
00001080  3d 30 20 8c 20 6d 61 78  25 3d 6d 65 6e 75 70 74  |=0 . max%=menupt|
00001090  72 25 21 32 30 0d 07 6c  07 20 20 cc 0d 07 76 15  |r%!20..l.  ...v.|
000010a0  20 20 20 20 e7 20 a9 77  6f 72 64 24 3e 31 32 20  |    . .word$>12 |
000010b0  8c 0d 07 80 26 20 20 20  20 20 20 6d 65 6e 75 70  |....&      menup|
000010c0  74 72 25 21 38 3d 6d 65  6e 75 70 74 72 25 21 38  |tr%!8=menuptr%!8|
000010d0  20 84 20 31 3c 3c 38 0d  07 8a 1e 20 20 20 20 20  | . 1<<8....     |
000010e0  20 de 20 6d 65 6e 75 70  74 72 25 21 31 32 20 a9  | . menuptr%!12 .|
000010f0  77 6f 72 64 24 0d 07 94  1e 20 20 20 20 20 20 24  |word$....      $|
00001100  28 6d 65 6e 75 70 74 72  25 21 31 32 29 3d 77 6f  |(menuptr%!12)=wo|
00001110  72 64 24 0d 07 9e 18 20  20 20 20 20 20 6d 65 6e  |rd$....      men|
00001120  75 70 74 72 25 21 31 36  3d 2d 31 0d 07 a8 1c 20  |uptr%!16=-1.... |
00001130  20 20 20 20 20 6d 65 6e  75 70 74 72 25 21 32 30  |     menuptr%!20|
00001140  3d a9 77 6f 72 64 24 0d  07 b2 09 20 20 20 20 cc  |=.word$....    .|
00001150  0d 07 bc 1e 20 20 20 20  20 20 24 28 6d 65 6e 75  |....      $(menu|
00001160  70 74 72 25 2b 31 32 29  3d 77 6f 72 64 24 0d 07  |ptr%+12)=word$..|
00001170  c6 09 20 20 20 20 cd 0d  07 d0 23 20 20 20 20 e7  |..    ....#    .|
00001180  20 a9 77 6f 72 64 24 3e  6d 61 78 25 20 8c 20 6d  | .word$>max% . m|
00001190  61 78 25 3d a9 77 6f 72  64 24 0d 07 da 07 20 20  |ax%=.word$....  |
000011a0  cd 0d 07 e4 05 ce 0d 07  ee 1d 21 6d 65 6e 75 70  |..........!menup|
000011b0  74 72 25 3d 21 6d 65 6e  75 70 74 72 25 20 84 20  |tr%=!menuptr% . |
000011c0  26 38 30 0d 07 f8 10 6d  65 6e 75 70 74 72 25 2b  |&80....menuptr%+|
000011d0  3d 32 34 0d 08 02 18 6f  6c 64 70 74 72 25 21 31  |=24....oldptr%!1|
000011e0  36 3d 6d 61 78 25 2a 31  36 2b 38 0d 08 0c 0c 3d  |6=max%*16+8....=|
000011f0  6f 6c 64 70 74 72 25 0d  08 16 04 0d 08 20 15 dd  |oldptr%...... ..|
00001200  20 a4 74 6f 6b 65 6e 28  f8 20 77 6f 72 64 24 29  | .token(. word$)|
00001210  0d 08 2a 0d 74 6f 6b 65  6e 24 3d 22 22 0d 08 34  |..*.token$=""..4|
00001220  19 e7 20 a7 22 3e 2f 21  23 2d 22 2c c2 77 6f 72  |.. .">/!#-",.wor|
00001230  64 24 29 29 20 8c 0d 08  3e 16 20 20 74 6f 6b 65  |d$)) ...>.  toke|
00001240  6e 24 3d c2 77 6f 72 64  24 2c 31 29 0d 08 48 1c  |n$=.word$,1)..H.|
00001250  20 20 77 6f 72 64 24 3d  c0 77 6f 72 64 24 2c a9  |  word$=.word$,.|
00001260  77 6f 72 64 24 2d 31 29  0d 08 52 05 cd 0d 08 5c  |word$-1)..R....\|
00001270  0b 3d 74 6f 6b 65 6e 24  0d 08 66 04 0d 08 70 18  |.=token$..f...p.|
00001280  dd 20 a4 6e 65 78 74 77  6f 72 64 28 f8 20 74 65  |. .nextword(. te|
00001290  78 74 24 29 0d 08 7a 10  ea 20 77 6f 72 64 24 2c  |xt$)..z.. word$,|
000012a0  70 6f 73 25 0d 08 84 14  70 6f 73 25 3d a7 74 65  |pos%....pos%=.te|
000012b0  78 74 24 2c 22 2c 22 29  0d 08 8e 18 77 6f 72 64  |xt$,",")....word|
000012c0  24 3d c0 74 65 78 74 24  2c 70 6f 73 25 2d 31 29  |$=.text$,pos%-1)|
000012d0  0d 08 98 18 74 65 78 74  24 3d c1 74 65 78 74 24  |....text$=.text$|
000012e0  2c 70 6f 73 25 2b 31 29  0d 08 a2 0a 3d 77 6f 72  |,pos%+1)....=wor|
000012f0  64 24 0d 08 ac 04 0d 08  b6 49 dd 20 a4 63 72 65  |d$.......I. .cre|
00001300  61 74 65 69 63 6f 6e 28  21 62 6c 6b 25 2c 62 6c  |ateicon(!blk%,bl|
00001310  6b 25 21 34 2c 62 6c 6b  25 21 38 2c 62 6c 6b 25  |k%!4,blk%!8,blk%|
00001320  21 31 32 2c 62 6c 6b 25  21 31 36 2c 62 6c 6b 25  |!12,blk%!16,blk%|
00001330  21 32 30 2c 24 28 62 6c  6b 25 2b 32 34 29 29 0d  |!20,$(blk%+24)).|
00001340  08 c0 26 c8 99 20 22 57  69 6d 70 5f 43 72 65 61  |..&.. "Wimp_Crea|
00001350  74 65 49 63 6f 6e 22 2c  2c 62 6c 6b 25 20 b8 20  |teIcon",,blk% . |
00001360  69 63 6f 6e 25 0d 08 ca  0a 3d 69 63 6f 6e 25 0d  |icon%....=icon%.|
00001370  08 d4 04 0d 08 de 16 dd  20 a4 63 68 65 63 6b 28  |........ .check(|
00001380  6d 65 73 73 61 67 65 24  29 0d 08 e8 18 c8 99 20  |message$)...... |
00001390  22 57 69 6d 70 5f 44 72  61 67 42 6f 78 22 2c 2c  |"Wimp_DragBox",,|
000013a0  30 0d 08 f2 0b 21 62 6c  6b 25 3d 30 0d 08 fc 16  |0....!blk%=0....|
000013b0  24 28 62 6c 6b 25 2b 34  29 3d 6d 65 73 73 61 67  |$(blk%+4)=messag|
000013c0  65 24 0d 09 06 45 c8 99  20 22 57 69 6d 70 5f 52  |e$...E.. "Wimp_R|
000013d0  65 70 6f 72 74 45 72 72  6f 72 22 2c 62 6c 6b 25  |eportError",blk%|
000013e0  2c 31 39 2c 22 4d 65 73  73 61 67 65 20 66 72 6f  |,19,"Message fro|
000013f0  6d 20 22 2b 70 72 6f 67  72 61 6d 24 20 b8 20 2c  |m "+program$ . ,|
00001400  61 6e 73 77 65 72 25 0d  09 10 19 e7 20 61 6e 73  |answer%..... ans|
00001410  77 65 72 25 3d 31 20 8c  20 3d b9 20 8b 20 3d a3  |wer%=1 . =. . =.|
00001420  0d 09 1a 04 0d 09 24 11  dd 20 a4 73 74 72 69 6e  |......$.. .strin|
00001430  67 28 62 25 29 0d 09 2e  08 ea 20 73 24 0d 09 38  |g(b%)..... s$..8|
00001440  09 73 24 3d 22 22 0d 09  42 0d c8 95 20 3f 62 25  |.s$=""..B... ?b%|
00001450  3e 33 31 0d 09 4c 10 20  20 73 24 2b 3d bd 28 3f  |>31..L.  s$+=.(?|
00001460  62 25 29 0d 09 56 0b 20  20 62 25 2b 3d 31 0d 09  |b%)..V.  b%+=1..|
00001470  60 05 ce 0d 09 6a 07 3d  73 24 0d 09 74 04 0d 09  |`....j.=s$..t...|
00001480  7e 17 dd 20 f2 72 65 70  6f 72 74 28 6d 65 73 73  |~.. .report(mess|
00001490  61 67 65 24 29 0d 09 88  18 c8 99 20 22 57 69 6d  |age$)...... "Wim|
000014a0  70 5f 44 72 61 67 42 6f  78 22 2c 2c 30 0d 09 92  |p_DragBox",,0...|
000014b0  0b 21 62 6c 6b 25 3d 30  0d 09 9c 16 24 28 62 6c  |.!blk%=0....$(bl|
000014c0  6b 25 2b 34 29 3d 6d 65  73 73 61 67 65 24 0d 09  |k%+4)=message$..|
000014d0  a6 29 c8 99 20 22 57 69  6d 70 5f 52 65 70 6f 72  |.).. "Wimp_Repor|
000014e0  74 45 72 72 6f 72 22 2c  62 6c 6b 25 2c 31 2c 70  |tError",blk%,1,p|
000014f0  72 6f 67 72 61 6d 24 0d  09 b0 05 e1 0d ff        |rogram$.......|
000014fe