Home » Archimedes archive » Acorn User » AU 1998-03 B.adf » StarInfo » Boham/ClearSys

Boham/ClearSys

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 1998-03 B.adf » StarInfo
Filename: Boham/ClearSys
Read OK:
File size: 05AA bytes
Load address: 0000
Exec address: 0000
File contents
   10ON ERROR: ON ERROR OFF: PRINT REPORT$;" at line ";ERL:END
   11VDU 26,20,12
   20DIM mod_buffer% 128*1024,block 128
   21sys$="<System$Dir>"
   22PRINT "Searching !System directory..."'
   23PRINT "Location";TAB(30);"Module";TAB(50);"On disc";TAB(60);"In ROM";TAB(70);"Delete?"
   24PRINT "--------";TAB(30);"------";TAB(50);"-------";TAB(60);"------";TAB(70);"-------"
   30PROCscan("")
   40END
   50:
   60DEF PROCscan(dir$)
   70LOCAL i
   80i=0
   90REPEAT
  100SYS "OS_GBPB",12,sys$+dir$,block,1,i,128,0 TO ,,,read,i
  110IF read=1 THEN
  120ob$=FNs(block+24)
  130CASE block!16 OF
  140WHEN 1: IF block!20 = &FFA PROCcheck(dir$,ob$, block!8)
  170WHEN 2: PROCscan(dir$+"."+ob$)
  180ENDCASE
  190ENDIF
  200UNTIL i=-1
  210ENDPROC
  220:
  470DEFPROCcheck(dir$,mod$,l%)
  480LOCAL disc$,rom$
  481path$=sys$+dir$+"."+mod$
  490IF l%<128*1024 THEN
  500OSCLI"Load "+path$+" "+STR$~(mod_buffer%)
  510disc$ = FNgrab_version(mod_buffer%)
  520rom$  = FNrom_version(FNs(mod_buffer% + (mod_buffer%!16)))
  530IF rom$<>"NOT" THEN
  540PRINT MID$(dir$,2);TAB(30);mod$;TAB(50);disc$;TAB(60);rom$;
  550disc = VAL(disc$)
  560rom  = VAL(rom$)
  570IF disc<rom THEN
  580PRINT TAB(70);"?";
  581G=GET
  582VDU 127,G
  583IF CHR$(G OR 32)="y" THEN OSCLI"Wipe "+path$+" F"
  610ENDIF
  620PRINT
  630ENDIF
  640
  650ENDIF
  660ENDPROC
  670:
  680DEFFNrom_version(m$)
  690LOCAL f%,code%
  700SYS "XOS_Module",18,m$ TO ,,,code%;f%
  710IF code%<&3000000 OR (f% AND 1) THEN ="NOT"
  720=FNgrab_version(code%)
  730:
  740DEFFNgrab_version(b%)
  750LOCAL h%,s$
  760h% = (b%!20) + b%
  770WHILE ?h% <> 9
  780h%=h%+1
  790ENDWHILE
  800WHILE ?h% = 9
  810h%=h%+1
  820ENDWHILE
  830s$=""
  840WHILE (?h%>=ASC("0") AND ?h%<=ASC("9")) OR ?h%=ASC(".")
  850s$=s$+CHR$(?h%)
  860h%=h%+1
  870ENDWHILE
  880=s$
  890:
  900DEFFNs(a)
  910LOCAL a$
  920WHILE ?a>31
  930a$=a$+CHR$(?a)
  940a=a+1
  950ENDWHILE
  960=a$

$� �: � � �: � �$;" at line ";�:�
� 26,20,12
$� mod_buffer% 128*1024,block 128
sys$="<System$Dir>"
'� "Searching !System directory..."'
J� "Location";�30);"Module";�50);"On disc";�60);"In ROM";�70);"Delete?"
J� "--------";�30);"------";�50);"-------";�60);"------";�70);"-------"

