-
Notifications
You must be signed in to change notification settings - Fork 40
Expand file tree
/
Copy pathC.ELITEG.TXT
More file actions
226 lines (226 loc) · 12.5 KB
/
C.ELITEG.TXT
File metadata and controls
226 lines (226 loc) · 12.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
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
15GOTO20
16*L.ELITEH
20REM ELITE <G> C64
100H%=H%+O%-W%:O%=W%
500BOLD%=B%:B%=((P%AND&FF00)+256)-P%:P%=(P%AND&FF00)+256:O%=O%+B%
700log=P%:logof2=LOG(2):IFZ=6 FORI%=1TO255:B%=&2000*LOG(I%)/logof2:B%=INT(B%+.5):I%?O%=B%DIV256:?(O%+I%+&100)=B%MOD256:NEXT
710P%=P%+&200:O%=O%+&200:logL=log+&100
720antilog=P%:IFZ=6 FORI%=0TO255:B%=INT(2^((I%/2+128)/16)+.5)DIV256:B%=B%+(B%=256):I%?O%=B%:NEXT
722P%=P%+&100:O%=O%+&100
725antilogODD=P%:IFZ=6 FORI%=0TO255:B%=INT(2^((I%/2+128.25)/16)+.5)DIV256:B%=B%+(B%=256):I%?O%=B%:NEXT
726P%=P%+&100:O%=O%+&100
730ylookupl=P%:IFZ=6 FORI%=0TO255:B%=SCBASE+&20+(I%AND&F8)*40:I%?O%=B%MOD256:I%?(O%+256)=B%DIV256:NEXT
740P%=P%+&200:O%=O%+&200:ylookuph=ylookupl+&100
750celllookl=P%:IFZ=6 FORI%=0TO24:B%=SCBASE+&2003+40*I%:I%?O%=B%MOD256:I%?(O%+25)=B%DIV256:NEXT
760P%=P%+50:O%=O%+50:celllookh=celllookl+25
800B%=BOLD%:[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:BNEP%+6:CPY#&40:BCCLL7: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
8066CMPQ:BCSLL2:STAwidget:TAX:BEQLLfix:LDAlogL,X:LDXQ:SEC:SBClogL,X:BMInoddlog:LDXwidget:LDAlog,X:LDXQ:SBClog,X:BCSLL2:TAX:LDAantilog,X:.LLfix STAR:RTS
8067.noddlog LDXwidget:LDAlog,X:LDXQ:SBClog,X:BCSLL2:TAX:LDAantilogODD,X:STAR:RTS
8070\LL28 CMPQ:BCSLL2:LDX#254:STXR:.LL31 ASLA:BCSLL29:CMPQ:BCCP%+4:SBCQ:ROLR:BCSLL31:RTS:.LL29 SBCQ:SEC:ROLR:BCSLL31:LDAR:RTS:.LL2 LDA#FF:STAR:RTS
8085.LL38 \BADD(S)A=R+Q(SA)
8090EORS:BMILL39:LDAQ:CLC:ADCR:RTS:.LL39 LDAR:SEC:SBCQ
8095BCCLL40:CLC:RTS:.LL40 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:LDANEWB:BMIEE51:LDA#32:BITXX1+31:BNEEE28:BPLEE28
8143\Initiate explosion
8144ORAXX1+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.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
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\Fce ofst<<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 \ndeX-Ycrds
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
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:JMPLL69+3
8670.LL69 JSRLL28: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
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\nw lns
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:BCCLL79-3
8787INY:LDA(V),Y:INY:STAP:AND#15:TAX:LDAXX2,X:BNELL79:LDAP:LSRA:LSRA:LSRA:LSRA:TAX
8790LDAXX2,X:BNELL79:JMPLL78:.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:BCSLL79-3:JMPLL80
8820.LL145 \CLIP
8822LDA#0:STASWAP
8825LDAXX15+5:.LL147 BITdontclip:BMILL146:LDX#Y*2-1:ORAXX12+1:BNELL107:CPXXX12
8830BCCLL107:LDX#0:.LL107 STXXX13:LDAXX15+1:ORAXX15+3:BNELL83
8835LDA#Y*2-1:CMPXX15+2:BCCLL83
8840LDAXX13:BNELL109+2:.LL146 LDAXX15+2
8845STAXX15+1:LDAXX15+4:STAXX15+2:LDAXX12:STAXX15+3:CLC:RTS
8850.LL109 SEC:RTS:LSRXX13:.LL83
8855LDAXX13:BPLLL115
8860LDAXX15+1:ANDXX15+5:BMILL109:LDAXX15+3:ANDXX12+1:BMILL109
8865LDXXX15+1:DEX:TXA:LDXXX15+5:DEX:STXXX12+2:ORAXX12+2
8870BPLLL109:LDAXX15+2:CMP#Y*2:LDAXX15+3:SBC#0:STAXX12+2
8875LDAXX12:CMP#Y*2:LDAXX12+1:SBC#0:ORAXX12+2:BPLLL109
8885.LL115 TYA:PHA:LDAXX15+4:SEC:SBCXX15:STAXX12+2:LDAXX15+5
8890SBCXX15+1:STAXX12+3:LDAXX12:SEC:SBCXX15+2:STAXX12+4
8895LDAXX12+1:SBCXX15+3:STAXX12+5:EORXX12+3:STAS
8900LDAXX12+5:BPLLL110:LDA#0:SEC:SBCXX12+4:STAXX12+4:LDA#0:SBCXX12+5:STAXX12+5
8910.LL110 LDAXX12+3:BPLLL111:SEC:LDA#0:SBCXX12+2:STAXX12+2:LDA#0:SBCXX12+3
8920\GETgrad
8925.LL111 TAX:BNELL112:LDXXX12+5:BEQLL113:.LL112 LSRA:RORXX12+2
8930LSRXX12+5:RORXX12+4:JMPLL111:.LL113 STXT:LDAXX12+2
8935CMPXX12+4:BCCLL114:STAQ:LDAXX12+4:JSRLL28
8940 \ Use Y/X grad.
8945JMPLL116:.LL114 LDAXX12+4:STAQ:LDAXX12+2:JSRLL28
8950 \ Use X/Y grad.
8955DECT:.LL116 LDAR:STAXX12+2:LDAS:STAXX12+3
8960LDAXX13:BEQP%+4:BPLLLX117:JSRLL118
8965LDAXX13:BPLLL124
8970.LL117 LDAXX15+1:ORAXX15+3:BNELL137:LDAXX15+2:CMP#Y*2
8975BCSLL137:.LLX117 LDXXX15:LDAXX15+4:STAXX15:STXXX15+4:LDAXX15+5
8980LDXXX15+1:STXXX15+5:STAXX15+1:LDXXX15+2:LDAXX12:STAXX15+2
8985STXXX12:LDAXX12+1:LDXXX15+3:STXXX12+1:STAXX15+3:JSRLL118
8987DECSWAP
8990.LL124 PLA:TAY:JMPLL146:.LL137 PLA:TAY:SEC:RTS
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:BCCLL82: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 RTS
9065.LL118 \mv XX15,XX15+2 to scrn-grd.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>FF
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
9217]
9530PRINT" G";
9710IFZ>4OSCLI"SAVE ELTG "+STR$~W%+" "+STR$~O%+" "+STR$~S%+" "+STR$~H%
9720GOTO16