Home » Archimedes archive » Archimedes World » AW-1995-04-Disc1.adf » Disk1Apr95 » !AWApr95/Goodies/Draw/!Libraries/LinkLib

!AWApr95/Goodies/Draw/!Libraries/LinkLib

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 » Archimedes World » AW-1995-04-Disc1.adf » Disk1Apr95
Filename: !AWApr95/Goodies/Draw/!Libraries/LinkLib
Read OK:
File size: 1725 bytes
Load address: 0000
Exec address: 0000
File contents
    1REM >LinkLib:LinkLib
    2REM ----------------
    3REM Append Libraries
    4REM ----------------
    5
    6DEF PROC@AppendLibraries
    7 DIM crunch% 4 
    8 SYS "OS_ReadVarVal","Crunch",crunch%,4,0
    9 PROC@Heading("Libraries","-",4)
   10 NoOfLibs%=0 : NoFound%=0
   11 addlib%=OPENOUT"LibLink:AddLib"
   12 file%=OPENIN"LibLink:LIBRARIES"
   13 REPEAT
   14  x$=GET$#file%  : x%=VALx$
   15  IF x%<>0 THEN PROC@AddLibrary
   16 UNTIL EOF#file%
   17 CLOSE#file%
   18 REM CLS 
   19 COLOUR 13
   20 PRINT '"Number of libraries called:"+STR$NoOfLibs%
   21 PRINT  "Number of libraries found :"+STR$NoFound%
   22 PRINT : COLOUR 7
   23 IF NoOfLibs%>NoFound% THEN
   24  CLOSE#addlib%
   25  *DELETE LibLink:AddLib
   26  PROC@Heading("* Edit LIBRARY calls in main program! *","*",4)
   27  PROC@SendToBASIC("QUIT")
   28 ELSE
   29  *DELETE LibLink:LIBRARIES 
   30  BPUT#addlib%,"CRUNCH"+STR$(crunch%!0)
   31  BPUT#addlib%,"RENUMBER1,1"
   32  BPUT#addlib%,"*Spool LibLink:DEF"
   33  BPUT#addlib%,"LISTIFDEF"
   34  BPUT#addlib%,"*Spool"
   35  BPUT#addlib%,"PROC@Sieve"
   36  CLOSE#addlib%
   37  *SetType LibLink:AddLib Command 
   38  *Run LibLink:AddLib  
   39 ENDIF
   40ENDPROC
   41  :
   42  DEF PROC@AddLibrary
   43   NoOfLibs%+=1
   44   i%=INSTR(x$,"LIBRARY") : x$=RIGHT$(x$,LENx$-i%-6)
   45   PROC@Heading("Library "+STR$NoOfLibs%,"",5)
   46   PRINT x$
   47     IF FN@File_Exists(x$) THEN
   48      NoFound%+=1
   49      BPUT#addlib%,STR$x%
   50      BPUT#addlib%,"APPEND"+x$
   51      PROC@Heading("Found!","",5)
   52     ELSE
   53      PROC@Heading("Not found!","",6)
   54     ENDIF
   55    ENDPROC
   56   
   57    
   58REM ------------------------
   59REM Remove Unused Procedures
   60REM ------------------------
   61
   62DEF PROC@Sieve
   63 PROC@Heading("List of DEFinitions:","-",4)
   64 NoOfDefs%=FN@NoOf_DEFinitions
   65 DIM p%(NoOfDefs%+1) : p%(0)=0 : p%(NoOfDefs%+1)=65279
   66 PROC@Heading("Number of DEFinitions="+STR$NoOfDefs%,"",3)
   67 filter%=OPENOUT"LibLink:Filter"
   68  BPUT#filter%,"*Spool LibLink:PROCS"
   69  PROC@ListIfs
   70  BPUT#filter%,"*Spool"
   71  BPUT#filter%,"PROC@Filter" 
   72 CLOSE#filter% 
   73 *SetType LibLink:Filter Command
   74 PROC@Heading("PROC/FN CALLS :","-",4)
   75 *Run LibLink:Filter 
   76ENDPROC
   77  :
   78  DEF FN@NoOf_DEFinitions
   79  REM *Wipe LibLink:AddLib 
   80  NoOfDefs%=0  
   81   file%=OPENIN"LibLink:DEF"  
   82    REPEAT
   83     x$=GET$#file%  : x%=VALx$ 
   84     IF x%<>0 THEN NoOfDefs%+=1
   85    UNTIL EOF#file%
   86   CLOSE#file%
   87  =NoOfDefs%
   88  :
   89  DEF PROC@ListIfs
   90  def%=OPENIN"LibLink:DEF" 
   91    i%=0
   92    REPEAT
   93     x$=GET$#def%  : x%=VALx$
   94     IF x%<>0 THEN
   95      i%+=1
   96      p%(i%)=-x% : x$=FN@Get_DEF(x$)
   97      PRINT;i%,x$
   98      BPUT#filter%,"LISTIF"+x$
   99     ENDIF
  100    UNTIL EOF#def%    
  101   CLOSE#def%
  102   *Remove LibLink:DEF
  103  ENDPROC
  104
  105  
  106  DEF PROC@Filter  
  107  REM *Remove LibLink:Filter
  108  pass%=0  
  109  PROC@Process
  110  PROC@Delete  
  111  ENDPROC
  112    :
  113    DEF PROC@Process
  114    pass%+=1
  115    PROC@Heading("Search for PROCs/FNs used - Pass "+STR$pass%+" :","-",4)
  116    procs%=OPENIN"LibLink:PROCS"
  117    NoAdded%=0           
  118    FOR i%=1 TO NoOfDefs%
  119     x$=FN@NextPROC
  120     IF p%(i%)<0 THEN PROC@CheckPROC(procs%,x$,-p%(i%))   
  121    NEXT
  122    PRINT "# added = ";NoAdded%  
  123    CLOSE#procs%
  124    IF NoAdded%<>0 THEN PROC@Process
  125    ENDPROC
  126      :
  127      DEF FN@NextPROC
  128      REPEAT : x$=GET$#procs% : UNTIL LEFT$(x$,1)=">"
  129      =RIGHT$(x$,LENx$-7)
  130      :
  131      DEF PROC@CheckPROC(procs%,x$,line%)
  132      LOCAL ptr%,added%
  133      added%=FALSE
  134      REPEAT
  135       ptr%=PTR#procs%
  136       u$=GET$#procs% : x%=VALu$
  137       IF x%<>0 AND x%<>line% THEN
  138        added%=FN@TestAdd(x%,u$,x$)
  139        IF added% THEN PRINT;line%,x$ : p%(i%)=-p%(i%)
  140       ENDIF
  141      UNTIL LEFT$(u$,1)=">" OR added%
  142      IF LEFT$(u$,1)=">" THEN PTR#procs%=ptr%
  143      IF added% THEN NoAdded%+=1         
  144      ENDPROC
  145        :
  146        DEF FN@TestAdd(x%,u$,x$)
  147        IF FN@ValidLine(u$,x$) THEN
  148         LOCAL j% : j%=0
  149         WHILE x%>=ABS(p%(j%)) : j%+=1 : ENDWHILE
  150         result%=p%(j%-1)>=0
  151        ELSE
  152         result%=FALSE
  153        ENDIF
  154        =result%
  155        :
  156        DEF FN@ValidLine(y$,u$)
  157        LOCAL j%,valid%        
  158        CASE RIGHT$(u$) OF
  159         WHEN "(" : valid%=TRUE
  160         OTHERWISE        
  161           REPEAT     
  162            j%=INSTR(y$,u$)
  163            IF j%=0 THEN
  164              valid%=FALSE
  165            ELSE
  166              j%+=LEN(u$)
  167              IF j%>=LENy$ THEN
  168               valid%=TRUE
  169              ELSE
  170               char%=ASC(MID$(y$,j%,1))
  171               IF FN@Invalid(char%) THEN valid%=TRUE ELSE y$=RIGHT$(y$,LENy$-j%)
  172              ENDIF
  173            ENDIF
  174           UNTIL j%=0 OR valid%
  175         ENDCASE     
  176        =valid%
  177
  178
  179  DEF PROC@Delete
  180  delete%=OPENOUT"<Wimp$Scrap>"
  181   FOR i%=1 TO NoOfDefs%
  182    IF p%(i%)<0 THEN
  183     u%=ABS(p%(i%))
  184     v%=ABS(p%(i%+1))-1     
  185     BPUT#delete%,"DELETE"+STR$u%+","+STR$v%
  186    ENDIF
  187   NEXT
  188   DIM crunch% 4
  189   SYS "OS_ReadVarVal","Crunch",crunch%,4,0
  190   BPUT#delete%,"CRUNCH"+STR$(crunch%!0)
  191   BPUT#delete%,"RENUMBER1,1"   
  192   BPUT#delete%,"SAVE "+"""<Save$File>"""
  193   BPUT#delete%,"*Wipe LibLink:AddLib"
  194   BPUT#delete%,"Q"
  195   BPUT#delete%,"*Wipe LibLink:Filter"
  196   BPUT#delete%,"Q"
  197   BPUT#delete%,"*Wipe LibLink:PROCS"
  198   BPUT#delete%,"Q"
  199   BPUT#delete%,"*FX200,0"
  200   BPUT#delete%,"QUIT"
  201  CLOSE#delete%
  202  *SetType <Wimp$Scrap> Command
  203  *Run <Wimp$Scrap>
  204  ENDPROC
  205  
  206REM ---------
  207REM Utilities
  208REM ---------
  209
  210DEF PROC@SendToBASIC(x$)
  211FOR i%=1 TO LENx$
  212SYS "OS_Byte",153,0,ASC(MID$(x$,i%,1))
  213NEXT
  214SYS "OS_Byte",153,0,13
  215ENDPROC
  216
  217DEF PROC@Heading(x$,c$,c%)
  218  COLOUR c%
  219  IF c$<>"" THEN PRINT'STRING$(LENx$,c$)
  220  PRINT x$
  221  IF c$<>"" THEN PRINT STRING$(LENx$,c$)
  222  PRINT
  223  COLOUR 7
  224  ENDPROC
  225
  226
  227DEF FN@File_Exists(pathname$)
  228LOCAL found% 
  229SYS "XOS_File",13,pathname$ TO found%
  230=-found%
  231
  232DEF FN@Get_DEF(x$)
  233  LOCAL y$,char%,i%
  234  i%=INSTR(x$,"DEF")+3
  235  y$=""
  236  WHILE MID$(x$,i%)=" " : i%+=1 : ENDWHILE
  237   char%=ASC(MID$(x$,i%))
  238  REPEAT 
  239  y$+=CHR$(char%)
  240  i%+=1
  241  char%=ASC(MID$(x$,i%))
  242  UNTIL FN@Invalid(char%) OR i%>256
  243  IF char%=40 THEN y$+="("
  244  =FN@Remove(y$)
  245  :
  246  DEF FN@Invalid(char%)
  247  CASE TRUE OF
  248   WHEN (char%>63 AND char%<91)    : result%=FALSE
  249   WHEN (char%>96) AND (char%<123) : result%=FALSE
  250   WHEN (char%>47) AND (char%<58)  : result%=FALSE
  251   WHEN char%=95                   : result%=FALSE
  252   OTHERWISE : result%=TRUE
  253  ENDCASE
  254  =result%
  255  :
  256  DEF FN@Remove(x$)
  257  IF LEFT$(x$,1)<>" " THEN=x$ ELSE=FN@Remove(RIGHT$(x$,LENx$-1))
  258
