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