    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 <G>
  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<<PV
 8415LDAXX18:STAXX15:LDAXX18+2:STAXX15+1:LDAXX18+3:STAXX15+2:LDAXX18+5:STAXX15+3:LDAXX18+6:STAXX15+4:LDAXX18+8:STAXX15+5
 8425JMPLL89:.ovflw LSRXX18:LSRXX18+6:LSRXX18+3:LDX#1:.LL92 LDAXX12:STAXX15:LDAXX12+2:STAXX15+2:LDAXX12+4
 8430.LL93 DEX:BMILL94:LSRXX15:LSRXX15+2:LSRA:DEX:BPLLL93+3
 8435.LL94 STAR:LDAXX12+5:STAS:LDAXX18+6:STAQ:LDAXX18+8:JSRLL38:BCSovflw
 8440STAXX15+4:LDAS:STAXX15+5
 8450LDAXX15:STAR:LDAXX12+1:STAS
 8455LDAXX18:STAQ:LDAXX18+2:JSRLL38:BCSovflw:STAXX15:LDAS:STAXX15+1
 8460LDAXX15+2:STAR:LDAXX12+3:STAS:LDAXX18+3:STAQ:LDAXX18+5
 8465JSRLL38:BCSovflw:STAXX15+2:LDAS:STAXX15+3
 8470.LL89 LDAXX12:STAQ:LDAXX15:JSRFMLTU:STAT:LDAXX12+1
 8475EORXX15+1:STAS:LDAXX12+2:STAQ:LDAXX15+2:JSRFMLTU:STAQ
 8480LDAT:STAR:LDAXX12+3:EORXX15+3:JSRLL38:STAT:LDAXX12+4
 8485STAQ:LDAXX15+4:JSRFMLTU:STAQ:LDAT:STAR:LDAXX15+5
 8490EORXX12+5:JSRLL38:PHA:TYA:LSRA:LSRA:TAX:PLA
 8500BITS:BMIP%+4:LDA#0:STAXX2,X:INY:.LL88 CPYXX20:BCSLL42:JMPLL86
 8501.LL42 \DO nodeX-Ycoords
 8506\TrnspMat:LDYXX16+2:LDXXX16+3:LDAXX16+6:STAXX16+2:LDAXX16+7:STAXX16+3:STYXX16+6:STXXX16+7
 8508LDYXX16+4:LDXXX16+5:LDAXX16+12:STAXX16+4:LDAXX16+13
 8509STAXX16+5:STYXX16+12:STXXX16+13
 8510LDYXX16+10:LDXXX16+11:LDAXX16+14:STAXX16+10:LDAXX16+15
 8511STAXX16+11:STYXX16+14:STXXX16+15
 8518LDY#8:LDA(XX0),Y:STAXX20
 8520LDAXX0:CLC:ADC#20:STAV:LDAXX0+1:ADC#0:STAV+1:LDY#0:STYCNT
 8525.LL48 STYXX17:LDA(V),Y:STAXX15:INY:LDA(V),Y:STAXX15+2:INY
 8530LDA(V),Y:STAXX15+4:INY:LDA(V),Y:STAT:AND#31:CMPXX4:BCCLL49-3:INY:LDA(V),Y:STAP:AND#15:TAX:LDAXX2,X
 8540BNELL49:LDAP:LSRA:LSRA:LSRA:LSRA:TAX:LDAXX2,X:BNELL49:INY:LDA(V),Y:STAP:AND#15:TAX:LDAXX2,X:BNELL49:LDAP:LSRA:LSRA:LSRA:LSRA:TAX:LDAXX2,X:BNELL49:JMPLL50
 8545\"
 8555.LL49 LDAT:STAXX15+1:ASLA:STAXX15+3:ASLA:STAXX15+5
 8560JSRLL51:LDAXX1+2:STAXX15+2:EORXX12+1:BMILL52:CLC:LDAXX12
 8565ADCXX1:STAXX15:LDAXX1+1:ADC#0:STAXX15+1:JMPLL53
 8570.LL52 LDAXX1:SEC:SBCXX12:STAXX15:LDAXX1+1:SBC#0:STAXX15+1
 8575BCSLL53:EOR#FF:STAXX15+1:LDA#1:SBCXX15:STAXX15
 8580BCCP%+4:INCXX15+1:LDAXX15+2:EOR#128:STAXX15+2
 8585.LL53 LDAXX1+5:STAXX15+5:EORXX12+3:BMILL54:CLC:LDAXX12+2
 8590ADCXX1+3:STAXX15+3:LDAXX1+4:ADC#0:STAXX15+4:JMPLL55
 8595.LL54 LDAXX1+3:SEC:SBCXX12+2:STAXX15+3:LDAXX1+4:SBC#0
 8600STAXX15+4:BCSLL55:EOR#255:STAXX15+4:LDAXX15+3:EOR#255:ADC#1
 8605STAXX15+3:LDAXX15+5:EOR#128:STAXX15+5:BCCLL55:INCXX15+4
 8610.LL55 LDAXX12+5:BMILL56:LDAXX12+4:CLC:ADCXX1+6:STAT
 8615LDAXX1+7:ADC#0:STAU:JMPLL57
 8620.LL61 LDXQ:BEQLL84:LDX#0:.LL63 LSRA:INX:CMPQ:BCSLL63
 8625STXS:JSRLL28:LDXS:LDAR:.LL64 ASLA:ROLU:BMILL84:DEX:BNELL64:STAR:RTS:.LL84 LDA#50:STAR:STAU:RTS
 8635.LL62 LDA#128:SEC:SBCR:STAXX3,X:INX:LDA#0:SBCU:STAXX3,X:JMPLL66
 8645.LL56 LDAXX1+6:SEC:SBCXX12+4:STAT:LDAXX1+7:SBC#0:STAU
 8650BCCLL140:BNELL57:LDAT:CMP#4:BCSLL57:.LL140 LDA#0:STAU
 8655LDA#4:STAT:.LL57 LDAU:ORAXX15+1:ORAXX15+4:BEQLL60:LSRXX15+1:RORXX15:LSRXX15+4:RORXX15+3:LSRU:RORT:JMPLL57
 8665.LL60 LDAT:STAQ:LDAXX15:CMPQ:BCCLL69:JSRLL61:JMPLL65
 8670.LL69 JSRLL28:.LL65 LDXCNT:LDAXX15+2:BMILL62:LDAR
 8675CLC:ADC#128:STAXX3,X:INX:LDAU:ADC#0:STAXX3,X
 8680.LL66 TXA:PHA:LDA#0:STAU:LDAT:STAQ:LDAXX15+3:CMPQ:BCCLL67
 8685JSRLL61:JMPLL68:.LL70 LDA#Y:CLC:ADCR:STAXX3,X:INX
 8690LDA#0:ADCU:STAXX3,X:JMPLL50
 8695.LL67 JSRLL28:.LL68 PLA:TAX:INX:LDAXX15+5:BMILL70:LDA#Y
 8700SEC:SBCR:STAXX3,X:INX:LDA#0:SBCU:STAXX3,X
 8705.LL50 CLC:LDACNT:ADC#4:STACNT:LDAXX17:ADC#6:TAY:BCSLL72
 8706\"
 8710CMPXX20:BCSLL72:JMPLL48:.LL72 LDAXX1+31:AND#32:BEQEE31:LDAXX1+31:ORA#8:STAXX1+31:JMPDOEXP:.EE31
 8715LDA#8:BITXX1+31:BEQLL74:JSRLL155:LDA#8
 8725.LL74 ORAXX1+31:STAXX1+31
 8743LDY#9:LDA(XX0),Y:STAXX20
 8744LDY#0:STYU:STYXX17:INCU:BITXX1+31:BVCLL170:LDAXX1+31:AND#&BF:STAXX1+31
 8745LDY#6:LDA(XX0),Y:TAY:LDXXX3,Y:STXXX15:INX:BEQLL170:LDXXX3+1,Y:STXXX15+1:INX:BEQLL170:LDXXX3+2,Y:STXXX15+2
 8750LDXXX3+3,Y:STXXX15+3:LDA#0:STAXX15+4:STAXX15+5:STAXX12+1:LDAXX1+6:STAXX12
 8752LDAXX1+2:BPLP%+4:DECXX15+4:JSRLL145:BCSLL170:LDYU
 8753LDAXX15:STA(XX19),Y:INY:LDAXX15+1:STA(XX19),Y:INY:LDAXX15+2:STA(XX19),Y:INY:LDAXX15+3:STA(XX19),Y:INY:STYU:.LL170
 8755 \ Calculate new lines
 8770LDY#3:CLC:LDA(XX0),Y:ADCXX0
 8775STAV:LDY#16:LDA(XX0),Y:ADCXX0+1:STAV+1:LDY#5:LDA(XX0),Y:STAT1:LDYXX17
 8785.LL75 LDA(V),Y:CMPXX4:BCCLL78
 8787INY:LDA(V),Y:INY:STAP:AND#15:TAX:LDAXX2,X:BNELL79:LDAP:LSRA:LSRA:LSRA:LSRA:TAX
 8788\"
 8790LDAXX2,X:BEQLL78:.LL79 LDA(V),Y
 8795TAX:INY:LDA(V),Y:STAQ:LDAXX3+1,X:STAXX15+1:LDAXX3,X:STAXX15
 8800LDAXX3+2,X:STAXX15+2:LDAXX3+3,X:STAXX15+3:LDXQ:LDAXX3,X
 8805STAXX15+4:LDAXX3+3,X:STAXX12+1:LDAXX3+2,X:STAXX12
 8810LDAXX3+1,X:STAXX15+5:JSRLL147:BCSLL78
 8995.LL80 LDYU:LDAXX15:STA(XX19),Y:INY:LDAXX15+1
 9000STA(XX19),Y:INY:LDAXX15+2:STA(XX19),Y:INY:LDAXX15+3
 9005STA(XX19),Y:INY:STYU:CPYT1:BCSLL81
 9010.LL78 INCXX17:LDYXX17:CPYXX20:BCSLL81:LDY#0:LDAV:ADC#4
 9012\"
 9015STAV:BCCll81:INCV+1:.ll81 JMPLL75
 9020.LL81 LDAU:LDY#0:STA(XX19),Y
 9035.LL155
 9040\ CLEAR LINEstr
 9045LDY#0:LDA(XX19),Y:STAXX20:CMP#4:BCCLL118-1:INY
 9050.LL27 LDA(XX19),Y:STAXX15:INY:LDA(XX19),Y:STAXX15+1
 9055INY:LDA(XX19),Y:STAXX15+2:INY:LDA(XX19),Y:STAXX15+3
 9060JSRLL30:INY:CPYXX20:BCCLL27:\LL82
 9065RTS:.LL118  \move XX15,XX15+2 to screen-grad.XX12+2
 9070LDAXX15+1:BPLLL119:STAS:JSRLL120  \ X1<0
 9075TXA:CLC:ADCXX15+2:STAXX15+2:TYA:ADCXX15+3:STAXX15+3
 9080LDA#0:STAXX15:STAXX15+1:TAX
 9085.LL119 BEQLL134:STAS:DECS:JSRLL120 \ X1>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%
