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