-
Notifications
You must be signed in to change notification settings - Fork 40
Expand file tree
/
Copy pathC.ELITEK.TXT
More file actions
276 lines (276 loc) · 6.33 KB
/
C.ELITEK.TXT
File metadata and controls
276 lines (276 loc) · 6.33 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
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
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
17GOTO20
18*L.ELITEI
19GOTO30
20*L.ELITEJ
21GOTO30
22*L.ELITEK
23GOTO30
30REM ELITE <K> C64
100H%=H%+O%-W%:O%=W%
1000REM Music driver by Dave Dunn.
1010REM
1020REM BBC source code converted
1030REM from Commodore disassembly
1035REM extremely badly
1040REM Jez. 13/4/85.
1050REM
1060REM Music system (c)1985 D.Dunn.
1065REM Modified by IB,DB
1070REM
1160REM Zero page locations...
1180BDdataptr1=FNBZ :REM Data pointers
1190BDdataptr2=FNBZ
1200BDdataptr3=FNBZ
1210BDdataptr4=FNBZ
1230counter=FNBZ :REM main counter
1250vibrato2=FNBZ :REM Vibrato
1260vibrato3=FNBZ
1280voice2lo1=FNBZ :REM voice notes
1290voice2hi1=FNBZ
1300voice2lo2=FNBZ
1310voice2hi2=FNBZ
1320voice3lo1=FNBZ
1330voice3hi1=FNBZ
1340voice3lo2=FNBZ
1350voice3hi2=FNBZ
1360BDBUFF=FNBZ
1370REM Storage locations...
1380[OPT Z
1390.value0 BRK
1400.value1 BRK
1410.value2 BRK
1420.value3 BRK
1430.value4 BRK
1450\ The IRQ routine points here...
1455\........................
1460.BDirqhere LDY #0
1465\........................
1470CPY counter:BEQ BDskip1:DEC counter:JMP BDlab1
1520.BDskip1 LDABDBUFF:CMP#16:BCSBDLABEL2:TAX:BNEBDLABEL:JSRBDlab19:STABDBUFF:.BDLABEL2 AND#&F:TAX
1530.BDLABEL LDABDBUFF:LSRA:LSRA:LSRA:LSRA:STABDBUFF
1540LDABDJMPTBL-1,X:STABDJMP+1:LDABDJMPTBH-1,X:STABDJMP+2
1550.BDJMP JMPBDskip1
1560\......
1580.BDRO1 JSR BDlab3:JSR BDlab4:JMP BDskip1
1590\
1620.BDRO2 JSR BDlab5:JSR BDlab6:JMP BDskip1
1630\
1650.BDRO3 JSR BDlab7:JSR BDlab8:JMP BDskip1
1660\
1680.BDRO4 JSR BDlab3:JSR BDlab5:JSR BDlab4:JSR BDlab6:JMP BDskip1
1690\
1730.BDRO5 JSR BDlab3:JSR BDlab5:JSR BDlab7:JSR BDlab4:JSR BDlab6:JSR BDlab8
1790JMP BDskip1
1795\
1800.BDRO6 INC value0:JMP BDskip1
1810\
1820.BDRO15 LDABDBUFF:SEC:ROLA:ASLA:ASLA:ASLA:STABDBUFF
1830.BDRO8 LDA value4:STA counter:JMP BDirqhere
1840\
1870.BDRO7 JSR BDlab19:STA &D405:JSR BDlab19:STA &D40C:JSR BDlab19:STA &D413
1930JSR BDlab19:STA &D406:JSR BDlab19:STA &D40D:JSR BDlab19:STA &D414:JMP BDskip1
2000\
2010.BDRO9 LDA#0:STABDBUFF:LDA BDdataptr3 \Repeat
2020STA BDdataptr1:LDA BDdataptr4:STA BDdataptr2:JMP BDskip1
2030\
2060.BDRO10 JSR BDlab19:STA &D402:JSR BDlab19:STA &D403:JSR BDlab19:STA &D409
2120JSR BDlab19:STA &D40A:JSR BDlab19:STA &D410:JSR BDlab19:STA &D411:JMP BDskip1
2190\...................................
2200.BDRO11 JMPBDRO9
2210\...................................
2360.BDRO12 JSR BDlab19:STA value4:JMP BDskip1
2370\
2400.BDRO13 JSR BDlab19:STA value1:JSR BDlab19:STA value2:JSR BDlab19
2450STA value3:JMP BDskip1
2460\
2480.BDRO14 JSR BDlab19:STA &D418:JSR BDlab19:STA &D417:JSR BDlab19
2530STA &D416:JMP BDskip1
2540\
2560.BDlab4
2570LDA value1
2580STY &D404
2590STA &D404
2600RTS
2620.BDlab6
2630LDA value2
2640STY &D40B
2650STA &D40B
2660RTS
2680.BDlab8
2690LDA value3
2700STY &D412
2710STA &D412
2720RTS
2740.BDlab19
2750INC BDdataptr1
2760BNE BDskipme1
2770INC BDdataptr1+1
2780.BDskipme1
2790LDA (BDdataptr1),Y
2800RTS
2820.BDlab3
2830JSR BDlab19
2840STA &D401
2850JSR BDlab19
2860STA &D400
2870RTS
2890.BDlab5
2900JSR BDlab19
2910STA &D408
2920STA voice2lo1
2930STA voice2lo2
2940JSR BDlab19
2950STA &D407
2960STA voice2hi1
2970STA voice2hi2
2980CLC
2990CLD
3000LDA #&20
3010ADC voice2hi2
3020STA voice2hi2
3030BCC BDruts1
3040INC voice2lo2
3050.BDruts1
3060RTS
3080.BDlab7
3090JSR BDlab19
3100STA &D40F
3110STA voice3lo1
3120STA voice3lo2
3130JSR BDlab19
3140STA &D40E
3150STA voice3hi1
3160STA voice3hi2
3170CLC
3180CLD
3190LDA #&20
3200ADC voice3hi2
3210STA voice3hi2
3220BCC BDruts2
3230INC voice3lo2
3240.BDruts2
3250RTS
3260\.............................................
3270.BDENTRY
3280\.............................................
3290LDA #0:STABDBUFF
3300STA counter
3310STA vibrato2
3320STA vibrato3
3330LDX #&18
3340.BDloop2
3350STA &D400,X
3360DEX
3370BNE BDloop2
3380LDA #musicstart MOD 256
3390STA BDdataptr1
3400STA BDdataptr3
3410LDA #musicstart DIV 256
3420STA BDdataptr2
3430STA BDdataptr4
3440LDA #&0F
3450STA &D418
3460\SEI:RTS \<<
3470\ point IRQ to start
3480\LDA #BDirqhere MOD 256
3490\STA &0314
3500\LDA #BDirqhere DIV 256
3510\STA &0315
3520\CLI
3540\BRK \ re enter monitor!
3544\........
3560LDA #0
3570STA vibrato2
3580LDA #&AE
3590STA BDbeqmod1+1
3600LDA voice2lo2
3610STA &D408
3620LDA voice2hi2
3630STA &D407
3640JMP BDlab21
3660.BDlab24
3670LDA #0
3680STA vibrato2
3690LDA #&98
3700STA BDbeqmod1+1
3710LDA voice2lo1
3720STA &D408
3730LDA voice2hi1
3740STA &D407
3750JMP BDlab21
3770LDA #0
3780STA vibrato3
3790LDA #&E2
3800STA BDbeqmod2+1
3810LDA voice3lo2
3820STA &D40F
3830lda voice3hi2
3840STA &D40E
3850JMP BDlab21
3870.BDlab23
3880LDA #0
3890STA vibrato3
3900LDA #&CC
3910STA BDbeqmod2+1
3920LDA voice3lo1
3930STA &D40F
3940LDA voice3hi1
3950STA &D40E
3960JMP BDlab21
3980.BDlab1
3990INC vibrato3
4000LDA #6
4010CMP vibrato3
4020.BDbeqmod2
4030BEQ BDlab23
4040INC vibrato2
4050LDA #5
4060CMP vibrato2
4070.BDbeqmod1
4080BEQ BDlab24
4090.BDlab21
4100LDX counter
4110CPX #2
4120BNE BDexitirq
4130LDX value1
4140DEX
4150STX &D404
4160LDX value2
4170DEX
4180STX &D40B
4190LDX value3
4200DEX
4210STX &D412
4220.BDexitirq RTS:RTS \JMP &EA31
4500.BDJMPTBL
4510EQUB(BDRO1 MOD256):EQUB(BDRO2 MOD256):EQUB(BDRO3 MOD256):EQUB(BDRO4 MOD256):EQUB(BDRO5 MOD256):EQUB(BDRO6 MOD256):EQUB(BDRO7 MOD256):EQUB(BDRO8 MOD256):EQUB(BDRO9 MOD256)
4520EQUB(BDRO10 MOD256):EQUB(BDRO11 MOD256):EQUB(BDRO12 MOD256):EQUB(BDRO13 MOD256):EQUB(BDRO14 MOD256):EQUB(BDRO15 MOD256)
4550.BDJMPTBH
4560EQUB(BDRO1 DIV256):EQUB(BDRO2 DIV256):EQUB(BDRO3 DIV256):EQUB(BDRO4 DIV256):EQUB(BDRO5 DIV256):EQUB(BDRO6 DIV256):EQUB(BDRO7 DIV256):EQUB(BDRO8 DIV256):EQUB(BDRO9 DIV256)
4570EQUB(BDRO10 DIV256):EQUB(BDRO11 DIV256):EQUB(BDRO12 DIV256):EQUB(BDRO13 DIV256):EQUB(BDRO14 DIV256):EQUB(BDRO15 DIV256)
5280]
5290musicstart=P%-1
5300IF Z>4 OSCLI("L.:2.COMUDAT "+STR$~O%)
5350P%=P%+&A38:O%=O%+&A38
9910PRINT"K"
9915F%=P%:Q%=&12345678:REM Flag knowledge of F%
9920IFZ>4OSCLI"SAVE ELTK "+STR$~W%+" "+STR$~O%+" "+STR$~BEGIN+" "+STR$~H%
9930IFZ=4GOTO4
9940PRINT~C% F% S% K%" (Free: ";&CD00-F%;" ";&4000-R%;") ZP:";~ZP'
9999END
10000DEF FNBZ :ZP=ZP+1:=ZP-1