1GOTO20 2*L.ELITEB 3GOTO20 4*L.ELITEA 6*L.ELITEC 7GOTO20 8*L.ELITED 9GOTO20 10*L.ELITEE 11GOTO20 12*L.ELITEF 13GOTO20 14*L.ELITEG 20REM ELITE 100H%=L%+P%-C%:O%=W% 1000[OPTZ 7000.SHPPT JSREE51:JSRPROJ:ORAK3+1:BNEnono:LDAK4:CMP#Y*2-2:BCSnono:LDY#2:jsrShpt:ldy#6:ldaK4:ADC#1:jsrShpt:LDA#8:ORAXX1+31:STAXX1+31:LDA#8:JMPLL81+2:PLA:PLA:.nono lda#&F7:andXX1+31:staXX1+31:RTS 7010.Shpt STA(XX19),Y:iny:iny:STA(XX19),Y:LDAK3:DEY:STA(XX19),Y:ADC#3:BCSnono-2:dey:dey:STA(XX19),Y:rts 8040.LL5 \2BSQRT Q=SQR(RQ) 8045LDYR:LDAQ:STAS:LDX#0:STXQ:LDA#8:STAT:.LL6 CPXQ:BCCLL7:BNELL8:CPY#&40:BCCLL7:.LL8 TYA:SBC#&40:TAY:TXA:SBCQ:TAX:.LL7 ROLQ:ASLS:TYA:ROLA:TAY:TXA:ROLA:TAX:ASLS:TYA:ROLA:TAY:TXA:ROLA:TAX:DECT:BNELL6:RTS 8065.LL28 \BFRDIV R=A*256/Q 8070CMPQ:BCSLL2:LDX#254:STXR:.LL31 ASLA:BCSLL29:CMPQ:BCCP%+4:SBCQ:ROLR:BCSLL31:RTS:.LL29 SBCQ:SEC:ROLR:BCSLL31:RTS:.LL2 LDA#FF:STAR:RTS 8085.LL38 \BADD(S)A=R+Q(SA) 8090EORS:BMILL39:LDAQ:CLC:ADCR:RTS:.LL39 LDAR:SEC:SBCQ 8095BCCP%+4:CLC:RTS:PHA:LDAS:EOR#128:STAS:PLA:EOR#255:ADC#1:RTS 8100.LL51 \XX12=XX15.XX16 8105LDX#0:LDY#0:.ll51 LDAXX15:STAQ:LDAXX16,X:JSRFMLTU:STAT:LDAXX15+1:EORXX16+1,X:STAS:LDAXX15+2 8115STAQ:LDAXX16+2,X:JSRFMLTU:STAQ:LDAT:STAR:LDAXX15+3 8120EORXX16+3,X:JSRLL38:STAT:LDAXX15+4:STAQ:LDAXX16+4,X:JSRFMLTU:STAQ:LDAT:STAR:LDAXX15+5:EORXX16+5,X 8130JSRLL38:STAXX12,Y:LDAS:STAXX12+1,Y:INY:INY:TXA:CLC:ADC#6:TAX:CMP#17:BCCll51:RTS 8132.LL25 JMPPLANET 8135.LL9 \ ENTRY 8137LDATYPE:BMILL25 8140LDA#31:STAXX4:LDA#32:BITXX1+31:BNEEE28 8144BPLEE28:ORAXX1+31:AND#&3F:STAXX1+31:LDA#0:LDY#28:STA(INF),Y:LDY#30:STA(INF),Y:JSREE51:LDY#1:LDA#18:STA(XX19),Y:LDY#7:LDA(XX0),Y:LDY#2:STA(XX19),Y 8146\LDAXX1+32\AND#&7F\STAXX1+32:.EE55 INY:JSRDORND:STA(XX19),Y:CPY#6:BNEEE55:.EE28 8150LDAXX1+8:.EE49 BPLLL10:.LL14 LDAXX1+31:AND#32:BEQEE51:LDAXX1+31:AND#&F7:STAXX1+31:JMPDOEXP:.EE51 8155LDA#8:BITXX1+31:BEQLL10-1:EORXX1+31:STAXX1+31:JMPLL155:\LL24 8165RTS:.LL10 8175LDAXX1+7:CMP#&C0:BCSLL14:LDAXX1:CMPXX1+6:LDAXX1+1:SBCXX1+7:BCSLL14:LDAXX1+3:CMPXX1+6:LDAXX1+4:SBCXX1+7:BCSLL14 8205LDY#6:LDA(XX0),Y:TAX:LDA#255:STAXX3,X:STAXX3+1,X 8215LDAXX1+6:STAT:LDAXX1+7:LSRA:RORT:LSRA:RORT:LSRA:RORT:LSRA:BNELL13:LDAT:RORA:LSRA:LSRA:LSRA:STAXX4 8225BPLLL17:.LL13 LDY#13:LDA(XX0),Y:CMPXX1+7:BCSLL17:LDA#32:ANDXX1+31:BNELL17:JMPSHPPT:.LL17 8275LDX#5:.LL15 LDAXX1+21,X:STAXX16,X:LDAXX1+15,X:STAXX16+6,X:LDAXX1+9,X:STAXX16+12,X:DEX:BPLLL15 8290LDA#197 \NORM:STAQ:LDY#16:.LL21 LDAXX16,Y:ASLA:LDAXX16+1,Y 8295ROLA:JSRLL28:LDXR:STXXX16,Y:DEY:DEY:BPLLL21 8300LDX#8:.ll91 LDAXX1,X:STAXX18,X:DEX:BPLll91 8315LDA#255:STAXX2+15 8320LDY#12:LDAXX1+31:AND#32:BEQEE29:LDA(XX0),Y:LSRA:LSRA:TAX:LDA#FF:.EE30 STAXX2,X:DEX:BPLEE30:INX:STXXX4:.LL41 JMPLL42:.EE29 LDA(XX0),Y:BEQLL41:STAXX20 8330\DtProd^XX2 8335LDY#18:LDA(XX0),Y:TAX:LDAXX18+7:.LL90 TAY:BEQLL91:INX:LSRXX18+4:RORXX18+3:LSRXX18+1:RORXX18:LSRA:RORXX18+6:TAY:BNELL90+3:.LL91 STXXX17:LDAXX18+8 8350STAXX15+5:LDAXX18:STAXX15:LDAXX18+2:STAXX15+1:LDAXX18+3:STAXX15+2:LDAXX18+5:STAXX15+3:LDAXX18+6:STAXX15+4:JSRLL51:LDAXX12:STAXX18:LDAXX12+1:STAXX18+2:LDAXX12+2 8365STAXX18+3:LDAXX12+3:STAXX18+5:LDAXX12+4:STAXX18+6:LDAXX12+5:STAXX18+8 8375LDY#4:LDA(XX0),Y:CLC:ADCXX0:STAV:LDY#17:LDA(XX0),Y:ADCXX0+1:STAV+1:LDY#0 8385.LL86 LDA(V),Y:STAXX12+1:AND#31:CMPXX4:BCSLL87 8390TYA:LSRA:LSRA:TAX:LDA#255:STAXX2,X:TYA:ADC#4 8395TAY:JMPLL88:.LL87 LDAXX12+1:ASLA:STAXX12+3:ASLA:STAXX12+5 8400INY:LDA(V),Y:STAXX12:INY:LDA(V),Y:STAXX12+2:INY:LDA(V),Y 8405STAXX12+4:LDXXX17:CPX#4:BCCLL92:.LL143 8410\Face offset<255 9090TXA:CLC:ADCXX15+2:STAXX15+2:TYA:ADCXX15+3:STAXX15+3 9095LDX#FF:STXXX15:INX:STXXX15+1 9100.LL134 LDAXX15+3:BPLLL135:STAS:LDAXX15+2:STAR \ Y1<0 9105JSRLL123:TXA:CLC:ADCXX15:STAXX15:TYA:ADCXX15+1:STAXX15+1 9110LDA#0:STAXX15+2:STAXX15+3 9115.LL135 \BNELL139:LDAXX15+2:SEC:SBC#Y*2:STAR \ Y1>191 9120LDAXX15+3:SBC#0:STAS:BCCLL136:.LL139 JSRLL123:TXA:CLC:ADCXX15 9130STAXX15:TYA:ADCXX15+1:STAXX15+1:LDA#Y*2-1:STAXX15+2:LDA#0:STAXX15+3:.LL136 RTS 9140\ YX=SR*M/256 9142.LL120 LDAXX15:STAR 9145\.LL120:JSRLL129:PHA:LDXT:BNELL121:.LL122 9160LDA#0:TAX:TAY:LSRS:RORR:ASLQ:BCCLL126:.LL125 TXA:CLC 9165ADCR:TAX:TYA:ADCS:TAY:.LL126 LSRS:RORR:ASLQ:BCSLL125 9170BNELL126:PLA:BPLLL133:RTS 9180\ YX=SR*256/M (M=grad.) 9185.LL123 JSRLL129:PHA:LDXT:BNELL122:.LL121 9200LDA#255:TAY:ASLA:TAX:.LL130 ASLR:ROLS:LDAS:BCSLL131 9205CMPQ:BCCLL132:.LL131 SBCQ:STAS:LDAR:SBC#0:STAR:SEC 9210.LL132 TXA:ROLA:TAX:TYA:ROLA:TAY:BCSLL130:PLA:BMILL128 9215.LL133 TXA:EOR#FF:\CLC:ADC#1:TAX:TYA:EOR#FF:ADC#0:TAY:.LL128 RTS 9216.LL129 LDXXX12+2:STXQ:LDAS:BPLLL127:LDA#0:SEC:SBCR:STAR:LDAS:PHA:EOR#255:ADC#0:STAS:PLA:.LL127 EORXX12+3:RTS 9300.LL145 \CLIP 9305LDA#0:STASWAP 9310LDAXX15+5:.LL147 LDX#Y*2-1:ORAXX12+1:BNELL107:CPXXX12 9315BCCLL107:LDX#0:.LL107 STXXX13:LDAXX15+1:ORAXX15+3:BNELL83 9320LDA#Y*2-1:CMPXX15+2:BCCLL83 9325LDAXX13:BNELL108:.LL146 LDAXX15+2 9330STAXX15+1:LDAXX15+4:STAXX15+2:LDAXX12:STAXX15+3:CLC:RTS 9335.LL109 SEC:RTS:.LL108 LSRXX13:.LL83 9340LDAXX13:BPLLL115 9345LDAXX15+1:ANDXX15+5:BMILL109:LDAXX15+3:ANDXX12+1:BMILL109 9350LDXXX15+1:DEX:TXA:LDXXX15+5:DEX:STXXX12+2:ORAXX12+2 9355BPLLL109:LDAXX15+2:CMP#Y*2:LDAXX15+3:SBC#0:STAXX12+2 9360LDAXX12:CMP#Y*2:LDAXX12+1:SBC#0:ORAXX12+2:BPLLL109 9365.LL115 TYA:PHA:LDAXX15+4:SEC:SBCXX15:STAXX12+2:LDAXX15+5 9370SBCXX15+1:STAXX12+3:LDAXX12:SEC:SBCXX15+2:STAXX12+4 9375LDAXX12+1:SBCXX15+3:STAXX12+5:EORXX12+3:STAS 9380LDAXX12+5:BPLLL110:LDA#0:SEC:SBCXX12+4:STAXX12+4:LDA#0:SBCXX12+5:STAXX12+5 9385.LL110 LDAXX12+3:BPLLL111:SEC:LDA#0:SBCXX12+2:STAXX12+2:LDA#0:SBCXX12+3 9390\GETgrad 9395.LL111 TAX:BNELL112:LDXXX12+5:BEQLL113:.LL112 LSRA:RORXX12+2 9400LSRXX12+5:RORXX12+4:JMPLL111:.LL113 STXT:LDAXX12+2 9405CMPXX12+4:BCCLL114:STAQ:LDAXX12+4:JSRLL28 9410 \ Use Y/X grad. 9415JMPLL116:.LL114 LDAXX12+4:STAQ:LDAXX12+2:JSRLL28 9420 \ Use X/Y grad. 9425DECT:.LL116 LDAR:STAXX12+2:LDAS:STAXX12+3 9430LDAXX13:BEQLL138:BPLLLX117:.LL138 JSRLL118 9435LDAXX13:BPLLL124 9440.LL117 LDAXX15+1:ORAXX15+3:BNELL137:LDAXX15+2:CMP#Y*2 9445BCSLL137:.LLX117 LDXXX15:LDAXX15+4:STAXX15:STXXX15+4:LDAXX15+5 9450LDXXX15+1:STXXX15+5:STAXX15+1:LDXXX15+2:LDAXX12:STAXX15+2 9455STXXX12:LDAXX12+1:LDXXX15+3:STXXX12+1:STAXX15+3:JSRLL118 9460DECSWAP 9465.LL124 PLA:TAY:JMPLL146:.LL137 PLA:TAY:SEC:RTS 9520] 9530F%=P%:PRINT"G d." 9710IFZ>4OSCLI("SAVE ELTG "+STR$~W%+" "+STR$~O%+" "+STR$~L%+" "+STR$~H%) 9720IFZ=4GOTO4 9730 PRINT~C% F% S%,D%-F%