Home » Archimedes archive » Acorn User » Acorn User - Shareware Collection (1993).adf » BlackHole » !BlakHole2/Setup

!BlakHole2/Setup

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 » Acorn User - Shareware Collection (1993).adf » BlackHole
Filename: !BlakHole2/Setup
Read OK:
File size: 16F4 bytes
Load address: 0000
Exec address: 0000
File contents
   10DEFPROCwatneys_red_barrel
   20LOCAL l%
   30high=&200000:off=&800000:grey=&400000
   40bl2%=bl%+1432:bl3%=bl%+1560:bl4%=bl%+1688:bl5%=bl%+1816
   50message%=bl%+1144
   60v$="Version 1.16"
   70saving%=0:wip%=0:currpath%=0:fffast%=0:undertaker%=0
   80wipehandle%=0:crnt%=0:clicon%=0:tot%=0:totalsize%=0
   90delhandle%=0:tdim%=FALSE:wiping%=FALSE:toomanyfiles%=FALSE
  100desconhandle%=0:getem%=FALSE:mode%=MODE
  110abouttoquit%=0:configopen%=FALSE:resizeneeded%=FALSE
  120clicon%=99999999:tmen%=0
  130IF FNobjtype("%.Squash")=1 squashpres%=TRUE ELSEsquashpres%=FALSE
  140day()=0,31,59,90,120,151,181,212,242,273,303,334
  150IF NOT squashpres% shutsquash%=FALSE:PROCselic(Pane%,32,grey,grey)
  160file%=0:foundopen%=0:found%=0:zappa%=100:usearcfs%=0:casesens%=FALSE
  170query%=0:ffact%=2:usedtoday%=FALSE
  180ENDPROC
  190DEFPROCpenguin
  200PROCgetbin(0)
  210IF badbin% THEN
  220PROCps(Pane%,11,home$+".BlackHole")
  230PROCps(Query%,0,FNmsg("bbs","",""))
  240PROCsavopt:PROCgetbin(0):badbin%=TRUE
  250ENDIF
  260PROCps(Auto%,9,"Current : "+STR$(currpath%+1))
  270PROCps(Auto%,10,"Total : "+STR$(p%))
  280PROCps(Pane%,17,sprites$)
  290PROCedure
  300FOR l%=0 TO 23:men$(l%)=FNmsg("MEN"+STR$(l%),"",""):NEXT
  310pollmask%=FNpollmask
  320mfont%=FNfindfont(FNmsg("mf","",""),VAL(FNmsg("mfs","","")),VAL(FNmsg("mfh","","")),"homerton.medium",13,13)
  330ifont%=FNfindfont(FNmsg("if","",""),VAL(FNmsg("ifs","","")),VAL(FNmsg("ifh","","")),"trinity.medium",14,14)
  340PROCps(Info%,2,v$)
  350IF !spinon%=FALSE PROCps(Info%,1,FNmsg("fwe","","")) ELSEPROCps(Info%,1," ")
  360ENDPROC
  370DEFPROCparrot(use%,x%,y%)
  380LOCALn%,addr%,l%,temp$,count%,addr%,wip%,day%,month%,year%,poo%,mem%
  390IF use%=1 THEN
  400OSCLI("Filer_OpenDir "+bin$+" "+STR$x%+" "+STR$y%)
  410x%+=32:y%-=48
  420ENDIF
  430mem%=FNdim(3000):IF mem%=0 ENDPROC
  440wip%=0:temp$=bin$
  450IF use%=0 THEN
  460SYS&C,10,temp$,mem%,77,0,3000,"##_##_####" TO ,,,no%
  470IF no%>0 wip%=TRUE
  480ENDIF
  490IF wip% PROClamation(FNmsg("Ooer","",""),-1,8):SYS&2001E,7,,mem%:ENDPROC
  500count%=0:addr%=mem%
  510SYS&C,9,temp$,mem%,77,0,3000,0 TO ,,,no%
  520WHILE count%<no%
  530temp2$=FNbum(addr%)
  540CASE use% OF
  550WHEN 0
  560day%=VAL(RIGHT$(temp2$,2))
  570month%=(VAL(MID$(temp2$,6,2)))-1
  580year%=VAL(LEFT$(temp2$,4))
  590IF month%>11 OR month%<0 month%=0:day%=0:year%=0
  600poo%=day(month%)+day%+365*year%
  610IF today%-poo%>=autodays% OSCLI("Wipe "+bin$+"."+temp2$+" ~C~VFR")
  620WHEN 1
  630IF FNobjtype(bin$+"."+temp2$)=2 THEN
  640OSCLI("Filer_OpenDir "+bin$+"."+temp2$+" "+STR$x%+" "+STR$y%)
  650x%+=32:y%-=48
  660IF y%<0 y%=0
  670IF x%>scrx% x%=scrx%
  680ENDIF
  690ENDCASE
  700count%+=1
  710ENDWHILE
  720SYS&2001E,7,,mem%
  730PROCibar("")
  740ENDPROC
  750DEFPROCsavopt
  760LOCALs%,a%
  770PROCgetbin(0)
  780IF badbin% ENDPROC
  790y=OPENOUT(home$+".Options")
  800a%=VAL($(FNlust(Pane%,12)))
  810BPUT#y,bin$:BPUT#y,sprites$
  820PRINT#y,wipeopt%,!spinon%,retain%,autowipe%,a%,structure%,!clock%,usefonts%,!cltype%,open%,sconf%,fchange%,clockfont%,shutsquash%
  830CLOSE#y
  840ENDPROC
  850DEFPROCassemble
  860LOCAL temp$,addr%
  870LOCAL pass%
  880FOR pass%=0 TO 2 STEP 2
  890P%=code%
  900[OPT pass%
  910.scrolltext
  920MOV R0,#27
  930LDR R1,textaddr
  940LDR R2,textoffset
  950ADD R1,R1,R2
  960LDR R3,iconaddr
  970.loop
  980LDRB R4,[R1],#1
  990STRB R4,[R3],#1
 1000CMP R4,#0
 1010MOVEQ R0,#1
 1020MOVEQ R2,#0
 1030SUBS R0,R0,#1
 1040BNE loop
 1050ADD R2,R2,#1
 1060STR R2,textoffset
 1070MOV R0,#19
 1080SWI"OS_Byte"
 1090MOV R0,#0
 1100ADR R1,wsiblock
 1110SWI"Wimp_SetIconState"
 1120.spin
 1130LDR R0,spriteno
 1140ADD R0,R0,#1
 1150CMP R0,#57
 1160MOVEQ R0,#48
 1170STR R0,spriteno
 1180LDR R1,ibartext
 1190STRB R0,[R1,#7]
 1200MOV R0,#19
 1210SWI "OS_Byte"
 1220MOV R0,#0
 1230ADR R1,wsiblock1
 1240SWI "Wimp_SetIconState"
 1250B sodit
 1260.ptrcheck
 1270LDR R0,spinon%
 1280TST R0,#%1 << 31
 1290BEQ sodit
 1300LDR R0,bye%
 1310CMP R0,#1
 1320BLE sodit
 1330LDR R1,block
 1340MOV R0,#0
 1350SWI"Wimp_GetPointerInfo"
 1360LDR R5,[R1,#12]
 1370CMN R5,#2
 1380BNE lookatwindow
 1390LDR R2,[R1,#16]
 1400LDR R3,holehandle
 1410CMP R2,R3
 1420BNE sodit
 1430.ok
 1440LDR R0,wsiblock
 1450CMP R0,R5
 1460MOVEQ R1,#8
 1470STREQ R1,bye%
 1480BEQ scrolltext
 1490MOV R1,#11
 1500STR R1,bye%
 1510B spin
 1520.lookatwindow
 1530MOV R2,#0
 1540STR R2,[R1]
 1550STR R2,[R1,#12]
 1560MOV R0,#19
 1570MOV R2,R5
 1580SWI"Wimp_SendMessage"
 1590LDR R3,taskid
 1600CMP R2,R3
 1610BEQ ok
 1620.sodit
 1630LDR R0,exit%
 1640STR R0,timeforbed%
 1650LDR R0,clock%
 1660TST R0,#%1 << 31
 1670BEQ end
 1680SWI "OS_ReadMonotonicTime"
 1690LDR R1,Time%
 1700ADD R1,R1,#2000
 1710ADD R1,R1,#2000
 1720ADD R1,R1,#2000
 1730CMP R0,R1
 1740BLT end
 1750STR R0,Time%
 1760.updateclock
 1770LDR R1,block
 1780MOV R0,#3
 1790STR R0,[R1]
 1800MOV R0,#14
 1810SWI "OS_Word"
 1820LDR R0,block
 1830LDR R1,clocknumber
 1840MOV R2,#10
 1850ADR R4,twelvehour
 1860ADR R5,twentyfourhour
 1870LDR R6,cltype%
 1880TST R6,#%1 << 31
 1890MOVEQ R3,R5
 1900MOVNE R3,R4
 1910SWI "OS_ConvertDateAndTime"
 1920MOV R0,#0
 1930ADR R1,wsiblock2
 1940SWI "Wimp_SetIconState"
 1950.end
 1960SWI "OS_ReadMonotonicTime"
 1970STR R0,newtime%
 1980LDR R1,bye%
 1990ADD R0,R0,R1
 2000STR R0,time%
 2010MOV PC,R14
 2020]
 2030NEXT
 2040addr%=string%
 2050temp$="                           Welcome to BLACK HOLE II - the ultimate RISC OS 3 desktop companion. Black Hole is brought to you courtesy of Fat German Productions, so called because I'm not fat, and neither do I come from Germany.."
 2060$addr%=temp$:addr%+=LENtemp$
 2070temp$="       Hello.          Right, that's that over with. What next, I wonder?  I suppose I should thank Robin Watts for help and allowing me to steal code from !Larger (OK, so I told him afterwards.....), "
 2080$addr%=temp$:addr%+=LENtemp$
 2090temp$="and also Steve Singer for giving me the stupid idea in the first place. Also Jason Williams for the Shredder sprites, Mark Kempster for the Burn sprites, "
 2100$addr%=temp$:addr%+=LENtemp$
 2110temp$="and James Miller, Peter Schroder, and Ciaran's brother for suggestions of the ""It's very nice, but...."" variety."
 2120$addr%=temp$:addr%+=LENtemp$
 2130temp$=" Right, I think that's about it. I should just say that this program is !Help compatible and that if you "
 2140$addr%=temp$:addr%+=LENtemp$
 2150temp$="have any ideas or comments then please write to me. My address is given at the end of the accompanying Help file, which you can load by clicking on the aforementioned logo. Byee for now.....                           "+CHR$0
 2160$addr%=temp$:addr%+=LENtemp$
 2170IF addr%-string%>1100 ERROR0,"Too many words!"
 2180!iconaddr=FNlust(Info%,1)
 2190ENDPROC

��watneys_red_barrel
� l%
)high=&200000:off=&800000:grey=&400000
(;bl2%=bl%+1432:bl3%=bl%+1560:bl4%=bl%+1688:bl5%=bl%+1816
2message%=bl%+1144
<v$="Version 1.16"
F8saving%=0:wip%=0:currpath%=0:fffast%=0:undertaker%=0
P7wipehandle%=0:crnt%=0:clicon%=0:tot%=0:totalsize%=0
Z2delhandle%=0:tdim%=�:wiping%=�:toomanyfiles%=�
d$desconhandle%=0:getem%=�:mode%=�
n0abouttoquit%=0:configopen%=�:resizeneeded%=�
xclicon%=99999999:tmen%=0
�9� �objtype("%.Squash")=1 squashpres%=� �squashpres%=�
�4day()=0,31,59,90,120,151,181,212,242,273,303,334
�<� � squashpres% shutsquash%=�:�selic(Pane%,32,grey,grey)
�Dfile%=0:foundopen%=0:found%=0:zappa%=100:usearcfs%=0:casesens%=�
�"query%=0:ffact%=2:usedtoday%=�
��
�
��penguin
��getbin(0)
�� badbin% �
�$�ps(Pane%,11,home$+".BlackHole")
�#�ps(Query%,0,�msg("bbs","",""))
� �savopt:�getbin(0):badbin%=�
��
,�ps(Auto%,9,"Current : "+�(currpath%+1))
"�ps(Auto%,10,"Total : "+�(p%))
�ps(Pane%,17,sprites$)
"
�edure
,2� l%=0 � 23:men$(l%)=�msg("MEN"+�(l%),"",""):�
6pollmask%=�pollmask
@hmfont%=�findfont(�msg("mf","",""),�(�msg("mfs","","")),�(�msg("mfh","","")),"homerton.medium",13,13)
Jgifont%=�findfont(�msg("if","",""),�(�msg("ifs","","")),�(�msg("ifh","","")),"trinity.medium",14,14)
T�ps(Info%,2,v$)
^A� !spinon%=� �ps(Info%,1,�msg("fwe","","")) ��ps(Info%,1," ")
h�
r��parrot(use%,x%,y%)
|D�n%,addr%,l%,temp$,count%,addr%,wip%,day%,month%,year%,poo%,mem%
�� use%=1 �
�,�("Filer_OpenDir "+bin$+" "+�x%+" "+�y%)
�x%+=32:y%-=48
��
�mem%=�dim(3000):� mem%=0 �
�wip%=0:temp$=bin$
�� use%=0 �
�6ș&C,10,temp$,mem%,77,0,3000,"##_##_####" � ,,,no%
�� no%>0 wip%=�
��
�@� wip% �lamation(�msg("Ooer","",""),-1,8):ș&2001E,7,,mem%:�
�count%=0:addr%=mem%
�*ș&C,9,temp$,mem%,77,0,3000,0 � ,,,no%
ȕ count%<no%
temp2$=�bum(addr%)

Ȏ use% �
&� 0
0day%=�(�temp2$,2))
:month%=(�(�temp2$,6,2)))-1
Dyear%=�(�temp2$,4))
N2� month%>11 � month%<0 month%=0:day%=0:year%=0
X#poo%=day(month%)+day%+365*year%
bA� today%-poo%>=autodays% �("Wipe "+bin$+"."+temp2$+" ~C~VFR")
l� 1
v#� �objtype(bin$+"."+temp2$)=2 �
�7�("Filer_OpenDir "+bin$+"."+temp2$+" "+�x%+" "+�y%)
�x%+=32:y%-=48
�� y%<0 y%=0
�� x%>scrx% x%=scrx%
��
��
�
count%+=1
��
�ș&2001E,7,,mem%
�
�ibar("")
��
���savopt
�
�s%,a%
�getbin(0)
� badbin% �
y=�(home$+".Options")
 a%=�($(�lust(Pane%,12)))
*�#y,bin$:�#y,sprites$
4��#y,wipeopt%,!spinon%,retain%,autowipe%,a%,structure%,!clock%,usefonts%,!cltype%,open%,sconf%,fchange%,clockfont%,shutsquash%
>�#y
H�
R��assemble
\� temp$,addr%
f� pass%
p� pass%=0 � 2 � 2
zP%=code%
�[OPT pass%
�.scrolltext
�MOV R0,#27
�LDR R1,textaddr
�LDR R2,textoffset
�ADD R1,R1,R2
�LDR R3,iconaddr
�	.loop
�LDRB R4,[R1],#1
�STRB R4,[R3],#1
�
CMP R4,#0
��Q R0,#1
��Q R2,#0
SUBS R0,R0,#1
BNE loop
ADD R2,R2,#1
$STR R2,textoffset
.MOV R0,#19
8SWI"OS_Byte"
B
MOV R0,#0
LADR R1,wsiblock
VSWI"Wimp_SetIconState"
`	.spin
jLDR R0,spriteno
tADD R0,R0,#1
~CMP R0,#57
�
�Q R0,#48
�STR R0,spriteno
�LDR R1,ibartext
�STRB R0,[R1,#7]
�MOV R0,#19
�SWI "OS_Byte"
�
MOV R0,#0
�ADR R1,wsiblock1
�SWI "Wimp_SetIconState"
�B sodit
�
.ptrcheck
�LDR R0,spinon%
TST R0,#%1 << 31


BEQ sodit
LDR R0,bye%

CMP R0,#1
(
BLE sodit
2LDR R1,block
<
MOV R0,#0
FSWI"Wimp_GetPointerInfo"
PLDR R5,[R1,#12]
Z
CMN R5,#2
dBNE lookatwindow
nLDR R2,[R1,#16]
xLDR R3,holehandle
�
CMP R2,R3
�
BNE sodit
�.ok
�LDR R0,wsiblock
�
CMP R0,R5
��Q R1,#8
�STREQ R1,bye%
�BEQ scrolltext
�MOV R1,#11
�STR R1,bye%
�
B spin
�.lookatwindow
�
MOV R2,#0
STR R2,[R1]
STR R2,[R1,#12]
MOV R0,#19
"
MOV R2,R5
,SWI"Wimp_SendMessage"
6LDR R3,taskid
@
CMP R2,R3
J
BEQ ok
T
.sodit
^LDR R0,exit%
hSTR R0,timeforbed%
rLDR R0,clock%
|TST R0,#%1 << 31
�BEQ end
�SWI "OS_ReadMonotonicTime"
�LDR R1,Time%
�ADD R1,R1,#2000
�ADD R1,R1,#2000
�ADD R1,R1,#2000
�
CMP R0,R1
�BLT end
�STR R0,Time%
�.updateclock
�LDR R1,block
�
MOV R0,#3
�STR R0,[R1]
MOV R0,#14
SWI "OS_Word"
LDR R0,block
&LDR R1,clocknumber
0MOV R2,#10
:ADR R4,twelvehour
DADR R5,twentyfourhour
NLDR R6,cltype%
XTST R6,#%1 << 31
b�Q R3,R5
lMOVNE R3,R4
vSWI "OS_ConvertDateAndTime"
�
MOV R0,#0
�ADR R1,wsiblock2
�SWI "Wimp_SetIconState"
�.end
�SWI "OS_ReadMonotonicTime"
�STR R0,newtime%
�LDR R1,bye%
�ADD R0,R0,R1
�STR R0,time%
�MOV PC,R14
�]
��
�addr%=string%
�temp$="                           Welcome to BLACK HOLE II - the ultimate RISC OS 3 desktop companion. Black Hole is brought to you courtesy of Fat German Productions, so called because I'm not fat, and neither do I come from Germany.."
$addr%=temp$:addr%+=�temp$
�temp$="       Hello.          Right, that's that over with. What next, I wonder?  I suppose I should thank Robin Watts for help and allowing me to steal code from !Larger (OK, so I told him afterwards.....), "
 $addr%=temp$:addr%+=�temp$
*�temp$="and also Steve Singer for giving me the stupid idea in the first place. Also Jason Williams for the Shredder sprites, Mark Kempster for the Burn sprites, "
4$addr%=temp$:addr%+=�temp$
>~temp$="and James Miller, Peter Schroder, and Ciaran's brother for suggestions of the ""It's very nice, but...."" variety."
H$addr%=temp$:addr%+=�temp$
Rutemp$=" Right, I think that's about it. I should just say that this program is !Help compatible and that if you "
\$addr%=temp$:addr%+=�temp$
f�temp$="have any ideas or comments then please write to me. My address is given at the end of the accompanying Help file, which you can load by clicking on the aforementioned logo. Byee for now.....                           "+�0
p$addr%=temp$:addr%+=�temp$
z-� addr%-string%>1100 �0,"Too many words!"
�!iconaddr=�lust(Info%,1)
��
�
00000000  0d 00 0a 18 dd f2 77 61  74 6e 65 79 73 5f 72 65  |......watneys_re|
00000010  64 5f 62 61 72 72 65 6c  0d 00 14 08 ea 20 6c 25  |d_barrel..... l%|
00000020  0d 00 1e 29 68 69 67 68  3d 26 32 30 30 30 30 30  |...)high=&200000|
00000030  3a 6f 66 66 3d 26 38 30  30 30 30 30 3a 67 72 65  |:off=&800000:gre|
00000040  79 3d 26 34 30 30 30 30  30 0d 00 28 3b 62 6c 32  |y=&400000..(;bl2|
00000050  25 3d 62 6c 25 2b 31 34  33 32 3a 62 6c 33 25 3d  |%=bl%+1432:bl3%=|
00000060  62 6c 25 2b 31 35 36 30  3a 62 6c 34 25 3d 62 6c  |bl%+1560:bl4%=bl|
00000070  25 2b 31 36 38 38 3a 62  6c 35 25 3d 62 6c 25 2b  |%+1688:bl5%=bl%+|
00000080  31 38 31 36 0d 00 32 15  6d 65 73 73 61 67 65 25  |1816..2.message%|
00000090  3d 62 6c 25 2b 31 31 34  34 0d 00 3c 15 76 24 3d  |=bl%+1144..<.v$=|
000000a0  22 56 65 72 73 69 6f 6e  20 31 2e 31 36 22 0d 00  |"Version 1.16"..|
000000b0  46 38 73 61 76 69 6e 67  25 3d 30 3a 77 69 70 25  |F8saving%=0:wip%|
000000c0  3d 30 3a 63 75 72 72 70  61 74 68 25 3d 30 3a 66  |=0:currpath%=0:f|
000000d0  66 66 61 73 74 25 3d 30  3a 75 6e 64 65 72 74 61  |ffast%=0:underta|
000000e0  6b 65 72 25 3d 30 0d 00  50 37 77 69 70 65 68 61  |ker%=0..P7wipeha|
000000f0  6e 64 6c 65 25 3d 30 3a  63 72 6e 74 25 3d 30 3a  |ndle%=0:crnt%=0:|
00000100  63 6c 69 63 6f 6e 25 3d  30 3a 74 6f 74 25 3d 30  |clicon%=0:tot%=0|
00000110  3a 74 6f 74 61 6c 73 69  7a 65 25 3d 30 0d 00 5a  |:totalsize%=0..Z|
00000120  32 64 65 6c 68 61 6e 64  6c 65 25 3d 30 3a 74 64  |2delhandle%=0:td|
00000130  69 6d 25 3d a3 3a 77 69  70 69 6e 67 25 3d a3 3a  |im%=.:wiping%=.:|
00000140  74 6f 6f 6d 61 6e 79 66  69 6c 65 73 25 3d a3 0d  |toomanyfiles%=..|
00000150  00 64 24 64 65 73 63 6f  6e 68 61 6e 64 6c 65 25  |.d$desconhandle%|
00000160  3d 30 3a 67 65 74 65 6d  25 3d a3 3a 6d 6f 64 65  |=0:getem%=.:mode|
00000170  25 3d eb 0d 00 6e 30 61  62 6f 75 74 74 6f 71 75  |%=...n0abouttoqu|
00000180  69 74 25 3d 30 3a 63 6f  6e 66 69 67 6f 70 65 6e  |it%=0:configopen|
00000190  25 3d a3 3a 72 65 73 69  7a 65 6e 65 65 64 65 64  |%=.:resizeneeded|
000001a0  25 3d a3 0d 00 78 1c 63  6c 69 63 6f 6e 25 3d 39  |%=...x.clicon%=9|
000001b0  39 39 39 39 39 39 39 3a  74 6d 65 6e 25 3d 30 0d  |9999999:tmen%=0.|
000001c0  00 82 39 e7 20 a4 6f 62  6a 74 79 70 65 28 22 25  |..9. .objtype("%|
000001d0  2e 53 71 75 61 73 68 22  29 3d 31 20 73 71 75 61  |.Squash")=1 squa|
000001e0  73 68 70 72 65 73 25 3d  b9 20 8b 73 71 75 61 73  |shpres%=. .squas|
000001f0  68 70 72 65 73 25 3d a3  0d 00 8c 34 64 61 79 28  |hpres%=....4day(|
00000200  29 3d 30 2c 33 31 2c 35  39 2c 39 30 2c 31 32 30  |)=0,31,59,90,120|
00000210  2c 31 35 31 2c 31 38 31  2c 32 31 32 2c 32 34 32  |,151,181,212,242|
00000220  2c 32 37 33 2c 33 30 33  2c 33 33 34 0d 00 96 3c  |,273,303,334...<|
00000230  e7 20 ac 20 73 71 75 61  73 68 70 72 65 73 25 20  |. . squashpres% |
00000240  73 68 75 74 73 71 75 61  73 68 25 3d a3 3a f2 73  |shutsquash%=.:.s|
00000250  65 6c 69 63 28 50 61 6e  65 25 2c 33 32 2c 67 72  |elic(Pane%,32,gr|
00000260  65 79 2c 67 72 65 79 29  0d 00 a0 44 66 69 6c 65  |ey,grey)...Dfile|
00000270  25 3d 30 3a 66 6f 75 6e  64 6f 70 65 6e 25 3d 30  |%=0:foundopen%=0|
00000280  3a 66 6f 75 6e 64 25 3d  30 3a 7a 61 70 70 61 25  |:found%=0:zappa%|
00000290  3d 31 30 30 3a 75 73 65  61 72 63 66 73 25 3d 30  |=100:usearcfs%=0|
000002a0  3a 63 61 73 65 73 65 6e  73 25 3d a3 0d 00 aa 22  |:casesens%=...."|
000002b0  71 75 65 72 79 25 3d 30  3a 66 66 61 63 74 25 3d  |query%=0:ffact%=|
000002c0  32 3a 75 73 65 64 74 6f  64 61 79 25 3d a3 0d 00  |2:usedtoday%=...|
000002d0  b4 05 e1 0d 00 be 0d dd  f2 70 65 6e 67 75 69 6e  |.........penguin|
000002e0  0d 00 c8 0e f2 67 65 74  62 69 6e 28 30 29 0d 00  |.....getbin(0)..|
000002f0  d2 0f e7 20 62 61 64 62  69 6e 25 20 8c 0d 00 dc  |... badbin% ....|
00000300  24 f2 70 73 28 50 61 6e  65 25 2c 31 31 2c 68 6f  |$.ps(Pane%,11,ho|
00000310  6d 65 24 2b 22 2e 42 6c  61 63 6b 48 6f 6c 65 22  |me$+".BlackHole"|
00000320  29 0d 00 e6 23 f2 70 73  28 51 75 65 72 79 25 2c  |)...#.ps(Query%,|
00000330  30 2c a4 6d 73 67 28 22  62 62 73 22 2c 22 22 2c  |0,.msg("bbs","",|
00000340  22 22 29 29 0d 00 f0 20  f2 73 61 76 6f 70 74 3a  |""))... .savopt:|
00000350  f2 67 65 74 62 69 6e 28  30 29 3a 62 61 64 62 69  |.getbin(0):badbi|
00000360  6e 25 3d b9 0d 00 fa 05  cd 0d 01 04 2c f2 70 73  |n%=.........,.ps|
00000370  28 41 75 74 6f 25 2c 39  2c 22 43 75 72 72 65 6e  |(Auto%,9,"Curren|
00000380  74 20 3a 20 22 2b c3 28  63 75 72 72 70 61 74 68  |t : "+.(currpath|
00000390  25 2b 31 29 29 0d 01 0e  22 f2 70 73 28 41 75 74  |%+1))...".ps(Aut|
000003a0  6f 25 2c 31 30 2c 22 54  6f 74 61 6c 20 3a 20 22  |o%,10,"Total : "|
000003b0  2b c3 28 70 25 29 29 0d  01 18 1a f2 70 73 28 50  |+.(p%)).....ps(P|
000003c0  61 6e 65 25 2c 31 37 2c  73 70 72 69 74 65 73 24  |ane%,17,sprites$|
000003d0  29 0d 01 22 0a f2 65 64  75 72 65 0d 01 2c 32 e3  |).."..edure..,2.|
000003e0  20 6c 25 3d 30 20 b8 20  32 33 3a 6d 65 6e 24 28  | l%=0 . 23:men$(|
000003f0  6c 25 29 3d a4 6d 73 67  28 22 4d 45 4e 22 2b c3  |l%)=.msg("MEN"+.|
00000400  28 6c 25 29 2c 22 22 2c  22 22 29 3a ed 0d 01 36  |(l%),"",""):...6|
00000410  17 70 6f 6c 6c 6d 61 73  6b 25 3d a4 70 6f 6c 6c  |.pollmask%=.poll|
00000420  6d 61 73 6b 0d 01 40 68  6d 66 6f 6e 74 25 3d a4  |mask..@hmfont%=.|
00000430  66 69 6e 64 66 6f 6e 74  28 a4 6d 73 67 28 22 6d  |findfont(.msg("m|
00000440  66 22 2c 22 22 2c 22 22  29 2c bb 28 a4 6d 73 67  |f","",""),.(.msg|
00000450  28 22 6d 66 73 22 2c 22  22 2c 22 22 29 29 2c bb  |("mfs","","")),.|
00000460  28 a4 6d 73 67 28 22 6d  66 68 22 2c 22 22 2c 22  |(.msg("mfh","","|
00000470  22 29 29 2c 22 68 6f 6d  65 72 74 6f 6e 2e 6d 65  |")),"homerton.me|
00000480  64 69 75 6d 22 2c 31 33  2c 31 33 29 0d 01 4a 67  |dium",13,13)..Jg|
00000490  69 66 6f 6e 74 25 3d a4  66 69 6e 64 66 6f 6e 74  |ifont%=.findfont|
000004a0  28 a4 6d 73 67 28 22 69  66 22 2c 22 22 2c 22 22  |(.msg("if","",""|
000004b0  29 2c bb 28 a4 6d 73 67  28 22 69 66 73 22 2c 22  |),.(.msg("ifs","|
000004c0  22 2c 22 22 29 29 2c bb  28 a4 6d 73 67 28 22 69  |","")),.(.msg("i|
000004d0  66 68 22 2c 22 22 2c 22  22 29 29 2c 22 74 72 69  |fh","","")),"tri|
000004e0  6e 69 74 79 2e 6d 65 64  69 75 6d 22 2c 31 34 2c  |nity.medium",14,|
000004f0  31 34 29 0d 01 54 13 f2  70 73 28 49 6e 66 6f 25  |14)..T..ps(Info%|
00000500  2c 32 2c 76 24 29 0d 01  5e 41 e7 20 21 73 70 69  |,2,v$)..^A. !spi|
00000510  6e 6f 6e 25 3d a3 20 f2  70 73 28 49 6e 66 6f 25  |non%=. .ps(Info%|
00000520  2c 31 2c a4 6d 73 67 28  22 66 77 65 22 2c 22 22  |,1,.msg("fwe",""|
00000530  2c 22 22 29 29 20 8b f2  70 73 28 49 6e 66 6f 25  |,"")) ..ps(Info%|
00000540  2c 31 2c 22 20 22 29 0d  01 68 05 e1 0d 01 72 18  |,1," ")..h....r.|
00000550  dd f2 70 61 72 72 6f 74  28 75 73 65 25 2c 78 25  |..parrot(use%,x%|
00000560  2c 79 25 29 0d 01 7c 44  ea 6e 25 2c 61 64 64 72  |,y%)..|D.n%,addr|
00000570  25 2c 6c 25 2c 74 65 6d  70 24 2c 63 6f 75 6e 74  |%,l%,temp$,count|
00000580  25 2c 61 64 64 72 25 2c  77 69 70 25 2c 64 61 79  |%,addr%,wip%,day|
00000590  25 2c 6d 6f 6e 74 68 25  2c 79 65 61 72 25 2c 70  |%,month%,year%,p|
000005a0  6f 6f 25 2c 6d 65 6d 25  0d 01 86 0e e7 20 75 73  |oo%,mem%..... us|
000005b0  65 25 3d 31 20 8c 0d 01  90 2c ff 28 22 46 69 6c  |e%=1 ....,.("Fil|
000005c0  65 72 5f 4f 70 65 6e 44  69 72 20 22 2b 62 69 6e  |er_OpenDir "+bin|
000005d0  24 2b 22 20 22 2b c3 78  25 2b 22 20 22 2b c3 79  |$+" "+.x%+" "+.y|
000005e0  25 29 0d 01 9a 11 78 25  2b 3d 33 32 3a 79 25 2d  |%)....x%+=32:y%-|
000005f0  3d 34 38 0d 01 a4 05 cd  0d 01 ae 1e 6d 65 6d 25  |=48.........mem%|
00000600  3d a4 64 69 6d 28 33 30  30 30 29 3a e7 20 6d 65  |=.dim(3000):. me|
00000610  6d 25 3d 30 20 e1 0d 01  b8 15 77 69 70 25 3d 30  |m%=0 .....wip%=0|
00000620  3a 74 65 6d 70 24 3d 62  69 6e 24 0d 01 c2 0e e7  |:temp$=bin$.....|
00000630  20 75 73 65 25 3d 30 20  8c 0d 01 cc 36 c8 99 26  | use%=0 ....6..&|
00000640  43 2c 31 30 2c 74 65 6d  70 24 2c 6d 65 6d 25 2c  |C,10,temp$,mem%,|
00000650  37 37 2c 30 2c 33 30 30  30 2c 22 23 23 5f 23 23  |77,0,3000,"##_##|
00000660  5f 23 23 23 23 22 20 b8  20 2c 2c 2c 6e 6f 25 0d  |_####" . ,,,no%.|
00000670  01 d6 12 e7 20 6e 6f 25  3e 30 20 77 69 70 25 3d  |.... no%>0 wip%=|
00000680  b9 0d 01 e0 05 cd 0d 01  ea 40 e7 20 77 69 70 25  |.........@. wip%|
00000690  20 f2 6c 61 6d 61 74 69  6f 6e 28 a4 6d 73 67 28  | .lamation(.msg(|
000006a0  22 4f 6f 65 72 22 2c 22  22 2c 22 22 29 2c 2d 31  |"Ooer","",""),-1|
000006b0  2c 38 29 3a c8 99 26 32  30 30 31 45 2c 37 2c 2c  |,8):..&2001E,7,,|
000006c0  6d 65 6d 25 3a e1 0d 01  f4 17 63 6f 75 6e 74 25  |mem%:.....count%|
000006d0  3d 30 3a 61 64 64 72 25  3d 6d 65 6d 25 0d 01 fe  |=0:addr%=mem%...|
000006e0  2a c8 99 26 43 2c 39 2c  74 65 6d 70 24 2c 6d 65  |*..&C,9,temp$,me|
000006f0  6d 25 2c 37 37 2c 30 2c  33 30 30 30 2c 30 20 b8  |m%,77,0,3000,0 .|
00000700  20 2c 2c 2c 6e 6f 25 0d  02 08 11 c8 95 20 63 6f  | ,,,no%...... co|
00000710  75 6e 74 25 3c 6e 6f 25  0d 02 12 16 74 65 6d 70  |unt%<no%....temp|
00000720  32 24 3d a4 62 75 6d 28  61 64 64 72 25 29 0d 02  |2$=.bum(addr%)..|
00000730  1c 0d c8 8e 20 75 73 65  25 20 ca 0d 02 26 07 c9  |.... use% ...&..|
00000740  20 30 0d 02 30 16 64 61  79 25 3d bb 28 c2 74 65  | 0..0.day%=.(.te|
00000750  6d 70 32 24 2c 32 29 29  0d 02 3a 1e 6d 6f 6e 74  |mp2$,2))..:.mont|
00000760  68 25 3d 28 bb 28 c1 74  65 6d 70 32 24 2c 36 2c  |h%=(.(.temp2$,6,|
00000770  32 29 29 29 2d 31 0d 02  44 17 79 65 61 72 25 3d  |2)))-1..D.year%=|
00000780  bb 28 c0 74 65 6d 70 32  24 2c 34 29 29 0d 02 4e  |.(.temp2$,4))..N|
00000790  32 e7 20 6d 6f 6e 74 68  25 3e 31 31 20 84 20 6d  |2. month%>11 . m|
000007a0  6f 6e 74 68 25 3c 30 20  6d 6f 6e 74 68 25 3d 30  |onth%<0 month%=0|
000007b0  3a 64 61 79 25 3d 30 3a  79 65 61 72 25 3d 30 0d  |:day%=0:year%=0.|
000007c0  02 58 23 70 6f 6f 25 3d  64 61 79 28 6d 6f 6e 74  |.X#poo%=day(mont|
000007d0  68 25 29 2b 64 61 79 25  2b 33 36 35 2a 79 65 61  |h%)+day%+365*yea|
000007e0  72 25 0d 02 62 41 e7 20  74 6f 64 61 79 25 2d 70  |r%..bA. today%-p|
000007f0  6f 6f 25 3e 3d 61 75 74  6f 64 61 79 73 25 20 ff  |oo%>=autodays% .|
00000800  28 22 57 69 70 65 20 22  2b 62 69 6e 24 2b 22 2e  |("Wipe "+bin$+".|
00000810  22 2b 74 65 6d 70 32 24  2b 22 20 7e 43 7e 56 46  |"+temp2$+" ~C~VF|
00000820  52 22 29 0d 02 6c 07 c9  20 31 0d 02 76 23 e7 20  |R")..l.. 1..v#. |
00000830  a4 6f 62 6a 74 79 70 65  28 62 69 6e 24 2b 22 2e  |.objtype(bin$+".|
00000840  22 2b 74 65 6d 70 32 24  29 3d 32 20 8c 0d 02 80  |"+temp2$)=2 ....|
00000850  37 ff 28 22 46 69 6c 65  72 5f 4f 70 65 6e 44 69  |7.("Filer_OpenDi|
00000860  72 20 22 2b 62 69 6e 24  2b 22 2e 22 2b 74 65 6d  |r "+bin$+"."+tem|
00000870  70 32 24 2b 22 20 22 2b  c3 78 25 2b 22 20 22 2b  |p2$+" "+.x%+" "+|
00000880  c3 79 25 29 0d 02 8a 11  78 25 2b 3d 33 32 3a 79  |.y%)....x%+=32:y|
00000890  25 2d 3d 34 38 0d 02 94  0f e7 20 79 25 3c 30 20  |%-=48..... y%<0 |
000008a0  79 25 3d 30 0d 02 9e 17  e7 20 78 25 3e 73 63 72  |y%=0..... x%>scr|
000008b0  78 25 20 78 25 3d 73 63  72 78 25 0d 02 a8 05 cd  |x% x%=scrx%.....|
000008c0  0d 02 b2 05 cb 0d 02 bc  0d 63 6f 75 6e 74 25 2b  |.........count%+|
000008d0  3d 31 0d 02 c6 05 ce 0d  02 d0 14 c8 99 26 32 30  |=1...........&20|
000008e0  30 31 45 2c 37 2c 2c 6d  65 6d 25 0d 02 da 0d f2  |01E,7,,mem%.....|
000008f0  69 62 61 72 28 22 22 29  0d 02 e4 05 e1 0d 02 ee  |ibar("")........|
00000900  0c dd f2 73 61 76 6f 70  74 0d 02 f8 0a ea 73 25  |...savopt.....s%|
00000910  2c 61 25 0d 03 02 0e f2  67 65 74 62 69 6e 28 30  |,a%.....getbin(0|
00000920  29 0d 03 0c 0f e7 20 62  61 64 62 69 6e 25 20 e1  |)..... badbin% .|
00000930  0d 03 16 19 79 3d ae 28  68 6f 6d 65 24 2b 22 2e  |....y=.(home$+".|
00000940  4f 70 74 69 6f 6e 73 22  29 0d 03 20 1c 61 25 3d  |Options").. .a%=|
00000950  bb 28 24 28 a4 6c 75 73  74 28 50 61 6e 65 25 2c  |.($(.lust(Pane%,|
00000960  31 32 29 29 29 0d 03 2a  19 d5 23 79 2c 62 69 6e  |12)))..*..#y,bin|
00000970  24 3a d5 23 79 2c 73 70  72 69 74 65 73 24 0d 03  |$:.#y,sprites$..|
00000980  34 81 f1 23 79 2c 77 69  70 65 6f 70 74 25 2c 21  |4..#y,wipeopt%,!|
00000990  73 70 69 6e 6f 6e 25 2c  72 65 74 61 69 6e 25 2c  |spinon%,retain%,|
000009a0  61 75 74 6f 77 69 70 65  25 2c 61 25 2c 73 74 72  |autowipe%,a%,str|
000009b0  75 63 74 75 72 65 25 2c  21 63 6c 6f 63 6b 25 2c  |ucture%,!clock%,|
000009c0  75 73 65 66 6f 6e 74 73  25 2c 21 63 6c 74 79 70  |usefonts%,!cltyp|
000009d0  65 25 2c 6f 70 65 6e 25  2c 73 63 6f 6e 66 25 2c  |e%,open%,sconf%,|
000009e0  66 63 68 61 6e 67 65 25  2c 63 6c 6f 63 6b 66 6f  |fchange%,clockfo|
000009f0  6e 74 25 2c 73 68 75 74  73 71 75 61 73 68 25 0d  |nt%,shutsquash%.|
00000a00  03 3e 07 d9 23 79 0d 03  48 05 e1 0d 03 52 0e dd  |.>..#y..H....R..|
00000a10  f2 61 73 73 65 6d 62 6c  65 0d 03 5c 11 ea 20 74  |.assemble..\.. t|
00000a20  65 6d 70 24 2c 61 64 64  72 25 0d 03 66 0b ea 20  |emp$,addr%..f.. |
00000a30  70 61 73 73 25 0d 03 70  15 e3 20 70 61 73 73 25  |pass%..p.. pass%|
00000a40  3d 30 20 b8 20 32 20 88  20 32 0d 03 7a 0c 50 25  |=0 . 2 . 2..z.P%|
00000a50  3d 63 6f 64 65 25 0d 03  84 0e 5b 4f 50 54 20 70  |=code%....[OPT p|
00000a60  61 73 73 25 0d 03 8e 0f  2e 73 63 72 6f 6c 6c 74  |ass%.....scrollt|
00000a70  65 78 74 0d 03 98 0e 4d  4f 56 20 52 30 2c 23 32  |ext....MOV R0,#2|
00000a80  37 0d 03 a2 13 4c 44 52  20 52 31 2c 74 65 78 74  |7....LDR R1,text|
00000a90  61 64 64 72 0d 03 ac 15  4c 44 52 20 52 32 2c 74  |addr....LDR R2,t|
00000aa0  65 78 74 6f 66 66 73 65  74 0d 03 b6 10 41 44 44  |extoffset....ADD|
00000ab0  20 52 31 2c 52 31 2c 52  32 0d 03 c0 13 4c 44 52  | R1,R1,R2....LDR|
00000ac0  20 52 33 2c 69 63 6f 6e  61 64 64 72 0d 03 ca 09  | R3,iconaddr....|
00000ad0  2e 6c 6f 6f 70 0d 03 d4  13 4c 44 52 42 20 52 34  |.loop....LDRB R4|
00000ae0  2c 5b 52 31 5d 2c 23 31  0d 03 de 13 53 54 52 42  |,[R1],#1....STRB|
00000af0  20 52 34 2c 5b 52 33 5d  2c 23 31 0d 03 e8 0d 43  | R4,[R3],#1....C|
00000b00  4d 50 20 52 34 2c 23 30  0d 03 f2 0c ec 51 20 52  |MP R4,#0.....Q R|
00000b10  30 2c 23 31 0d 03 fc 0c  ec 51 20 52 32 2c 23 30  |0,#1.....Q R2,#0|
00000b20  0d 04 06 11 53 55 42 53  20 52 30 2c 52 30 2c 23  |....SUBS R0,R0,#|
00000b30  31 0d 04 10 0c 42 4e 45  20 6c 6f 6f 70 0d 04 1a  |1....BNE loop...|
00000b40  10 41 44 44 20 52 32 2c  52 32 2c 23 31 0d 04 24  |.ADD R2,R2,#1..$|
00000b50  15 53 54 52 20 52 32 2c  74 65 78 74 6f 66 66 73  |.STR R2,textoffs|
00000b60  65 74 0d 04 2e 0e 4d 4f  56 20 52 30 2c 23 31 39  |et....MOV R0,#19|
00000b70  0d 04 38 10 53 57 49 22  4f 53 5f 42 79 74 65 22  |..8.SWI"OS_Byte"|
00000b80  0d 04 42 0d 4d 4f 56 20  52 30 2c 23 30 0d 04 4c  |..B.MOV R0,#0..L|
00000b90  13 41 44 52 20 52 31 2c  77 73 69 62 6c 6f 63 6b  |.ADR R1,wsiblock|
00000ba0  0d 04 56 1a 53 57 49 22  57 69 6d 70 5f 53 65 74  |..V.SWI"Wimp_Set|
00000bb0  49 63 6f 6e 53 74 61 74  65 22 0d 04 60 09 2e 73  |IconState"..`..s|
00000bc0  70 69 6e 0d 04 6a 13 4c  44 52 20 52 30 2c 73 70  |pin..j.LDR R0,sp|
00000bd0  72 69 74 65 6e 6f 0d 04  74 10 41 44 44 20 52 30  |riteno..t.ADD R0|
00000be0  2c 52 30 2c 23 31 0d 04  7e 0e 43 4d 50 20 52 30  |,R0,#1..~.CMP R0|
00000bf0  2c 23 35 37 0d 04 88 0d  ec 51 20 52 30 2c 23 34  |,#57.....Q R0,#4|
00000c00  38 0d 04 92 13 53 54 52  20 52 30 2c 73 70 72 69  |8....STR R0,spri|
00000c10  74 65 6e 6f 0d 04 9c 13  4c 44 52 20 52 31 2c 69  |teno....LDR R1,i|
00000c20  62 61 72 74 65 78 74 0d  04 a6 13 53 54 52 42 20  |bartext....STRB |
00000c30  52 30 2c 5b 52 31 2c 23  37 5d 0d 04 b0 0e 4d 4f  |R0,[R1,#7]....MO|
00000c40  56 20 52 30 2c 23 31 39  0d 04 ba 11 53 57 49 20  |V R0,#19....SWI |
00000c50  22 4f 53 5f 42 79 74 65  22 0d 04 c4 0d 4d 4f 56  |"OS_Byte"....MOV|
00000c60  20 52 30 2c 23 30 0d 04  ce 14 41 44 52 20 52 31  | R0,#0....ADR R1|
00000c70  2c 77 73 69 62 6c 6f 63  6b 31 0d 04 d8 1b 53 57  |,wsiblock1....SW|
00000c80  49 20 22 57 69 6d 70 5f  53 65 74 49 63 6f 6e 53  |I "Wimp_SetIconS|
00000c90  74 61 74 65 22 0d 04 e2  0b 42 20 73 6f 64 69 74  |tate"....B sodit|
00000ca0  0d 04 ec 0d 2e 70 74 72  63 68 65 63 6b 0d 04 f6  |.....ptrcheck...|
00000cb0  12 4c 44 52 20 52 30 2c  73 70 69 6e 6f 6e 25 0d  |.LDR R0,spinon%.|
00000cc0  05 00 14 54 53 54 20 52  30 2c 23 25 31 20 3c 3c  |...TST R0,#%1 <<|
00000cd0  20 33 31 0d 05 0a 0d 42  45 51 20 73 6f 64 69 74  | 31....BEQ sodit|
00000ce0  0d 05 14 0f 4c 44 52 20  52 30 2c 62 79 65 25 0d  |....LDR R0,bye%.|
00000cf0  05 1e 0d 43 4d 50 20 52  30 2c 23 31 0d 05 28 0d  |...CMP R0,#1..(.|
00000d00  42 4c 45 20 73 6f 64 69  74 0d 05 32 10 4c 44 52  |BLE sodit..2.LDR|
00000d10  20 52 31 2c 62 6c 6f 63  6b 0d 05 3c 0d 4d 4f 56  | R1,block..<.MOV|
00000d20  20 52 30 2c 23 30 0d 05  46 1c 53 57 49 22 57 69  | R0,#0..F.SWI"Wi|
00000d30  6d 70 5f 47 65 74 50 6f  69 6e 74 65 72 49 6e 66  |mp_GetPointerInf|
00000d40  6f 22 0d 05 50 13 4c 44  52 20 52 35 2c 5b 52 31  |o"..P.LDR R5,[R1|
00000d50  2c 23 31 32 5d 0d 05 5a  0d 43 4d 4e 20 52 35 2c  |,#12]..Z.CMN R5,|
00000d60  23 32 0d 05 64 14 42 4e  45 20 6c 6f 6f 6b 61 74  |#2..d.BNE lookat|
00000d70  77 69 6e 64 6f 77 0d 05  6e 13 4c 44 52 20 52 32  |window..n.LDR R2|
00000d80  2c 5b 52 31 2c 23 31 36  5d 0d 05 78 15 4c 44 52  |,[R1,#16]..x.LDR|
00000d90  20 52 33 2c 68 6f 6c 65  68 61 6e 64 6c 65 0d 05  | R3,holehandle..|
00000da0  82 0d 43 4d 50 20 52 32  2c 52 33 0d 05 8c 0d 42  |..CMP R2,R3....B|
00000db0  4e 45 20 73 6f 64 69 74  0d 05 96 07 2e 6f 6b 0d  |NE sodit.....ok.|
00000dc0  05 a0 13 4c 44 52 20 52  30 2c 77 73 69 62 6c 6f  |...LDR R0,wsiblo|
00000dd0  63 6b 0d 05 aa 0d 43 4d  50 20 52 30 2c 52 35 0d  |ck....CMP R0,R5.|
00000de0  05 b4 0c ec 51 20 52 31  2c 23 38 0d 05 be 11 53  |....Q R1,#8....S|
00000df0  54 52 45 51 20 52 31 2c  62 79 65 25 0d 05 c8 12  |TREQ R1,bye%....|
00000e00  42 45 51 20 73 63 72 6f  6c 6c 74 65 78 74 0d 05  |BEQ scrolltext..|
00000e10  d2 0e 4d 4f 56 20 52 31  2c 23 31 31 0d 05 dc 0f  |..MOV R1,#11....|
00000e20  53 54 52 20 52 31 2c 62  79 65 25 0d 05 e6 0a 42  |STR R1,bye%....B|
00000e30  20 73 70 69 6e 0d 05 f0  11 2e 6c 6f 6f 6b 61 74  | spin.....lookat|
00000e40  77 69 6e 64 6f 77 0d 05  fa 0d 4d 4f 56 20 52 32  |window....MOV R2|
00000e50  2c 23 30 0d 06 04 0f 53  54 52 20 52 32 2c 5b 52  |,#0....STR R2,[R|
00000e60  31 5d 0d 06 0e 13 53 54  52 20 52 32 2c 5b 52 31  |1]....STR R2,[R1|
00000e70  2c 23 31 32 5d 0d 06 18  0e 4d 4f 56 20 52 30 2c  |,#12]....MOV R0,|
00000e80  23 31 39 0d 06 22 0d 4d  4f 56 20 52 32 2c 52 35  |#19..".MOV R2,R5|
00000e90  0d 06 2c 19 53 57 49 22  57 69 6d 70 5f 53 65 6e  |..,.SWI"Wimp_Sen|
00000ea0  64 4d 65 73 73 61 67 65  22 0d 06 36 11 4c 44 52  |dMessage"..6.LDR|
00000eb0  20 52 33 2c 74 61 73 6b  69 64 0d 06 40 0d 43 4d  | R3,taskid..@.CM|
00000ec0  50 20 52 32 2c 52 33 0d  06 4a 0a 42 45 51 20 6f  |P R2,R3..J.BEQ o|
00000ed0  6b 0d 06 54 0a 2e 73 6f  64 69 74 0d 06 5e 10 4c  |k..T..sodit..^.L|
00000ee0  44 52 20 52 30 2c 65 78  69 74 25 0d 06 68 16 53  |DR R0,exit%..h.S|
00000ef0  54 52 20 52 30 2c 74 69  6d 65 66 6f 72 62 65 64  |TR R0,timeforbed|
00000f00  25 0d 06 72 11 4c 44 52  20 52 30 2c 63 6c 6f 63  |%..r.LDR R0,cloc|
00000f10  6b 25 0d 06 7c 14 54 53  54 20 52 30 2c 23 25 31  |k%..|.TST R0,#%1|
00000f20  20 3c 3c 20 33 31 0d 06  86 0b 42 45 51 20 65 6e  | << 31....BEQ en|
00000f30  64 0d 06 90 1e 53 57 49  20 22 4f 53 5f 52 65 61  |d....SWI "OS_Rea|
00000f40  64 4d 6f 6e 6f 74 6f 6e  69 63 54 69 6d 65 22 0d  |dMonotonicTime".|
00000f50  06 9a 10 4c 44 52 20 52  31 2c 54 69 6d 65 25 0d  |...LDR R1,Time%.|
00000f60  06 a4 13 41 44 44 20 52  31 2c 52 31 2c 23 32 30  |...ADD R1,R1,#20|
00000f70  30 30 0d 06 ae 13 41 44  44 20 52 31 2c 52 31 2c  |00....ADD R1,R1,|
00000f80  23 32 30 30 30 0d 06 b8  13 41 44 44 20 52 31 2c  |#2000....ADD R1,|
00000f90  52 31 2c 23 32 30 30 30  0d 06 c2 0d 43 4d 50 20  |R1,#2000....CMP |
00000fa0  52 30 2c 52 31 0d 06 cc  0b 42 4c 54 20 65 6e 64  |R0,R1....BLT end|
00000fb0  0d 06 d6 10 53 54 52 20  52 30 2c 54 69 6d 65 25  |....STR R0,Time%|
00000fc0  0d 06 e0 10 2e 75 70 64  61 74 65 63 6c 6f 63 6b  |.....updateclock|
00000fd0  0d 06 ea 10 4c 44 52 20  52 31 2c 62 6c 6f 63 6b  |....LDR R1,block|
00000fe0  0d 06 f4 0d 4d 4f 56 20  52 30 2c 23 33 0d 06 fe  |....MOV R0,#3...|
00000ff0  0f 53 54 52 20 52 30 2c  5b 52 31 5d 0d 07 08 0e  |.STR R0,[R1]....|
00001000  4d 4f 56 20 52 30 2c 23  31 34 0d 07 12 11 53 57  |MOV R0,#14....SW|
00001010  49 20 22 4f 53 5f 57 6f  72 64 22 0d 07 1c 10 4c  |I "OS_Word"....L|
00001020  44 52 20 52 30 2c 62 6c  6f 63 6b 0d 07 26 16 4c  |DR R0,block..&.L|
00001030  44 52 20 52 31 2c 63 6c  6f 63 6b 6e 75 6d 62 65  |DR R1,clocknumbe|
00001040  72 0d 07 30 0e 4d 4f 56  20 52 32 2c 23 31 30 0d  |r..0.MOV R2,#10.|
00001050  07 3a 15 41 44 52 20 52  34 2c 74 77 65 6c 76 65  |.:.ADR R4,twelve|
00001060  68 6f 75 72 0d 07 44 19  41 44 52 20 52 35 2c 74  |hour..D.ADR R5,t|
00001070  77 65 6e 74 79 66 6f 75  72 68 6f 75 72 0d 07 4e  |wentyfourhour..N|
00001080  12 4c 44 52 20 52 36 2c  63 6c 74 79 70 65 25 0d  |.LDR R6,cltype%.|
00001090  07 58 14 54 53 54 20 52  36 2c 23 25 31 20 3c 3c  |.X.TST R6,#%1 <<|
000010a0  20 33 31 0d 07 62 0c ec  51 20 52 33 2c 52 35 0d  | 31..b..Q R3,R5.|
000010b0  07 6c 0f 4d 4f 56 4e 45  20 52 33 2c 52 34 0d 07  |.l.MOVNE R3,R4..|
000010c0  76 1f 53 57 49 20 22 4f  53 5f 43 6f 6e 76 65 72  |v.SWI "OS_Conver|
000010d0  74 44 61 74 65 41 6e 64  54 69 6d 65 22 0d 07 80  |tDateAndTime"...|
000010e0  0d 4d 4f 56 20 52 30 2c  23 30 0d 07 8a 14 41 44  |.MOV R0,#0....AD|
000010f0  52 20 52 31 2c 77 73 69  62 6c 6f 63 6b 32 0d 07  |R R1,wsiblock2..|
00001100  94 1b 53 57 49 20 22 57  69 6d 70 5f 53 65 74 49  |..SWI "Wimp_SetI|
00001110  63 6f 6e 53 74 61 74 65  22 0d 07 9e 08 2e 65 6e  |conState".....en|
00001120  64 0d 07 a8 1e 53 57 49  20 22 4f 53 5f 52 65 61  |d....SWI "OS_Rea|
00001130  64 4d 6f 6e 6f 74 6f 6e  69 63 54 69 6d 65 22 0d  |dMonotonicTime".|
00001140  07 b2 13 53 54 52 20 52  30 2c 6e 65 77 74 69 6d  |...STR R0,newtim|
00001150  65 25 0d 07 bc 0f 4c 44  52 20 52 31 2c 62 79 65  |e%....LDR R1,bye|
00001160  25 0d 07 c6 10 41 44 44  20 52 30 2c 52 30 2c 52  |%....ADD R0,R0,R|
00001170  31 0d 07 d0 10 53 54 52  20 52 30 2c 74 69 6d 65  |1....STR R0,time|
00001180  25 0d 07 da 0e 4d 4f 56  20 50 43 2c 52 31 34 0d  |%....MOV PC,R14.|
00001190  07 e4 05 5d 0d 07 ee 05  ed 0d 07 f8 11 61 64 64  |...].........add|
000011a0  72 25 3d 73 74 72 69 6e  67 25 0d 08 02 f0 74 65  |r%=string%....te|
000011b0  6d 70 24 3d 22 20 20 20  20 20 20 20 20 20 20 20  |mp$="           |
000011c0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000011d0  57 65 6c 63 6f 6d 65 20  74 6f 20 42 4c 41 43 4b  |Welcome to BLACK|
000011e0  20 48 4f 4c 45 20 49 49  20 2d 20 74 68 65 20 75  | HOLE II - the u|
000011f0  6c 74 69 6d 61 74 65 20  52 49 53 43 20 4f 53 20  |ltimate RISC OS |
00001200  33 20 64 65 73 6b 74 6f  70 20 63 6f 6d 70 61 6e  |3 desktop compan|
00001210  69 6f 6e 2e 20 42 6c 61  63 6b 20 48 6f 6c 65 20  |ion. Black Hole |
00001220  69 73 20 62 72 6f 75 67  68 74 20 74 6f 20 79 6f  |is brought to yo|
00001230  75 20 63 6f 75 72 74 65  73 79 20 6f 66 20 46 61  |u courtesy of Fa|
00001240  74 20 47 65 72 6d 61 6e  20 50 72 6f 64 75 63 74  |t German Product|
00001250  69 6f 6e 73 2c 20 73 6f  20 63 61 6c 6c 65 64 20  |ions, so called |
00001260  62 65 63 61 75 73 65 20  49 27 6d 20 6e 6f 74 20  |because I'm not |
00001270  66 61 74 2c 20 61 6e 64  20 6e 65 69 74 68 65 72  |fat, and neither|
00001280  20 64 6f 20 49 20 63 6f  6d 65 20 66 72 6f 6d 20  | do I come from |
00001290  47 65 72 6d 61 6e 79 2e  2e 22 0d 08 0c 1e 24 61  |Germany.."....$a|
000012a0  64 64 72 25 3d 74 65 6d  70 24 3a 61 64 64 72 25  |ddr%=temp$:addr%|
000012b0  2b 3d a9 74 65 6d 70 24  0d 08 16 d5 74 65 6d 70  |+=.temp$....temp|
000012c0  24 3d 22 20 20 20 20 20  20 20 48 65 6c 6c 6f 2e  |$="       Hello.|
000012d0  20 20 20 20 20 20 20 20  20 20 52 69 67 68 74 2c  |          Right,|
000012e0  20 74 68 61 74 27 73 20  74 68 61 74 20 6f 76 65  | that's that ove|
000012f0  72 20 77 69 74 68 2e 20  57 68 61 74 20 6e 65 78  |r with. What nex|
00001300  74 2c 20 49 20 77 6f 6e  64 65 72 3f 20 20 49 20  |t, I wonder?  I |
00001310  73 75 70 70 6f 73 65 20  49 20 73 68 6f 75 6c 64  |suppose I should|
00001320  20 74 68 61 6e 6b 20 52  6f 62 69 6e 20 57 61 74  | thank Robin Wat|
00001330  74 73 20 66 6f 72 20 68  65 6c 70 20 61 6e 64 20  |ts for help and |
00001340  61 6c 6c 6f 77 69 6e 67  20 6d 65 20 74 6f 20 73  |allowing me to s|
00001350  74 65 61 6c 20 63 6f 64  65 20 66 72 6f 6d 20 21  |teal code from !|
00001360  4c 61 72 67 65 72 20 28  4f 4b 2c 20 73 6f 20 49  |Larger (OK, so I|
00001370  20 74 6f 6c 64 20 68 69  6d 20 61 66 74 65 72 77  | told him afterw|
00001380  61 72 64 73 2e 2e 2e 2e  2e 29 2c 20 22 0d 08 20  |ards.....), ".. |
00001390  1e 24 61 64 64 72 25 3d  74 65 6d 70 24 3a 61 64  |.$addr%=temp$:ad|
000013a0  64 72 25 2b 3d a9 74 65  6d 70 24 0d 08 2a a6 74  |dr%+=.temp$..*.t|
000013b0  65 6d 70 24 3d 22 61 6e  64 20 61 6c 73 6f 20 53  |emp$="and also S|
000013c0  74 65 76 65 20 53 69 6e  67 65 72 20 66 6f 72 20  |teve Singer for |
000013d0  67 69 76 69 6e 67 20 6d  65 20 74 68 65 20 73 74  |giving me the st|
000013e0  75 70 69 64 20 69 64 65  61 20 69 6e 20 74 68 65  |upid idea in the|
000013f0  20 66 69 72 73 74 20 70  6c 61 63 65 2e 20 41 6c  | first place. Al|
00001400  73 6f 20 4a 61 73 6f 6e  20 57 69 6c 6c 69 61 6d  |so Jason William|
00001410  73 20 66 6f 72 20 74 68  65 20 53 68 72 65 64 64  |s for the Shredd|
00001420  65 72 20 73 70 72 69 74  65 73 2c 20 4d 61 72 6b  |er sprites, Mark|
00001430  20 4b 65 6d 70 73 74 65  72 20 66 6f 72 20 74 68  | Kempster for th|
00001440  65 20 42 75 72 6e 20 73  70 72 69 74 65 73 2c 20  |e Burn sprites, |
00001450  22 0d 08 34 1e 24 61 64  64 72 25 3d 74 65 6d 70  |"..4.$addr%=temp|
00001460  24 3a 61 64 64 72 25 2b  3d a9 74 65 6d 70 24 0d  |$:addr%+=.temp$.|
00001470  08 3e 7e 74 65 6d 70 24  3d 22 61 6e 64 20 4a 61  |.>~temp$="and Ja|
00001480  6d 65 73 20 4d 69 6c 6c  65 72 2c 20 50 65 74 65  |mes Miller, Pete|
00001490  72 20 53 63 68 72 6f 64  65 72 2c 20 61 6e 64 20  |r Schroder, and |
000014a0  43 69 61 72 61 6e 27 73  20 62 72 6f 74 68 65 72  |Ciaran's brother|
000014b0  20 66 6f 72 20 73 75 67  67 65 73 74 69 6f 6e 73  | for suggestions|
000014c0  20 6f 66 20 74 68 65 20  22 22 49 74 27 73 20 76  | of the ""It's v|
000014d0  65 72 79 20 6e 69 63 65  2c 20 62 75 74 2e 2e 2e  |ery nice, but...|
000014e0  2e 22 22 20 76 61 72 69  65 74 79 2e 22 0d 08 48  |."" variety."..H|
000014f0  1e 24 61 64 64 72 25 3d  74 65 6d 70 24 3a 61 64  |.$addr%=temp$:ad|
00001500  64 72 25 2b 3d a9 74 65  6d 70 24 0d 08 52 75 74  |dr%+=.temp$..Rut|
00001510  65 6d 70 24 3d 22 20 52  69 67 68 74 2c 20 49 20  |emp$=" Right, I |
00001520  74 68 69 6e 6b 20 74 68  61 74 27 73 20 61 62 6f  |think that's abo|
00001530  75 74 20 69 74 2e 20 49  20 73 68 6f 75 6c 64 20  |ut it. I should |
00001540  6a 75 73 74 20 73 61 79  20 74 68 61 74 20 74 68  |just say that th|
00001550  69 73 20 70 72 6f 67 72  61 6d 20 69 73 20 21 48  |is program is !H|
00001560  65 6c 70 20 63 6f 6d 70  61 74 69 62 6c 65 20 61  |elp compatible a|
00001570  6e 64 20 74 68 61 74 20  69 66 20 79 6f 75 20 22  |nd that if you "|
00001580  0d 08 5c 1e 24 61 64 64  72 25 3d 74 65 6d 70 24  |..\.$addr%=temp$|
00001590  3a 61 64 64 72 25 2b 3d  a9 74 65 6d 70 24 0d 08  |:addr%+=.temp$..|
000015a0  66 e8 74 65 6d 70 24 3d  22 68 61 76 65 20 61 6e  |f.temp$="have an|
000015b0  79 20 69 64 65 61 73 20  6f 72 20 63 6f 6d 6d 65  |y ideas or comme|
000015c0  6e 74 73 20 74 68 65 6e  20 70 6c 65 61 73 65 20  |nts then please |
000015d0  77 72 69 74 65 20 74 6f  20 6d 65 2e 20 4d 79 20  |write to me. My |
000015e0  61 64 64 72 65 73 73 20  69 73 20 67 69 76 65 6e  |address is given|
000015f0  20 61 74 20 74 68 65 20  65 6e 64 20 6f 66 20 74  | at the end of t|
00001600  68 65 20 61 63 63 6f 6d  70 61 6e 79 69 6e 67 20  |he accompanying |
00001610  48 65 6c 70 20 66 69 6c  65 2c 20 77 68 69 63 68  |Help file, which|
00001620  20 79 6f 75 20 63 61 6e  20 6c 6f 61 64 20 62 79  | you can load by|
00001630  20 63 6c 69 63 6b 69 6e  67 20 6f 6e 20 74 68 65  | clicking on the|
00001640  20 61 66 6f 72 65 6d 65  6e 74 69 6f 6e 65 64 20  | aforementioned |
00001650  6c 6f 67 6f 2e 20 42 79  65 65 20 66 6f 72 20 6e  |logo. Byee for n|
00001660  6f 77 2e 2e 2e 2e 2e 20  20 20 20 20 20 20 20 20  |ow.....         |
00001670  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001680  20 20 22 2b bd 30 0d 08  70 1e 24 61 64 64 72 25  |  "+.0..p.$addr%|
00001690  3d 74 65 6d 70 24 3a 61  64 64 72 25 2b 3d a9 74  |=temp$:addr%+=.t|
000016a0  65 6d 70 24 0d 08 7a 2d  e7 20 61 64 64 72 25 2d  |emp$..z-. addr%-|
000016b0  73 74 72 69 6e 67 25 3e  31 31 30 30 20 85 30 2c  |string%>1100 .0,|
000016c0  22 54 6f 6f 20 6d 61 6e  79 20 77 6f 72 64 73 21  |"Too many words!|
000016d0  22 0d 08 84 1c 21 69 63  6f 6e 61 64 64 72 3d a4  |"....!iconaddr=.|
000016e0  6c 75 73 74 28 49 6e 66  6f 25 2c 31 29 0d 08 8e  |lust(Info%,1)...|
000016f0  05 e1 0d ff                                       |....|
000016f4