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

Turnbull/!C60/!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-04.adf » !StarInfo_StarInfo
Filename: Turnbull/!C60/!RunImage
Read OK:
File size: 2177 bytes
Load address: 0000
Exec address: 0000
File contents
   10MODE9
   20FORT%=0TO15:COLOURT%,T%<<4,T%<<4,T%<<4:NEXT
   30DIMX(60),Y(60),Z(60),L%(90,2)
   40DIMplot(7),space%&30000:limit%=space%+&30000
   50code%=space%:space%+=16384
   60shape%=space%:space%+=16*64
   70screen%=space%:space%+=16*64
   80index%=space%:space%+=512
   90perspective%=space%:space%+=&4000
  100sprites%=space%:space%+=&20000
  110IFspace%>limit%THENERROR255,"DIM size"
  120PROCassemble
  130PROCsprites
  140PROCmakeshape
  150FORT%=0TO4095:perspective%!(T%<<2)=65536*256/(T%+256):NEXT
  160REPEAT:A%=A%+32AND&FFFF
  170A=PI*A%/&8000
  180C1=COS(A*3):S1=SIN(A*3):C2=COS(A*11):S2=SIN(A*11)
  190vectors!0=&10000*C1:vectors!4=0:vectors!8=&10000*S1
  200vectors!12=&10000*-S1*S2:vectors!16=&10000*C2:vectors!20=&10000*C1*S2
  210vectors!24=&10000*-S1*C2:vectors!28=&10000*-S2:vectors!32=&10000*C1*C2
  220MOUSEX%,Y%,Z%
  230vectors!36=0:vectors!40=Y%-512:vectors!44=X%
  240CALLframe
  250C1%=191+64*COS(A*12):C2%=191+64*COS(A*17):C3%=191+64*COS(A*19)
  260FORT%=15TO1STEP-1:COLOURT%,C1%,C2%,C3%
  270C1%-=16:IFC1%<0THENC1%=0
  280C2%-=16:IFC2%<0THENC2%=0
  290C3%-=16:IFC3%<0THENC3%=0
  300NEXT
  310UNTIL0
  320END
  330:
  340:
  350DEFPROCsprites
  360OSCLI("LOAD <C60$dir>.Index "+STR$~index%)
  370OSCLI("LOAD <C60$dir>.Sprites "+STR$~sprites%)
  380ENDPROC
  390index%!0=0:index%!4=0
  400SP%=sprites%
  410FORL%=1TO63:IU%=index%+(L%<<3):L2%=L%*L%<<2
  420CLS:F=1/(SQR(6)*L%*2)
  430FORX%=-126TO126STEP4:FORY%=-126TOX%STEP4:R2%=X%*X%+Y%*Y%
  440IFR2%<=L2%THEN
  450Z=-SQR(L2%-R2%):B=(X%+Y%-2*Z)*F
  460IFB<0THENGCOL0,1ELSEIF(X%AND4)=(Y%AND4)THENGCOL0,1+B*14ELSEGCOL0,1.5+B*14
  470POINT128+X%,128+Y%:POINT128+Y%,128+X%
  480ENDIF:NEXT,
  490M%=2+L%>>1:SC%=!bankaddr+(224-M%)*160
  500!IU%=SP%-sprites%:IU%?4=M%:IU%?5=M%*2
  510!spaddr=SP%:!scaddr=SC%:!size=2*M%-1:CALLconvspr:SP%=!spaddr
  520NEXT
  530ENDPROC
  540:
  550DEFPROCmakeshape
  560OSCLI("LOAD <C60$dir>.Shape "+STR$~shape%)
  570ENDPROC
  580FORT%=1TO60STEP5:READX%,Y%,Z%:FORU%=0TO4:X(T%+U%)=X%+U%*10:Y(T%+U%)=Y%:Z(T%+U%)=Z%:NEXT,
  590FORT%=1TO90:READL%(T%,1),L%(T%,2):NEXT
  600REPEAT:CLS
  610FORT%=1TO90:LINE640+X(L%(T%,1)),512+Y(L%(T%,1)),640+X(L%(T%,2)),512+Y(L%(T%,2)):NEXT
  620FORT%=1TO60:F=200/SQR(X(T%)*X(T%)+Y(T%)*Y(T%)+Z(T%)*Z(T%)):X(T%)=X(T%)*F:Y(T%)=Y(T%)*F:Z(T%)=Z(T%)*F:NEXT
  630REPEAT:MF=0:FORT%=1TO90:F%=L%(T%,1):G%=L%(T%,2):DX=X(F%)-X(G%):DY=Y(F%)-Y(G%):DZ=Z(F%)-Z(G%)
  640IFDX=0ANDDY=0ANDDZ=0THENDX=1
  650R=SQR(DX*DX+DY*DY+DZ*DZ):F=0.5*(64/R-1):IFMF<ABS(F)THENMF=ABS(F)
  660X(F%)=X(F%)+DX*F:Y(F%)=Y(F%)+DY*F:Z(F%)=Z(F%)+DZ*F
  670X(G%)=X(G%)-DX*F:Y(G%)=Y(G%)-DY*F:Z(G%)=Z(G%)-DZ*F
  680NEXT:PRINTMF:UNTILMF<0.2+0.19*INKEY(-1)
  690UNTILINKEY(-99)
  700SH%=shape%:FORT%=1TO60
  710SH%!0=X(T%):SH%!4=Y(T%):SH%!8=Z(T%):SH%!12=72
  720SH%+=16:NEXT:!SH%=&80000000
  730ENDPROC
  740:
  750DATA0,100,0, 0,80,60, 50,80,50, 50,80,-50, -50,80,-50, -50,80,50
  760DATA0,-100,0, 0,-80,60, 50,-80,50, 50,-80,-50, -50,-80,-50, -50,-80,50
  770:
  780DATA1,2, 2,3, 3,4, 4,5, 5,1, 6,7, 7,8, 8,9, 9,10, 10,6, 11,12, 12,13, 13,14, 14,15, 15,11, 16,17, 17,18, 18,19, 19,20, 20,16, 21,22, 22,23, 23,24, 24,25, 25,21, 26,27, 27,28, 28,29, 29,30, 30,26
  790DATA31,32, 32,33, 33,34, 34,35, 35,31, 36,37, 37,38, 38,39, 39,40, 40,36, 41,42, 42,43, 43,44, 44,45, 45,41, 46,47, 47,48, 48,49, 49,50, 50,46, 51,52, 52,53, 53,54, 54,55, 55,51, 56,57, 57,58, 58,59, 59,60, 60,56
  800DATA1,6, 2,11, 3,16, 4,21, 5,26, 31,36, 32,41, 33,46, 34,51, 35,56
  810DATA7,15, 12,20, 17,25, 22,30, 27,10, 37,45, 42,50, 47,55, 52,60, 57,40
  820DATA8,39, 38,14, 13,44, 43,19, 18,49, 48,24, 23,54, 53,29, 28,59, 58,9
  830:
  840DEFFNadr(R%,H%,I%):G%=H%-P%-8
  850LOCALO%,U%,N%:O%=15:N%=0
  860FORU%=1TOI%
  870IFG%=0THEN
  880ELSEWHILE(G%AND3)=0:G%=G%>>2:N%+=2:ENDWHILE
  890IF(G%AND256)=0THEN
  900[OPT T%:ADD R%,O%,#(G%AND255)<<N%:]:G%-=G%AND255
  910ELSE[OPT T%:SUB R%,O%,#(256-G%AND255)<<N%:]:G%+=256-G%AND255
  920ENDIF
  930ENDIF
  940O%=R%:NEXT:IFG%<>0THENERROR255,"ADR length"
  950=T%
  960:
  970DEFPROCassemble
  980FORT%=0TO2STEP2:P%=code%
  990[OPT T%
 1000.scaddr
 1010EQUD 0
 1020.spaddr
 1030EQUD 0
 1040.size
 1050EQUD 0
 1060.convspr
 1070LDR R0,spaddr
 1080LDR R1,scaddr
 1090LDR R2,size
 1100.yloop
 1110]:FORU%=0TO1:[OPT T%
 1120LDMIA R1!,{R7-R10}
 1130]:FORV%=0TO3:[OPT T%
 1140MOV (3+V%),#0
 1150]:FORW%=0TO7:[OPT T%
 1160TST (7+V%),#15<<(W%<<2)
 1170ADDNE (3+V%),(3+V%),#15<<(W%<<2)
 1180]:NEXT,:[OPT T%
 1190STMIA R0!,{R3-R10}
 1200]:NEXT:[OPT T%
 1210ADD R1,R1,#160-32
 1220SUBS R2,R2,#1
 1230BGT yloop
 1240STR R0,spaddr
 1250MOV PC,R14
 1260:
 1270REM ****************************
 1280:
 1290.vduvars
 1300EQUD 148
 1310EQUD -1
 1330.bankaddr
 1340EQUD -1
 1350EQUD -1
 1360.bank
 1370EQUD 0
 1380.scraddr
 1390EQUD 0
 1400.animation
 1410EQUD 0
 1420:
 1430.link
 1440EQUD 0
 1450EQUD 0
 1460EQUD 0
 1470.stackp
 1480EQUD 0
 1490:
 1500REM ****************************
 1510:
 1520.frame
 1530STR R13,stackp
 1540STR R14,link+0
 1550LDR R0,bank
 1560EOR R0,R0,#1
 1570STR R0,bank
 1580OPT FNadr(14,bankaddr,1)
 1590LDR R14,[R14,R0,ASL#2]
 1600STR R14,scraddr
 1610ADD R1,R0,#1
 1620MOV R0,#112
 1630SWI "OS_Byte"
 1640MOV R0,#19
 1650SWI "OS_Byte"
 1660SWI &10C
 1670:
 1680BL rotate
 1690BL sort
 1700BL plot
 1710:
 1720LDR R1,bank
 1730ADD R1,R1,#1
 1740MOV R0,#113
 1750SWI "OS_Byte"
 1760LDR R13,stackp
 1770LDR R14,link+0
 1780MOV PC,R14
 1790:
 1800REM ****************************
 1810.vectors
 1820EQUD &10000:EQUD 0:EQUD 0
 1830EQUD 0:EQUD &10000:EQUD 0
 1840EQUD 0:EQUD 0:EQUD &10000
 1850EQUD 0:EQUD 0:EQUD 0
 1860:
 1870.rotate
 1880STR R14,link+4
 1890OPT FNadr(14,shape%,2)
 1900OPT FNadr(13,screen%,2)
 1910OPT FNadr(12,vectors,1)
 1920OPT FNadr(11,perspective%,2)
 1930.ballloop
 1940LDMIA R14!,{R0-R2,R9}
 1950CMP R0,#&80000000
 1960BEQ endrotate
 1970LDMIA R12!,{R3-R5}
 1980MUL R6,R3,R0
 1990MUL R7,R4,R0
 2000MUL R8,R5,R0
 2010LDMIA R12!,{R3-R5}
 2020MLA R6,R3,R1,R6
 2030MLA R7,R4,R1,R7
 2040MLA R8,R5,R1,R8
 2050LDMIA R12!,{R3-R5}
 2060MLA R6,R3,R2,R6
 2070MLA R7,R4,R2,R7
 2080MLA R8,R5,R2,R8
 2090LDMIA R12!,{R3-R5}
 2100ADD R6,R3,R6,ASR#16
 2110ADD R7,R4,R7,ASR#16
 2120ADD R8,R5,R8,ASR#16
 2130SUB R12,R12,#4*3*4
 2140ADDS R0,R8,#256
 2150MOVLT R0,#0
 2160CMP R0,#4096
 2170MOVGE R0,#4096
 2180SUBGE R0,R0,#1
 2190LDR R0,[R11,R0,LSL#2]
 2200MUL R6,R0,R6
 2210MUL R7,R0,R7
 2220MUL R9,R0,R9
 2230MOV R6,R6,ASR#16
 2240MOV R7,R7,ASR#16
 2250MOV R9,R9,ASR#16
 2260ADD R6,R6,#160
 2270RSB R7,R7,#128
 2280STMIA R13!,{R6-R9}
 2290B ballloop
 2300.endrotate
 2310STR R0,[R13]
 2320LDR R14,link+4
 2330MOV PC,R14
 2340:
 2350REM ****************************
 2360:
 2370.plot
 2380STR R14,link+4
 2390LDR R14,scraddr
 2400OPT FNadr(13,screen%,2)
 2410OPT FNadr(12,index%,2)
 2420.ballloop
 2430.dontprint
 2440.plotreturn
 2450LDMIA R13!,{R0-R3}
 2460CMP R0,#&80000000
 2470BEQ endplot
 2480CMP R0,#32
 2490CMNGT R1,#31
 2500BLE dontprint
 2510CMP R0,#288
 2520CMPLE R1,#288
 2530BGT dontprint
 2540CMP R3,#64
 2550MOVGE R3,#63
 2560ADD R3,R12,R3,ASL#3
 2570LDR R11,[R3]
 2580LDRB R10,[R3,#4]
 2590LDRB R9,[R3,#5]
 2600SUB R0,R0,#32
 2610SUBS R1,R1,R10
 2620ADDLT R9,R9,R1
 2630SUBLT R11,R11,R1,ASL#6
 2640MOVLT R1,#0
 2650ADD R8,R1,R9
 2660SUBS R8,R8,#256
 2670SUBGT R9,R9,R8
 2680CMP R9,#0
 2690BLE dontprint
 2700OPT FNadr(8,sprites%,2)
 2710ADD R11,R8,R11
 2720AND R8,R0,#7
 2730MOV R0,R0,ASR#3
 2740ADD R10,R14,R0,ASL#2
 2750ADD R10,R10,R1,ASL#5
 2760ADD R10,R10,R1,ASL#7
 2770OPT FNadr(7,plotroutines,1)
 2780LDR PC,[R7,R8,ASL#2]
 2790.dontprint
 2800.endplot
 2810LDR R14,link+4
 2820MOV PC,R14
 2830:
 2840REM ****************************
 2850:
 2860.plotroutines
 2870]:FORU%=0TO7:[OPT T%
 2880EQUD plot(U%)
 2890]:NEXT:[OPT T%
 2900:
 2910.plot(0)
 2920.yloop
 2930]:FORW%=0TO1:[OPT T%
 2940LDMIA R10,{R0-R3}
 2950LDMIA R11!,{R4-R7}
 2960]:FORV%=0TO3:[OPT T%
 2970BIC V%,V%,(V%+4)
 2980]:NEXT:[OPT T%
 2990LDMIA R11!,{R4-R7}
 3000]:FORV%=0TO3:[OPT T%
 3010ORR V%,V%,(V%+4)
 3020]:NEXT:[OPT T%
 3030STMIA R10!,{R0-R3}
 3040]:NEXT:[OPT T%
 3050ADD R10,R10,#160-32
 3060SUBS R9,R9,#1
 3070BGT yloop
 3080B plotreturn
 3090:
 3100]:FORU%=1TO7:Z%=U%<<2:[OPT T%
 3110.plot(U%)
 3120.yloop
 3130LDMIA R10,{R0-R4}
 3140LDMIA R11!,{R5-R8}
 3150]:FORV%=0TO3:[OPT T%
 3160BIC V%,V%,(V%+5),LSL#Z%
 3170BIC (V%+1),(V%+1),(V%+5),LSR#32-Z%
 3180]:NEXT:[OPT T%
 3190LDMIA R11!,{R5-R8}
 3200]:FORV%=0TO3:[OPT T%
 3210ORR V%,V%,(V%+5),LSL#Z%
 3220ORR (V%+1),(V%+1),(V%+5),LSR#32-Z%
 3230]:NEXT:[OPT T%
 3240STMIA R10!,{R0-R3}
 3250ADD R8,R10,#4
 3260LDMIA R8,{R5-R8}
 3270LDMIA R11!,{R0-R3}
 3280]:FORV%=0TO3:[OPT T%
 3290BIC (V%+4),(V%+4),V%,LSL#Z%
 3300BIC (V%+5),(V%+5),V%,LSR#32-Z%
 3310]:NEXT:[OPT T%
 3320LDMIA R11!,{R0-R3}
 3330]:FORV%=0TO3:[OPT T%
 3340ORR (V%+4),(V%+4),V%,LSL#Z%
 3350ORR (V%+5),(V%+5),V%,LSR#32-Z%
 3360]:NEXT:[OPT T%
 3370STMIA R10!,{R4-R8}
 3380ADD R10,R10,#160-36
 3390SUBS R9,R9,#1
 3400BGT yloop
 3410B plotreturn
 3420]:NEXT:[OPT T%
 3430:
 3440REM *******************************
 3450:
 3460.sort
 3470STR R14,link+4
 3480OPT FNadr(14,screen%,2)
 3490.outloop
 3500MOV R13,R14
 3510ADD R12,R13,#16
 3520LDR R1,[R13,#8]
 3530.inloop
 3540LDR R0,[R12,#8]
 3550CMP R0,R1
 3560MOVGT R1,R0
 3570MOVGT R13,R12
 3580ADD R12,R12,#16
 3590LDR R0,[R12]
 3600CMP R0,#&80000000
 3610BNE inloop
 3620LDMIA R13,{R0-R3}
 3630LDMIA R14,{R4-R7}
 3640STMIA R14!,{R0-R3}
 3650STMIA R13,{R4-R7}
 3660LDR R0,[R14,#16]
 3670CMP R0,#&80000000
 3680BNE outloop
 3690LDR R14,link+4
 3700MOV PC,R14
 3710]:NEXT
 3711*FX112,2
 3712SYS"OS_ReadVduVariables",vduvars,bankaddr+4
 3713*FX112,1
 3714SYS"OS_ReadVduVariables",vduvars,bankaddr
 3720ENDPROC
 3730:
 3740DEFPROCtestscr
 3750SH%=screen%
 3760REPEAT:Z%=SH%!8-vectors!44+256:GCOL0,Z%>>5
 3770CIRCLESH%!0<<2,255-SH%!4<<2,SH%!12<<1
 3780SH%+=16:UNTILSH%!0=&80000000
 3790ENDPROC
 3800:
 3810DEFPROCtestconv
 3820SP%=sprites%
 3830FORT%=0TO5:SC%=!bankaddr
 3840FORY%=0TO255:FORX%=0TO63STEP4:SC%!X%=SP%!X%:NEXT
 3850SC%+=160:SP%+=64:NEXT:A=GET:NEXT
 3860ENDPROC

�9
$�T%=0�15:�T%,T%<<4,T%<<4,T%<<4:�
�X(60),Y(60),Z(60),L%(90,2)
(.�plot(7),space%&30000:limit%=space%+&30000
2code%=space%:space%+=16384
<shape%=space%:space%+=16*64
F screen%=space%:space%+=16*64
Pindex%=space%:space%+=512
Z%perspective%=space%:space%+=&4000
d"sprites%=space%:space%+=&20000
n"�space%>limit%��255,"DIM size"
x
�assemble
��sprites
��makeshape
�8�T%=0�4095:perspective%!(T%<<2)=65536*256/(T%+256):�
��:A%=A%+32�&FFFF
�A=�*A%/&8000
�-C1=�(A*3):S1=�(A*3):C2=�(A*11):S2=�(A*11)
�7vectors!0=&10000*C1:vectors!4=0:vectors!8=&10000*S1
�Ivectors!12=&10000*-S1*S2:vectors!16=&10000*C2:vectors!20=&10000*C1*S2
�Jvectors!24=&10000*-S1*C2:vectors!28=&10000*-S2:vectors!32=&10000*C1*C2
�ȗX%,Y%,Z%
�0vectors!36=0:vectors!40=Y%-512:vectors!44=X%
�
�frame
�<C1%=191+64*�(A*12):C2%=191+64*�(A*17):C3%=191+64*�(A*19)
�T%=15�1�-1:�T%,C1%,C2%,C3%
C1%-=16:�C1%<0�C1%=0
C2%-=16:�C2%<0�C2%=0
"C3%-=16:�C3%<0�C3%=0
,�
6�0
@�
J:
T:
^
��sprites
h'�("LOAD <C60$dir>.Index "+�~index%)
r+�("LOAD <C60$dir>.Sprites "+�~sprites%)
|�
�index%!0=0:index%!4=0
�SP%=sprites%
�,�L%=1�63:IU%=index%+(L%<<3):L2%=L%*L%<<2
��:F=1/(�(6)*L%*2)
�0�X%=-126�126�4:�Y%=-126�X%�4:R2%=X%*X%+Y%*Y%
��R2%<=L2%�
�!Z=-�(L2%-R2%):B=(X%+Y%-2*Z)*F
�2�B<0��0,1��(X%�4)=(Y%�4)��0,1+B*14��0,1.5+B*14
�#Ȓ128+X%,128+Y%:Ȓ128+Y%,128+X%
��:�,
�)M%=2+L%>>1:SC%=!bankaddr+(224-M%)*160
�)!IU%=SP%-sprites%:IU%?4=M%:IU%?5=M%*2
�=!spaddr=SP%:!scaddr=SC%:!size=2*M%-1:�convspr:SP%=!spaddr
�
�
:
&��makeshape
0'�("LOAD <C60$dir>.Shape "+�~shape%)
:�
DM�T%=1�60�5:�X%,Y%,Z%:�U%=0�4:X(T%+U%)=X%+U%*10:Y(T%+U%)=Y%:Z(T%+U%)=Z%:�,
N!�T%=1�90:�L%(T%,1),L%(T%,2):�
X�:�
bO�T%=1�90:�640+X(L%(T%,1)),512+Y(L%(T%,1)),640+X(L%(T%,2)),512+Y(L%(T%,2)):�
le�T%=1�60:F=200/�(X(T%)*X(T%)+Y(T%)*Y(T%)+Z(T%)*Z(T%)):X(T%)=X(T%)*F:Y(T%)=Y(T%)*F:Z(T%)=Z(T%)*F:�
vX�:MF=0:�T%=1�90:F%=L%(T%,1):G%=L%(T%,2):DX=X(F%)-X(G%):DY=Y(F%)-Y(G%):DZ=Z(F%)-Z(G%)
��DX=0�DY=0�DZ=0�DX=1
�:R=�(DX*DX+DY*DY+DZ*DZ):F=0.5*(64/R-1):�MF<�(F)�MF=�(F)
�6X(F%)=X(F%)+DX*F:Y(F%)=Y(F%)+DY*F:Z(F%)=Z(F%)+DZ*F
�6X(G%)=X(G%)-DX*F:Y(G%)=Y(G%)-DY*F:Z(G%)=Z(G%)-DZ*F
��:�MF:�MF<0.2+0.19*�(-1)
���(-99)
�SH%=shape%:�T%=1�60
�1SH%!0=X(T%):SH%!4=Y(T%):SH%!8=Z(T%):SH%!12=72
�SH%+=16:�:!SH%=&80000000
��
�:
�A�0,100,0, 0,80,60, 50,80,50, 50,80,-50, -50,80,-50, -50,80,50
�G�0,-100,0, 0,-80,60, 50,-80,50, 50,-80,-50, -50,-80,-50, -50,-80,50
:
��1,2, 2,3, 3,4, 4,5, 5,1, 6,7, 7,8, 8,9, 9,10, 10,6, 11,12, 12,13, 13,14, 14,15, 15,11, 16,17, 17,18, 18,19, 19,20, 20,16, 21,22, 22,23, 23,24, 24,25, 25,21, 26,27, 27,28, 28,29, 29,30, 30,26
��31,32, 32,33, 33,34, 34,35, 35,31, 36,37, 37,38, 38,39, 39,40, 40,36, 41,42, 42,43, 43,44, 44,45, 45,41, 46,47, 47,48, 48,49, 49,50, 50,46, 51,52, 52,53, 53,54, 54,55, 55,51, 56,57, 57,58, 58,59, 59,60, 60,56
 C�1,6, 2,11, 3,16, 4,21, 5,26, 31,36, 32,41, 33,46, 34,51, 35,56
*H�7,15, 12,20, 17,25, 22,30, 27,10, 37,45, 42,50, 47,55, 52,60, 57,40
4G�8,39, 38,14, 13,44, 43,19, 18,49, 48,24, 23,54, 53,29, 28,59, 58,9
>:
Hݤadr(R%,H%,I%):G%=H%-P%-8
R�O%,U%,N%:O%=15:N%=0
\�U%=1�I%
f
�G%=0�
p �ȕ(G%�3)=0:G%=G%>>2:N%+=2:�
z�(G%�256)=0�
�0[OPT T%:ADD R%,O%,#(G%�255)<<N%:]:G%-=G%�255
�9�[OPT T%:SUB R%,O%,#(256-G%�255)<<N%:]:G%+=256-G%�255
��
��
�$O%=R%:�:�G%<>0��255,"ADR length"
�=T%
�:
���assemble
��T%=0�2�2:P%=code%
�[OPT T%
�.scaddr
�
EQUD 0
�.spaddr

EQUD 0
	.size

EQUD 0
$.convspr
.LDR R0,spaddr
8LDR R1,scaddr
BLDR R2,size
L
.yloop
V]:�U%=0�1:[OPT T%
`LDMIA R1!,{R7-R10}
j]:�V%=0�3:[OPT T%
tMOV (3+V%),#0
~]:�W%=0�7:[OPT T%
�TST (7+V%),#15<<(W%<<2)
�$ADDNE (3+V%),(3+V%),#15<<(W%<<2)
�]:�,:[OPT T%
�STMIA R0!,{R3-R10}
�]:�:[OPT T%
�ADD R1,R1,#160-32
�SUBS R2,R2,#1
�
BGT yloop
�STR R0,spaddr
�MOV PC,R14
�:
�"� ****************************
:

.vduvars
EQUD 148
EQUD -1
2
.bankaddr
<EQUD -1
FEQUD -1
P	.bank
Z
EQUD 0
d.scraddr
n
EQUD 0
x.animation
�
EQUD 0
�:
�	.link
�
EQUD 0
�
EQUD 0
�
EQUD 0
�.stackp
�
EQUD 0
�:
�"� ****************************
�:
�
.frame
�STR R13,stackp
STR R14,link+0
LDR R0,bank
� R0,R0,#1
"STR R0,bank
,OPT �adr(14,bankaddr,1)
6LDR R14,[R14,R0,ASL#2]
@STR R14,scraddr
JADD R1,R0,#1
TMOV R0,#112
^SWI "OS_Byte"
hMOV R0,#19
rSWI "OS_Byte"
|SWI &10C
�:
�
BL rotate
�BL sort
�BL plot
�:
�LDR R1,bank
�ADD R1,R1,#1
�MOV R0,#113
�SWI "OS_Byte"
�LDR R13,stackp
�LDR R14,link+0
�MOV PC,R14
�:
"� ****************************
.vectors
EQUD &10000:EQUD 0:EQUD 0
&EQUD 0:EQUD &10000:EQUD 0
0EQUD 0:EQUD 0:EQUD &10000
:EQUD 0:EQUD 0:EQUD 0
D:
N.rotate
XSTR R14,link+4
bOPT �adr(14,shape%,2)
lOPT �adr(13,screen%,2)
vOPT �adr(12,vectors,1)
�OPT �adr(11,perspective%,2)
�
.ballloop
�LDMIA R14!,{R0-R2,R9}
�CMP R0,#&80000000
�BEQ endrotate
�LDMIA R12!,{R3-R5}
�MUL R6,R3,R0
�MUL R7,R4,R0
�MUL R8,R5,R0
�LDMIA R12!,{R3-R5}
�MLA R6,R3,R1,R6
�MLA R7,R4,R1,R7
�MLA R8,R5,R1,R8
LDMIA R12!,{R3-R5}
MLA R6,R3,R2,R6
MLA R7,R4,R2,R7
 MLA R8,R5,R2,R8
*LDMIA R12!,{R3-R5}
4ADD R6,R3,R6,ASR#16
>ADD R7,R4,R7,ASR#16
HADD R8,R5,R8,ASR#16
RSUB R12,R12,#4*3*4
\ADDS R0,R8,#256
fMOVLT R0,#0
pCMP R0,#4096
zMOVGE R0,#4096
�SUBGE R0,R0,#1
�LDR R0,[R11,R0,LSL#2]
�MUL R6,R0,R6
�MUL R7,R0,R7
�MUL R9,R0,R9
�MOV R6,R6,ASR#16
�MOV R7,R7,ASR#16
�MOV R9,R9,ASR#16
�ADD R6,R6,#160
�RSB R7,R7,#128
�STMIA R13!,{R6-R9}
�B ballloop
�.endrotate
	STR R0,[R13]
	LDR R14,link+4
	MOV PC,R14
	$:
	."� ****************************
	8:
	B	.plot
	LSTR R14,link+4
	VLDR R14,scraddr
	`OPT �adr(13,screen%,2)
	jOPT �adr(12,index%,2)
	t
.ballloop
	~.dontprint
	�.plotreturn
	�LDMIA R13!,{R0-R3}
	�CMP R0,#&80000000
	�BEQ endplot
	�CMP R0,#32
	�CMNGT R1,#31
	�BLE dontprint
	�CMP R0,#288
	�CMPLE R1,#288
	�BGT dontprint
	�CMP R3,#64
	�MOVGE R3,#63
ADD R3,R12,R3,ASL#3

LDR R11,[R3]
LDRB R10,[R3,#4]
LDRB R9,[R3,#5]
(SUB R0,R0,#32
2SUBS R1,R1,R10
<ADDLT R9,R9,R1
FSUBLT R11,R11,R1,ASL#6
PMOVLT R1,#0
ZADD R8,R1,R9
dSUBS R8,R8,#256
nSUBGT R9,R9,R8
x
CMP R9,#0
�BLE dontprint
�OPT �adr(8,sprites%,2)
�ADD R11,R8,R11
�� R8,R0,#7
�MOV R0,R0,ASR#3
�ADD R10,R14,R0,ASL#2
�ADD R10,R10,R1,ASL#5
�ADD R10,R10,R1,ASL#7
�OPT �adr(7,plotroutines,1)
�LDR PC,[R7,R8,ASL#2]
�.dontprint
�.endplot
�LDR R14,link+4
MOV PC,R14
:
"� ****************************
":
,.plotroutines
6]:�U%=0�7:[OPT T%
@EQUD plot(U%)
J]:�:[OPT T%
T:
^.plot(0)
h
.yloop
r]:�W%=0�1:[OPT T%
|LDMIA R10,{R0-R3}
�LDMIA R11!,{R4-R7}
�]:�V%=0�3:[OPT T%
�BIC V%,V%,(V%+4)
�]:�:[OPT T%
�LDMIA R11!,{R4-R7}
�]:�V%=0�3:[OPT T%
��R V%,V%,(V%+4)
�]:�:[OPT T%
�STMIA R10!,{R0-R3}
�]:�:[OPT T%
�ADD R10,R10,#160-32
�SUBS R9,R9,#1
�
BGT yloop
B plotreturn
:
]:�U%=1�7:Z%=U%<<2:[OPT T%
&
.plot(U%)
0
.yloop
:LDMIA R10,{R0-R4}
DLDMIA R11!,{R5-R8}
N]:�V%=0�3:[OPT T%
XBIC V%,V%,(V%+5),LSL#Z%
b&BIC (V%+1),(V%+1),(V%+5),LSR#32-Z%
l]:�:[OPT T%
vLDMIA R11!,{R5-R8}
�]:�V%=0�3:[OPT T%
��R V%,V%,(V%+5),LSL#Z%
�%�R (V%+1),(V%+1),(V%+5),LSR#32-Z%
�]:�:[OPT T%
�STMIA R10!,{R0-R3}
�ADD R8,R10,#4
�LDMIA R8,{R5-R8}
�LDMIA R11!,{R0-R3}
�]:�V%=0�3:[OPT T%
�BIC (V%+4),(V%+4),V%,LSL#Z%
�"BIC (V%+5),(V%+5),V%,LSR#32-Z%
�]:�:[OPT T%
�LDMIA R11!,{R0-R3}

]:�V%=0�3:[OPT T%

�R (V%+4),(V%+4),V%,LSL#Z%

!�R (V%+5),(V%+5),V%,LSR#32-Z%

 ]:�:[OPT T%

*STMIA R10!,{R4-R8}

4ADD R10,R10,#160-36

>SUBS R9,R9,#1

H
BGT yloop

RB plotreturn

\]:�:[OPT T%

f:

p%� *******************************

z:

�	.sort

�STR R14,link+4

�OPT �adr(14,screen%,2)

�.outloop

�MOV R13,R14

�ADD R12,R13,#16

�LDR R1,[R13,#8]

�.inloop

�LDR R0,[R12,#8]

�
CMP R0,R1

�MOVGT R1,R0

�MOVGT R13,R12

�ADD R12,R12,#16
LDR R0,[R12]
CMP R0,#&80000000
BNE inloop
$LDMIA R13,{R0-R3}
.LDMIA R14,{R4-R7}
8STMIA R14!,{R0-R3}
BSTMIA R13,{R4-R7}
LLDR R0,[R14,#16]
VCMP R0,#&80000000
`BNE outloop
jLDR R14,link+4
tMOV PC,R14
~]:�
*FX112,2
�.ș"OS_ReadVduVariables",vduvars,bankaddr+4
�*FX112,1
�,ș"OS_ReadVduVariables",vduvars,bankaddr
��
�:
�
��testscr
�SH%=screen%
�&�:Z%=SH%!8-vectors!44+256:�0,Z%>>5
�%ȏSH%!0<<2,255-SH%!4<<2,SH%!12<<1
�SH%+=16:�SH%!0=&80000000
��
�:
���testconv
�SP%=sprites%
��T%=0�5:SC%=!bankaddr
(�Y%=0�255:�X%=0�63�4:SC%!X%=SP%!X%:�

SC%+=160:SP%+=64:�:A=�:�
�
�
00000000  0d 00 0a 06 eb 39 0d 00  14 24 e3 54 25 3d 30 b8  |.....9...$.T%=0.|
00000010  31 35 3a fb 54 25 2c 54  25 3c 3c 34 2c 54 25 3c  |15:.T%,T%<<4,T%<|
00000020  3c 34 2c 54 25 3c 3c 34  3a ed 0d 00 1e 1f de 58  |<4,T%<<4:......X|
00000030  28 36 30 29 2c 59 28 36  30 29 2c 5a 28 36 30 29  |(60),Y(60),Z(60)|
00000040  2c 4c 25 28 39 30 2c 32  29 0d 00 28 2e de 70 6c  |,L%(90,2)..(..pl|
00000050  6f 74 28 37 29 2c 73 70  61 63 65 25 26 33 30 30  |ot(7),space%&300|
00000060  30 30 3a 6c 69 6d 69 74  25 3d 73 70 61 63 65 25  |00:limit%=space%|
00000070  2b 26 33 30 30 30 30 0d  00 32 1e 63 6f 64 65 25  |+&30000..2.code%|
00000080  3d 73 70 61 63 65 25 3a  73 70 61 63 65 25 2b 3d  |=space%:space%+=|
00000090  31 36 33 38 34 0d 00 3c  1f 73 68 61 70 65 25 3d  |16384..<.shape%=|
000000a0  73 70 61 63 65 25 3a 73  70 61 63 65 25 2b 3d 31  |space%:space%+=1|
000000b0  36 2a 36 34 0d 00 46 20  73 63 72 65 65 6e 25 3d  |6*64..F screen%=|
000000c0  73 70 61 63 65 25 3a 73  70 61 63 65 25 2b 3d 31  |space%:space%+=1|
000000d0  36 2a 36 34 0d 00 50 1d  69 6e 64 65 78 25 3d 73  |6*64..P.index%=s|
000000e0  70 61 63 65 25 3a 73 70  61 63 65 25 2b 3d 35 31  |pace%:space%+=51|
000000f0  32 0d 00 5a 25 70 65 72  73 70 65 63 74 69 76 65  |2..Z%perspective|
00000100  25 3d 73 70 61 63 65 25  3a 73 70 61 63 65 25 2b  |%=space%:space%+|
00000110  3d 26 34 30 30 30 0d 00  64 22 73 70 72 69 74 65  |=&4000..d"sprite|
00000120  73 25 3d 73 70 61 63 65  25 3a 73 70 61 63 65 25  |s%=space%:space%|
00000130  2b 3d 26 32 30 30 30 30  0d 00 6e 22 e7 73 70 61  |+=&20000..n".spa|
00000140  63 65 25 3e 6c 69 6d 69  74 25 8c 85 32 35 35 2c  |ce%>limit%..255,|
00000150  22 44 49 4d 20 73 69 7a  65 22 0d 00 78 0d f2 61  |"DIM size"..x..a|
00000160  73 73 65 6d 62 6c 65 0d  00 82 0c f2 73 70 72 69  |ssemble.....spri|
00000170  74 65 73 0d 00 8c 0e f2  6d 61 6b 65 73 68 61 70  |tes.....makeshap|
00000180  65 0d 00 96 38 e3 54 25  3d 30 b8 34 30 39 35 3a  |e...8.T%=0.4095:|
00000190  70 65 72 73 70 65 63 74  69 76 65 25 21 28 54 25  |perspective%!(T%|
000001a0  3c 3c 32 29 3d 36 35 35  33 36 2a 32 35 36 2f 28  |<<2)=65536*256/(|
000001b0  54 25 2b 32 35 36 29 3a  ed 0d 00 a0 14 f5 3a 41  |T%+256):......:A|
000001c0  25 3d 41 25 2b 33 32 80  26 46 46 46 46 0d 00 aa  |%=A%+32.&FFFF...|
000001d0  10 41 3d af 2a 41 25 2f  26 38 30 30 30 0d 00 b4  |.A=.*A%/&8000...|
000001e0  2d 43 31 3d 9b 28 41 2a  33 29 3a 53 31 3d b5 28  |-C1=.(A*3):S1=.(|
000001f0  41 2a 33 29 3a 43 32 3d  9b 28 41 2a 31 31 29 3a  |A*3):C2=.(A*11):|
00000200  53 32 3d b5 28 41 2a 31  31 29 0d 00 be 37 76 65  |S2=.(A*11)...7ve|
00000210  63 74 6f 72 73 21 30 3d  26 31 30 30 30 30 2a 43  |ctors!0=&10000*C|
00000220  31 3a 76 65 63 74 6f 72  73 21 34 3d 30 3a 76 65  |1:vectors!4=0:ve|
00000230  63 74 6f 72 73 21 38 3d  26 31 30 30 30 30 2a 53  |ctors!8=&10000*S|
00000240  31 0d 00 c8 49 76 65 63  74 6f 72 73 21 31 32 3d  |1...Ivectors!12=|
00000250  26 31 30 30 30 30 2a 2d  53 31 2a 53 32 3a 76 65  |&10000*-S1*S2:ve|
00000260  63 74 6f 72 73 21 31 36  3d 26 31 30 30 30 30 2a  |ctors!16=&10000*|
00000270  43 32 3a 76 65 63 74 6f  72 73 21 32 30 3d 26 31  |C2:vectors!20=&1|
00000280  30 30 30 30 2a 43 31 2a  53 32 0d 00 d2 4a 76 65  |0000*C1*S2...Jve|
00000290  63 74 6f 72 73 21 32 34  3d 26 31 30 30 30 30 2a  |ctors!24=&10000*|
000002a0  2d 53 31 2a 43 32 3a 76  65 63 74 6f 72 73 21 32  |-S1*C2:vectors!2|
000002b0  38 3d 26 31 30 30 30 30  2a 2d 53 32 3a 76 65 63  |8=&10000*-S2:vec|
000002c0  74 6f 72 73 21 33 32 3d  26 31 30 30 30 30 2a 43  |tors!32=&10000*C|
000002d0  31 2a 43 32 0d 00 dc 0e  c8 97 58 25 2c 59 25 2c  |1*C2......X%,Y%,|
000002e0  5a 25 0d 00 e6 30 76 65  63 74 6f 72 73 21 33 36  |Z%...0vectors!36|
000002f0  3d 30 3a 76 65 63 74 6f  72 73 21 34 30 3d 59 25  |=0:vectors!40=Y%|
00000300  2d 35 31 32 3a 76 65 63  74 6f 72 73 21 34 34 3d  |-512:vectors!44=|
00000310  58 25 0d 00 f0 0a d6 66  72 61 6d 65 0d 00 fa 3c  |X%.....frame...<|
00000320  43 31 25 3d 31 39 31 2b  36 34 2a 9b 28 41 2a 31  |C1%=191+64*.(A*1|
00000330  32 29 3a 43 32 25 3d 31  39 31 2b 36 34 2a 9b 28  |2):C2%=191+64*.(|
00000340  41 2a 31 37 29 3a 43 33  25 3d 31 39 31 2b 36 34  |A*17):C3%=191+64|
00000350  2a 9b 28 41 2a 31 39 29  0d 01 04 1f e3 54 25 3d  |*.(A*19).....T%=|
00000360  31 35 b8 31 88 2d 31 3a  fb 54 25 2c 43 31 25 2c  |15.1.-1:.T%,C1%,|
00000370  43 32 25 2c 43 33 25 0d  01 0e 18 43 31 25 2d 3d  |C2%,C3%....C1%-=|
00000380  31 36 3a e7 43 31 25 3c  30 8c 43 31 25 3d 30 0d  |16:.C1%<0.C1%=0.|
00000390  01 18 18 43 32 25 2d 3d  31 36 3a e7 43 32 25 3c  |...C2%-=16:.C2%<|
000003a0  30 8c 43 32 25 3d 30 0d  01 22 18 43 33 25 2d 3d  |0.C2%=0..".C3%-=|
000003b0  31 36 3a e7 43 33 25 3c  30 8c 43 33 25 3d 30 0d  |16:.C3%<0.C3%=0.|
000003c0  01 2c 05 ed 0d 01 36 06  fd 30 0d 01 40 05 e0 0d  |.,....6..0..@...|
000003d0  01 4a 05 3a 0d 01 54 05  3a 0d 01 5e 0d dd f2 73  |.J.:..T.:..^...s|
000003e0  70 72 69 74 65 73 0d 01  68 27 ff 28 22 4c 4f 41  |prites..h'.("LOA|
000003f0  44 20 3c 43 36 30 24 64  69 72 3e 2e 49 6e 64 65  |D <C60$dir>.Inde|
00000400  78 20 22 2b c3 7e 69 6e  64 65 78 25 29 0d 01 72  |x "+.~index%)..r|
00000410  2b ff 28 22 4c 4f 41 44  20 3c 43 36 30 24 64 69  |+.("LOAD <C60$di|
00000420  72 3e 2e 53 70 72 69 74  65 73 20 22 2b c3 7e 73  |r>.Sprites "+.~s|
00000430  70 72 69 74 65 73 25 29  0d 01 7c 05 e1 0d 01 86  |prites%)..|.....|
00000440  19 69 6e 64 65 78 25 21  30 3d 30 3a 69 6e 64 65  |.index%!0=0:inde|
00000450  78 25 21 34 3d 30 0d 01  90 10 53 50 25 3d 73 70  |x%!4=0....SP%=sp|
00000460  72 69 74 65 73 25 0d 01  9a 2c e3 4c 25 3d 31 b8  |rites%...,.L%=1.|
00000470  36 33 3a 49 55 25 3d 69  6e 64 65 78 25 2b 28 4c  |63:IU%=index%+(L|
00000480  25 3c 3c 33 29 3a 4c 32  25 3d 4c 25 2a 4c 25 3c  |%<<3):L2%=L%*L%<|
00000490  3c 32 0d 01 a4 15 db 3a  46 3d 31 2f 28 b6 28 36  |<2.....:F=1/(.(6|
000004a0  29 2a 4c 25 2a 32 29 0d  01 ae 30 e3 58 25 3d 2d  |)*L%*2)...0.X%=-|
000004b0  31 32 36 b8 31 32 36 88  34 3a e3 59 25 3d 2d 31  |126.126.4:.Y%=-1|
000004c0  32 36 b8 58 25 88 34 3a  52 32 25 3d 58 25 2a 58  |26.X%.4:R2%=X%*X|
000004d0  25 2b 59 25 2a 59 25 0d  01 b8 0e e7 52 32 25 3c  |%+Y%*Y%.....R2%<|
000004e0  3d 4c 32 25 8c 0d 01 c2  21 5a 3d 2d b6 28 4c 32  |=L2%....!Z=-.(L2|
000004f0  25 2d 52 32 25 29 3a 42  3d 28 58 25 2b 59 25 2d  |%-R2%):B=(X%+Y%-|
00000500  32 2a 5a 29 2a 46 0d 01  cc 32 e7 42 3c 30 8c e6  |2*Z)*F...2.B<0..|
00000510  30 2c 31 8b e7 28 58 25  80 34 29 3d 28 59 25 80  |0,1..(X%.4)=(Y%.|
00000520  34 29 8c e6 30 2c 31 2b  42 2a 31 34 8b e6 30 2c  |4)..0,1+B*14..0,|
00000530  31 2e 35 2b 42 2a 31 34  0d 01 d6 23 c8 92 31 32  |1.5+B*14...#..12|
00000540  38 2b 58 25 2c 31 32 38  2b 59 25 3a c8 92 31 32  |8+X%,128+Y%:..12|
00000550  38 2b 59 25 2c 31 32 38  2b 58 25 0d 01 e0 08 cd  |8+Y%,128+X%.....|
00000560  3a ed 2c 0d 01 ea 29 4d  25 3d 32 2b 4c 25 3e 3e  |:.,...)M%=2+L%>>|
00000570  31 3a 53 43 25 3d 21 62  61 6e 6b 61 64 64 72 2b  |1:SC%=!bankaddr+|
00000580  28 32 32 34 2d 4d 25 29  2a 31 36 30 0d 01 f4 29  |(224-M%)*160...)|
00000590  21 49 55 25 3d 53 50 25  2d 73 70 72 69 74 65 73  |!IU%=SP%-sprites|
000005a0  25 3a 49 55 25 3f 34 3d  4d 25 3a 49 55 25 3f 35  |%:IU%?4=M%:IU%?5|
000005b0  3d 4d 25 2a 32 0d 01 fe  3d 21 73 70 61 64 64 72  |=M%*2...=!spaddr|
000005c0  3d 53 50 25 3a 21 73 63  61 64 64 72 3d 53 43 25  |=SP%:!scaddr=SC%|
000005d0  3a 21 73 69 7a 65 3d 32  2a 4d 25 2d 31 3a d6 63  |:!size=2*M%-1:.c|
000005e0  6f 6e 76 73 70 72 3a 53  50 25 3d 21 73 70 61 64  |onvspr:SP%=!spad|
000005f0  64 72 0d 02 08 05 ed 0d  02 12 05 e1 0d 02 1c 05  |dr..............|
00000600  3a 0d 02 26 0f dd f2 6d  61 6b 65 73 68 61 70 65  |:..&...makeshape|
00000610  0d 02 30 27 ff 28 22 4c  4f 41 44 20 3c 43 36 30  |..0'.("LOAD <C60|
00000620  24 64 69 72 3e 2e 53 68  61 70 65 20 22 2b c3 7e  |$dir>.Shape "+.~|
00000630  73 68 61 70 65 25 29 0d  02 3a 05 e1 0d 02 44 4d  |shape%)..:....DM|
00000640  e3 54 25 3d 31 b8 36 30  88 35 3a f3 58 25 2c 59  |.T%=1.60.5:.X%,Y|
00000650  25 2c 5a 25 3a e3 55 25  3d 30 b8 34 3a 58 28 54  |%,Z%:.U%=0.4:X(T|
00000660  25 2b 55 25 29 3d 58 25  2b 55 25 2a 31 30 3a 59  |%+U%)=X%+U%*10:Y|
00000670  28 54 25 2b 55 25 29 3d  59 25 3a 5a 28 54 25 2b  |(T%+U%)=Y%:Z(T%+|
00000680  55 25 29 3d 5a 25 3a ed  2c 0d 02 4e 21 e3 54 25  |U%)=Z%:.,..N!.T%|
00000690  3d 31 b8 39 30 3a f3 4c  25 28 54 25 2c 31 29 2c  |=1.90:.L%(T%,1),|
000006a0  4c 25 28 54 25 2c 32 29  3a ed 0d 02 58 07 f5 3a  |L%(T%,2):...X..:|
000006b0  db 0d 02 62 4f e3 54 25  3d 31 b8 39 30 3a 86 36  |...bO.T%=1.90:.6|
000006c0  34 30 2b 58 28 4c 25 28  54 25 2c 31 29 29 2c 35  |40+X(L%(T%,1)),5|
000006d0  31 32 2b 59 28 4c 25 28  54 25 2c 31 29 29 2c 36  |12+Y(L%(T%,1)),6|
000006e0  34 30 2b 58 28 4c 25 28  54 25 2c 32 29 29 2c 35  |40+X(L%(T%,2)),5|
000006f0  31 32 2b 59 28 4c 25 28  54 25 2c 32 29 29 3a ed  |12+Y(L%(T%,2)):.|
00000700  0d 02 6c 65 e3 54 25 3d  31 b8 36 30 3a 46 3d 32  |..le.T%=1.60:F=2|
00000710  30 30 2f b6 28 58 28 54  25 29 2a 58 28 54 25 29  |00/.(X(T%)*X(T%)|
00000720  2b 59 28 54 25 29 2a 59  28 54 25 29 2b 5a 28 54  |+Y(T%)*Y(T%)+Z(T|
00000730  25 29 2a 5a 28 54 25 29  29 3a 58 28 54 25 29 3d  |%)*Z(T%)):X(T%)=|
00000740  58 28 54 25 29 2a 46 3a  59 28 54 25 29 3d 59 28  |X(T%)*F:Y(T%)=Y(|
00000750  54 25 29 2a 46 3a 5a 28  54 25 29 3d 5a 28 54 25  |T%)*F:Z(T%)=Z(T%|
00000760  29 2a 46 3a ed 0d 02 76  58 f5 3a 4d 46 3d 30 3a  |)*F:...vX.:MF=0:|
00000770  e3 54 25 3d 31 b8 39 30  3a 46 25 3d 4c 25 28 54  |.T%=1.90:F%=L%(T|
00000780  25 2c 31 29 3a 47 25 3d  4c 25 28 54 25 2c 32 29  |%,1):G%=L%(T%,2)|
00000790  3a 44 58 3d 58 28 46 25  29 2d 58 28 47 25 29 3a  |:DX=X(F%)-X(G%):|
000007a0  44 59 3d 59 28 46 25 29  2d 59 28 47 25 29 3a 44  |DY=Y(F%)-Y(G%):D|
000007b0  5a 3d 5a 28 46 25 29 2d  5a 28 47 25 29 0d 02 80  |Z=Z(F%)-Z(G%)...|
000007c0  18 e7 44 58 3d 30 80 44  59 3d 30 80 44 5a 3d 30  |..DX=0.DY=0.DZ=0|
000007d0  8c 44 58 3d 31 0d 02 8a  3a 52 3d b6 28 44 58 2a  |.DX=1...:R=.(DX*|
000007e0  44 58 2b 44 59 2a 44 59  2b 44 5a 2a 44 5a 29 3a  |DX+DY*DY+DZ*DZ):|
000007f0  46 3d 30 2e 35 2a 28 36  34 2f 52 2d 31 29 3a e7  |F=0.5*(64/R-1):.|
00000800  4d 46 3c 94 28 46 29 8c  4d 46 3d 94 28 46 29 0d  |MF<.(F).MF=.(F).|
00000810  02 94 36 58 28 46 25 29  3d 58 28 46 25 29 2b 44  |..6X(F%)=X(F%)+D|
00000820  58 2a 46 3a 59 28 46 25  29 3d 59 28 46 25 29 2b  |X*F:Y(F%)=Y(F%)+|
00000830  44 59 2a 46 3a 5a 28 46  25 29 3d 5a 28 46 25 29  |DY*F:Z(F%)=Z(F%)|
00000840  2b 44 5a 2a 46 0d 02 9e  36 58 28 47 25 29 3d 58  |+DZ*F...6X(G%)=X|
00000850  28 47 25 29 2d 44 58 2a  46 3a 59 28 47 25 29 3d  |(G%)-DX*F:Y(G%)=|
00000860  59 28 47 25 29 2d 44 59  2a 46 3a 5a 28 47 25 29  |Y(G%)-DY*F:Z(G%)|
00000870  3d 5a 28 47 25 29 2d 44  5a 2a 46 0d 02 a8 1c ed  |=Z(G%)-DZ*F.....|
00000880  3a f1 4d 46 3a fd 4d 46  3c 30 2e 32 2b 30 2e 31  |:.MF:.MF<0.2+0.1|
00000890  39 2a a6 28 2d 31 29 0d  02 b2 0b fd a6 28 2d 39  |9*.(-1)......(-9|
000008a0  39 29 0d 02 bc 17 53 48  25 3d 73 68 61 70 65 25  |9)....SH%=shape%|
000008b0  3a e3 54 25 3d 31 b8 36  30 0d 02 c6 31 53 48 25  |:.T%=1.60...1SH%|
000008c0  21 30 3d 58 28 54 25 29  3a 53 48 25 21 34 3d 59  |!0=X(T%):SH%!4=Y|
000008d0  28 54 25 29 3a 53 48 25  21 38 3d 5a 28 54 25 29  |(T%):SH%!8=Z(T%)|
000008e0  3a 53 48 25 21 31 32 3d  37 32 0d 02 d0 1c 53 48  |:SH%!12=72....SH|
000008f0  25 2b 3d 31 36 3a ed 3a  21 53 48 25 3d 26 38 30  |%+=16:.:!SH%=&80|
00000900  30 30 30 30 30 30 0d 02  da 05 e1 0d 02 e4 05 3a  |000000.........:|
00000910  0d 02 ee 41 dc 30 2c 31  30 30 2c 30 2c 20 30 2c  |...A.0,100,0, 0,|
00000920  38 30 2c 36 30 2c 20 35  30 2c 38 30 2c 35 30 2c  |80,60, 50,80,50,|
00000930  20 35 30 2c 38 30 2c 2d  35 30 2c 20 2d 35 30 2c  | 50,80,-50, -50,|
00000940  38 30 2c 2d 35 30 2c 20  2d 35 30 2c 38 30 2c 35  |80,-50, -50,80,5|
00000950  30 0d 02 f8 47 dc 30 2c  2d 31 30 30 2c 30 2c 20  |0...G.0,-100,0, |
00000960  30 2c 2d 38 30 2c 36 30  2c 20 35 30 2c 2d 38 30  |0,-80,60, 50,-80|
00000970  2c 35 30 2c 20 35 30 2c  2d 38 30 2c 2d 35 30 2c  |,50, 50,-80,-50,|
00000980  20 2d 35 30 2c 2d 38 30  2c 2d 35 30 2c 20 2d 35  | -50,-80,-50, -5|
00000990  30 2c 2d 38 30 2c 35 30  0d 03 02 05 3a 0d 03 0c  |0,-80,50....:...|
000009a0  c3 dc 31 2c 32 2c 20 32  2c 33 2c 20 33 2c 34 2c  |..1,2, 2,3, 3,4,|
000009b0  20 34 2c 35 2c 20 35 2c  31 2c 20 36 2c 37 2c 20  | 4,5, 5,1, 6,7, |
000009c0  37 2c 38 2c 20 38 2c 39  2c 20 39 2c 31 30 2c 20  |7,8, 8,9, 9,10, |
000009d0  31 30 2c 36 2c 20 31 31  2c 31 32 2c 20 31 32 2c  |10,6, 11,12, 12,|
000009e0  31 33 2c 20 31 33 2c 31  34 2c 20 31 34 2c 31 35  |13, 13,14, 14,15|
000009f0  2c 20 31 35 2c 31 31 2c  20 31 36 2c 31 37 2c 20  |, 15,11, 16,17, |
00000a00  31 37 2c 31 38 2c 20 31  38 2c 31 39 2c 20 31 39  |17,18, 18,19, 19|
00000a10  2c 32 30 2c 20 32 30 2c  31 36 2c 20 32 31 2c 32  |,20, 20,16, 21,2|
00000a20  32 2c 20 32 32 2c 32 33  2c 20 32 33 2c 32 34 2c  |2, 22,23, 23,24,|
00000a30  20 32 34 2c 32 35 2c 20  32 35 2c 32 31 2c 20 32  | 24,25, 25,21, 2|
00000a40  36 2c 32 37 2c 20 32 37  2c 32 38 2c 20 32 38 2c  |6,27, 27,28, 28,|
00000a50  32 39 2c 20 32 39 2c 33  30 2c 20 33 30 2c 32 36  |29, 29,30, 30,26|
00000a60  0d 03 16 d5 dc 33 31 2c  33 32 2c 20 33 32 2c 33  |.....31,32, 32,3|
00000a70  33 2c 20 33 33 2c 33 34  2c 20 33 34 2c 33 35 2c  |3, 33,34, 34,35,|
00000a80  20 33 35 2c 33 31 2c 20  33 36 2c 33 37 2c 20 33  | 35,31, 36,37, 3|
00000a90  37 2c 33 38 2c 20 33 38  2c 33 39 2c 20 33 39 2c  |7,38, 38,39, 39,|
00000aa0  34 30 2c 20 34 30 2c 33  36 2c 20 34 31 2c 34 32  |40, 40,36, 41,42|
00000ab0  2c 20 34 32 2c 34 33 2c  20 34 33 2c 34 34 2c 20  |, 42,43, 43,44, |
00000ac0  34 34 2c 34 35 2c 20 34  35 2c 34 31 2c 20 34 36  |44,45, 45,41, 46|
00000ad0  2c 34 37 2c 20 34 37 2c  34 38 2c 20 34 38 2c 34  |,47, 47,48, 48,4|
00000ae0  39 2c 20 34 39 2c 35 30  2c 20 35 30 2c 34 36 2c  |9, 49,50, 50,46,|
00000af0  20 35 31 2c 35 32 2c 20  35 32 2c 35 33 2c 20 35  | 51,52, 52,53, 5|
00000b00  33 2c 35 34 2c 20 35 34  2c 35 35 2c 20 35 35 2c  |3,54, 54,55, 55,|
00000b10  35 31 2c 20 35 36 2c 35  37 2c 20 35 37 2c 35 38  |51, 56,57, 57,58|
00000b20  2c 20 35 38 2c 35 39 2c  20 35 39 2c 36 30 2c 20  |, 58,59, 59,60, |
00000b30  36 30 2c 35 36 0d 03 20  43 dc 31 2c 36 2c 20 32  |60,56.. C.1,6, 2|
00000b40  2c 31 31 2c 20 33 2c 31  36 2c 20 34 2c 32 31 2c  |,11, 3,16, 4,21,|
00000b50  20 35 2c 32 36 2c 20 33  31 2c 33 36 2c 20 33 32  | 5,26, 31,36, 32|
00000b60  2c 34 31 2c 20 33 33 2c  34 36 2c 20 33 34 2c 35  |,41, 33,46, 34,5|
00000b70  31 2c 20 33 35 2c 35 36  0d 03 2a 48 dc 37 2c 31  |1, 35,56..*H.7,1|
00000b80  35 2c 20 31 32 2c 32 30  2c 20 31 37 2c 32 35 2c  |5, 12,20, 17,25,|
00000b90  20 32 32 2c 33 30 2c 20  32 37 2c 31 30 2c 20 33  | 22,30, 27,10, 3|
00000ba0  37 2c 34 35 2c 20 34 32  2c 35 30 2c 20 34 37 2c  |7,45, 42,50, 47,|
00000bb0  35 35 2c 20 35 32 2c 36  30 2c 20 35 37 2c 34 30  |55, 52,60, 57,40|
00000bc0  0d 03 34 47 dc 38 2c 33  39 2c 20 33 38 2c 31 34  |..4G.8,39, 38,14|
00000bd0  2c 20 31 33 2c 34 34 2c  20 34 33 2c 31 39 2c 20  |, 13,44, 43,19, |
00000be0  31 38 2c 34 39 2c 20 34  38 2c 32 34 2c 20 32 33  |18,49, 48,24, 23|
00000bf0  2c 35 34 2c 20 35 33 2c  32 39 2c 20 32 38 2c 35  |,54, 53,29, 28,5|
00000c00  39 2c 20 35 38 2c 39 0d  03 3e 05 3a 0d 03 48 1e  |9, 58,9..>.:..H.|
00000c10  dd a4 61 64 72 28 52 25  2c 48 25 2c 49 25 29 3a  |..adr(R%,H%,I%):|
00000c20  47 25 3d 48 25 2d 50 25  2d 38 0d 03 52 18 ea 4f  |G%=H%-P%-8..R..O|
00000c30  25 2c 55 25 2c 4e 25 3a  4f 25 3d 31 35 3a 4e 25  |%,U%,N%:O%=15:N%|
00000c40  3d 30 0d 03 5c 0c e3 55  25 3d 31 b8 49 25 0d 03  |=0..\..U%=1.I%..|
00000c50  66 0a e7 47 25 3d 30 8c  0d 03 70 20 cc c8 95 28  |f..G%=0...p ...(|
00000c60  47 25 80 33 29 3d 30 3a  47 25 3d 47 25 3e 3e 32  |G%.3)=0:G%=G%>>2|
00000c70  3a 4e 25 2b 3d 32 3a ce  0d 03 7a 10 e7 28 47 25  |:N%+=2:...z..(G%|
00000c80  80 32 35 36 29 3d 30 8c  0d 03 84 30 5b 4f 50 54  |.256)=0....0[OPT|
00000c90  20 54 25 3a 41 44 44 20  52 25 2c 4f 25 2c 23 28  | T%:ADD R%,O%,#(|
00000ca0  47 25 80 32 35 35 29 3c  3c 4e 25 3a 5d 3a 47 25  |G%.255)<<N%:]:G%|
00000cb0  2d 3d 47 25 80 32 35 35  0d 03 8e 39 cc 5b 4f 50  |-=G%.255...9.[OP|
00000cc0  54 20 54 25 3a 53 55 42  20 52 25 2c 4f 25 2c 23  |T T%:SUB R%,O%,#|
00000cd0  28 32 35 36 2d 47 25 80  32 35 35 29 3c 3c 4e 25  |(256-G%.255)<<N%|
00000ce0  3a 5d 3a 47 25 2b 3d 32  35 36 2d 47 25 80 32 35  |:]:G%+=256-G%.25|
00000cf0  35 0d 03 98 05 cd 0d 03  a2 05 cd 0d 03 ac 24 4f  |5.............$O|
00000d00  25 3d 52 25 3a ed 3a e7  47 25 3c 3e 30 8c 85 32  |%=R%:.:.G%<>0..2|
00000d10  35 35 2c 22 41 44 52 20  6c 65 6e 67 74 68 22 0d  |55,"ADR length".|
00000d20  03 b6 07 3d 54 25 0d 03  c0 05 3a 0d 03 ca 0e dd  |...=T%....:.....|
00000d30  f2 61 73 73 65 6d 62 6c  65 0d 03 d4 16 e3 54 25  |.assemble.....T%|
00000d40  3d 30 b8 32 88 32 3a 50  25 3d 63 6f 64 65 25 0d  |=0.2.2:P%=code%.|
00000d50  03 de 0b 5b 4f 50 54 20  54 25 0d 03 e8 0b 2e 73  |...[OPT T%.....s|
00000d60  63 61 64 64 72 0d 03 f2  0a 45 51 55 44 20 30 0d  |caddr....EQUD 0.|
00000d70  03 fc 0b 2e 73 70 61 64  64 72 0d 04 06 0a 45 51  |....spaddr....EQ|
00000d80  55 44 20 30 0d 04 10 09  2e 73 69 7a 65 0d 04 1a  |UD 0.....size...|
00000d90  0a 45 51 55 44 20 30 0d  04 24 0c 2e 63 6f 6e 76  |.EQUD 0..$..conv|
00000da0  73 70 72 0d 04 2e 11 4c  44 52 20 52 30 2c 73 70  |spr....LDR R0,sp|
00000db0  61 64 64 72 0d 04 38 11  4c 44 52 20 52 31 2c 73  |addr..8.LDR R1,s|
00000dc0  63 61 64 64 72 0d 04 42  0f 4c 44 52 20 52 32 2c  |caddr..B.LDR R2,|
00000dd0  73 69 7a 65 0d 04 4c 0a  2e 79 6c 6f 6f 70 0d 04  |size..L..yloop..|
00000de0  56 15 5d 3a e3 55 25 3d  30 b8 31 3a 5b 4f 50 54  |V.]:.U%=0.1:[OPT|
00000df0  20 54 25 0d 04 60 16 4c  44 4d 49 41 20 52 31 21  | T%..`.LDMIA R1!|
00000e00  2c 7b 52 37 2d 52 31 30  7d 0d 04 6a 15 5d 3a e3  |,{R7-R10}..j.]:.|
00000e10  56 25 3d 30 b8 33 3a 5b  4f 50 54 20 54 25 0d 04  |V%=0.3:[OPT T%..|
00000e20  74 11 4d 4f 56 20 28 33  2b 56 25 29 2c 23 30 0d  |t.MOV (3+V%),#0.|
00000e30  04 7e 15 5d 3a e3 57 25  3d 30 b8 37 3a 5b 4f 50  |.~.]:.W%=0.7:[OP|
00000e40  54 20 54 25 0d 04 88 1b  54 53 54 20 28 37 2b 56  |T T%....TST (7+V|
00000e50  25 29 2c 23 31 35 3c 3c  28 57 25 3c 3c 32 29 0d  |%),#15<<(W%<<2).|
00000e60  04 92 24 41 44 44 4e 45  20 28 33 2b 56 25 29 2c  |..$ADDNE (3+V%),|
00000e70  28 33 2b 56 25 29 2c 23  31 35 3c 3c 28 57 25 3c  |(3+V%),#15<<(W%<|
00000e80  3c 32 29 0d 04 9c 10 5d  3a ed 2c 3a 5b 4f 50 54  |<2)....]:.,:[OPT|
00000e90  20 54 25 0d 04 a6 16 53  54 4d 49 41 20 52 30 21  | T%....STMIA R0!|
00000ea0  2c 7b 52 33 2d 52 31 30  7d 0d 04 b0 0f 5d 3a ed  |,{R3-R10}....]:.|
00000eb0  3a 5b 4f 50 54 20 54 25  0d 04 ba 15 41 44 44 20  |:[OPT T%....ADD |
00000ec0  52 31 2c 52 31 2c 23 31  36 30 2d 33 32 0d 04 c4  |R1,R1,#160-32...|
00000ed0  11 53 55 42 53 20 52 32  2c 52 32 2c 23 31 0d 04  |.SUBS R2,R2,#1..|
00000ee0  ce 0d 42 47 54 20 79 6c  6f 6f 70 0d 04 d8 11 53  |..BGT yloop....S|
00000ef0  54 52 20 52 30 2c 73 70  61 64 64 72 0d 04 e2 0e  |TR R0,spaddr....|
00000f00  4d 4f 56 20 50 43 2c 52  31 34 0d 04 ec 05 3a 0d  |MOV PC,R14....:.|
00000f10  04 f6 22 f4 20 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |..". ***********|
00000f20  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
00000f30  2a 0d 05 00 05 3a 0d 05  0a 0c 2e 76 64 75 76 61  |*....:.....vduva|
00000f40  72 73 0d 05 14 0c 45 51  55 44 20 31 34 38 0d 05  |rs....EQUD 148..|
00000f50  1e 0b 45 51 55 44 20 2d  31 0d 05 32 0d 2e 62 61  |..EQUD -1..2..ba|
00000f60  6e 6b 61 64 64 72 0d 05  3c 0b 45 51 55 44 20 2d  |nkaddr..<.EQUD -|
00000f70  31 0d 05 46 0b 45 51 55  44 20 2d 31 0d 05 50 09  |1..F.EQUD -1..P.|
00000f80  2e 62 61 6e 6b 0d 05 5a  0a 45 51 55 44 20 30 0d  |.bank..Z.EQUD 0.|
00000f90  05 64 0c 2e 73 63 72 61  64 64 72 0d 05 6e 0a 45  |.d..scraddr..n.E|
00000fa0  51 55 44 20 30 0d 05 78  0e 2e 61 6e 69 6d 61 74  |QUD 0..x..animat|
00000fb0  69 6f 6e 0d 05 82 0a 45  51 55 44 20 30 0d 05 8c  |ion....EQUD 0...|
00000fc0  05 3a 0d 05 96 09 2e 6c  69 6e 6b 0d 05 a0 0a 45  |.:.....link....E|
00000fd0  51 55 44 20 30 0d 05 aa  0a 45 51 55 44 20 30 0d  |QUD 0....EQUD 0.|
00000fe0  05 b4 0a 45 51 55 44 20  30 0d 05 be 0b 2e 73 74  |...EQUD 0.....st|
00000ff0  61 63 6b 70 0d 05 c8 0a  45 51 55 44 20 30 0d 05  |ackp....EQUD 0..|
00001000  d2 05 3a 0d 05 dc 22 f4  20 2a 2a 2a 2a 2a 2a 2a  |..:...". *******|
00001010  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
00001020  2a 2a 2a 2a 2a 0d 05 e6  05 3a 0d 05 f0 0a 2e 66  |*****....:.....f|
00001030  72 61 6d 65 0d 05 fa 12  53 54 52 20 52 31 33 2c  |rame....STR R13,|
00001040  73 74 61 63 6b 70 0d 06  04 12 53 54 52 20 52 31  |stackp....STR R1|
00001050  34 2c 6c 69 6e 6b 2b 30  0d 06 0e 0f 4c 44 52 20  |4,link+0....LDR |
00001060  52 30 2c 62 61 6e 6b 0d  06 18 0e 82 20 52 30 2c  |R0,bank..... R0,|
00001070  52 30 2c 23 31 0d 06 22  0f 53 54 52 20 52 30 2c  |R0,#1..".STR R0,|
00001080  62 61 6e 6b 0d 06 2c 1b  4f 50 54 20 a4 61 64 72  |bank..,.OPT .adr|
00001090  28 31 34 2c 62 61 6e 6b  61 64 64 72 2c 31 29 0d  |(14,bankaddr,1).|
000010a0  06 36 1a 4c 44 52 20 52  31 34 2c 5b 52 31 34 2c  |.6.LDR R14,[R14,|
000010b0  52 30 2c 41 53 4c 23 32  5d 0d 06 40 13 53 54 52  |R0,ASL#2]..@.STR|
000010c0  20 52 31 34 2c 73 63 72  61 64 64 72 0d 06 4a 10  | R14,scraddr..J.|
000010d0  41 44 44 20 52 31 2c 52  30 2c 23 31 0d 06 54 0f  |ADD R1,R0,#1..T.|
000010e0  4d 4f 56 20 52 30 2c 23  31 31 32 0d 06 5e 11 53  |MOV R0,#112..^.S|
000010f0  57 49 20 22 4f 53 5f 42  79 74 65 22 0d 06 68 0e  |WI "OS_Byte"..h.|
00001100  4d 4f 56 20 52 30 2c 23  31 39 0d 06 72 11 53 57  |MOV R0,#19..r.SW|
00001110  49 20 22 4f 53 5f 42 79  74 65 22 0d 06 7c 0c 53  |I "OS_Byte"..|.S|
00001120  57 49 20 26 31 30 43 0d  06 86 05 3a 0d 06 90 0d  |WI &10C....:....|
00001130  42 4c 20 72 6f 74 61 74  65 0d 06 9a 0b 42 4c 20  |BL rotate....BL |
00001140  73 6f 72 74 0d 06 a4 0b  42 4c 20 70 6c 6f 74 0d  |sort....BL plot.|
00001150  06 ae 05 3a 0d 06 b8 0f  4c 44 52 20 52 31 2c 62  |...:....LDR R1,b|
00001160  61 6e 6b 0d 06 c2 10 41  44 44 20 52 31 2c 52 31  |ank....ADD R1,R1|
00001170  2c 23 31 0d 06 cc 0f 4d  4f 56 20 52 30 2c 23 31  |,#1....MOV R0,#1|
00001180  31 33 0d 06 d6 11 53 57  49 20 22 4f 53 5f 42 79  |13....SWI "OS_By|
00001190  74 65 22 0d 06 e0 12 4c  44 52 20 52 31 33 2c 73  |te"....LDR R13,s|
000011a0  74 61 63 6b 70 0d 06 ea  12 4c 44 52 20 52 31 34  |tackp....LDR R14|
000011b0  2c 6c 69 6e 6b 2b 30 0d  06 f4 0e 4d 4f 56 20 50  |,link+0....MOV P|
000011c0  43 2c 52 31 34 0d 06 fe  05 3a 0d 07 08 22 f4 20  |C,R14....:...". |
000011d0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
000011e0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 0d 07 12 0c  |************....|
000011f0  2e 76 65 63 74 6f 72 73  0d 07 1c 1d 45 51 55 44  |.vectors....EQUD|
00001200  20 26 31 30 30 30 30 3a  45 51 55 44 20 30 3a 45  | &10000:EQUD 0:E|
00001210  51 55 44 20 30 0d 07 26  1d 45 51 55 44 20 30 3a  |QUD 0..&.EQUD 0:|
00001220  45 51 55 44 20 26 31 30  30 30 30 3a 45 51 55 44  |EQUD &10000:EQUD|
00001230  20 30 0d 07 30 1d 45 51  55 44 20 30 3a 45 51 55  | 0..0.EQUD 0:EQU|
00001240  44 20 30 3a 45 51 55 44  20 26 31 30 30 30 30 0d  |D 0:EQUD &10000.|
00001250  07 3a 18 45 51 55 44 20  30 3a 45 51 55 44 20 30  |.:.EQUD 0:EQUD 0|
00001260  3a 45 51 55 44 20 30 0d  07 44 05 3a 0d 07 4e 0b  |:EQUD 0..D.:..N.|
00001270  2e 72 6f 74 61 74 65 0d  07 58 12 53 54 52 20 52  |.rotate..X.STR R|
00001280  31 34 2c 6c 69 6e 6b 2b  34 0d 07 62 19 4f 50 54  |14,link+4..b.OPT|
00001290  20 a4 61 64 72 28 31 34  2c 73 68 61 70 65 25 2c  | .adr(14,shape%,|
000012a0  32 29 0d 07 6c 1a 4f 50  54 20 a4 61 64 72 28 31  |2)..l.OPT .adr(1|
000012b0  33 2c 73 63 72 65 65 6e  25 2c 32 29 0d 07 76 1a  |3,screen%,2)..v.|
000012c0  4f 50 54 20 a4 61 64 72  28 31 32 2c 76 65 63 74  |OPT .adr(12,vect|
000012d0  6f 72 73 2c 31 29 0d 07  80 1f 4f 50 54 20 a4 61  |ors,1)....OPT .a|
000012e0  64 72 28 31 31 2c 70 65  72 73 70 65 63 74 69 76  |dr(11,perspectiv|
000012f0  65 25 2c 32 29 0d 07 8a  0d 2e 62 61 6c 6c 6c 6f  |e%,2).....balllo|
00001300  6f 70 0d 07 94 19 4c 44  4d 49 41 20 52 31 34 21  |op....LDMIA R14!|
00001310  2c 7b 52 30 2d 52 32 2c  52 39 7d 0d 07 9e 15 43  |,{R0-R2,R9}....C|
00001320  4d 50 20 52 30 2c 23 26  38 30 30 30 30 30 30 30  |MP R0,#&80000000|
00001330  0d 07 a8 11 42 45 51 20  65 6e 64 72 6f 74 61 74  |....BEQ endrotat|
00001340  65 0d 07 b2 16 4c 44 4d  49 41 20 52 31 32 21 2c  |e....LDMIA R12!,|
00001350  7b 52 33 2d 52 35 7d 0d  07 bc 10 4d 55 4c 20 52  |{R3-R5}....MUL R|
00001360  36 2c 52 33 2c 52 30 0d  07 c6 10 4d 55 4c 20 52  |6,R3,R0....MUL R|
00001370  37 2c 52 34 2c 52 30 0d  07 d0 10 4d 55 4c 20 52  |7,R4,R0....MUL R|
00001380  38 2c 52 35 2c 52 30 0d  07 da 16 4c 44 4d 49 41  |8,R5,R0....LDMIA|
00001390  20 52 31 32 21 2c 7b 52  33 2d 52 35 7d 0d 07 e4  | R12!,{R3-R5}...|
000013a0  13 4d 4c 41 20 52 36 2c  52 33 2c 52 31 2c 52 36  |.MLA R6,R3,R1,R6|
000013b0  0d 07 ee 13 4d 4c 41 20  52 37 2c 52 34 2c 52 31  |....MLA R7,R4,R1|
000013c0  2c 52 37 0d 07 f8 13 4d  4c 41 20 52 38 2c 52 35  |,R7....MLA R8,R5|
000013d0  2c 52 31 2c 52 38 0d 08  02 16 4c 44 4d 49 41 20  |,R1,R8....LDMIA |
000013e0  52 31 32 21 2c 7b 52 33  2d 52 35 7d 0d 08 0c 13  |R12!,{R3-R5}....|
000013f0  4d 4c 41 20 52 36 2c 52  33 2c 52 32 2c 52 36 0d  |MLA R6,R3,R2,R6.|
00001400  08 16 13 4d 4c 41 20 52  37 2c 52 34 2c 52 32 2c  |...MLA R7,R4,R2,|
00001410  52 37 0d 08 20 13 4d 4c  41 20 52 38 2c 52 35 2c  |R7.. .MLA R8,R5,|
00001420  52 32 2c 52 38 0d 08 2a  16 4c 44 4d 49 41 20 52  |R2,R8..*.LDMIA R|
00001430  31 32 21 2c 7b 52 33 2d  52 35 7d 0d 08 34 17 41  |12!,{R3-R5}..4.A|
00001440  44 44 20 52 36 2c 52 33  2c 52 36 2c 41 53 52 23  |DD R6,R3,R6,ASR#|
00001450  31 36 0d 08 3e 17 41 44  44 20 52 37 2c 52 34 2c  |16..>.ADD R7,R4,|
00001460  52 37 2c 41 53 52 23 31  36 0d 08 48 17 41 44 44  |R7,ASR#16..H.ADD|
00001470  20 52 38 2c 52 35 2c 52  38 2c 41 53 52 23 31 36  | R8,R5,R8,ASR#16|
00001480  0d 08 52 16 53 55 42 20  52 31 32 2c 52 31 32 2c  |..R.SUB R12,R12,|
00001490  23 34 2a 33 2a 34 0d 08  5c 13 41 44 44 53 20 52  |#4*3*4..\.ADDS R|
000014a0  30 2c 52 38 2c 23 32 35  36 0d 08 66 0f 4d 4f 56  |0,R8,#256..f.MOV|
000014b0  4c 54 20 52 30 2c 23 30  0d 08 70 10 43 4d 50 20  |LT R0,#0..p.CMP |
000014c0  52 30 2c 23 34 30 39 36  0d 08 7a 12 4d 4f 56 47  |R0,#4096..z.MOVG|
000014d0  45 20 52 30 2c 23 34 30  39 36 0d 08 84 12 53 55  |E R0,#4096....SU|
000014e0  42 47 45 20 52 30 2c 52  30 2c 23 31 0d 08 8e 19  |BGE R0,R0,#1....|
000014f0  4c 44 52 20 52 30 2c 5b  52 31 31 2c 52 30 2c 4c  |LDR R0,[R11,R0,L|
00001500  53 4c 23 32 5d 0d 08 98  10 4d 55 4c 20 52 36 2c  |SL#2]....MUL R6,|
00001510  52 30 2c 52 36 0d 08 a2  10 4d 55 4c 20 52 37 2c  |R0,R6....MUL R7,|
00001520  52 30 2c 52 37 0d 08 ac  10 4d 55 4c 20 52 39 2c  |R0,R7....MUL R9,|
00001530  52 30 2c 52 39 0d 08 b6  14 4d 4f 56 20 52 36 2c  |R0,R9....MOV R6,|
00001540  52 36 2c 41 53 52 23 31  36 0d 08 c0 14 4d 4f 56  |R6,ASR#16....MOV|
00001550  20 52 37 2c 52 37 2c 41  53 52 23 31 36 0d 08 ca  | R7,R7,ASR#16...|
00001560  14 4d 4f 56 20 52 39 2c  52 39 2c 41 53 52 23 31  |.MOV R9,R9,ASR#1|
00001570  36 0d 08 d4 12 41 44 44  20 52 36 2c 52 36 2c 23  |6....ADD R6,R6,#|
00001580  31 36 30 0d 08 de 12 52  53 42 20 52 37 2c 52 37  |160....RSB R7,R7|
00001590  2c 23 31 32 38 0d 08 e8  16 53 54 4d 49 41 20 52  |,#128....STMIA R|
000015a0  31 33 21 2c 7b 52 36 2d  52 39 7d 0d 08 f2 0e 42  |13!,{R6-R9}....B|
000015b0  20 62 61 6c 6c 6c 6f 6f  70 0d 08 fc 0e 2e 65 6e  | ballloop.....en|
000015c0  64 72 6f 74 61 74 65 0d  09 06 10 53 54 52 20 52  |drotate....STR R|
000015d0  30 2c 5b 52 31 33 5d 0d  09 10 12 4c 44 52 20 52  |0,[R13]....LDR R|
000015e0  31 34 2c 6c 69 6e 6b 2b  34 0d 09 1a 0e 4d 4f 56  |14,link+4....MOV|
000015f0  20 50 43 2c 52 31 34 0d  09 24 05 3a 0d 09 2e 22  | PC,R14..$.:..."|
00001600  f4 20 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |. **************|
00001610  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 0d 09  |**************..|
00001620  38 05 3a 0d 09 42 09 2e  70 6c 6f 74 0d 09 4c 12  |8.:..B..plot..L.|
00001630  53 54 52 20 52 31 34 2c  6c 69 6e 6b 2b 34 0d 09  |STR R14,link+4..|
00001640  56 13 4c 44 52 20 52 31  34 2c 73 63 72 61 64 64  |V.LDR R14,scradd|
00001650  72 0d 09 60 1a 4f 50 54  20 a4 61 64 72 28 31 33  |r..`.OPT .adr(13|
00001660  2c 73 63 72 65 65 6e 25  2c 32 29 0d 09 6a 19 4f  |,screen%,2)..j.O|
00001670  50 54 20 a4 61 64 72 28  31 32 2c 69 6e 64 65 78  |PT .adr(12,index|
00001680  25 2c 32 29 0d 09 74 0d  2e 62 61 6c 6c 6c 6f 6f  |%,2)..t..ballloo|
00001690  70 0d 09 7e 0e 2e 64 6f  6e 74 70 72 69 6e 74 0d  |p..~..dontprint.|
000016a0  09 88 0f 2e 70 6c 6f 74  72 65 74 75 72 6e 0d 09  |....plotreturn..|
000016b0  92 16 4c 44 4d 49 41 20  52 31 33 21 2c 7b 52 30  |..LDMIA R13!,{R0|
000016c0  2d 52 33 7d 0d 09 9c 15  43 4d 50 20 52 30 2c 23  |-R3}....CMP R0,#|
000016d0  26 38 30 30 30 30 30 30  30 0d 09 a6 0f 42 45 51  |&80000000....BEQ|
000016e0  20 65 6e 64 70 6c 6f 74  0d 09 b0 0e 43 4d 50 20  | endplot....CMP |
000016f0  52 30 2c 23 33 32 0d 09  ba 10 43 4d 4e 47 54 20  |R0,#32....CMNGT |
00001700  52 31 2c 23 33 31 0d 09  c4 11 42 4c 45 20 64 6f  |R1,#31....BLE do|
00001710  6e 74 70 72 69 6e 74 0d  09 ce 0f 43 4d 50 20 52  |ntprint....CMP R|
00001720  30 2c 23 32 38 38 0d 09  d8 11 43 4d 50 4c 45 20  |0,#288....CMPLE |
00001730  52 31 2c 23 32 38 38 0d  09 e2 11 42 47 54 20 64  |R1,#288....BGT d|
00001740  6f 6e 74 70 72 69 6e 74  0d 09 ec 0e 43 4d 50 20  |ontprint....CMP |
00001750  52 33 2c 23 36 34 0d 09  f6 10 4d 4f 56 47 45 20  |R3,#64....MOVGE |
00001760  52 33 2c 23 36 33 0d 0a  00 17 41 44 44 20 52 33  |R3,#63....ADD R3|
00001770  2c 52 31 32 2c 52 33 2c  41 53 4c 23 33 0d 0a 0a  |,R12,R3,ASL#3...|
00001780  10 4c 44 52 20 52 31 31  2c 5b 52 33 5d 0d 0a 14  |.LDR R11,[R3]...|
00001790  14 4c 44 52 42 20 52 31  30 2c 5b 52 33 2c 23 34  |.LDRB R10,[R3,#4|
000017a0  5d 0d 0a 1e 13 4c 44 52  42 20 52 39 2c 5b 52 33  |]....LDRB R9,[R3|
000017b0  2c 23 35 5d 0d 0a 28 11  53 55 42 20 52 30 2c 52  |,#5]..(.SUB R0,R|
000017c0  30 2c 23 33 32 0d 0a 32  12 53 55 42 53 20 52 31  |0,#32..2.SUBS R1|
000017d0  2c 52 31 2c 52 31 30 0d  0a 3c 12 41 44 44 4c 54  |,R1,R10..<.ADDLT|
000017e0  20 52 39 2c 52 39 2c 52  31 0d 0a 46 1a 53 55 42  | R9,R9,R1..F.SUB|
000017f0  4c 54 20 52 31 31 2c 52  31 31 2c 52 31 2c 41 53  |LT R11,R11,R1,AS|
00001800  4c 23 36 0d 0a 50 0f 4d  4f 56 4c 54 20 52 31 2c  |L#6..P.MOVLT R1,|
00001810  23 30 0d 0a 5a 10 41 44  44 20 52 38 2c 52 31 2c  |#0..Z.ADD R8,R1,|
00001820  52 39 0d 0a 64 13 53 55  42 53 20 52 38 2c 52 38  |R9..d.SUBS R8,R8|
00001830  2c 23 32 35 36 0d 0a 6e  12 53 55 42 47 54 20 52  |,#256..n.SUBGT R|
00001840  39 2c 52 39 2c 52 38 0d  0a 78 0d 43 4d 50 20 52  |9,R9,R8..x.CMP R|
00001850  39 2c 23 30 0d 0a 82 11  42 4c 45 20 64 6f 6e 74  |9,#0....BLE dont|
00001860  70 72 69 6e 74 0d 0a 8c  1a 4f 50 54 20 a4 61 64  |print....OPT .ad|
00001870  72 28 38 2c 73 70 72 69  74 65 73 25 2c 32 29 0d  |r(8,sprites%,2).|
00001880  0a 96 12 41 44 44 20 52  31 31 2c 52 38 2c 52 31  |...ADD R11,R8,R1|
00001890  31 0d 0a a0 0e 80 20 52  38 2c 52 30 2c 23 37 0d  |1..... R8,R0,#7.|
000018a0  0a aa 13 4d 4f 56 20 52  30 2c 52 30 2c 41 53 52  |...MOV R0,R0,ASR|
000018b0  23 33 0d 0a b4 18 41 44  44 20 52 31 30 2c 52 31  |#3....ADD R10,R1|
000018c0  34 2c 52 30 2c 41 53 4c  23 32 0d 0a be 18 41 44  |4,R0,ASL#2....AD|
000018d0  44 20 52 31 30 2c 52 31  30 2c 52 31 2c 41 53 4c  |D R10,R10,R1,ASL|
000018e0  23 35 0d 0a c8 18 41 44  44 20 52 31 30 2c 52 31  |#5....ADD R10,R1|
000018f0  30 2c 52 31 2c 41 53 4c  23 37 0d 0a d2 1e 4f 50  |0,R1,ASL#7....OP|
00001900  54 20 a4 61 64 72 28 37  2c 70 6c 6f 74 72 6f 75  |T .adr(7,plotrou|
00001910  74 69 6e 65 73 2c 31 29  0d 0a dc 18 4c 44 52 20  |tines,1)....LDR |
00001920  50 43 2c 5b 52 37 2c 52  38 2c 41 53 4c 23 32 5d  |PC,[R7,R8,ASL#2]|
00001930  0d 0a e6 0e 2e 64 6f 6e  74 70 72 69 6e 74 0d 0a  |.....dontprint..|
00001940  f0 0c 2e 65 6e 64 70 6c  6f 74 0d 0a fa 12 4c 44  |...endplot....LD|
00001950  52 20 52 31 34 2c 6c 69  6e 6b 2b 34 0d 0b 04 0e  |R R14,link+4....|
00001960  4d 4f 56 20 50 43 2c 52  31 34 0d 0b 0e 05 3a 0d  |MOV PC,R14....:.|
00001970  0b 18 22 f4 20 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |..". ***********|
00001980  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
00001990  2a 0d 0b 22 05 3a 0d 0b  2c 11 2e 70 6c 6f 74 72  |*..".:..,..plotr|
000019a0  6f 75 74 69 6e 65 73 0d  0b 36 15 5d 3a e3 55 25  |outines..6.]:.U%|
000019b0  3d 30 b8 37 3a 5b 4f 50  54 20 54 25 0d 0b 40 11  |=0.7:[OPT T%..@.|
000019c0  45 51 55 44 20 70 6c 6f  74 28 55 25 29 0d 0b 4a  |EQUD plot(U%)..J|
000019d0  0f 5d 3a ed 3a 5b 4f 50  54 20 54 25 0d 0b 54 05  |.]:.:[OPT T%..T.|
000019e0  3a 0d 0b 5e 0c 2e 70 6c  6f 74 28 30 29 0d 0b 68  |:..^..plot(0)..h|
000019f0  0a 2e 79 6c 6f 6f 70 0d  0b 72 15 5d 3a e3 57 25  |..yloop..r.]:.W%|
00001a00  3d 30 b8 31 3a 5b 4f 50  54 20 54 25 0d 0b 7c 15  |=0.1:[OPT T%..|.|
00001a10  4c 44 4d 49 41 20 52 31  30 2c 7b 52 30 2d 52 33  |LDMIA R10,{R0-R3|
00001a20  7d 0d 0b 86 16 4c 44 4d  49 41 20 52 31 31 21 2c  |}....LDMIA R11!,|
00001a30  7b 52 34 2d 52 37 7d 0d  0b 90 15 5d 3a e3 56 25  |{R4-R7}....]:.V%|
00001a40  3d 30 b8 33 3a 5b 4f 50  54 20 54 25 0d 0b 9a 14  |=0.3:[OPT T%....|
00001a50  42 49 43 20 56 25 2c 56  25 2c 28 56 25 2b 34 29  |BIC V%,V%,(V%+4)|
00001a60  0d 0b a4 0f 5d 3a ed 3a  5b 4f 50 54 20 54 25 0d  |....]:.:[OPT T%.|
00001a70  0b ae 16 4c 44 4d 49 41  20 52 31 31 21 2c 7b 52  |...LDMIA R11!,{R|
00001a80  34 2d 52 37 7d 0d 0b b8  15 5d 3a e3 56 25 3d 30  |4-R7}....]:.V%=0|
00001a90  b8 33 3a 5b 4f 50 54 20  54 25 0d 0b c2 13 84 52  |.3:[OPT T%.....R|
00001aa0  20 56 25 2c 56 25 2c 28  56 25 2b 34 29 0d 0b cc  | V%,V%,(V%+4)...|
00001ab0  0f 5d 3a ed 3a 5b 4f 50  54 20 54 25 0d 0b d6 16  |.]:.:[OPT T%....|
00001ac0  53 54 4d 49 41 20 52 31  30 21 2c 7b 52 30 2d 52  |STMIA R10!,{R0-R|
00001ad0  33 7d 0d 0b e0 0f 5d 3a  ed 3a 5b 4f 50 54 20 54  |3}....]:.:[OPT T|
00001ae0  25 0d 0b ea 17 41 44 44  20 52 31 30 2c 52 31 30  |%....ADD R10,R10|
00001af0  2c 23 31 36 30 2d 33 32  0d 0b f4 11 53 55 42 53  |,#160-32....SUBS|
00001b00  20 52 39 2c 52 39 2c 23  31 0d 0b fe 0d 42 47 54  | R9,R9,#1....BGT|
00001b10  20 79 6c 6f 6f 70 0d 0c  08 10 42 20 70 6c 6f 74  | yloop....B plot|
00001b20  72 65 74 75 72 6e 0d 0c  12 05 3a 0d 0c 1c 1e 5d  |return....:....]|
00001b30  3a e3 55 25 3d 31 b8 37  3a 5a 25 3d 55 25 3c 3c  |:.U%=1.7:Z%=U%<<|
00001b40  32 3a 5b 4f 50 54 20 54  25 0d 0c 26 0d 2e 70 6c  |2:[OPT T%..&..pl|
00001b50  6f 74 28 55 25 29 0d 0c  30 0a 2e 79 6c 6f 6f 70  |ot(U%)..0..yloop|
00001b60  0d 0c 3a 15 4c 44 4d 49  41 20 52 31 30 2c 7b 52  |..:.LDMIA R10,{R|
00001b70  30 2d 52 34 7d 0d 0c 44  16 4c 44 4d 49 41 20 52  |0-R4}..D.LDMIA R|
00001b80  31 31 21 2c 7b 52 35 2d  52 38 7d 0d 0c 4e 15 5d  |11!,{R5-R8}..N.]|
00001b90  3a e3 56 25 3d 30 b8 33  3a 5b 4f 50 54 20 54 25  |:.V%=0.3:[OPT T%|
00001ba0  0d 0c 58 1b 42 49 43 20  56 25 2c 56 25 2c 28 56  |..X.BIC V%,V%,(V|
00001bb0  25 2b 35 29 2c 4c 53 4c  23 5a 25 0d 0c 62 26 42  |%+5),LSL#Z%..b&B|
00001bc0  49 43 20 28 56 25 2b 31  29 2c 28 56 25 2b 31 29  |IC (V%+1),(V%+1)|
00001bd0  2c 28 56 25 2b 35 29 2c  4c 53 52 23 33 32 2d 5a  |,(V%+5),LSR#32-Z|
00001be0  25 0d 0c 6c 0f 5d 3a ed  3a 5b 4f 50 54 20 54 25  |%..l.]:.:[OPT T%|
00001bf0  0d 0c 76 16 4c 44 4d 49  41 20 52 31 31 21 2c 7b  |..v.LDMIA R11!,{|
00001c00  52 35 2d 52 38 7d 0d 0c  80 15 5d 3a e3 56 25 3d  |R5-R8}....]:.V%=|
00001c10  30 b8 33 3a 5b 4f 50 54  20 54 25 0d 0c 8a 1a 84  |0.3:[OPT T%.....|
00001c20  52 20 56 25 2c 56 25 2c  28 56 25 2b 35 29 2c 4c  |R V%,V%,(V%+5),L|
00001c30  53 4c 23 5a 25 0d 0c 94  25 84 52 20 28 56 25 2b  |SL#Z%...%.R (V%+|
00001c40  31 29 2c 28 56 25 2b 31  29 2c 28 56 25 2b 35 29  |1),(V%+1),(V%+5)|
00001c50  2c 4c 53 52 23 33 32 2d  5a 25 0d 0c 9e 0f 5d 3a  |,LSR#32-Z%....]:|
00001c60  ed 3a 5b 4f 50 54 20 54  25 0d 0c a8 16 53 54 4d  |.:[OPT T%....STM|
00001c70  49 41 20 52 31 30 21 2c  7b 52 30 2d 52 33 7d 0d  |IA R10!,{R0-R3}.|
00001c80  0c b2 11 41 44 44 20 52  38 2c 52 31 30 2c 23 34  |...ADD R8,R10,#4|
00001c90  0d 0c bc 14 4c 44 4d 49  41 20 52 38 2c 7b 52 35  |....LDMIA R8,{R5|
00001ca0  2d 52 38 7d 0d 0c c6 16  4c 44 4d 49 41 20 52 31  |-R8}....LDMIA R1|
00001cb0  31 21 2c 7b 52 30 2d 52  33 7d 0d 0c d0 15 5d 3a  |1!,{R0-R3}....]:|
00001cc0  e3 56 25 3d 30 b8 33 3a  5b 4f 50 54 20 54 25 0d  |.V%=0.3:[OPT T%.|
00001cd0  0c da 1f 42 49 43 20 28  56 25 2b 34 29 2c 28 56  |...BIC (V%+4),(V|
00001ce0  25 2b 34 29 2c 56 25 2c  4c 53 4c 23 5a 25 0d 0c  |%+4),V%,LSL#Z%..|
00001cf0  e4 22 42 49 43 20 28 56  25 2b 35 29 2c 28 56 25  |."BIC (V%+5),(V%|
00001d00  2b 35 29 2c 56 25 2c 4c  53 52 23 33 32 2d 5a 25  |+5),V%,LSR#32-Z%|
00001d10  0d 0c ee 0f 5d 3a ed 3a  5b 4f 50 54 20 54 25 0d  |....]:.:[OPT T%.|
00001d20  0c f8 16 4c 44 4d 49 41  20 52 31 31 21 2c 7b 52  |...LDMIA R11!,{R|
00001d30  30 2d 52 33 7d 0d 0d 02  15 5d 3a e3 56 25 3d 30  |0-R3}....]:.V%=0|
00001d40  b8 33 3a 5b 4f 50 54 20  54 25 0d 0d 0c 1e 84 52  |.3:[OPT T%.....R|
00001d50  20 28 56 25 2b 34 29 2c  28 56 25 2b 34 29 2c 56  | (V%+4),(V%+4),V|
00001d60  25 2c 4c 53 4c 23 5a 25  0d 0d 16 21 84 52 20 28  |%,LSL#Z%...!.R (|
00001d70  56 25 2b 35 29 2c 28 56  25 2b 35 29 2c 56 25 2c  |V%+5),(V%+5),V%,|
00001d80  4c 53 52 23 33 32 2d 5a  25 0d 0d 20 0f 5d 3a ed  |LSR#32-Z%.. .]:.|
00001d90  3a 5b 4f 50 54 20 54 25  0d 0d 2a 16 53 54 4d 49  |:[OPT T%..*.STMI|
00001da0  41 20 52 31 30 21 2c 7b  52 34 2d 52 38 7d 0d 0d  |A R10!,{R4-R8}..|
00001db0  34 17 41 44 44 20 52 31  30 2c 52 31 30 2c 23 31  |4.ADD R10,R10,#1|
00001dc0  36 30 2d 33 36 0d 0d 3e  11 53 55 42 53 20 52 39  |60-36..>.SUBS R9|
00001dd0  2c 52 39 2c 23 31 0d 0d  48 0d 42 47 54 20 79 6c  |,R9,#1..H.BGT yl|
00001de0  6f 6f 70 0d 0d 52 10 42  20 70 6c 6f 74 72 65 74  |oop..R.B plotret|
00001df0  75 72 6e 0d 0d 5c 0f 5d  3a ed 3a 5b 4f 50 54 20  |urn..\.]:.:[OPT |
00001e00  54 25 0d 0d 66 05 3a 0d  0d 70 25 f4 20 2a 2a 2a  |T%..f.:..p%. ***|
00001e10  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
00001e20  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 0d 0d 7a 05  |************..z.|
00001e30  3a 0d 0d 84 09 2e 73 6f  72 74 0d 0d 8e 12 53 54  |:.....sort....ST|
00001e40  52 20 52 31 34 2c 6c 69  6e 6b 2b 34 0d 0d 98 1a  |R R14,link+4....|
00001e50  4f 50 54 20 a4 61 64 72  28 31 34 2c 73 63 72 65  |OPT .adr(14,scre|
00001e60  65 6e 25 2c 32 29 0d 0d  a2 0c 2e 6f 75 74 6c 6f  |en%,2).....outlo|
00001e70  6f 70 0d 0d ac 0f 4d 4f  56 20 52 31 33 2c 52 31  |op....MOV R13,R1|
00001e80  34 0d 0d b6 13 41 44 44  20 52 31 32 2c 52 31 33  |4....ADD R12,R13|
00001e90  2c 23 31 36 0d 0d c0 13  4c 44 52 20 52 31 2c 5b  |,#16....LDR R1,[|
00001ea0  52 31 33 2c 23 38 5d 0d  0d ca 0b 2e 69 6e 6c 6f  |R13,#8].....inlo|
00001eb0  6f 70 0d 0d d4 13 4c 44  52 20 52 30 2c 5b 52 31  |op....LDR R0,[R1|
00001ec0  32 2c 23 38 5d 0d 0d de  0d 43 4d 50 20 52 30 2c  |2,#8]....CMP R0,|
00001ed0  52 31 0d 0d e8 0f 4d 4f  56 47 54 20 52 31 2c 52  |R1....MOVGT R1,R|
00001ee0  30 0d 0d f2 11 4d 4f 56  47 54 20 52 31 33 2c 52  |0....MOVGT R13,R|
00001ef0  31 32 0d 0d fc 13 41 44  44 20 52 31 32 2c 52 31  |12....ADD R12,R1|
00001f00  32 2c 23 31 36 0d 0e 06  10 4c 44 52 20 52 30 2c  |2,#16....LDR R0,|
00001f10  5b 52 31 32 5d 0d 0e 10  15 43 4d 50 20 52 30 2c  |[R12]....CMP R0,|
00001f20  23 26 38 30 30 30 30 30  30 30 0d 0e 1a 0e 42 4e  |#&80000000....BN|
00001f30  45 20 69 6e 6c 6f 6f 70  0d 0e 24 15 4c 44 4d 49  |E inloop..$.LDMI|
00001f40  41 20 52 31 33 2c 7b 52  30 2d 52 33 7d 0d 0e 2e  |A R13,{R0-R3}...|
00001f50  15 4c 44 4d 49 41 20 52  31 34 2c 7b 52 34 2d 52  |.LDMIA R14,{R4-R|
00001f60  37 7d 0d 0e 38 16 53 54  4d 49 41 20 52 31 34 21  |7}..8.STMIA R14!|
00001f70  2c 7b 52 30 2d 52 33 7d  0d 0e 42 15 53 54 4d 49  |,{R0-R3}..B.STMI|
00001f80  41 20 52 31 33 2c 7b 52  34 2d 52 37 7d 0d 0e 4c  |A R13,{R4-R7}..L|
00001f90  14 4c 44 52 20 52 30 2c  5b 52 31 34 2c 23 31 36  |.LDR R0,[R14,#16|
00001fa0  5d 0d 0e 56 15 43 4d 50  20 52 30 2c 23 26 38 30  |]..V.CMP R0,#&80|
00001fb0  30 30 30 30 30 30 0d 0e  60 0f 42 4e 45 20 6f 75  |000000..`.BNE ou|
00001fc0  74 6c 6f 6f 70 0d 0e 6a  12 4c 44 52 20 52 31 34  |tloop..j.LDR R14|
00001fd0  2c 6c 69 6e 6b 2b 34 0d  0e 74 0e 4d 4f 56 20 50  |,link+4..t.MOV P|
00001fe0  43 2c 52 31 34 0d 0e 7e  07 5d 3a ed 0d 0e 7f 0c  |C,R14..~.]:.....|
00001ff0  2a 46 58 31 31 32 2c 32  0d 0e 80 2e c8 99 22 4f  |*FX112,2......"O|
00002000  53 5f 52 65 61 64 56 64  75 56 61 72 69 61 62 6c  |S_ReadVduVariabl|
00002010  65 73 22 2c 76 64 75 76  61 72 73 2c 62 61 6e 6b  |es",vduvars,bank|
00002020  61 64 64 72 2b 34 0d 0e  81 0c 2a 46 58 31 31 32  |addr+4....*FX112|
00002030  2c 31 0d 0e 82 2c c8 99  22 4f 53 5f 52 65 61 64  |,1...,.."OS_Read|
00002040  56 64 75 56 61 72 69 61  62 6c 65 73 22 2c 76 64  |VduVariables",vd|
00002050  75 76 61 72 73 2c 62 61  6e 6b 61 64 64 72 0d 0e  |uvars,bankaddr..|
00002060  88 05 e1 0d 0e 92 05 3a  0d 0e 9c 0d dd f2 74 65  |.......:......te|
00002070  73 74 73 63 72 0d 0e a6  0f 53 48 25 3d 73 63 72  |stscr....SH%=scr|
00002080  65 65 6e 25 0d 0e b0 26  f5 3a 5a 25 3d 53 48 25  |een%...&.:Z%=SH%|
00002090  21 38 2d 76 65 63 74 6f  72 73 21 34 34 2b 32 35  |!8-vectors!44+25|
000020a0  36 3a e6 30 2c 5a 25 3e  3e 35 0d 0e ba 25 c8 8f  |6:.0,Z%>>5...%..|
000020b0  53 48 25 21 30 3c 3c 32  2c 32 35 35 2d 53 48 25  |SH%!0<<2,255-SH%|
000020c0  21 34 3c 3c 32 2c 53 48  25 21 31 32 3c 3c 31 0d  |!4<<2,SH%!12<<1.|
000020d0  0e c4 1c 53 48 25 2b 3d  31 36 3a fd 53 48 25 21  |...SH%+=16:.SH%!|
000020e0  30 3d 26 38 30 30 30 30  30 30 30 0d 0e ce 05 e1  |0=&80000000.....|
000020f0  0d 0e d8 05 3a 0d 0e e2  0e dd f2 74 65 73 74 63  |....:......testc|
00002100  6f 6e 76 0d 0e ec 10 53  50 25 3d 73 70 72 69 74  |onv....SP%=sprit|
00002110  65 73 25 0d 0e f6 19 e3  54 25 3d 30 b8 35 3a 53  |es%.....T%=0.5:S|
00002120  43 25 3d 21 62 61 6e 6b  61 64 64 72 0d 0f 00 28  |C%=!bankaddr...(|
00002130  e3 59 25 3d 30 b8 32 35  35 3a e3 58 25 3d 30 b8  |.Y%=0.255:.X%=0.|
00002140  36 33 88 34 3a 53 43 25  21 58 25 3d 53 50 25 21  |63.4:SC%!X%=SP%!|
00002150  58 25 3a ed 0d 0f 0a 1c  53 43 25 2b 3d 31 36 30  |X%:.....SC%+=160|
00002160  3a 53 50 25 2b 3d 36 34  3a ed 3a 41 3d a5 3a ed  |:SP%+=64:.:A=.:.|
00002170  0d 0f 14 05 e1 0d ff                              |.......|
00002177