Compucolor.org – Virtual Media

Listing of file='FREQ3.BAS;01' on disk='vmedia/ay-3-8910_programs-sector.ccvf'

10 REM  *** TRIPLE FREQUENCY GENERATOR ***
15 REM
20 REM   THE CLOCK FREQUENCY FOR THE AY-3-8910 MUST BE
25 REM   ENTERED. USUALLY 2.000 MHZ OR 1.78977 MHZ.
30 REM
40 DIM  FQ(3),V(3)
45 REM  DEFAULT CLOCK FREQUENCY
50 DF= 1.7897725E06
55 REM
60 INPUT "CLOCK FREQUENCY FOR AY-3-8910 : ";FC
70 IF  FC< = 0 THEN  FC= DF
75 REM
80 OUT  48,7:OUT  49,56:REM  CHANNELS 'A,B,C' ONLY
85 OUT  48,6:OUT  49,0:REM  SET UP NOISE PERIOD
90 GOSUB  10000
100 INPUT  "TONE FREQUENCIES : ";FQ(0),FQ(1),FQ(2)
105 IF  FQ(0)= 0 OR  FQ(1)= 0 OR  FQ(2)= 0 THEN  END
110 INPUT  "NOISE ? ";N$
115 IF  N$< > "Y" GOTO  130
120 INPUT  "NOISE PERIOD (0-31): ";NP
125 OUT  48,7:OUT  49,0:OUT  48,6:OUT  49,NP
130 FOR  I= 0 TO  2
135 TP =  INT (FC/ (16* FQ(I))+ 0.5)
140 PH =  INT (TP/ 256)
145 PL =  TP- 256* PH
150 OUT  48,2* I:OUT  49,PL
155 OUT  48,2* I+ 1:OUT  49,PH
160 PRINT  "TONE ";I+ 1,"HIGH BYTE = ";PH,"LOW BYTE = ";PL
165 NEXT  I
170 INPUT  "ENVELOPE CONTROL (Y/N) ? ";EC$
180 IF  EC$< > "Y" GOTO  800
190 INPUT  "ENVELOPE FREQUENCY : ";EF
200 INPUT  "ENVELOPE SHAPE/CYCLE CODE (0-15): ";ES
210 INPUT  "NUMBER OF CHANNELS FOR CONTROL: ";NC
220 EP =  INT (FC/ (256* EF)+ 0.5)
230 EH =  INT (EP/ 256)
240 EL =  EP- 256* EH
250 V(1) =  15:V(2) =  15:V(3) =  15
260 FOR  I= 1 TO  NC:V(I) =  16:NEXT  I
270 OUT  48,11:OUT  49,EL:OUT  48,12:OUT  49,EH
280 OUT  48,13:OUT  49,ES
290 GOSUB  10030
300 GOTO  850
800 GOSUB  10050
850 REM
870 INPUT  "HIT <RETURN> TO STOP ";A$
880 GOSUB  10000
890 OUT  48,7:OUT  49,56
900 GOTO  100
10000 REM  *** STOP SOUND ON ALL CHANNELS ***
10010 REM
10020 V(1) =  0:V(2) =  0:V(3) =  0
10030 OUT  48,8:OUT  49,V(1):OUT  48,9:OUT  49,V(2):OUT  48,10:OUT  49,V(3)
10040 RETURN
10050 REM  *** START SOUND ON ALL CHANNELS ***
10060 REM
10070 V(1) =  15:V(2) =  15:V(3) =  15:GOTO  10030