1 REM TWELVE DAYS OF CHRISTMAS 10 MODE7 20 PROCSTART 30 PROCMUSIC 40 VDU28,0,24,39,0,23;11,255,0;0;0; 50 END 60 DEFPROCSTART 70 PROCINIT 80 PROCDATA 90 PROCFRONTPAGE 100 VDU23;11,0,0;0;0; 110 ENDPROC 120 DEFPROCINIT 130 DIM A$(10),S$(2),P$(11) 140 Z%=4:WIDTH0 150 FORE%=6TO8:REPEATUNTILADVAL(-E%)=15:NEXT 160 ENDPROC 170 DEFPROCDATA 180 FORE%=0TO10:READS$:A$(E%)=S$+","+CHR$10+CHR$13:NEXT 190 A$(3)="Five"+CHR$131+"good beer"+CHR$135+"guides,"+CHR$10+CHR$13 200 FORE%=0TO11:READP$(E%):NEXT 210 T%=139 220 ENDPROC 230 DEFPROCFRONTPAGE 240 FORI%=0TO1:PRINTTAB(0,I%);:VDU129,157,131,141:PRINTTAB(8,I%);"Twelve Days of Christmas";:NEXT:VDU28,2,24,39,2 250 REPEAT:CLS:INPUT'"Enter volume (1=soft, 15=loud)"V%:UNTILV%<16 AND V%>0:CLS 260 ENDPROC 270 DEFPROCMUSIC 280 FORD%=1TO12 290 IF D%=12 PROCTWELVE:GOTO330 300 PROCFIRST:IF D%=1 THEN GOTO350 310 IF D%<5 PROCPLAY("@-","7-","$-"):FORE%=D%TO2STEP-1:PROCUNDER5:PRINTA$(E%-2);:NEXT:PROCPLAY("@-",";-","7-"):GOTO350 320 PROCPLAY("@-","7-","$-") 330 IF D%>5 THEN FORE%=D%TO6STEP-1:PROCOVER5:NEXT 340 PROCFIVE 350 IF D%=12 PROCPLAY("@-C-H-H-H!","4-<-@-@-@!","+-(-$-$-$!"):PRINT'TAB(8)"< MERRY CHRISTMAS !>"'ELSE PROCLAST:IF (D%+1)MOD3=0 PROCPLAY("<-<-","6-6-",",-,-"):T%=T%-4 ELSE PROCPLAY("<-<-","4-4-","$-$-") 360 NEXT 370 ENDPROC 380 DEFPROCTWELVE 390 Z%=8:PROCPLAY(" -7!7!7-7-->-@-@-A-A->->-","9-;-9-7-8-:-8-6-",")-+-)-(-)-+-,-.-"):Z%=Z%*3:PROCPLAY("@-@-@-@-@-@-@-@-","7-;-9-<-6-6-6-6-","0!0-0---&-&-&-&-") 420 PROCPLAY(" -"," -"," -"):Z%=2 430 ENDPROC 440 DEFPROCFIRST 450 PROCPLAY("7!7!7-7-"," - -4-4-"," - -$-$-") 460 PRINT''"On the"CHR$(129+D%MOD6)P$(D%-1)CHR$135"day of Christmas"'" my true love gave to me," 470 PROCPLAY("-@-A->-@-@-@-"," - -4-4- -;-9-9- -5-7-7-7-"," - -$-$- - -$-$- -+-$-$-$-") 480 ENDPROC 490 DEFPROCLAST 500 PROCPLAY("A-C-C-E-",";-<-;-9-","&-(-(-)-") 510 IF D%-1 PRINT"and "; 520 PRINT"a half pint of lemon shandy." 530 PROCPLAY("A-@-<->->-<-<-<-<-",">-<-7-7-5-4-4-4-4-",")-+-+-+-+-$-$-$-$-") 540 ENDPROC 550 DEFPROCUNDER5 560 PROCPLAY("C-C->-@-A-A-","<-<->-<-;-;-","(-(-)-)-+-+-") 570 ENDPROC 580 DEFPROCFIVE 590 IF D%=12 THEN Z%=4 600 PROCPLAY("C-C-C-C-E-",";-;-;-;-9-","(-(-(-(-&-)"):PRINTA$(3);:PROCPLAY("B-B-B-C-C-C-C-C-C-C-C","6->-<-;-9-;-<->-<-;-9-","&-&-&-+-&-+---/---+-)-") 610 IF D%=12 THEN Z%=6 620 PROCPLAY("C-A-@->-<-<-",";-;-7-;-9-9-","(-(-(-(-----"):PRINTA$(2);:PROCPLAY("A-A-9-9-<-<-"," - -5-7-7-"," - -&-&-(-(-"):PRINTA$(1);:IF D%=12 GOTO640 ELSE PROCPLAY(">-<;-9-7-","6-4-2-0-/-","*-*-&-&-+!"):PRINTA$(0);:PROCPLAY("7-@-","2-7-","+-+-") 630 ENDPROC 640 PROCPLAY(">-<-;-9-7-","2-7-7-0-/-","&-'-(-*-+!"):PRINTA$(0);:PROCPLAY("-@-A-C-C-E-A-"," -7-9-:!:-9-<-","+-+-)-(-(-)-&-") 650 PRINT"and a half pint of lemon shandy." 660 PROCPLAY("@-<->->-<-<-<-<--@-A-","<-9-9-:-;-","(-)-)-*-+-"):PRINTA$(E%-2);:PROCPLAY(">-",";!","+-") 700 ENDPROC 710 DEFPROCPLAY(S$(0),S$(1),S$(2)) 720 LOCALE%,F%,N%,P%,Q%,N%,V 730 FORE%=1TOLENS$(0)STEP2 740 FORF%=0TO2 750 P%=ASC(MID$(S$(F%),E%)):Q%=ASC(MID$(S$(F%),E%+1)) 760 N%=4*P%-T%:V=V%*(P%<>32) 770 IF Q%=ASC"|" SOUND1+F%,0,0,1:GOTO790 780 IF Q%=ASC"-" SOUND1+F%,V,N%,Z% ELSE SOUND1+F%,V,N%,Z%-1:SOUND1+F%,0,0,1 790 NEXT, 800 ENDPROC 810 DATATwo pints of stout,Three rum and blacks,Four gin and tonics,!,Six pints of cider,Seven port and lemons 820 DATAEight double scotches,Nine swigs of brandy,Ten pints of lager,Eleven trays of vodka,Twelve crates of Guinness 830 DATAfirst,second,third,fourth,fifth,sixth,seventh,eighth,ninth,tenth,eleventh,twelfth