33 lines
1.3 KiB
QBasic
33 lines
1.3 KiB
QBasic
10 GOSUB 9000
|
|
100 F1=2:F2=3:P=0:PRINT CHR$(147)
|
|
110 FOR Y=3 TO 22:FOR X=0 TO 39:POKE 1024+Y*40+X,32:NEXT:NEXT
|
|
120 PRINT CHR$(19);"WAVE COMPOSER F1";F1;" F2";F2
|
|
130 PRINT "A/Z=WAVE1 S/X=WAVE2 SPACE=PAUSE Q=QUIT"
|
|
140 FOR X=0 TO 39:Y=12+INT(4*SIN((X+P)*F1*.16)+3*SIN((X-P)*F2*.12))
|
|
150 IF Y<3 THEN Y=3
|
|
160 IF Y>22 THEN Y=22
|
|
170 Q=1024+Y*40+X:C=(X+P)-INT((X+P)/8)*8
|
|
175 POKE Q,42:POKE Q+54272,3+C:NEXT
|
|
180 P=P+1:GET A$
|
|
190 IF A$="A" AND F1<8 THEN F1=F1+1
|
|
200 IF A$="Z" AND F1>1 THEN F1=F1-1
|
|
210 IF A$="S" AND F2<8 THEN F2=F2+1
|
|
220 IF A$="X" AND F2>1 THEN F2=F2-1
|
|
230 IF A$=" " THEN GOSUB 400
|
|
240 IF A$<>"Q" THEN 110
|
|
250 GOTO 9900
|
|
400 GET A$:IF A$="" THEN 400
|
|
410 IF A$="Q" THEN 9900
|
|
420 RETURN
|
|
9000 POKE 53280,0:POKE 53281,0:PRINT CHR$(147);CHR$(154)
|
|
9010 PRINT:PRINT:PRINT " WAVE COMPOSER":PRINT
|
|
9020 PRINT CHR$(5);" MIX TWO SINE WAVES INTO ONE PATTERN":PRINT:PRINT
|
|
9030 PRINT CHR$(153);" CONTROLS":PRINT
|
|
9040 PRINT CHR$(158);" A/Z";CHR$(5);" WAVE 1 ";CHR$(158);"S/X";CHR$(5);" WAVE 2"
|
|
9050 PRINT " ";CHR$(158);"SPACE";CHR$(5);" PAUSE ";CHR$(158);"Q";CHR$(5);" QUIT":PRINT:PRINT
|
|
9060 PRINT " HTTPS://C64.P20.DEV":PRINT
|
|
9070 PRINT CHR$(152);" RELEASED 22 OCTOBER 2026":PRINT:PRINT
|
|
9080 PRINT CHR$(158);" PRESS SPACE TO START"
|
|
9090 GET A$:IF A$<>" " THEN 9090
|
|
9100 RETURN
|
|
9900 POKE 53280,14:POKE 53281,6:PRINT CHR$(147):END
|