10 REM-------------------------------- 11 REM RAHMENPROGRAMM ZUM TEST VON 12 REM M O D U L A T O R 13 REM 14 REM THOMAS KRAETZIG FEBRUAR 1985 15 REM-------------------------------- 20 REM SID F PW PORT WF A D S R 21 DATA 110, 50, 32, 64, 1,10, 8,10 22 DATA 220, 50, 48, 64, 1,10, 8,10 23 DATA 440, 50, 64, 32, 1,10, 8,10 24 : 25 REM FILTER F RES FILT MOD LAUT 26 DATA 64, 12, 7, 1, 15 27 : 28 REM LFO F P A C F P A C 29 DATA 5000,128, 6, 6,7000,128, 6, 6 30 DATA 800,128,128, 6,9000,128, 8, 6 31 DATA 6000,128,103,30,1000,128,196, 6 32 DATA 15,128,128, 0 33 : 34 REM EG A D S R EGA EGC 35 DATA 20, 15, 32, 20, 128, 06 36 : 37 REM KSV 38 DATA 00000001,F1, 00000010,F2 39 DATA 00001000,F3, 00000100,PW1 40 DATA 00000000,PW2, 00000000,PW3 41 DATA 10000000,FILT, 00000000,LAUT 245 : 250 B=12*4096 :REM BASIS FUER PARAMETER 255 SI=13*4096+1024 :REM SID-BASIS 260 : 265 REM DATAS EINLESEN, SID- UND 270 REM MODULATOR-REGISTER BESETZEN 275 : 280 FOR SS=0 TO 2 :REM 3 STIMMEN 285 : 290 : REM FREQUENZ 295 : READ F:F=INT(F*17.0284+0.5) 300 : HI=INT(F/256):LO=F-256*HI 305 : POKE B+7*SS,LO:POKE B+1+7*SS,HI 310 : BF(SS)=F :REM BASISFREQUENZ 315 : 320 : REM PULSWEITE 325 : READ P:P=INT(P*40.95+0.5) 330 : HI=INT(P/256):LO=P-256*HI 335 : POKE B+2+7*SS,LO 340 : POKE B+3+7*SS,HI 345 : 350 : REM PORTA 355 : READ P:POKE B+4+7*SS,P 360 : 365 : REM WELLENFORM 370 : READ WF(SS):WF(SS)=WF(SS) AND 254 375 : 380 : REM A D S R - HUELLKURVE 385 : READA:READD:POKESI+7*SS+5,16*A+D 390 : READS:READR:POKESI+7*SS+6,16*S+R 395 : 400 NEXT SS 405 : 410 REM FILTER, LAUTSTAERKE 415 READ F:HI=INT(F/8):LO=F-8*HI 420 POKE B+21,LO:POKE B+22,HI 425 READ RES:READ FILT 430 POKE SI+23,16*RES+FILT 435 READ MOD:READ LAUT 440 POKE B+23,16*MOD+LAUT 445 : 450 REM LFO 455 FOR I=0 TO 6 460 : READ F:HI=INT(F/256):LO=F-256*HI 465 : POKE B+32+5*I,LO 470 : POKE B+33+5*I,HI 475 : READ P:POKE B+34+5*I,P 480 : READ A:POKE B+35+5*I,A 485 : READ C:POKE B+36+5*I,C 490 NEXT I 495 : 500 REM EG (A D S R) 505 FOR I=0 TO 4:READ X:POKE B+67+I,X 510 NEXT I 515 READ EC :REM STEUERBYTE MERKEN 520 EC=EC AND 254:REM GATE=0 525 POKE B+72,EC 530 : 535 REM KSV 540 FOR I=0 TO 7 545 : READ A$:A=0 550 : FOR J=1 TO 8 555 : A=2*A 560 : IF MID$(A$,J,1)="1"THEN A=A+1 565 : NEXT J 570 : POKE B+24+I,A 575 : READ A$ :REM UEBERLESEN 580 NEXT I 585 : 590 REM EINGABEZEICHEN FUER NOTEN 595 N$="Q2W3ER5T6Y7UI9O0P@-*\^" 600 : 610 REM RELATIVE TONHOEHEN 615 DIM TH(21) 620 FOR I=0 TO 21 625 : TH(I)=2^(I/12) 630 NEXT I 635 : 640 SYS B+1024+9 :REM MODULATOR STARTEN 642 : 645 REM ZEITMESSUNG AUSWERTEN 650 T=PEEK(B+113)+256*PEEK(B+114) 655 T1=INT(T/100)/10 660 T2=INT(1000*T/16421)/10 665 PRINT"ZEITBEDARF:";T1;"MS"; 670 PRINT" AUSLASTUNG:";T2;"%[145][145][145]"; 671 : 672 REM TASTENEINGABEN AUSWERTEN 673 REM Q-^ TOENE (WEISSE TASTEN) 674 REM 2-\ TOENE (SCHWARZE TASTEN) 675 REM SPACE GATE AUS 676 REM F1,2,3 STIMME 1,2,3 677 : 680 S=0 685 GET A$:IF A$="" THEN 685 690 IF A$<>" " THEN 715 695 POKE B+72,EC :REM EG GATE AUS 700 POKE SI+4+7*S,WF(S):REM GATE AUS 705 GOTO 685 710 REM N$ NACH EINGABE DURCHSUCHEN 715 I=0 720 I=I+1:IF I>=22 THEN 770 725 IF A$<>MID$(N$,I,1) THEN 720 730 F=BF(S)*TH(I-1) 735 HI=INT(F/256):LO=F-256*HI 740 POKE SI+4+7*S,WF(S):REM GATE AUS 745 POKE B+72,EC :REM EG GATE AUS 750 POKE B+7*S,LO :POKE B+1+7*S,HI 755 POKE SI+4+7*S,WF(S)+1 760 POKE B+72,EC+1:REM EG GATE AN 765 GOTO 685 770 IF A$="[133]" THEN S=0 :REM F1,STIMME 1 775 IF A$="[134]" THEN S=1 :REM F3,STIMME 2 780 IF A$="[135]" THEN S=2 :REM F5,STIMME 3 785 GOTO 685