-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy pathB14_Mini-orgel.bc3
295 lines (294 loc) · 10.7 KB
/
B14_Mini-orgel.bc3
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
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
1000 A=650:GOTO20:REM MINI-ORGEL
1010 REM **PROGRAMMA KLAARZETTEN**
1020 SB=HO:Q=0
1030 DIMT$(17):T$(1)="A":T$(2)="W":T$(3)="S":T$(4)="E"
1040 T$(5)="D":T$(6)="F":T$(7)="T":T$(8)="G":T$(9)="Y"
1050 T$(10)="H":T$(11)="U":T$(12)="J":T$(13)="K"
1060 T$(14)="O":T$(15)="L":T$(16)="P":T$(17)=":":T$(0)=""
1070 DIML(200),T(200),D(200)
1080 FORA=0 TO11:D(A)=1:L(A)=7:T(A)=60+A:NEXTA:T(12)=255
1090 DT=3:SV=7:CO=5:AC=60:REM DT=DUUR, CO=OCTAAF AC=CO*12-1
1100 GOSUB2010:REM NAAR MENU
1110 GOTO6010:REM ORGEL TEKENEN
1120 GOSUB1360:GOSUB1370:GOSUB1380:REM TEKENEN VAN DT/SV/CO
1130 GOSUB200:IFIN$="" THEN1130
1140 SR$=IN$:GOSUB330:IN$=SR$:A=0
1150 IFIN$=T$(A) THEN1180
1160 IFA=17 THENQ=0:GOTO1210:REM +/-/Z/M/1-9 INGEDRUKT ?
1170 A=A+1:GOTO1150
1180 IFA=0 THEN1130:REM NIKS INGEDR
1190 SD=DT:SP=A+AC-1:GOSUB400:REM SPEEL TOON
1200 GOTO1130
1210 IF(IN$="+")AND(DT<15) THENDT=DT+1:GOSUB1360:GOTO1340
1220 IF(IN$="-")AND(DT>1) THENDT=DT-1:GOSUB1360:GOTO1340
1230 IF(IN=13)AND(Q=5) THEN3120
1240 IFIN=13 THEN3010
1250 IF(IN$=" ")AND(Q=5)OR(IN$="=")AND(Q=5) THEN3140
1260 IF(IN$="B")AND(Q=0) THEN GOSUB4010
1270 A1=ASC("1")
1280 IF(IN>=A1)AND(IN<A1+9) THEN1300
1290 GOTO1310
1300 CO=IN-A1+1:AC=CO*12-1:AG=CO:GOSUB1370:GOTO1340
1310 IF(IN$="Z")AND(SV>1) THENSV=SV-1:GOSUB1380:GOTO1340
1320 IF(IN$="M")AND(SV<15) THENSV=SV+1:GOSUB1380:GOTO1340
1330 IF(IN$="*") THEN1100
1340 IFQ=5 THEN3030
1350 IFQ=0 THEN1130
1360 AG=DT:VE=.42:GOTO1390
1370 AG=CO:VE=.32:GOTO1390
1380 AG=SV:VE=.52:GOTO1390
1390 FORV=VE TOVE+.02 STEP.01
1400 HO=.5:VE=V:CN=1:GOSUB620:HO=HO+AG*.03:CN=0:GOSUB630
1410 CN=1:HO=.9:GOSUB630:CN=0
1420 NEXTV
1430 RETURN
2000 REM ** MENU **
2010 GOSUB100
2020 HO=INT(SB/2-8):IFHO<0 THENHO=0
2030 VE=0:GOSUB110
2040 SR$="MINI-ORGEL":GOSUB150
2050 VE=3:HO=HO+5:GOSUB110:PRINT"MENU"
2060 HO=HO-4:VE=6:GOSUB110:PRINT"1 Naar orgel"
2070 VE=7:GOSUB110:PRINT"2 Uitleg"
2080 VE=8:GOSUB110:PRINT"3 Kies een lied"
2090 VE=9:GOSUB110:PRINT"4 Stoppen"
2100 VE=11:GOSUB110:PRINT"Maak uw keuze"
2110 GOSUB200:IFIN$="" THEN2110
2120 IFIN$="1" THENRETURN
2130 IFIN$="2" THEN2210
2140 IFIN$="3" THEN5010
2150 IFIN$="4" THEN2170
2160 GOTO2110
2170 GOSUB100:PRINT"TOT ZIENS"
2180 PRINT:PRINT"Druk een toets in"
2190 GOSUB210:GOTO950
2200 REM ** UITLEG **
2210 GOSUB100
2220 PRINT"MINI-ORGEL"
2230 PRINT:PRINT"Dit programma bootst een orgel na."
2240 PRINT"U kunt de toesten A t/m : en"
2250 PRINT"W,E,T,Y,U,O,P gebruiken"
2260 PRINT:PRINT"A=C W=C# S=D enz."
2270 PRINT:PRINT"De toetsen K,O,L,P en : zijn dezelfde"
2280 PRINT"als de toetsen A,W,S,E en D van een"
2290 PRINT"oktaaf hoger"
2300 PRINT:PRINT"Het volume kunt u regelen met de"
2310 PRINT"toetsen Z(zachter) en M(harder)"
2320 PRINT:PRINT"De duur van de toon kunt u regelen"
2330 PRINT"met de toetsen +(langer) en -(korter)"
2340 PRINT:PRINT:PRINT" Druk een toets in"
2350 GOSUB210
2360 GOSUB100
2370 PRINT"Met de toetsen 1 t/m 9 kunt u het "
2380 PRINT"oktaaf kiezen"
2390 PRINT:PRINT" LET OP : Bij enkele computers "
2400 PRINT" werken de hoogste en/of "
2410 PRINT" de laagste oktaven niet !"
2420 PRINT:PRINT"b.v. op de Exidy werken alleen de"
2430 PRINT"oktaven : (5),6 en(7) terwijl"
2440 PRINT"op de Spectrum en de TRS-80 alle"
2450 PRINT"oktaven werken !"
2460 PRINT:PRINT"n.b. Op de C-64 werken de"
2470 PRINT"oktaven : (8) en 9 niet en geven"
2480 PRINT"de oktaven 1 en 2 een akelig gebrom"
2490 PRINT:PRINT:PRINT" Druk een toets in"
2500 GOSUB210
2510 GOSUB100
2520 PRINT"U kunt niet alleen spelen,maar ook"
2530 PRINT"liedjes laten onthouden door de comp."
2540 PRINT:PRINT"U moet dan voordat u een liedje gaat"
2550 PRINT"spelen op de return (newline/enter)"
2560 PRINT"toets drukken."
2570 PRINT:PRINT"Wilt u een pauze in een lied dan"
2580 PRINT"moet u op de spatiebalk of op de ="
2590 PRINT"drukken."
2600 PRINT"Een lied mag maximaal 200 tonen"
2610 PRINT"lang zijn (inclusief pauzes)"
2620 PRINT:PRINT"Als u klaar bent met een lied dan"
2630 PRINT"moet u weer op de return toets"
2640 PRINT"drukken."
2650 PRINT:PRINT"u kunt het liedje weer beluisteren"
2660 PRINT"door op de B te drukken."
2670 PRINT:PRINT" Druk een toets in . . ."
2680 GOSUB210:GOSUB100
2690 PRINT:PRINT"N.B.: Je kunt maar een liedje"
2700 PRINT"onthouden, dus als je een nieuw lied"
2710 PRINT"wilt onthouden vergeet de computer"
2720 PRINT"het oude !"
2730 PRINT:PRINT"N.B.: De computer onthoudt per toon"
2740 PRINT"het volume, het oktaaf en de duur"
2750 PRINT"van de toon."
2760 PRINT:PRINT"Vanaf regel 25000 staan een aantal"
2770 PRINT"liedjes. Deze kunt u beluisteren door"
2780 PRINT"in het menu nr.2 te kiezen en dan het"
2790 PRINT"begin van de naam van het lied"
2800 PRINT"in te tikken wat u wenst."
2810 PRINT"Dan kiest u nr.1 (orgel) en tikt u B in"
2820 PRINT"om het lied af te spelen"
2830 PRINT:PRINT" Druk een toets in . . ."
2840 GOSUB210:GOSUB100
2850 PRINT"Aan het begin van elk lied staat:"
2860 PRINT" 253,'naam'"
2870 PRINT"En aan het einde staat:"
2880 PRINT" 255,0,0"
2890 PRINT"Daar tussen in staat alles in de"
2900 PRINT"volgende volgorde :":PRINT"1 toon"
2910 PRINT"2 duur bijv.: 74,4,7 ":PRINT"3 volume"
2920 PRINT"Aan het einde van alle liedjes staat:"
2930 PRINT" 253,'*'"
2940 PRINT:PRINT:PRINT" VEEL SUCCES"
2950 PRINT:PRINTTAB(20);"Edwin Van Waes"
2960 PRINT:PRINT" Druk een toets in"
2970 GOSUB210:GOTO2010
3000 REM ** ONTHOUD EEN LIED **
3010 HO=0.6:VE=0.1:SR$="*onthouden*":GOSUB650
3020 VO=0:Q=5
3030 GOSUB200:IFIN$="" THEN3030
3040 SR$=IN$:GOSUB330:IN$=SR$:A=0
3050 IFIN$=T$(A) THEN3080
3060 IFA=17 THEN1210
3070 A=A+1:GOTO3050
3080 L(VO)=SV:T(VO)=A+AC-1:D(VO)=DT
3090 SD=DT:SP=A+AC-1:GOSUB400
3100 VO=VO+1:IFVO=200 THEN3120
3110 GOTO3030
3120 Q=0:T(VO)=255:HO=0.6:VE=0.1:CN=1:SR$="*onthouden*"
3130 GOSUB650:CN=0:GOTO1130
3140 T(VO)=254:VO=VO+1:GOTO3030
4000 REM ** AFSPELEN **
4010 HO=0.6:VE=0.1:SR$="*afspelen*":GOSUB650
4020 VO=0
4030 IFT(VO)=255 THEN4090
4040 IFT(VO)=254 THEN4070
4050 SV=L(VO):SP=T(VO):SD=D(VO):GOSUB400
4060 VO=VO+1:GOTO4030
4070 SV=0:SD=5:GOSUB400
4080 VO=VO+1:GOTO4030
4090 HO=0.6:VE=0.1:CN=1:SR$="*afspelen*":GOSUB650:CN=0
4100 RETURN
5000 REM ** KIES EEN LIED UIT DATA **
5010 RESTORE:GOSUB100
5020 SR$=" LIEDJES : ":GOSUB150
5030 PRINT:PRINT
5040 READA:IFA=253 THENREADA$:GOTO5060
5050 GOTO5040
5060 IFA$<>"*" THENPRINTA$:GOTO5040
5070 PRINT:PRINT"Welk lied moet in"
5080 PRINT"het (B) geheugen"
5090 PRINT"komen te staan?"
5100 PRINT:INPUTSR$:GOSUB330:B$=SR$
5110 PRINT:PRINT"Ik zoek het goede lied"
5120 RESTORE
5130 READA:IFA<>253 THEN5150
5140 READSR$:GOSUB330:IFB$=LEFT$(SR$,LEN(B$)) THEN5170
5150 IFSR$="*" THEN5010
5160 GOTO5130
5170 VO=0:READB
5180 T(VO)=B:READD(VO):READL(VO)
5190 READB:IFB=253 THEN2010
5200 VO=VO+1:GOTO5180
6000 REM ** ORGEL TEKENEN **
6010 GOSUB600
6020 CN=0:HO=0:VE=0.9:GOSUB620
6030 HO=1-1/HG:GOSUB630:REM *ONDER LIJN*
6040 VE=0.6:GOSUB630:REM *RECHTER LIJN*
6050 HO=0:GOSUB630:REM *LINKER LIJN*
6060 VE=0.9:GOSUB630:REM *BOVEN LIJN*
6070 REM *TOETSEN*
6080 FORHO=.1 TO.2 STEP.1:GOSUB7000:NEXTHO
6090 FORHO=.4 TO.6 STEP.1:GOSUB7000:NEXTHO
6100 HO=.8:GOSUB7000
6110 HO=.9:GOSUB7000
6120 HO=.3:VE=0.9:GOSUB620:VE=0.6:GOSUB630
6130 HO=.7:VE=0.9:GOSUB620:VE=0.6:GOSUB630
6140 REM *LETTERS IN TOETSEN ZETTEN*
6150 HO=.03:VE=.84:SR$="A":GOSUB650
6160 HO=.13:SR$="S":GOSUB650
6170 HO=.23:SR$="D":GOSUB650
6180 HO=.33:SR$="F":GOSUB650
6190 HO=.43:SR$="G":GOSUB650
6200 HO=.53:SR$="H":GOSUB650
6210 HO=.63:SR$="J":GOSUB650
6220 HO=.73:SR$="K":GOSUB650
6230 HO=.83:SR$="L":GOSUB650
6240 HO=.93:SR$=":":GOSUB650
6250 HO=.08:VE=.7:SR$="W":GOSUB650
6260 HO=.18:SR$="E":GOSUB650
6270 HO=.38:SR$="T":GOSUB650
6280 HO=.48:SR$="Y":GOSUB650
6290 HO=.58:SR$="U":GOSUB650
6300 HO=.78:SR$="O":GOSUB650
6310 HO=.88:SR$="P":GOSUB650
6320 REM *UITLEG OP HET SCHERM*
6330 HO=.35:VE=0:SR$="MINI-ORGEL":GOSUB650
6340 HO=.02:VE=.07:SR$="1 - 9 =oktaaf":GOSUB650
6350 VE=.12:SR$="+ / - =toon duur":GOSUB650
6360 VE=.17:SR$="m / z =volume":GOSUB650
6370 VE=.22:SR$=" * =menu":GOSUB650
6380 HO=.2:VE=.31:SR=CO:GOSUB300:SR$="oktaaf-"+SR$:GOSUB650
6390 VE=.41:SR=DT:GOSUB300:SR$="t/duur-"+SR$:GOSUB650
6400 VE=.51:SR=SV:GOSUB300:SR$="volume-"+SR$:GOSUB650
6410 GOTO1120
7000 VE=.9:GOSUB620:VE=.75:GOSUB630
7010 HO=HO-.04:GOSUB630:VE=.6:GOSUB630
7020 HO=HO+.04:VE=.75:GOSUB620
7030 HO=HO+.04:GOSUB630:VE=.6:GOSUB630:HO=HO-.04
7040 RETURN
25000 DATA253,"Ik zag twee beren"
25010 DATA81,4,7,81,4,7,81,4,7,86,4,7,78,4,7,78,4,7
25020 DATA78,4,7,81,4,7,74,4,7,74,4,7,74,4,7,78,4,7
25030 DATA81,6,7,76,6,7,254,0,0,83,4,7,79,4,7,79,4,7
25040 DATA79,4,7,81,4,7,78,4,7,78,4,7,78,4,7,79,4,7
25050 DATA76,4,7,76,4,7,76,4,7,74,4,7,78,4,7,81,4,7
25060 DATA81,4,7,254,0,0,81,4,7,81,4,7,81,6,7,83,4,7
25070 DATA83,4,7,83,6,7,81,4,7,81,4,7,81,4,7,81,3,7
25080 DATA81,3,7,81,4,7,81,4,7,86,6,7,255,0,0
25090 DATA253,"Deze vuist"
25100 DATA72,4,7,74,4,7,76,4,7,74,4,7,72,4,7,74,4,7
25110 DATA76,4,7,254,0,0,74,4,7,76,4,7,77,4,7,76,4,7
25120 DATA74,4,7,76,4,7,77,4,7,254,0,0,76,4,7,77,4,7
25130 DATA79,4,7,77,4,7,76,4,7,77,4,7,79,4,7,79,4,7
25140 DATA254,0,0,81,4,7,81,4,7,79,4,7,76,4,7,74,4,7
25150 DATA72,4,7,255,0,0,253,"*"
30000 REM -----------------------------
30010 REM ! De belangrijksste !
30020 REM ! variabelen zijn : !
30030 REM ! !
30040 REM ! T$(0T/M17) Bevatten de !
30050 REM ! toetsen !
30060 REM ! SR$(max.16 kar.) !
30070 REM ! DT Duur toon !
30080 REM ! SV,SP,SD !
30090 REM ! AC Oktaaf*12-1 !
30100 REM ! CO Nr oktaaf !
30110 REM ! IN$,IN !
30120 REM ! A1 ASC"1"(TELLER!
30130 REM ! HO,VE,CN !
30140 REM ! L(0T/M200) VOLUME'S !
30150 REM ! T(0T/M200) TOON HOOGTE'S!
30160 REM ! D(0T/M200) DUUR TONEN !
30170 REM ! SB SCHERMBREEDTE!
30180 REM ! AG WAARDE VAN !
30190 REM ! CO,SV OF DT !
30200 REM ! !
30210 REM !---------------------------!
30220 REM
30230 REM
30240 REM *****************************
30250 REM * MINI-ORGEL *
30260 REM *---------------------------*
30270 REM * *
30280 REM * GEMAAKT OP EEN CBM 64 *
30290 REM * IN BASICODE-3 *
30300 REM * *
30310 REM * Door: *
30320 REM * *
32000 REM * EDWIN VAN WAES (13 jaar) *
32010 REM * STAPELEN 27 *
32020 REM * 5653 KP EINDHOVEN *
32030 REM * 040-520257 *
32040 REM * *
32050 REM * 20-9-87 *
32060 REM * *
32070 REM *****************************
32080 REM TROS-RADIO dd 871230