Home » Archimedes archive » Acorn User » AU 1995-05.adf » !StarInfo_StarInfo » Turnbull/!Splurge/!RunImage

Turnbull/!Splurge/!RunImage

This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.

Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.

Tape/disk: Home » Archimedes archive » Acorn User » AU 1995-05.adf » !StarInfo_StarInfo
Filename: Turnbull/!Splurge/!RunImage
Read OK:
File size: 0D2B bytes
Load address: 0000
Exec address: 0000
File contents
   10MODE13
   11OFF
   20PROCconstants
   30DIMspace%spacelen%:P%=space%
   40code%=P%:P%+=codelen%
   50shape%=P%:P%+=4*size%
   60pos%=P%:P%+=8*nop%
   70sin%=P%:cos%=sin%+4*256:P%=cos%+4*1024
   80IFP%>space%+spacelen%THENERROR255,"Space isn't big enough"
   90PROCassemble
  100FORT%=0TOsize%-1:Y%=T%*2-size%+1:shape%!(T%<<2)=SQR(size%*size%-Y%*Y%)+1>>1:NEXT
  110U%=pos%:FORT%=0TOnop%-1:!U%=160:U%!4=128:U%+=8::NEXT
  120FORT%=0TO1279:sin%!(T%<<2)=(1<<16)*SIN(2*PI*T%/1024):NEXT
  130CALLreadvduvars%
  140REPEAT
  150CALLframe%
  160UNTIL0
  170END
  180:
  190:
  200DEFPROCconstants
  210spacelen%=&40000
  220codelen%=&4000
  230size%=16
  240nop%=4096
  250ENDPROC
  260:
  270DEFFNadr(R%,A%,I%)
  280IF(P%AND3)<>0THENPRINT"Code isn't word aligned!":END
  290IF(T%AND2)=0THENP%+=I%<<2:=T%
  300LOCALN%,O%,H%,U%:H%=A%-(P%+8):N%=0:O%=15
  310FORU%=1TOI%:IFH%=0THEN
  320[OPT T%:MOV R%,O%:]
  330ELSEWHILE(H%AND3)=0:H%=H%>>2:N%+=2:ENDWHILE
  340IF(H%AND256)=0THEN
  350[OPT T%:ADD R%,O%,#(H%AND255)<<N%:]:H%-=H%AND255
  360ELSE[OPT T%:SUB R%,O%,#(256-H%AND255)<<N%:]:H%+=256-H%AND255
  370ENDIF
  380ENDIF:O%=R%:NEXT
  390IFH%<>0THENPRINT"Could not ADR to ";A%;" in ";I%;" instructions (R%=";R%;")":END
  400=T%
  410:
  420DEFFNregisterj(J%,N%)
  430J%!(N%<<2)=P%-J%
  440=T%
  450:
  460DEFPROCassemble
  470FORT%=0TO2STEP2:P%=code%
  480[OPT T%
  490:
  500.vduvars%:EQUD 148:EQUD -1
  510.scraddr%:EQUD -1
  520.bank%:EQUD -1
  530:
  540.readvduvars%
  550ADR R0,vduvars%
  560ADR R1,scraddr%
  570SWI "OS_ReadVduVariables"
  580MOV PC,R14
  590:
  600.random%:EQUD TIME
  610.lasttime%:EQUD 0
  620.anim%:EQUD 0
  630.pp%
  640EQUD 0:EQUD 0
  650EQUD 0:EQUD 0
  660EQUD 0:EQUD 0
  670:
  680.frame%
  690STMFD R13!,{R14}
  691.timeloop%
  700SWI "OS_ReadMonotonicTime"
  710LDR R1,lasttime%
  720CMP R0,R1
  730BEQ timeloop%
  731STR R0,lasttime%
  740MOV R11,#4
  750.floop%
  760LDR R0,anim%
  770SUBS R0,R0,#1
  780ADDLT R0,R0,#nop%
  790STR R0,anim%
  800OPT FNadr(8,pos%,2)
  810ADD R8,R8,R0,ASL#3
  820LDMIA R8,{R3-R4}
  830BL dec%
  840RSB R3,R3,#320
  850RSB R4,R4,#256
  860BL dec%
  870MOV R3,#160<<16-4
  880MOV R4,#128<<16-4
  890LDR R0,random%
  900ADR R1,pp%
  910MOV R9,#3
  920.ploop%
  930OPT FNadr(2,sin%,2)
  940LDMIA R1,{R5,R6}
  950ADD R5,R5,R6
  960ADD R0,R0,R0,ASL#1
  970ADD R6,R6,R0,ASR#10+4
  980CMP R6,#1<<32-10
  990MOVGT R6,#1<<32-10
 1000CMN R6,#1<<32-10
 1010MVNLT R6,#1<<32-10
 1020STMIA R1!,{R5,R6}
 1021RSB R6,R9,#3
 1022MOV R5,R5,ASL R6
 1030MOV R5,R5,LSR#32-10
 1040ADD R5,R2,R5,ASL#2
 1050LDR R6,[R5],#cos%-sin%
 1060LDR R5,[R5]
 1070MLA R3,R5,R9,R3
 1080MLA R4,R6,R9,R4
 1090SUBS R9,R9,#1
 1100BGT ploop%
 1110STR R0,random%
 1120MOV R3,R3,ASR#16-4
 1130MOV R4,R4,ASR#16-4
 1140STMIA R8,{R3-R4}
 1150BL inc%
 1160RSB R3,R3,#320
 1170RSB R4,R4,#256
 1180BL inc%
 1190SUBS R11,R11,#1
 1200BGT floop%
 1210LDMFD R13!,{PC}
 1220:
 1230.inc%
 1240LDR R10,scraddr%
 1250ADD R10,R10,R3
 1260ADD R10,R10,R4,ASL#6
 1270ADD R10,R10,R4,ASL#8
 1280OPT FNadr(12,shape%,2)
 1290SUB R10,R10,#(size%>>1)*320
 1300MOV R0,#size%
 1310.yloop%
 1320LDR R1,[R12],#4
 1330SUB R9,R10,R1
 1340.xloop%
 1350LDRB R2,[R9]
 1360ADD R2,R2,#1
 1370STRB R2,[R9],#1
 1380LDRB R2,[R9]
 1390ADD R2,R2,#1
 1400STRB R2,[R9],#1
 1410SUBS R1,R1,#1
 1420BGT xloop%
 1430ADD R10,R10,#320
 1440SUBS R0,R0,#1
 1450BGT yloop%
 1460MOV PC,R14
 1470:
 1480.dec%
 1490LDR R10,scraddr%
 1500ADD R10,R10,R3
 1510ADD R10,R10,R4,ASL#6
 1520ADD R10,R10,R4,ASL#8
 1530OPT FNadr(12,shape%,2)
 1540SUB R10,R10,#(size%>>1)*320
 1550MOV R0,#size%
 1560.yloop%
 1570LDR R1,[R12],#4
 1580SUB R9,R10,R1
 1590.xloop%
 1600LDRB R2,[R9]
 1610SUB R2,R2,#1
 1620STRB R2,[R9],#1
 1630LDRB R2,[R9]
 1640SUB R2,R2,#1
 1650STRB R2,[R9],#1
 1660SUBS R1,R1,#1
 1670BGT xloop%
 1680ADD R10,R10,#320
 1690SUBS R0,R0,#1
 1700BGT yloop%
 1710MOV PC,R14
 1720:
 1730]:IFP%>code%+codelen%THENERROR255,"Code isn't big enough"
 1740NEXT
 1750ENDPROC

�13
�
�constants
�space%spacelen%:P%=space%
(code%=P%:P%+=codelen%
2shape%=P%:P%+=4*size%
<pos%=P%:P%+=8*nop%
F*sin%=P%:cos%=sin%+4*256:P%=cos%+4*1024
P6�P%>space%+spacelen%��255,"Space isn't big enough"
Z
�assemble
dL�T%=0�size%-1:Y%=T%*2-size%+1:shape%!(T%<<2)=�(size%*size%-Y%*Y%)+1>>1:�
n2U%=pos%:�T%=0�nop%-1:!U%=160:U%!4=128:U%+=8::�
x4�T%=0�1279:sin%!(T%<<2)=(1<<16)*�(2*�*T%/1024):�
��readvduvars%
��
��frame%
��0
��
�:
�:
���constants
�spacelen%=&40000
�codelen%=&4000
�size%=16
�
nop%=4096
��
:
ݤadr(R%,A%,I%)
,�(P%�3)<>0��"Code isn't word aligned!":�
"�(T%�2)=0�P%+=I%<<2:=T%
,(�N%,O%,H%,U%:H%=A%-(P%+8):N%=0:O%=15
6�U%=1�I%:�H%=0�
@[OPT T%:MOV R%,O%:]
J �ȕ(H%�3)=0:H%=H%>>2:N%+=2:�
T�(H%�256)=0�
^0[OPT T%:ADD R%,O%,#(H%�255)<<N%:]:H%-=H%�255
h9�[OPT T%:SUB R%,O%,#(256-H%�255)<<N%:]:H%+=256-H%�255
r�
|
�:O%=R%:�
�J�H%<>0��"Could not ADR to ";A%;" in ";I%;" instructions (R%=";R%;")":�
�=T%
�:
�ݤregisterj(J%,N%)
�J%!(N%<<2)=P%-J%
�=T%
�:
���assemble
��T%=0�2�2:P%=code%
�[OPT T%
�:
�.vduvars%:EQUD 148:EQUD -1
�.scraddr%:EQUD -1
.bank%:EQUD -1
:
.readvduvars%
&ADR R0,vduvars%
0ADR R1,scraddr%
:SWI "OS_ReadVduVariables"
DMOV PC,R14
N:
X.random%:EQUD �
b.lasttime%:EQUD 0
l.anim%:EQUD 0
v.pp%
�EQUD 0:EQUD 0
�EQUD 0:EQUD 0
�EQUD 0:EQUD 0
�:
�.frame%
�STMFD R13!,{R14}
�.timeloop%
�SWI "OS_ReadMonotonicTime"
�LDR R1,lasttime%
�
CMP R0,R1
�BEQ timeloop%
�STR R0,lasttime%
�MOV R11,#4
�.floop%
�LDR R0,anim%
SUBS R0,R0,#1
ADDLT R0,R0,#nop%
STR R0,anim%
 OPT �adr(8,pos%,2)
*ADD R8,R8,R0,ASL#3
4LDMIA R8,{R3-R4}
>BL dec%
HRSB R3,R3,#320
RRSB R4,R4,#256
\BL dec%
fMOV R3,#160<<16-4
pMOV R4,#128<<16-4
zLDR R0,random%
�ADR R1,pp%
�
MOV R9,#3
�.ploop%
�OPT �adr(2,sin%,2)
�LDMIA R1,{R5,R6}
�ADD R5,R5,R6
�ADD R0,R0,R0,ASL#1
�ADD R6,R6,R0,ASR#10+4
�CMP R6,#1<<32-10
�MOVGT R6,#1<<32-10
�CMN R6,#1<<32-10
�MVNLT R6,#1<<32-10
�STMIA R1!,{R5,R6}
�RSB R6,R9,#3
�MOV R5,R5,ASL R6
MOV R5,R5,LSR#32-10
ADD R5,R2,R5,ASL#2
LDR R6,[R5],#cos%-sin%
$LDR R5,[R5]
.MLA R3,R5,R9,R3
8MLA R4,R6,R9,R4
BSUBS R9,R9,#1
LBGT ploop%
VSTR R0,random%
`MOV R3,R3,ASR#16-4
jMOV R4,R4,ASR#16-4
tSTMIA R8,{R3-R4}
~BL inc%
�RSB R3,R3,#320
�RSB R4,R4,#256
�BL inc%
�SUBS R11,R11,#1
�BGT floop%
�LDMFD R13!,{PC}
�:
�	.inc%
�LDR R10,scraddr%
�ADD R10,R10,R3
�ADD R10,R10,R4,ASL#6
�ADD R10,R10,R4,ASL#8
OPT �adr(12,shape%,2)

SUB R10,R10,#(size%>>1)*320
MOV R0,#size%
.yloop%
(LDR R1,[R12],#4
2SUB R9,R10,R1
<.xloop%
FLDRB R2,[R9]
PADD R2,R2,#1
ZSTRB R2,[R9],#1
dLDRB R2,[R9]
nADD R2,R2,#1
xSTRB R2,[R9],#1
�SUBS R1,R1,#1
�BGT xloop%
�ADD R10,R10,#320
�SUBS R0,R0,#1
�BGT yloop%
�MOV PC,R14
�:
�	.dec%
�LDR R10,scraddr%
�ADD R10,R10,R3
�ADD R10,R10,R4,ASL#6
�ADD R10,R10,R4,ASL#8
�OPT �adr(12,shape%,2)
SUB R10,R10,#(size%>>1)*320
MOV R0,#size%
.yloop%
"LDR R1,[R12],#4
,SUB R9,R10,R1
6.xloop%
@LDRB R2,[R9]
JSUB R2,R2,#1
TSTRB R2,[R9],#1
^LDRB R2,[R9]
hSUB R2,R2,#1
rSTRB R2,[R9],#1
|SUBS R1,R1,#1
�BGT xloop%
�ADD R10,R10,#320
�SUBS R0,R0,#1
�BGT yloop%
�MOV PC,R14
�:
�5]:�P%>code%+codelen%��255,"Code isn't big enough"
��
��
�
00000000  0d 00 0a 07 eb 31 33 0d  00 0b 05 87 0d 00 14 0e  |.....13.........|
00000010  f2 63 6f 6e 73 74 61 6e  74 73 0d 00 1e 1e de 73  |.constants.....s|
00000020  70 61 63 65 25 73 70 61  63 65 6c 65 6e 25 3a 50  |pace%spacelen%:P|
00000030  25 3d 73 70 61 63 65 25  0d 00 28 19 63 6f 64 65  |%=space%..(.code|
00000040  25 3d 50 25 3a 50 25 2b  3d 63 6f 64 65 6c 65 6e  |%=P%:P%+=codelen|
00000050  25 0d 00 32 19 73 68 61  70 65 25 3d 50 25 3a 50  |%..2.shape%=P%:P|
00000060  25 2b 3d 34 2a 73 69 7a  65 25 0d 00 3c 16 70 6f  |%+=4*size%..<.po|
00000070  73 25 3d 50 25 3a 50 25  2b 3d 38 2a 6e 6f 70 25  |s%=P%:P%+=8*nop%|
00000080  0d 00 46 2a 73 69 6e 25  3d 50 25 3a 63 6f 73 25  |..F*sin%=P%:cos%|
00000090  3d 73 69 6e 25 2b 34 2a  32 35 36 3a 50 25 3d 63  |=sin%+4*256:P%=c|
000000a0  6f 73 25 2b 34 2a 31 30  32 34 0d 00 50 36 e7 50  |os%+4*1024..P6.P|
000000b0  25 3e 73 70 61 63 65 25  2b 73 70 61 63 65 6c 65  |%>space%+spacele|
000000c0  6e 25 8c 85 32 35 35 2c  22 53 70 61 63 65 20 69  |n%..255,"Space i|
000000d0  73 6e 27 74 20 62 69 67  20 65 6e 6f 75 67 68 22  |sn't big enough"|
000000e0  0d 00 5a 0d f2 61 73 73  65 6d 62 6c 65 0d 00 64  |..Z..assemble..d|
000000f0  4c e3 54 25 3d 30 b8 73  69 7a 65 25 2d 31 3a 59  |L.T%=0.size%-1:Y|
00000100  25 3d 54 25 2a 32 2d 73  69 7a 65 25 2b 31 3a 73  |%=T%*2-size%+1:s|
00000110  68 61 70 65 25 21 28 54  25 3c 3c 32 29 3d b6 28  |hape%!(T%<<2)=.(|
00000120  73 69 7a 65 25 2a 73 69  7a 65 25 2d 59 25 2a 59  |size%*size%-Y%*Y|
00000130  25 29 2b 31 3e 3e 31 3a  ed 0d 00 6e 32 55 25 3d  |%)+1>>1:...n2U%=|
00000140  70 6f 73 25 3a e3 54 25  3d 30 b8 6e 6f 70 25 2d  |pos%:.T%=0.nop%-|
00000150  31 3a 21 55 25 3d 31 36  30 3a 55 25 21 34 3d 31  |1:!U%=160:U%!4=1|
00000160  32 38 3a 55 25 2b 3d 38  3a 3a ed 0d 00 78 34 e3  |28:U%+=8::...x4.|
00000170  54 25 3d 30 b8 31 32 37  39 3a 73 69 6e 25 21 28  |T%=0.1279:sin%!(|
00000180  54 25 3c 3c 32 29 3d 28  31 3c 3c 31 36 29 2a b5  |T%<<2)=(1<<16)*.|
00000190  28 32 2a af 2a 54 25 2f  31 30 32 34 29 3a ed 0d  |(2*.*T%/1024):..|
000001a0  00 82 11 d6 72 65 61 64  76 64 75 76 61 72 73 25  |....readvduvars%|
000001b0  0d 00 8c 05 f5 0d 00 96  0b d6 66 72 61 6d 65 25  |..........frame%|
000001c0  0d 00 a0 06 fd 30 0d 00  aa 05 e0 0d 00 b4 05 3a  |.....0.........:|
000001d0  0d 00 be 05 3a 0d 00 c8  0f dd f2 63 6f 6e 73 74  |....:......const|
000001e0  61 6e 74 73 0d 00 d2 14  73 70 61 63 65 6c 65 6e  |ants....spacelen|
000001f0  25 3d 26 34 30 30 30 30  0d 00 dc 12 63 6f 64 65  |%=&40000....code|
00000200  6c 65 6e 25 3d 26 34 30  30 30 0d 00 e6 0c 73 69  |len%=&4000....si|
00000210  7a 65 25 3d 31 36 0d 00  f0 0d 6e 6f 70 25 3d 34  |ze%=16....nop%=4|
00000220  30 39 36 0d 00 fa 05 e1  0d 01 04 05 3a 0d 01 0e  |096.........:...|
00000230  13 dd a4 61 64 72 28 52  25 2c 41 25 2c 49 25 29  |...adr(R%,A%,I%)|
00000240  0d 01 18 2c e7 28 50 25  80 33 29 3c 3e 30 8c f1  |...,.(P%.3)<>0..|
00000250  22 43 6f 64 65 20 69 73  6e 27 74 20 77 6f 72 64  |"Code isn't word|
00000260  20 61 6c 69 67 6e 65 64  21 22 3a e0 0d 01 22 1b  | aligned!":...".|
00000270  e7 28 54 25 80 32 29 3d  30 8c 50 25 2b 3d 49 25  |.(T%.2)=0.P%+=I%|
00000280  3c 3c 32 3a 3d 54 25 0d  01 2c 28 ea 4e 25 2c 4f  |<<2:=T%..,(.N%,O|
00000290  25 2c 48 25 2c 55 25 3a  48 25 3d 41 25 2d 28 50  |%,H%,U%:H%=A%-(P|
000002a0  25 2b 38 29 3a 4e 25 3d  30 3a 4f 25 3d 31 35 0d  |%+8):N%=0:O%=15.|
000002b0  01 36 13 e3 55 25 3d 31  b8 49 25 3a e7 48 25 3d  |.6..U%=1.I%:.H%=|
000002c0  30 8c 0d 01 40 17 5b 4f  50 54 20 54 25 3a 4d 4f  |0...@.[OPT T%:MO|
000002d0  56 20 52 25 2c 4f 25 3a  5d 0d 01 4a 20 cc c8 95  |V R%,O%:]..J ...|
000002e0  28 48 25 80 33 29 3d 30  3a 48 25 3d 48 25 3e 3e  |(H%.3)=0:H%=H%>>|
000002f0  32 3a 4e 25 2b 3d 32 3a  ce 0d 01 54 10 e7 28 48  |2:N%+=2:...T..(H|
00000300  25 80 32 35 36 29 3d 30  8c 0d 01 5e 30 5b 4f 50  |%.256)=0...^0[OP|
00000310  54 20 54 25 3a 41 44 44  20 52 25 2c 4f 25 2c 23  |T T%:ADD R%,O%,#|
00000320  28 48 25 80 32 35 35 29  3c 3c 4e 25 3a 5d 3a 48  |(H%.255)<<N%:]:H|
00000330  25 2d 3d 48 25 80 32 35  35 0d 01 68 39 cc 5b 4f  |%-=H%.255..h9.[O|
00000340  50 54 20 54 25 3a 53 55  42 20 52 25 2c 4f 25 2c  |PT T%:SUB R%,O%,|
00000350  23 28 32 35 36 2d 48 25  80 32 35 35 29 3c 3c 4e  |#(256-H%.255)<<N|
00000360  25 3a 5d 3a 48 25 2b 3d  32 35 36 2d 48 25 80 32  |%:]:H%+=256-H%.2|
00000370  35 35 0d 01 72 05 cd 0d  01 7c 0d cd 3a 4f 25 3d  |55..r....|..:O%=|
00000380  52 25 3a ed 0d 01 86 4a  e7 48 25 3c 3e 30 8c f1  |R%:....J.H%<>0..|
00000390  22 43 6f 75 6c 64 20 6e  6f 74 20 41 44 52 20 74  |"Could not ADR t|
000003a0  6f 20 22 3b 41 25 3b 22  20 69 6e 20 22 3b 49 25  |o ";A%;" in ";I%|
000003b0  3b 22 20 69 6e 73 74 72  75 63 74 69 6f 6e 73 20  |;" instructions |
000003c0  28 52 25 3d 22 3b 52 25  3b 22 29 22 3a e0 0d 01  |(R%=";R%;")":...|
000003d0  90 07 3d 54 25 0d 01 9a  05 3a 0d 01 a4 16 dd a4  |..=T%....:......|
000003e0  72 65 67 69 73 74 65 72  6a 28 4a 25 2c 4e 25 29  |registerj(J%,N%)|
000003f0  0d 01 ae 14 4a 25 21 28  4e 25 3c 3c 32 29 3d 50  |....J%!(N%<<2)=P|
00000400  25 2d 4a 25 0d 01 b8 07  3d 54 25 0d 01 c2 05 3a  |%-J%....=T%....:|
00000410  0d 01 cc 0e dd f2 61 73  73 65 6d 62 6c 65 0d 01  |......assemble..|
00000420  d6 16 e3 54 25 3d 30 b8  32 88 32 3a 50 25 3d 63  |...T%=0.2.2:P%=c|
00000430  6f 64 65 25 0d 01 e0 0b  5b 4f 50 54 20 54 25 0d  |ode%....[OPT T%.|
00000440  01 ea 05 3a 0d 01 f4 1e  2e 76 64 75 76 61 72 73  |...:.....vduvars|
00000450  25 3a 45 51 55 44 20 31  34 38 3a 45 51 55 44 20  |%:EQUD 148:EQUD |
00000460  2d 31 0d 01 fe 15 2e 73  63 72 61 64 64 72 25 3a  |-1.....scraddr%:|
00000470  45 51 55 44 20 2d 31 0d  02 08 12 2e 62 61 6e 6b  |EQUD -1.....bank|
00000480  25 3a 45 51 55 44 20 2d  31 0d 02 12 05 3a 0d 02  |%:EQUD -1....:..|
00000490  1c 11 2e 72 65 61 64 76  64 75 76 61 72 73 25 0d  |...readvduvars%.|
000004a0  02 26 13 41 44 52 20 52  30 2c 76 64 75 76 61 72  |.&.ADR R0,vduvar|
000004b0  73 25 0d 02 30 13 41 44  52 20 52 31 2c 73 63 72  |s%..0.ADR R1,scr|
000004c0  61 64 64 72 25 0d 02 3a  1d 53 57 49 20 22 4f 53  |addr%..:.SWI "OS|
000004d0  5f 52 65 61 64 56 64 75  56 61 72 69 61 62 6c 65  |_ReadVduVariable|
000004e0  73 22 0d 02 44 0e 4d 4f  56 20 50 43 2c 52 31 34  |s"..D.MOV PC,R14|
000004f0  0d 02 4e 05 3a 0d 02 58  13 2e 72 61 6e 64 6f 6d  |..N.:..X..random|
00000500  25 3a 45 51 55 44 20 91  0d 02 62 15 2e 6c 61 73  |%:EQUD ...b..las|
00000510  74 74 69 6d 65 25 3a 45  51 55 44 20 30 0d 02 6c  |ttime%:EQUD 0..l|
00000520  11 2e 61 6e 69 6d 25 3a  45 51 55 44 20 30 0d 02  |..anim%:EQUD 0..|
00000530  76 08 2e 70 70 25 0d 02  80 11 45 51 55 44 20 30  |v..pp%....EQUD 0|
00000540  3a 45 51 55 44 20 30 0d  02 8a 11 45 51 55 44 20  |:EQUD 0....EQUD |
00000550  30 3a 45 51 55 44 20 30  0d 02 94 11 45 51 55 44  |0:EQUD 0....EQUD|
00000560  20 30 3a 45 51 55 44 20  30 0d 02 9e 05 3a 0d 02  | 0:EQUD 0....:..|
00000570  a8 0b 2e 66 72 61 6d 65  25 0d 02 b2 14 53 54 4d  |...frame%....STM|
00000580  46 44 20 52 31 33 21 2c  7b 52 31 34 7d 0d 02 b3  |FD R13!,{R14}...|
00000590  0e 2e 74 69 6d 65 6c 6f  6f 70 25 0d 02 bc 1e 53  |..timeloop%....S|
000005a0  57 49 20 22 4f 53 5f 52  65 61 64 4d 6f 6e 6f 74  |WI "OS_ReadMonot|
000005b0  6f 6e 69 63 54 69 6d 65  22 0d 02 c6 14 4c 44 52  |onicTime"....LDR|
000005c0  20 52 31 2c 6c 61 73 74  74 69 6d 65 25 0d 02 d0  | R1,lasttime%...|
000005d0  0d 43 4d 50 20 52 30 2c  52 31 0d 02 da 11 42 45  |.CMP R0,R1....BE|
000005e0  51 20 74 69 6d 65 6c 6f  6f 70 25 0d 02 db 14 53  |Q timeloop%....S|
000005f0  54 52 20 52 30 2c 6c 61  73 74 74 69 6d 65 25 0d  |TR R0,lasttime%.|
00000600  02 e4 0e 4d 4f 56 20 52  31 31 2c 23 34 0d 02 ee  |...MOV R11,#4...|
00000610  0b 2e 66 6c 6f 6f 70 25  0d 02 f8 10 4c 44 52 20  |..floop%....LDR |
00000620  52 30 2c 61 6e 69 6d 25  0d 03 02 11 53 55 42 53  |R0,anim%....SUBS|
00000630  20 52 30 2c 52 30 2c 23  31 0d 03 0c 15 41 44 44  | R0,R0,#1....ADD|
00000640  4c 54 20 52 30 2c 52 30  2c 23 6e 6f 70 25 0d 03  |LT R0,R0,#nop%..|
00000650  16 10 53 54 52 20 52 30  2c 61 6e 69 6d 25 0d 03  |..STR R0,anim%..|
00000660  20 16 4f 50 54 20 a4 61  64 72 28 38 2c 70 6f 73  | .OPT .adr(8,pos|
00000670  25 2c 32 29 0d 03 2a 16  41 44 44 20 52 38 2c 52  |%,2)..*.ADD R8,R|
00000680  38 2c 52 30 2c 41 53 4c  23 33 0d 03 34 14 4c 44  |8,R0,ASL#3..4.LD|
00000690  4d 49 41 20 52 38 2c 7b  52 33 2d 52 34 7d 0d 03  |MIA R8,{R3-R4}..|
000006a0  3e 0b 42 4c 20 64 65 63  25 0d 03 48 12 52 53 42  |>.BL dec%..H.RSB|
000006b0  20 52 33 2c 52 33 2c 23  33 32 30 0d 03 52 12 52  | R3,R3,#320..R.R|
000006c0  53 42 20 52 34 2c 52 34  2c 23 32 35 36 0d 03 5c  |SB R4,R4,#256..\|
000006d0  0b 42 4c 20 64 65 63 25  0d 03 66 15 4d 4f 56 20  |.BL dec%..f.MOV |
000006e0  52 33 2c 23 31 36 30 3c  3c 31 36 2d 34 0d 03 70  |R3,#160<<16-4..p|
000006f0  15 4d 4f 56 20 52 34 2c  23 31 32 38 3c 3c 31 36  |.MOV R4,#128<<16|
00000700  2d 34 0d 03 7a 12 4c 44  52 20 52 30 2c 72 61 6e  |-4..z.LDR R0,ran|
00000710  64 6f 6d 25 0d 03 84 0e  41 44 52 20 52 31 2c 70  |dom%....ADR R1,p|
00000720  70 25 0d 03 8e 0d 4d 4f  56 20 52 39 2c 23 33 0d  |p%....MOV R9,#3.|
00000730  03 98 0b 2e 70 6c 6f 6f  70 25 0d 03 a2 16 4f 50  |....ploop%....OP|
00000740  54 20 a4 61 64 72 28 32  2c 73 69 6e 25 2c 32 29  |T .adr(2,sin%,2)|
00000750  0d 03 ac 14 4c 44 4d 49  41 20 52 31 2c 7b 52 35  |....LDMIA R1,{R5|
00000760  2c 52 36 7d 0d 03 b6 10  41 44 44 20 52 35 2c 52  |,R6}....ADD R5,R|
00000770  35 2c 52 36 0d 03 c0 16  41 44 44 20 52 30 2c 52  |5,R6....ADD R0,R|
00000780  30 2c 52 30 2c 41 53 4c  23 31 0d 03 ca 19 41 44  |0,R0,ASL#1....AD|
00000790  44 20 52 36 2c 52 36 2c  52 30 2c 41 53 52 23 31  |D R6,R6,R0,ASR#1|
000007a0  30 2b 34 0d 03 d4 14 43  4d 50 20 52 36 2c 23 31  |0+4....CMP R6,#1|
000007b0  3c 3c 33 32 2d 31 30 0d  03 de 16 4d 4f 56 47 54  |<<32-10....MOVGT|
000007c0  20 52 36 2c 23 31 3c 3c  33 32 2d 31 30 0d 03 e8  | R6,#1<<32-10...|
000007d0  14 43 4d 4e 20 52 36 2c  23 31 3c 3c 33 32 2d 31  |.CMN R6,#1<<32-1|
000007e0  30 0d 03 f2 16 4d 56 4e  4c 54 20 52 36 2c 23 31  |0....MVNLT R6,#1|
000007f0  3c 3c 33 32 2d 31 30 0d  03 fc 15 53 54 4d 49 41  |<<32-10....STMIA|
00000800  20 52 31 21 2c 7b 52 35  2c 52 36 7d 0d 03 fd 10  | R1!,{R5,R6}....|
00000810  52 53 42 20 52 36 2c 52  39 2c 23 33 0d 03 fe 14  |RSB R6,R9,#3....|
00000820  4d 4f 56 20 52 35 2c 52  35 2c 41 53 4c 20 52 36  |MOV R5,R5,ASL R6|
00000830  0d 04 06 17 4d 4f 56 20  52 35 2c 52 35 2c 4c 53  |....MOV R5,R5,LS|
00000840  52 23 33 32 2d 31 30 0d  04 10 16 41 44 44 20 52  |R#32-10....ADD R|
00000850  35 2c 52 32 2c 52 35 2c  41 53 4c 23 32 0d 04 1a  |5,R2,R5,ASL#2...|
00000860  1a 4c 44 52 20 52 36 2c  5b 52 35 5d 2c 23 63 6f  |.LDR R6,[R5],#co|
00000870  73 25 2d 73 69 6e 25 0d  04 24 0f 4c 44 52 20 52  |s%-sin%..$.LDR R|
00000880  35 2c 5b 52 35 5d 0d 04  2e 13 4d 4c 41 20 52 33  |5,[R5]....MLA R3|
00000890  2c 52 35 2c 52 39 2c 52  33 0d 04 38 13 4d 4c 41  |,R5,R9,R3..8.MLA|
000008a0  20 52 34 2c 52 36 2c 52  39 2c 52 34 0d 04 42 11  | R4,R6,R9,R4..B.|
000008b0  53 55 42 53 20 52 39 2c  52 39 2c 23 31 0d 04 4c  |SUBS R9,R9,#1..L|
000008c0  0e 42 47 54 20 70 6c 6f  6f 70 25 0d 04 56 12 53  |.BGT ploop%..V.S|
000008d0  54 52 20 52 30 2c 72 61  6e 64 6f 6d 25 0d 04 60  |TR R0,random%..`|
000008e0  16 4d 4f 56 20 52 33 2c  52 33 2c 41 53 52 23 31  |.MOV R3,R3,ASR#1|
000008f0  36 2d 34 0d 04 6a 16 4d  4f 56 20 52 34 2c 52 34  |6-4..j.MOV R4,R4|
00000900  2c 41 53 52 23 31 36 2d  34 0d 04 74 14 53 54 4d  |,ASR#16-4..t.STM|
00000910  49 41 20 52 38 2c 7b 52  33 2d 52 34 7d 0d 04 7e  |IA R8,{R3-R4}..~|
00000920  0b 42 4c 20 69 6e 63 25  0d 04 88 12 52 53 42 20  |.BL inc%....RSB |
00000930  52 33 2c 52 33 2c 23 33  32 30 0d 04 92 12 52 53  |R3,R3,#320....RS|
00000940  42 20 52 34 2c 52 34 2c  23 32 35 36 0d 04 9c 0b  |B R4,R4,#256....|
00000950  42 4c 20 69 6e 63 25 0d  04 a6 13 53 55 42 53 20  |BL inc%....SUBS |
00000960  52 31 31 2c 52 31 31 2c  23 31 0d 04 b0 0e 42 47  |R11,R11,#1....BG|
00000970  54 20 66 6c 6f 6f 70 25  0d 04 ba 13 4c 44 4d 46  |T floop%....LDMF|
00000980  44 20 52 31 33 21 2c 7b  50 43 7d 0d 04 c4 05 3a  |D R13!,{PC}....:|
00000990  0d 04 ce 09 2e 69 6e 63  25 0d 04 d8 14 4c 44 52  |.....inc%....LDR|
000009a0  20 52 31 30 2c 73 63 72  61 64 64 72 25 0d 04 e2  | R10,scraddr%...|
000009b0  12 41 44 44 20 52 31 30  2c 52 31 30 2c 52 33 0d  |.ADD R10,R10,R3.|
000009c0  04 ec 18 41 44 44 20 52  31 30 2c 52 31 30 2c 52  |...ADD R10,R10,R|
000009d0  34 2c 41 53 4c 23 36 0d  04 f6 18 41 44 44 20 52  |4,ASL#6....ADD R|
000009e0  31 30 2c 52 31 30 2c 52  34 2c 41 53 4c 23 38 0d  |10,R10,R4,ASL#8.|
000009f0  05 00 19 4f 50 54 20 a4  61 64 72 28 31 32 2c 73  |...OPT .adr(12,s|
00000a00  68 61 70 65 25 2c 32 29  0d 05 0a 1f 53 55 42 20  |hape%,2)....SUB |
00000a10  52 31 30 2c 52 31 30 2c  23 28 73 69 7a 65 25 3e  |R10,R10,#(size%>|
00000a20  3e 31 29 2a 33 32 30 0d  05 14 11 4d 4f 56 20 52  |>1)*320....MOV R|
00000a30  30 2c 23 73 69 7a 65 25  0d 05 1e 0b 2e 79 6c 6f  |0,#size%.....ylo|
00000a40  6f 70 25 0d 05 28 13 4c  44 52 20 52 31 2c 5b 52  |op%..(.LDR R1,[R|
00000a50  31 32 5d 2c 23 34 0d 05  32 11 53 55 42 20 52 39  |12],#4..2.SUB R9|
00000a60  2c 52 31 30 2c 52 31 0d  05 3c 0b 2e 78 6c 6f 6f  |,R10,R1..<..xloo|
00000a70  70 25 0d 05 46 10 4c 44  52 42 20 52 32 2c 5b 52  |p%..F.LDRB R2,[R|
00000a80  39 5d 0d 05 50 10 41 44  44 20 52 32 2c 52 32 2c  |9]..P.ADD R2,R2,|
00000a90  23 31 0d 05 5a 13 53 54  52 42 20 52 32 2c 5b 52  |#1..Z.STRB R2,[R|
00000aa0  39 5d 2c 23 31 0d 05 64  10 4c 44 52 42 20 52 32  |9],#1..d.LDRB R2|
00000ab0  2c 5b 52 39 5d 0d 05 6e  10 41 44 44 20 52 32 2c  |,[R9]..n.ADD R2,|
00000ac0  52 32 2c 23 31 0d 05 78  13 53 54 52 42 20 52 32  |R2,#1..x.STRB R2|
00000ad0  2c 5b 52 39 5d 2c 23 31  0d 05 82 11 53 55 42 53  |,[R9],#1....SUBS|
00000ae0  20 52 31 2c 52 31 2c 23  31 0d 05 8c 0e 42 47 54  | R1,R1,#1....BGT|
00000af0  20 78 6c 6f 6f 70 25 0d  05 96 14 41 44 44 20 52  | xloop%....ADD R|
00000b00  31 30 2c 52 31 30 2c 23  33 32 30 0d 05 a0 11 53  |10,R10,#320....S|
00000b10  55 42 53 20 52 30 2c 52  30 2c 23 31 0d 05 aa 0e  |UBS R0,R0,#1....|
00000b20  42 47 54 20 79 6c 6f 6f  70 25 0d 05 b4 0e 4d 4f  |BGT yloop%....MO|
00000b30  56 20 50 43 2c 52 31 34  0d 05 be 05 3a 0d 05 c8  |V PC,R14....:...|
00000b40  09 2e 64 65 63 25 0d 05  d2 14 4c 44 52 20 52 31  |..dec%....LDR R1|
00000b50  30 2c 73 63 72 61 64 64  72 25 0d 05 dc 12 41 44  |0,scraddr%....AD|
00000b60  44 20 52 31 30 2c 52 31  30 2c 52 33 0d 05 e6 18  |D R10,R10,R3....|
00000b70  41 44 44 20 52 31 30 2c  52 31 30 2c 52 34 2c 41  |ADD R10,R10,R4,A|
00000b80  53 4c 23 36 0d 05 f0 18  41 44 44 20 52 31 30 2c  |SL#6....ADD R10,|
00000b90  52 31 30 2c 52 34 2c 41  53 4c 23 38 0d 05 fa 19  |R10,R4,ASL#8....|
00000ba0  4f 50 54 20 a4 61 64 72  28 31 32 2c 73 68 61 70  |OPT .adr(12,shap|
00000bb0  65 25 2c 32 29 0d 06 04  1f 53 55 42 20 52 31 30  |e%,2)....SUB R10|
00000bc0  2c 52 31 30 2c 23 28 73  69 7a 65 25 3e 3e 31 29  |,R10,#(size%>>1)|
00000bd0  2a 33 32 30 0d 06 0e 11  4d 4f 56 20 52 30 2c 23  |*320....MOV R0,#|
00000be0  73 69 7a 65 25 0d 06 18  0b 2e 79 6c 6f 6f 70 25  |size%.....yloop%|
00000bf0  0d 06 22 13 4c 44 52 20  52 31 2c 5b 52 31 32 5d  |..".LDR R1,[R12]|
00000c00  2c 23 34 0d 06 2c 11 53  55 42 20 52 39 2c 52 31  |,#4..,.SUB R9,R1|
00000c10  30 2c 52 31 0d 06 36 0b  2e 78 6c 6f 6f 70 25 0d  |0,R1..6..xloop%.|
00000c20  06 40 10 4c 44 52 42 20  52 32 2c 5b 52 39 5d 0d  |.@.LDRB R2,[R9].|
00000c30  06 4a 10 53 55 42 20 52  32 2c 52 32 2c 23 31 0d  |.J.SUB R2,R2,#1.|
00000c40  06 54 13 53 54 52 42 20  52 32 2c 5b 52 39 5d 2c  |.T.STRB R2,[R9],|
00000c50  23 31 0d 06 5e 10 4c 44  52 42 20 52 32 2c 5b 52  |#1..^.LDRB R2,[R|
00000c60  39 5d 0d 06 68 10 53 55  42 20 52 32 2c 52 32 2c  |9]..h.SUB R2,R2,|
00000c70  23 31 0d 06 72 13 53 54  52 42 20 52 32 2c 5b 52  |#1..r.STRB R2,[R|
00000c80  39 5d 2c 23 31 0d 06 7c  11 53 55 42 53 20 52 31  |9],#1..|.SUBS R1|
00000c90  2c 52 31 2c 23 31 0d 06  86 0e 42 47 54 20 78 6c  |,R1,#1....BGT xl|
00000ca0  6f 6f 70 25 0d 06 90 14  41 44 44 20 52 31 30 2c  |oop%....ADD R10,|
00000cb0  52 31 30 2c 23 33 32 30  0d 06 9a 11 53 55 42 53  |R10,#320....SUBS|
00000cc0  20 52 30 2c 52 30 2c 23  31 0d 06 a4 0e 42 47 54  | R0,R0,#1....BGT|
00000cd0  20 79 6c 6f 6f 70 25 0d  06 ae 0e 4d 4f 56 20 50  | yloop%....MOV P|
00000ce0  43 2c 52 31 34 0d 06 b8  05 3a 0d 06 c2 35 5d 3a  |C,R14....:...5]:|
00000cf0  e7 50 25 3e 63 6f 64 65  25 2b 63 6f 64 65 6c 65  |.P%>code%+codele|
00000d00  6e 25 8c 85 32 35 35 2c  22 43 6f 64 65 20 69 73  |n%..255,"Code is|
00000d10  6e 27 74 20 62 69 67 20  65 6e 6f 75 67 68 22 0d  |n't big enough".|
00000d20  06 cc 05 ed 0d 06 d6 05  e1 0d ff                 |...........|
00000d2b