� >LinkLib:LinkLib
� ----------------
� Append Libraries
� ----------------

� �@AppendLibraries
 � crunch% 4 
, ș "OS_ReadVarVal","Crunch",crunch%,4,0
	! �@Heading("Libraries","-",4)

 NoOfLibs%=0 : NoFound%=0
 addlib%=�"LibLink:AddLib"
 file%=�"LibLink:LIBRARIES"

 �
  x$=�#file%  : x%=�x$
  � x%<>0 � �@AddLibrary
 � �#file%
 �#file%
 � CLS 
	 � 13
0 � '"Number of libraries called:"+�NoOfLibs%
/ �  "Number of libraries found :"+�NoFound%
 � : � 7
 � NoOfLibs%>NoFound% �
  �#addlib%
  *DELETE LibLink:AddLib
@  �@Heading("* Edit LIBRARY calls in main program! *","*",4)
  �@SendToBASIC("QUIT")
 �
   *DELETE LibLink:LIBRARIES 
%  �#addlib%,"CRUNCH"+�(crunch%!0)
  �#addlib%,"RENUMBER1,1"
 $  �#addlib%,"*Spool LibLink:DEF"
!  �#addlib%,"LISTIFDEF"
"  �#addlib%,"*Spool"
#  �#addlib%,"PROC@Sieve"
$  �#addlib%
%&  *SetType LibLink:AddLib Command 
&  *Run LibLink:AddLib  
' �
(�
)  :
*  � �@AddLibrary
+   NoOfLibs%+=1
,+   i%=�x$,"LIBRARY") : x$=�x$,�x$-i%-6)
-,   �@Heading("Library "+�NoOfLibs%,"",5)
.   � x$
/     � �@File_Exists(x$) �
0      NoFound%+=1
1      �#addlib%,�x%
2      �#addlib%,"APPEND"+x$
3"      �@Heading("Found!","",5)
4
     �
5&      �@Heading("Not found!","",6)
6
     �
