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

Turnbull/!Foggy/!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/!Foggy/!RunImage
Read OK:
File size: 1288 bytes
Load address: 0000
Exec address: 0000
File contents
   10MODE9
   20VC%=16:threshold%=180:maxit%=12
   30MC%=VC%+INT(LN(threshold%)/LN(2))
   40DIMV%64
   50!V%=4:V%!4=5:V%!8=6:V%!12=10:V%!16=11:V%!20=12:V%!24=-1
   60SYS"OS_ReadVduVariables",V%,V%
   70IFV%!12<>2THENERROR255,"16 colour modes only, please"
   80CASEV%!8OF
   90WHEN160:LI%=7
  100WHEN320:LI%=8
  110WHEN640:LI%=9
  120OTHERWISE:ERROR255,"640 or 1280 pixel width modes only please"
  130ENDCASE
  140EX%=!V%:EY%=V%!4:W%=V%!16+1:H%=V%!20+1
  150xclip%=(threshold%+2)*(W%/2<<EX%)/1024+2
  160yclip%=(threshold%+2)*(H%/2<<EY%)/1024+2
  170FORT%=0TO15:COLOUR15-T%,T%<<4,T%<<4,T%<<4:NEXT
  180DIMcode%4096
  190PROCassemble
  200XX=1:XY=0:XZ=0:YX=0:YY=1:YZ=0:ZX=0:ZY=0:ZZ=1:D=4
  210NT%=TIME:REPEAT:DT%=TIME-NT%:NT%+=DT%:DT=DT%/100
  220MOUSEX%,Y%,Z%:MOUSETO640,512
  230A=(X%-640)/1024:C=COS(A):S=SIN(A)
  240O=XZ:XZ=XZ*C+XX*S:XX=XX*C-O*S
  250O=YZ:YZ=YZ*C+YX*S:YX=YX*C-O*S
  260O=ZZ:ZZ=ZZ*C+ZX*S:ZX=ZX*C-O*S
  270A=(Y%-512)/1024:C=COS(A):S=SIN(A)
  280O=XZ:XZ=XZ*C+XY*S:XY=XY*C-O*S
  290O=YZ:YZ=YZ*C+YY*S:YY=YY*C-O*S
  300O=ZZ:ZZ=ZZ*C+ZY*S:ZY=ZY*C-O*S
  310IFZ%=4THEND-=DT ELSEIFZ%=1THEND+=DT
  320view%!00=XX*(1<<VC%):view%!04=XY*(1<<VC%):view%!08=XZ*(1<<VC%)
  330view%!12=YX*(1<<VC%):view%!16=YY*(1<<VC%):view%!20=YZ*(1<<VC%)
  340view%!24=ZX*(1<<VC%):view%!28=ZY*(1<<VC%):view%!32=ZZ*(1<<VC%)
  350view%!36=0:view%!40=0:view%!44=D*(1<<VC%)
  360CALLframe%
  370UNTIL0
  380:
  390:
  400DEFPROCassemble
  410FORT%=0TO2STEP2:P%=code%
  420[OPT T%
  430:
  440.vduvars%:EQUD 148:EQUD -1
  450.scraddr%:EQUD -1
  460.bank%:EQUD 1
  470:
  480.view%
  490EQUD 1<<VC%:EQUD 0:EQUD 0:; X-Vector
  500EQUD 0:EQUD 1<<VC%:EQUD 0:; Y-Vector
  510EQUD 0:EQUD 0:EQUD 1<<VC%:; Z-Vector
  520EQUD 0:EQUD 0:EQUD 4<<VC%:; Centre
  530:
  540.corners%
  550EQUD -1:EQUD -1:EQUD -1
  560EQUD -1:EQUD -1:EQUD -1
  570EQUD -1:EQUD -1:EQUD -1
  580EQUD -1:EQUD -1:EQUD -1
  590:
  600.frame%
  610STMFD R13!,{R14}
  620LDR R1,bank%
  630CMP R1,#1
  640MOVEQ R1,#2
  650MOVNE R1,#1
  660STR R1,bank%
  670MOV R0,#112
  680SWI "OS_Byte"
  690ADR R0,vduvars%
  700ADR R1,scraddr%
  710SWI "OS_ReadVduVariables"
  720MOV R0,#19
  730SWI "OS_Byte"
  740SWI &10C
  750; Generate corners
  760ADR R0,view%
  770LDMIA R0,{R0-R2,R3-R5,R6-R8}
  780ADR R9,corners%
  790ADD R10,R0,R3
  800ADD R10,R10,R6
  810ADD R11,R1,R4
  820ADD R11,R11,R7
  830ADD R12,R2,R5
  840ADD R12,R12,R8
  850STMIA R9!,{R10-R12}
  860SUB R10,R0,R3
  870SUB R10,R10,R6
  880SUB R11,R1,R4
  890SUB R11,R11,R7
  900SUB R12,R2,R5
  910SUB R12,R12,R8
  920STMIA R9!,{R10-R12}
  930SUB R10,R3,R6
  940SUB R10,R10,R0
  950SUB R11,R4,R7
  960SUB R11,R11,R1
  970SUB R12,R5,R8
  980SUB R12,R12,R2
  990STMIA R9!,{R10-R12}
 1000SUB R10,R6,R0
 1010SUB R10,R10,R3
 1020SUB R11,R7,R1
 1030SUB R11,R11,R4
 1040SUB R12,R8,R2
 1050SUB R12,R12,R5
 1060STMIA R9!,{R10-R12}
 1070; Sort them
 1080ADR R0,corners%
 1090MOV R2,#3
 1100.oloop%
 1110MOV R1,R0
 1120LDMIA R1!,{R4-R6}
 1130MOV R3,R2
 1140.iloop%
 1150LDMIA R1,{R7-R9}
 1160CMP R6,R9
 1170STMLTDB R1,{R7-R9}
 1180STMGEDB R1,{R4-R6}
 1190MOVGE R4,R7
 1200MOVGE R5,R8
 1210MOVGE R6,R9
 1220ADD R1,R1,#12
 1230SUBS R3,R3,#1
 1240STMDB R1,{R4-R6}
 1250BGT iloop%
 1260SUBS R2,R2,#1
 1270BGT oloop%
 1280; Call the recursive tree
 1290ADR R0,view%+36
 1300LDMIA R0,{R0-R2}
 1310LDR R10,scraddr%
 1320MOV R11,#maxit%
 1330BL tree%
 1340MOV R0,#113
 1350LDR R1,bank%
 1360SWI "OS_Byte"
 1370LDMFD R13!,{PC}
 1380:
 1390.tree%
 1400STMFD R13!,{R14}
 1410CMP R2,#threshold%<<VC%
 1420BGE plot%
 1430; Subdivide
 1440CMP R11,#0
 1450LDMLEFD R13!,{PC}
 1460ADR R3,corners%+0
 1470LDMIA R3,{R3-R5}
 1480CMN R2,R5
 1490CMNGT R0,#xclip%<<VC%
 1500CMNGT R1,#yclip%<<VC%
 1510LDMLEFD R13!,{PC}
 1520CMP R0,#xclip%<<VC%
 1530CMPLT R1,#yclip%<<VC%
 1540LDMGEFD R13!,{PC}
 1550SUB R11,R11,#1
 1560STMFD R13!,{R0-R2}
 1570ADD R0,R3,R0,ASL#1
 1580ADD R1,R4,R1,ASL#1
 1590ADD R2,R5,R2,ASL#1
 1600BL tree%
 1610LDMFD R13,{R0-R2}
 1620ADR R3,corners%+12
 1630LDMIA R3,{R3-R5}
 1640ADD R0,R3,R0,ASL#1
 1650ADD R1,R4,R1,ASL#1
 1660ADD R2,R5,R2,ASL#1
 1670BL tree%
 1680LDMFD R13,{R0-R2}
 1690ADR R3,corners%+24
 1700LDMIA R3,{R3-R5}
 1710ADD R0,R3,R0,ASL#1
 1720ADD R1,R4,R1,ASL#1
 1730ADD R2,R5,R2,ASL#1
 1740BL tree%
 1750LDMFD R13!,{R0-R2}
 1760ADR R3,corners%+36
 1770LDMIA R3,{R3-R5}
 1780ADD R0,R3,R0,ASL#1
 1790ADD R1,R4,R1,ASL#1
 1800ADD R2,R5,R2,ASL#1
 1810BL tree%
 1820ADD R11,R11,#1
 1830LDMFD R13!,{PC}
 1840:
 1850.plot%
 1860MOV R3,#1<<MC%
 1870MOV R4,#0
 1880SUBS R3,R3,R2
 1890ADDLT R3,R3,R2
 1900ADDGE R4,R4,#1<<8
 1910]:FORU%=7TO1STEP-1:[OPT T%
 1920RSBS R3,R2,R3,ASL#1
 1930ADDLT R3,R3,R2
 1940ADDGE R4,R4,#1<<U%
 1950]:NEXT:[OPT T%
 1960RSBS R3,R2,R3,ASL#1
 1970ADDGE R4,R4,#1
 1980MOV R0,R0,ASR#MC%-9
 1990MOV R1,R1,ASR#MC%-9
 2000MUL R3,R0,R4
 2010MOV R0,R3,ASR#8+9-10+EX%
 2020MUL R3,R1,R4
 2030MOV R1,R3,ASR#8+9-10+EY%
 2040ADDS R0,R0,#W%/2
 2050RSBGES R1,R1,#H%/2-1
 2060LDMLTFD R13!,{PC}
 2070CMP R0,#W%
 2080CMPLT R1,#H%
 2090LDMGEFD R13!,{PC}
 2100ADD R4,R10,R1,ASL#LI%
 2110ADD R4,R4,R1,ASL#LI%-2
 2120RSB R1,R11,#maxit%+(VC%+3)-4
 2130ADD R2,R2,R2,ASR#1
 2140MOV R2,R2,ASR R1
 2150RSBS R2,R2,#15
 2160MOVLT R2,#0
 2170MOV R3,#&F
 2180TST R0,#1
 2190MOVNE R2,R2,LSL#4
 2200MOVNE R3,R3,LSL#4
 2210LDRB R1,[R4,R0,ASR#1]
 2220BIC R1,R1,R3
 2230ORR R1,R1,R2
 2240STRB R1,[R4,R0,ASR#1]
 2250LDMFD R13!,{PC}
 2260:
 2270]:NEXT
 2280ENDPROC

�9
#VC%=16:threshold%=180:maxit%=12
!MC%=VC%+�(�(threshold%)/�(2))
(	�V%64
2;!V%=4:V%!4=5:V%!8=6:V%!12=10:V%!16=11:V%!20=12:V%!24=-1
<!ș"OS_ReadVduVariables",V%,V%
F1�V%!12<>2��255,"16 colour modes only, please"
PȎV%!8�
Z�160:LI%=7
d�320:LI%=8
n�640:LI%=9
x6:�255,"640 or 1280 pixel width modes only please"
��
�*EX%=!V%:EY%=V%!4:W%=V%!16+1:H%=V%!20+1
�,xclip%=(threshold%+2)*(W%/2<<EX%)/1024+2
�,yclip%=(threshold%+2)*(H%/2<<EY%)/1024+2
�'�T%=0�15:�15-T%,T%<<4,T%<<4,T%<<4:�
��code%4096
�
�assemble
�4XX=1:XY=0:XZ=0:YX=0:YY=1:YZ=0:ZX=0:ZY=0:ZZ=1:D=4
�)NT%=�:�:DT%=�-NT%:NT%+=DT%:DT=DT%/100
�ȗX%,Y%,Z%:ȗ�640,512
�!A=(X%-640)/1024:C=�(A):S=�(A)
�!O=XZ:XZ=XZ*C+XX*S:XX=XX*C-O*S
�!O=YZ:YZ=YZ*C+YX*S:YX=YX*C-O*S
!O=ZZ:ZZ=ZZ*C+ZX*S:ZX=ZX*C-O*S
!A=(Y%-512)/1024:C=�(A):S=�(A)
!O=XZ:XZ=XZ*C+XY*S:XY=XY*C-O*S
"!O=YZ:YZ=YZ*C+YY*S:YY=YY*C-O*S
,!O=ZZ:ZZ=ZZ*C+ZY*S:ZY=ZY*C-O*S
6�Z%=4�D-=DT ��Z%=1�D+=DT
@Bview%!00=XX*(1<<VC%):view%!04=XY*(1<<VC%):view%!08=XZ*(1<<VC%)
JBview%!12=YX*(1<<VC%):view%!16=YY*(1<<VC%):view%!20=YZ*(1<<VC%)
TBview%!24=ZX*(1<<VC%):view%!28=ZY*(1<<VC%):view%!32=ZZ*(1<<VC%)
^-view%!36=0:view%!40=0:view%!44=D*(1<<VC%)
h�frame%
r�0
|:
�:
���assemble
��T%=0�2�2:P%=code%
�[OPT T%
�:
�.vduvars%:EQUD 148:EQUD -1
�.scraddr%:EQUD -1
�.bank%:EQUD 1
�:
�
.view%
�(EQUD 1<<VC%:EQUD 0:EQUD 0:; X-Vector
�(EQUD 0:EQUD 1<<VC%:EQUD 0:; Y-Vector
�(EQUD 0:EQUD 0:EQUD 1<<VC%:; Z-Vector
&EQUD 0:EQUD 0:EQUD 4<<VC%:; Centre
:

.corners%
&EQUD -1:EQUD -1:EQUD -1
0EQUD -1:EQUD -1:EQUD -1
:EQUD -1:EQUD -1:EQUD -1
DEQUD -1:EQUD -1:EQUD -1
N:
X.frame%
bSTMFD R13!,{R14}
lLDR R1,bank%
v
CMP R1,#1
��Q R1,#2
�MOVNE R1,#1
�STR R1,bank%
�MOV R0,#112
�SWI "OS_Byte"
�ADR R0,vduvars%
�ADR R1,scraddr%
�SWI "OS_ReadVduVariables"
�MOV R0,#19
�SWI "OS_Byte"
�SWI &10C
�; Generate corners
�ADR R0,view%
 LDMIA R0,{R0-R2,R3-R5,R6-R8}
ADR R9,corners%
ADD R10,R0,R3
 ADD R10,R10,R6
*ADD R11,R1,R4
4ADD R11,R11,R7
>ADD R12,R2,R5
HADD R12,R12,R8
RSTMIA R9!,{R10-R12}
\SUB R10,R0,R3
fSUB R10,R10,R6
pSUB R11,R1,R4
zSUB R11,R11,R7
�SUB R12,R2,R5
�SUB R12,R12,R8
�STMIA R9!,{R10-R12}
�SUB R10,R3,R6
�SUB R10,R10,R0
�SUB R11,R4,R7
�SUB R11,R11,R1
�SUB R12,R5,R8
�SUB R12,R12,R2
�STMIA R9!,{R10-R12}
�SUB R10,R6,R0
�SUB R10,R10,R3
�SUB R11,R7,R1
SUB R11,R11,R4
SUB R12,R8,R2
SUB R12,R12,R5
$STMIA R9!,{R10-R12}
.; Sort them
8ADR R0,corners%
B
MOV R2,#3
L.oloop%
V
MOV R1,R0
`LDMIA R1!,{R4-R6}
j
MOV R3,R2
t.iloop%
~LDMIA R1,{R7-R9}
�
CMP R6,R9
�STMLTDB R1,{R7-R9}
�STMGEDB R1,{R4-R6}
�MOVGE R4,R7
�MOVGE R5,R8
�MOVGE R6,R9
�ADD R1,R1,#12
�SUBS R3,R3,#1
�STMDB R1,{R4-R6}
�BGT iloop%
�SUBS R2,R2,#1
�BGT oloop%
; Call the recursive tree

ADR R0,view%+36
LDMIA R0,{R0-R2}
LDR R10,scraddr%
(MOV R11,#maxit%
2BL tree%
<MOV R0,#113
FLDR R1,bank%
PSWI "OS_Byte"
ZLDMFD R13!,{PC}
d:
n
.tree%
xSTMFD R13!,{R14}
�CMP R2,#threshold%<<VC%
�
BGE plot%
�; Subdivide
�CMP R11,#0
�LDMLEFD R13!,{PC}
�ADR R3,corners%+0
�LDMIA R3,{R3-R5}
�
CMN R2,R5
�CMNGT R0,#xclip%<<VC%
�CMNGT R1,#yclip%<<VC%
�LDMLEFD R13!,{PC}
�CMP R0,#xclip%<<VC%
�CMPLT R1,#yclip%<<VC%
LDMGEFD R13!,{PC}
SUB R11,R11,#1
STMFD R13!,{R0-R2}
"ADD R0,R3,R0,ASL#1
,ADD R1,R4,R1,ASL#1
6ADD R2,R5,R2,ASL#1
@BL tree%
JLDMFD R13,{R0-R2}
TADR R3,corners%+12
^LDMIA R3,{R3-R5}
hADD R0,R3,R0,ASL#1
rADD R1,R4,R1,ASL#1
|ADD R2,R5,R2,ASL#1
�BL tree%
�LDMFD R13,{R0-R2}
�ADR R3,corners%+24
�LDMIA R3,{R3-R5}
�ADD R0,R3,R0,ASL#1
�ADD R1,R4,R1,ASL#1
�ADD R2,R5,R2,ASL#1
�BL tree%
�LDMFD R13!,{R0-R2}
�ADR R3,corners%+36
�LDMIA R3,{R3-R5}
�ADD R0,R3,R0,ASL#1
�ADD R1,R4,R1,ASL#1
ADD R2,R5,R2,ASL#1
BL tree%
ADD R11,R11,#1
&LDMFD R13!,{PC}
0:
:
.plot%
DMOV R3,#1<<MC%
N
MOV R4,#0
XSUBS R3,R3,R2
bADDLT R3,R3,R2
lADDGE R4,R4,#1<<8
v]:�U%=7�1�-1:[OPT T%
�RSBS R3,R2,R3,ASL#1
�ADDLT R3,R3,R2
�ADDGE R4,R4,#1<<U%
�]:�:[OPT T%
�RSBS R3,R2,R3,ASL#1
�ADDGE R4,R4,#1
�MOV R0,R0,ASR#MC%-9
�MOV R1,R1,ASR#MC%-9
�MUL R3,R0,R4
�MOV R0,R3,ASR#8+9-10+EX%
�MUL R3,R1,R4
�MOV R1,R3,ASR#8+9-10+EY%
�ADDS R0,R0,#W%/2
RSBGES R1,R1,#H%/2-1
LDMLTFD R13!,{PC}
CMP R0,#W%
 CMPLT R1,#H%
*LDMGEFD R13!,{PC}
4ADD R4,R10,R1,ASL#LI%
>ADD R4,R4,R1,ASL#LI%-2
H RSB R1,R11,#maxit%+(VC%+3)-4
RADD R2,R2,R2,ASR#1
\MOV R2,R2,ASR R1
fRSBS R2,R2,#15
pMOVLT R2,#0
zMOV R3,#&F
�
TST R0,#1
�MOVNE R2,R2,LSL#4
�MOVNE R3,R3,LSL#4
�LDRB R1,[R4,R0,ASR#1]
�BIC R1,R1,R3
��R R1,R1,R2
�STRB R1,[R4,R0,ASR#1]
�LDMFD R13!,{PC}
�:
�]:�
��
�
00000000  0d 00 0a 06 eb 39 0d 00  14 23 56 43 25 3d 31 36  |.....9...#VC%=16|
00000010  3a 74 68 72 65 73 68 6f  6c 64 25 3d 31 38 30 3a  |:threshold%=180:|
00000020  6d 61 78 69 74 25 3d 31  32 0d 00 1e 21 4d 43 25  |maxit%=12...!MC%|
00000030  3d 56 43 25 2b a8 28 aa  28 74 68 72 65 73 68 6f  |=VC%+.(.(thresho|
00000040  6c 64 25 29 2f aa 28 32  29 29 0d 00 28 09 de 56  |ld%)/.(2))..(..V|
00000050  25 36 34 0d 00 32 3b 21  56 25 3d 34 3a 56 25 21  |%64..2;!V%=4:V%!|
00000060  34 3d 35 3a 56 25 21 38  3d 36 3a 56 25 21 31 32  |4=5:V%!8=6:V%!12|
00000070  3d 31 30 3a 56 25 21 31  36 3d 31 31 3a 56 25 21  |=10:V%!16=11:V%!|
00000080  32 30 3d 31 32 3a 56 25  21 32 34 3d 2d 31 0d 00  |20=12:V%!24=-1..|
00000090  3c 21 c8 99 22 4f 53 5f  52 65 61 64 56 64 75 56  |<!.."OS_ReadVduV|
000000a0  61 72 69 61 62 6c 65 73  22 2c 56 25 2c 56 25 0d  |ariables",V%,V%.|
000000b0  00 46 31 e7 56 25 21 31  32 3c 3e 32 8c 85 32 35  |.F1.V%!12<>2..25|
000000c0  35 2c 22 31 36 20 63 6f  6c 6f 75 72 20 6d 6f 64  |5,"16 colour mod|
000000d0  65 73 20 6f 6e 6c 79 2c  20 70 6c 65 61 73 65 22  |es only, please"|
000000e0  0d 00 50 0b c8 8e 56 25  21 38 ca 0d 00 5a 0e c9  |..P...V%!8...Z..|
000000f0  31 36 30 3a 4c 49 25 3d  37 0d 00 64 0e c9 33 32  |160:LI%=7..d..32|
00000100  30 3a 4c 49 25 3d 38 0d  00 6e 0e c9 36 34 30 3a  |0:LI%=8..n..640:|
00000110  4c 49 25 3d 39 0d 00 78  36 7f 3a 85 32 35 35 2c  |LI%=9..x6.:.255,|
00000120  22 36 34 30 20 6f 72 20  31 32 38 30 20 70 69 78  |"640 or 1280 pix|
00000130  65 6c 20 77 69 64 74 68  20 6d 6f 64 65 73 20 6f  |el width modes o|
00000140  6e 6c 79 20 70 6c 65 61  73 65 22 0d 00 82 05 cb  |nly please".....|
00000150  0d 00 8c 2a 45 58 25 3d  21 56 25 3a 45 59 25 3d  |...*EX%=!V%:EY%=|
00000160  56 25 21 34 3a 57 25 3d  56 25 21 31 36 2b 31 3a  |V%!4:W%=V%!16+1:|
00000170  48 25 3d 56 25 21 32 30  2b 31 0d 00 96 2c 78 63  |H%=V%!20+1...,xc|
00000180  6c 69 70 25 3d 28 74 68  72 65 73 68 6f 6c 64 25  |lip%=(threshold%|
00000190  2b 32 29 2a 28 57 25 2f  32 3c 3c 45 58 25 29 2f  |+2)*(W%/2<<EX%)/|
000001a0  31 30 32 34 2b 32 0d 00  a0 2c 79 63 6c 69 70 25  |1024+2...,yclip%|
000001b0  3d 28 74 68 72 65 73 68  6f 6c 64 25 2b 32 29 2a  |=(threshold%+2)*|
000001c0  28 48 25 2f 32 3c 3c 45  59 25 29 2f 31 30 32 34  |(H%/2<<EY%)/1024|
000001d0  2b 32 0d 00 aa 27 e3 54  25 3d 30 b8 31 35 3a fb  |+2...'.T%=0.15:.|
000001e0  31 35 2d 54 25 2c 54 25  3c 3c 34 2c 54 25 3c 3c  |15-T%,T%<<4,T%<<|
000001f0  34 2c 54 25 3c 3c 34 3a  ed 0d 00 b4 0e de 63 6f  |4,T%<<4:......co|
00000200  64 65 25 34 30 39 36 0d  00 be 0d f2 61 73 73 65  |de%4096.....asse|
00000210  6d 62 6c 65 0d 00 c8 34  58 58 3d 31 3a 58 59 3d  |mble...4XX=1:XY=|
00000220  30 3a 58 5a 3d 30 3a 59  58 3d 30 3a 59 59 3d 31  |0:XZ=0:YX=0:YY=1|
00000230  3a 59 5a 3d 30 3a 5a 58  3d 30 3a 5a 59 3d 30 3a  |:YZ=0:ZX=0:ZY=0:|
00000240  5a 5a 3d 31 3a 44 3d 34  0d 00 d2 29 4e 54 25 3d  |ZZ=1:D=4...)NT%=|
00000250  91 3a f5 3a 44 54 25 3d  91 2d 4e 54 25 3a 4e 54  |.:.:DT%=.-NT%:NT|
00000260  25 2b 3d 44 54 25 3a 44  54 3d 44 54 25 2f 31 30  |%+=DT%:DT=DT%/10|
00000270  30 0d 00 dc 19 c8 97 58  25 2c 59 25 2c 5a 25 3a  |0......X%,Y%,Z%:|
00000280  c8 97 b8 36 34 30 2c 35  31 32 0d 00 e6 21 41 3d  |...640,512...!A=|
00000290  28 58 25 2d 36 34 30 29  2f 31 30 32 34 3a 43 3d  |(X%-640)/1024:C=|
000002a0  9b 28 41 29 3a 53 3d b5  28 41 29 0d 00 f0 21 4f  |.(A):S=.(A)...!O|
000002b0  3d 58 5a 3a 58 5a 3d 58  5a 2a 43 2b 58 58 2a 53  |=XZ:XZ=XZ*C+XX*S|
000002c0  3a 58 58 3d 58 58 2a 43  2d 4f 2a 53 0d 00 fa 21  |:XX=XX*C-O*S...!|
000002d0  4f 3d 59 5a 3a 59 5a 3d  59 5a 2a 43 2b 59 58 2a  |O=YZ:YZ=YZ*C+YX*|
000002e0  53 3a 59 58 3d 59 58 2a  43 2d 4f 2a 53 0d 01 04  |S:YX=YX*C-O*S...|
000002f0  21 4f 3d 5a 5a 3a 5a 5a  3d 5a 5a 2a 43 2b 5a 58  |!O=ZZ:ZZ=ZZ*C+ZX|
00000300  2a 53 3a 5a 58 3d 5a 58  2a 43 2d 4f 2a 53 0d 01  |*S:ZX=ZX*C-O*S..|
00000310  0e 21 41 3d 28 59 25 2d  35 31 32 29 2f 31 30 32  |.!A=(Y%-512)/102|
00000320  34 3a 43 3d 9b 28 41 29  3a 53 3d b5 28 41 29 0d  |4:C=.(A):S=.(A).|
00000330  01 18 21 4f 3d 58 5a 3a  58 5a 3d 58 5a 2a 43 2b  |..!O=XZ:XZ=XZ*C+|
00000340  58 59 2a 53 3a 58 59 3d  58 59 2a 43 2d 4f 2a 53  |XY*S:XY=XY*C-O*S|
00000350  0d 01 22 21 4f 3d 59 5a  3a 59 5a 3d 59 5a 2a 43  |.."!O=YZ:YZ=YZ*C|
00000360  2b 59 59 2a 53 3a 59 59  3d 59 59 2a 43 2d 4f 2a  |+YY*S:YY=YY*C-O*|
00000370  53 0d 01 2c 21 4f 3d 5a  5a 3a 5a 5a 3d 5a 5a 2a  |S..,!O=ZZ:ZZ=ZZ*|
00000380  43 2b 5a 59 2a 53 3a 5a  59 3d 5a 59 2a 43 2d 4f  |C+ZY*S:ZY=ZY*C-O|
00000390  2a 53 0d 01 36 1c e7 5a  25 3d 34 8c 44 2d 3d 44  |*S..6..Z%=4.D-=D|
000003a0  54 20 8b e7 5a 25 3d 31  8c 44 2b 3d 44 54 0d 01  |T ..Z%=1.D+=DT..|
000003b0  40 42 76 69 65 77 25 21  30 30 3d 58 58 2a 28 31  |@Bview%!00=XX*(1|
000003c0  3c 3c 56 43 25 29 3a 76  69 65 77 25 21 30 34 3d  |<<VC%):view%!04=|
000003d0  58 59 2a 28 31 3c 3c 56  43 25 29 3a 76 69 65 77  |XY*(1<<VC%):view|
000003e0  25 21 30 38 3d 58 5a 2a  28 31 3c 3c 56 43 25 29  |%!08=XZ*(1<<VC%)|
000003f0  0d 01 4a 42 76 69 65 77  25 21 31 32 3d 59 58 2a  |..JBview%!12=YX*|
00000400  28 31 3c 3c 56 43 25 29  3a 76 69 65 77 25 21 31  |(1<<VC%):view%!1|
00000410  36 3d 59 59 2a 28 31 3c  3c 56 43 25 29 3a 76 69  |6=YY*(1<<VC%):vi|
00000420  65 77 25 21 32 30 3d 59  5a 2a 28 31 3c 3c 56 43  |ew%!20=YZ*(1<<VC|
00000430  25 29 0d 01 54 42 76 69  65 77 25 21 32 34 3d 5a  |%)..TBview%!24=Z|
00000440  58 2a 28 31 3c 3c 56 43  25 29 3a 76 69 65 77 25  |X*(1<<VC%):view%|
00000450  21 32 38 3d 5a 59 2a 28  31 3c 3c 56 43 25 29 3a  |!28=ZY*(1<<VC%):|
00000460  76 69 65 77 25 21 33 32  3d 5a 5a 2a 28 31 3c 3c  |view%!32=ZZ*(1<<|
00000470  56 43 25 29 0d 01 5e 2d  76 69 65 77 25 21 33 36  |VC%)..^-view%!36|
00000480  3d 30 3a 76 69 65 77 25  21 34 30 3d 30 3a 76 69  |=0:view%!40=0:vi|
00000490  65 77 25 21 34 34 3d 44  2a 28 31 3c 3c 56 43 25  |ew%!44=D*(1<<VC%|
000004a0  29 0d 01 68 0b d6 66 72  61 6d 65 25 0d 01 72 06  |)..h..frame%..r.|
000004b0  fd 30 0d 01 7c 05 3a 0d  01 86 05 3a 0d 01 90 0e  |.0..|.:....:....|
000004c0  dd f2 61 73 73 65 6d 62  6c 65 0d 01 9a 16 e3 54  |..assemble.....T|
000004d0  25 3d 30 b8 32 88 32 3a  50 25 3d 63 6f 64 65 25  |%=0.2.2:P%=code%|
000004e0  0d 01 a4 0b 5b 4f 50 54  20 54 25 0d 01 ae 05 3a  |....[OPT T%....:|
000004f0  0d 01 b8 1e 2e 76 64 75  76 61 72 73 25 3a 45 51  |.....vduvars%:EQ|
00000500  55 44 20 31 34 38 3a 45  51 55 44 20 2d 31 0d 01  |UD 148:EQUD -1..|
00000510  c2 15 2e 73 63 72 61 64  64 72 25 3a 45 51 55 44  |...scraddr%:EQUD|
00000520  20 2d 31 0d 01 cc 11 2e  62 61 6e 6b 25 3a 45 51  | -1.....bank%:EQ|
00000530  55 44 20 31 0d 01 d6 05  3a 0d 01 e0 0a 2e 76 69  |UD 1....:.....vi|
00000540  65 77 25 0d 01 ea 28 45  51 55 44 20 31 3c 3c 56  |ew%...(EQUD 1<<V|
00000550  43 25 3a 45 51 55 44 20  30 3a 45 51 55 44 20 30  |C%:EQUD 0:EQUD 0|
00000560  3a 3b 20 58 2d 56 65 63  74 6f 72 0d 01 f4 28 45  |:; X-Vector...(E|
00000570  51 55 44 20 30 3a 45 51  55 44 20 31 3c 3c 56 43  |QUD 0:EQUD 1<<VC|
00000580  25 3a 45 51 55 44 20 30  3a 3b 20 59 2d 56 65 63  |%:EQUD 0:; Y-Vec|
00000590  74 6f 72 0d 01 fe 28 45  51 55 44 20 30 3a 45 51  |tor...(EQUD 0:EQ|
000005a0  55 44 20 30 3a 45 51 55  44 20 31 3c 3c 56 43 25  |UD 0:EQUD 1<<VC%|
000005b0  3a 3b 20 5a 2d 56 65 63  74 6f 72 0d 02 08 26 45  |:; Z-Vector...&E|
000005c0  51 55 44 20 30 3a 45 51  55 44 20 30 3a 45 51 55  |QUD 0:EQUD 0:EQU|
000005d0  44 20 34 3c 3c 56 43 25  3a 3b 20 43 65 6e 74 72  |D 4<<VC%:; Centr|
000005e0  65 0d 02 12 05 3a 0d 02  1c 0d 2e 63 6f 72 6e 65  |e....:.....corne|
000005f0  72 73 25 0d 02 26 1b 45  51 55 44 20 2d 31 3a 45  |rs%..&.EQUD -1:E|
00000600  51 55 44 20 2d 31 3a 45  51 55 44 20 2d 31 0d 02  |QUD -1:EQUD -1..|
00000610  30 1b 45 51 55 44 20 2d  31 3a 45 51 55 44 20 2d  |0.EQUD -1:EQUD -|
00000620  31 3a 45 51 55 44 20 2d  31 0d 02 3a 1b 45 51 55  |1:EQUD -1..:.EQU|
00000630  44 20 2d 31 3a 45 51 55  44 20 2d 31 3a 45 51 55  |D -1:EQUD -1:EQU|
00000640  44 20 2d 31 0d 02 44 1b  45 51 55 44 20 2d 31 3a  |D -1..D.EQUD -1:|
00000650  45 51 55 44 20 2d 31 3a  45 51 55 44 20 2d 31 0d  |EQUD -1:EQUD -1.|
00000660  02 4e 05 3a 0d 02 58 0b  2e 66 72 61 6d 65 25 0d  |.N.:..X..frame%.|
00000670  02 62 14 53 54 4d 46 44  20 52 31 33 21 2c 7b 52  |.b.STMFD R13!,{R|
00000680  31 34 7d 0d 02 6c 10 4c  44 52 20 52 31 2c 62 61  |14}..l.LDR R1,ba|
00000690  6e 6b 25 0d 02 76 0d 43  4d 50 20 52 31 2c 23 31  |nk%..v.CMP R1,#1|
000006a0  0d 02 80 0c ec 51 20 52  31 2c 23 32 0d 02 8a 0f  |.....Q R1,#2....|
000006b0  4d 4f 56 4e 45 20 52 31  2c 23 31 0d 02 94 10 53  |MOVNE R1,#1....S|
000006c0  54 52 20 52 31 2c 62 61  6e 6b 25 0d 02 9e 0f 4d  |TR R1,bank%....M|
000006d0  4f 56 20 52 30 2c 23 31  31 32 0d 02 a8 11 53 57  |OV R0,#112....SW|
000006e0  49 20 22 4f 53 5f 42 79  74 65 22 0d 02 b2 13 41  |I "OS_Byte"....A|
000006f0  44 52 20 52 30 2c 76 64  75 76 61 72 73 25 0d 02  |DR R0,vduvars%..|
00000700  bc 13 41 44 52 20 52 31  2c 73 63 72 61 64 64 72  |..ADR R1,scraddr|
00000710  25 0d 02 c6 1d 53 57 49  20 22 4f 53 5f 52 65 61  |%....SWI "OS_Rea|
00000720  64 56 64 75 56 61 72 69  61 62 6c 65 73 22 0d 02  |dVduVariables"..|
00000730  d0 0e 4d 4f 56 20 52 30  2c 23 31 39 0d 02 da 11  |..MOV R0,#19....|
00000740  53 57 49 20 22 4f 53 5f  42 79 74 65 22 0d 02 e4  |SWI "OS_Byte"...|
00000750  0c 53 57 49 20 26 31 30  43 0d 02 ee 16 3b 20 47  |.SWI &10C....; G|
00000760  65 6e 65 72 61 74 65 20  63 6f 72 6e 65 72 73 0d  |enerate corners.|
00000770  02 f8 10 41 44 52 20 52  30 2c 76 69 65 77 25 0d  |...ADR R0,view%.|
00000780  03 02 20 4c 44 4d 49 41  20 52 30 2c 7b 52 30 2d  |.. LDMIA R0,{R0-|
00000790  52 32 2c 52 33 2d 52 35  2c 52 36 2d 52 38 7d 0d  |R2,R3-R5,R6-R8}.|
000007a0  03 0c 13 41 44 52 20 52  39 2c 63 6f 72 6e 65 72  |...ADR R9,corner|
000007b0  73 25 0d 03 16 11 41 44  44 20 52 31 30 2c 52 30  |s%....ADD R10,R0|
000007c0  2c 52 33 0d 03 20 12 41  44 44 20 52 31 30 2c 52  |,R3.. .ADD R10,R|
000007d0  31 30 2c 52 36 0d 03 2a  11 41 44 44 20 52 31 31  |10,R6..*.ADD R11|
000007e0  2c 52 31 2c 52 34 0d 03  34 12 41 44 44 20 52 31  |,R1,R4..4.ADD R1|
000007f0  31 2c 52 31 31 2c 52 37  0d 03 3e 11 41 44 44 20  |1,R11,R7..>.ADD |
00000800  52 31 32 2c 52 32 2c 52  35 0d 03 48 12 41 44 44  |R12,R2,R5..H.ADD|
00000810  20 52 31 32 2c 52 31 32  2c 52 38 0d 03 52 17 53  | R12,R12,R8..R.S|
00000820  54 4d 49 41 20 52 39 21  2c 7b 52 31 30 2d 52 31  |TMIA R9!,{R10-R1|
00000830  32 7d 0d 03 5c 11 53 55  42 20 52 31 30 2c 52 30  |2}..\.SUB R10,R0|
00000840  2c 52 33 0d 03 66 12 53  55 42 20 52 31 30 2c 52  |,R3..f.SUB R10,R|
00000850  31 30 2c 52 36 0d 03 70  11 53 55 42 20 52 31 31  |10,R6..p.SUB R11|
00000860  2c 52 31 2c 52 34 0d 03  7a 12 53 55 42 20 52 31  |,R1,R4..z.SUB R1|
00000870  31 2c 52 31 31 2c 52 37  0d 03 84 11 53 55 42 20  |1,R11,R7....SUB |
00000880  52 31 32 2c 52 32 2c 52  35 0d 03 8e 12 53 55 42  |R12,R2,R5....SUB|
00000890  20 52 31 32 2c 52 31 32  2c 52 38 0d 03 98 17 53  | R12,R12,R8....S|
000008a0  54 4d 49 41 20 52 39 21  2c 7b 52 31 30 2d 52 31  |TMIA R9!,{R10-R1|
000008b0  32 7d 0d 03 a2 11 53 55  42 20 52 31 30 2c 52 33  |2}....SUB R10,R3|
000008c0  2c 52 36 0d 03 ac 12 53  55 42 20 52 31 30 2c 52  |,R6....SUB R10,R|
000008d0  31 30 2c 52 30 0d 03 b6  11 53 55 42 20 52 31 31  |10,R0....SUB R11|
000008e0  2c 52 34 2c 52 37 0d 03  c0 12 53 55 42 20 52 31  |,R4,R7....SUB R1|
000008f0  31 2c 52 31 31 2c 52 31  0d 03 ca 11 53 55 42 20  |1,R11,R1....SUB |
00000900  52 31 32 2c 52 35 2c 52  38 0d 03 d4 12 53 55 42  |R12,R5,R8....SUB|
00000910  20 52 31 32 2c 52 31 32  2c 52 32 0d 03 de 17 53  | R12,R12,R2....S|
00000920  54 4d 49 41 20 52 39 21  2c 7b 52 31 30 2d 52 31  |TMIA R9!,{R10-R1|
00000930  32 7d 0d 03 e8 11 53 55  42 20 52 31 30 2c 52 36  |2}....SUB R10,R6|
00000940  2c 52 30 0d 03 f2 12 53  55 42 20 52 31 30 2c 52  |,R0....SUB R10,R|
00000950  31 30 2c 52 33 0d 03 fc  11 53 55 42 20 52 31 31  |10,R3....SUB R11|
00000960  2c 52 37 2c 52 31 0d 04  06 12 53 55 42 20 52 31  |,R7,R1....SUB R1|
00000970  31 2c 52 31 31 2c 52 34  0d 04 10 11 53 55 42 20  |1,R11,R4....SUB |
00000980  52 31 32 2c 52 38 2c 52  32 0d 04 1a 12 53 55 42  |R12,R8,R2....SUB|
00000990  20 52 31 32 2c 52 31 32  2c 52 35 0d 04 24 17 53  | R12,R12,R5..$.S|
000009a0  54 4d 49 41 20 52 39 21  2c 7b 52 31 30 2d 52 31  |TMIA R9!,{R10-R1|
000009b0  32 7d 0d 04 2e 0f 3b 20  53 6f 72 74 20 74 68 65  |2}....; Sort the|
000009c0  6d 0d 04 38 13 41 44 52  20 52 30 2c 63 6f 72 6e  |m..8.ADR R0,corn|
000009d0  65 72 73 25 0d 04 42 0d  4d 4f 56 20 52 32 2c 23  |ers%..B.MOV R2,#|
000009e0  33 0d 04 4c 0b 2e 6f 6c  6f 6f 70 25 0d 04 56 0d  |3..L..oloop%..V.|
000009f0  4d 4f 56 20 52 31 2c 52  30 0d 04 60 15 4c 44 4d  |MOV R1,R0..`.LDM|
00000a00  49 41 20 52 31 21 2c 7b  52 34 2d 52 36 7d 0d 04  |IA R1!,{R4-R6}..|
00000a10  6a 0d 4d 4f 56 20 52 33  2c 52 32 0d 04 74 0b 2e  |j.MOV R3,R2..t..|
00000a20  69 6c 6f 6f 70 25 0d 04  7e 14 4c 44 4d 49 41 20  |iloop%..~.LDMIA |
00000a30  52 31 2c 7b 52 37 2d 52  39 7d 0d 04 88 0d 43 4d  |R1,{R7-R9}....CM|
00000a40  50 20 52 36 2c 52 39 0d  04 92 16 53 54 4d 4c 54  |P R6,R9....STMLT|
00000a50  44 42 20 52 31 2c 7b 52  37 2d 52 39 7d 0d 04 9c  |DB R1,{R7-R9}...|
00000a60  16 53 54 4d 47 45 44 42  20 52 31 2c 7b 52 34 2d  |.STMGEDB R1,{R4-|
00000a70  52 36 7d 0d 04 a6 0f 4d  4f 56 47 45 20 52 34 2c  |R6}....MOVGE R4,|
00000a80  52 37 0d 04 b0 0f 4d 4f  56 47 45 20 52 35 2c 52  |R7....MOVGE R5,R|
00000a90  38 0d 04 ba 0f 4d 4f 56  47 45 20 52 36 2c 52 39  |8....MOVGE R6,R9|
00000aa0  0d 04 c4 11 41 44 44 20  52 31 2c 52 31 2c 23 31  |....ADD R1,R1,#1|
00000ab0  32 0d 04 ce 11 53 55 42  53 20 52 33 2c 52 33 2c  |2....SUBS R3,R3,|
00000ac0  23 31 0d 04 d8 14 53 54  4d 44 42 20 52 31 2c 7b  |#1....STMDB R1,{|
00000ad0  52 34 2d 52 36 7d 0d 04  e2 0e 42 47 54 20 69 6c  |R4-R6}....BGT il|
00000ae0  6f 6f 70 25 0d 04 ec 11  53 55 42 53 20 52 32 2c  |oop%....SUBS R2,|
00000af0  52 32 2c 23 31 0d 04 f6  0e 42 47 54 20 6f 6c 6f  |R2,#1....BGT olo|
00000b00  6f 70 25 0d 05 00 1d 3b  20 43 61 6c 6c 20 74 68  |op%....; Call th|
00000b10  65 20 72 65 63 75 72 73  69 76 65 20 74 72 65 65  |e recursive tree|
00000b20  0d 05 0a 13 41 44 52 20  52 30 2c 76 69 65 77 25  |....ADR R0,view%|
00000b30  2b 33 36 0d 05 14 14 4c  44 4d 49 41 20 52 30 2c  |+36....LDMIA R0,|
00000b40  7b 52 30 2d 52 32 7d 0d  05 1e 14 4c 44 52 20 52  |{R0-R2}....LDR R|
00000b50  31 30 2c 73 63 72 61 64  64 72 25 0d 05 28 13 4d  |10,scraddr%..(.M|
00000b60  4f 56 20 52 31 31 2c 23  6d 61 78 69 74 25 0d 05  |OV R11,#maxit%..|
00000b70  32 0c 42 4c 20 74 72 65  65 25 0d 05 3c 0f 4d 4f  |2.BL tree%..<.MO|
00000b80  56 20 52 30 2c 23 31 31  33 0d 05 46 10 4c 44 52  |V R0,#113..F.LDR|
00000b90  20 52 31 2c 62 61 6e 6b  25 0d 05 50 11 53 57 49  | R1,bank%..P.SWI|
00000ba0  20 22 4f 53 5f 42 79 74  65 22 0d 05 5a 13 4c 44  | "OS_Byte"..Z.LD|
00000bb0  4d 46 44 20 52 31 33 21  2c 7b 50 43 7d 0d 05 64  |MFD R13!,{PC}..d|
00000bc0  05 3a 0d 05 6e 0a 2e 74  72 65 65 25 0d 05 78 14  |.:..n..tree%..x.|
00000bd0  53 54 4d 46 44 20 52 31  33 21 2c 7b 52 31 34 7d  |STMFD R13!,{R14}|
00000be0  0d 05 82 1b 43 4d 50 20  52 32 2c 23 74 68 72 65  |....CMP R2,#thre|
00000bf0  73 68 6f 6c 64 25 3c 3c  56 43 25 0d 05 8c 0d 42  |shold%<<VC%....B|
00000c00  47 45 20 70 6c 6f 74 25  0d 05 96 0f 3b 20 53 75  |GE plot%....; Su|
00000c10  62 64 69 76 69 64 65 0d  05 a0 0e 43 4d 50 20 52  |bdivide....CMP R|
00000c20  31 31 2c 23 30 0d 05 aa  15 4c 44 4d 4c 45 46 44  |11,#0....LDMLEFD|
00000c30  20 52 31 33 21 2c 7b 50  43 7d 0d 05 b4 15 41 44  | R13!,{PC}....AD|
00000c40  52 20 52 33 2c 63 6f 72  6e 65 72 73 25 2b 30 0d  |R R3,corners%+0.|
00000c50  05 be 14 4c 44 4d 49 41  20 52 33 2c 7b 52 33 2d  |...LDMIA R3,{R3-|
00000c60  52 35 7d 0d 05 c8 0d 43  4d 4e 20 52 32 2c 52 35  |R5}....CMN R2,R5|
00000c70  0d 05 d2 19 43 4d 4e 47  54 20 52 30 2c 23 78 63  |....CMNGT R0,#xc|
00000c80  6c 69 70 25 3c 3c 56 43  25 0d 05 dc 19 43 4d 4e  |lip%<<VC%....CMN|
00000c90  47 54 20 52 31 2c 23 79  63 6c 69 70 25 3c 3c 56  |GT R1,#yclip%<<V|
00000ca0  43 25 0d 05 e6 15 4c 44  4d 4c 45 46 44 20 52 31  |C%....LDMLEFD R1|
00000cb0  33 21 2c 7b 50 43 7d 0d  05 f0 17 43 4d 50 20 52  |3!,{PC}....CMP R|
00000cc0  30 2c 23 78 63 6c 69 70  25 3c 3c 56 43 25 0d 05  |0,#xclip%<<VC%..|
00000cd0  fa 19 43 4d 50 4c 54 20  52 31 2c 23 79 63 6c 69  |..CMPLT R1,#ycli|
00000ce0  70 25 3c 3c 56 43 25 0d  06 04 15 4c 44 4d 47 45  |p%<<VC%....LDMGE|
00000cf0  46 44 20 52 31 33 21 2c  7b 50 43 7d 0d 06 0e 12  |FD R13!,{PC}....|
00000d00  53 55 42 20 52 31 31 2c  52 31 31 2c 23 31 0d 06  |SUB R11,R11,#1..|
00000d10  18 16 53 54 4d 46 44 20  52 31 33 21 2c 7b 52 30  |..STMFD R13!,{R0|
00000d20  2d 52 32 7d 0d 06 22 16  41 44 44 20 52 30 2c 52  |-R2}..".ADD R0,R|
00000d30  33 2c 52 30 2c 41 53 4c  23 31 0d 06 2c 16 41 44  |3,R0,ASL#1..,.AD|
00000d40  44 20 52 31 2c 52 34 2c  52 31 2c 41 53 4c 23 31  |D R1,R4,R1,ASL#1|
00000d50  0d 06 36 16 41 44 44 20  52 32 2c 52 35 2c 52 32  |..6.ADD R2,R5,R2|
00000d60  2c 41 53 4c 23 31 0d 06  40 0c 42 4c 20 74 72 65  |,ASL#1..@.BL tre|
00000d70  65 25 0d 06 4a 15 4c 44  4d 46 44 20 52 31 33 2c  |e%..J.LDMFD R13,|
00000d80  7b 52 30 2d 52 32 7d 0d  06 54 16 41 44 52 20 52  |{R0-R2}..T.ADR R|
00000d90  33 2c 63 6f 72 6e 65 72  73 25 2b 31 32 0d 06 5e  |3,corners%+12..^|
00000da0  14 4c 44 4d 49 41 20 52  33 2c 7b 52 33 2d 52 35  |.LDMIA R3,{R3-R5|
00000db0  7d 0d 06 68 16 41 44 44  20 52 30 2c 52 33 2c 52  |}..h.ADD R0,R3,R|
00000dc0  30 2c 41 53 4c 23 31 0d  06 72 16 41 44 44 20 52  |0,ASL#1..r.ADD R|
00000dd0  31 2c 52 34 2c 52 31 2c  41 53 4c 23 31 0d 06 7c  |1,R4,R1,ASL#1..||
00000de0  16 41 44 44 20 52 32 2c  52 35 2c 52 32 2c 41 53  |.ADD R2,R5,R2,AS|
00000df0  4c 23 31 0d 06 86 0c 42  4c 20 74 72 65 65 25 0d  |L#1....BL tree%.|
00000e00  06 90 15 4c 44 4d 46 44  20 52 31 33 2c 7b 52 30  |...LDMFD R13,{R0|
00000e10  2d 52 32 7d 0d 06 9a 16  41 44 52 20 52 33 2c 63  |-R2}....ADR R3,c|
00000e20  6f 72 6e 65 72 73 25 2b  32 34 0d 06 a4 14 4c 44  |orners%+24....LD|
00000e30  4d 49 41 20 52 33 2c 7b  52 33 2d 52 35 7d 0d 06  |MIA R3,{R3-R5}..|
00000e40  ae 16 41 44 44 20 52 30  2c 52 33 2c 52 30 2c 41  |..ADD R0,R3,R0,A|
00000e50  53 4c 23 31 0d 06 b8 16  41 44 44 20 52 31 2c 52  |SL#1....ADD R1,R|
00000e60  34 2c 52 31 2c 41 53 4c  23 31 0d 06 c2 16 41 44  |4,R1,ASL#1....AD|
00000e70  44 20 52 32 2c 52 35 2c  52 32 2c 41 53 4c 23 31  |D R2,R5,R2,ASL#1|
00000e80  0d 06 cc 0c 42 4c 20 74  72 65 65 25 0d 06 d6 16  |....BL tree%....|
00000e90  4c 44 4d 46 44 20 52 31  33 21 2c 7b 52 30 2d 52  |LDMFD R13!,{R0-R|
00000ea0  32 7d 0d 06 e0 16 41 44  52 20 52 33 2c 63 6f 72  |2}....ADR R3,cor|
00000eb0  6e 65 72 73 25 2b 33 36  0d 06 ea 14 4c 44 4d 49  |ners%+36....LDMI|
00000ec0  41 20 52 33 2c 7b 52 33  2d 52 35 7d 0d 06 f4 16  |A R3,{R3-R5}....|
00000ed0  41 44 44 20 52 30 2c 52  33 2c 52 30 2c 41 53 4c  |ADD R0,R3,R0,ASL|
00000ee0  23 31 0d 06 fe 16 41 44  44 20 52 31 2c 52 34 2c  |#1....ADD R1,R4,|
00000ef0  52 31 2c 41 53 4c 23 31  0d 07 08 16 41 44 44 20  |R1,ASL#1....ADD |
00000f00  52 32 2c 52 35 2c 52 32  2c 41 53 4c 23 31 0d 07  |R2,R5,R2,ASL#1..|
00000f10  12 0c 42 4c 20 74 72 65  65 25 0d 07 1c 12 41 44  |..BL tree%....AD|
00000f20  44 20 52 31 31 2c 52 31  31 2c 23 31 0d 07 26 13  |D R11,R11,#1..&.|
00000f30  4c 44 4d 46 44 20 52 31  33 21 2c 7b 50 43 7d 0d  |LDMFD R13!,{PC}.|
00000f40  07 30 05 3a 0d 07 3a 0a  2e 70 6c 6f 74 25 0d 07  |.0.:..:..plot%..|
00000f50  44 12 4d 4f 56 20 52 33  2c 23 31 3c 3c 4d 43 25  |D.MOV R3,#1<<MC%|
00000f60  0d 07 4e 0d 4d 4f 56 20  52 34 2c 23 30 0d 07 58  |..N.MOV R4,#0..X|
00000f70  11 53 55 42 53 20 52 33  2c 52 33 2c 52 32 0d 07  |.SUBS R3,R3,R2..|
00000f80  62 12 41 44 44 4c 54 20  52 33 2c 52 33 2c 52 32  |b.ADDLT R3,R3,R2|
00000f90  0d 07 6c 15 41 44 44 47  45 20 52 34 2c 52 34 2c  |..l.ADDGE R4,R4,|
00000fa0  23 31 3c 3c 38 0d 07 76  18 5d 3a e3 55 25 3d 37  |#1<<8..v.]:.U%=7|
00000fb0  b8 31 88 2d 31 3a 5b 4f  50 54 20 54 25 0d 07 80  |.1.-1:[OPT T%...|
00000fc0  17 52 53 42 53 20 52 33  2c 52 32 2c 52 33 2c 41  |.RSBS R3,R2,R3,A|
00000fd0  53 4c 23 31 0d 07 8a 12  41 44 44 4c 54 20 52 33  |SL#1....ADDLT R3|
00000fe0  2c 52 33 2c 52 32 0d 07  94 16 41 44 44 47 45 20  |,R3,R2....ADDGE |
00000ff0  52 34 2c 52 34 2c 23 31  3c 3c 55 25 0d 07 9e 0f  |R4,R4,#1<<U%....|
00001000  5d 3a ed 3a 5b 4f 50 54  20 54 25 0d 07 a8 17 52  |]:.:[OPT T%....R|
00001010  53 42 53 20 52 33 2c 52  32 2c 52 33 2c 41 53 4c  |SBS R3,R2,R3,ASL|
00001020  23 31 0d 07 b2 12 41 44  44 47 45 20 52 34 2c 52  |#1....ADDGE R4,R|
00001030  34 2c 23 31 0d 07 bc 17  4d 4f 56 20 52 30 2c 52  |4,#1....MOV R0,R|
00001040  30 2c 41 53 52 23 4d 43  25 2d 39 0d 07 c6 17 4d  |0,ASR#MC%-9....M|
00001050  4f 56 20 52 31 2c 52 31  2c 41 53 52 23 4d 43 25  |OV R1,R1,ASR#MC%|
00001060  2d 39 0d 07 d0 10 4d 55  4c 20 52 33 2c 52 30 2c  |-9....MUL R3,R0,|
00001070  52 34 0d 07 da 1c 4d 4f  56 20 52 30 2c 52 33 2c  |R4....MOV R0,R3,|
00001080  41 53 52 23 38 2b 39 2d  31 30 2b 45 58 25 0d 07  |ASR#8+9-10+EX%..|
00001090  e4 10 4d 55 4c 20 52 33  2c 52 31 2c 52 34 0d 07  |..MUL R3,R1,R4..|
000010a0  ee 1c 4d 4f 56 20 52 31  2c 52 33 2c 41 53 52 23  |..MOV R1,R3,ASR#|
000010b0  38 2b 39 2d 31 30 2b 45  59 25 0d 07 f8 14 41 44  |8+9-10+EY%....AD|
000010c0  44 53 20 52 30 2c 52 30  2c 23 57 25 2f 32 0d 08  |DS R0,R0,#W%/2..|
000010d0  02 18 52 53 42 47 45 53  20 52 31 2c 52 31 2c 23  |..RSBGES R1,R1,#|
000010e0  48 25 2f 32 2d 31 0d 08  0c 15 4c 44 4d 4c 54 46  |H%/2-1....LDMLTF|
000010f0  44 20 52 31 33 21 2c 7b  50 43 7d 0d 08 16 0e 43  |D R13!,{PC}....C|
00001100  4d 50 20 52 30 2c 23 57  25 0d 08 20 10 43 4d 50  |MP R0,#W%.. .CMP|
00001110  4c 54 20 52 31 2c 23 48  25 0d 08 2a 15 4c 44 4d  |LT R1,#H%..*.LDM|
00001120  47 45 46 44 20 52 31 33  21 2c 7b 50 43 7d 0d 08  |GEFD R13!,{PC}..|
00001130  34 19 41 44 44 20 52 34  2c 52 31 30 2c 52 31 2c  |4.ADD R4,R10,R1,|
00001140  41 53 4c 23 4c 49 25 0d  08 3e 1a 41 44 44 20 52  |ASL#LI%..>.ADD R|
00001150  34 2c 52 34 2c 52 31 2c  41 53 4c 23 4c 49 25 2d  |4,R4,R1,ASL#LI%-|
00001160  32 0d 08 48 20 52 53 42  20 52 31 2c 52 31 31 2c  |2..H RSB R1,R11,|
00001170  23 6d 61 78 69 74 25 2b  28 56 43 25 2b 33 29 2d  |#maxit%+(VC%+3)-|
00001180  34 0d 08 52 16 41 44 44  20 52 32 2c 52 32 2c 52  |4..R.ADD R2,R2,R|
00001190  32 2c 41 53 52 23 31 0d  08 5c 14 4d 4f 56 20 52  |2,ASR#1..\.MOV R|
000011a0  32 2c 52 32 2c 41 53 52  20 52 31 0d 08 66 12 52  |2,R2,ASR R1..f.R|
000011b0  53 42 53 20 52 32 2c 52  32 2c 23 31 35 0d 08 70  |SBS R2,R2,#15..p|
000011c0  0f 4d 4f 56 4c 54 20 52  32 2c 23 30 0d 08 7a 0e  |.MOVLT R2,#0..z.|
000011d0  4d 4f 56 20 52 33 2c 23  26 46 0d 08 84 0d 54 53  |MOV R3,#&F....TS|
000011e0  54 20 52 30 2c 23 31 0d  08 8e 15 4d 4f 56 4e 45  |T R0,#1....MOVNE|
000011f0  20 52 32 2c 52 32 2c 4c  53 4c 23 34 0d 08 98 15  | R2,R2,LSL#4....|
00001200  4d 4f 56 4e 45 20 52 33  2c 52 33 2c 4c 53 4c 23  |MOVNE R3,R3,LSL#|
00001210  34 0d 08 a2 19 4c 44 52  42 20 52 31 2c 5b 52 34  |4....LDRB R1,[R4|
00001220  2c 52 30 2c 41 53 52 23  31 5d 0d 08 ac 10 42 49  |,R0,ASR#1]....BI|
00001230  43 20 52 31 2c 52 31 2c  52 33 0d 08 b6 0f 84 52  |C R1,R1,R3.....R|
00001240  20 52 31 2c 52 31 2c 52  32 0d 08 c0 19 53 54 52  | R1,R1,R2....STR|
00001250  42 20 52 31 2c 5b 52 34  2c 52 30 2c 41 53 52 23  |B R1,[R4,R0,ASR#|
00001260  31 5d 0d 08 ca 13 4c 44  4d 46 44 20 52 31 33 21  |1]....LDMFD R13!|
00001270  2c 7b 50 43 7d 0d 08 d4  05 3a 0d 08 de 07 5d 3a  |,{PC}....:....]:|
00001280  ed 0d 08 e8 05 e1 0d ff                           |........|
00001288