Home » Archimedes archive » Acorn Computing » 1995 01 subscription disc.adf » 9501s » PD/!LIBRARY/SETRUNPATH

PD/!LIBRARY/SETRUNPATH

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 Computing » 1995 01 subscription disc.adf » 9501s
Filename: PD/!LIBRARY/SETRUNPATH
Read OK:
File size: 0335 bytes
Load address: 0000
Exec address: 0000
File contents
   10REM>:SetUp.$.!Library.SetRunPath
   20SYS "OS_GetEnv" TO name$
   30FOR X%=1 TO 3:pos%=INSTR(name$," ",pos%):name$=RIGHT$(name$,LEN(name$)-pos%):NEXT
   40DIM buf% &400,var% 256
   50$var%="Run$Path"+CHR$0
   60SYS "OS_ReadVarVal",var%,buf%,&400,0,3 TO ,,length%
   70length%-=1
   80A$="":FOR X%=0 TO length%:A$=A$+CHR$(?(buf%+X%)):NEXT
   90IF LEFT$(A$,1)<>"," A$+=","
  100IF RIGHT$(name$)="," THEN name$=LEFT$(name$)
  110IF RIGHT$(name$)="." THEN name$=LEFT$(name$)
  120IF LEFT$(name$,1)="<" THEN
  130$var%=MID$(name$,2,INSTR(name$,">")-2)+CHR$0
  140SYS "OS_ReadVarVal",var%,buf%,&400,0,3 TO ,,length%
  150length%-=1
  160B$="":FOR X%=0 TO length%:B$=B$+CHR$(?(buf%+X%)):NEXT
  170name$=B$+RIGHT$(name$,LEN(name$)-INSTR(name$,">"))
  180IF RIGHT$(name$)="." THEN name$=LEFT$(name$)
  190ENDIF
  200match%=0
  210REPEAT
  220pos%=INSTR(A$,",")
  230IF LEFT$(A$,LEN(name$))=name$ THEN match%=1 ELSE A$=RIGHT$(A$,LEN(A$)-pos%)
  240UNTIL LEN(A$)<=0 OR match%=1 OR pos%=0
  250IF match%=0 THEN
  260OSCLI("SET Run$Path <Run$Path>,"+name$+".")
  270ENDIF

