3 POKE56334,PEEK(56334)AND254 4 FORX=36609TO40959:POKEX,Z:NEXT 6 POKE55,4:POKE56,109:CLR:GOTO10 9 N%(K,O)=FN H(FO):N%(K,Z)=FN L(FO):FO=FO*R:RETURN 10 POKE53280,0:POKE53281,1:POKE646,0:PRINT"[147]":GOSUB2000:GOSUB3000 14 Q=54272:R=1.0594631:FO=43.65:SK=65439:DO=53248:KY=197 15 SH=653:F1=.064068:F2=16.4015:F3=256:O=1:W=16:JI(0)=-1:JI(1)=-1:JI(2)=-1:T=2 16 Q1=Q+7:Q2=Q+14:Q3=Q+O:Q4=Q+8:Q5=Q+15:Q6=Q+4:Q7=Q+11:Q8=Q+18:E1=Q6:E2=Q7:E3=Q8 17 TH=119:FH=401:SI=1450:C$=CHR$(13):W1=W:W2=W:W3=W:SR=240 20 L1=27909:L2=29359:L3=30809:H1=32259:H2=33709:H3=35159:O1=36609:O2=38059 22 O3=39509:OV=0:HV=0:LV=0 28 DIMM%(400,2):DIMR%(400,2) 30 DIMN%(64,1):DIMCH%(64) 40 DEF FN H(FO)=INT(FO*F1) 50 DEF FN L(FO)=INT(FO*F2)-(F3*INT(FO*F1)) 55 FORI=ZTO64:READJ,K:CH%(I)=J:IFJ>ZANDJ<>THTHENGOSUB9 58 NEXT 60 FORI=QTO54295:POKEI,Z:NEXT:POKEI,15 70 POKEQ+6,SR:POKEQ+13,SR:POKEQ+20,SR 71 FORX=0TO9:READT$(X):NEXT:GOTO608 140 OV=O1+V*SI 142 FORX=ZTOK(V):POKEOV+X,Z:NEXT:K(V)=-1:JI(V)=-1:JJ=Z:KK=Z:C=Z:K(3)=Z:RETURN 150 GETA$:IFA$<>""THEN150 160 PRINT"[147]GET READY TO PLAY ...";:FORX=OTOFH:NEXT:PRINT"GO!" 170 POKEQ+5,AD:POKEQ+6,SR 295 POKEQ6,W+O:U=49152 300 SYSSK:IFPEEK(SH)=OTHEN360 305 IFU=DOTHEN363 310 X=PEEK(KY):POKEQ,N%(X,Z):POKEQ3,N%(X,1):POKEU,N%(X,Z):POKEU+1,N%(X,O) 320 U=U+T:GOTO300 360 IFSTHEN365 362 RETURN 363 IFSTHEN365 364 GOTO295 365 PRINT"[147]HERE'S WHAT YOU JUST PLAYED:" 372 FORI=49152TOU-TSTEPT 373 SYSSK:IFPEEK(SH)=TTHEN381 375 POKEQ,PEEK(I):POKEQ3,PEEK(I+O) 380 FORJ=OTO35:NEXT:NEXT 381 POKEQ6,W:RETURN 386 PRINT"NOTES: "; 390 SYSSK:IFPEEK(SH)=OTHENRETURN 400 GETA$:IFA$=""THEN390 401 IFPEEK(SH)=TTHEN411 402 X=PEEK(KY):PRINTCHR$(CH%(X)); 405 POKEQ,N%(X,Z):POKEQ3,N%(X,O):POKEQ6,W+1:FORI=OTOF3:NEXT:POKEQ6,W 410 M%(JJ,V)=X:JJ=JJ+O:IFJJCTHENJJ=JJ-O:PRINT"[157] [157]"; 412 GOTO390 420 IFJI(V)"Z"THEN422 430 PRINTA$;:R%(KK,V)=ASC(A$)-64:KK=KK+O:IFKK<=JI(V)THEN422 431 GOTO435 432 IFKK>CTHENKK=KK-O:PRINT"[157] [157]"; 434 GOTO422 435 K=K(V)+O:HV=H1+V*SI:LV=L1+V*SI:OV=O1+V*SI 436 FORJ=CTOJI(V) 437 FORX=OTOR%(J,V)-O:POKEHV+K,N%(M%(J,V),O):POKELV+K,N%(M%(J,V),Z) 438 POKEOV+K,O:K=K+O:IFK=SITHENRETURN 439 NEXT 440 IFR%(J,V)<=OTHEN450 444 POKEHV+K,N%(M%(J,V),O):POKELV+K,N%(M%(J,V),Z):POKEOV+K,Z:K=K+O 450 NEXT:RETURN 470 FORX=OTO999:NEXT:GOSUB2000 520 FORI=ZTOK(S-O) 525 SYSSK:IFPEEK(SH)=OTHEN600 530 POKEQ,PEEK(L1+I):POKEQ1,PEEK(L2+I):POKEQ2,PEEK(L3+I) 540 POKEQ3,PEEK(H1+I):POKEQ4,PEEK(H2+I):POKEQ5,PEEK(H3+I) 550 POKEE1,PEEK(O1+I)+W1:POKEE2,PEEK(O2+I)+W2:POKEE3,PEEK(O3+I)+W3 560 FORX=ZTOE:NEXT:NEXT 600 POKEQ6,Z:POKEQ7,Z:POKEQ8,Z:FORX=ZTOF3:NEXT:RETURN 608 GETA$:IFA$<>""THEN608 609 PRINT"[147]":POKE53280,6:POKE53281,1:PRINTTAB(5)"*** S E L E C T I O N S ***" 610 PRINTTAB(10)"0-MUSICAL KEYBOARD" 615 PRINTTAB(10)"1-PLAY IT AGAIN!" 620 PRINTTAB(10)"2-COMPOSE A TUNE" 625 PRINTTAB(10)"3-LOOK AT MUSIC" 630 PRINTTAB(10)"4-MUSIC EDITOR" 632 PRINTTAB(10)"5-SELECT INSTRUMENT" 635 PRINTTAB(10)"6-LISTEN TO MUSIC" 640 PRINTTAB(10)"7-SAVE MUSIC ON DISK" 642 PRINTTAB(10)"8-GET MUSIC FROM DISK" 644 PRINTTAB(10)"9-LOOK AT DISK INDEX" 645 PRINTTAB(10)"X-QUIT PROGRAM" 646 PRINTTAB(10)"YOUR CHOICE [0-X]?"; 650 SYSSK:GETA$:IFA$=""THEN650 652 IFA$="X"THEN1350 654 S=VAL(A$):IFS=0ANDA$<>"0"THEN650 660 ON-(S=0)-2*(S=1)-3*(S=2)-4*(S=3)-5*(S=4)GOSUB150,150,676,710,800 665 ON-(S=5)-2*(S=6)-3*(S=7)-4*(S=8)-5*(S=9)GOSUB1150,900,1000,1050,1100 670 GOTO608 676 PRINT"[147] HOW MANY VOICES (1,2,3) ?"; 678 SYSSK:IFPEEK(SH)THENRETURN 679 GETA$:IFA$=""THEN678 681 B=VAL(A$):IFB>3ORB=ZTHEN678 682 FORV=ZTOT:GOSUB140:NEXT 685 FORV=ZTOB-O:PRINT"[147] INPUT VOICE"V+O 686 JJ=Z:KK=Z 688 GOSUB386:JI(V)=JJ-O:GOSUB420:K(V)=K-O:S=V+O:GOSUB920:NEXT:RETURN 710 PRINT"[147] WHICH VOICE (1,2,3) ?"; 712 SYSSK:IFPEEK(SH)=OTHENRETURN 715 GETA$:IFA$=""THEN712 718 V1=VAL(A$):IFV1>3ORV1=ZTHEN712 719 V=V1-O:IFJI(V)>=ZTHEN721 720 PRINT"[147] NO MUSIC ASSIGNED TO VOICE";V1:FORX=OTO2000:NEXT:RETURN 721 PRINT"[147]VOICE"V1:PRINT"NOTES: ";:FORJ=ZTOJI(V) 724 PRINTCHR$(CH%(M%(J,V)));:NEXT:PRINT:PRINT 735 PRINT" RHYTHM: ";:FORJ=ZTOJI(V):PRINTCHR$(R%(J,V)+64);:NEXT 739 SYSSK:IFPEEK(SH)=OTHENRETURN 740 GOTO739 800 PRINT"[147]EDIT WHICH VOICE (1,2,3) ?"; 803 SYSSK:IFPEEK(SH)=1THENRETURN 805 GETA$:IFA$=""THEN803 806 V1=VAL(A$):IFV1>3ORV1=ZTHEN805 808 V=V1-O:IFJI(V)>=ZTHEN810 809 PRINT"[147] NO MUSIC ASSIGNED TO VOICE";V1:FORX=OTO2000:NEXT:GOTO823 810 PRINT"[147]THE NOTES CURRENTLY ARE:":PRINT" NOTES: "; 816 FORJ=ZTOJI(V):PRINTCHR$(CH%(M%(J,V)));:NEXT:PRINT 817 PRINT" IF OK TYPE ":PRINT" 'B' TO START FROM BEGINNING" 818 PRINT" 'A' TO CONTINUE ADDING NOTES" 819 SYSSK:GETA$:IFA$=""THEN819 820 IFA$="A"THEN850 821 IFA$=" "THENTJI=JI(V):GOTO826 822 IFA$<>"B"THEN817 823 PRINT" INPUT THE NOTES AS THEY SHOULD BE." 824 PRINT:GOSUB140:GOSUB386:TJI=JJ-O 825 IFJI(V)JI(V)THEN840 832 PRINT:PRINT" IF OK TYPE ":PRINT" OTHERWISE 'R'" 833 GETA$:IFA$<>""THEN833 834 SYSSK:GETA$:IFA$=""THEN834 835 IFA$=" "THENK(V)=-1:C=Z:KK=Z:GOSUB435:K(V)=K-O:RETURN 840 JI(V)=TJI:PRINT:PRINT" INPUT THE RHYTHM AS IT SHOULD BE." 842 C=Z:KK=Z:K(V)=-1:GOSUB420 845 K(V)=K-O:RETURN 850 JJ=JI(V)+O:KK=JJ:C=JJ:GOSUB386:JI(V)=JJ-O 860 IFJJ>KKTHENGOSUB420:K(V)=K-O 870 S=V+O:GOSUB920:RETURN 900 PRINT"[147] TYPE NUMBER OF VOICE TO BE PLAYED "; 910 PRINT:PRINT" OR TYPE <4> FOR ALL VOICES AT ONCE " 912 SYSSK:IFPEEK(SH)THENRETURN 914 GETA$:IFA$=""THEN912 916 S=VAL(A$):IFS>4ORS=ZTHEN912 918 PRINTS:IFS<4ANDJI(S-O)=-1THENV1=S:GOTO720 920 E1=-1*(S=4ORS=O)*(Q6-820)+820:E2=-1*(S=4ORS=T)*(Q7-820)+820 924 E3=-1*(S=4ORS=3)*(Q8-820)+820:K(3)=K(Z):IFK(O)>K(3)THENK(3)=K(O) 928 IFK(2)>K(3)THENK(3)=K(2) 935 PRINT"[147] INDICATE TEMPO (0-9) " 938 SYSSK 940 GETA$:IFA$=""THEN938 945 E=VAL(A$)*10:IFE=ZANDA$<>"0"THEN935 965 GOSUB470:RETURN 1000 POKE56334,PEEK(56334)OR1:A$="":B$="" 1005 PRINT"[147] INSERT FORMATTED DISKETTE" 1010 INPUT" NAME YOUR PIECE";A$:IFA$=""THEN1042 1016 INPUT" RECOMMENDED TEMPO";B$:IFB$=""THEN1042 1018 E=VAL(B$):IFE=ZANDB$<>"0"THEN1016 1020 OPEN15,8,15,"I0":OPEN5,8,5,"@0:"+A$+",S,W" 1030 PRINT#5,E;C$;JI(Z);C$;JI(O);C$;JI(T) 1036 FORV=ZTOT:FORX=ZTOJI(V):PRINT#5,M%(X,V);C$;R%(X,V):NEXT:NEXT 1040 CLOSE5:CLOSE15 1041 PRINT" "A$" SAVED ON DISK" 1042 POKE56334,PEEK(56334)AND254:FORX=ZTO999:NEXT:RETURN 1050 FORV=ZTOT:GOSUB140:NEXT 1052 POKE56334,PEEK(56334)ORO:A$="":INPUT"[147] NAME OF PIECE";A$ 1054 OPEN15,8,15,"I0":OPEN5,8,5,"0:"+A$+",S,R":INPUT#5,E,JI(Z),JI(O),JI(T) 1060 FORV=ZTOT:FORX=ZTOJI(V):INPUT#5,M%(X,V),R%(X,V):NEXT:NEXT 1062 POKE56334,PEEK(56334)AND254 1065 INPUT#15,E$ 1066 IFVAL(E$)>ZTHENPRINT" "A$" NOT ON DISK":FORX=ZTO999:NEXT:GOTO 1074 1067 PRINT" "A$" LOADED FROM DISK":C=Z:PRINT" RECOMMENDED TEMPO:";E 1068 FORV=ZTOT:K(V)=-1 1070 PRINT" COMPILING VOICE"V+1:IFJI(V)>-1THENGOSUB435:K(V)=K-O 1073 NEXT 1074 CLOSE5:CLOSE15:RETURN 1100 POKE56334,PEEK(56334)OR1:PRINT"[147] THIS DISK CONTAINS:":PRINT 1110 OPEN15,8,15,"I0":OPEN5,8,5,"$" 1114 FORJ=1TO254:GET#5,A$:NEXT 1117 FORX=OTO8:GET#5,D$,A$,A$:IFSTTHEN1145 1130 B$="":FORJ=OTO16:GET#5,A$:IFA$<>CHR$(160)THENB$=B$+A$ 1133 NEXT:IFASC(D$+CHR$(Z))=129THENPRINT,B$ 1140 FORJ=1TO11:GET#5,A$:NEXT:IFX<8THENGET#5,A$,A$ 1142 NEXT:GOTO1117 1145 CLOSE5:CLOSE15:A$="":INPUT" TO RETURN";A$ 1146 POKE56334,PEEK(56334)AND254:RETURN 1150 PRINT"[147]":FORX=QTOQ+23:POKEX,Z:NEXT 1151 FORX=ZTOT:IFJI(X)"0"THEN1161 1164 PRINTT$(S):FORJ=ZTOFH:NEXT 1166 ON-(S=0)-2*(S=1)-3*(S=2)-4*(S=3)-5*(S=4)GOTO1200,1210,1220,1230,1240 1167 ON-(S=5)-2*(S=6)-3*(S=7)-4*(S=8)-5*(S=9)GOTO1250,1260,1270,1280,1290 1200 W=16:AD=144:SR=243:GOTO1300 1210 W=16:AD=0:SR=240:GOTO1300 1220 W=16:AD=88:SR=195:GOTO1300 1230 W=32:AD=88:SR=95:GOTO1300 1240 W=32:AD=0:SR=240:GOTO1300 1250 W=128:AD=88:SR=195:GOTO1300 1260 W=64:AD=14:SR=86:HP=6:LP=2:GOTO1300 1270 W=64:AD=9:SR=90:HP=8:LP=8:GOTO1300 1280 W=64:AD=9:SR=90:HP=0:LP=255:GOTO1300 1290 W=16:AD=9:SR=80 1300 IFX=ZTHENW1=W 1310 IFX=OTHENW2=W 1311 IFX=TTHENW3=W 1312 J=Q+T+7*X:POKEJ,LP:POKEJ+O,HP:POKEJ+3,AD:POKEJ+4,SR 1313 NEXT:S=10:RETURN 1350 POKE56334,PEEK(56334)OR1:END 1400 DATA 97,12,120,23,62,20,35,31,36,28,37,39,38,36,60,47,51,44,87,55 1410 DATA 65,7,52,2,90,3,83,63,69,10,0,0,53,13,82,18,68,21,54,26,67,29 1500 DATA 70,34,84,37,88,42,55,45,89,50,71,53,56,1,66,6,72,62,85,9,86,14 1510 DATA 57,17,73,22,74,25,48,30,77,33,75,38,79,41,78,46,43,49,80,54,76,5,45,57 1600 DATA 46,56,58,59,64,8,44,11,92,16,42,19,59,24,115,27,0,0,61,32 1610 DATA 94,35,47,40,49,43,95,48,0,0,50,51,119,0,0,0,81,0,126,4,0,0 1700 DATAACCORDIAN,ORGAN,CLARINET,SYNTHESIZER,KAZOO,DRUM,GUITAR,XYLOPHONE 1710 DATABANJO,PIANO 2000 PRINT "[147] [213][201]" 2001 PRINT " [199][203]" 2002 PRINT " [163][163][163][163][163][163][163][163][206][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163] 2003 [153] " TAB(TAB(TAB(TAB(TAB(TAB(TAB((null)CHR$TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB( 2004 PRINT " [163][163][163][163][163][163][167][213][199][201][163][163][163][163][163]M A E S T R O[163][163][163][163][163]" 2005 PRINT " [163][163][163][163][163][163][167][202][199][170][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163]" 2006 PRINT " [163][163][163][163][163][163][163][205][199][206][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163]" 2007 PRINT " [199]" 2008 RETURN 3000 PRINT" 3001 [153]" THENUSRUSRUSR(null) 3002 PRINT"[156] [209] ADVANCED [167] [183][208] 3003 [153]" (null). (null) 3004 PRINT" [209] MUSIC 3005 [153]" 3006 PRINT"[149] [209] EDITOR [167] [167] [167] 3007 [153]" THEN THEN THEN 3008 PRINT" [209] [209] [209] 3009 [153]:[153][163]8)"BY WILLIAM T. EVELETH AND" 3010 [153][163]12)"THE AHOY! STAFF" 3011 [142]