home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
8bitfiles.net/archives
/
archives.tar
/
archives
/
commodore-users-of-norman
/
CUON_16_(11-1984).d64
/
maestro
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2019-04-13
|
11KB
|
354 lines
5 POKE52,55:POKE56,55:CLR:GOTO9000
10 GETA$:IFA$=""THEN10
15 IFA$<"[133]"ORA$>"[140]"THEN10
20 A=ASC(A$)-132:RETURN
30 HI=INT(Z/256):LO=Z-256*HI:RETURN
40 PRINT"[208]RESS ANY FUNCTION KEY TO CONTINUE":RETURN
50 PRINT"[201]NVALID [201]NPUT":GOSUB100:RETURN
60 POKE53280,Z:PRINT"[147]";:RETURN
70 GETA$:IFASC(A$+CHR$(0))<>13THEN70
75 RETURN
80 GETA$:IFA$<>"Y"ANDA$<>"N"THEN80
85 PRINTA$:RETURN
90 B=ASC(A$+CHR$(0)):RETURN
100 REM BUZZER FROM "MLX" BY CHARLES BRANNON
110 POKEVL,15:POKESD+5,45:POKESD+6,165
120 POKESD+4,33:POKESD+1,6:POKESD,5
130 FORT=1TO200:NEXT:POKESD+4,32:POKESD+1,0:POKESD,0:RETURN
150 PRINT"[147] [212][146]APE OR":PRINT" [196][146]ISK?":INPUT"";A$
160 GOSUB90:IFB<>196ANDB<>212THEN150
170 DV=1-7*(B=196):RETURN
200 REM BELL SOUND FROM "MLX" BY CHARLES BRANNON
210 POKEVL,15:POKESD+5,0:POKESD+6,247
220 POKESD+4,17:POKESD+1,40:POKESD,5
230 FORT=1TO100:NEXT:POKESD+4,16:RETURN
300 IFP2>=LMTHENP=LM-1:RETURN
305 IFP2<1THENP=1:RETURN
310 RETURN
400 PRINT"DELETE N LINES STARTING AT P"M$
405 PRINT"INSERT N LINES STARTING AT P"M$
410 PRINT"NEXT"M$:PRINT"PREVIOUS"M$
420 PRINT"ONCE AGAIN"M$:PRINT"MENU"M$"":RETURN
500 IFN(1)<1OR(N(1)>MX)ORN(2)<1ORN(2)>MXTHENGOSUB50:RETURN
505 IFN(1)+N(2)>N+1THENN(1)=N-N(2)+1
510 FORK=TB-3+4*N(2)TOTB+4*(N-N(1)+1)
515 POKEK,PEEK(K+4*N(1)):NEXT:N=N-N(1):POKETB,N
520 FORK=TB+1+4*NTOTB+4*(N+N(2)):POKEK,255:NEXT:RETURN
600 IFN(1)<1OR(N(1)>MX)ORN(2)<1ORN(2)>MXTHENGOSUB50:RETURN
605 IFN(1)+N>MXTHENGOSUB50:RETURN
610 FORK=TB+4*NTOTB+4*N(2)-3STEP-1
615 POKEK+4*N(1),PEEK(K):NEXT:N=N+N(1):POKETB,N
620 FORK=TB-3+4*N(2)TOTB+4*(N(1)+N(2)-1):POKEK,255:NEXT:RETURN
1000 Z=14:GOSUB60:PRINTTAB(15)"[205]AIN [205]ENU
1010 [153]"ASC1: VALXIT (null)ROGRAM
1030 PRINT"[198]3: [197]DIT [205]USIC [198]ILE
1040 [153]"ASC4: LENLEAR (null)USIC PEEKOX ASCILE
1050 PRINT"[198]5: [208]ERFORM [205]USIC
1060 [153]"ASC6: (null)AVE (null)USIC ASCILE TO STR$EVICE
1070 PRINT"[198]7: [210]EAD [196]IRECTORY ([196]ISK [207][206][204][217][146])
1080 [153]"ASC8: (null)OAD/(null)ERIFY (null)USIC ASCILE
1090 GOSUB40:GOSUB10:ONAGOSUB1100,3000,5000,1700,1100,2400,2600,2800
1095 IFA>1THEN1000
1100 RETURN
1700 Z=0:GOSUB60:POKE251,36:POKE183,1:POKE186,8:POKE187,251:POKE188,0:SYS15078
1710 PRINT"[208]RESS [210][197][212][213][210][206][146]"
1720 GOSUB70:RETURN
2400 Z=14:GOSUB60:PRINT"[195]LEAR [205]USIC [194]OX [198]ILE (Y/N)? ";:GOSUB80
2405 IFA$="Y"THENPRINT"[193]RE YOU SURE? ";:GOSUB80
2410 IFA$="Y"THENSYS14598
2415 RETURN
2600 Z=1:GOSUB60:PRINTTAB(12)"[211][193][214][197] TO [196]EVICE
2605 [133]"ASCILENAME";F$:[139]F$[178]""[167][142]
2610 [141]150
2615 [139]DV[178]8[167]F$[178]"@0:"[170]F$
2620 T$[178]F$:Z[178][194](53)[170]256[172][194](54)[171][195](T$):[141]30
2625 [151]SA,[195](T$):[151]SX,LO:[151]SY,HI:[158]65469
2630 [151]SA,1:[151]SX,DV:[151]SY,1:[158]65466
2635 [151]253,0:[151]254,60
2640 [133]"VALNDING";FIN
2645 Z[178][165]A(FIN[170]1):[141]30:[151]16382,LO:[151]16383,HI
2650 [151]SA,253:[151]SX,LO:[151]SY,HI:[158]14561
2655 [139]([194](SP)[175]1)[176](ST [175]191)[167]2670
2660 [141]200:[153]:[153]"STR$ONE. (null)RESS (null)VAL(null)(null)(null)(null)WAIT":[141]70:[142]
2670 [141]100:[153]"VALRROR ON (null)ATN(null)VAL. (null)RY AGAIN.":[139]DV[178]1[167]2605
2675 [159]15,8,15:[132]15,B,B$:[153]B;B$:[160]15:[137]2605
2800 Z[178]1:[141]60:[153][163]13)"(null)(null)ATNSTR$/(null)VAL(null)RIGHT$ASC(null)
2805 INPUT"[198]ILENAME";F$:IFF$=""THENRETURN
2810 GOSUB150
2820 T$=F$:Z=PEEK(53)+256*PEEK(54)-LEN(T$):GOSUB30
2825 POKESA,LEN(T$):POKESX,LO:POKESY,HI:SYS65469
2830 POKESA,1:POKESX,DV:POKESY,1:SYS65466
2835 PRINT"[147] [204][146][207][193][196] OR":PRINT" [214][146][197][210][201][198][217]?":INPUT"";A$
2840 B=ASC(A$+CHR$(0)):IFB<>204ANDB<>214THEN2835
2845 FORI=0TO5:POKE679+I,PEEK(45+I):NEXT
2850 B=ABS(B=214):POKESA,B:SYS14570
2855 POKE45,PEEK(679):POKE46,PEEK(680):POKE47,PEEK(681)
2860 POKE48,PEEK(682):POKE49,PEEK(683):POKE50,PEEK(684)
2865 IF(PEEK(SP)AND1)OR(ST AND191)THEN2900
2870 BEG=1:POKE820,3:POKE821,64
2875 POKE822,PEEK(MB-2):POKE823,PEEK(MB-1):FIN=FNP(PEEK(822)+256*PEEK(823))-1
2880 Z=PEEK(822)+256*PEEK(823)-3:GOSUB30:POKE822,LO:POKE823,HI:POKE2,PEEK(2)OR6
2885 IFPEEK(15872)=0THENPOKE2,PEEK(2)AND223:GOTO2895
2890 POKE2,PEEK(2)OR32
2895 IFPEEK(15360)=0THENPOKE2,PEEK(2)AND191:GOTO2660
2897 POKE2,PEEK(2)OR64:GOTO2660
2900 GOSUB100:PRINT"[197]RROR ON [204][207][193][196]/[214][197][210][201][198][217]. [212]RY AGAIN.":IFDV=1THEN2805
2905 OPEN15,8,15:INPUT#15,B,B$:PRINTB;B$:CLOSE15:GOTO2805
3000 Z=14:GOSUB60:PRINTTAB(11)"[205]USIC [194]OX [197]DITOR
3010 [153]"ASC1: PEEKACK TO (null)AIN (null)ENU
3020 PRINT"[198]2: [211]ET/[210]EMOVE [198]ENCE
3030 [153]"ASC3: STR$ISPLAY AND VALDIT (null)NE (null)OICE
3040 PRINT"[198]4: [211]ET [202]UMPS
3050 [153]"ASC5: STR$ISPLAY AND VALDIT (null)HREE (null)OICES
3060 PRINT"[198]6: [211]ET [207]RCHESTRATION
3070 [153]"ASC7: STR$UPLICATE (null)ASSAGE
3090 GOSUB40:GOSUB10:ONAGOSUB3100,3300,3500,3700,4200,4400,4600,3100
3095 IFA>1THEN3000
3097 A=3
3100 RETURN
3300 Z=7:GOSUB60
3305 INPUT"VOICE #, PULSE #";V,P
3310 IFV<1ORV>3ORP<1ORP>LMTHENGOSUB50:GOTO3305
3315 P1=P
3320 Z=7:GOSUB60:PRINT"[214]OICE #"V:PRINT"[208]ULSE #"TAB(10)"[206]OTE"TAB(20)"[204]ENGTH
3325 [129]I[178]1[164]10:Z[178][165]A(P):[141]30:[151]SA,LO:[151]SX,HI:[151]SY,V[171]1:[158]14180
3330 P[178][165]P([194](251)[170]256[172][194](252)):P2[178][165]P([194](253)[170]256[172][194](254)):[141]300
3332 [139]P[178]LM[170]1[176]([194](SY)[178]128)[167][153]",,":P[178]P2:[137]3340
3335 I$[178]BL$[170][196](P2):[153][201](I$,7)CM$;
3337 [153][163]10)[194](SY)CM$[163]20)[194](SA)[170]256[172][194](SX)
3340 [130]
3345 M$[178]",,":[153]"";:[141]410
3360 [133]"ON CMD";I$,N,L:I[178][198](I$):[139]I[179]48[167]3375
3365 [139]I[179]58[167]I[178][197](I$):[137]3390
3367 [139]I[179]77[167]3375
3370 I[178]I[171]76:[145]I[137]3380,3315,3382,3385
3375 [141]50:[137]3360
3380 [142]
3382 P[178]P1:[137]3320
3385 P[178]P1:Z[178][165]A(P1):[141]30:[151]251,LO:[151]252,HI:[151]SY,V[171]1:[158]14246
3387 P[178][165]P([194](251)[170]256[172][194](252)):[139]P[179]1[167]P[178]1
3388 [137]3315
3390 [129]K[178]0[164]L[171]1:[151]([165]A(I[170]K)[170]V[171]1),255:[130]
3395 [151][165]A(I)[170]V[171]1,N
3400 Z[178][165]A(I[170]L):[141]30:[151]SA,LO:[151]SX,HI:[151]SY,V[171]1:[158]14141
3405 [139][194](SY)[178]255[167][151]([165]A(I[170]L)[170]V[171]1),0
3410 I$[178]BL$[170][196](I[170]L):[153][201](I$,7)CM$"ON":[137]3360
3500 Z[178]6:[141]60
3505 [133]"PULSE #";P
3510 [139]P[179]1[176]P[177]LM[167][141]50:[137]3505
3515 P1[178]P
3520 Z[178]6:[141]60:[153]"(null)ULSE #"[163]10)"(null)OICE #1"[163]20)"(null)OICE #2";
3522 [153][163]30)"(null)OICE #3
3525 FORI=1TO10:Z=FNA(P):GOSUB30:POKESA,LO:POKESX,HI:SYS15215
3530 B=PEEK(SA)+256*PEEK(SX):P=FNP(B):P2=P-1:GOSUB300
3532 IFP=LM+1ORPEEK(679)=128THENPRINT",,,":P=P2:GOTO3540
3535 I$=BL$+STR$(P2):PRINTRIGHT$(I$,7);
3537 PRINTCM$TAB(10)PEEK(679)CM$TAB(20)PEEK(680)CM$TAB(30)PEEK(681)
3540 NEXT
3545 M$=",,,":PRINT"";:GOSUB410
3560 INPUT"[145] [157]";I$,N(0),N(1),N(2):I=ASC(I$):IFI<48THEN3575
3565 IFI<58THENI=VAL(I$):GOTO3590
3567 IFI<77THEN3575
3570 I=I-76:ONIGOTO3580,3515,3582,3585
3575 GOSUB50:GOTO3560
3580 RETURN
3582 P=P1:GOTO3520
3585 P=P1:Z=FNA(P1):GOSUB30:POKESA,LO:POKESX,HI:SYS15277
3587 P=FNP(PEEK(251)+256*PEEK(252)):IFP<1THENP=1
3588 GOTO3515
3590 FORK=0TO2:IFN(K)<0ORN(K)>255THENGOSUB50:K=2:GOTO3595
3592 POKE(FNA(I)+K),N(K)
3595 NEXT:GOTO3560
3700 Z=5:GOSUB60:PRINT"[196]UPLICATE PASSAGE WITH TRANSPOSE? ";:GOSUB80
3705 IFA$="N"THENNT=0:GOTO3720
3710 PRINT"[206]UMBER OF OCTAVES":INPUT"(-2 TO 2 INCLUSIVE)";N:N=INT(N):NT=12*N
3715 IFN<-2ORN>2THENGOSUB50:GOTO3710
3720 PRINT"[208]ASSAGE TO BE DUPLICATED:":INPUT"[214]OICE, [211]TART, [204]ENGTH";V,P,L
3725 IFV<1ORV>3ORP<1ORP+L>LMTHENGOSUB50:GOTO3720
3730 PRINT"[196]ESTINATION:":INPUT"[214]OICE, [211]TART";V1,P1
3735 IFV1<1ORV1>3ORP1<1THENGOSUB50:GOTO3730
3740 INPUT"[206]UMBER OF TIMES";N:IFN<1ORN>255THENGOSUB50:GOTO3740
3745 IFP1+N*L>LMTHENGOSUB50:GOTO3730
3750 Z=FNA(P)+V-1:GOSUB30:POKE680,LO:POKE681,HI
3755 Z=FNA(P1)+V1-1:GOSUB30:POKE253,LO:POKE254,HI
3760 Z=L:GOSUB30:POKE682,LO:POKE683,HI:POKESX,N:POKE679,(NT)AND255
3765 SYS14273:RETURN
4200 Z=13:GOSUB60:PRINT" [211][146]ET [198]ENCE
4205 [153]" (null)WAITEMOVE ASCENCE"
4210 [133]"";A$
4215 [141]90:B[178]B[171]209:[139]B[179]1[176]B[177]2[167]4200
4220 [133]"ATNT";I:[139]I[179]1[176]I[177]12287[167]4200
4225 [145]B[137]4230,4235
4230 I[178][165]A(I):[129]J[178]0[164]2:[151]I[170]J,0:[130]:[142]
4235 I[178][165]A(I):[129]J[178]0[164]2:[151]I[170]J,128:[130]:[142]
4400 Z[178]2:[141]60:TB[178]15872:MX[178]114:N[178][194](TB):[153]N"JUMP(S) PRESENT
4405 INPUT"[211]TART AT JUMP #";P:IFP<1OR(P>NANDN<>.)THENGOSUB50:GOTO4405
4410 Z=2:GOSUB60:PRINT"[202]UMP #"TAB(10)"[198]ROM"TAB(25)"[212]O"
4415 FORI=PTOP+9:FORJ=0TO3:N(J)=PEEK(TB-3+4*I+J):NEXT:IFI>MXTHEN4430
4420 PRINT" "I;:IFI>NORN(1)=255THENPRINT",,":GOTO4430
4425 PRINTCM$TAB(10)FNP(N(0)+256*N(1))CM$TAB(25)FNP(N(2)+256*N(3))
4430 NEXT
4435 M$=",,":GOSUB400
4465 INPUT"[145] [157]";I$,N(1),N(2):I=ASC(I$):IFI<48THENGOSUB50:GOTO4465
4470 IFI<58THENI=VAL(I$):GOTO4505
4475 I=I-76-13*(I=68)-9*(I=73):IFI<1THENGOTO4465
4477 ONIGOTO4485,4490,4495,4500,4520,4540
4480 GOSUB50:GOTO4465
4485 RETURN
4490 P=P+10:IFP>113THEN4500
4495 GOTO4410
4500 P=P-10:IFP<1THENP=1
4502 GOTO4410
4505 IFI<1ORI>113ORN(1)<1ORN(1)>LM ORN(2)<1ORN(2)>LMTHENGOSUB50:GOTO4465
4510 Z=FNA(N(1)):GOSUB30:POKETB+4*I-3,LO:POKETB+4*I-2,HI
4515 Z=FNA(N(2)):GOSUB30:POKETB+4*I-1,LO:POKETB+4*I,HI:IFI>NTHENN=I:POKETB,N
4517 GOTO4465
4520 GOSUB500:GOTO4410
4540 GOSUB600:GOTO4410
4600 Z=4:GOSUB60:TB=15360:N=PEEK(TB):PRINTN"INSTRUMENT CHANGE(S) PRESENT
4602 MX[178]127
4605 [133]"(null)TART AT CHANGE #";P:[139]P[179]1[176](P[177]N[175]N[179][177].)[167][141]50:[137]4605
4610 Z[178]4:[141]60:[153]"LENHANGE #"[163]10)"ATNT PULSE"[163]20)"(null)OICE #";
4612 [153][163]29)"RIGHT$NSTRUMENT
4615 FORI=PTOP+9:FORJ=0TO3:N(J)=PEEK(TB-3+4*I+J):NEXT:IFI>255THEN4630
4620 PRINT" "I;:IFI>NORN(1)=255THENPRINT",,,":GOTO4630
4625 PRINTCM$TAB(10)FNP(N(0)+256*N(1))CM$TAB(20)N(2)CM$TAB(29)N(3)
4630 NEXT
4635 M$=",,,":GOSUB400
4665 INPUT"[145] [157]";I$,N(1),N(2),N(3):I=ASC(I$):IFI<48THENGOSUB50:GOTO4665
4670 IFI<58THENI=VAL(I$):GOTO4705
4675 I=I-76-13*(I=68)-9*(I=73):IFI<1THENGOTO4665
4677 ONIGOTO4685,4690,4695,4700,4720,4740
4680 GOSUB50:GOTO4665
4685 RETURN
4690 P=P+10:IFP>255THEN4700
4695 GOTO4610
4700 P=P-10:IFP<1THENP=1
4702 GOTO4610
4705 IFI<1ORI>255ORN(1)<1ORN(1)>LMORN(2)<1ORN(2)>255THENGOSUB50:GOTO4665
4707 IFN(3)<1ORN(3)>255THENGOSUB50:GOTO4665
4710 Z=FNA(N(1)):GOSUB30:POKETB+4*I-3,LO:POKETB+4*I-2,HI
4715 POKETB+4*I-1,N(2):POKETB+4*I,N(3):IFI>NTHENN=I:POKETB,N
4717 GOTO4665
4720 GOSUB500:GOTO4610
4740 GOSUB600:GOTO4610
4750 FORK=TB+4*(N(2)+N(1)-1)TOTB+4*N(2)-4STEP-1
5000 Z=14:GOSUB60:PRINTTAB(12)"[208]ERFORMANCE [205]ENU
5010 [153]"ASC1: PEEKACK TO (null)AIN (null)ENU
5020 PRINT"[198]2: [211]ET [212]EMPERAMENT
5030 [153]"ASC3: (null)ET RIGHT$NSTRUMENTS
5040 PRINT"[198]4: [211]ET [212]RANSPOSE
5050 [153]"ASC5: (null)LAY
5070 PRINT"[198]7: [211]ET [212]EMPO
5090 [141]40:[141]10:[145]A[141]5100,5300,5500,5700,6200,6400,5100,5100
5095 [139]A[177]1[167]5000
5097 A[178]5
5100 [142]
5300 Z[178]10:[141]60:TB[178]16332:N[178][194](TB):[153]N"INSTRUMENT(S) PRESENT
5305 PRINT"[201]NST"TAB(5)"[198]ORM"TAB(10)"[193]TT"TAB(15)"[196]EC"TAB(20)"[211]US";
5310 PRINTTAB(25)"[210]EL"TAB(30)"[215]IDTH"
5315 FORI=1TO9:FORJ=0TO4:N(J)=PEEK(TB-4+5*I+J):NEXT
5320 PRINT" "I;CM$TAB(5);:IFN(2)=255THENPRINT",,,,,":GOTO5330
5322 GOSUB5450:PRINTCM$TAB(10)INT(N(3)/16)CM$TAB(15)(N(3)AND15);
5325 PRINTCM$TAB(20)INT(N(4)/16)CM$TAB(25)(N(4)AND15);
5327 IFN(2)=64THENPRINTCM$TAB(30)N(0)+256*N(1):GOTO5330
5328 PRINTCM$
5330 NEXT
5345 M$=",,,,,,":GOSUB420
5365 INPUT"[145] [157]";I$,A$,N(0),N(1),N(2),N(3),N(4):I=ASC(I$)
5367 IFI<48THENGOSUB50:GOTO5365
5370 IFI<58THENI=VAL(I$):GOTO5400
5375 I=I-76:IFI<1THENGOTO5365
5377 ONIGOTO5385,5300,5300,5300
5380 GOSUB50:GOTO5365
5385 RETURN
5400 IFI<1ORI>9THENGOSUB50:GOTO5365
5405 J=3-(A$="T")-2*(A$="S")-3*(A$="P")-4*(A$="N")
5410 IFJ=3THEN5440
5415 POKETB-2+5*I,2^J
5420 FORJ=0TO3:N(J)=N(J)AND15:NEXT:N(4)=N(4)AND4095
5425 POKETB-1+5*I,16*N(0)+N(1)
5430 POKETB+5*I,16*N(2)+N(3)
5435 Z=N(4):GOSUB30:POKETB-4+5*I,LO:POKETB-3+5*I,HI:GOTO5475
5440 FORJ=0TO4:POKETB-4+5*I+J,255:NEXT:GOTO5475
5450 J=INT(LOG(N(2)+.1)/LOG(2))-4:PRINTW$(J);:RETURN
5475 J=.:FORI=1TO9:IFPEEK(TB-2+5*I)<>255THENJ=J+1
5480 NEXT:POKETB,J:GOTO5365
5500 Z=3:GOSUB60
5502 IF(PEEK(2)AND1)=.THENGOSUB6200:GOTO5500
5504 IF(PEEK(2)AND2)=.THENPOKE2,(PEEK(2)OR2):GOTO5500
5506 IF(PEEK(2)AND16)=.THENGOSUB5700:GOTO5500
5510 PRINT" 1, [208]LAY,
5515 [153]" 2, PEEKEGINNING,"BEG
5520 [153]" 3, VALNDING,"FIN
5525 [153]" 4, (null)EMPO - (null)ULSES/TEMPO NOTE,"PN
5530 [153][163]14)"(null)EMPO NOTES/MINUTE,"NM
5532 [153][163]14)"(null)ULSE="[194](824)[170]256[172][194](825)"MILLISECONDS
5535 PRINT" 5, [202]UMPS,";:P=PEEK(2)AND32:GOSUB5590
5540 PRINT" 6, [207]RCHESTRATION,";:P=PEEK(2)AND64:GOSUB5590
5545 PRINT" 7, [212]RANSPOSE,";:P=PEEK(826):PRINTP+256*(P>24)
5550 PRINT" 8, ";:IF(FR-1/11)<1E-5THENPRINT"[197]QUAL TEMPERAMENT,":GOTO5557
5555 PRINTFR"[157]-COMMA [205]EANTONE TEMPERAMENT,
5557 [153]" 9, (null)ENU,
5558 INPUT"";A$,C$,B$:GOSUB90:IFB<49ORB>57THENPRINT"":GOTO5558
5560 ONB-48GOSUB5600,5570,5570,5700,5580,5580,6400,6200,5565
5562 IFB<>57THENGOTO5500
5565 RETURN
5570 I=VAL(B$):IFI<1ORI>LMTHENGOSUB50:RETURN
5572 Z=FNA(I):GOSUB30:IFB=50THENPOKE820,LO:POKE821,HI:BEG=I:RETURN
5575 POKE822,LO:POKE823,HI:FIN=I:RETURN
5580 K=2^(B-48):IF(PEEK(2)ANDK)=.THENPOKE2,(PEEK(2)ORK):RETURN
5585 POKE2,(PEEK(2)AND(255-K)):RETURN
5590 IFPTHENPRINT"[197]NABLED":RETURN
5595 PRINT"[196]ISABLED":RETURN
5600 PRINT"[208]LAYING":SYS14860:RETURN
5700 Z=13:GOSUB60:INPUT"[208]ULSES PER TEMPO NOTE";PN
5705 INPUT"[212]EMPO NOTES PER MINUTE";NM
5710 IFNM*PN<1ORNM>60000THENGOSUB50:GOTO5700
5715 Z=INT(60000/(NM*PN)+.5):GOSUB30:POKE824,LO:POKE825,HI
5720 POKE2,(PEEK(2)OR16):RETURN
6200 Z=13:GOSUB60:TB=14336
6205 PRINT"[197]QUAL TEMPERAMENT":PRINT"[205]EAN-TONE TEMPERAMENT"
6210 INPUTA$:GOSUB90:IFB<>197ANDB<>205THENGOSUB50:GOTO6200
6215 IFB=197THENFR=1/11:GOSUB6300:GOTO6260
6220 INPUT"[198]RACTION OF A COMMA (0.0-0.5)";FR
6225 IFFR<0ORFR>.5THENGOSUB50:GOTO6220
6230 GOSUB6300:F=1.5^(1-4*FR)*5^FR
6235 FORJ=1TO12:G=7217.9119*F^(J-7)
6240 FORK=-6TO6:N=7*J+12*K:IFN<1ORN>87THEN6250
6245 Z=INT(G*2^K):GOSUB30:POKETB+2*N,LO:POKETB+2*N+1,HI
6250 NEXTK,J:POKE2,(PEEK(2)OR1):GOTO6270
6260 FORN=1TO87:Z=INT(7217.9119*2^((N-49)/12))
6265 GOSUB30:POKETB+2*N,LO:POKETB+2*N+1,HI:NEXT:POKE2,(PEEK(2)OR1)
6270 GOSUB200:RETURN
6300 PRINT"[211]ETTING TEMPERAMENT. [208]LEASE WAIT.":RETURN
6400 Z=13:GOSUB60
6405 INPUT"[206]UMBER OF SEMITONES (-24 TO 24)";N
6410 IFABS(N)>24THENGOSUB50:GOTO6405
6415 POKE826,N-256*(N<0):RETURN
9000 REM INITIALISE
9005 SD=54272:VL=SD+24:LM=12287:MB=16384:TH=3:SA=780:SX=781:SY=782:SP=783
9010 POKE2,0:POKE53280,14:POKE53281,15:POKE646,0:PRINTCHR$(14)CHR$(8)
9015 DEFFNA(P)=MB+TH*P
9020 DEFFNP(X)=INT((X-MB)/TH)
9025 BL$=" ":CM$=",":DIMN(4),W$(3)
9030 W$(0)="T":W$(1)="S":W$(2)="P":W$="N"
9035 IFPEEK(52)<>55THEN5
9040 GOSUB200:PRINT"[147]"TAB(16)"[205][193][197][211][212][210][207]
9050 [153]""[163]11)"ATN (null)USIC (null)ROCESSOR
9060 PRINT""TAB(11)"[194]Y [199]ARY [196]. [203]OHLER
9070 [153]" (null)RESS ANY KEY TO START ":[151]2,1
9075 [161]A$:[139]A$[178]""[167]9075
9080 [139][194](14592)[178]162[175][194](14860)[178]32[167]9200
9085 [141]150
9095 [151]251,77:[151]252,76
9100 [151]SA,2:[151]SX,251:[151]SY,.:[158]65469
9105 [151]SA,1:[151]SX,DV:[151]SY,1:[158]65466
9110 [129]I[178]0[164]5:[151]679[170]I,[194](45[170]I):[130]
9115 [153]"(null)OADING MACHINE LANGUAGE. (null)LEASE WAIT."
9120 [151]SA,.:[158]65493
9125 [151]45,[194](679):[151]46,[194](680):[151]47,[194](681)
9130 [151]48,[194](682):[151]49,[194](683):[151]50,[194](684):[137]9040
9200 [143] MAIN PROGRAMME
9210 [141]2400:[141]1000:Z[178]14:[141]60:[153]"VALXITING (null)ATNVAL(null)(null)(null)(null)":[128]