Home » Archimedes archive » Zipped Apps » Impression Style » !WordWorks/!RunImage

!WordWorks/!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 » Zipped Apps » Impression Style
Filename: !WordWorks/!RunImage
Read OK:
File size: 0E5C bytes
Load address: 0000
Exec address: 0000
File contents
    1REM> !RunImage
    2REM
    3REM  WordWorks launcher
    4REM  LEN Computer Concepts Ltd. 1993
    5REM
    6REM  This program launches the contents of the Auto directory into the viewing
    7REM  application, ensuring that only one copy of the viewer is in use at any
    8REM  one time.
    9REM
   10
   11ON ERROR PROCreport(REPORT$+" during init (code "+STR$(ERL)+")"):END
   12SYS "Wimp_Initialise",200,&4B534154,"WordWorks startup" TO ,task%
   13PROCinit
   14
   15ON ERROR PROCerror
   16REPEAT
   17  SYS "Wimp_PollIdle",0,pollblock%,waketime% TO reason%
   18  CASE reason% OF
   19    WHEN 0:     PROCnull
   20    WHEN 17,18: PROCmessage
   21    WHEN 19:    PROCnackmessage
   22  ENDCASE
   23UNTIL finished%
   24
   25SYS "Wimp_CloseDown",task%,&4B534154
   26
   27END
   28
   29
   30DEF PROCinit
   31  namesize%=256
   32  blocksize%=256
   33  Message_DataLoadAck=4
   34  Message_DataOpen=5
   35  FileType_HyprDict=&BD7
   36  appname$="WordWorks"
   37  DIM pollblock% blocksize%
   38  DIM tempblock% blocksize%
   39  DIM namebuff% namesize%
   40  finished%=FALSE
   41  count%=0
   42  myref%=0:filename$=""
   43  waketime%=FNmonotime+(1<<24)
   44  attemptrun%=TRUE
   45  PROCnext
   46ENDPROC
   47
   48REM PROCerror relies on being called in an ON ERROR statement just before the
   49REM main poll loop so that it can drop back into the program if needed...
   50DEF PROCerror
   51  LOCAL r%
   52  !tempblock%=0
   53  PROCdollarin(tempblock%+4,REPORT$+" (Code "+STR$ERL+"). OK to continue, Cancel to quit program.")
   54  SYS "Wimp_ReportError",block,%00000011,appname$ TO ,r%
   55  IF r%=2 THEN
   56    SYS "Wimp_CloseDown",task%,&4B534154
   57    END
   58  ENDIF
   59ENDPROC
   60
   61DEF PROCnull
   62  IF filename$="" THEN
   63    PROCnext
   64    waketime%=FNmonotime+(1<<24)
   65  ELSE
   66    waketime%=FNmonotime+50
   67  ENDIF
   68ENDPROC
   69
   70DEF PROCmessage
   71  CASE pollblock%!16 OF
   72    WHEN 0: finished%=TRUE
   73    WHEN Message_DataLoadAck: PROCackdataopen
   74  ENDCASE
   75ENDPROC
   76
   77DEF PROCackdataopen
   78  IF pollblock%!12 = myref% THEN
   79    myref%=0:filename$=""
   80    PROCnext
   81  ENDIF
   82ENDPROC
   83
   84DEF PROCnackmessage
   85  CASE pollblock%!16 OF
   86    WHEN Message_DataOpen: PROCnackdataopen
   87  ENDCASE
   88ENDPROC
   89
   90DEF PROCnackdataopen
   91  IF pollblock%!8 = myref% THEN
   92    IF attemptrun% THEN
   93      SYS "Wimp_StartTask","Run <HyperView$Dir> "+filename$
   94      myref%=0:filename$=""
   95      waketime%=FNmonotime+50
   96      attemptrun%=FALSE
   97    ELSE
   98      finished%=TRUE
   99    ENDIF
  100  ENDIF
  101ENDPROC
  102
  103DEF PROCnext
  104LOCAL c%,f$
  105  IF FNnextfile(count%,filename$) THEN
  106    c%=count%
  107    IF FNnextfile(c%,f$) THEN filename$+=" -hpl" ELSE filename$+=" -hapl"
  108    PROCdataopen(filename$)
  109  ELSE
  110    finished%=TRUE
  111  ENDIF
  112ENDPROC
  113
  114DEF FNnextfile(RETURN pos%, RETURN file$)
  115  nomore%=FALSE
  116  ftype%=0
  117  REPEAT
  118    SYS "XOS_GBPB",9,"<Collins$Dir>.Auto",namebuff%,1,pos%,namesize%,"*" TO ,,,,pos%;flags%
  119    IF (flags%AND%0001) OR (pos%=-1) THEN
  120      nomore%=TRUE
  121    ELSE
  122      file$="<Collins$Dir>.Auto."+FNdollarout(namebuff%)
  123      SYS "XOS_File",5,file$ TO exists%,,ftype%;flags%
  124      ftype%=(ftype%EOR&FFF00000)>>8 AND (exists%=1) AND ((flags%AND1)=0)
  125    ENDIF
  126  UNTIL ftype%=FileType_HyprDict OR nomore%
  127=NOT nomore%
  128
  129DEF PROCdataopen(f$)
  130  pollblock%!0=(44+LEN(f$)+4)ANDNOT3
  131  pollblock%!12=0
  132  pollblock%!16=Message_DataOpen
  133  pollblock%!20=-2
  134  pollblock%!28=0
  135  pollblock%!32=0
  136  pollblock%!36=0
  137  pollblock%!40=FileType_HyprDict
  138  PROCdollarin(pollblock%+44,f$)
  139  SYS "Wimp_SendMessage",18,pollblock%,0
  140  myref%=pollblock%!8
  141ENDPROC
  142
  143DEF FNdollarout(addr%)
  144LOCAL c%,s$
  145S$=""
  146c%=?addr%
  147WHILE c%>=32
  148  s$+=CHR$c%
  149  addr%+=1
  150  c%=?addr%
  151ENDWHILE
  152=s$
  153
  154DEF PROCdollarin(addr%,s$)
  155$addr%=s$
  156addr%?LEN(s$)=0
  157ENDPROC
  158
  159DEF PROCreport(message$)
  160SYS "Hourglass_Smash"
  161!tempblock%=0
  162PROCdollarin(tempblock%+4,message$)
  163SYS "Wimp_ReportError",tempblock%,%10001,"Message from "+appname$
  164ENDPROC
  165
  166DEF FNmonotime
  167LOCAL time%
  168SYS "XOS_ReadMonotonicTime" TO time%
  169=time%
  170
  171
