Home » Archimedes archive » Acorn User » AU 1995-06.adf » !StarInfo_StarInfo » Turnbull/Skimpy/!RTJulia/!RunImage

Turnbull/Skimpy/!RTJulia/!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-06.adf » !StarInfo_StarInfo
Filename: Turnbull/Skimpy/!RTJulia/!RunImage
Read OK:
File size: 121C bytes
Load address: 0000
Exec address: 0000
File contents
   10MODE15:MODE13:OFF
   20PROCconstants
   30DIMspace%spacelen%:P%=space%
   40code%=P%:P%+=codelen%
   50IFP%>space%+spacelen%THENERROR255,"Space isn't big enough"
   60PROCassemble
   70CALLreadvduvars%
   80PROCchoices
   90PROCdrawmandy
  100PX%=1152:PY%=128:GCOL3,63TINT255
  110LINEPX%-8,PY%,PX%+8,PY%:LINEPX%,PY%-8,PX%,PY%+8
  120IFNOTanim%THEN
  130VDU28,32,23,39,8:CLS
  140PRINT'''"Mouse"'"buttons"'"increase"'"mouse"'"speed"''"Left x16"'"Mid   x4"'"Right x2"
  150ENDIF
  160VDU28,32,7,39,0:CLS
  170REPEAT
  180IFanim%THEN
  190A=2*PI*(TIME MOD6000)/6000
  200!realc%=(1<<AC%)*(0.5*COS(A)-0.25*COS(2*A)-0.01*SIN(3*A/2))
  210!imagc%=(1<<AC%)*(0.5*SIN(A)-0.25*SIN(2*A)+0.01*COS(3*A/2))
  220ELSE
  230MOUSEX%,Y%,Z%:MOUSETO640,512
  240IFNOTINKEY(-1)THEN!realc%+=X%-640<<(AC%+1)-20+Z%:!imagc%+=Y%-512<<(AC%+1)-20+Z%
  250IF!realc%>(1<<AC%)-1THEN!realc%=(1<<AC%)-1ELSEIF!realc%<(-2<<AC%)THEN!realc%=-2<<AC%
  260IF!imagc%>(3<<AC%-1)-1THEN!imagc%=(3<<AC%-1)-1ELSEIF!imagc%<(-3<<AC%-1)THEN!imagc%=-3<<AC%-1
  270ENDIF
  280CLS:A=!realc%/(1<<AC%):B=!imagc%/(1<<AC%)
  290PRINTTAB(0,0);"Real"'INT(A*1E5)/1E5
  300PRINTTAB(0,4);"Imagine"'INT(B*1E5)/1E5
  310LINEPX%-8,PY%,PX%+8,PY%:LINEPX%,PY%-8,PX%,PY%+8
  320PX%=1152+128*(A+0.5)/1.5:PY%=128+128*B/1.5
  330LINEPX%-8,PY%,PX%+8,PY%:LINEPX%,PY%-8,PX%,PY%+8
  340CALLframe%
  350UNTIL0
  360END
  370:
  380:
  390DEFPROCconstants
  400spacelen%=&40000
  410codelen%=&4000
  420AC%=28:SC%=8
  430ENDPROC
  440:
  450DEFPROCchoices
  460PRINT"Press A for a preset animation or M for mouse control"
  470REPEAT:A$=GET$:UNTILA$="A"ORA$="M":anim%=A$="A"
  480ENDPROC
  490:
  500DEFPROCdrawmandy
  510*FX113,2
  520*FX112,2
  530CLS
  540PRINTTAB(0,8);"Real time Julia sets";TAB(0,12);"by Alistair Turnbull"
  550PRINTTAB(0,20);"Please wait a moment..."
  560FORX%=-126TO126STEP4
  570*FX112,2
  580PRINTTAB(20,24);INT(100*(X%+128)/256);"% done    "
  590*FX112,1
  600FORY%=-126TO126STEP4
  610A=1.5*X%/128-0.5:B=1.5*Y%/128:X=A:Y=B:I%=0
  620WHILEABS(X)<2ANDABS(Y)<2ANDI%<32:O=X:X=X*X-Y*Y+A:Y=2*O*Y+B:I%+=1:ENDWHILE
  630IFI%=32THENGCOL0,0TINT0ELSEGCOL0,I%TINT255
  640POINTX%+1152,Y%+128:NEXT,
  650*FX113,1
  660ENDPROC
  670:
  680DEFFNadr(R%,A%,I%)
  690IF(P%AND3)<>0THENPRINT"Code isn't word aligned!":END
  700IF(T%AND2)=0THENP%+=I%<<2:=T%
  710LOCALN%,O%,H%,U%:H%=A%-(P%+8):N%=0:O%=15
  720FORU%=1TOI%:IFH%=0THEN
  730[OPT T%:MOV R%,O%:]
  740ELSEWHILE(H%AND3)=0:H%=H%>>2:N%+=2:ENDWHILE
  750IF(H%AND256)=0THEN
  760[OPT T%:ADD R%,O%,#(H%AND255)<<N%:]:H%-=H%AND255
  770ELSE[OPT T%:SUB R%,O%,#(256-H%AND255)<<N%:]:H%+=256-H%AND255
  780ENDIF
  790ENDIF:O%=R%:NEXT
  800IFH%<>0THENPRINT"Could not ADR to ";A%;" in ";I%;" instructions (R%=";R%;")":END
  810=T%
  820:
  830DEFFNregisterj(J%,N%)
  840J%!(N%<<2)=P%-J%
  850=T%
  860:
  870DEFPROCassemble
  880FORT%=0TO2STEP2:P%=code%
  890[OPT T%
  900:
  910.vduvars%:EQUD 148:EQUD -1
  920.scraddr%:EQUD -1
  930:
  940.readvduvars%
  950ADR R0,vduvars%
  960ADR R1,scraddr%
  970SWI "OS_ReadVduVariables"
  980MOV PC,R14
  990:
 1000.realc%:EQUD 0
 1010.imagc%:EQUD 0
 1020:
 1030.frame%
 1040STMFD R13!,{R14}
 1050; R0=real1=real0^2-imag0^2+realC in AC%
 1060; R1=imag1=2*real0*imag0+imagC in AC%
 1070; R2=dreal1/dX=dimag1/dY=2*real0 in AC%
 1080; R3=dimag1/dX=-dreal1/dY=2*imag0 in AC%
 1090; d2real1/dX2=dimag1/dXdY=-dreal1/dY2=2
 1100; d2imag1/dX2=-dreal1/dXdY=-dimag1/dY2=0
 1110; Start at 0,0
 1120LDR R0,realc%
 1130LDR R1,imagc%
 1140MOV R2,#0
 1150MOV R3,#0
 1160; Go left and up 2
 1170SUB R0,R0,R2,ASL#1:SUB R1,R1,R3,ASL#1
 1180ADD R1,R1,R2,ASL#1:SUB R0,R0,R3,ASL#1
 1190SUB R2,R2,#2*2<<AC%:\SUB R3,R3,#0*2<<AC%
 1200ADD R3,R3,#2*2<<AC%:\SUB R2,R2,#0*2<<AC%
 1210SUB R1,R1,#2*(2*2*2)<<AC%-1:\ADD R0,R0,#0*(2*2-2*2)<<AC%-1
 1220; Go right and down half a pixel = 1>>SC%-1
 1230ADD R0,R0,R2,ASR#SC%-1:ADD R1,R1,R3,ASR#SC%-1
 1240SUB R1,R1,R2,ASR#SC%-1:ADD R0,R0,R3,ASR#SC%-1
 1250ADD R2,R2,#2<<AC%-(SC%-1):\ADD R3,R3,#0<<AC%-(SC%-1)
 1260SUB R3,R3,#2<<AC%-(SC%-1):\ADD R2,R2,#0<<AC%-(SC%-1)
 1270SUB R1,R1,#2*2<<AC%-(SC%-1)-(SC%-1)-1:\ADD R0,R0,#0*(1-1)<<AC%-(SC%-1)-(SC%-1)-1
 1280LDR R10,scraddr%
 1290ADD R12,R10,#128*320
 1300SUB R12,R12,#320
 1310ADD R12,R12,#128
 1320MOV R11,#1<<SC%
 1330.yloop%
 1340SUB R11,R11,#1<<16+SC%
 1350.xloop%
 1360MOV R9,#255
 1370CMP R0,#2<<AC%
 1380CMPLT R1,#2<<AC%
 1390BGE escape%
 1400CMN R0,#2<<AC%
 1410CMNGT R1,#2<<AC%
 1420BLE escape%
 1430MOV R9,R1,ASR#(AC%+2)-SC%
 1440ADD R9,R9,R9,ASL#2
 1450SUB R9,R12,R9,ASL#6
 1460LDRB R9,[R9,R0,ASR#(AC%+2)-SC%]
 1470SUBS R9,R9,#1
 1480MOVLT R9,#0
 1490.escape%
 1500STRB R9,[R10],#1
 1510; Right a pixel = 1>>SC%-2
 1520ADD R0,R0,R2,ASR#SC%-2:ADD R1,R1,R3,ASR#SC%-2
 1530ADD R2,R2,#2<<AC%-(SC%-2):\ADD R3,R3,#0<<AC%-(SC%-2)
 1540ADD R0,R0,#2<<AC%-(SC%-2)-(SC%-2)-1:\ADD R1,R1,#0<<AC%-(SC%-2)-(SC%-2)-1
 1550ADDS R11,R11,#1<<16
 1560BLE xloop%
 1570; Left 4
 1580SUB R0,R0,R2,ASL#2:SUB R1,R1,R3,ASL#2
 1590SUB R2,R2,#2*4<<AC%:\SUB R3,R3,#0*4<<AC%
 1600ADD R0,R0,#2*4*4<<AC%-1:\ADD R1,R1,#0*4*4<<AC%-1
 1610; Down a pixel = 1>>SC%-2
 1620SUB R1,R1,R2,ASR#SC%-2:ADD R0,R0,R3,ASR#SC%-2
 1630SUB R3,R3,#2<<AC%-(SC%-2):\ADD R2,R2,#0<<AC%-(SC%-2)
 1640SUB R0,R0,#2<<AC%-(SC%-2)-(SC%-2)-1:\SUB R1,R1,#0<<AC%-(SC%-2)-(SC%-2)-1
 1650ADD R10,R10,#320-(1<<SC%)
 1660SUBS R11,R11,#1
 1670BGT yloop%
 1680LDMFD R13!,{PC}
 1690:
 1700]:IFP%>code%+codelen%THENERROR255,"Code isn't big enough"
 1710NEXT
 1720ENDPROC


�15:�13:�
�constants
�space%spacelen%:P%=space%
(code%=P%:P%+=codelen%
26�P%>space%+spacelen%��255,"Space isn't big enough"
<
�assemble
F�readvduvars%
P�choices
Z�drawmandy
dPX%=1152:PY%=128:�3,63Ȝ255
n-�PX%-8,PY%,PX%+8,PY%:�PX%,PY%-8,PX%,PY%+8
x�anim%�
��28,32,23,39,8:�
�V�'''"Mouse"'"buttons"'"increase"'"mouse"'"speed"''"Left x16"'"Mid   x4"'"Right x2"
��
��28,32,7,39,0:�
��
��anim%�
�A=2*�*(� �6000)/6000
�9!realc%=(1<<AC%)*(0.5*�(A)-0.25*�(2*A)-0.01*�(3*A/2))
�9!imagc%=(1<<AC%)*(0.5*�(A)-0.25*�(2*A)+0.01*�(3*A/2))
��
�ȗX%,Y%,Z%:ȗ�640,512
�I符(-1)�!realc%+=X%-640<<(AC%+1)-20+Z%:!imagc%+=Y%-512<<(AC%+1)-20+Z%
�M�!realc%>(1<<AC%)-1�!realc%=(1<<AC%)-1��!realc%<(-2<<AC%)�!realc%=-2<<AC%
U�!imagc%>(3<<AC%-1)-1�!imagc%=(3<<AC%-1)-1��!imagc%<(-3<<AC%-1)�!imagc%=-3<<AC%-1
�
+�:A=!realc%/(1<<AC%):B=!imagc%/(1<<AC%)
"�0,0);"Real"'�(A*1E5)/1E5
,!�0,4);"Imagine"'�(B*1E5)/1E5
6-�PX%-8,PY%,PX%+8,PY%:�PX%,PY%-8,PX%,PY%+8
@.PX%=1152+128*(A+0.5)/1.5:PY%=128+128*B/1.5
J-�PX%-8,PY%,PX%+8,PY%:�PX%,PY%-8,PX%,PY%+8
T�frame%
^�0
h�
r:
|:
���constants
�spacelen%=&40000
�codelen%=&4000
�AC%=28:SC%=8
��
�:
�
��choices
�<�"Press A for a preset animation or M for mouse control"
�&�:A$=�:�A$="A"�A$="M":anim%=A$="A"
��
�:
���drawmandy
�*FX113,2
*FX112,2
�
?�0,8);"Real time Julia sets";�0,12);"by Alistair Turnbull"
&%�0,20);"Please wait a moment..."
0�X%=-126�126�4
:*FX112,2
D-�20,24);�(100*(X%+128)/256);"% done    "
N*FX112,1
X�Y%=-126�126�4
b.A=1.5*X%/128-0.5:B=1.5*Y%/128:X=A:Y=B:I%=0
l;ȕ�(X)<2��(Y)<2�I%<32:O=X:X=X*X-Y*Y+A:Y=2*O*Y+B:I%+=1:�
v�I%=32��0,0Ȝ0��0,I%Ȝ255
�ȒX%+1152,Y%+128:�,
�*FX113,1
��
�:
�ݤ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
��U%=1�I%:�H%=0�
�[OPT T%:MOV R%,O%:]
� �ȕ(H%�3)=0:H%=H%>>2:N%+=2:�
��(H%�256)=0�
�0[OPT T%:ADD R%,O%,#(H%�255)<<N%:]:H%-=H%�255
9�[OPT T%:SUB R%,O%,#(256-H%�255)<<N%:]:H%+=256-H%�255
�

�:O%=R%:�
 J�H%<>0��"Could not ADR to ";A%;" in ";I%;" instructions (R%=";R%;")":�
*=T%
4:
>ݤregisterj(J%,N%)
HJ%!(N%<<2)=P%-J%
R=T%
\:
f��assemble
p�T%=0�2�2:P%=code%
z[OPT T%
�:
�.vduvars%:EQUD 148:EQUD -1
�.scraddr%:EQUD -1
�:
�.readvduvars%
�ADR R0,vduvars%
�ADR R1,scraddr%
�SWI "OS_ReadVduVariables"
�MOV PC,R14
�:
�.realc%:EQUD 0
�.imagc%:EQUD 0
�:
.frame%
STMFD R13!,{R14}
+; R0=real1=real0^2-imag0^2+realC in AC%
$); R1=imag1=2*real0*imag0+imagC in AC%
.+; R2=dreal1/dX=dimag1/dY=2*real0 in AC%
8,; R3=dimag1/dX=-dreal1/dY=2*imag0 in AC%
B+; d2real1/dX2=dimag1/dXdY=-dreal1/dY2=2
L,; d2imag1/dX2=-dreal1/dXdY=-dimag1/dY2=0
V; Start at 0,0
`LDR R0,realc%
jLDR R1,imagc%
t
MOV R2,#0
~
MOV R3,#0
�; Go left and up 2
�)SUB R0,R0,R2,ASL#1:SUB R1,R1,R3,ASL#1
�)ADD R1,R1,R2,ASL#1:SUB R0,R0,R3,ASL#1
�,SUB R2,R2,#2*2<<AC%:\SUB R3,R3,#0*2<<AC%
�,ADD R3,R3,#2*2<<AC%:\SUB R2,R2,#0*2<<AC%
�>SUB R1,R1,#2*(2*2*2)<<AC%-1:\ADD R0,R0,#0*(2*2-2*2)<<AC%-1
�/; Go right and down half a pixel = 1>>SC%-1
�1ADD R0,R0,R2,ASR#SC%-1:ADD R1,R1,R3,ASR#SC%-1
�1SUB R1,R1,R2,ASR#SC%-1:ADD R0,R0,R3,ASR#SC%-1
�8ADD R2,R2,#2<<AC%-(SC%-1):\ADD R3,R3,#0<<AC%-(SC%-1)
�8SUB R3,R3,#2<<AC%-(SC%-1):\ADD R2,R2,#0<<AC%-(SC%-1)
�TSUB R1,R1,#2*2<<AC%-(SC%-1)-(SC%-1)-1:\ADD R0,R0,#0*(1-1)<<AC%-(SC%-1)-(SC%-1)-1
LDR R10,scraddr%

ADD R12,R10,#128*320
SUB R12,R12,#320
ADD R12,R12,#128
(MOV R11,#1<<SC%
2.yloop%
<SUB R11,R11,#1<<16+SC%
F.xloop%
PMOV R9,#255
ZCMP R0,#2<<AC%
dCMPLT R1,#2<<AC%
nBGE escape%
xCMN R0,#2<<AC%
�CMNGT R1,#2<<AC%
�BLE escape%
�MOV R9,R1,ASR#(AC%+2)-SC%
�ADD R9,R9,R9,ASL#2
�SUB R9,R12,R9,ASL#6
�#LDRB R9,[R9,R0,ASR#(AC%+2)-SC%]
�SUBS R9,R9,#1
�MOVLT R9,#0
�.escape%
�STRB R9,[R10],#1
�; Right a pixel = 1>>SC%-2
�1ADD R0,R0,R2,ASR#SC%-2:ADD R1,R1,R3,ASR#SC%-2
�8ADD R2,R2,#2<<AC%-(SC%-2):\ADD R3,R3,#0<<AC%-(SC%-2)
LADD R0,R0,#2<<AC%-(SC%-2)-(SC%-2)-1:\ADD R1,R1,#0<<AC%-(SC%-2)-(SC%-2)-1
ADDS R11,R11,#1<<16
BLE xloop%
"; Left 4
,)SUB R0,R0,R2,ASL#2:SUB R1,R1,R3,ASL#2
6,SUB R2,R2,#2*4<<AC%:\SUB R3,R3,#0*4<<AC%
@4ADD R0,R0,#2*4*4<<AC%-1:\ADD R1,R1,#0*4*4<<AC%-1
J; Down a pixel = 1>>SC%-2
T1SUB R1,R1,R2,ASR#SC%-2:ADD R0,R0,R3,ASR#SC%-2
^8SUB R3,R3,#2<<AC%-(SC%-2):\ADD R2,R2,#0<<AC%-(SC%-2)
hLSUB R0,R0,#2<<AC%-(SC%-2)-(SC%-2)-1:\SUB R1,R1,#0<<AC%-(SC%-2)-(SC%-2)-1
rADD R10,R10,#320-(1<<SC%)
|SUBS R11,R11,#1
�BGT yloop%
�LDMFD R13!,{PC}
�:
�5]:�P%>code%+codelen%��255,"Code isn't big enough"
��
��
�
00000000  0d 00 0a 0d eb 31 35 3a  eb 31 33 3a 87 0d 00 14  |.....15:.13:....|
00000010  0e f2 63 6f 6e 73 74 61  6e 74 73 0d 00 1e 1e de  |..constants.....|
00000020  73 70 61 63 65 25 73 70  61 63 65 6c 65 6e 25 3a  |space%spacelen%:|
00000030  50 25 3d 73 70 61 63 65  25 0d 00 28 19 63 6f 64  |P%=space%..(.cod|
00000040  65 25 3d 50 25 3a 50 25  2b 3d 63 6f 64 65 6c 65  |e%=P%:P%+=codele|
00000050  6e 25 0d 00 32 36 e7 50  25 3e 73 70 61 63 65 25  |n%..26.P%>space%|
00000060  2b 73 70 61 63 65 6c 65  6e 25 8c 85 32 35 35 2c  |+spacelen%..255,|
00000070  22 53 70 61 63 65 20 69  73 6e 27 74 20 62 69 67  |"Space isn't big|
00000080  20 65 6e 6f 75 67 68 22  0d 00 3c 0d f2 61 73 73  | enough"..<..ass|
00000090  65 6d 62 6c 65 0d 00 46  11 d6 72 65 61 64 76 64  |emble..F..readvd|
000000a0  75 76 61 72 73 25 0d 00  50 0c f2 63 68 6f 69 63  |uvars%..P..choic|
000000b0  65 73 0d 00 5a 0e f2 64  72 61 77 6d 61 6e 64 79  |es..Z..drawmandy|
000000c0  0d 00 64 1f 50 58 25 3d  31 31 35 32 3a 50 59 25  |..d.PX%=1152:PY%|
000000d0  3d 31 32 38 3a e6 33 2c  36 33 c8 9c 32 35 35 0d  |=128:.3,63..255.|
000000e0  00 6e 2d 86 50 58 25 2d  38 2c 50 59 25 2c 50 58  |.n-.PX%-8,PY%,PX|
000000f0  25 2b 38 2c 50 59 25 3a  86 50 58 25 2c 50 59 25  |%+8,PY%:.PX%,PY%|
00000100  2d 38 2c 50 58 25 2c 50  59 25 2b 38 0d 00 78 0c  |-8,PX%,PY%+8..x.|
00000110  e7 ac 61 6e 69 6d 25 8c  0d 00 82 14 ef 32 38 2c  |..anim%......28,|
00000120  33 32 2c 32 33 2c 33 39  2c 38 3a db 0d 00 8c 56  |32,23,39,8:....V|
00000130  f1 27 27 27 22 4d 6f 75  73 65 22 27 22 62 75 74  |.'''"Mouse"'"but|
00000140  74 6f 6e 73 22 27 22 69  6e 63 72 65 61 73 65 22  |tons"'"increase"|
00000150  27 22 6d 6f 75 73 65 22  27 22 73 70 65 65 64 22  |'"mouse"'"speed"|
00000160  27 27 22 4c 65 66 74 20  78 31 36 22 27 22 4d 69  |''"Left x16"'"Mi|
00000170  64 20 20 20 78 34 22 27  22 52 69 67 68 74 20 78  |d   x4"'"Right x|
00000180  32 22 0d 00 96 05 cd 0d  00 a0 13 ef 32 38 2c 33  |2"..........28,3|
00000190  32 2c 37 2c 33 39 2c 30  3a db 0d 00 aa 05 f5 0d  |2,7,39,0:.......|
000001a0  00 b4 0b e7 61 6e 69 6d  25 8c 0d 00 be 18 41 3d  |....anim%.....A=|
000001b0  32 2a af 2a 28 91 20 83  36 30 30 30 29 2f 36 30  |2*.*(. .6000)/60|
000001c0  30 30 0d 00 c8 39 21 72  65 61 6c 63 25 3d 28 31  |00...9!realc%=(1|
000001d0  3c 3c 41 43 25 29 2a 28  30 2e 35 2a 9b 28 41 29  |<<AC%)*(0.5*.(A)|
000001e0  2d 30 2e 32 35 2a 9b 28  32 2a 41 29 2d 30 2e 30  |-0.25*.(2*A)-0.0|
000001f0  31 2a b5 28 33 2a 41 2f  32 29 29 0d 00 d2 39 21  |1*.(3*A/2))...9!|
00000200  69 6d 61 67 63 25 3d 28  31 3c 3c 41 43 25 29 2a  |imagc%=(1<<AC%)*|
00000210  28 30 2e 35 2a b5 28 41  29 2d 30 2e 32 35 2a b5  |(0.5*.(A)-0.25*.|
00000220  28 32 2a 41 29 2b 30 2e  30 31 2a 9b 28 33 2a 41  |(2*A)+0.01*.(3*A|
00000230  2f 32 29 29 0d 00 dc 05  cc 0d 00 e6 19 c8 97 58  |/2))...........X|
00000240  25 2c 59 25 2c 5a 25 3a  c8 97 b8 36 34 30 2c 35  |%,Y%,Z%:...640,5|
00000250  31 32 0d 00 f0 49 e7 ac  a6 28 2d 31 29 8c 21 72  |12...I...(-1).!r|
00000260  65 61 6c 63 25 2b 3d 58  25 2d 36 34 30 3c 3c 28  |ealc%+=X%-640<<(|
00000270  41 43 25 2b 31 29 2d 32  30 2b 5a 25 3a 21 69 6d  |AC%+1)-20+Z%:!im|
00000280  61 67 63 25 2b 3d 59 25  2d 35 31 32 3c 3c 28 41  |agc%+=Y%-512<<(A|
00000290  43 25 2b 31 29 2d 32 30  2b 5a 25 0d 00 fa 4d e7  |C%+1)-20+Z%...M.|
000002a0  21 72 65 61 6c 63 25 3e  28 31 3c 3c 41 43 25 29  |!realc%>(1<<AC%)|
000002b0  2d 31 8c 21 72 65 61 6c  63 25 3d 28 31 3c 3c 41  |-1.!realc%=(1<<A|
000002c0  43 25 29 2d 31 8b e7 21  72 65 61 6c 63 25 3c 28  |C%)-1..!realc%<(|
000002d0  2d 32 3c 3c 41 43 25 29  8c 21 72 65 61 6c 63 25  |-2<<AC%).!realc%|
000002e0  3d 2d 32 3c 3c 41 43 25  0d 01 04 55 e7 21 69 6d  |=-2<<AC%...U.!im|
000002f0  61 67 63 25 3e 28 33 3c  3c 41 43 25 2d 31 29 2d  |agc%>(3<<AC%-1)-|
00000300  31 8c 21 69 6d 61 67 63  25 3d 28 33 3c 3c 41 43  |1.!imagc%=(3<<AC|
00000310  25 2d 31 29 2d 31 8b e7  21 69 6d 61 67 63 25 3c  |%-1)-1..!imagc%<|
00000320  28 2d 33 3c 3c 41 43 25  2d 31 29 8c 21 69 6d 61  |(-3<<AC%-1).!ima|
00000330  67 63 25 3d 2d 33 3c 3c  41 43 25 2d 31 0d 01 0e  |gc%=-3<<AC%-1...|
00000340  05 cd 0d 01 18 2b db 3a  41 3d 21 72 65 61 6c 63  |.....+.:A=!realc|
00000350  25 2f 28 31 3c 3c 41 43  25 29 3a 42 3d 21 69 6d  |%/(1<<AC%):B=!im|
00000360  61 67 63 25 2f 28 31 3c  3c 41 43 25 29 0d 01 22  |agc%/(1<<AC%).."|
00000370  1e f1 8a 30 2c 30 29 3b  22 52 65 61 6c 22 27 a8  |...0,0);"Real"'.|
00000380  28 41 2a 31 45 35 29 2f  31 45 35 0d 01 2c 21 f1  |(A*1E5)/1E5..,!.|
00000390  8a 30 2c 34 29 3b 22 49  6d 61 67 69 6e 65 22 27  |.0,4);"Imagine"'|
000003a0  a8 28 42 2a 31 45 35 29  2f 31 45 35 0d 01 36 2d  |.(B*1E5)/1E5..6-|
000003b0  86 50 58 25 2d 38 2c 50  59 25 2c 50 58 25 2b 38  |.PX%-8,PY%,PX%+8|
000003c0  2c 50 59 25 3a 86 50 58  25 2c 50 59 25 2d 38 2c  |,PY%:.PX%,PY%-8,|
000003d0  50 58 25 2c 50 59 25 2b  38 0d 01 40 2e 50 58 25  |PX%,PY%+8..@.PX%|
000003e0  3d 31 31 35 32 2b 31 32  38 2a 28 41 2b 30 2e 35  |=1152+128*(A+0.5|
000003f0  29 2f 31 2e 35 3a 50 59  25 3d 31 32 38 2b 31 32  |)/1.5:PY%=128+12|
00000400  38 2a 42 2f 31 2e 35 0d  01 4a 2d 86 50 58 25 2d  |8*B/1.5..J-.PX%-|
00000410  38 2c 50 59 25 2c 50 58  25 2b 38 2c 50 59 25 3a  |8,PY%,PX%+8,PY%:|
00000420  86 50 58 25 2c 50 59 25  2d 38 2c 50 58 25 2c 50  |.PX%,PY%-8,PX%,P|
00000430  59 25 2b 38 0d 01 54 0b  d6 66 72 61 6d 65 25 0d  |Y%+8..T..frame%.|
00000440  01 5e 06 fd 30 0d 01 68  05 e0 0d 01 72 05 3a 0d  |.^..0..h....r.:.|
00000450  01 7c 05 3a 0d 01 86 0f  dd f2 63 6f 6e 73 74 61  |.|.:......consta|
00000460  6e 74 73 0d 01 90 14 73  70 61 63 65 6c 65 6e 25  |nts....spacelen%|
00000470  3d 26 34 30 30 30 30 0d  01 9a 12 63 6f 64 65 6c  |=&40000....codel|
00000480  65 6e 25 3d 26 34 30 30  30 0d 01 a4 10 41 43 25  |en%=&4000....AC%|
00000490  3d 32 38 3a 53 43 25 3d  38 0d 01 ae 05 e1 0d 01  |=28:SC%=8.......|
000004a0  b8 05 3a 0d 01 c2 0d dd  f2 63 68 6f 69 63 65 73  |..:......choices|
000004b0  0d 01 cc 3c f1 22 50 72  65 73 73 20 41 20 66 6f  |...<."Press A fo|
000004c0  72 20 61 20 70 72 65 73  65 74 20 61 6e 69 6d 61  |r a preset anima|
000004d0  74 69 6f 6e 20 6f 72 20  4d 20 66 6f 72 20 6d 6f  |tion or M for mo|
000004e0  75 73 65 20 63 6f 6e 74  72 6f 6c 22 0d 01 d6 26  |use control"...&|
000004f0  f5 3a 41 24 3d be 3a fd  41 24 3d 22 41 22 84 41  |.:A$=.:.A$="A".A|
00000500  24 3d 22 4d 22 3a 61 6e  69 6d 25 3d 41 24 3d 22  |$="M":anim%=A$="|
00000510  41 22 0d 01 e0 05 e1 0d  01 ea 05 3a 0d 01 f4 0f  |A".........:....|
00000520  dd f2 64 72 61 77 6d 61  6e 64 79 0d 01 fe 0c 2a  |..drawmandy....*|
00000530  46 58 31 31 33 2c 32 0d  02 08 0c 2a 46 58 31 31  |FX113,2....*FX11|
00000540  32 2c 32 0d 02 12 05 db  0d 02 1c 3f f1 8a 30 2c  |2,2........?..0,|
00000550  38 29 3b 22 52 65 61 6c  20 74 69 6d 65 20 4a 75  |8);"Real time Ju|
00000560  6c 69 61 20 73 65 74 73  22 3b 8a 30 2c 31 32 29  |lia sets";.0,12)|
00000570  3b 22 62 79 20 41 6c 69  73 74 61 69 72 20 54 75  |;"by Alistair Tu|
00000580  72 6e 62 75 6c 6c 22 0d  02 26 25 f1 8a 30 2c 32  |rnbull"..&%..0,2|
00000590  30 29 3b 22 50 6c 65 61  73 65 20 77 61 69 74 20  |0);"Please wait |
000005a0  61 20 6d 6f 6d 65 6e 74  2e 2e 2e 22 0d 02 30 12  |a moment..."..0.|
000005b0  e3 58 25 3d 2d 31 32 36  b8 31 32 36 88 34 0d 02  |.X%=-126.126.4..|
000005c0  3a 0c 2a 46 58 31 31 32  2c 32 0d 02 44 2d f1 8a  |:.*FX112,2..D-..|
000005d0  32 30 2c 32 34 29 3b a8  28 31 30 30 2a 28 58 25  |20,24);.(100*(X%|
000005e0  2b 31 32 38 29 2f 32 35  36 29 3b 22 25 20 64 6f  |+128)/256);"% do|
000005f0  6e 65 20 20 20 20 22 0d  02 4e 0c 2a 46 58 31 31  |ne    "..N.*FX11|
00000600  32 2c 31 0d 02 58 12 e3  59 25 3d 2d 31 32 36 b8  |2,1..X..Y%=-126.|
00000610  31 32 36 88 34 0d 02 62  2e 41 3d 31 2e 35 2a 58  |126.4..b.A=1.5*X|
00000620  25 2f 31 32 38 2d 30 2e  35 3a 42 3d 31 2e 35 2a  |%/128-0.5:B=1.5*|
00000630  59 25 2f 31 32 38 3a 58  3d 41 3a 59 3d 42 3a 49  |Y%/128:X=A:Y=B:I|
00000640  25 3d 30 0d 02 6c 3b c8  95 94 28 58 29 3c 32 80  |%=0..l;...(X)<2.|
00000650  94 28 59 29 3c 32 80 49  25 3c 33 32 3a 4f 3d 58  |.(Y)<2.I%<32:O=X|
00000660  3a 58 3d 58 2a 58 2d 59  2a 59 2b 41 3a 59 3d 32  |:X=X*X-Y*Y+A:Y=2|
00000670  2a 4f 2a 59 2b 42 3a 49  25 2b 3d 31 3a ce 0d 02  |*O*Y+B:I%+=1:...|
00000680  76 1d e7 49 25 3d 33 32  8c e6 30 2c 30 c8 9c 30  |v..I%=32..0,0..0|
00000690  8b e6 30 2c 49 25 c8 9c  32 35 35 0d 02 80 17 c8  |..0,I%..255.....|
000006a0  92 58 25 2b 31 31 35 32  2c 59 25 2b 31 32 38 3a  |.X%+1152,Y%+128:|
000006b0  ed 2c 0d 02 8a 0c 2a 46  58 31 31 33 2c 31 0d 02  |.,....*FX113,1..|
000006c0  94 05 e1 0d 02 9e 05 3a  0d 02 a8 13 dd a4 61 64  |.......:......ad|
000006d0  72 28 52 25 2c 41 25 2c  49 25 29 0d 02 b2 2c e7  |r(R%,A%,I%)...,.|
000006e0  28 50 25 80 33 29 3c 3e  30 8c f1 22 43 6f 64 65  |(P%.3)<>0.."Code|
000006f0  20 69 73 6e 27 74 20 77  6f 72 64 20 61 6c 69 67  | isn't word alig|
00000700  6e 65 64 21 22 3a e0 0d  02 bc 1b e7 28 54 25 80  |ned!":......(T%.|
00000710  32 29 3d 30 8c 50 25 2b  3d 49 25 3c 3c 32 3a 3d  |2)=0.P%+=I%<<2:=|
00000720  54 25 0d 02 c6 28 ea 4e  25 2c 4f 25 2c 48 25 2c  |T%...(.N%,O%,H%,|
00000730  55 25 3a 48 25 3d 41 25  2d 28 50 25 2b 38 29 3a  |U%:H%=A%-(P%+8):|
00000740  4e 25 3d 30 3a 4f 25 3d  31 35 0d 02 d0 13 e3 55  |N%=0:O%=15.....U|
00000750  25 3d 31 b8 49 25 3a e7  48 25 3d 30 8c 0d 02 da  |%=1.I%:.H%=0....|
00000760  17 5b 4f 50 54 20 54 25  3a 4d 4f 56 20 52 25 2c  |.[OPT T%:MOV R%,|
00000770  4f 25 3a 5d 0d 02 e4 20  cc c8 95 28 48 25 80 33  |O%:]... ...(H%.3|
00000780  29 3d 30 3a 48 25 3d 48  25 3e 3e 32 3a 4e 25 2b  |)=0:H%=H%>>2:N%+|
00000790  3d 32 3a ce 0d 02 ee 10  e7 28 48 25 80 32 35 36  |=2:......(H%.256|
000007a0  29 3d 30 8c 0d 02 f8 30  5b 4f 50 54 20 54 25 3a  |)=0....0[OPT T%:|
000007b0  41 44 44 20 52 25 2c 4f  25 2c 23 28 48 25 80 32  |ADD R%,O%,#(H%.2|
000007c0  35 35 29 3c 3c 4e 25 3a  5d 3a 48 25 2d 3d 48 25  |55)<<N%:]:H%-=H%|
000007d0  80 32 35 35 0d 03 02 39  cc 5b 4f 50 54 20 54 25  |.255...9.[OPT T%|
000007e0  3a 53 55 42 20 52 25 2c  4f 25 2c 23 28 32 35 36  |:SUB R%,O%,#(256|
000007f0  2d 48 25 80 32 35 35 29  3c 3c 4e 25 3a 5d 3a 48  |-H%.255)<<N%:]:H|
00000800  25 2b 3d 32 35 36 2d 48  25 80 32 35 35 0d 03 0c  |%+=256-H%.255...|
00000810  05 cd 0d 03 16 0d cd 3a  4f 25 3d 52 25 3a ed 0d  |.......:O%=R%:..|
00000820  03 20 4a e7 48 25 3c 3e  30 8c f1 22 43 6f 75 6c  |. J.H%<>0.."Coul|
00000830  64 20 6e 6f 74 20 41 44  52 20 74 6f 20 22 3b 41  |d not ADR to ";A|
00000840  25 3b 22 20 69 6e 20 22  3b 49 25 3b 22 20 69 6e  |%;" in ";I%;" in|
00000850  73 74 72 75 63 74 69 6f  6e 73 20 28 52 25 3d 22  |structions (R%="|
00000860  3b 52 25 3b 22 29 22 3a  e0 0d 03 2a 07 3d 54 25  |;R%;")":...*.=T%|
00000870  0d 03 34 05 3a 0d 03 3e  16 dd a4 72 65 67 69 73  |..4.:..>...regis|
00000880  74 65 72 6a 28 4a 25 2c  4e 25 29 0d 03 48 14 4a  |terj(J%,N%)..H.J|
00000890  25 21 28 4e 25 3c 3c 32  29 3d 50 25 2d 4a 25 0d  |%!(N%<<2)=P%-J%.|
000008a0  03 52 07 3d 54 25 0d 03  5c 05 3a 0d 03 66 0e dd  |.R.=T%..\.:..f..|
000008b0  f2 61 73 73 65 6d 62 6c  65 0d 03 70 16 e3 54 25  |.assemble..p..T%|
000008c0  3d 30 b8 32 88 32 3a 50  25 3d 63 6f 64 65 25 0d  |=0.2.2:P%=code%.|
000008d0  03 7a 0b 5b 4f 50 54 20  54 25 0d 03 84 05 3a 0d  |.z.[OPT T%....:.|
000008e0  03 8e 1e 2e 76 64 75 76  61 72 73 25 3a 45 51 55  |....vduvars%:EQU|
000008f0  44 20 31 34 38 3a 45 51  55 44 20 2d 31 0d 03 98  |D 148:EQUD -1...|
00000900  15 2e 73 63 72 61 64 64  72 25 3a 45 51 55 44 20  |..scraddr%:EQUD |
00000910  2d 31 0d 03 a2 05 3a 0d  03 ac 11 2e 72 65 61 64  |-1....:.....read|
00000920  76 64 75 76 61 72 73 25  0d 03 b6 13 41 44 52 20  |vduvars%....ADR |
00000930  52 30 2c 76 64 75 76 61  72 73 25 0d 03 c0 13 41  |R0,vduvars%....A|
00000940  44 52 20 52 31 2c 73 63  72 61 64 64 72 25 0d 03  |DR R1,scraddr%..|
00000950  ca 1d 53 57 49 20 22 4f  53 5f 52 65 61 64 56 64  |..SWI "OS_ReadVd|
00000960  75 56 61 72 69 61 62 6c  65 73 22 0d 03 d4 0e 4d  |uVariables"....M|
00000970  4f 56 20 50 43 2c 52 31  34 0d 03 de 05 3a 0d 03  |OV PC,R14....:..|
00000980  e8 12 2e 72 65 61 6c 63  25 3a 45 51 55 44 20 30  |...realc%:EQUD 0|
00000990  0d 03 f2 12 2e 69 6d 61  67 63 25 3a 45 51 55 44  |.....imagc%:EQUD|
000009a0  20 30 0d 03 fc 05 3a 0d  04 06 0b 2e 66 72 61 6d  | 0....:.....fram|
000009b0  65 25 0d 04 10 14 53 54  4d 46 44 20 52 31 33 21  |e%....STMFD R13!|
000009c0  2c 7b 52 31 34 7d 0d 04  1a 2b 3b 20 52 30 3d 72  |,{R14}...+; R0=r|
000009d0  65 61 6c 31 3d 72 65 61  6c 30 5e 32 2d 69 6d 61  |eal1=real0^2-ima|
000009e0  67 30 5e 32 2b 72 65 61  6c 43 20 69 6e 20 41 43  |g0^2+realC in AC|
000009f0  25 0d 04 24 29 3b 20 52  31 3d 69 6d 61 67 31 3d  |%..$); R1=imag1=|
00000a00  32 2a 72 65 61 6c 30 2a  69 6d 61 67 30 2b 69 6d  |2*real0*imag0+im|
00000a10  61 67 43 20 69 6e 20 41  43 25 0d 04 2e 2b 3b 20  |agC in AC%...+; |
00000a20  52 32 3d 64 72 65 61 6c  31 2f 64 58 3d 64 69 6d  |R2=dreal1/dX=dim|
00000a30  61 67 31 2f 64 59 3d 32  2a 72 65 61 6c 30 20 69  |ag1/dY=2*real0 i|
00000a40  6e 20 41 43 25 0d 04 38  2c 3b 20 52 33 3d 64 69  |n AC%..8,; R3=di|
00000a50  6d 61 67 31 2f 64 58 3d  2d 64 72 65 61 6c 31 2f  |mag1/dX=-dreal1/|
00000a60  64 59 3d 32 2a 69 6d 61  67 30 20 69 6e 20 41 43  |dY=2*imag0 in AC|
00000a70  25 0d 04 42 2b 3b 20 64  32 72 65 61 6c 31 2f 64  |%..B+; d2real1/d|
00000a80  58 32 3d 64 69 6d 61 67  31 2f 64 58 64 59 3d 2d  |X2=dimag1/dXdY=-|
00000a90  64 72 65 61 6c 31 2f 64  59 32 3d 32 0d 04 4c 2c  |dreal1/dY2=2..L,|
00000aa0  3b 20 64 32 69 6d 61 67  31 2f 64 58 32 3d 2d 64  |; d2imag1/dX2=-d|
00000ab0  72 65 61 6c 31 2f 64 58  64 59 3d 2d 64 69 6d 61  |real1/dXdY=-dima|
00000ac0  67 31 2f 64 59 32 3d 30  0d 04 56 12 3b 20 53 74  |g1/dY2=0..V.; St|
00000ad0  61 72 74 20 61 74 20 30  2c 30 0d 04 60 11 4c 44  |art at 0,0..`.LD|
00000ae0  52 20 52 30 2c 72 65 61  6c 63 25 0d 04 6a 11 4c  |R R0,realc%..j.L|
00000af0  44 52 20 52 31 2c 69 6d  61 67 63 25 0d 04 74 0d  |DR R1,imagc%..t.|
00000b00  4d 4f 56 20 52 32 2c 23  30 0d 04 7e 0d 4d 4f 56  |MOV R2,#0..~.MOV|
00000b10  20 52 33 2c 23 30 0d 04  88 16 3b 20 47 6f 20 6c  | R3,#0....; Go l|
00000b20  65 66 74 20 61 6e 64 20  75 70 20 32 0d 04 92 29  |eft and up 2...)|
00000b30  53 55 42 20 52 30 2c 52  30 2c 52 32 2c 41 53 4c  |SUB R0,R0,R2,ASL|
00000b40  23 31 3a 53 55 42 20 52  31 2c 52 31 2c 52 33 2c  |#1:SUB R1,R1,R3,|
00000b50  41 53 4c 23 31 0d 04 9c  29 41 44 44 20 52 31 2c  |ASL#1...)ADD R1,|
00000b60  52 31 2c 52 32 2c 41 53  4c 23 31 3a 53 55 42 20  |R1,R2,ASL#1:SUB |
00000b70  52 30 2c 52 30 2c 52 33  2c 41 53 4c 23 31 0d 04  |R0,R0,R3,ASL#1..|
00000b80  a6 2c 53 55 42 20 52 32  2c 52 32 2c 23 32 2a 32  |.,SUB R2,R2,#2*2|
00000b90  3c 3c 41 43 25 3a 5c 53  55 42 20 52 33 2c 52 33  |<<AC%:\SUB R3,R3|
00000ba0  2c 23 30 2a 32 3c 3c 41  43 25 0d 04 b0 2c 41 44  |,#0*2<<AC%...,AD|
00000bb0  44 20 52 33 2c 52 33 2c  23 32 2a 32 3c 3c 41 43  |D R3,R3,#2*2<<AC|
00000bc0  25 3a 5c 53 55 42 20 52  32 2c 52 32 2c 23 30 2a  |%:\SUB R2,R2,#0*|
00000bd0  32 3c 3c 41 43 25 0d 04  ba 3e 53 55 42 20 52 31  |2<<AC%...>SUB R1|
00000be0  2c 52 31 2c 23 32 2a 28  32 2a 32 2a 32 29 3c 3c  |,R1,#2*(2*2*2)<<|
00000bf0  41 43 25 2d 31 3a 5c 41  44 44 20 52 30 2c 52 30  |AC%-1:\ADD R0,R0|
00000c00  2c 23 30 2a 28 32 2a 32  2d 32 2a 32 29 3c 3c 41  |,#0*(2*2-2*2)<<A|
00000c10  43 25 2d 31 0d 04 c4 2f  3b 20 47 6f 20 72 69 67  |C%-1.../; Go rig|
00000c20  68 74 20 61 6e 64 20 64  6f 77 6e 20 68 61 6c 66  |ht and down half|
00000c30  20 61 20 70 69 78 65 6c  20 3d 20 31 3e 3e 53 43  | a pixel = 1>>SC|
00000c40  25 2d 31 0d 04 ce 31 41  44 44 20 52 30 2c 52 30  |%-1...1ADD R0,R0|
00000c50  2c 52 32 2c 41 53 52 23  53 43 25 2d 31 3a 41 44  |,R2,ASR#SC%-1:AD|
00000c60  44 20 52 31 2c 52 31 2c  52 33 2c 41 53 52 23 53  |D R1,R1,R3,ASR#S|
00000c70  43 25 2d 31 0d 04 d8 31  53 55 42 20 52 31 2c 52  |C%-1...1SUB R1,R|
00000c80  31 2c 52 32 2c 41 53 52  23 53 43 25 2d 31 3a 41  |1,R2,ASR#SC%-1:A|
00000c90  44 44 20 52 30 2c 52 30  2c 52 33 2c 41 53 52 23  |DD R0,R0,R3,ASR#|
00000ca0  53 43 25 2d 31 0d 04 e2  38 41 44 44 20 52 32 2c  |SC%-1...8ADD R2,|
00000cb0  52 32 2c 23 32 3c 3c 41  43 25 2d 28 53 43 25 2d  |R2,#2<<AC%-(SC%-|
00000cc0  31 29 3a 5c 41 44 44 20  52 33 2c 52 33 2c 23 30  |1):\ADD R3,R3,#0|
00000cd0  3c 3c 41 43 25 2d 28 53  43 25 2d 31 29 0d 04 ec  |<<AC%-(SC%-1)...|
00000ce0  38 53 55 42 20 52 33 2c  52 33 2c 23 32 3c 3c 41  |8SUB R3,R3,#2<<A|
00000cf0  43 25 2d 28 53 43 25 2d  31 29 3a 5c 41 44 44 20  |C%-(SC%-1):\ADD |
00000d00  52 32 2c 52 32 2c 23 30  3c 3c 41 43 25 2d 28 53  |R2,R2,#0<<AC%-(S|
00000d10  43 25 2d 31 29 0d 04 f6  54 53 55 42 20 52 31 2c  |C%-1)...TSUB R1,|
00000d20  52 31 2c 23 32 2a 32 3c  3c 41 43 25 2d 28 53 43  |R1,#2*2<<AC%-(SC|
00000d30  25 2d 31 29 2d 28 53 43  25 2d 31 29 2d 31 3a 5c  |%-1)-(SC%-1)-1:\|
00000d40  41 44 44 20 52 30 2c 52  30 2c 23 30 2a 28 31 2d  |ADD R0,R0,#0*(1-|
00000d50  31 29 3c 3c 41 43 25 2d  28 53 43 25 2d 31 29 2d  |1)<<AC%-(SC%-1)-|
00000d60  28 53 43 25 2d 31 29 2d  31 0d 05 00 14 4c 44 52  |(SC%-1)-1....LDR|
00000d70  20 52 31 30 2c 73 63 72  61 64 64 72 25 0d 05 0a  | R10,scraddr%...|
00000d80  18 41 44 44 20 52 31 32  2c 52 31 30 2c 23 31 32  |.ADD R12,R10,#12|
00000d90  38 2a 33 32 30 0d 05 14  14 53 55 42 20 52 31 32  |8*320....SUB R12|
00000da0  2c 52 31 32 2c 23 33 32  30 0d 05 1e 14 41 44 44  |,R12,#320....ADD|
00000db0  20 52 31 32 2c 52 31 32  2c 23 31 32 38 0d 05 28  | R12,R12,#128..(|
00000dc0  13 4d 4f 56 20 52 31 31  2c 23 31 3c 3c 53 43 25  |.MOV R11,#1<<SC%|
00000dd0  0d 05 32 0b 2e 79 6c 6f  6f 70 25 0d 05 3c 1a 53  |..2..yloop%..<.S|
00000de0  55 42 20 52 31 31 2c 52  31 31 2c 23 31 3c 3c 31  |UB R11,R11,#1<<1|
00000df0  36 2b 53 43 25 0d 05 46  0b 2e 78 6c 6f 6f 70 25  |6+SC%..F..xloop%|
00000e00  0d 05 50 0f 4d 4f 56 20  52 39 2c 23 32 35 35 0d  |..P.MOV R9,#255.|
00000e10  05 5a 12 43 4d 50 20 52  30 2c 23 32 3c 3c 41 43  |.Z.CMP R0,#2<<AC|
00000e20  25 0d 05 64 14 43 4d 50  4c 54 20 52 31 2c 23 32  |%..d.CMPLT R1,#2|
00000e30  3c 3c 41 43 25 0d 05 6e  0f 42 47 45 20 65 73 63  |<<AC%..n.BGE esc|
00000e40  61 70 65 25 0d 05 78 12  43 4d 4e 20 52 30 2c 23  |ape%..x.CMN R0,#|
00000e50  32 3c 3c 41 43 25 0d 05  82 14 43 4d 4e 47 54 20  |2<<AC%....CMNGT |
00000e60  52 31 2c 23 32 3c 3c 41  43 25 0d 05 8c 0f 42 4c  |R1,#2<<AC%....BL|
00000e70  45 20 65 73 63 61 70 65  25 0d 05 96 1d 4d 4f 56  |E escape%....MOV|
00000e80  20 52 39 2c 52 31 2c 41  53 52 23 28 41 43 25 2b  | R9,R1,ASR#(AC%+|
00000e90  32 29 2d 53 43 25 0d 05  a0 16 41 44 44 20 52 39  |2)-SC%....ADD R9|
00000ea0  2c 52 39 2c 52 39 2c 41  53 4c 23 32 0d 05 aa 17  |,R9,R9,ASL#2....|
00000eb0  53 55 42 20 52 39 2c 52  31 32 2c 52 39 2c 41 53  |SUB R9,R12,R9,AS|
00000ec0  4c 23 36 0d 05 b4 23 4c  44 52 42 20 52 39 2c 5b  |L#6...#LDRB R9,[|
00000ed0  52 39 2c 52 30 2c 41 53  52 23 28 41 43 25 2b 32  |R9,R0,ASR#(AC%+2|
00000ee0  29 2d 53 43 25 5d 0d 05  be 11 53 55 42 53 20 52  |)-SC%]....SUBS R|
00000ef0  39 2c 52 39 2c 23 31 0d  05 c8 0f 4d 4f 56 4c 54  |9,R9,#1....MOVLT|
00000f00  20 52 39 2c 23 30 0d 05  d2 0c 2e 65 73 63 61 70  | R9,#0.....escap|
00000f10  65 25 0d 05 dc 14 53 54  52 42 20 52 39 2c 5b 52  |e%....STRB R9,[R|
00000f20  31 30 5d 2c 23 31 0d 05  e6 1e 3b 20 52 69 67 68  |10],#1....; Righ|
00000f30  74 20 61 20 70 69 78 65  6c 20 3d 20 31 3e 3e 53  |t a pixel = 1>>S|
00000f40  43 25 2d 32 0d 05 f0 31  41 44 44 20 52 30 2c 52  |C%-2...1ADD R0,R|
00000f50  30 2c 52 32 2c 41 53 52  23 53 43 25 2d 32 3a 41  |0,R2,ASR#SC%-2:A|
00000f60  44 44 20 52 31 2c 52 31  2c 52 33 2c 41 53 52 23  |DD R1,R1,R3,ASR#|
00000f70  53 43 25 2d 32 0d 05 fa  38 41 44 44 20 52 32 2c  |SC%-2...8ADD R2,|
00000f80  52 32 2c 23 32 3c 3c 41  43 25 2d 28 53 43 25 2d  |R2,#2<<AC%-(SC%-|
00000f90  32 29 3a 5c 41 44 44 20  52 33 2c 52 33 2c 23 30  |2):\ADD R3,R3,#0|
00000fa0  3c 3c 41 43 25 2d 28 53  43 25 2d 32 29 0d 06 04  |<<AC%-(SC%-2)...|
00000fb0  4c 41 44 44 20 52 30 2c  52 30 2c 23 32 3c 3c 41  |LADD R0,R0,#2<<A|
00000fc0  43 25 2d 28 53 43 25 2d  32 29 2d 28 53 43 25 2d  |C%-(SC%-2)-(SC%-|
00000fd0  32 29 2d 31 3a 5c 41 44  44 20 52 31 2c 52 31 2c  |2)-1:\ADD R1,R1,|
00000fe0  23 30 3c 3c 41 43 25 2d  28 53 43 25 2d 32 29 2d  |#0<<AC%-(SC%-2)-|
00000ff0  28 53 43 25 2d 32 29 2d  31 0d 06 0e 17 41 44 44  |(SC%-2)-1....ADD|
00001000  53 20 52 31 31 2c 52 31  31 2c 23 31 3c 3c 31 36  |S R11,R11,#1<<16|
00001010  0d 06 18 0e 42 4c 45 20  78 6c 6f 6f 70 25 0d 06  |....BLE xloop%..|
00001020  22 0c 3b 20 4c 65 66 74  20 34 0d 06 2c 29 53 55  |".; Left 4..,)SU|
00001030  42 20 52 30 2c 52 30 2c  52 32 2c 41 53 4c 23 32  |B R0,R0,R2,ASL#2|
00001040  3a 53 55 42 20 52 31 2c  52 31 2c 52 33 2c 41 53  |:SUB R1,R1,R3,AS|
00001050  4c 23 32 0d 06 36 2c 53  55 42 20 52 32 2c 52 32  |L#2..6,SUB R2,R2|
00001060  2c 23 32 2a 34 3c 3c 41  43 25 3a 5c 53 55 42 20  |,#2*4<<AC%:\SUB |
00001070  52 33 2c 52 33 2c 23 30  2a 34 3c 3c 41 43 25 0d  |R3,R3,#0*4<<AC%.|
00001080  06 40 34 41 44 44 20 52  30 2c 52 30 2c 23 32 2a  |.@4ADD R0,R0,#2*|
00001090  34 2a 34 3c 3c 41 43 25  2d 31 3a 5c 41 44 44 20  |4*4<<AC%-1:\ADD |
000010a0  52 31 2c 52 31 2c 23 30  2a 34 2a 34 3c 3c 41 43  |R1,R1,#0*4*4<<AC|
000010b0  25 2d 31 0d 06 4a 1d 3b  20 44 6f 77 6e 20 61 20  |%-1..J.; Down a |
000010c0  70 69 78 65 6c 20 3d 20  31 3e 3e 53 43 25 2d 32  |pixel = 1>>SC%-2|
000010d0  0d 06 54 31 53 55 42 20  52 31 2c 52 31 2c 52 32  |..T1SUB R1,R1,R2|
000010e0  2c 41 53 52 23 53 43 25  2d 32 3a 41 44 44 20 52  |,ASR#SC%-2:ADD R|
000010f0  30 2c 52 30 2c 52 33 2c  41 53 52 23 53 43 25 2d  |0,R0,R3,ASR#SC%-|
00001100  32 0d 06 5e 38 53 55 42  20 52 33 2c 52 33 2c 23  |2..^8SUB R3,R3,#|
00001110  32 3c 3c 41 43 25 2d 28  53 43 25 2d 32 29 3a 5c  |2<<AC%-(SC%-2):\|
00001120  41 44 44 20 52 32 2c 52  32 2c 23 30 3c 3c 41 43  |ADD R2,R2,#0<<AC|
00001130  25 2d 28 53 43 25 2d 32  29 0d 06 68 4c 53 55 42  |%-(SC%-2)..hLSUB|
00001140  20 52 30 2c 52 30 2c 23  32 3c 3c 41 43 25 2d 28  | R0,R0,#2<<AC%-(|
00001150  53 43 25 2d 32 29 2d 28  53 43 25 2d 32 29 2d 31  |SC%-2)-(SC%-2)-1|
00001160  3a 5c 53 55 42 20 52 31  2c 52 31 2c 23 30 3c 3c  |:\SUB R1,R1,#0<<|
00001170  41 43 25 2d 28 53 43 25  2d 32 29 2d 28 53 43 25  |AC%-(SC%-2)-(SC%|
00001180  2d 32 29 2d 31 0d 06 72  1d 41 44 44 20 52 31 30  |-2)-1..r.ADD R10|
00001190  2c 52 31 30 2c 23 33 32  30 2d 28 31 3c 3c 53 43  |,R10,#320-(1<<SC|
000011a0  25 29 0d 06 7c 13 53 55  42 53 20 52 31 31 2c 52  |%)..|.SUBS R11,R|
000011b0  31 31 2c 23 31 0d 06 86  0e 42 47 54 20 79 6c 6f  |11,#1....BGT ylo|
000011c0  6f 70 25 0d 06 90 13 4c  44 4d 46 44 20 52 31 33  |op%....LDMFD R13|
000011d0  21 2c 7b 50 43 7d 0d 06  9a 05 3a 0d 06 a4 35 5d  |!,{PC}....:...5]|
000011e0  3a e7 50 25 3e 63 6f 64  65 25 2b 63 6f 64 65 6c  |:.P%>code%+codel|
000011f0  65 6e 25 8c 85 32 35 35  2c 22 43 6f 64 65 20 69  |en%..255,"Code i|
00001200  73 6e 27 74 20 62 69 67  20 65 6e 6f 75 67 68 22  |sn't big enough"|
00001210  0d 06 ae 05 ed 0d 06 b8  05 e1 0d ff              |............|
0000121c