�scan("")
(�
2:
<� �scan(dir$)
F� i
Pi=0
Z�
d9ș "OS_GBPB",12,sys$+dir$,block,1,i,128,0 � ,,,read,i
n� read=1 �
xob$=�s(block+24)
�Ȏ block!16 �
�4� 1: � block!20 = &FFA �check(dir$,ob$, block!8)
�� 2: �scan(dir$+"."+ob$)
��
��
�
� i=-1
��
�:
���check(dir$,mod$,l%)
�� disc$,rom$
�path$=sys$+dir$+"."+mod$
�� l%<128*1024 �
�&�"Load "+path$+" "+�~(mod_buffer%)
�&disc$ = �grab_version(mod_buffer%)
<rom$  = �rom_version(�s(mod_buffer% + (mod_buffer%!16)))
� rom$<>"NOT" �
.� �dir$,2);�30);mod$;�50);disc$;�60);rom$;
&disc = �(disc$)
0rom  = �(rom$)
:� disc<rom �
D� �70);"?";
EG=�
F� 127,G
G)� �(G � 32)="y" � �"Wipe "+path$+" F"
b�
l�
v�
�
��
��
�:
�ݤrom_version(m$)
�� f%,code%
�'ș "XOS_Module",18,m$ � ,,,code%;f%
�(� code%<&3000000 � (f% � 1) � ="NOT"
�=�grab_version(code%)
�:
�ݤgrab_version(b%)
�� h%,s$
�h% = (b%!20) + b%
ȕ ?h% <> 9
h%=h%+1
�
 ȕ ?h% = 9
*h%=h%+1
4�
>	s$=""
H/ȕ (?h%>=�("0") � ?h%<=�("9")) � ?h%=�(".")
Rs$=s$+�(?h%)
\h%=h%+1
f�
p=s$
z:
�
ݤs(a)
�� a$
�ȕ ?a>31
�a$=a$+�(?a)
�	a=a+1
��
�=a$
�
00000000  0d 00 0a 24 ee 20 85 3a  20 ee 20 85 20 87 3a 20  |...$. .: . . .: |
00000010  f1 20 f6 24 3b 22 20 61  74 20 6c 69 6e 65 20 22  |. .$;" at line "|
00000020  3b 9e 3a e0 0d 00 0b 0e  ef 20 32 36 2c 32 30 2c  |;.:...... 26,20,|
00000030  31 32 0d 00 14 24 de 20  6d 6f 64 5f 62 75 66 66  |12...$. mod_buff|
00000040  65 72 25 20 31 32 38 2a  31 30 32 34 2c 62 6c 6f  |er% 128*1024,blo|
00000050  63 6b 20 31 32 38 0d 00  15 17 73 79 73 24 3d 22  |ck 128....sys$="|
00000060  3c 53 79 73 74 65 6d 24  44 69 72 3e 22 0d 00 16  |<System$Dir>"...|
00000070  27 f1 20 22 53 65 61 72  63 68 69 6e 67 20 21 53  |'. "Searching !S|
00000080  79 73 74 65 6d 20 64 69  72 65 63 74 6f 72 79 2e  |ystem directory.|
00000090  2e 2e 22 27 0d 00 17 4a  f1 20 22 4c 6f 63 61 74  |.."'...J. "Locat|
000000a0  69 6f 6e 22 3b 8a 33 30  29 3b 22 4d 6f 64 75 6c  |ion";.30);"Modul|
000000b0  65 22 3b 8a 35 30 29 3b  22 4f 6e 20 64 69 73 63  |e";.50);"On disc|
000000c0  22 3b 8a 36 30 29 3b 22  49 6e 20 52 4f 4d 22 3b  |";.60);"In ROM";|
000000d0  8a 37 30 29 3b 22 44 65  6c 65 74 65 3f 22 0d 00  |.70);"Delete?"..|
000000e0  18 4a f1 20 22 2d 2d 2d  2d 2d 2d 2d 2d 22 3b 8a  |.J. "--------";.|
000000f0  33 30 29 3b 22 2d 2d 2d  2d 2d 2d 22 3b 8a 35 30  |30);"------";.50|
00000100  29 3b 22 2d 2d 2d 2d 2d  2d 2d 22 3b 8a 36 30 29  |);"-------";.60)|
00000110  3b 22 2d 2d 2d 2d 2d 2d  22 3b 8a 37 30 29 3b 22  |;"------";.70);"|
00000120  2d 2d 2d 2d 2d 2d 2d 22  0d 00 1e 0d f2 73 63 61  |-------".....sca|
00000130  6e 28 22 22 29 0d 00 28  05 e0 0d 00 32 05 3a 0d  |n("")..(....2.:.|
00000140  00 3c 11 dd 20 f2 73 63  61 6e 28 64 69 72 24 29  |.<.. .scan(dir$)|
00000150  0d 00 46 07 ea 20 69 0d  00 50 07 69 3d 30 0d 00  |..F.. i..P.i=0..|
00000160  5a 05 f5 0d 00 64 39 c8  99 20 22 4f 53 5f 47 42  |Z....d9.. "OS_GB|
00000170  50 42 22 2c 31 32 2c 73  79 73 24 2b 64 69 72 24  |PB",12,sys$+dir$|
00000180  2c 62 6c 6f 63 6b 2c 31  2c 69 2c 31 32 38 2c 30  |,block,1,i,128,0|
00000190  20 b8 20 2c 2c 2c 72 65  61 64 2c 69 0d 00 6e 0e  | . ,,,read,i..n.|
000001a0  e7 20 72 65 61 64 3d 31  20 8c 0d 00 78 14 6f 62  |. read=1 ...x.ob|
000001b0  24 3d a4 73 28 62 6c 6f  63 6b 2b 32 34 29 0d 00  |$=.s(block+24)..|
000001c0  82 11 c8 8e 20 62 6c 6f  63 6b 21 31 36 20 ca 0d  |.... block!16 ..|
000001d0  00 8c 34 c9 20 31 3a 20  e7 20 62 6c 6f 63 6b 21  |..4. 1: . block!|
000001e0  32 30 20 3d 20 26 46 46  41 20 f2 63 68 65 63 6b  |20 = &FFA .check|
000001f0  28 64 69 72 24 2c 6f 62  24 2c 20 62 6c 6f 63 6b  |(dir$,ob$, block|
00000200  21 38 29 0d 00 aa 1c c9  20 32 3a 20 f2 73 63 61  |!8)..... 2: .sca|
00000210  6e 28 64 69 72 24 2b 22  2e 22 2b 6f 62 24 29 0d  |n(dir$+"."+ob$).|
00000220  00 b4 05 cb 0d 00 be 05  cd 0d 00 c8 0a fd 20 69  |.............. i|
00000230  3d 2d 31 0d 00 d2 05 e1  0d 00 dc 05 3a 0d 01 d6  |=-1.........:...|
00000240  19 dd f2 63 68 65 63 6b  28 64 69 72 24 2c 6d 6f  |...check(dir$,mo|
00000250  64 24 2c 6c 25 29 0d 01  e0 10 ea 20 64 69 73 63  |d$,l%)..... disc|
00000260  24 2c 72 6f 6d 24 0d 01  e1 1c 70 61 74 68 24 3d  |$,rom$....path$=|
00000270  73 79 73 24 2b 64 69 72  24 2b 22 2e 22 2b 6d 6f  |sys$+dir$+"."+mo|
00000280  64 24 0d 01 ea 13 e7 20  6c 25 3c 31 32 38 2a 31  |d$..... l%<128*1|
00000290  30 32 34 20 8c 0d 01 f4  26 ff 22 4c 6f 61 64 20  |024 ....&."Load |
000002a0  22 2b 70 61 74 68 24 2b  22 20 22 2b c3 7e 28 6d  |"+path$+" "+.~(m|
000002b0  6f 64 5f 62 75 66 66 65  72 25 29 0d 01 fe 26 64  |od_buffer%)...&d|
000002c0  69 73 63 24 20 3d 20 a4  67 72 61 62 5f 76 65 72  |isc$ = .grab_ver|
000002d0  73 69 6f 6e 28 6d 6f 64  5f 62 75 66 66 65 72 25  |sion(mod_buffer%|
000002e0  29 0d 02 08 3c 72 6f 6d  24 20 20 3d 20 a4 72 6f  |)...<rom$  = .ro|
000002f0  6d 5f 76 65 72 73 69 6f  6e 28 a4 73 28 6d 6f 64  |m_version(.s(mod|
00000300  5f 62 75 66 66 65 72 25  20 2b 20 28 6d 6f 64 5f  |_buffer% + (mod_|
00000310  62 75 66 66 65 72 25 21  31 36 29 29 29 0d 02 12  |buffer%!16)))...|
00000320  13 e7 20 72 6f 6d 24 3c  3e 22 4e 4f 54 22 20 8c  |.. rom$<>"NOT" .|
00000330  0d 02 1c 2e f1 20 c1 64  69 72 24 2c 32 29 3b 8a  |..... .dir$,2);.|
00000340  33 30 29 3b 6d 6f 64 24  3b 8a 35 30 29 3b 64 69  |30);mod$;.50);di|
00000350  73 63 24 3b 8a 36 30 29  3b 72 6f 6d 24 3b 0d 02  |sc$;.60);rom$;..|
00000360  26 13 64 69 73 63 20 3d  20 bb 28 64 69 73 63 24  |&.disc = .(disc$|
00000370  29 0d 02 30 12 72 6f 6d  20 20 3d 20 bb 28 72 6f  |)..0.rom  = .(ro|
00000380  6d 24 29 0d 02 3a 10 e7  20 64 69 73 63 3c 72 6f  |m$)..:.. disc<ro|
00000390  6d 20 8c 0d 02 44 0f f1  20 8a 37 30 29 3b 22 3f  |m ...D.. .70);"?|
000003a0  22 3b 0d 02 45 07 47 3d  a5 0d 02 46 0b ef 20 31  |";..E.G=...F.. 1|
000003b0  32 37 2c 47 0d 02 47 29  e7 20 bd 28 47 20 84 20  |27,G..G). .(G . |
000003c0  33 32 29 3d 22 79 22 20  8c 20 ff 22 57 69 70 65  |32)="y" . ."Wipe|
000003d0  20 22 2b 70 61 74 68 24  2b 22 20 46 22 0d 02 62  | "+path$+" F"..b|
000003e0  05 cd 0d 02 6c 05 f1 0d  02 76 05 cd 0d 02 80 04  |....l....v......|
000003f0  0d 02 8a 05 cd 0d 02 94  05 e1 0d 02 9e 05 3a 0d  |..............:.|
00000400  02 a8 15 dd a4 72 6f 6d  5f 76 65 72 73 69 6f 6e  |.....rom_version|
00000410  28 6d 24 29 0d 02 b2 0e  ea 20 66 25 2c 63 6f 64  |(m$)..... f%,cod|
00000420  65 25 0d 02 bc 27 c8 99  20 22 58 4f 53 5f 4d 6f  |e%...'.. "XOS_Mo|
00000430  64 75 6c 65 22 2c 31 38  2c 6d 24 20 b8 20 2c 2c  |dule",18,m$ . ,,|
00000440  2c 63 6f 64 65 25 3b 66  25 0d 02 c6 28 e7 20 63  |,code%;f%...(. c|
00000450  6f 64 65 25 3c 26 33 30  30 30 30 30 30 20 84 20  |ode%<&3000000 . |
00000460  28 66 25 20 80 20 31 29  20 8c 20 3d 22 4e 4f 54  |(f% . 1) . ="NOT|
00000470  22 0d 02 d0 19 3d a4 67  72 61 62 5f 76 65 72 73  |"....=.grab_vers|
00000480  69 6f 6e 28 63 6f 64 65  25 29 0d 02 da 05 3a 0d  |ion(code%)....:.|
00000490  02 e4 16 dd a4 67 72 61  62 5f 76 65 72 73 69 6f  |.....grab_versio|
000004a0  6e 28 62 25 29 0d 02 ee  0b ea 20 68 25 2c 73 24  |n(b%)..... h%,s$|
000004b0  0d 02 f8 15 68 25 20 3d  20 28 62 25 21 32 30 29  |....h% = (b%!20)|
000004c0  20 2b 20 62 25 0d 03 02  0f c8 95 20 3f 68 25 20  | + b%...... ?h% |
000004d0  3c 3e 20 39 0d 03 0c 0b  68 25 3d 68 25 2b 31 0d  |<> 9....h%=h%+1.|
000004e0  03 16 05 ce 0d 03 20 0e  c8 95 20 3f 68 25 20 3d  |...... ... ?h% =|
000004f0  20 39 0d 03 2a 0b 68 25  3d 68 25 2b 31 0d 03 34  | 9..*.h%=h%+1..4|
00000500  05 ce 0d 03 3e 09 73 24  3d 22 22 0d 03 48 2f c8  |....>.s$=""..H/.|
00000510  95 20 28 3f 68 25 3e 3d  97 28 22 30 22 29 20 80  |. (?h%>=.("0") .|
00000520  20 3f 68 25 3c 3d 97 28  22 39 22 29 29 20 84 20  | ?h%<=.("9")) . |
00000530  3f 68 25 3d 97 28 22 2e  22 29 0d 03 52 10 73 24  |?h%=.(".")..R.s$|
00000540  3d 73 24 2b bd 28 3f 68  25 29 0d 03 5c 0b 68 25  |=s$+.(?h%)..\.h%|
00000550  3d 68 25 2b 31 0d 03 66  05 ce 0d 03 70 07 3d 73  |=h%+1..f....p.=s|
00000560  24 0d 03 7a 05 3a 0d 03  84 0a dd a4 73 28 61 29  |$..z.:......s(a)|
00000570  0d 03 8e 08 ea 20 61 24  0d 03 98 0c c8 95 20 3f  |..... a$...... ?|
00000580  61 3e 33 31 0d 03 a2 0f  61 24 3d 61 24 2b bd 28  |a>31....a$=a$+.(|
00000590  3f 61 29 0d 03 ac 09 61  3d 61 2b 31 0d 03 b6 05  |?a)....a=a+1....|
000005a0  ce 0d 03 c0 07 3d 61 24  0d ff                    |.....=a$..|
000005aa