�> !RunImage
�
�  WordWorks launcher
$�  � Computer Concepts Ltd. 1993
�
P�  This program launches the contents of the Auto directory into the viewing
N�  application, ensuring that only one copy of the viewer is in use at any
�  one time.
	�


4� � �report(�$+" during init (code "+�(�)+")"):�
Cș "Wimp_Initialise",200,&4B534154,"WordWorks startup" � ,task%

	�init

� � �error
�
9  ș "Wimp_PollIdle",0,pollblock%,waketime% � reason%
  Ȏ reason% �
    � 0:     �null
    � 17,18: �message
    � 19:    �nackmessage
  �
� finished%

'ș "Wimp_CloseDown",task%,&4B534154

�


� �init
  namesize%=256
   blocksize%=256
!  Message_DataLoadAck=4
"  Message_DataOpen=5
#  FileType_HyprDict=&BD7
$  appname$="WordWorks"
%  � pollblock% blocksize%
&  � tempblock% blocksize%
'  � namebuff% namesize%
(  finished%=�
)  count%=0
*  myref%=0:filename$=""
+!  waketime%=�monotime+(1<<24)
,  attemptrun%=�
-  �next
.�
/
0O� PROCerror relies on being called in an ON ERROR statement just before the
1K� main poll loop so that it can drop back into the program if needed...
2� �error
3
  � r%
4  !tempblock%=0
5Z  �dollarin(tempblock%+4,�$+" (Code "+Þ+"). OK to continue, Cancel to quit program.")
6:  ș "Wimp_ReportError",block,%00000011,appname$ � ,r%
7  � r%=2 �
8+    ș "Wimp_CloseDown",task%,&4B534154
9	    �
:  �
;�
<
=� �null
>  � filename$="" �
?
    �next
@#    waketime%=�monotime+(1<<24)
A  �
B    waketime%=�monotime+50
C  �
D�
E
F� �message
G  Ȏ pollblock%!16 �
H    � 0: finished%=�
I+    � Message_DataLoadAck: �ackdataopen
J  �
K�
L
M� �ackdataopen
N   � pollblock%!12 = myref% �
O    myref%=0:filename$=""
P
    �next