"�>:SetUp.$.!Library.SetRunPath
ș "OS_GetEnv" � name$
B� X%=1 � 3:pos%=�name$," ",pos%):name$=�name$,�(name$)-pos%):�
(� buf% &400,var% 256
2$var%="Run$Path"+�0
<5ș "OS_ReadVarVal",var%,buf%,&400,0,3 � ,,length%
Flength%-=1
P0A$="":� X%=0 � length%:A$=A$+�(?(buf%+X%)):�
Z� �A$,1)<>"," A$+=","
d!� �name$)="," � name$=�name$)
n!� �name$)="." � name$=�name$)
x� �name$,1)="<" �
�$$var%=�name$,2,�name$,">")-2)+�0
�5ș "OS_ReadVarVal",var%,buf%,&400,0,3 � ,,length%
�length%-=1
�0B$="":� X%=0 � length%:B$=B$+�(?(buf%+X%)):�
�)name$=B$+�name$,�(name$)-�name$,">"))
�!� �name$)="." � name$=�name$)
��
�match%=0
��
�pos%=�A$,",")
�9� �A$,�(name$))=name$ � match%=1 � A$=�A$,�(A$)-pos%)
�"� �(A$)<=0 � match%=1 � pos%=0
�� match%=0 �
+�("SET Run$Path <Run$Path>,"+name$+".")
�
�
00000000  0d 00 0a 22 f4 3e 3a 53  65 74 55 70 2e 24 2e 21  |...".>:SetUp.$.!|
00000010  4c 69 62 72 61 72 79 2e  53 65 74 52 75 6e 50 61  |Library.SetRunPa|
00000020  74 68 0d 00 14 1a c8 99  20 22 4f 53 5f 47 65 74  |th...... "OS_Get|
00000030  45 6e 76 22 20 b8 20 6e  61 6d 65 24 0d 00 1e 42  |Env" . name$...B|
00000040  e3 20 58 25 3d 31 20 b8  20 33 3a 70 6f 73 25 3d  |. X%=1 . 3:pos%=|
00000050  a7 6e 61 6d 65 24 2c 22  20 22 2c 70 6f 73 25 29  |.name$," ",pos%)|
00000060  3a 6e 61 6d 65 24 3d c2  6e 61 6d 65 24 2c a9 28  |:name$=.name$,.(|
00000070  6e 61 6d 65 24 29 2d 70  6f 73 25 29 3a ed 0d 00  |name$)-pos%):...|
00000080  28 18 de 20 62 75 66 25  20 26 34 30 30 2c 76 61  |(.. buf% &400,va|
00000090  72 25 20 32 35 36 0d 00  32 17 24 76 61 72 25 3d  |r% 256..2.$var%=|
000000a0  22 52 75 6e 24 50 61 74  68 22 2b bd 30 0d 00 3c  |"Run$Path"+.0..<|
000000b0  35 c8 99 20 22 4f 53 5f  52 65 61 64 56 61 72 56  |5.. "OS_ReadVarV|
000000c0  61 6c 22 2c 76 61 72 25  2c 62 75 66 25 2c 26 34  |al",var%,buf%,&4|
000000d0  30 30 2c 30 2c 33 20 b8  20 2c 2c 6c 65 6e 67 74  |00,0,3 . ,,lengt|
000000e0  68 25 0d 00 46 0e 6c 65  6e 67 74 68 25 2d 3d 31  |h%..F.length%-=1|
000000f0  0d 00 50 30 41 24 3d 22  22 3a e3 20 58 25 3d 30  |..P0A$="":. X%=0|
00000100  20 b8 20 6c 65 6e 67 74  68 25 3a 41 24 3d 41 24  | . length%:A$=A$|
00000110  2b bd 28 3f 28 62 75 66  25 2b 58 25 29 29 3a ed  |+.(?(buf%+X%)):.|
00000120  0d 00 5a 19 e7 20 c0 41  24 2c 31 29 3c 3e 22 2c  |..Z.. .A$,1)<>",|
00000130  22 20 41 24 2b 3d 22 2c  22 0d 00 64 21 e7 20 c2  |" A$+=","..d!. .|
00000140  6e 61 6d 65 24 29 3d 22  2c 22 20 8c 20 6e 61 6d  |name$)="," . nam|
00000150  65 24 3d c0 6e 61 6d 65  24 29 0d 00 6e 21 e7 20  |e$=.name$)..n!. |
00000160  c2 6e 61 6d 65 24 29 3d  22 2e 22 20 8c 20 6e 61  |.name$)="." . na|
00000170  6d 65 24 3d c0 6e 61 6d  65 24 29 0d 00 78 15 e7  |me$=.name$)..x..|
00000180  20 c0 6e 61 6d 65 24 2c  31 29 3d 22 3c 22 20 8c  | .name$,1)="<" .|
00000190  0d 00 82 24 24 76 61 72  25 3d c1 6e 61 6d 65 24  |...$$var%=.name$|
000001a0  2c 32 2c a7 6e 61 6d 65  24 2c 22 3e 22 29 2d 32  |,2,.name$,">")-2|
000001b0  29 2b bd 30 0d 00 8c 35  c8 99 20 22 4f 53 5f 52  |)+.0...5.. "OS_R|
000001c0  65 61 64 56 61 72 56 61  6c 22 2c 76 61 72 25 2c  |eadVarVal",var%,|
000001d0  62 75 66 25 2c 26 34 30  30 2c 30 2c 33 20 b8 20  |buf%,&400,0,3 . |
000001e0  2c 2c 6c 65 6e 67 74 68  25 0d 00 96 0e 6c 65 6e  |,,length%....len|
000001f0  67 74 68 25 2d 3d 31 0d  00 a0 30 42 24 3d 22 22  |gth%-=1...0B$=""|
00000200  3a e3 20 58 25 3d 30 20  b8 20 6c 65 6e 67 74 68  |:. X%=0 . length|
00000210  25 3a 42 24 3d 42 24 2b  bd 28 3f 28 62 75 66 25  |%:B$=B$+.(?(buf%|
00000220  2b 58 25 29 29 3a ed 0d  00 aa 29 6e 61 6d 65 24  |+X%)):....)name$|
00000230  3d 42 24 2b c2 6e 61 6d  65 24 2c a9 28 6e 61 6d  |=B$+.name$,.(nam|
00000240  65 24 29 2d a7 6e 61 6d  65 24 2c 22 3e 22 29 29  |e$)-.name$,">"))|
00000250  0d 00 b4 21 e7 20 c2 6e  61 6d 65 24 29 3d 22 2e  |...!. .name$)=".|
00000260  22 20 8c 20 6e 61 6d 65  24 3d c0 6e 61 6d 65 24  |" . name$=.name$|
00000270  29 0d 00 be 05 cd 0d 00  c8 0c 6d 61 74 63 68 25  |).........match%|
00000280  3d 30 0d 00 d2 05 f5 0d  00 dc 11 70 6f 73 25 3d  |=0.........pos%=|
00000290  a7 41 24 2c 22 2c 22 29  0d 00 e6 39 e7 20 c0 41  |.A$,",")...9. .A|
000002a0  24 2c a9 28 6e 61 6d 65  24 29 29 3d 6e 61 6d 65  |$,.(name$))=name|
000002b0  24 20 8c 20 6d 61 74 63  68 25 3d 31 20 8b 20 41  |$ . match%=1 . A|
000002c0  24 3d c2 41 24 2c a9 28  41 24 29 2d 70 6f 73 25  |$=.A$,.(A$)-pos%|
000002d0  29 0d 00 f0 22 fd 20 a9  28 41 24 29 3c 3d 30 20  |)...". .(A$)<=0 |
000002e0  84 20 6d 61 74 63 68 25  3d 31 20 84 20 70 6f 73  |. match%=1 . pos|
000002f0  25 3d 30 0d 00 fa 10 e7  20 6d 61 74 63 68 25 3d  |%=0..... match%=|
00000300  30 20 8c 0d 01 04 2b ff  28 22 53 45 54 20 52 75  |0 ....+.("SET Ru|
00000310  6e 24 50 61 74 68 20 3c  52 75 6e 24 50 61 74 68  |n$Path <Run$Path|
00000320  3e 2c 22 2b 6e 61 6d 65  24 2b 22 2e 22 29 0d 01  |>,"+name$+".")..|
00000330  0e 05 cd 0d ff                                    |.....|
00000335