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

Turnbull/Sensible/!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/Sensible/!RTJulia/!RunImage
Read OK:
File size: 16BA bytes
Load address: 0000
Exec address: 0000
File contents
   10MODE13
   20PROCconstants
   30DIMspace%spacelen%:P%=space%
   40code%=P%:P%+=codelen%
   50map%=P%:P%+=8<<SC%+SC%-1
   60queue%=P%:P%+=4<<SC%+SC%-1
   70IFP%>space%+spacelen%THENERROR255,"Space isn't big enough"
   80PROCassemble
   90CALLreadvduvars%
  100PROCchoices
  110PROCdrawmandy
  120PX%=1152:PY%=128:GCOL3,63TINT255
  130LINEPX%,PY%-8,PX%,PY%+8:LINEPX%-8,PY%,PX%+8,PY%
  140IFNOTanim%THEN
  150VDU28,32,23,39,8:CLS
  160PRINT'''"Mouse"'"buttons"'"increase"'"mouse"'"speed"''"Left x16"'"Mid   x4"'"Right x2"
  170ENDIF
  180VDU28,32,7,39,0:CLS
  190REPEAT
  200IFanim%THEN
  210A=2*PI*(TIME MOD6000)/6000
  220!realc%=(1<<AC%)*(0.5*COS(A)-0.25*COS(2*A)-0.01*SIN(3*A/2))
  230!imagc%=(1<<AC%)*(0.5*SIN(A)-0.25*SIN(2*A)+0.01*COS(3*A/2))
  240ELSE
  250MOUSEX%,Y%,Z%:MOUSETO640,512
  260IFNOTINKEY(-1)THEN!realc%+=X%-640<<(AC%+1)-20+Z%:!imagc%+=Y%-512<<(AC%+1)-20+Z%
  270IF!realc%>(1<<AC%)-1THEN!realc%=(1<<AC%)-1ELSEIF!realc%<(-2<<AC%)THEN!realc%=-2<<AC%
  280IF!imagc%>(3<<AC%-1)-1THEN!imagc%=(3<<AC%-1)-1ELSEIF!imagc%<(-3<<AC%-1)THEN!imagc%=-3<<AC%-1
  290ENDIF
  300CLS:A=!realc%/(1<<AC%):B=!imagc%/(1<<AC%)
  310PRINTTAB(0,0);"Real"'INT(A*1E5)/1E5
  320PRINTTAB(0,4);"Imagine"'INT(B*1E5)/1E5
  330LINEPX%,PY%-8,PX%,PY%+8:LINEPX%-8,PY%,PX%+8,PY%
  340PX%=1152+128*(A+0.5)/1.5:PY%=128+128*B/1.5
  350LINEPX%,PY%-8,PX%,PY%+8:LINEPX%-8,PY%,PX%+8,PY%
  360CALLinitmap%
  370CALLincest%
  380CALLblit%
  390UNTIL0
  400END
  410:
  420:
  430DEFPROCconstants
  440spacelen%=&D0000
  450codelen%=&4000
  460AC%=28:SC%=8
  470ENDPROC
  480:
  490DEFPROCchoices
  500PRINT"Press A for a preset animation or M for mouse control"
  510REPEAT:A$=GET$:UNTILA$="A"ORA$="M":anim%=A$="A"
  520ENDPROC
  530:
  540DEFPROCdrawmandy
  550*FX113,2
  560*FX112,2
  570CLS
  580PRINTTAB(0,8);"Real time Julia sets";TAB(0,12);"by Alistair Turnbull"
  590PRINTTAB(0,20);"Please wait a moment..."
  600FORX%=-126TO126STEP4
  610*FX112,2
  620PRINTTAB(20,24);INT(100*(X%+128)/256);"% done    "
  630*FX112,1
  640FORY%=-126TO126STEP4
  650A=1.5*X%/128-0.5:B=1.5*Y%/128:X=A:Y=B:I%=0
  660WHILEABS(X)<2ANDABS(Y)<2ANDI%<32:O=X:X=X*X-Y*Y+A:Y=2*O*Y+B:I%+=1:ENDWHILE
  670IFI%=32THENGCOL0,0TINT0ELSEGCOL0,I%TINT255
  680POINTX%+1152,Y%+128:NEXT,
  690*FX113,1
  700ENDPROC
  710:
  720DEFFNadr(R%,A%,I%)
  730IF(P%AND3)<>0THENPRINT"Code isn't word aligned!":END
  740IF(T%AND2)=0THENP%+=I%<<2:=T%
  750LOCALN%,O%,H%,U%:H%=A%-(P%+8):N%=0:O%=15
  760FORU%=1TOI%:IFH%=0THEN
  770[OPT T%:MOV R%,O%:]
  780ELSEWHILE(H%AND3)=0:H%=H%>>2:N%+=2:ENDWHILE
  790IF(H%AND256)=0THEN
  800[OPT T%:ADD R%,O%,#(H%AND255)<<N%:]:H%-=H%AND255
  810ELSE[OPT T%:SUB R%,O%,#(256-H%AND255)<<N%:]:H%+=256-H%AND255
  820ENDIF
  830ENDIF:O%=R%:NEXT
  840IFH%<>0THENPRINT"Could not ADR to ";A%;" in ";I%;" instructions (R%=";R%;")":END
  850=T%
  860:
  870DEFFNregisterj(J%,N%)
  880J%!(N%<<2)=P%-J%
  890=T%
  900:
  910DEFPROCassemble
  920FORT%=0TO2STEP2:P%=code%
  930[OPT T%
  940:
  950.vduvars%:EQUD 148:EQUD -1
  960.scraddr%:EQUD -1
  970:
  980.readvduvars%
  990ADR R0,vduvars%
 1000ADR R1,scraddr%
 1010SWI "OS_ReadVduVariables"
 1020MOV PC,R14
 1030:
 1040; Mode 13 only
 1050:
 1060.blit%
 1070STMFD R13!,{R14}
 1080LDR R12,scraddr%
 1090ADD R11,R12,#256*320
 1100OPT FNadr(9,map%,2)
 1110MOV R10,#128
 1120.yloop%
 1130SUB R11,R11,#320-256
 1140SUB R10,R10,#256<<16
 1150.xloop%
 1160LDR R0,[R9],#8<<SC%-8
 1170TST R0,#1
 1180MVN R0,R0,LSR#1
 1190MOVEQ R0,#0
 1200STRB R0,[R12],#1
 1210STRB R0,[R11,#-1]!
 1220ADDS R10,R10,#1<<16
 1230BLE xloop%
 1240ADD R9,R9,#(8<<SC%+SC%-8)-(8<<SC%)
 1250ADD R12,R12,#320-256
 1260SUBS R10,R10,#1
 1270BGT yloop%
 1280LDMFD R13!,{PC}
 1290:
 1300.realc%:EQUD 0
 1310.imagc%:EQUD 0
 1320:
 1330.initmap%
 1340STMFD R13!,{R14}
 1350LDR R0,realc%
 1360LDR R1,imagc%
 1370MOV R2,#0
 1380MOV R3,#0
 1390; Left 2
 1400SUB R0,R0,R2,ASL#1-1:SUB R1,R1,R3,ASL#1-1
 1410SUB R2,R2,#2*2<<AC%:SUB R3,R3,#0*2<<AC%
 1420SUB R0,R0,R2,ASL#1-1:SUB R1,R1,R3,ASL#1-1
 1430; Up 2
 1440ADD R1,R1,R2,ASL#1-1:SUB R0,R0,R3,ASL#1-1
 1450ADD R3,R3,#2*2<<AC%:SUB R2,R2,#0*2<<AC%
 1460ADD R1,R1,R2,ASL#1-1:SUB R0,R0,R3,ASL#1-1
 1470; Right 1/2 pixel = 1>>SC%-1
 1480ADD R0,R0,R2,ASR#SC%-1+1:ADD R1,R1,R3,ASR#SC%-1+1
 1490ADD R2,R2,#2*1<<AC%-(SC%-1):ADD R3,R3,#0*1<<AC%-(SC%-1)
 1500ADD R0,R0,R2,ASR#SC%-1+1:ADD R1,R1,R3,ASR#SC%-1+1
 1510; Down 1/2 a pixel = 1>>SC%-1
 1520SUB R1,R1,R2,ASR#SC%-1+1:ADD R0,R0,R3,ASR#SC%-1+1
 1530SUB R3,R3,#2*1<<AC%-(SC%-1):ADD R2,R2,#0*1<<AC%-(SC%-1)
 1540SUB R1,R1,R2,ASR#SC%-1+1:ADD R0,R0,R3,ASR#SC%-1+1
 1550; Main loop
 1560OPT FNadr(12,map%,2)
 1570MOV R11,R12
 1580MOV R10,#1<<SC%-1
 1590.yloop%
 1600SUB R10,R10,#1<<16+SC%
 1610.xloop%
 1620MOV R6,#1
 1630MOV R4,R0,ASR#(AC%+2)-SC%
 1640MOVS R5,R1,ASR#(AC%+2)-SC%
 1650MVNMI R4,R4
 1660MVNPL R5,R5
 1670ADDS R4,R4,#1<<SC%-1
 1680ADDGES R5,R5,#1<<SC%-1
 1690BLT escape%
 1700CMP R4,#1<<SC%
 1710CMPLT R5,#1<<SC%:; ***
 1720BGE escape%
 1730ADD R7,R11,R5,ASL#3+SC%
 1740ADD R7,R7,R4,ASL#3
 1750MOV R6,#1<<1
 1760.escape%
 1770STMIA R12!,{R6-R7}
 1780; Right a pixel = 1<<SC%-2
 1790ADD R0,R0,R2,ASR#SC%-2+1:ADD R1,R1,R3,ASR#SC%-2+1
 1800ADD R2,R2,#2*1<<AC%-(SC%-2):\ADD R3,R3,#0*1<<AC%-(SC%-2)
 1810ADD R0,R0,R2,ASR#SC%-2+1:ADD R1,R1,R3,ASR#SC%-2+1
 1820ADDS R10,R10,#1<<16
 1830BLE xloop%
 1840; Left 4
 1850SUB R0,R0,R2,ASL#2-1:SUB R1,R1,R3,ASL#2-1
 1860SUB R2,R2,#2*4<<AC%:\SUB R3,R3,#0*4<<AC%
 1870SUB R0,R0,R2,ASL#2-1:SUB R1,R1,R3,ASL#2-1
 1880; Down a pixel = 1<<SC%-2
 1890SUB R1,R1,R2,ASR#SC%-2+1:ADD R0,R0,R3,ASR#SC%-2+1
 1900SUB R3,R3,#2*1<<AC%-(SC%-2):\ADD R2,R2,#0*1<<AC%-(SC%-2)
 1910SUB R1,R1,R2,ASR#SC%-2+1:ADD R0,R0,R3,ASR#SC%-2+1
 1920SUBS R10,R10,#1
 1930BGT yloop%
 1940LDMFD R13!,{PC}
 1950:
 1960.incest%
 1970STMFD R13!,{R14}
 1980OPT FNadr(12,map%+(8<<SC%+SC%-1),2)
 1990OPT FNadr(10,queue%,2)
 2000MOV R11,#1<<SC%+SC%-1
 2010.loop%
 2020LDMDB R12!,{R0,R1}
 2030TST R0,#1
 2040BNE skipNB1%
 2050LDMIA R1,{R2,R3}
 2060TST R2,#1
 2070BNE skipNB2%
 2080LDMIA R3,{R4,R5}
 2090TST R4,#1
 2100BNE skipNB3%
 2110LDMIA R5,{R6,R7}
 2120TST R6,#1
 2130BNE skipNB4%
 2140LDMIA R7,{R8,R9}
 2150TST R8,#1
 2160STREQ R12,[R10],#4
 2170ADD R6,R6,R8
 2180MOV R7,R9
 2190STMIA R5,{R6,R7}
 2200.skipNB4%
 2210ADD R4,R4,R6
 2220MOV R5,R7
 2230STMIA R3,{R4,R5}
 2240.skipNB3%
 2250ADD R2,R2,R4
 2260MOV R3,R5
 2270STMIA R1,{R2,R3}
 2280.skipNB2%
 2290ADD R0,R0,R2
 2300MOV R1,R3
 2310STMIA R12,{R0,R1}
 2320.skipNB1%
 2330SUBS R11,R11,#1
 2340BGT loop%
 2350OPT FNadr(11,queue%,3)
 2360.qloop%
 2370CMP R10,R11
 2380LDMLEFD R13!,{PC}
 2390LDR R12,[R10,#-4]!
 2400LDMIA R12,{R0,R1}
 2410TST R0,#1
 2420BNE qloop%
 2430LDMIA R1,{R2,R3}
 2440ADD R0,R0,R2
 2450STMIA R12,{R0,R3}
 2460B qloop%
 2470:
 2480]:IFP%>code%+codelen%THENERROR255,"Code isn't big enough"
 2490NEXT
 2500ENDPROC

�13
�constants
�space%spacelen%:P%=space%
(code%=P%:P%+=codelen%
2map%=P%:P%+=8<<SC%+SC%-1
<queue%=P%:P%+=4<<SC%+SC%-1
F6�P%>space%+spacelen%��255,"Space isn't big enough"
P
�assemble
Z�readvduvars%
d�choices
n�drawmandy
xPX%=1152:PY%=128:�3,63Ȝ255
�-�PX%,PY%-8,PX%,PY%+8:�PX%-8,PY%,PX%+8,PY%
��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%)
6�0,0);"Real"'�(A*1E5)/1E5
@!�0,4);"Imagine"'�(B*1E5)/1E5
J-�PX%,PY%-8,PX%,PY%+8:�PX%-8,PY%,PX%+8,PY%
T.PX%=1152+128*(A+0.5)/1.5:PY%=128+128*B/1.5
^-�PX%,PY%-8,PX%,PY%+8:�PX%-8,PY%,PX%+8,PY%
h
�initmap%
r�incest%
|
�blit%
��0
��
�:
�:
���constants
�spacelen%=&D0000
�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
0*FX112,2
:�
D?�0,8);"Real time Julia sets";�0,12);"by Alistair Turnbull"
N%�0,20);"Please wait a moment..."
X�X%=-126�126�4
b*FX112,2
l-�20,24);�(100*(X%+128)/256);"% done    "
v*FX112,1
��Y%=-126�126�4
�.A=1.5*X%/128-0.5:B=1.5*Y%/128:X=A:Y=B:I%=0
�;ȕ�(X)<2��(Y)<2�I%<32:O=X:X=X*X-Y*Y+A:Y=2*O*Y+B:I%+=1:�
��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
4�
>
�:O%=R%:�
HJ�H%<>0��"Could not ADR to ";A%;" in ";I%;" instructions (R%=";R%;")":�
R=T%
\:
fݤregisterj(J%,N%)
pJ%!(N%<<2)=P%-J%
z=T%
�:
���assemble
��T%=0�2�2:P%=code%
�[OPT T%
�:
�.vduvars%:EQUD 148:EQUD -1
�.scraddr%:EQUD -1
�:
�.readvduvars%
�ADR R0,vduvars%
�ADR R1,scraddr%
�SWI "OS_ReadVduVariables"
�MOV PC,R14
:
; Mode 13 only
:
$
.blit%
.STMFD R13!,{R14}
8LDR R12,scraddr%
BADD R11,R12,#256*320
LOPT �adr(9,map%,2)
VMOV R10,#128
`.yloop%
jSUB R11,R11,#320-256
tSUB R10,R10,#256<<16
~.xloop%
�LDR R0,[R9],#8<<SC%-8
�
TST R0,#1
�MVN R0,R0,LSR#1
��Q R0,#0
�STRB R0,[R12],#1
�STRB R0,[R11,#-1]!
�ADDS R10,R10,#1<<16
�BLE xloop%
�&ADD R9,R9,#(8<<SC%+SC%-8)-(8<<SC%)
�ADD R12,R12,#320-256
�SUBS R10,R10,#1
�BGT yloop%
LDMFD R13!,{PC}

:
.realc%:EQUD 0
.imagc%:EQUD 0
(:
2
.initmap%
<STMFD R13!,{R14}
FLDR R0,realc%
PLDR R1,imagc%
Z
MOV R2,#0
d
MOV R3,#0
n; Left 2
x-SUB R0,R0,R2,ASL#1-1:SUB R1,R1,R3,ASL#1-1
�+SUB R2,R2,#2*2<<AC%:SUB R3,R3,#0*2<<AC%
�-SUB R0,R0,R2,ASL#1-1:SUB R1,R1,R3,ASL#1-1
�
; Up 2
�-ADD R1,R1,R2,ASL#1-1:SUB R0,R0,R3,ASL#1-1
�+ADD R3,R3,#2*2<<AC%:SUB R2,R2,#0*2<<AC%
�-ADD R1,R1,R2,ASL#1-1:SUB R0,R0,R3,ASL#1-1
� ; Right 1/2 pixel = 1>>SC%-1
�5ADD R0,R0,R2,ASR#SC%-1+1:ADD R1,R1,R3,ASR#SC%-1+1
�;ADD R2,R2,#2*1<<AC%-(SC%-1):ADD R3,R3,#0*1<<AC%-(SC%-1)
�5ADD R0,R0,R2,ASR#SC%-1+1:ADD R1,R1,R3,ASR#SC%-1+1
�!; Down 1/2 a pixel = 1>>SC%-1
�5SUB R1,R1,R2,ASR#SC%-1+1:ADD R0,R0,R3,ASR#SC%-1+1
�;SUB R3,R3,#2*1<<AC%-(SC%-1):ADD R2,R2,#0*1<<AC%-(SC%-1)
5SUB R1,R1,R2,ASR#SC%-1+1:ADD R0,R0,R3,ASR#SC%-1+1
; Main loop
OPT �adr(12,map%,2)
"MOV R11,R12
,MOV R10,#1<<SC%-1
6.yloop%
@SUB R10,R10,#1<<16+SC%
J.xloop%
T
MOV R6,#1
^MOV R4,R0,ASR#(AC%+2)-SC%
hMOVS R5,R1,ASR#(AC%+2)-SC%
rMVNMI R4,R4
|MVNPL R5,R5
�ADDS R4,R4,#1<<SC%-1
�ADDGES R5,R5,#1<<SC%-1
�BLT escape%
�CMP R4,#1<<SC%
�CMPLT R5,#1<<SC%:; ***
�BGE escape%
�ADD R7,R11,R5,ASL#3+SC%
�ADD R7,R7,R4,ASL#3
�MOV R6,#1<<1
�.escape%
�STMIA R12!,{R6-R7}
�; Right a pixel = 1<<SC%-2
�5ADD R0,R0,R2,ASR#SC%-2+1:ADD R1,R1,R3,ASR#SC%-2+1
<ADD R2,R2,#2*1<<AC%-(SC%-2):\ADD R3,R3,#0*1<<AC%-(SC%-2)
5ADD R0,R0,R2,ASR#SC%-2+1:ADD R1,R1,R3,ASR#SC%-2+1
ADDS R10,R10,#1<<16
&BLE xloop%
0; Left 4
:-SUB R0,R0,R2,ASL#2-1:SUB R1,R1,R3,ASL#2-1
D,SUB R2,R2,#2*4<<AC%:\SUB R3,R3,#0*4<<AC%
N-SUB R0,R0,R2,ASL#2-1:SUB R1,R1,R3,ASL#2-1
X; Down a pixel = 1<<SC%-2
b5SUB R1,R1,R2,ASR#SC%-2+1:ADD R0,R0,R3,ASR#SC%-2+1
l<SUB R3,R3,#2*1<<AC%-(SC%-2):\ADD R2,R2,#0*1<<AC%-(SC%-2)
v5SUB R1,R1,R2,ASR#SC%-2+1:ADD R0,R0,R3,ASR#SC%-2+1
�SUBS R10,R10,#1
�BGT yloop%
�LDMFD R13!,{PC}
�:
�.incest%
�STMFD R13!,{R14}
�&OPT �adr(12,map%+(8<<SC%+SC%-1),2)
�OPT �adr(10,queue%,2)
�MOV R11,#1<<SC%+SC%-1
�
.loop%
�LDMDB R12!,{R0,R1}
�
TST R0,#1
�BNE skipNB1%
LDMIA R1,{R2,R3}

TST R2,#1
BNE skipNB2%
 LDMIA R3,{R4,R5}
*
TST R4,#1
4BNE skipNB3%
>LDMIA R5,{R6,R7}
H
TST R6,#1
RBNE skipNB4%
\LDMIA R7,{R8,R9}
f
TST R8,#1
pSTREQ R12,[R10],#4
zADD R6,R6,R8
�
MOV R7,R9
�STMIA R5,{R6,R7}
�
.skipNB4%
�ADD R4,R4,R6
�
MOV R5,R7
�STMIA R3,{R4,R5}
�
.skipNB3%
�ADD R2,R2,R4
�
MOV R3,R5
�STMIA R1,{R2,R3}
�
.skipNB2%
�ADD R0,R0,R2
�
MOV R1,R3
	STMIA R12,{R0,R1}
	
.skipNB1%
	SUBS R11,R11,#1
	$
BGT loop%
	.OPT �adr(11,queue%,3)
	8.qloop%
	BCMP R10,R11
	LLDMLEFD R13!,{PC}
	VLDR R12,[R10,#-4]!
	`LDMIA R12,{R0,R1}
	j
TST R0,#1
	tBNE qloop%
	~LDMIA R1,{R2,R3}
	�ADD R0,R0,R2
	�STMIA R12,{R0,R3}
	�B qloop%
	�:
	�5]:�P%>code%+codelen%��255,"Code isn't big enough"
	��
	��
�
00000000  0d 00 0a 07 eb 31 33 0d  00 14 0e f2 63 6f 6e 73  |.....13.....cons|
00000010  74 61 6e 74 73 0d 00 1e  1e de 73 70 61 63 65 25  |tants.....space%|
00000020  73 70 61 63 65 6c 65 6e  25 3a 50 25 3d 73 70 61  |spacelen%:P%=spa|
00000030  63 65 25 0d 00 28 19 63  6f 64 65 25 3d 50 25 3a  |ce%..(.code%=P%:|
00000040  50 25 2b 3d 63 6f 64 65  6c 65 6e 25 0d 00 32 1c  |P%+=codelen%..2.|
00000050  6d 61 70 25 3d 50 25 3a  50 25 2b 3d 38 3c 3c 53  |map%=P%:P%+=8<<S|
00000060  43 25 2b 53 43 25 2d 31  0d 00 3c 1e 71 75 65 75  |C%+SC%-1..<.queu|
00000070  65 25 3d 50 25 3a 50 25  2b 3d 34 3c 3c 53 43 25  |e%=P%:P%+=4<<SC%|
00000080  2b 53 43 25 2d 31 0d 00  46 36 e7 50 25 3e 73 70  |+SC%-1..F6.P%>sp|
00000090  61 63 65 25 2b 73 70 61  63 65 6c 65 6e 25 8c 85  |ace%+spacelen%..|
000000a0  32 35 35 2c 22 53 70 61  63 65 20 69 73 6e 27 74  |255,"Space isn't|
000000b0  20 62 69 67 20 65 6e 6f  75 67 68 22 0d 00 50 0d  | big enough"..P.|
000000c0  f2 61 73 73 65 6d 62 6c  65 0d 00 5a 11 d6 72 65  |.assemble..Z..re|
000000d0  61 64 76 64 75 76 61 72  73 25 0d 00 64 0c f2 63  |advduvars%..d..c|
000000e0  68 6f 69 63 65 73 0d 00  6e 0e f2 64 72 61 77 6d  |hoices..n..drawm|
000000f0  61 6e 64 79 0d 00 78 1f  50 58 25 3d 31 31 35 32  |andy..x.PX%=1152|
00000100  3a 50 59 25 3d 31 32 38  3a e6 33 2c 36 33 c8 9c  |:PY%=128:.3,63..|
00000110  32 35 35 0d 00 82 2d 86  50 58 25 2c 50 59 25 2d  |255...-.PX%,PY%-|
00000120  38 2c 50 58 25 2c 50 59  25 2b 38 3a 86 50 58 25  |8,PX%,PY%+8:.PX%|
00000130  2d 38 2c 50 59 25 2c 50  58 25 2b 38 2c 50 59 25  |-8,PY%,PX%+8,PY%|
00000140  0d 00 8c 0c e7 ac 61 6e  69 6d 25 8c 0d 00 96 14  |......anim%.....|
00000150  ef 32 38 2c 33 32 2c 32  33 2c 33 39 2c 38 3a db  |.28,32,23,39,8:.|
00000160  0d 00 a0 56 f1 27 27 27  22 4d 6f 75 73 65 22 27  |...V.'''"Mouse"'|
00000170  22 62 75 74 74 6f 6e 73  22 27 22 69 6e 63 72 65  |"buttons"'"incre|
00000180  61 73 65 22 27 22 6d 6f  75 73 65 22 27 22 73 70  |ase"'"mouse"'"sp|
00000190  65 65 64 22 27 27 22 4c  65 66 74 20 78 31 36 22  |eed"''"Left x16"|
000001a0  27 22 4d 69 64 20 20 20  78 34 22 27 22 52 69 67  |'"Mid   x4"'"Rig|
000001b0  68 74 20 78 32 22 0d 00  aa 05 cd 0d 00 b4 13 ef  |ht x2"..........|
000001c0  32 38 2c 33 32 2c 37 2c  33 39 2c 30 3a db 0d 00  |28,32,7,39,0:...|
000001d0  be 05 f5 0d 00 c8 0b e7  61 6e 69 6d 25 8c 0d 00  |........anim%...|
000001e0  d2 18 41 3d 32 2a af 2a  28 91 20 83 36 30 30 30  |..A=2*.*(. .6000|
000001f0  29 2f 36 30 30 30 0d 00  dc 39 21 72 65 61 6c 63  |)/6000...9!realc|
00000200  25 3d 28 31 3c 3c 41 43  25 29 2a 28 30 2e 35 2a  |%=(1<<AC%)*(0.5*|
00000210  9b 28 41 29 2d 30 2e 32  35 2a 9b 28 32 2a 41 29  |.(A)-0.25*.(2*A)|
00000220  2d 30 2e 30 31 2a b5 28  33 2a 41 2f 32 29 29 0d  |-0.01*.(3*A/2)).|
00000230  00 e6 39 21 69 6d 61 67  63 25 3d 28 31 3c 3c 41  |..9!imagc%=(1<<A|
00000240  43 25 29 2a 28 30 2e 35  2a b5 28 41 29 2d 30 2e  |C%)*(0.5*.(A)-0.|
00000250  32 35 2a b5 28 32 2a 41  29 2b 30 2e 30 31 2a 9b  |25*.(2*A)+0.01*.|
00000260  28 33 2a 41 2f 32 29 29  0d 00 f0 05 cc 0d 00 fa  |(3*A/2))........|
00000270  19 c8 97 58 25 2c 59 25  2c 5a 25 3a c8 97 b8 36  |...X%,Y%,Z%:...6|
00000280  34 30 2c 35 31 32 0d 01  04 49 e7 ac a6 28 2d 31  |40,512...I...(-1|
00000290  29 8c 21 72 65 61 6c 63  25 2b 3d 58 25 2d 36 34  |).!realc%+=X%-64|
000002a0  30 3c 3c 28 41 43 25 2b  31 29 2d 32 30 2b 5a 25  |0<<(AC%+1)-20+Z%|
000002b0  3a 21 69 6d 61 67 63 25  2b 3d 59 25 2d 35 31 32  |:!imagc%+=Y%-512|
000002c0  3c 3c 28 41 43 25 2b 31  29 2d 32 30 2b 5a 25 0d  |<<(AC%+1)-20+Z%.|
000002d0  01 0e 4d e7 21 72 65 61  6c 63 25 3e 28 31 3c 3c  |..M.!realc%>(1<<|
000002e0  41 43 25 29 2d 31 8c 21  72 65 61 6c 63 25 3d 28  |AC%)-1.!realc%=(|
000002f0  31 3c 3c 41 43 25 29 2d  31 8b e7 21 72 65 61 6c  |1<<AC%)-1..!real|
00000300  63 25 3c 28 2d 32 3c 3c  41 43 25 29 8c 21 72 65  |c%<(-2<<AC%).!re|
00000310  61 6c 63 25 3d 2d 32 3c  3c 41 43 25 0d 01 18 55  |alc%=-2<<AC%...U|
00000320  e7 21 69 6d 61 67 63 25  3e 28 33 3c 3c 41 43 25  |.!imagc%>(3<<AC%|
00000330  2d 31 29 2d 31 8c 21 69  6d 61 67 63 25 3d 28 33  |-1)-1.!imagc%=(3|
00000340  3c 3c 41 43 25 2d 31 29  2d 31 8b e7 21 69 6d 61  |<<AC%-1)-1..!ima|
00000350  67 63 25 3c 28 2d 33 3c  3c 41 43 25 2d 31 29 8c  |gc%<(-3<<AC%-1).|
00000360  21 69 6d 61 67 63 25 3d  2d 33 3c 3c 41 43 25 2d  |!imagc%=-3<<AC%-|
00000370  31 0d 01 22 05 cd 0d 01  2c 2b db 3a 41 3d 21 72  |1.."....,+.:A=!r|
00000380  65 61 6c 63 25 2f 28 31  3c 3c 41 43 25 29 3a 42  |ealc%/(1<<AC%):B|
00000390  3d 21 69 6d 61 67 63 25  2f 28 31 3c 3c 41 43 25  |=!imagc%/(1<<AC%|
000003a0  29 0d 01 36 1e f1 8a 30  2c 30 29 3b 22 52 65 61  |)..6...0,0);"Rea|
000003b0  6c 22 27 a8 28 41 2a 31  45 35 29 2f 31 45 35 0d  |l"'.(A*1E5)/1E5.|
000003c0  01 40 21 f1 8a 30 2c 34  29 3b 22 49 6d 61 67 69  |.@!..0,4);"Imagi|
000003d0  6e 65 22 27 a8 28 42 2a  31 45 35 29 2f 31 45 35  |ne"'.(B*1E5)/1E5|
000003e0  0d 01 4a 2d 86 50 58 25  2c 50 59 25 2d 38 2c 50  |..J-.PX%,PY%-8,P|
000003f0  58 25 2c 50 59 25 2b 38  3a 86 50 58 25 2d 38 2c  |X%,PY%+8:.PX%-8,|
00000400  50 59 25 2c 50 58 25 2b  38 2c 50 59 25 0d 01 54  |PY%,PX%+8,PY%..T|
00000410  2e 50 58 25 3d 31 31 35  32 2b 31 32 38 2a 28 41  |.PX%=1152+128*(A|
00000420  2b 30 2e 35 29 2f 31 2e  35 3a 50 59 25 3d 31 32  |+0.5)/1.5:PY%=12|
00000430  38 2b 31 32 38 2a 42 2f  31 2e 35 0d 01 5e 2d 86  |8+128*B/1.5..^-.|
00000440  50 58 25 2c 50 59 25 2d  38 2c 50 58 25 2c 50 59  |PX%,PY%-8,PX%,PY|
00000450  25 2b 38 3a 86 50 58 25  2d 38 2c 50 59 25 2c 50  |%+8:.PX%-8,PY%,P|
00000460  58 25 2b 38 2c 50 59 25  0d 01 68 0d d6 69 6e 69  |X%+8,PY%..h..ini|
00000470  74 6d 61 70 25 0d 01 72  0c d6 69 6e 63 65 73 74  |tmap%..r..incest|
00000480  25 0d 01 7c 0a d6 62 6c  69 74 25 0d 01 86 06 fd  |%..|..blit%.....|
00000490  30 0d 01 90 05 e0 0d 01  9a 05 3a 0d 01 a4 05 3a  |0.........:....:|
000004a0  0d 01 ae 0f dd f2 63 6f  6e 73 74 61 6e 74 73 0d  |......constants.|
000004b0  01 b8 14 73 70 61 63 65  6c 65 6e 25 3d 26 44 30  |...spacelen%=&D0|
000004c0  30 30 30 0d 01 c2 12 63  6f 64 65 6c 65 6e 25 3d  |000....codelen%=|
000004d0  26 34 30 30 30 0d 01 cc  10 41 43 25 3d 32 38 3a  |&4000....AC%=28:|
000004e0  53 43 25 3d 38 0d 01 d6  05 e1 0d 01 e0 05 3a 0d  |SC%=8.........:.|
000004f0  01 ea 0d dd f2 63 68 6f  69 63 65 73 0d 01 f4 3c  |.....choices...<|
00000500  f1 22 50 72 65 73 73 20  41 20 66 6f 72 20 61 20  |."Press A for a |
00000510  70 72 65 73 65 74 20 61  6e 69 6d 61 74 69 6f 6e  |preset animation|
00000520  20 6f 72 20 4d 20 66 6f  72 20 6d 6f 75 73 65 20  | or M for mouse |
00000530  63 6f 6e 74 72 6f 6c 22  0d 01 fe 26 f5 3a 41 24  |control"...&.:A$|
00000540  3d be 3a fd 41 24 3d 22  41 22 84 41 24 3d 22 4d  |=.:.A$="A".A$="M|
00000550  22 3a 61 6e 69 6d 25 3d  41 24 3d 22 41 22 0d 02  |":anim%=A$="A"..|
00000560  08 05 e1 0d 02 12 05 3a  0d 02 1c 0f dd f2 64 72  |.......:......dr|
00000570  61 77 6d 61 6e 64 79 0d  02 26 0c 2a 46 58 31 31  |awmandy..&.*FX11|
00000580  33 2c 32 0d 02 30 0c 2a  46 58 31 31 32 2c 32 0d  |3,2..0.*FX112,2.|
00000590  02 3a 05 db 0d 02 44 3f  f1 8a 30 2c 38 29 3b 22  |.:....D?..0,8);"|
000005a0  52 65 61 6c 20 74 69 6d  65 20 4a 75 6c 69 61 20  |Real time Julia |
000005b0  73 65 74 73 22 3b 8a 30  2c 31 32 29 3b 22 62 79  |sets";.0,12);"by|
000005c0  20 41 6c 69 73 74 61 69  72 20 54 75 72 6e 62 75  | Alistair Turnbu|
000005d0  6c 6c 22 0d 02 4e 25 f1  8a 30 2c 32 30 29 3b 22  |ll"..N%..0,20);"|
000005e0  50 6c 65 61 73 65 20 77  61 69 74 20 61 20 6d 6f  |Please wait a mo|
000005f0  6d 65 6e 74 2e 2e 2e 22  0d 02 58 12 e3 58 25 3d  |ment..."..X..X%=|
00000600  2d 31 32 36 b8 31 32 36  88 34 0d 02 62 0c 2a 46  |-126.126.4..b.*F|
00000610  58 31 31 32 2c 32 0d 02  6c 2d f1 8a 32 30 2c 32  |X112,2..l-..20,2|
00000620  34 29 3b a8 28 31 30 30  2a 28 58 25 2b 31 32 38  |4);.(100*(X%+128|
00000630  29 2f 32 35 36 29 3b 22  25 20 64 6f 6e 65 20 20  |)/256);"% done  |
00000640  20 20 22 0d 02 76 0c 2a  46 58 31 31 32 2c 31 0d  |  "..v.*FX112,1.|
00000650  02 80 12 e3 59 25 3d 2d  31 32 36 b8 31 32 36 88  |....Y%=-126.126.|
00000660  34 0d 02 8a 2e 41 3d 31  2e 35 2a 58 25 2f 31 32  |4....A=1.5*X%/12|
00000670  38 2d 30 2e 35 3a 42 3d  31 2e 35 2a 59 25 2f 31  |8-0.5:B=1.5*Y%/1|
00000680  32 38 3a 58 3d 41 3a 59  3d 42 3a 49 25 3d 30 0d  |28:X=A:Y=B:I%=0.|
00000690  02 94 3b c8 95 94 28 58  29 3c 32 80 94 28 59 29  |..;...(X)<2..(Y)|
000006a0  3c 32 80 49 25 3c 33 32  3a 4f 3d 58 3a 58 3d 58  |<2.I%<32:O=X:X=X|
000006b0  2a 58 2d 59 2a 59 2b 41  3a 59 3d 32 2a 4f 2a 59  |*X-Y*Y+A:Y=2*O*Y|
000006c0  2b 42 3a 49 25 2b 3d 31  3a ce 0d 02 9e 1d e7 49  |+B:I%+=1:......I|
000006d0  25 3d 33 32 8c e6 30 2c  30 c8 9c 30 8b e6 30 2c  |%=32..0,0..0..0,|
000006e0  49 25 c8 9c 32 35 35 0d  02 a8 17 c8 92 58 25 2b  |I%..255......X%+|
000006f0  31 31 35 32 2c 59 25 2b  31 32 38 3a ed 2c 0d 02  |1152,Y%+128:.,..|
00000700  b2 0c 2a 46 58 31 31 33  2c 31 0d 02 bc 05 e1 0d  |..*FX113,1......|
00000710  02 c6 05 3a 0d 02 d0 13  dd a4 61 64 72 28 52 25  |...:......adr(R%|
00000720  2c 41 25 2c 49 25 29 0d  02 da 2c e7 28 50 25 80  |,A%,I%)...,.(P%.|
00000730  33 29 3c 3e 30 8c f1 22  43 6f 64 65 20 69 73 6e  |3)<>0.."Code isn|
00000740  27 74 20 77 6f 72 64 20  61 6c 69 67 6e 65 64 21  |'t word aligned!|
00000750  22 3a e0 0d 02 e4 1b e7  28 54 25 80 32 29 3d 30  |":......(T%.2)=0|
00000760  8c 50 25 2b 3d 49 25 3c  3c 32 3a 3d 54 25 0d 02  |.P%+=I%<<2:=T%..|
00000770  ee 28 ea 4e 25 2c 4f 25  2c 48 25 2c 55 25 3a 48  |.(.N%,O%,H%,U%:H|
00000780  25 3d 41 25 2d 28 50 25  2b 38 29 3a 4e 25 3d 30  |%=A%-(P%+8):N%=0|
00000790  3a 4f 25 3d 31 35 0d 02  f8 13 e3 55 25 3d 31 b8  |:O%=15.....U%=1.|
000007a0  49 25 3a e7 48 25 3d 30  8c 0d 03 02 17 5b 4f 50  |I%:.H%=0.....[OP|
000007b0  54 20 54 25 3a 4d 4f 56  20 52 25 2c 4f 25 3a 5d  |T T%:MOV R%,O%:]|
000007c0  0d 03 0c 20 cc c8 95 28  48 25 80 33 29 3d 30 3a  |... ...(H%.3)=0:|
000007d0  48 25 3d 48 25 3e 3e 32  3a 4e 25 2b 3d 32 3a ce  |H%=H%>>2:N%+=2:.|
000007e0  0d 03 16 10 e7 28 48 25  80 32 35 36 29 3d 30 8c  |.....(H%.256)=0.|
000007f0  0d 03 20 30 5b 4f 50 54  20 54 25 3a 41 44 44 20  |.. 0[OPT T%:ADD |
00000800  52 25 2c 4f 25 2c 23 28  48 25 80 32 35 35 29 3c  |R%,O%,#(H%.255)<|
00000810  3c 4e 25 3a 5d 3a 48 25  2d 3d 48 25 80 32 35 35  |<N%:]:H%-=H%.255|
00000820  0d 03 2a 39 cc 5b 4f 50  54 20 54 25 3a 53 55 42  |..*9.[OPT T%:SUB|
00000830  20 52 25 2c 4f 25 2c 23  28 32 35 36 2d 48 25 80  | R%,O%,#(256-H%.|
00000840  32 35 35 29 3c 3c 4e 25  3a 5d 3a 48 25 2b 3d 32  |255)<<N%:]:H%+=2|
00000850  35 36 2d 48 25 80 32 35  35 0d 03 34 05 cd 0d 03  |56-H%.255..4....|
00000860  3e 0d cd 3a 4f 25 3d 52  25 3a ed 0d 03 48 4a e7  |>..:O%=R%:...HJ.|
00000870  48 25 3c 3e 30 8c f1 22  43 6f 75 6c 64 20 6e 6f  |H%<>0.."Could no|
00000880  74 20 41 44 52 20 74 6f  20 22 3b 41 25 3b 22 20  |t ADR to ";A%;" |
00000890  69 6e 20 22 3b 49 25 3b  22 20 69 6e 73 74 72 75  |in ";I%;" instru|
000008a0  63 74 69 6f 6e 73 20 28  52 25 3d 22 3b 52 25 3b  |ctions (R%=";R%;|
000008b0  22 29 22 3a e0 0d 03 52  07 3d 54 25 0d 03 5c 05  |")":...R.=T%..\.|
000008c0  3a 0d 03 66 16 dd a4 72  65 67 69 73 74 65 72 6a  |:..f...registerj|
000008d0  28 4a 25 2c 4e 25 29 0d  03 70 14 4a 25 21 28 4e  |(J%,N%)..p.J%!(N|
000008e0  25 3c 3c 32 29 3d 50 25  2d 4a 25 0d 03 7a 07 3d  |%<<2)=P%-J%..z.=|
000008f0  54 25 0d 03 84 05 3a 0d  03 8e 0e dd f2 61 73 73  |T%....:......ass|
00000900  65 6d 62 6c 65 0d 03 98  16 e3 54 25 3d 30 b8 32  |emble.....T%=0.2|
00000910  88 32 3a 50 25 3d 63 6f  64 65 25 0d 03 a2 0b 5b  |.2:P%=code%....[|
00000920  4f 50 54 20 54 25 0d 03  ac 05 3a 0d 03 b6 1e 2e  |OPT T%....:.....|
00000930  76 64 75 76 61 72 73 25  3a 45 51 55 44 20 31 34  |vduvars%:EQUD 14|
00000940  38 3a 45 51 55 44 20 2d  31 0d 03 c0 15 2e 73 63  |8:EQUD -1.....sc|
00000950  72 61 64 64 72 25 3a 45  51 55 44 20 2d 31 0d 03  |raddr%:EQUD -1..|
00000960  ca 05 3a 0d 03 d4 11 2e  72 65 61 64 76 64 75 76  |..:.....readvduv|
00000970  61 72 73 25 0d 03 de 13  41 44 52 20 52 30 2c 76  |ars%....ADR R0,v|
00000980  64 75 76 61 72 73 25 0d  03 e8 13 41 44 52 20 52  |duvars%....ADR R|
00000990  31 2c 73 63 72 61 64 64  72 25 0d 03 f2 1d 53 57  |1,scraddr%....SW|
000009a0  49 20 22 4f 53 5f 52 65  61 64 56 64 75 56 61 72  |I "OS_ReadVduVar|
000009b0  69 61 62 6c 65 73 22 0d  03 fc 0e 4d 4f 56 20 50  |iables"....MOV P|
000009c0  43 2c 52 31 34 0d 04 06  05 3a 0d 04 10 12 3b 20  |C,R14....:....; |
000009d0  4d 6f 64 65 20 31 33 20  6f 6e 6c 79 0d 04 1a 05  |Mode 13 only....|
000009e0  3a 0d 04 24 0a 2e 62 6c  69 74 25 0d 04 2e 14 53  |:..$..blit%....S|
000009f0  54 4d 46 44 20 52 31 33  21 2c 7b 52 31 34 7d 0d  |TMFD R13!,{R14}.|
00000a00  04 38 14 4c 44 52 20 52  31 32 2c 73 63 72 61 64  |.8.LDR R12,scrad|
00000a10  64 72 25 0d 04 42 18 41  44 44 20 52 31 31 2c 52  |dr%..B.ADD R11,R|
00000a20  31 32 2c 23 32 35 36 2a  33 32 30 0d 04 4c 16 4f  |12,#256*320..L.O|
00000a30  50 54 20 a4 61 64 72 28  39 2c 6d 61 70 25 2c 32  |PT .adr(9,map%,2|
00000a40  29 0d 04 56 10 4d 4f 56  20 52 31 30 2c 23 31 32  |)..V.MOV R10,#12|
00000a50  38 0d 04 60 0b 2e 79 6c  6f 6f 70 25 0d 04 6a 18  |8..`..yloop%..j.|
00000a60  53 55 42 20 52 31 31 2c  52 31 31 2c 23 33 32 30  |SUB R11,R11,#320|
00000a70  2d 32 35 36 0d 04 74 18  53 55 42 20 52 31 30 2c  |-256..t.SUB R10,|
00000a80  52 31 30 2c 23 32 35 36  3c 3c 31 36 0d 04 7e 0b  |R10,#256<<16..~.|
00000a90  2e 78 6c 6f 6f 70 25 0d  04 88 19 4c 44 52 20 52  |.xloop%....LDR R|
00000aa0  30 2c 5b 52 39 5d 2c 23  38 3c 3c 53 43 25 2d 38  |0,[R9],#8<<SC%-8|
00000ab0  0d 04 92 0d 54 53 54 20  52 30 2c 23 31 0d 04 9c  |....TST R0,#1...|
00000ac0  13 4d 56 4e 20 52 30 2c  52 30 2c 4c 53 52 23 31  |.MVN R0,R0,LSR#1|
00000ad0  0d 04 a6 0c ec 51 20 52  30 2c 23 30 0d 04 b0 14  |.....Q R0,#0....|
00000ae0  53 54 52 42 20 52 30 2c  5b 52 31 32 5d 2c 23 31  |STRB R0,[R12],#1|
00000af0  0d 04 ba 16 53 54 52 42  20 52 30 2c 5b 52 31 31  |....STRB R0,[R11|
00000b00  2c 23 2d 31 5d 21 0d 04  c4 17 41 44 44 53 20 52  |,#-1]!....ADDS R|
00000b10  31 30 2c 52 31 30 2c 23  31 3c 3c 31 36 0d 04 ce  |10,R10,#1<<16...|
00000b20  0e 42 4c 45 20 78 6c 6f  6f 70 25 0d 04 d8 26 41  |.BLE xloop%...&A|
00000b30  44 44 20 52 39 2c 52 39  2c 23 28 38 3c 3c 53 43  |DD R9,R9,#(8<<SC|
00000b40  25 2b 53 43 25 2d 38 29  2d 28 38 3c 3c 53 43 25  |%+SC%-8)-(8<<SC%|
00000b50  29 0d 04 e2 18 41 44 44  20 52 31 32 2c 52 31 32  |)....ADD R12,R12|
00000b60  2c 23 33 32 30 2d 32 35  36 0d 04 ec 13 53 55 42  |,#320-256....SUB|
00000b70  53 20 52 31 30 2c 52 31  30 2c 23 31 0d 04 f6 0e  |S R10,R10,#1....|
00000b80  42 47 54 20 79 6c 6f 6f  70 25 0d 05 00 13 4c 44  |BGT yloop%....LD|
00000b90  4d 46 44 20 52 31 33 21  2c 7b 50 43 7d 0d 05 0a  |MFD R13!,{PC}...|
00000ba0  05 3a 0d 05 14 12 2e 72  65 61 6c 63 25 3a 45 51  |.:.....realc%:EQ|
00000bb0  55 44 20 30 0d 05 1e 12  2e 69 6d 61 67 63 25 3a  |UD 0.....imagc%:|
00000bc0  45 51 55 44 20 30 0d 05  28 05 3a 0d 05 32 0d 2e  |EQUD 0..(.:..2..|
00000bd0  69 6e 69 74 6d 61 70 25  0d 05 3c 14 53 54 4d 46  |initmap%..<.STMF|
00000be0  44 20 52 31 33 21 2c 7b  52 31 34 7d 0d 05 46 11  |D R13!,{R14}..F.|
00000bf0  4c 44 52 20 52 30 2c 72  65 61 6c 63 25 0d 05 50  |LDR R0,realc%..P|
00000c00  11 4c 44 52 20 52 31 2c  69 6d 61 67 63 25 0d 05  |.LDR R1,imagc%..|
00000c10  5a 0d 4d 4f 56 20 52 32  2c 23 30 0d 05 64 0d 4d  |Z.MOV R2,#0..d.M|
00000c20  4f 56 20 52 33 2c 23 30  0d 05 6e 0c 3b 20 4c 65  |OV R3,#0..n.; Le|
00000c30  66 74 20 32 0d 05 78 2d  53 55 42 20 52 30 2c 52  |ft 2..x-SUB R0,R|
00000c40  30 2c 52 32 2c 41 53 4c  23 31 2d 31 3a 53 55 42  |0,R2,ASL#1-1:SUB|
00000c50  20 52 31 2c 52 31 2c 52  33 2c 41 53 4c 23 31 2d  | R1,R1,R3,ASL#1-|
00000c60  31 0d 05 82 2b 53 55 42  20 52 32 2c 52 32 2c 23  |1...+SUB R2,R2,#|
00000c70  32 2a 32 3c 3c 41 43 25  3a 53 55 42 20 52 33 2c  |2*2<<AC%:SUB R3,|
00000c80  52 33 2c 23 30 2a 32 3c  3c 41 43 25 0d 05 8c 2d  |R3,#0*2<<AC%...-|
00000c90  53 55 42 20 52 30 2c 52  30 2c 52 32 2c 41 53 4c  |SUB R0,R0,R2,ASL|
00000ca0  23 31 2d 31 3a 53 55 42  20 52 31 2c 52 31 2c 52  |#1-1:SUB R1,R1,R|
00000cb0  33 2c 41 53 4c 23 31 2d  31 0d 05 96 0a 3b 20 55  |3,ASL#1-1....; U|
00000cc0  70 20 32 0d 05 a0 2d 41  44 44 20 52 31 2c 52 31  |p 2...-ADD R1,R1|
00000cd0  2c 52 32 2c 41 53 4c 23  31 2d 31 3a 53 55 42 20  |,R2,ASL#1-1:SUB |
00000ce0  52 30 2c 52 30 2c 52 33  2c 41 53 4c 23 31 2d 31  |R0,R0,R3,ASL#1-1|
00000cf0  0d 05 aa 2b 41 44 44 20  52 33 2c 52 33 2c 23 32  |...+ADD R3,R3,#2|
00000d00  2a 32 3c 3c 41 43 25 3a  53 55 42 20 52 32 2c 52  |*2<<AC%:SUB R2,R|
00000d10  32 2c 23 30 2a 32 3c 3c  41 43 25 0d 05 b4 2d 41  |2,#0*2<<AC%...-A|
00000d20  44 44 20 52 31 2c 52 31  2c 52 32 2c 41 53 4c 23  |DD R1,R1,R2,ASL#|
00000d30  31 2d 31 3a 53 55 42 20  52 30 2c 52 30 2c 52 33  |1-1:SUB R0,R0,R3|
00000d40  2c 41 53 4c 23 31 2d 31  0d 05 be 20 3b 20 52 69  |,ASL#1-1... ; Ri|
00000d50  67 68 74 20 31 2f 32 20  70 69 78 65 6c 20 3d 20  |ght 1/2 pixel = |
00000d60  31 3e 3e 53 43 25 2d 31  0d 05 c8 35 41 44 44 20  |1>>SC%-1...5ADD |
00000d70  52 30 2c 52 30 2c 52 32  2c 41 53 52 23 53 43 25  |R0,R0,R2,ASR#SC%|
00000d80  2d 31 2b 31 3a 41 44 44  20 52 31 2c 52 31 2c 52  |-1+1:ADD R1,R1,R|
00000d90  33 2c 41 53 52 23 53 43  25 2d 31 2b 31 0d 05 d2  |3,ASR#SC%-1+1...|
00000da0  3b 41 44 44 20 52 32 2c  52 32 2c 23 32 2a 31 3c  |;ADD R2,R2,#2*1<|
00000db0  3c 41 43 25 2d 28 53 43  25 2d 31 29 3a 41 44 44  |<AC%-(SC%-1):ADD|
00000dc0  20 52 33 2c 52 33 2c 23  30 2a 31 3c 3c 41 43 25  | R3,R3,#0*1<<AC%|
00000dd0  2d 28 53 43 25 2d 31 29  0d 05 dc 35 41 44 44 20  |-(SC%-1)...5ADD |
00000de0  52 30 2c 52 30 2c 52 32  2c 41 53 52 23 53 43 25  |R0,R0,R2,ASR#SC%|
00000df0  2d 31 2b 31 3a 41 44 44  20 52 31 2c 52 31 2c 52  |-1+1:ADD R1,R1,R|
00000e00  33 2c 41 53 52 23 53 43  25 2d 31 2b 31 0d 05 e6  |3,ASR#SC%-1+1...|
00000e10  21 3b 20 44 6f 77 6e 20  31 2f 32 20 61 20 70 69  |!; Down 1/2 a pi|
00000e20  78 65 6c 20 3d 20 31 3e  3e 53 43 25 2d 31 0d 05  |xel = 1>>SC%-1..|
00000e30  f0 35 53 55 42 20 52 31  2c 52 31 2c 52 32 2c 41  |.5SUB R1,R1,R2,A|
00000e40  53 52 23 53 43 25 2d 31  2b 31 3a 41 44 44 20 52  |SR#SC%-1+1:ADD R|
00000e50  30 2c 52 30 2c 52 33 2c  41 53 52 23 53 43 25 2d  |0,R0,R3,ASR#SC%-|
00000e60  31 2b 31 0d 05 fa 3b 53  55 42 20 52 33 2c 52 33  |1+1...;SUB R3,R3|
00000e70  2c 23 32 2a 31 3c 3c 41  43 25 2d 28 53 43 25 2d  |,#2*1<<AC%-(SC%-|
00000e80  31 29 3a 41 44 44 20 52  32 2c 52 32 2c 23 30 2a  |1):ADD R2,R2,#0*|
00000e90  31 3c 3c 41 43 25 2d 28  53 43 25 2d 31 29 0d 06  |1<<AC%-(SC%-1)..|
00000ea0  04 35 53 55 42 20 52 31  2c 52 31 2c 52 32 2c 41  |.5SUB R1,R1,R2,A|
00000eb0  53 52 23 53 43 25 2d 31  2b 31 3a 41 44 44 20 52  |SR#SC%-1+1:ADD R|
00000ec0  30 2c 52 30 2c 52 33 2c  41 53 52 23 53 43 25 2d  |0,R0,R3,ASR#SC%-|
00000ed0  31 2b 31 0d 06 0e 0f 3b  20 4d 61 69 6e 20 6c 6f  |1+1....; Main lo|
00000ee0  6f 70 0d 06 18 17 4f 50  54 20 a4 61 64 72 28 31  |op....OPT .adr(1|
00000ef0  32 2c 6d 61 70 25 2c 32  29 0d 06 22 0f 4d 4f 56  |2,map%,2)..".MOV|
00000f00  20 52 31 31 2c 52 31 32  0d 06 2c 15 4d 4f 56 20  | R11,R12..,.MOV |
00000f10  52 31 30 2c 23 31 3c 3c  53 43 25 2d 31 0d 06 36  |R10,#1<<SC%-1..6|
00000f20  0b 2e 79 6c 6f 6f 70 25  0d 06 40 1a 53 55 42 20  |..yloop%..@.SUB |
00000f30  52 31 30 2c 52 31 30 2c  23 31 3c 3c 31 36 2b 53  |R10,R10,#1<<16+S|
00000f40  43 25 0d 06 4a 0b 2e 78  6c 6f 6f 70 25 0d 06 54  |C%..J..xloop%..T|
00000f50  0d 4d 4f 56 20 52 36 2c  23 31 0d 06 5e 1d 4d 4f  |.MOV R6,#1..^.MO|
00000f60  56 20 52 34 2c 52 30 2c  41 53 52 23 28 41 43 25  |V R4,R0,ASR#(AC%|
00000f70  2b 32 29 2d 53 43 25 0d  06 68 1e 4d 4f 56 53 20  |+2)-SC%..h.MOVS |
00000f80  52 35 2c 52 31 2c 41 53  52 23 28 41 43 25 2b 32  |R5,R1,ASR#(AC%+2|
00000f90  29 2d 53 43 25 0d 06 72  0f 4d 56 4e 4d 49 20 52  |)-SC%..r.MVNMI R|
00000fa0  34 2c 52 34 0d 06 7c 0f  4d 56 4e 50 4c 20 52 35  |4,R4..|.MVNPL R5|
00000fb0  2c 52 35 0d 06 86 18 41  44 44 53 20 52 34 2c 52  |,R5....ADDS R4,R|
00000fc0  34 2c 23 31 3c 3c 53 43  25 2d 31 0d 06 90 1a 41  |4,#1<<SC%-1....A|
00000fd0  44 44 47 45 53 20 52 35  2c 52 35 2c 23 31 3c 3c  |DDGES R5,R5,#1<<|
00000fe0  53 43 25 2d 31 0d 06 9a  0f 42 4c 54 20 65 73 63  |SC%-1....BLT esc|
00000ff0  61 70 65 25 0d 06 a4 12  43 4d 50 20 52 34 2c 23  |ape%....CMP R4,#|
00001000  31 3c 3c 53 43 25 0d 06  ae 1a 43 4d 50 4c 54 20  |1<<SC%....CMPLT |
00001010  52 35 2c 23 31 3c 3c 53  43 25 3a 3b 20 2a 2a 2a  |R5,#1<<SC%:; ***|
00001020  0d 06 b8 0f 42 47 45 20  65 73 63 61 70 65 25 0d  |....BGE escape%.|
00001030  06 c2 1b 41 44 44 20 52  37 2c 52 31 31 2c 52 35  |...ADD R7,R11,R5|
00001040  2c 41 53 4c 23 33 2b 53  43 25 0d 06 cc 16 41 44  |,ASL#3+SC%....AD|
00001050  44 20 52 37 2c 52 37 2c  52 34 2c 41 53 4c 23 33  |D R7,R7,R4,ASL#3|
00001060  0d 06 d6 10 4d 4f 56 20  52 36 2c 23 31 3c 3c 31  |....MOV R6,#1<<1|
00001070  0d 06 e0 0c 2e 65 73 63  61 70 65 25 0d 06 ea 16  |.....escape%....|
00001080  53 54 4d 49 41 20 52 31  32 21 2c 7b 52 36 2d 52  |STMIA R12!,{R6-R|
00001090  37 7d 0d 06 f4 1e 3b 20  52 69 67 68 74 20 61 20  |7}....; Right a |
000010a0  70 69 78 65 6c 20 3d 20  31 3c 3c 53 43 25 2d 32  |pixel = 1<<SC%-2|
000010b0  0d 06 fe 35 41 44 44 20  52 30 2c 52 30 2c 52 32  |...5ADD R0,R0,R2|
000010c0  2c 41 53 52 23 53 43 25  2d 32 2b 31 3a 41 44 44  |,ASR#SC%-2+1:ADD|
000010d0  20 52 31 2c 52 31 2c 52  33 2c 41 53 52 23 53 43  | R1,R1,R3,ASR#SC|
000010e0  25 2d 32 2b 31 0d 07 08  3c 41 44 44 20 52 32 2c  |%-2+1...<ADD R2,|
000010f0  52 32 2c 23 32 2a 31 3c  3c 41 43 25 2d 28 53 43  |R2,#2*1<<AC%-(SC|
00001100  25 2d 32 29 3a 5c 41 44  44 20 52 33 2c 52 33 2c  |%-2):\ADD R3,R3,|
00001110  23 30 2a 31 3c 3c 41 43  25 2d 28 53 43 25 2d 32  |#0*1<<AC%-(SC%-2|
00001120  29 0d 07 12 35 41 44 44  20 52 30 2c 52 30 2c 52  |)...5ADD R0,R0,R|
00001130  32 2c 41 53 52 23 53 43  25 2d 32 2b 31 3a 41 44  |2,ASR#SC%-2+1:AD|
00001140  44 20 52 31 2c 52 31 2c  52 33 2c 41 53 52 23 53  |D R1,R1,R3,ASR#S|
00001150  43 25 2d 32 2b 31 0d 07  1c 17 41 44 44 53 20 52  |C%-2+1....ADDS R|
00001160  31 30 2c 52 31 30 2c 23  31 3c 3c 31 36 0d 07 26  |10,R10,#1<<16..&|
00001170  0e 42 4c 45 20 78 6c 6f  6f 70 25 0d 07 30 0c 3b  |.BLE xloop%..0.;|
00001180  20 4c 65 66 74 20 34 0d  07 3a 2d 53 55 42 20 52  | Left 4..:-SUB R|
00001190  30 2c 52 30 2c 52 32 2c  41 53 4c 23 32 2d 31 3a  |0,R0,R2,ASL#2-1:|
000011a0  53 55 42 20 52 31 2c 52  31 2c 52 33 2c 41 53 4c  |SUB R1,R1,R3,ASL|
000011b0  23 32 2d 31 0d 07 44 2c  53 55 42 20 52 32 2c 52  |#2-1..D,SUB R2,R|
000011c0  32 2c 23 32 2a 34 3c 3c  41 43 25 3a 5c 53 55 42  |2,#2*4<<AC%:\SUB|
000011d0  20 52 33 2c 52 33 2c 23  30 2a 34 3c 3c 41 43 25  | R3,R3,#0*4<<AC%|
000011e0  0d 07 4e 2d 53 55 42 20  52 30 2c 52 30 2c 52 32  |..N-SUB R0,R0,R2|
000011f0  2c 41 53 4c 23 32 2d 31  3a 53 55 42 20 52 31 2c  |,ASL#2-1:SUB R1,|
00001200  52 31 2c 52 33 2c 41 53  4c 23 32 2d 31 0d 07 58  |R1,R3,ASL#2-1..X|
00001210  1d 3b 20 44 6f 77 6e 20  61 20 70 69 78 65 6c 20  |.; Down a pixel |
00001220  3d 20 31 3c 3c 53 43 25  2d 32 0d 07 62 35 53 55  |= 1<<SC%-2..b5SU|
00001230  42 20 52 31 2c 52 31 2c  52 32 2c 41 53 52 23 53  |B R1,R1,R2,ASR#S|
00001240  43 25 2d 32 2b 31 3a 41  44 44 20 52 30 2c 52 30  |C%-2+1:ADD R0,R0|
00001250  2c 52 33 2c 41 53 52 23  53 43 25 2d 32 2b 31 0d  |,R3,ASR#SC%-2+1.|
00001260  07 6c 3c 53 55 42 20 52  33 2c 52 33 2c 23 32 2a  |.l<SUB R3,R3,#2*|
00001270  31 3c 3c 41 43 25 2d 28  53 43 25 2d 32 29 3a 5c  |1<<AC%-(SC%-2):\|
00001280  41 44 44 20 52 32 2c 52  32 2c 23 30 2a 31 3c 3c  |ADD R2,R2,#0*1<<|
00001290  41 43 25 2d 28 53 43 25  2d 32 29 0d 07 76 35 53  |AC%-(SC%-2)..v5S|
000012a0  55 42 20 52 31 2c 52 31  2c 52 32 2c 41 53 52 23  |UB R1,R1,R2,ASR#|
000012b0  53 43 25 2d 32 2b 31 3a  41 44 44 20 52 30 2c 52  |SC%-2+1:ADD R0,R|
000012c0  30 2c 52 33 2c 41 53 52  23 53 43 25 2d 32 2b 31  |0,R3,ASR#SC%-2+1|
000012d0  0d 07 80 13 53 55 42 53  20 52 31 30 2c 52 31 30  |....SUBS R10,R10|
000012e0  2c 23 31 0d 07 8a 0e 42  47 54 20 79 6c 6f 6f 70  |,#1....BGT yloop|
000012f0  25 0d 07 94 13 4c 44 4d  46 44 20 52 31 33 21 2c  |%....LDMFD R13!,|
00001300  7b 50 43 7d 0d 07 9e 05  3a 0d 07 a8 0c 2e 69 6e  |{PC}....:.....in|
00001310  63 65 73 74 25 0d 07 b2  14 53 54 4d 46 44 20 52  |cest%....STMFD R|
00001320  31 33 21 2c 7b 52 31 34  7d 0d 07 bc 26 4f 50 54  |13!,{R14}...&OPT|
00001330  20 a4 61 64 72 28 31 32  2c 6d 61 70 25 2b 28 38  | .adr(12,map%+(8|
00001340  3c 3c 53 43 25 2b 53 43  25 2d 31 29 2c 32 29 0d  |<<SC%+SC%-1),2).|
00001350  07 c6 19 4f 50 54 20 a4  61 64 72 28 31 30 2c 71  |...OPT .adr(10,q|
00001360  75 65 75 65 25 2c 32 29  0d 07 d0 19 4d 4f 56 20  |ueue%,2)....MOV |
00001370  52 31 31 2c 23 31 3c 3c  53 43 25 2b 53 43 25 2d  |R11,#1<<SC%+SC%-|
00001380  31 0d 07 da 0a 2e 6c 6f  6f 70 25 0d 07 e4 16 4c  |1.....loop%....L|
00001390  44 4d 44 42 20 52 31 32  21 2c 7b 52 30 2c 52 31  |DMDB R12!,{R0,R1|
000013a0  7d 0d 07 ee 0d 54 53 54  20 52 30 2c 23 31 0d 07  |}....TST R0,#1..|
000013b0  f8 10 42 4e 45 20 73 6b  69 70 4e 42 31 25 0d 08  |..BNE skipNB1%..|
000013c0  02 14 4c 44 4d 49 41 20  52 31 2c 7b 52 32 2c 52  |..LDMIA R1,{R2,R|
000013d0  33 7d 0d 08 0c 0d 54 53  54 20 52 32 2c 23 31 0d  |3}....TST R2,#1.|
000013e0  08 16 10 42 4e 45 20 73  6b 69 70 4e 42 32 25 0d  |...BNE skipNB2%.|
000013f0  08 20 14 4c 44 4d 49 41  20 52 33 2c 7b 52 34 2c  |. .LDMIA R3,{R4,|
00001400  52 35 7d 0d 08 2a 0d 54  53 54 20 52 34 2c 23 31  |R5}..*.TST R4,#1|
00001410  0d 08 34 10 42 4e 45 20  73 6b 69 70 4e 42 33 25  |..4.BNE skipNB3%|
00001420  0d 08 3e 14 4c 44 4d 49  41 20 52 35 2c 7b 52 36  |..>.LDMIA R5,{R6|
00001430  2c 52 37 7d 0d 08 48 0d  54 53 54 20 52 36 2c 23  |,R7}..H.TST R6,#|
00001440  31 0d 08 52 10 42 4e 45  20 73 6b 69 70 4e 42 34  |1..R.BNE skipNB4|
00001450  25 0d 08 5c 14 4c 44 4d  49 41 20 52 37 2c 7b 52  |%..\.LDMIA R7,{R|
00001460  38 2c 52 39 7d 0d 08 66  0d 54 53 54 20 52 38 2c  |8,R9}..f.TST R8,|
00001470  23 31 0d 08 70 16 53 54  52 45 51 20 52 31 32 2c  |#1..p.STREQ R12,|
00001480  5b 52 31 30 5d 2c 23 34  0d 08 7a 10 41 44 44 20  |[R10],#4..z.ADD |
00001490  52 36 2c 52 36 2c 52 38  0d 08 84 0d 4d 4f 56 20  |R6,R6,R8....MOV |
000014a0  52 37 2c 52 39 0d 08 8e  14 53 54 4d 49 41 20 52  |R7,R9....STMIA R|
000014b0  35 2c 7b 52 36 2c 52 37  7d 0d 08 98 0d 2e 73 6b  |5,{R6,R7}.....sk|
000014c0  69 70 4e 42 34 25 0d 08  a2 10 41 44 44 20 52 34  |ipNB4%....ADD R4|
000014d0  2c 52 34 2c 52 36 0d 08  ac 0d 4d 4f 56 20 52 35  |,R4,R6....MOV R5|
000014e0  2c 52 37 0d 08 b6 14 53  54 4d 49 41 20 52 33 2c  |,R7....STMIA R3,|
000014f0  7b 52 34 2c 52 35 7d 0d  08 c0 0d 2e 73 6b 69 70  |{R4,R5}.....skip|
00001500  4e 42 33 25 0d 08 ca 10  41 44 44 20 52 32 2c 52  |NB3%....ADD R2,R|
00001510  32 2c 52 34 0d 08 d4 0d  4d 4f 56 20 52 33 2c 52  |2,R4....MOV R3,R|
00001520  35 0d 08 de 14 53 54 4d  49 41 20 52 31 2c 7b 52  |5....STMIA R1,{R|
00001530  32 2c 52 33 7d 0d 08 e8  0d 2e 73 6b 69 70 4e 42  |2,R3}.....skipNB|
00001540  32 25 0d 08 f2 10 41 44  44 20 52 30 2c 52 30 2c  |2%....ADD R0,R0,|
00001550  52 32 0d 08 fc 0d 4d 4f  56 20 52 31 2c 52 33 0d  |R2....MOV R1,R3.|
00001560  09 06 15 53 54 4d 49 41  20 52 31 32 2c 7b 52 30  |...STMIA R12,{R0|
00001570  2c 52 31 7d 0d 09 10 0d  2e 73 6b 69 70 4e 42 31  |,R1}.....skipNB1|
00001580  25 0d 09 1a 13 53 55 42  53 20 52 31 31 2c 52 31  |%....SUBS R11,R1|
00001590  31 2c 23 31 0d 09 24 0d  42 47 54 20 6c 6f 6f 70  |1,#1..$.BGT loop|
000015a0  25 0d 09 2e 19 4f 50 54  20 a4 61 64 72 28 31 31  |%....OPT .adr(11|
000015b0  2c 71 75 65 75 65 25 2c  33 29 0d 09 38 0b 2e 71  |,queue%,3)..8..q|
000015c0  6c 6f 6f 70 25 0d 09 42  0f 43 4d 50 20 52 31 30  |loop%..B.CMP R10|
000015d0  2c 52 31 31 0d 09 4c 15  4c 44 4d 4c 45 46 44 20  |,R11..L.LDMLEFD |
000015e0  52 31 33 21 2c 7b 50 43  7d 0d 09 56 16 4c 44 52  |R13!,{PC}..V.LDR|
000015f0  20 52 31 32 2c 5b 52 31  30 2c 23 2d 34 5d 21 0d  | R12,[R10,#-4]!.|
00001600  09 60 15 4c 44 4d 49 41  20 52 31 32 2c 7b 52 30  |.`.LDMIA R12,{R0|
00001610  2c 52 31 7d 0d 09 6a 0d  54 53 54 20 52 30 2c 23  |,R1}..j.TST R0,#|
00001620  31 0d 09 74 0e 42 4e 45  20 71 6c 6f 6f 70 25 0d  |1..t.BNE qloop%.|
00001630  09 7e 14 4c 44 4d 49 41  20 52 31 2c 7b 52 32 2c  |.~.LDMIA R1,{R2,|
00001640  52 33 7d 0d 09 88 10 41  44 44 20 52 30 2c 52 30  |R3}....ADD R0,R0|
00001650  2c 52 32 0d 09 92 15 53  54 4d 49 41 20 52 31 32  |,R2....STMIA R12|
00001660  2c 7b 52 30 2c 52 33 7d  0d 09 9c 0c 42 20 71 6c  |,{R0,R3}....B ql|
00001670  6f 6f 70 25 0d 09 a6 05  3a 0d 09 b0 35 5d 3a e7  |oop%....:...5]:.|
00001680  50 25 3e 63 6f 64 65 25  2b 63 6f 64 65 6c 65 6e  |P%>code%+codelen|
00001690  25 8c 85 32 35 35 2c 22  43 6f 64 65 20 69 73 6e  |%..255,"Code isn|
000016a0  27 74 20 62 69 67 20 65  6e 6f 75 67 68 22 0d 09  |'t big enough"..|
000016b0  ba 05 ed 0d 09 c4 05 e1  0d ff                    |..........|
000016ba