Q  �
R�
S
T� �nackmessage
U  Ȏ pollblock%!16 �
V)    � Message_DataOpen: �nackdataopen
W  �
X�
Y
Z� �nackdataopen
[  � pollblock%!8 = myref% �
\    � attemptrun% �
]>      ș "Wimp_StartTask","Run <HyperView$Dir> "+filename$
^      myref%=0:filename$=""
_       waketime%=�monotime+50
`      attemptrun%=�
a	    �
b      finished%=�
c	    �
d  �
e�
f
g� �next
h� c%,f$
i%  � �nextfile(count%,filename$) �
j    c%=count%
kE    � �nextfile(c%,f$) � filename$+=" -hpl" � filename$+=" -hapl"
l    �dataopen(filename$)
m  �
n    finished%=�
o  �
p�
q
r � �nextfile(� pos%, � file$)
s  nomore%=�
t  ftype%=0
u  �
v]    ș "XOS_GBPB",9,"<Collins$Dir>.Auto",namebuff%,1,pos%,namesize%,"*" � ,,,,pos%;flags%
w&    � (flags%�%0001) � (pos%=-1) �
x      nomore%=�
y	    �
z;      file$="<Collins$Dir>.Auto."+�dollarout(namebuff%)
{8      ș "XOS_File",5,file$ � exists%,,ftype%;flags%
|E      ftype%=(ftype%�&FFF00000)>>8 � (exists%=1) � ((flags%�1)=0)
}	    �
~*  � ftype%=FileType_HyprDict � nomore%
=� nomore%
�
�� �dataopen(f$)
�"  pollblock%!0=(44+�(f$)+4)��3
�  pollblock%!12=0
�$  pollblock%!16=Message_DataOpen
�  pollblock%!20=-2
�  pollblock%!28=0
�  pollblock%!32=0
�  pollblock%!36=0
�%  pollblock%!40=FileType_HyprDict
�!  �dollarin(pollblock%+44,f$)
�+  ș "Wimp_SendMessage",18,pollblock%,0
�  myref%=pollblock%!8
��
�
�� �dollarout(addr%)
�� c%,s$
�	S$=""
�
c%=?addr%
�
ȕ c%>=32
�
  s$+=�c%
�  addr%+=1
�  c%=?addr%
��
�=s$
�
�� �dollarin(addr%,s$)
�
$addr%=s$
�addr%?�(s$)=0
��
�
�� �report(message$)
�ș "Hourglass_Smash"
�!tempblock%=0
�$�dollarin(tempblock%+4,message$)
�Dș "Wimp_ReportError",tempblock%,%10001,"Message from "+appname$
��
�
�� �monotime
�� time%
�&ș "XOS_ReadMonotonicTime" � time%
�
=time%
�
�
�
00000000  0d 00 01 10 f4 3e 20 21  52 75 6e 49 6d 61 67 65  |.....> !RunImage|
00000010  0d 00 02 05 f4 0d 00 03  19 f4 20 20 57 6f 72 64  |..........  Word|
00000020  57 6f 72 6b 73 20 6c 61  75 6e 63 68 65 72 0d 00  |Works launcher..|
00000030  04 24 f4 20 20 a9 20 43  6f 6d 70 75 74 65 72 20  |.$.  . Computer |
00000040  43 6f 6e 63 65 70 74 73  20 4c 74 64 2e 20 31 39  |Concepts Ltd. 19|
00000050  39 33 0d 00 05 05 f4 0d  00 06 50 f4 20 20 54 68  |93........P.  Th|
00000060  69 73 20 70 72 6f 67 72  61 6d 20 6c 61 75 6e 63  |is program launc|
00000070  68 65 73 20 74 68 65 20  63 6f 6e 74 65 6e 74 73  |hes the contents|
00000080  20 6f 66 20 74 68 65 20  41 75 74 6f 20 64 69 72  | of the Auto dir|
00000090  65 63 74 6f 72 79 20 69  6e 74 6f 20 74 68 65 20  |ectory into the |
000000a0  76 69 65 77 69 6e 67 0d  00 07 4e f4 20 20 61 70  |viewing...N.  ap|
000000b0  70 6c 69 63 61 74 69 6f  6e 2c 20 65 6e 73 75 72  |plication, ensur|
000000c0  69 6e 67 20 74 68 61 74  20 6f 6e 6c 79 20 6f 6e  |ing that only on|
000000d0  65 20 63 6f 70 79 20 6f  66 20 74 68 65 20 76 69  |e copy of the vi|
000000e0  65 77 65 72 20 69 73 20  69 6e 20 75 73 65 20 61  |ewer is in use a|
000000f0  74 20 61 6e 79 0d 00 08  10 f4 20 20 6f 6e 65 20  |t any.....  one |
00000100  74 69 6d 65 2e 0d 00 09  05 f4 0d 00 0a 04 0d 00  |time............|
00000110  0b 34 ee 20 85 20 f2 72  65 70 6f 72 74 28 f6 24  |.4. . .report(.$|
00000120  2b 22 20 64 75 72 69 6e  67 20 69 6e 69 74 20 28  |+" during init (|
00000130  63 6f 64 65 20 22 2b c3  28 9e 29 2b 22 29 22 29  |code "+.(.)+")")|
00000140  3a e0 0d 00 0c 43 c8 99  20 22 57 69 6d 70 5f 49  |:....C.. "Wimp_I|
00000150  6e 69 74 69 61 6c 69 73  65 22 2c 32 30 30 2c 26  |nitialise",200,&|
00000160  34 42 35 33 34 31 35 34  2c 22 57 6f 72 64 57 6f  |4B534154,"WordWo|
00000170  72 6b 73 20 73 74 61 72  74 75 70 22 20 b8 20 2c  |rks startup" . ,|
00000180  74 61 73 6b 25 0d 00 0d  09 f2 69 6e 69 74 0d 00  |task%.....init..|
00000190  0e 04 0d 00 0f 0e ee 20  85 20 f2 65 72 72 6f 72  |....... . .error|
000001a0  0d 00 10 05 f5 0d 00 11  39 20 20 c8 99 20 22 57  |........9  .. "W|
000001b0  69 6d 70 5f 50 6f 6c 6c  49 64 6c 65 22 2c 30 2c  |imp_PollIdle",0,|
000001c0  70 6f 6c 6c 62 6c 6f 63  6b 25 2c 77 61 6b 65 74  |pollblock%,waket|
000001d0  69 6d 65 25 20 b8 20 72  65 61 73 6f 6e 25 0d 00  |ime% . reason%..|
000001e0  12 12 20 20 c8 8e 20 72  65 61 73 6f 6e 25 20 ca  |..  .. reason% .|
000001f0  0d 00 13 16 20 20 20 20  c9 20 30 3a 20 20 20 20  |....    . 0:    |
00000200  20 f2 6e 75 6c 6c 0d 00  14 19 20 20 20 20 c9 20  | .null....    . |
00000210  31 37 2c 31 38 3a 20 f2  6d 65 73 73 61 67 65 0d  |17,18: .message.|
00000220  00 15 1d 20 20 20 20 c9  20 31 39 3a 20 20 20 20  |...    . 19:    |
00000230  f2 6e 61 63 6b 6d 65 73  73 61 67 65 0d 00 16 07  |.nackmessage....|
00000240  20 20 cb 0d 00 17 0f fd  20 66 69 6e 69 73 68 65  |  ...... finishe|
00000250  64 25 0d 00 18 04 0d 00  19 27 c8 99 20 22 57 69  |d%.......'.. "Wi|
00000260  6d 70 5f 43 6c 6f 73 65  44 6f 77 6e 22 2c 74 61  |mp_CloseDown",ta|
00000270  73 6b 25 2c 26 34 42 35  33 34 31 35 34 0d 00 1a  |sk%,&4B534154...|
00000280  04 0d 00 1b 05 e0 0d 00  1c 04 0d 00 1d 04 0d 00  |................|
00000290  1e 0b dd 20 f2 69 6e 69  74 0d 00 1f 13 20 20 6e  |... .init....  n|
000002a0  61 6d 65 73 69 7a 65 25  3d 32 35 36 0d 00 20 14  |amesize%=256.. .|
000002b0  20 20 62 6c 6f 63 6b 73  69 7a 65 25 3d 32 35 36  |  blocksize%=256|
000002c0  0d 00 21 1b 20 20 4d 65  73 73 61 67 65 5f 44 61  |..!.  Message_Da|
000002d0  74 61 4c 6f 61 64 41 63  6b 3d 34 0d 00 22 18 20  |taLoadAck=4..". |
000002e0  20 4d 65 73 73 61 67 65  5f 44 61 74 61 4f 70 65  | Message_DataOpe|
000002f0  6e 3d 35 0d 00 23 1c 20  20 46 69 6c 65 54 79 70  |n=5..#.  FileTyp|
00000300  65 5f 48 79 70 72 44 69  63 74 3d 26 42 44 37 0d  |e_HyprDict=&BD7.|
00000310  00 24 1a 20 20 61 70 70  6e 61 6d 65 24 3d 22 57  |.$.  appname$="W|
00000320  6f 72 64 57 6f 72 6b 73  22 0d 00 25 1d 20 20 de  |ordWorks"..%.  .|
00000330  20 70 6f 6c 6c 62 6c 6f  63 6b 25 20 62 6c 6f 63  | pollblock% bloc|
00000340  6b 73 69 7a 65 25 0d 00  26 1d 20 20 de 20 74 65  |ksize%..&.  . te|
00000350  6d 70 62 6c 6f 63 6b 25  20 62 6c 6f 63 6b 73 69  |mpblock% blocksi|
00000360  7a 65 25 0d 00 27 1b 20  20 de 20 6e 61 6d 65 62  |ze%..'.  . nameb|
00000370  75 66 66 25 20 6e 61 6d  65 73 69 7a 65 25 0d 00  |uff% namesize%..|
00000380  28 11 20 20 66 69 6e 69  73 68 65 64 25 3d a3 0d  |(.  finished%=..|
00000390  00 29 0e 20 20 63 6f 75  6e 74 25 3d 30 0d 00 2a  |.).  count%=0..*|
000003a0  1b 20 20 6d 79 72 65 66  25 3d 30 3a 66 69 6c 65  |.  myref%=0:file|
000003b0  6e 61 6d 65 24 3d 22 22  0d 00 2b 21 20 20 77 61  |name$=""..+!  wa|
000003c0  6b 65 74 69 6d 65 25 3d  a4 6d 6f 6e 6f 74 69 6d  |ketime%=.monotim|
000003d0  65 2b 28 31 3c 3c 32 34  29 0d 00 2c 13 20 20 61  |e+(1<<24)..,.  a|
000003e0  74 74 65 6d 70 74 72 75  6e 25 3d b9 0d 00 2d 0b  |ttemptrun%=...-.|
000003f0  20 20 f2 6e 65 78 74 0d  00 2e 05 e1 0d 00 2f 04  |  .next......./.|
00000400  0d 00 30 4f f4 20 50 52  4f 43 65 72 72 6f 72 20  |..0O. PROCerror |
00000410  72 65 6c 69 65 73 20 6f  6e 20 62 65 69 6e 67 20  |relies on being |
00000420  63 61 6c 6c 65 64 20 69  6e 20 61 6e 20 4f 4e 20  |called in an ON |
00000430  45 52 52 4f 52 20 73 74  61 74 65 6d 65 6e 74 20  |ERROR statement |
00000440  6a 75 73 74 20 62 65 66  6f 72 65 20 74 68 65 0d  |just before the.|
00000450  00 31 4b f4 20 6d 61 69  6e 20 70 6f 6c 6c 20 6c  |.1K. main poll l|
00000460  6f 6f 70 20 73 6f 20 74  68 61 74 20 69 74 20 63  |oop so that it c|
00000470  61 6e 20 64 72 6f 70 20  62 61 63 6b 20 69 6e 74  |an drop back int|
00000480  6f 20 74 68 65 20 70 72  6f 67 72 61 6d 20 69 66  |o the program if|
00000490  20 6e 65 65 64 65 64 2e  2e 2e 0d 00 32 0c dd 20  | needed.....2.. |
000004a0  f2 65 72 72 6f 72 0d 00  33 0a 20 20 ea 20 72 25  |.error..3.  . r%|
000004b0  0d 00 34 13 20 20 21 74  65 6d 70 62 6c 6f 63 6b  |..4.  !tempblock|
000004c0  25 3d 30 0d 00 35 5a 20  20 f2 64 6f 6c 6c 61 72  |%=0..5Z  .dollar|
000004d0  69 6e 28 74 65 6d 70 62  6c 6f 63 6b 25 2b 34 2c  |in(tempblock%+4,|
000004e0  f6 24 2b 22 20 28 43 6f  64 65 20 22 2b c3 9e 2b  |.$+" (Code "+..+|
000004f0  22 29 2e 20 4f 4b 20 74  6f 20 63 6f 6e 74 69 6e  |"). OK to contin|
00000500  75 65 2c 20 43 61 6e 63  65 6c 20 74 6f 20 71 75  |ue, Cancel to qu|
00000510  69 74 20 70 72 6f 67 72  61 6d 2e 22 29 0d 00 36  |it program.")..6|
00000520  3a 20 20 c8 99 20 22 57  69 6d 70 5f 52 65 70 6f  |:  .. "Wimp_Repo|
00000530  72 74 45 72 72 6f 72 22  2c 62 6c 6f 63 6b 2c 25  |rtError",block,%|
00000540  30 30 30 30 30 30 31 31  2c 61 70 70 6e 61 6d 65  |00000011,appname|
00000550  24 20 b8 20 2c 72 25 0d  00 37 0e 20 20 e7 20 72  |$ . ,r%..7.  . r|
00000560  25 3d 32 20 8c 0d 00 38  2b 20 20 20 20 c8 99 20  |%=2 ...8+    .. |
00000570  22 57 69 6d 70 5f 43 6c  6f 73 65 44 6f 77 6e 22  |"Wimp_CloseDown"|
00000580  2c 74 61 73 6b 25 2c 26  34 42 35 33 34 31 35 34  |,task%,&4B534154|
00000590  0d 00 39 09 20 20 20 20  e0 0d 00 3a 07 20 20 cd  |..9.    ...:.  .|
000005a0  0d 00 3b 05 e1 0d 00 3c  04 0d 00 3d 0b dd 20 f2  |..;....<...=.. .|
000005b0  6e 75 6c 6c 0d 00 3e 16  20 20 e7 20 66 69 6c 65  |null..>.  . file|
000005c0  6e 61 6d 65 24 3d 22 22  20 8c 0d 00 3f 0d 20 20  |name$="" ...?.  |
000005d0  20 20 f2 6e 65 78 74 0d  00 40 23 20 20 20 20 77  |  .next..@#    w|
000005e0  61 6b 65 74 69 6d 65 25  3d a4 6d 6f 6e 6f 74 69  |aketime%=.monoti|
000005f0  6d 65 2b 28 31 3c 3c 32  34 29 0d 00 41 07 20 20  |me+(1<<24)..A.  |
00000600  cc 0d 00 42 1e 20 20 20  20 77 61 6b 65 74 69 6d  |...B.    waketim|
00000610  65 25 3d a4 6d 6f 6e 6f  74 69 6d 65 2b 35 30 0d  |e%=.monotime+50.|
00000620  00 43 07 20 20 cd 0d 00  44 05 e1 0d 00 45 04 0d  |.C.  ...D....E..|
00000630  00 46 0e dd 20 f2 6d 65  73 73 61 67 65 0d 00 47  |.F.. .message..G|
00000640  18 20 20 c8 8e 20 70 6f  6c 6c 62 6c 6f 63 6b 25  |.  .. pollblock%|
00000650  21 31 36 20 ca 0d 00 48  18 20 20 20 20 c9 20 30  |!16 ...H.    . 0|
00000660  3a 20 66 69 6e 69 73 68  65 64 25 3d b9 0d 00 49  |: finished%=...I|
00000670  2b 20 20 20 20 c9 20 4d  65 73 73 61 67 65 5f 44  |+    . Message_D|
00000680  61 74 61 4c 6f 61 64 41  63 6b 3a 20 f2 61 63 6b  |ataLoadAck: .ack|
00000690  64 61 74 61 6f 70 65 6e  0d 00 4a 07 20 20 cb 0d  |dataopen..J.  ..|
000006a0  00 4b 05 e1 0d 00 4c 04  0d 00 4d 12 dd 20 f2 61  |.K....L...M.. .a|
000006b0  63 6b 64 61 74 61 6f 70  65 6e 0d 00 4e 20 20 20  |ckdataopen..N   |
000006c0  e7 20 70 6f 6c 6c 62 6c  6f 63 6b 25 21 31 32 20  |. pollblock%!12 |
000006d0  3d 20 6d 79 72 65 66 25  20 8c 0d 00 4f 1d 20 20  |= myref% ...O.  |
000006e0  20 20 6d 79 72 65 66 25  3d 30 3a 66 69 6c 65 6e  |  myref%=0:filen|
000006f0  61 6d 65 24 3d 22 22 0d  00 50 0d 20 20 20 20 f2  |ame$=""..P.    .|
00000700  6e 65 78 74 0d 00 51 07  20 20 cd 0d 00 52 05 e1  |next..Q.  ...R..|
00000710  0d 00 53 04 0d 00 54 12  dd 20 f2 6e 61 63 6b 6d  |..S...T.. .nackm|
00000720  65 73 73 61 67 65 0d 00  55 18 20 20 c8 8e 20 70  |essage..U.  .. p|
00000730  6f 6c 6c 62 6c 6f 63 6b  25 21 31 36 20 ca 0d 00  |ollblock%!16 ...|
00000740  56 29 20 20 20 20 c9 20  4d 65 73 73 61 67 65 5f  |V)    . Message_|
00000750  44 61 74 61 4f 70 65 6e  3a 20 f2 6e 61 63 6b 64  |DataOpen: .nackd|
00000760  61 74 61 6f 70 65 6e 0d  00 57 07 20 20 cb 0d 00  |ataopen..W.  ...|
00000770  58 05 e1 0d 00 59 04 0d  00 5a 13 dd 20 f2 6e 61  |X....Y...Z.. .na|
00000780  63 6b 64 61 74 61 6f 70  65 6e 0d 00 5b 1f 20 20  |ckdataopen..[.  |
00000790  e7 20 70 6f 6c 6c 62 6c  6f 63 6b 25 21 38 20 3d  |. pollblock%!8 =|
000007a0  20 6d 79 72 65 66 25 20  8c 0d 00 5c 17 20 20 20  | myref% ...\.   |
000007b0  20 e7 20 61 74 74 65 6d  70 74 72 75 6e 25 20 8c  | . attemptrun% .|
000007c0  0d 00 5d 3e 20 20 20 20  20 20 c8 99 20 22 57 69  |..]>      .. "Wi|
000007d0  6d 70 5f 53 74 61 72 74  54 61 73 6b 22 2c 22 52  |mp_StartTask","R|
000007e0  75 6e 20 3c 48 79 70 65  72 56 69 65 77 24 44 69  |un <HyperView$Di|
000007f0  72 3e 20 22 2b 66 69 6c  65 6e 61 6d 65 24 0d 00  |r> "+filename$..|
00000800  5e 1f 20 20 20 20 20 20  6d 79 72 65 66 25 3d 30  |^.      myref%=0|
00000810  3a 66 69 6c 65 6e 61 6d  65 24 3d 22 22 0d 00 5f  |:filename$="".._|
00000820  20 20 20 20 20 20 20 77  61 6b 65 74 69 6d 65 25  |       waketime%|
00000830  3d a4 6d 6f 6e 6f 74 69  6d 65 2b 35 30 0d 00 60  |=.monotime+50..`|
00000840  17 20 20 20 20 20 20 61  74 74 65 6d 70 74 72 75  |.      attemptru|
00000850  6e 25 3d a3 0d 00 61 09  20 20 20 20 cc 0d 00 62  |n%=...a.    ...b|
00000860  15 20 20 20 20 20 20 66  69 6e 69 73 68 65 64 25  |.      finished%|
00000870  3d b9 0d 00 63 09 20 20  20 20 cd 0d 00 64 07 20  |=...c.    ...d. |
00000880  20 cd 0d 00 65 05 e1 0d  00 66 04 0d 00 67 0b dd  | ...e....f...g..|
00000890  20 f2 6e 65 78 74 0d 00  68 0b ea 20 63 25 2c 66  | .next..h.. c%,f|
000008a0  24 0d 00 69 25 20 20 e7  20 a4 6e 65 78 74 66 69  |$..i%  . .nextfi|
000008b0  6c 65 28 63 6f 75 6e 74  25 2c 66 69 6c 65 6e 61  |le(count%,filena|
000008c0  6d 65 24 29 20 8c 0d 00  6a 11 20 20 20 20 63 25  |me$) ...j.    c%|
000008d0  3d 63 6f 75 6e 74 25 0d  00 6b 45 20 20 20 20 e7  |=count%..kE    .|
000008e0  20 a4 6e 65 78 74 66 69  6c 65 28 63 25 2c 66 24  | .nextfile(c%,f$|
000008f0  29 20 8c 20 66 69 6c 65  6e 61 6d 65 24 2b 3d 22  |) . filename$+="|
00000900  20 2d 68 70 6c 22 20 8b  20 66 69 6c 65 6e 61 6d  | -hpl" . filenam|
00000910  65 24 2b 3d 22 20 2d 68  61 70 6c 22 0d 00 6c 1c  |e$+=" -hapl"..l.|
00000920  20 20 20 20 f2 64 61 74  61 6f 70 65 6e 28 66 69  |    .dataopen(fi|
00000930  6c 65 6e 61 6d 65 24 29  0d 00 6d 07 20 20 cc 0d  |lename$)..m.  ..|
00000940  00 6e 13 20 20 20 20 66  69 6e 69 73 68 65 64 25  |.n.    finished%|
00000950  3d b9 0d 00 6f 07 20 20  cd 0d 00 70 05 e1 0d 00  |=...o.  ...p....|
00000960  71 04 0d 00 72 20 dd 20  a4 6e 65 78 74 66 69 6c  |q...r . .nextfil|
00000970  65 28 f8 20 70 6f 73 25  2c 20 f8 20 66 69 6c 65  |e(. pos%, . file|
00000980  24 29 0d 00 73 0f 20 20  6e 6f 6d 6f 72 65 25 3d  |$)..s.  nomore%=|
00000990  a3 0d 00 74 0e 20 20 66  74 79 70 65 25 3d 30 0d  |...t.  ftype%=0.|
000009a0  00 75 07 20 20 f5 0d 00  76 5d 20 20 20 20 c8 99  |.u.  ...v]    ..|
000009b0  20 22 58 4f 53 5f 47 42  50 42 22 2c 39 2c 22 3c  | "XOS_GBPB",9,"<|
000009c0  43 6f 6c 6c 69 6e 73 24  44 69 72 3e 2e 41 75 74  |Collins$Dir>.Aut|
000009d0  6f 22 2c 6e 61 6d 65 62  75 66 66 25 2c 31 2c 70  |o",namebuff%,1,p|
000009e0  6f 73 25 2c 6e 61 6d 65  73 69 7a 65 25 2c 22 2a  |os%,namesize%,"*|
000009f0  22 20 b8 20 2c 2c 2c 2c  70 6f 73 25 3b 66 6c 61  |" . ,,,,pos%;fla|
00000a00  67 73 25 0d 00 77 26 20  20 20 20 e7 20 28 66 6c  |gs%..w&    . (fl|
00000a10  61 67 73 25 80 25 30 30  30 31 29 20 84 20 28 70  |ags%.%0001) . (p|
00000a20  6f 73 25 3d 2d 31 29 20  8c 0d 00 78 13 20 20 20  |os%=-1) ...x.   |
00000a30  20 20 20 6e 6f 6d 6f 72  65 25 3d b9 0d 00 79 09  |   nomore%=...y.|
00000a40  20 20 20 20 cc 0d 00 7a  3b 20 20 20 20 20 20 66  |    ...z;      f|
00000a50  69 6c 65 24 3d 22 3c 43  6f 6c 6c 69 6e 73 24 44  |ile$="<Collins$D|
00000a60  69 72 3e 2e 41 75 74 6f  2e 22 2b a4 64 6f 6c 6c  |ir>.Auto."+.doll|
00000a70  61 72 6f 75 74 28 6e 61  6d 65 62 75 66 66 25 29  |arout(namebuff%)|
00000a80  0d 00 7b 38 20 20 20 20  20 20 c8 99 20 22 58 4f  |..{8      .. "XO|
00000a90  53 5f 46 69 6c 65 22 2c  35 2c 66 69 6c 65 24 20  |S_File",5,file$ |
00000aa0  b8 20 65 78 69 73 74 73  25 2c 2c 66 74 79 70 65  |. exists%,,ftype|
00000ab0  25 3b 66 6c 61 67 73 25  0d 00 7c 45 20 20 20 20  |%;flags%..|E    |
00000ac0  20 20 66 74 79 70 65 25  3d 28 66 74 79 70 65 25  |  ftype%=(ftype%|
00000ad0  82 26 46 46 46 30 30 30  30 30 29 3e 3e 38 20 80  |.&FFF00000)>>8 .|
00000ae0  20 28 65 78 69 73 74 73  25 3d 31 29 20 80 20 28  | (exists%=1) . (|
00000af0  28 66 6c 61 67 73 25 80  31 29 3d 30 29 0d 00 7d  |(flags%.1)=0)..}|
00000b00  09 20 20 20 20 cd 0d 00  7e 2a 20 20 fd 20 66 74  |.    ...~*  . ft|
00000b10  79 70 65 25 3d 46 69 6c  65 54 79 70 65 5f 48 79  |ype%=FileType_Hy|
00000b20  70 72 44 69 63 74 20 84  20 6e 6f 6d 6f 72 65 25  |prDict . nomore%|
00000b30  0d 00 7f 0e 3d ac 20 6e  6f 6d 6f 72 65 25 0d 00  |....=. nomore%..|
00000b40  80 04 0d 00 81 13 dd 20  f2 64 61 74 61 6f 70 65  |....... .dataope|
00000b50  6e 28 66 24 29 0d 00 82  22 20 20 70 6f 6c 6c 62  |n(f$)..."  pollb|
00000b60  6c 6f 63 6b 25 21 30 3d  28 34 34 2b a9 28 66 24  |lock%!0=(44+.(f$|
00000b70  29 2b 34 29 80 ac 33 0d  00 83 15 20 20 70 6f 6c  |)+4)..3....  pol|
00000b80  6c 62 6c 6f 63 6b 25 21  31 32 3d 30 0d 00 84 24  |lblock%!12=0...$|
00000b90  20 20 70 6f 6c 6c 62 6c  6f 63 6b 25 21 31 36 3d  |  pollblock%!16=|
00000ba0  4d 65 73 73 61 67 65 5f  44 61 74 61 4f 70 65 6e  |Message_DataOpen|
00000bb0  0d 00 85 16 20 20 70 6f  6c 6c 62 6c 6f 63 6b 25  |....  pollblock%|
00000bc0  21 32 30 3d 2d 32 0d 00  86 15 20 20 70 6f 6c 6c  |!20=-2....  poll|
00000bd0  62 6c 6f 63 6b 25 21 32  38 3d 30 0d 00 87 15 20  |block%!28=0.... |
00000be0  20 70 6f 6c 6c 62 6c 6f  63 6b 25 21 33 32 3d 30  | pollblock%!32=0|
00000bf0  0d 00 88 15 20 20 70 6f  6c 6c 62 6c 6f 63 6b 25  |....  pollblock%|
00000c00  21 33 36 3d 30 0d 00 89  25 20 20 70 6f 6c 6c 62  |!36=0...%  pollb|
00000c10  6c 6f 63 6b 25 21 34 30  3d 46 69 6c 65 54 79 70  |lock%!40=FileTyp|
00000c20  65 5f 48 79 70 72 44 69  63 74 0d 00 8a 21 20 20  |e_HyprDict...!  |
00000c30  f2 64 6f 6c 6c 61 72 69  6e 28 70 6f 6c 6c 62 6c  |.dollarin(pollbl|
00000c40  6f 63 6b 25 2b 34 34 2c  66 24 29 0d 00 8b 2b 20  |ock%+44,f$)...+ |
00000c50  20 c8 99 20 22 57 69 6d  70 5f 53 65 6e 64 4d 65  | .. "Wimp_SendMe|
00000c60  73 73 61 67 65 22 2c 31  38 2c 70 6f 6c 6c 62 6c  |ssage",18,pollbl|
00000c70  6f 63 6b 25 2c 30 0d 00  8c 19 20 20 6d 79 72 65  |ock%,0....  myre|
00000c80  66 25 3d 70 6f 6c 6c 62  6c 6f 63 6b 25 21 38 0d  |f%=pollblock%!8.|
00000c90  00 8d 05 e1 0d 00 8e 04  0d 00 8f 17 dd 20 a4 64  |............. .d|
00000ca0  6f 6c 6c 61 72 6f 75 74  28 61 64 64 72 25 29 0d  |ollarout(addr%).|
00000cb0  00 90 0b ea 20 63 25 2c  73 24 0d 00 91 09 53 24  |.... c%,s$....S$|
00000cc0  3d 22 22 0d 00 92 0d 63  25 3d 3f 61 64 64 72 25  |=""....c%=?addr%|
00000cd0  0d 00 93 0d c8 95 20 63  25 3e 3d 33 32 0d 00 94  |...... c%>=32...|
00000ce0  0d 20 20 73 24 2b 3d bd  63 25 0d 00 95 0e 20 20  |.  s$+=.c%....  |
00000cf0  61 64 64 72 25 2b 3d 31  0d 00 96 0f 20 20 63 25  |addr%+=1....  c%|
00000d00  3d 3f 61 64 64 72 25 0d  00 97 05 ce 0d 00 98 07  |=?addr%.........|
00000d10  3d 73 24 0d 00 99 04 0d  00 9a 19 dd 20 f2 64 6f  |=s$......... .do|
00000d20  6c 6c 61 72 69 6e 28 61  64 64 72 25 2c 73 24 29  |llarin(addr%,s$)|
00000d30  0d 00 9b 0d 24 61 64 64  72 25 3d 73 24 0d 00 9c  |....$addr%=s$...|
00000d40  11 61 64 64 72 25 3f a9  28 73 24 29 3d 30 0d 00  |.addr%?.(s$)=0..|
00000d50  9d 05 e1 0d 00 9e 04 0d  00 9f 17 dd 20 f2 72 65  |............ .re|
00000d60  70 6f 72 74 28 6d 65 73  73 61 67 65 24 29 0d 00  |port(message$)..|
00000d70  a0 18 c8 99 20 22 48 6f  75 72 67 6c 61 73 73 5f  |.... "Hourglass_|
00000d80  53 6d 61 73 68 22 0d 00  a1 11 21 74 65 6d 70 62  |Smash"....!tempb|
00000d90  6c 6f 63 6b 25 3d 30 0d  00 a2 24 f2 64 6f 6c 6c  |lock%=0...$.doll|
00000da0  61 72 69 6e 28 74 65 6d  70 62 6c 6f 63 6b 25 2b  |arin(tempblock%+|
00000db0  34 2c 6d 65 73 73 61 67  65 24 29 0d 00 a3 44 c8  |4,message$)...D.|
00000dc0  99 20 22 57 69 6d 70 5f  52 65 70 6f 72 74 45 72  |. "Wimp_ReportEr|
00000dd0  72 6f 72 22 2c 74 65 6d  70 62 6c 6f 63 6b 25 2c  |ror",tempblock%,|
00000de0  25 31 30 30 30 31 2c 22  4d 65 73 73 61 67 65 20  |%10001,"Message |
00000df0  66 72 6f 6d 20 22 2b 61  70 70 6e 61 6d 65 24 0d  |from "+appname$.|
00000e00  00 a4 05 e1 0d 00 a5 04  0d 00 a6 0f dd 20 a4 6d  |............. .m|
00000e10  6f 6e 6f 74 69 6d 65 0d  00 a7 0b ea 20 74 69 6d  |onotime..... tim|
00000e20  65 25 0d 00 a8 26 c8 99  20 22 58 4f 53 5f 52 65  |e%...&.. "XOS_Re|
00000e30  61 64 4d 6f 6e 6f 74 6f  6e 69 63 54 69 6d 65 22  |adMonotonicTime"|
00000e40  20 b8 20 74 69 6d 65 25  0d 00 a9 0a 3d 74 69 6d  | . time%....=tim|
00000e50  65 25 0d 00 aa 04 0d 00  ab 04 0d ff              |e%..........|
00000e5c