7	    �
8   
9    
:� ------------------------
;� Remove Unused Procedures
<� ------------------------
=
>
� �@Sieve
?, �@Heading("List of DEFinitions:","-",4)
@! NoOfDefs%=�@NoOf_DEFinitions
A8 � p%(NoOfDefs%+1) : p%(0)=0 : p%(NoOfDefs%+1)=65279
B8 �@Heading("Number of DEFinitions="+�NoOfDefs%,"",3)
C filter%=�"LibLink:Filter"
D&  �#filter%,"*Spool LibLink:PROCS"
E  �@ListIfs
F  �#filter%,"*Spool"
G  �#filter%,"PROC@Filter" 
H �#filter% 
I$ *SetType LibLink:Filter Command
J' �@Heading("PROC/FN CALLS :","-",4)
K *Run LibLink:Filter 
L�
M  :
N  � �@NoOf_DEFinitions
O  � *Wipe LibLink:AddLib 
P  NoOfDefs%=0  
Q   file%=�"LibLink:DEF"  
R	    �
S     x$=�#file%  : x%=�x$ 
T     � x%<>0 � NoOfDefs%+=1
U    � �#file%
V   �#file%
W  =NoOfDefs%
X  :
Y  � �@ListIfs
Z  def%=�"LibLink:DEF" 
[    i%=0
\	    �
]     x$=�#def%  : x%=�x$
^     � x%<>0 �
_      i%+=1
`'      p%(i%)=-x% : x$=�@Get_DEF(x$)
a      �;i%,x$
b      �#filter%,"LISTIF"+x$
c
     �
d    � �#def%    
e
   �#def%
f   *Remove LibLink:DEF
g  �
h
i  
j  � �@Filter  
k  � *Remove LibLink:Filter
l  pass%=0  
m  �@Process
n  �@Delete  
o  �
p	    :
q    � �@Process
r    pass%+=1
sH    �@Heading("Search for PROCs/FNs used - Pass "+�pass%+" :","-",4)
t    procs%=�"LibLink:PROCS"
u    NoAdded%=0           
v    � i%=1 � NoOfDefs%
w     x$=�@NextPROC
x7     � p%(i%)<0 � �@CheckPROC(procs%,x$,-p%(i%))   
y	    �
z!    � "# added = ";NoAdded%  
{    �#procs%
|!    � NoAdded%<>0 � �@Process
}	    �
~      :
      � �@NextPROC
�(      � : x$=�#procs% : � �x$,1)=">"
�      =�x$,�x$-7)
�      :
�(      � �@CheckPROC(procs%,x$,line%)
�      � ptr%,added%
�      added%=�
�      �
�       ptr%=�#procs%
�       u$=�#procs% : x%=�u$
�        � x%<>0 � x%<>line% �
�&        added%=�@TestAdd(x%,u$,x$)
�2        � added% � �;line%,x$ : p%(i%)=-p%(i%)
�       �
�      � �u$,1)=">" � added%
�&      � �u$,1)=">" � �#procs%=ptr%
�)      � added% � NoAdded%+=1         
�      �
�
        :
�!        � �@TestAdd(x%,u$,x$)
�"        � �@ValidLine(u$,x$) �
�         � j% : j%=0
�)         ȕ x%>=�(p%(j%)) : j%+=1 : �
�          result%=p%(j%-1)>=0
�
        �
�         result%=�
�
        �
�        =result%
�
        :
�         � �@ValidLine(y$,u$)
�        � j%,valid%        
�        Ȏ �u$) �
�         � "(" : valid%=�
�                 
�           �     
�            j%=�y$,u$)
�            � j%=0 �
�              valid%=�
�            �
�              j%+=�(u$)
�              � j%>=�y$ �
�               valid%=�
�              �
�%               char%=�(�y$,j%,1))
�A               � �@Invalid(char%) � valid%=� � y$=�y$,�y$-j%)
�              �
�            �
�           � j%=0 � valid%
�         �     
�        =valid%
�
�
�  � �@Delete
�  delete%=�"<Wimp$Scrap>"
�   � i%=1 � NoOfDefs%
�    � p%(i%)<0 �
�     u%=�(p%(i%))
�     v%=�(p%(i%+1))-1     
�'     �#delete%,"DELETE"+�u%+","+�v%
�	    �
�   �
�   � crunch% 4
�.   ș "OS_ReadVarVal","Crunch",crunch%,4,0
�&   �#delete%,"CRUNCH"+�(crunch%!0)
�!   �#delete%,"RENUMBER1,1"   
�*   �#delete%,"SAVE "+"""<Save$File>"""
�'   �#delete%,"*Wipe LibLink:AddLib"
�   �#delete%,"Q"
�'   �#delete%,"*Wipe LibLink:Filter"
�   �#delete%,"Q"
�&   �#delete%,"*Wipe LibLink:PROCS"
�   �#delete%,"Q"
�   �#delete%,"*FX200,0"
�   �#delete%,"QUIT"
�  �#delete%
�#  *SetType <Wimp$Scrap> Command
�  *Run <Wimp$Scrap>
�  �
�  
�� ---------
�� Utilities
�� ---------
�
�� �@SendToBASIC(x$)
�� i%=1 � �x$
�#ș "OS_Byte",153,0,�(�x$,i%,1))
��
�ș "OS_Byte",153,0,13
��
�
�� �@Heading(x$,c$,c%)
�
  � c%
�  � c$<>"" � �'ĩx$,c$)
�
  � x$
�  � c$<>"" � � ĩx$,c$)
�  �
�	  � 7
�  �
�
�
�� �@File_Exists(pathname$)
�
� found% 
�'ș "XOS_File",13,pathname$ � found%
�=-found%
�
�� �@Get_DEF(x$)
�  � y$,char%,i%
�  i%=�x$,"DEF")+3
�  y$=""
�   ȕ �x$,i%)=" " : i%+=1 : �
�   char%=�(�x$,i%))
�  � 
�  y$+=�(char%)
�  i%+=1
�  char%=�(�x$,i%))
�!  � �@Invalid(char%) � i%>256
�  � char%=40 � y$+="("
�  =�@Remove(y$)
�  :
�  � �@Invalid(char%)
�  Ȏ � �
�-   � (char%>63 � char%<91)    : result%=�
�-   � (char%>96) � (char%<123) : result%=�
�-   � (char%>47) � (char%<58)  : result%=�
�/   � char%=95                   : result%=�
�    : result%=�
�  �
�  =result%
�  :
  � �@Remove(x$)
/  � �x$,1)<>" " �=x$ �=�@Remove(�x$,�x$-1))

�
00000000  0d 00 01 16 f4 20 3e 4c  69 6e 6b 4c 69 62 3a 4c  |..... >LinkLib:L|
00000010  69 6e 6b 4c 69 62 0d 00  02 16 f4 20 2d 2d 2d 2d  |inkLib..... ----|
00000020  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 0d 00 03 16  |------------....|
00000030  f4 20 41 70 70 65 6e 64  20 4c 69 62 72 61 72 69  |. Append Librari|
00000040  65 73 0d 00 04 16 f4 20  2d 2d 2d 2d 2d 2d 2d 2d  |es..... --------|
00000050  2d 2d 2d 2d 2d 2d 2d 2d  0d 00 05 04 0d 00 06 17  |--------........|
00000060  dd 20 f2 40 41 70 70 65  6e 64 4c 69 62 72 61 72  |. .@AppendLibrar|
00000070  69 65 73 0d 00 07 11 20  de 20 63 72 75 6e 63 68  |ies.... . crunch|
00000080  25 20 34 20 0d 00 08 2c  20 c8 99 20 22 4f 53 5f  |% 4 ..., .. "OS_|
00000090  52 65 61 64 56 61 72 56  61 6c 22 2c 22 43 72 75  |ReadVarVal","Cru|
000000a0  6e 63 68 22 2c 63 72 75  6e 63 68 25 2c 34 2c 30  |nch",crunch%,4,0|
000000b0  0d 00 09 21 20 f2 40 48  65 61 64 69 6e 67 28 22  |...! .@Heading("|
000000c0  4c 69 62 72 61 72 69 65  73 22 2c 22 2d 22 2c 34  |Libraries","-",4|
000000d0  29 0d 00 0a 1d 20 4e 6f  4f 66 4c 69 62 73 25 3d  |).... NoOfLibs%=|
000000e0  30 20 3a 20 4e 6f 46 6f  75 6e 64 25 3d 30 0d 00  |0 : NoFound%=0..|
000000f0  0b 1e 20 61 64 64 6c 69  62 25 3d ae 22 4c 69 62  |.. addlib%=."Lib|
00000100  4c 69 6e 6b 3a 41 64 64  4c 69 62 22 0d 00 0c 1f  |Link:AddLib"....|
00000110  20 66 69 6c 65 25 3d 8e  22 4c 69 62 4c 69 6e 6b  | file%=."LibLink|
00000120  3a 4c 49 42 52 41 52 49  45 53 22 0d 00 0d 06 20  |:LIBRARIES".... |
00000130  f5 0d 00 0e 1a 20 20 78  24 3d be 23 66 69 6c 65  |.....  x$=.#file|
00000140  25 20 20 3a 20 78 25 3d  bb 78 24 0d 00 0f 1c 20  |%  : x%=.x$.... |
00000150  20 e7 20 78 25 3c 3e 30  20 8c 20 f2 40 41 64 64  | . x%<>0 . .@Add|
00000160  4c 69 62 72 61 72 79 0d  00 10 0e 20 fd 20 c5 23  |Library.... . .#|
00000170  66 69 6c 65 25 0d 00 11  0c 20 d9 23 66 69 6c 65  |file%.... .#file|
00000180  25 0d 00 12 0b 20 f4 20  43 4c 53 20 0d 00 13 09  |%.... . CLS ....|
00000190  20 fb 20 31 33 0d 00 14  30 20 f1 20 27 22 4e 75  | . 13...0 . '"Nu|
000001a0  6d 62 65 72 20 6f 66 20  6c 69 62 72 61 72 69 65  |mber of librarie|
000001b0  73 20 63 61 6c 6c 65 64  3a 22 2b c3 4e 6f 4f 66  |s called:"+.NoOf|
000001c0  4c 69 62 73 25 0d 00 15  2f 20 f1 20 20 22 4e 75  |Libs%.../ .  "Nu|
000001d0  6d 62 65 72 20 6f 66 20  6c 69 62 72 61 72 69 65  |mber of librarie|
000001e0  73 20 66 6f 75 6e 64 20  3a 22 2b c3 4e 6f 46 6f  |s found :"+.NoFo|
000001f0  75 6e 64 25 0d 00 16 0c  20 f1 20 3a 20 fb 20 37  |und%.... . : . 7|
00000200  0d 00 17 1b 20 e7 20 4e  6f 4f 66 4c 69 62 73 25  |.... . NoOfLibs%|
00000210  3e 4e 6f 46 6f 75 6e 64  25 20 8c 0d 00 18 0f 20  |>NoFound% ..... |
00000220  20 d9 23 61 64 64 6c 69  62 25 0d 00 19 1c 20 20  | .#addlib%....  |
00000230  2a 44 45 4c 45 54 45 20  4c 69 62 4c 69 6e 6b 3a  |*DELETE LibLink:|
00000240  41 64 64 4c 69 62 0d 00  1a 40 20 20 f2 40 48 65  |AddLib...@  .@He|
00000250  61 64 69 6e 67 28 22 2a  20 45 64 69 74 20 4c 49  |ading("* Edit LI|
00000260  42 52 41 52 59 20 63 61  6c 6c 73 20 69 6e 20 6d  |BRARY calls in m|
00000270  61 69 6e 20 70 72 6f 67  72 61 6d 21 20 2a 22 2c  |ain program! *",|
00000280  22 2a 22 2c 34 29 0d 00  1b 1b 20 20 f2 40 53 65  |"*",4)....  .@Se|
00000290  6e 64 54 6f 42 41 53 49  43 28 22 51 55 49 54 22  |ndToBASIC("QUIT"|
000002a0  29 0d 00 1c 06 20 cc 0d  00 1d 20 20 20 2a 44 45  |).... ....   *DE|
000002b0  4c 45 54 45 20 4c 69 62  4c 69 6e 6b 3a 4c 49 42  |LETE LibLink:LIB|
000002c0  52 41 52 49 45 53 20 0d  00 1e 25 20 20 d5 23 61  |RARIES ...%  .#a|
000002d0  64 64 6c 69 62 25 2c 22  43 52 55 4e 43 48 22 2b  |ddlib%,"CRUNCH"+|
000002e0  c3 28 63 72 75 6e 63 68  25 21 30 29 0d 00 1f 1d  |.(crunch%!0)....|
000002f0  20 20 d5 23 61 64 64 6c  69 62 25 2c 22 52 45 4e  |  .#addlib%,"REN|
00000300  55 4d 42 45 52 31 2c 31  22 0d 00 20 24 20 20 d5  |UMBER1,1".. $  .|
00000310  23 61 64 64 6c 69 62 25  2c 22 2a 53 70 6f 6f 6c  |#addlib%,"*Spool|
00000320  20 4c 69 62 4c 69 6e 6b  3a 44 45 46 22 0d 00 21  | LibLink:DEF"..!|
00000330  1b 20 20 d5 23 61 64 64  6c 69 62 25 2c 22 4c 49  |.  .#addlib%,"LI|
00000340  53 54 49 46 44 45 46 22  0d 00 22 18 20 20 d5 23  |STIFDEF"..".  .#|
00000350  61 64 64 6c 69 62 25 2c  22 2a 53 70 6f 6f 6c 22  |addlib%,"*Spool"|
00000360  0d 00 23 1c 20 20 d5 23  61 64 64 6c 69 62 25 2c  |..#.  .#addlib%,|
00000370  22 50 52 4f 43 40 53 69  65 76 65 22 0d 00 24 0f  |"PROC@Sieve"..$.|
00000380  20 20 d9 23 61 64 64 6c  69 62 25 0d 00 25 26 20  |  .#addlib%..%& |
00000390  20 2a 53 65 74 54 79 70  65 20 4c 69 62 4c 69 6e  | *SetType LibLin|
000003a0  6b 3a 41 64 64 4c 69 62  20 43 6f 6d 6d 61 6e 64  |k:AddLib Command|
000003b0  20 0d 00 26 1b 20 20 2a  52 75 6e 20 4c 69 62 4c  | ..&.  *Run LibL|
000003c0  69 6e 6b 3a 41 64 64 4c  69 62 20 20 0d 00 27 06  |ink:AddLib  ..'.|
000003d0  20 cd 0d 00 28 05 e1 0d  00 29 07 20 20 3a 0d 00  | ...(....).  :..|
000003e0  2a 14 20 20 dd 20 f2 40  41 64 64 4c 69 62 72 61  |*.  . .@AddLibra|
000003f0  72 79 0d 00 2b 13 20 20  20 4e 6f 4f 66 4c 69 62  |ry..+.   NoOfLib|
00000400  73 25 2b 3d 31 0d 00 2c  2b 20 20 20 69 25 3d a7  |s%+=1..,+   i%=.|
00000410  78 24 2c 22 4c 49 42 52  41 52 59 22 29 20 3a 20  |x$,"LIBRARY") : |
00000420  78 24 3d c2 78 24 2c a9  78 24 2d 69 25 2d 36 29  |x$=.x$,.x$-i%-6)|
00000430  0d 00 2d 2c 20 20 20 f2  40 48 65 61 64 69 6e 67  |..-,   .@Heading|
00000440  28 22 4c 69 62 72 61 72  79 20 22 2b c3 4e 6f 4f  |("Library "+.NoO|
00000450  66 4c 69 62 73 25 2c 22  22 2c 35 29 0d 00 2e 0b  |fLibs%,"",5)....|
00000460  20 20 20 f1 20 78 24 0d  00 2f 1e 20 20 20 20 20  |   . x$../.     |
00000470  e7 20 a4 40 46 69 6c 65  5f 45 78 69 73 74 73 28  |. .@File_Exists(|
00000480  78 24 29 20 8c 0d 00 30  15 20 20 20 20 20 20 4e  |x$) ...0.      N|
00000490  6f 46 6f 75 6e 64 25 2b  3d 31 0d 00 31 17 20 20  |oFound%+=1..1.  |
000004a0  20 20 20 20 d5 23 61 64  64 6c 69 62 25 2c c3 78  |    .#addlib%,.x|
000004b0  25 0d 00 32 1f 20 20 20  20 20 20 d5 23 61 64 64  |%..2.      .#add|
000004c0  6c 69 62 25 2c 22 41 50  50 45 4e 44 22 2b 78 24  |lib%,"APPEND"+x$|
000004d0  0d 00 33 22 20 20 20 20  20 20 f2 40 48 65 61 64  |..3"      .@Head|
000004e0  69 6e 67 28 22 46 6f 75  6e 64 21 22 2c 22 22 2c  |ing("Found!","",|
000004f0  35 29 0d 00 34 0a 20 20  20 20 20 cc 0d 00 35 26  |5)..4.     ...5&|
00000500  20 20 20 20 20 20 f2 40  48 65 61 64 69 6e 67 28  |      .@Heading(|
00000510  22 4e 6f 74 20 66 6f 75  6e 64 21 22 2c 22 22 2c  |"Not found!","",|
00000520  36 29 0d 00 36 0a 20 20  20 20 20 cd 0d 00 37 09  |6)..6.     ...7.|
00000530  20 20 20 20 e1 0d 00 38  07 20 20 20 0d 00 39 08  |    ...8.   ..9.|
00000540  20 20 20 20 0d 00 3a 1e  f4 20 2d 2d 2d 2d 2d 2d  |    ..:.. ------|
00000550  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00000560  2d 2d 0d 00 3b 1e f4 20  52 65 6d 6f 76 65 20 55  |--..;.. Remove U|
00000570  6e 75 73 65 64 20 50 72  6f 63 65 64 75 72 65 73  |nused Procedures|
00000580  0d 00 3c 1e f4 20 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |..<.. ----------|
00000590  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 0d 00  |--------------..|
000005a0  3d 04 0d 00 3e 0d dd 20  f2 40 53 69 65 76 65 0d  |=...>.. .@Sieve.|
000005b0  00 3f 2c 20 f2 40 48 65  61 64 69 6e 67 28 22 4c  |.?, .@Heading("L|
000005c0  69 73 74 20 6f 66 20 44  45 46 69 6e 69 74 69 6f  |ist of DEFinitio|
000005d0  6e 73 3a 22 2c 22 2d 22  2c 34 29 0d 00 40 21 20  |ns:","-",4)..@! |
000005e0  4e 6f 4f 66 44 65 66 73  25 3d a4 40 4e 6f 4f 66  |NoOfDefs%=.@NoOf|
000005f0  5f 44 45 46 69 6e 69 74  69 6f 6e 73 0d 00 41 38  |_DEFinitions..A8|
00000600  20 de 20 70 25 28 4e 6f  4f 66 44 65 66 73 25 2b  | . p%(NoOfDefs%+|
00000610  31 29 20 3a 20 70 25 28  30 29 3d 30 20 3a 20 70  |1) : p%(0)=0 : p|
00000620  25 28 4e 6f 4f 66 44 65  66 73 25 2b 31 29 3d 36  |%(NoOfDefs%+1)=6|
00000630  35 32 37 39 0d 00 42 38  20 f2 40 48 65 61 64 69  |5279..B8 .@Headi|
00000640  6e 67 28 22 4e 75 6d 62  65 72 20 6f 66 20 44 45  |ng("Number of DE|
00000650  46 69 6e 69 74 69 6f 6e  73 3d 22 2b c3 4e 6f 4f  |Finitions="+.NoO|
00000660  66 44 65 66 73 25 2c 22  22 2c 33 29 0d 00 43 1e  |fDefs%,"",3)..C.|
00000670  20 66 69 6c 74 65 72 25  3d ae 22 4c 69 62 4c 69  | filter%=."LibLi|
00000680  6e 6b 3a 46 69 6c 74 65  72 22 0d 00 44 26 20 20  |nk:Filter"..D&  |
00000690  d5 23 66 69 6c 74 65 72  25 2c 22 2a 53 70 6f 6f  |.#filter%,"*Spoo|
000006a0  6c 20 4c 69 62 4c 69 6e  6b 3a 50 52 4f 43 53 22  |l LibLink:PROCS"|
000006b0  0d 00 45 0f 20 20 f2 40  4c 69 73 74 49 66 73 0d  |..E.  .@ListIfs.|
000006c0  00 46 18 20 20 d5 23 66  69 6c 74 65 72 25 2c 22  |.F.  .#filter%,"|
000006d0  2a 53 70 6f 6f 6c 22 0d  00 47 1e 20 20 d5 23 66  |*Spool"..G.  .#f|
000006e0  69 6c 74 65 72 25 2c 22  50 52 4f 43 40 46 69 6c  |ilter%,"PROC@Fil|
000006f0  74 65 72 22 20 0d 00 48  0f 20 d9 23 66 69 6c 74  |ter" ..H. .#filt|
00000700  65 72 25 20 0d 00 49 24  20 2a 53 65 74 54 79 70  |er% ..I$ *SetTyp|
00000710  65 20 4c 69 62 4c 69 6e  6b 3a 46 69 6c 74 65 72  |e LibLink:Filter|
00000720  20 43 6f 6d 6d 61 6e 64  0d 00 4a 27 20 f2 40 48  | Command..J' .@H|
00000730  65 61 64 69 6e 67 28 22  50 52 4f 43 2f 46 4e 20  |eading("PROC/FN |
00000740  43 41 4c 4c 53 20 3a 22  2c 22 2d 22 2c 34 29 0d  |CALLS :","-",4).|
00000750  00 4b 19 20 2a 52 75 6e  20 4c 69 62 4c 69 6e 6b  |.K. *Run LibLink|
00000760  3a 46 69 6c 74 65 72 20  0d 00 4c 05 e1 0d 00 4d  |:Filter ..L....M|
00000770  07 20 20 3a 0d 00 4e 1a  20 20 dd 20 a4 40 4e 6f  |.  :..N.  . .@No|
00000780  4f 66 5f 44 45 46 69 6e  69 74 69 6f 6e 73 0d 00  |Of_DEFinitions..|
00000790  4f 1d 20 20 f4 20 2a 57  69 70 65 20 4c 69 62 4c  |O.  . *Wipe LibL|
000007a0  69 6e 6b 3a 41 64 64 4c  69 62 20 0d 00 50 13 20  |ink:AddLib ..P. |
000007b0  20 4e 6f 4f 66 44 65 66  73 25 3d 30 20 20 0d 00  | NoOfDefs%=0  ..|
000007c0  51 1d 20 20 20 66 69 6c  65 25 3d 8e 22 4c 69 62  |Q.   file%=."Lib|
000007d0  4c 69 6e 6b 3a 44 45 46  22 20 20 0d 00 52 09 20  |Link:DEF"  ..R. |
000007e0  20 20 20 f5 0d 00 53 1e  20 20 20 20 20 78 24 3d  |   ...S.     x$=|
000007f0  be 23 66 69 6c 65 25 20  20 3a 20 78 25 3d bb 78  |.#file%  : x%=.x|
00000800  24 20 0d 00 54 1f 20 20  20 20 20 e7 20 78 25 3c  |$ ..T.     . x%<|
00000810  3e 30 20 8c 20 4e 6f 4f  66 44 65 66 73 25 2b 3d  |>0 . NoOfDefs%+=|
00000820  31 0d 00 55 11 20 20 20  20 fd 20 c5 23 66 69 6c  |1..U.    . .#fil|
00000830  65 25 0d 00 56 0e 20 20  20 d9 23 66 69 6c 65 25  |e%..V.   .#file%|
00000840  0d 00 57 10 20 20 3d 4e  6f 4f 66 44 65 66 73 25  |..W.  =NoOfDefs%|
00000850  0d 00 58 07 20 20 3a 0d  00 59 11 20 20 dd 20 f2  |..X.  :..Y.  . .|
00000860  40 4c 69 73 74 49 66 73  0d 00 5a 1a 20 20 64 65  |@ListIfs..Z.  de|
00000870  66 25 3d 8e 22 4c 69 62  4c 69 6e 6b 3a 44 45 46  |f%=."LibLink:DEF|
00000880  22 20 0d 00 5b 0c 20 20  20 20 69 25 3d 30 0d 00  |" ..[.    i%=0..|
00000890  5c 09 20 20 20 20 f5 0d  00 5d 1c 20 20 20 20 20  |\.    ...].     |
000008a0  78 24 3d be 23 64 65 66  25 20 20 3a 20 78 25 3d  |x$=.#def%  : x%=|
000008b0  bb 78 24 0d 00 5e 12 20  20 20 20 20 e7 20 78 25  |.x$..^.     . x%|
000008c0  3c 3e 30 20 8c 0d 00 5f  0f 20 20 20 20 20 20 69  |<>0 ..._.      i|
000008d0  25 2b 3d 31 0d 00 60 27  20 20 20 20 20 20 70 25  |%+=1..`'      p%|
000008e0  28 69 25 29 3d 2d 78 25  20 3a 20 78 24 3d a4 40  |(i%)=-x% : x$=.@|
000008f0  47 65 74 5f 44 45 46 28  78 24 29 0d 00 61 11 20  |Get_DEF(x$)..a. |
00000900  20 20 20 20 20 f1 3b 69  25 2c 78 24 0d 00 62 1f  |     .;i%,x$..b.|
00000910  20 20 20 20 20 20 d5 23  66 69 6c 74 65 72 25 2c  |      .#filter%,|
00000920  22 4c 49 53 54 49 46 22  2b 78 24 0d 00 63 0a 20  |"LISTIF"+x$..c. |
00000930  20 20 20 20 cd 0d 00 64  14 20 20 20 20 fd 20 c5  |    ...d.    . .|
00000940  23 64 65 66 25 20 20 20  20 0d 00 65 0d 20 20 20  |#def%    ..e.   |
00000950  d9 23 64 65 66 25 0d 00  66 1a 20 20 20 2a 52 65  |.#def%..f.   *Re|
00000960  6d 6f 76 65 20 4c 69 62  4c 69 6e 6b 3a 44 45 46  |move LibLink:DEF|
00000970  0d 00 67 07 20 20 e1 0d  00 68 04 0d 00 69 06 20  |..g.  ...h...i. |
00000980  20 0d 00 6a 12 20 20 dd  20 f2 40 46 69 6c 74 65  | ..j.  . .@Filte|
00000990  72 20 20 0d 00 6b 1e 20  20 f4 20 2a 52 65 6d 6f  |r  ..k.  . *Remo|
000009a0  76 65 20 4c 69 62 4c 69  6e 6b 3a 46 69 6c 74 65  |ve LibLink:Filte|
000009b0  72 0d 00 6c 0f 20 20 70  61 73 73 25 3d 30 20 20  |r..l.  pass%=0  |
000009c0  0d 00 6d 0f 20 20 f2 40  50 72 6f 63 65 73 73 0d  |..m.  .@Process.|
000009d0  00 6e 10 20 20 f2 40 44  65 6c 65 74 65 20 20 0d  |.n.  .@Delete  .|
000009e0  00 6f 07 20 20 e1 0d 00  70 09 20 20 20 20 3a 0d  |.o.  ...p.    :.|
000009f0  00 71 13 20 20 20 20 dd  20 f2 40 50 72 6f 63 65  |.q.    . .@Proce|
00000a00  73 73 0d 00 72 10 20 20  20 20 70 61 73 73 25 2b  |ss..r.    pass%+|
00000a10  3d 31 0d 00 73 48 20 20  20 20 f2 40 48 65 61 64  |=1..sH    .@Head|
00000a20  69 6e 67 28 22 53 65 61  72 63 68 20 66 6f 72 20  |ing("Search for |
00000a30  50 52 4f 43 73 2f 46 4e  73 20 75 73 65 64 20 2d  |PROCs/FNs used -|
00000a40  20 50 61 73 73 20 22 2b  c3 70 61 73 73 25 2b 22  | Pass "+.pass%+"|
00000a50  20 3a 22 2c 22 2d 22 2c  34 29 0d 00 74 1f 20 20  | :","-",4)..t.  |
00000a60  20 20 70 72 6f 63 73 25  3d 8e 22 4c 69 62 4c 69  |  procs%=."LibLi|
00000a70  6e 6b 3a 50 52 4f 43 53  22 0d 00 75 1d 20 20 20  |nk:PROCS"..u.   |
00000a80  20 4e 6f 41 64 64 65 64  25 3d 30 20 20 20 20 20  | NoAdded%=0     |
00000a90  20 20 20 20 20 20 0d 00  76 1a 20 20 20 20 e3 20  |      ..v.    . |
00000aa0  69 25 3d 31 20 b8 20 4e  6f 4f 66 44 65 66 73 25  |i%=1 . NoOfDefs%|
00000ab0  0d 00 77 16 20 20 20 20  20 78 24 3d a4 40 4e 65  |..w.     x$=.@Ne|
00000ac0  78 74 50 52 4f 43 0d 00  78 37 20 20 20 20 20 e7  |xtPROC..x7     .|
00000ad0  20 70 25 28 69 25 29 3c  30 20 8c 20 f2 40 43 68  | p%(i%)<0 . .@Ch|
00000ae0  65 63 6b 50 52 4f 43 28  70 72 6f 63 73 25 2c 78  |eckPROC(procs%,x|
00000af0  24 2c 2d 70 25 28 69 25  29 29 20 20 20 0d 00 79  |$,-p%(i%))   ..y|
00000b00  09 20 20 20 20 ed 0d 00  7a 21 20 20 20 20 f1 20  |.    ...z!    . |
00000b10  22 23 20 61 64 64 65 64  20 3d 20 22 3b 4e 6f 41  |"# added = ";NoA|
00000b20  64 64 65 64 25 20 20 0d  00 7b 10 20 20 20 20 d9  |dded%  ..{.    .|
00000b30  23 70 72 6f 63 73 25 0d  00 7c 21 20 20 20 20 e7  |#procs%..|!    .|
00000b40  20 4e 6f 41 64 64 65 64  25 3c 3e 30 20 8c 20 f2  | NoAdded%<>0 . .|
00000b50  40 50 72 6f 63 65 73 73  0d 00 7d 09 20 20 20 20  |@Process..}.    |
00000b60  e1 0d 00 7e 0b 20 20 20  20 20 20 3a 0d 00 7f 16  |...~.      :....|
00000b70  20 20 20 20 20 20 dd 20  a4 40 4e 65 78 74 50 52  |      . .@NextPR|
00000b80  4f 43 0d 00 80 28 20 20  20 20 20 20 f5 20 3a 20  |OC...(      . : |
00000b90  78 24 3d be 23 70 72 6f  63 73 25 20 3a 20 fd 20  |x$=.#procs% : . |
00000ba0  c0 78 24 2c 31 29 3d 22  3e 22 0d 00 81 15 20 20  |.x$,1)=">"....  |
00000bb0  20 20 20 20 3d c2 78 24  2c a9 78 24 2d 37 29 0d  |    =.x$,.x$-7).|
00000bc0  00 82 0b 20 20 20 20 20  20 3a 0d 00 83 28 20 20  |...      :...(  |
00000bd0  20 20 20 20 dd 20 f2 40  43 68 65 63 6b 50 52 4f  |    . .@CheckPRO|
00000be0  43 28 70 72 6f 63 73 25  2c 78 24 2c 6c 69 6e 65  |C(procs%,x$,line|
00000bf0  25 29 0d 00 84 17 20 20  20 20 20 20 ea 20 70 74  |%)....      . pt|
00000c00  72 25 2c 61 64 64 65 64  25 0d 00 85 12 20 20 20  |r%,added%....   |
00000c10  20 20 20 61 64 64 65 64  25 3d a3 0d 00 86 0b 20  |   added%=..... |
00000c20  20 20 20 20 20 f5 0d 00  87 18 20 20 20 20 20 20  |     .....      |
00000c30  20 70 74 72 25 3d 8f 23  70 72 6f 63 73 25 0d 00  | ptr%=.#procs%..|
00000c40  88 1f 20 20 20 20 20 20  20 75 24 3d be 23 70 72  |..       u$=.#pr|
00000c50  6f 63 73 25 20 3a 20 78  25 3d bb 75 24 0d 00 89  |ocs% : x%=.u$...|
00000c60  20 20 20 20 20 20 20 20  e7 20 78 25 3c 3e 30 20  |        . x%<>0 |
00000c70  80 20 78 25 3c 3e 6c 69  6e 65 25 20 8c 0d 00 8a  |. x%<>line% ....|
00000c80  26 20 20 20 20 20 20 20  20 61 64 64 65 64 25 3d  |&        added%=|
00000c90  a4 40 54 65 73 74 41 64  64 28 78 25 2c 75 24 2c  |.@TestAdd(x%,u$,|
00000ca0  78 24 29 0d 00 8b 32 20  20 20 20 20 20 20 20 e7  |x$)...2        .|
00000cb0  20 61 64 64 65 64 25 20  8c 20 f1 3b 6c 69 6e 65  | added% . .;line|
00000cc0  25 2c 78 24 20 3a 20 70  25 28 69 25 29 3d 2d 70  |%,x$ : p%(i%)=-p|
00000cd0  25 28 69 25 29 0d 00 8c  0c 20 20 20 20 20 20 20  |%(i%)....       |
00000ce0  cd 0d 00 8d 1f 20 20 20  20 20 20 fd 20 c0 75 24  |.....      . .u$|
00000cf0  2c 31 29 3d 22 3e 22 20  84 20 61 64 64 65 64 25  |,1)=">" . added%|
00000d00  0d 00 8e 26 20 20 20 20  20 20 e7 20 c0 75 24 2c  |...&      . .u$,|
00000d10  31 29 3d 22 3e 22 20 8c  20 cf 23 70 72 6f 63 73  |1)=">" . .#procs|
00000d20  25 3d 70 74 72 25 0d 00  8f 29 20 20 20 20 20 20  |%=ptr%...)      |
00000d30  e7 20 61 64 64 65 64 25  20 8c 20 4e 6f 41 64 64  |. added% . NoAdd|
00000d40  65 64 25 2b 3d 31 20 20  20 20 20 20 20 20 20 0d  |ed%+=1         .|
00000d50  00 90 0b 20 20 20 20 20  20 e1 0d 00 91 0d 20 20  |...      .....  |
00000d60  20 20 20 20 20 20 3a 0d  00 92 21 20 20 20 20 20  |      :...!     |
00000d70  20 20 20 dd 20 a4 40 54  65 73 74 41 64 64 28 78  |   . .@TestAdd(x|
00000d80  25 2c 75 24 2c 78 24 29  0d 00 93 22 20 20 20 20  |%,u$,x$)..."    |
00000d90  20 20 20 20 e7 20 a4 40  56 61 6c 69 64 4c 69 6e  |    . .@ValidLin|
00000da0  65 28 75 24 2c 78 24 29  20 8c 0d 00 94 18 20 20  |e(u$,x$) .....  |
00000db0  20 20 20 20 20 20 20 ea  20 6a 25 20 3a 20 6a 25  |       . j% : j%|
00000dc0  3d 30 0d 00 95 29 20 20  20 20 20 20 20 20 20 c8  |=0...)         .|
00000dd0  95 20 78 25 3e 3d 94 28  70 25 28 6a 25 29 29 20  |. x%>=.(p%(j%)) |
00000de0  3a 20 6a 25 2b 3d 31 20  3a 20 ce 0d 00 96 20 20  |: j%+=1 : ....  |
00000df0  20 20 20 20 20 20 20 20  72 65 73 75 6c 74 25 3d  |        result%=|
00000e00  70 25 28 6a 25 2d 31 29  3e 3d 30 0d 00 97 0d 20  |p%(j%-1)>=0.... |
00000e10  20 20 20 20 20 20 20 cc  0d 00 98 16 20 20 20 20  |       .....    |
00000e20  20 20 20 20 20 72 65 73  75 6c 74 25 3d a3 0d 00  |     result%=...|
00000e30  99 0d 20 20 20 20 20 20  20 20 cd 0d 00 9a 14 20  |..        ..... |
00000e40  20 20 20 20 20 20 20 3d  72 65 73 75 6c 74 25 0d  |       =result%.|
00000e50  00 9b 0d 20 20 20 20 20  20 20 20 3a 0d 00 9c 20  |...        :... |
00000e60  20 20 20 20 20 20 20 20  dd 20 a4 40 56 61 6c 69  |        . .@Vali|
00000e70  64 4c 69 6e 65 28 79 24  2c 75 24 29 0d 00 9d 1f  |dLine(y$,u$)....|
00000e80  20 20 20 20 20 20 20 20  ea 20 6a 25 2c 76 61 6c  |        . j%,val|
00000e90  69 64 25 20 20 20 20 20  20 20 20 0d 00 9e 15 20  |id%        .... |
00000ea0  20 20 20 20 20 20 20 c8  8e 20 c2 75 24 29 20 ca  |       .. .u$) .|
00000eb0  0d 00 9f 1d 20 20 20 20  20 20 20 20 20 c9 20 22  |....         . "|
00000ec0  28 22 20 3a 20 76 61 6c  69 64 25 3d b9 0d 00 a0  |(" : valid%=....|
00000ed0  16 20 20 20 20 20 20 20  20 20 7f 20 20 20 20 20  |.         .     |
00000ee0  20 20 20 0d 00 a1 15 20  20 20 20 20 20 20 20 20  |   ....         |
00000ef0  20 20 f5 20 20 20 20 20  0d 00 a2 1a 20 20 20 20  |  .     ....    |
00000f00  20 20 20 20 20 20 20 20  6a 25 3d a7 79 24 2c 75  |        j%=.y$,u|
00000f10  24 29 0d 00 a3 18 20 20  20 20 20 20 20 20 20 20  |$)....          |
00000f20  20 20 e7 20 6a 25 3d 30  20 8c 0d 00 a4 1a 20 20  |  . j%=0 .....  |
00000f30  20 20 20 20 20 20 20 20  20 20 20 20 76 61 6c 69  |            vali|
00000f40  64 25 3d a3 0d 00 a5 11  20 20 20 20 20 20 20 20  |d%=.....        |
00000f50  20 20 20 20 cc 0d 00 a6  1b 20 20 20 20 20 20 20  |    .....       |
00000f60  20 20 20 20 20 20 20 6a  25 2b 3d a9 28 75 24 29  |       j%+=.(u$)|
00000f70  0d 00 a7 1d 20 20 20 20  20 20 20 20 20 20 20 20  |....            |
00000f80  20 20 e7 20 6a 25 3e 3d  a9 79 24 20 8c 0d 00 a8  |  . j%>=.y$ ....|
00000f90  1b 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.               |
00000fa0  76 61 6c 69 64 25 3d b9  0d 00 a9 13 20 20 20 20  |valid%=.....    |
00000fb0  20 20 20 20 20 20 20 20  20 20 cc 0d 00 aa 25 20  |          ....% |
00000fc0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 63 68  |              ch|
00000fd0  61 72 25 3d 97 28 c1 79  24 2c 6a 25 2c 31 29 29  |ar%=.(.y$,j%,1))|
00000fe0  0d 00 ab 41 20 20 20 20  20 20 20 20 20 20 20 20  |...A            |
00000ff0  20 20 20 e7 20 a4 40 49  6e 76 61 6c 69 64 28 63  |   . .@Invalid(c|
00001000  68 61 72 25 29 20 8c 20  76 61 6c 69 64 25 3d b9  |har%) . valid%=.|
00001010  20 8b 20 79 24 3d c2 79  24 2c a9 79 24 2d 6a 25  | . y$=.y$,.y$-j%|
00001020  29 0d 00 ac 13 20 20 20  20 20 20 20 20 20 20 20  |)....           |
00001030  20 20 20 cd 0d 00 ad 11  20 20 20 20 20 20 20 20  |   .....        |
00001040  20 20 20 20 cd 0d 00 ae  1e 20 20 20 20 20 20 20  |    .....       |
00001050  20 20 20 20 fd 20 6a 25  3d 30 20 84 20 76 61 6c  |    . j%=0 . val|
00001060  69 64 25 0d 00 af 13 20  20 20 20 20 20 20 20 20  |id%....         |
00001070  cb 20 20 20 20 20 0d 00  b0 13 20 20 20 20 20 20  |.     ....      |
00001080  20 20 3d 76 61 6c 69 64  25 0d 00 b1 04 0d 00 b2  |  =valid%.......|
00001090  04 0d 00 b3 10 20 20 dd  20 f2 40 44 65 6c 65 74  |.....  . .@Delet|
000010a0  65 0d 00 b4 1d 20 20 64  65 6c 65 74 65 25 3d ae  |e....  delete%=.|
000010b0  22 3c 57 69 6d 70 24 53  63 72 61 70 3e 22 0d 00  |"<Wimp$Scrap>"..|
000010c0  b5 19 20 20 20 e3 20 69  25 3d 31 20 b8 20 4e 6f  |..   . i%=1 . No|
000010d0  4f 66 44 65 66 73 25 0d  00 b6 14 20 20 20 20 e7  |OfDefs%....    .|
000010e0  20 70 25 28 69 25 29 3c  30 20 8c 0d 00 b7 15 20  | p%(i%)<0 ..... |
000010f0  20 20 20 20 75 25 3d 94  28 70 25 28 69 25 29 29  |    u%=.(p%(i%))|
00001100  0d 00 b8 1e 20 20 20 20  20 76 25 3d 94 28 70 25  |....     v%=.(p%|
00001110  28 69 25 2b 31 29 29 2d  31 20 20 20 20 20 0d 00  |(i%+1))-1     ..|
00001120  b9 27 20 20 20 20 20 d5  23 64 65 6c 65 74 65 25  |.'     .#delete%|
00001130  2c 22 44 45 4c 45 54 45  22 2b c3 75 25 2b 22 2c  |,"DELETE"+.u%+",|
00001140  22 2b c3 76 25 0d 00 ba  09 20 20 20 20 cd 0d 00  |"+.v%....    ...|
00001150  bb 08 20 20 20 ed 0d 00  bc 12 20 20 20 de 20 63  |..   .....   . c|
00001160  72 75 6e 63 68 25 20 34  0d 00 bd 2e 20 20 20 c8  |runch% 4....   .|
00001170  99 20 22 4f 53 5f 52 65  61 64 56 61 72 56 61 6c  |. "OS_ReadVarVal|
00001180  22 2c 22 43 72 75 6e 63  68 22 2c 63 72 75 6e 63  |","Crunch",crunc|
00001190  68 25 2c 34 2c 30 0d 00  be 26 20 20 20 d5 23 64  |h%,4,0...&   .#d|
000011a0  65 6c 65 74 65 25 2c 22  43 52 55 4e 43 48 22 2b  |elete%,"CRUNCH"+|
000011b0  c3 28 63 72 75 6e 63 68  25 21 30 29 0d 00 bf 21  |.(crunch%!0)...!|
000011c0  20 20 20 d5 23 64 65 6c  65 74 65 25 2c 22 52 45  |   .#delete%,"RE|
000011d0  4e 55 4d 42 45 52 31 2c  31 22 20 20 20 0d 00 c0  |NUMBER1,1"   ...|
000011e0  2a 20 20 20 d5 23 64 65  6c 65 74 65 25 2c 22 53  |*   .#delete%,"S|
000011f0  41 56 45 20 22 2b 22 22  22 3c 53 61 76 65 24 46  |AVE "+"""<Save$F|
00001200  69 6c 65 3e 22 22 22 0d  00 c1 27 20 20 20 d5 23  |ile>"""...'   .#|
00001210  64 65 6c 65 74 65 25 2c  22 2a 57 69 70 65 20 4c  |delete%,"*Wipe L|
00001220  69 62 4c 69 6e 6b 3a 41  64 64 4c 69 62 22 0d 00  |ibLink:AddLib"..|
00001230  c2 14 20 20 20 d5 23 64  65 6c 65 74 65 25 2c 22  |..   .#delete%,"|
00001240  51 22 0d 00 c3 27 20 20  20 d5 23 64 65 6c 65 74  |Q"...'   .#delet|
00001250  65 25 2c 22 2a 57 69 70  65 20 4c 69 62 4c 69 6e  |e%,"*Wipe LibLin|
00001260  6b 3a 46 69 6c 74 65 72  22 0d 00 c4 14 20 20 20  |k:Filter"....   |
00001270  d5 23 64 65 6c 65 74 65  25 2c 22 51 22 0d 00 c5  |.#delete%,"Q"...|
00001280  26 20 20 20 d5 23 64 65  6c 65 74 65 25 2c 22 2a  |&   .#delete%,"*|
00001290  57 69 70 65 20 4c 69 62  4c 69 6e 6b 3a 50 52 4f  |Wipe LibLink:PRO|
000012a0  43 53 22 0d 00 c6 14 20  20 20 d5 23 64 65 6c 65  |CS"....   .#dele|
000012b0  74 65 25 2c 22 51 22 0d  00 c7 1b 20 20 20 d5 23  |te%,"Q"....   .#|
000012c0  64 65 6c 65 74 65 25 2c  22 2a 46 58 32 30 30 2c  |delete%,"*FX200,|
000012d0  30 22 0d 00 c8 17 20 20  20 d5 23 64 65 6c 65 74  |0"....   .#delet|
000012e0  65 25 2c 22 51 55 49 54  22 0d 00 c9 0f 20 20 d9  |e%,"QUIT"....  .|
000012f0  23 64 65 6c 65 74 65 25  0d 00 ca 23 20 20 2a 53  |#delete%...#  *S|
00001300  65 74 54 79 70 65 20 3c  57 69 6d 70 24 53 63 72  |etType <Wimp$Scr|
00001310  61 70 3e 20 43 6f 6d 6d  61 6e 64 0d 00 cb 17 20  |ap> Command.... |
00001320  20 2a 52 75 6e 20 3c 57  69 6d 70 24 53 63 72 61  | *Run <Wimp$Scra|
00001330  70 3e 0d 00 cc 07 20 20  e1 0d 00 cd 06 20 20 0d  |p>....  .....  .|
00001340  00 ce 0f f4 20 2d 2d 2d  2d 2d 2d 2d 2d 2d 0d 00  |.... ---------..|
00001350  cf 0f f4 20 55 74 69 6c  69 74 69 65 73 0d 00 d0  |... Utilities...|
00001360  0f f4 20 2d 2d 2d 2d 2d  2d 2d 2d 2d 0d 00 d1 04  |.. ---------....|
00001370  0d 00 d2 17 dd 20 f2 40  53 65 6e 64 54 6f 42 41  |..... .@SendToBA|
00001380  53 49 43 28 78 24 29 0d  00 d3 10 e3 20 69 25 3d  |SIC(x$)..... i%=|
00001390  31 20 b8 20 a9 78 24 0d  00 d4 23 c8 99 20 22 4f  |1 . .x$...#.. "O|
000013a0  53 5f 42 79 74 65 22 2c  31 35 33 2c 30 2c 97 28  |S_Byte",153,0,.(|
000013b0  c1 78 24 2c 69 25 2c 31  29 29 0d 00 d5 05 ed 0d  |.x$,i%,1))......|
000013c0  00 d6 19 c8 99 20 22 4f  53 5f 42 79 74 65 22 2c  |..... "OS_Byte",|
000013d0  31 35 33 2c 30 2c 31 33  0d 00 d7 05 e1 0d 00 d8  |153,0,13........|
000013e0  04 0d 00 d9 19 dd 20 f2  40 48 65 61 64 69 6e 67  |...... .@Heading|
000013f0  28 78 24 2c 63 24 2c 63  25 29 0d 00 da 0a 20 20  |(x$,c$,c%)....  |
00001400  fb 20 63 25 0d 00 db 1b  20 20 e7 20 63 24 3c 3e  |. c%....  . c$<>|
00001410  22 22 20 8c 20 f1 27 c4  a9 78 24 2c 63 24 29 0d  |"" . .'..x$,c$).|
00001420  00 dc 0a 20 20 f1 20 78  24 0d 00 dd 1b 20 20 e7  |...  . x$....  .|
00001430  20 63 24 3c 3e 22 22 20  8c 20 f1 20 c4 a9 78 24  | c$<>"" . . ..x$|
00001440  2c 63 24 29 0d 00 de 07  20 20 f1 0d 00 df 09 20  |,c$)....  ..... |
00001450  20 fb 20 37 0d 00 e0 07  20 20 e1 0d 00 e1 04 0d  | . 7....  ......|
00001460  00 e2 04 0d 00 e3 1e dd  20 a4 40 46 69 6c 65 5f  |........ .@File_|
00001470  45 78 69 73 74 73 28 70  61 74 68 6e 61 6d 65 24  |Exists(pathname$|
00001480  29 0d 00 e4 0d ea 20 66  6f 75 6e 64 25 20 0d 00  |)..... found% ..|
00001490  e5 27 c8 99 20 22 58 4f  53 5f 46 69 6c 65 22 2c  |.'.. "XOS_File",|
000014a0  31 33 2c 70 61 74 68 6e  61 6d 65 24 20 b8 20 66  |13,pathname$ . f|
000014b0  6f 75 6e 64 25 0d 00 e6  0c 3d 2d 66 6f 75 6e 64  |ound%....=-found|
000014c0  25 0d 00 e7 04 0d 00 e8  13 dd 20 a4 40 47 65 74  |%......... .@Get|
000014d0  5f 44 45 46 28 78 24 29  0d 00 e9 13 20 20 ea 20  |_DEF(x$)....  . |
000014e0  79 24 2c 63 68 61 72 25  2c 69 25 0d 00 ea 15 20  |y$,char%,i%.... |
000014f0  20 69 25 3d a7 78 24 2c  22 44 45 46 22 29 2b 33  | i%=.x$,"DEF")+3|
00001500  0d 00 eb 0b 20 20 79 24  3d 22 22 0d 00 ec 20 20  |....  y$=""...  |
00001510  20 c8 95 20 c1 78 24 2c  69 25 29 3d 22 20 22 20  | .. .x$,i%)=" " |
00001520  3a 20 69 25 2b 3d 31 20  3a 20 ce 0d 00 ed 17 20  |: i%+=1 : ..... |
00001530  20 20 63 68 61 72 25 3d  97 28 c1 78 24 2c 69 25  |  char%=.(.x$,i%|
00001540  29 29 0d 00 ee 08 20 20  f5 20 0d 00 ef 12 20 20  |))....  . ....  |
00001550  79 24 2b 3d bd 28 63 68  61 72 25 29 0d 00 f0 0b  |y$+=.(char%)....|
00001560  20 20 69 25 2b 3d 31 0d  00 f1 16 20 20 63 68 61  |  i%+=1....  cha|
00001570  72 25 3d 97 28 c1 78 24  2c 69 25 29 29 0d 00 f2  |r%=.(.x$,i%))...|
00001580  21 20 20 fd 20 a4 40 49  6e 76 61 6c 69 64 28 63  |!  . .@Invalid(c|
00001590  68 61 72 25 29 20 84 20  69 25 3e 32 35 36 0d 00  |har%) . i%>256..|
000015a0  f3 1a 20 20 e7 20 63 68  61 72 25 3d 34 30 20 8c  |..  . char%=40 .|
000015b0  20 79 24 2b 3d 22 28 22  0d 00 f4 13 20 20 3d a4  | y$+="("....  =.|
000015c0  40 52 65 6d 6f 76 65 28  79 24 29 0d 00 f5 07 20  |@Remove(y$).... |
000015d0  20 3a 0d 00 f6 18 20 20  dd 20 a4 40 49 6e 76 61  | :....  . .@Inva|
000015e0  6c 69 64 28 63 68 61 72  25 29 0d 00 f7 0c 20 20  |lid(char%)....  |
000015f0  c8 8e 20 b9 20 ca 0d 00  f8 2d 20 20 20 c9 20 28  |.. . ....-   . (|
00001600  63 68 61 72 25 3e 36 33  20 80 20 63 68 61 72 25  |char%>63 . char%|
00001610  3c 39 31 29 20 20 20 20  3a 20 72 65 73 75 6c 74  |<91)    : result|
00001620  25 3d a3 0d 00 f9 2d 20  20 20 c9 20 28 63 68 61  |%=....-   . (cha|
00001630  72 25 3e 39 36 29 20 80  20 28 63 68 61 72 25 3c  |r%>96) . (char%<|
00001640  31 32 33 29 20 3a 20 72  65 73 75 6c 74 25 3d a3  |123) : result%=.|
00001650  0d 00 fa 2d 20 20 20 c9  20 28 63 68 61 72 25 3e  |...-   . (char%>|
00001660  34 37 29 20 80 20 28 63  68 61 72 25 3c 35 38 29  |47) . (char%<58)|
00001670  20 20 3a 20 72 65 73 75  6c 74 25 3d a3 0d 00 fb  |  : result%=....|
00001680  2f 20 20 20 c9 20 63 68  61 72 25 3d 39 35 20 20  |/   . char%=95  |
00001690  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000016a0  20 3a 20 72 65 73 75 6c  74 25 3d a3 0d 00 fc 14  | : result%=.....|
000016b0  20 20 20 7f 20 3a 20 72  65 73 75 6c 74 25 3d b9  |   . : result%=.|
000016c0  0d 00 fd 07 20 20 cb 0d  00 fe 0e 20 20 3d 72 65  |....  .....  =re|
000016d0  73 75 6c 74 25 0d 00 ff  07 20 20 3a 0d 01 00 14  |sult%....  :....|
000016e0  20 20 dd 20 a4 40 52 65  6d 6f 76 65 28 78 24 29  |  . .@Remove(x$)|
000016f0  0d 01 01 2f 20 20 e7 20  c0 78 24 2c 31 29 3c 3e  |.../  . .x$,1)<>|
00001700  22 20 22 20 8c 3d 78 24  20 8b 3d a4 40 52 65 6d  |" " .=x$ .=.@Rem|
00001710  6f 76 65 28 c2 78 24 2c  a9 78 24 2d 31 29 29 0d  |ove(.x$,.x$-1)).|
00001720  01 02 04 0d ff                                    |.....|
00001725