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 >
Commodore BASIC  |  2019-04-13  |  11KB  |  354 lines

  1. 5 POKE52,55:POKE56,55:CLR:GOTO9000
  2. 10 GETA$:IFA$=""THEN10
  3. 15 IFA$<"[133]"ORA$>"[140]"THEN10
  4. 20 A=ASC(A$)-132:RETURN
  5. 30 HI=INT(Z/256):LO=Z-256*HI:RETURN
  6. 40 PRINT"[208]RESS ANY FUNCTION KEY TO CONTINUE":RETURN
  7. 50 PRINT"[201]NVALID [201]NPUT":GOSUB100:RETURN
  8. 60 POKE53280,Z:PRINT"[147]";:RETURN
  9. 70 GETA$:IFASC(A$+CHR$(0))<>13THEN70
  10. 75 RETURN
  11. 80 GETA$:IFA$<>"Y"ANDA$<>"N"THEN80
  12. 85 PRINTA$:RETURN
  13. 90 B=ASC(A$+CHR$(0)):RETURN
  14. 100 REM BUZZER FROM "MLX" BY CHARLES BRANNON
  15. 110 POKEVL,15:POKESD+5,45:POKESD+6,165
  16. 120 POKESD+4,33:POKESD+1,6:POKESD,5
  17. 130 FORT=1TO200:NEXT:POKESD+4,32:POKESD+1,0:POKESD,0:RETURN
  18. 150 PRINT"[147]  [212][146]APE OR":PRINT"  [196][146]ISK?":INPUT"";A$
  19. 160 GOSUB90:IFB<>196ANDB<>212THEN150
  20. 170 DV=1-7*(B=196):RETURN
  21. 200 REM BELL SOUND FROM "MLX" BY CHARLES BRANNON
  22. 210 POKEVL,15:POKESD+5,0:POKESD+6,247
  23. 220 POKESD+4,17:POKESD+1,40:POKESD,5
  24. 230 FORT=1TO100:NEXT:POKESD+4,16:RETURN
  25. 300 IFP2>=LMTHENP=LM-1:RETURN
  26. 305 IFP2<1THENP=1:RETURN
  27. 310 RETURN
  28. 400 PRINT"DELETE N LINES STARTING AT P"M$
  29. 405 PRINT"INSERT N LINES STARTING AT P"M$
  30. 410 PRINT"NEXT"M$:PRINT"PREVIOUS"M$
  31. 420 PRINT"ONCE AGAIN"M$:PRINT"MENU"M$"":RETURN
  32. 500 IFN(1)<1OR(N(1)>MX)ORN(2)<1ORN(2)>MXTHENGOSUB50:RETURN
  33. 505 IFN(1)+N(2)>N+1THENN(1)=N-N(2)+1
  34. 510 FORK=TB-3+4*N(2)TOTB+4*(N-N(1)+1)
  35. 515 POKEK,PEEK(K+4*N(1)):NEXT:N=N-N(1):POKETB,N
  36. 520 FORK=TB+1+4*NTOTB+4*(N+N(2)):POKEK,255:NEXT:RETURN
  37. 600 IFN(1)<1OR(N(1)>MX)ORN(2)<1ORN(2)>MXTHENGOSUB50:RETURN
  38. 605 IFN(1)+N>MXTHENGOSUB50:RETURN
  39. 610 FORK=TB+4*NTOTB+4*N(2)-3STEP-1
  40. 615 POKEK+4*N(1),PEEK(K):NEXT:N=N+N(1):POKETB,N
  41. 620 FORK=TB-3+4*N(2)TOTB+4*(N(1)+N(2)-1):POKEK,255:NEXT:RETURN
  42. 1000 Z=14:GOSUB60:PRINTTAB(15)"[205]AIN [205]ENU
  43. 1010 [153]"ASC1:  VALXIT (null)ROGRAM
  44. 1030 PRINT"[198]3:  [197]DIT [205]USIC [198]ILE
  45. 1040 [153]"ASC4:  LENLEAR (null)USIC PEEKOX ASCILE
  46. 1050 PRINT"[198]5:  [208]ERFORM [205]USIC
  47. 1060 [153]"ASC6:  (null)AVE (null)USIC ASCILE TO STR$EVICE
  48. 1070 PRINT"[198]7:  [210]EAD [196]IRECTORY ([196]ISK [207][206][204][217][146])
  49. 1080 [153]"ASC8:  (null)OAD/(null)ERIFY (null)USIC ASCILE
  50. 1090 GOSUB40:GOSUB10:ONAGOSUB1100,3000,5000,1700,1100,2400,2600,2800
  51. 1095 IFA>1THEN1000
  52. 1100 RETURN
  53. 1700 Z=0:GOSUB60:POKE251,36:POKE183,1:POKE186,8:POKE187,251:POKE188,0:SYS15078
  54. 1710 PRINT"[208]RESS [210][197][212][213][210][206][146]"
  55. 1720 GOSUB70:RETURN
  56. 2400 Z=14:GOSUB60:PRINT"[195]LEAR [205]USIC [194]OX [198]ILE (Y/N)? ";:GOSUB80
  57. 2405 IFA$="Y"THENPRINT"[193]RE YOU SURE? ";:GOSUB80
  58. 2410 IFA$="Y"THENSYS14598
  59. 2415 RETURN
  60. 2600 Z=1:GOSUB60:PRINTTAB(12)"[211][193][214][197] TO [196]EVICE
  61. 2605 [133]"ASCILENAME";F$:[139]F$[178]""[167][142]
  62. 2610 [141]150
  63. 2615 [139]DV[178]8[167]F$[178]"@0:"[170]F$
  64. 2620 T$[178]F$:Z[178][194](53)[170]256[172][194](54)[171][195](T$):[141]30
  65. 2625 [151]SA,[195](T$):[151]SX,LO:[151]SY,HI:[158]65469
  66. 2630 [151]SA,1:[151]SX,DV:[151]SY,1:[158]65466
  67. 2635 [151]253,0:[151]254,60
  68. 2640 [133]"VALNDING";FIN
  69. 2645 Z[178][165]A(FIN[170]1):[141]30:[151]16382,LO:[151]16383,HI
  70. 2650 [151]SA,253:[151]SX,LO:[151]SY,HI:[158]14561
  71. 2655 [139]([194](SP)[175]1)[176](ST [175]191)[167]2670
  72. 2660 [141]200:[153]:[153]"STR$ONE.  (null)RESS (null)VAL(null)(null)(null)(null)WAIT":[141]70:[142]
  73. 2670 [141]100:[153]"VALRROR ON (null)ATN(null)VAL.  (null)RY AGAIN.":[139]DV[178]1[167]2605
  74. 2675 [159]15,8,15:[132]15,B,B$:[153]B;B$:[160]15:[137]2605
  75. 2800 Z[178]1:[141]60:[153][163]13)"(null)(null)ATNSTR$/(null)VAL(null)RIGHT$ASC(null)
  76. 2805 INPUT"[198]ILENAME";F$:IFF$=""THENRETURN
  77. 2810 GOSUB150
  78. 2820 T$=F$:Z=PEEK(53)+256*PEEK(54)-LEN(T$):GOSUB30
  79. 2825 POKESA,LEN(T$):POKESX,LO:POKESY,HI:SYS65469
  80. 2830 POKESA,1:POKESX,DV:POKESY,1:SYS65466
  81. 2835 PRINT"[147]  [204][146][207][193][196] OR":PRINT"  [214][146][197][210][201][198][217]?":INPUT"";A$
  82. 2840 B=ASC(A$+CHR$(0)):IFB<>204ANDB<>214THEN2835
  83. 2845 FORI=0TO5:POKE679+I,PEEK(45+I):NEXT
  84. 2850 B=ABS(B=214):POKESA,B:SYS14570
  85. 2855 POKE45,PEEK(679):POKE46,PEEK(680):POKE47,PEEK(681)
  86. 2860 POKE48,PEEK(682):POKE49,PEEK(683):POKE50,PEEK(684)
  87. 2865 IF(PEEK(SP)AND1)OR(ST AND191)THEN2900
  88. 2870 BEG=1:POKE820,3:POKE821,64
  89. 2875 POKE822,PEEK(MB-2):POKE823,PEEK(MB-1):FIN=FNP(PEEK(822)+256*PEEK(823))-1
  90. 2880 Z=PEEK(822)+256*PEEK(823)-3:GOSUB30:POKE822,LO:POKE823,HI:POKE2,PEEK(2)OR6
  91. 2885 IFPEEK(15872)=0THENPOKE2,PEEK(2)AND223:GOTO2895
  92. 2890 POKE2,PEEK(2)OR32
  93. 2895 IFPEEK(15360)=0THENPOKE2,PEEK(2)AND191:GOTO2660
  94. 2897 POKE2,PEEK(2)OR64:GOTO2660
  95. 2900 GOSUB100:PRINT"[197]RROR ON [204][207][193][196]/[214][197][210][201][198][217].  [212]RY AGAIN.":IFDV=1THEN2805
  96. 2905 OPEN15,8,15:INPUT#15,B,B$:PRINTB;B$:CLOSE15:GOTO2805
  97. 3000 Z=14:GOSUB60:PRINTTAB(11)"[205]USIC [194]OX [197]DITOR
  98. 3010 [153]"ASC1:  PEEKACK TO (null)AIN (null)ENU
  99. 3020 PRINT"[198]2:  [211]ET/[210]EMOVE [198]ENCE
  100. 3030 [153]"ASC3:  STR$ISPLAY AND VALDIT (null)NE (null)OICE
  101. 3040 PRINT"[198]4:  [211]ET [202]UMPS
  102. 3050 [153]"ASC5:  STR$ISPLAY AND VALDIT (null)HREE (null)OICES
  103. 3060 PRINT"[198]6:  [211]ET [207]RCHESTRATION
  104. 3070 [153]"ASC7:  STR$UPLICATE (null)ASSAGE
  105. 3090 GOSUB40:GOSUB10:ONAGOSUB3100,3300,3500,3700,4200,4400,4600,3100
  106. 3095 IFA>1THEN3000
  107. 3097 A=3
  108. 3100 RETURN
  109. 3300 Z=7:GOSUB60
  110. 3305 INPUT"VOICE #, PULSE #";V,P
  111. 3310 IFV<1ORV>3ORP<1ORP>LMTHENGOSUB50:GOTO3305
  112. 3315 P1=P
  113. 3320 Z=7:GOSUB60:PRINT"[214]OICE #"V:PRINT"[208]ULSE #"TAB(10)"[206]OTE"TAB(20)"[204]ENGTH
  114. 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
  115. 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
  116. 3332 [139]P[178]LM[170]1[176]([194](SY)[178]128)[167][153]",,":P[178]P2:[137]3340
  117. 3335 I$[178]BL$[170][196](P2):[153][201](I$,7)CM$;
  118. 3337 [153][163]10)[194](SY)CM$[163]20)[194](SA)[170]256[172][194](SX)
  119. 3340 [130]
  120. 3345 M$[178]",,":[153]"";:[141]410
  121. 3360 [133]"ON CMD";I$,N,L:I[178][198](I$):[139]I[179]48[167]3375
  122. 3365 [139]I[179]58[167]I[178][197](I$):[137]3390
  123. 3367 [139]I[179]77[167]3375
  124. 3370 I[178]I[171]76:[145]I[137]3380,3315,3382,3385
  125. 3375 [141]50:[137]3360
  126. 3380 [142]
  127. 3382 P[178]P1:[137]3320
  128. 3385 P[178]P1:Z[178][165]A(P1):[141]30:[151]251,LO:[151]252,HI:[151]SY,V[171]1:[158]14246
  129. 3387 P[178][165]P([194](251)[170]256[172][194](252)):[139]P[179]1[167]P[178]1
  130. 3388 [137]3315
  131. 3390 [129]K[178]0[164]L[171]1:[151]([165]A(I[170]K)[170]V[171]1),255:[130]
  132. 3395 [151][165]A(I)[170]V[171]1,N
  133. 3400 Z[178][165]A(I[170]L):[141]30:[151]SA,LO:[151]SX,HI:[151]SY,V[171]1:[158]14141
  134. 3405 [139][194](SY)[178]255[167][151]([165]A(I[170]L)[170]V[171]1),0
  135. 3410 I$[178]BL$[170][196](I[170]L):[153][201](I$,7)CM$"ON":[137]3360
  136. 3500 Z[178]6:[141]60
  137. 3505 [133]"PULSE #";P
  138. 3510 [139]P[179]1[176]P[177]LM[167][141]50:[137]3505
  139. 3515 P1[178]P
  140. 3520 Z[178]6:[141]60:[153]"(null)ULSE #"[163]10)"(null)OICE #1"[163]20)"(null)OICE #2";
  141. 3522 [153][163]30)"(null)OICE #3
  142. 3525 FORI=1TO10:Z=FNA(P):GOSUB30:POKESA,LO:POKESX,HI:SYS15215
  143. 3530 B=PEEK(SA)+256*PEEK(SX):P=FNP(B):P2=P-1:GOSUB300
  144. 3532 IFP=LM+1ORPEEK(679)=128THENPRINT",,,":P=P2:GOTO3540
  145. 3535 I$=BL$+STR$(P2):PRINTRIGHT$(I$,7);
  146. 3537 PRINTCM$TAB(10)PEEK(679)CM$TAB(20)PEEK(680)CM$TAB(30)PEEK(681)
  147. 3540 NEXT
  148. 3545 M$=",,,":PRINT"";:GOSUB410
  149. 3560 INPUT"[145] [157]";I$,N(0),N(1),N(2):I=ASC(I$):IFI<48THEN3575
  150. 3565 IFI<58THENI=VAL(I$):GOTO3590
  151. 3567 IFI<77THEN3575
  152. 3570 I=I-76:ONIGOTO3580,3515,3582,3585
  153. 3575 GOSUB50:GOTO3560
  154. 3580 RETURN
  155. 3582 P=P1:GOTO3520
  156. 3585 P=P1:Z=FNA(P1):GOSUB30:POKESA,LO:POKESX,HI:SYS15277
  157. 3587 P=FNP(PEEK(251)+256*PEEK(252)):IFP<1THENP=1
  158. 3588 GOTO3515
  159. 3590 FORK=0TO2:IFN(K)<0ORN(K)>255THENGOSUB50:K=2:GOTO3595
  160. 3592 POKE(FNA(I)+K),N(K)
  161. 3595 NEXT:GOTO3560
  162. 3700 Z=5:GOSUB60:PRINT"[196]UPLICATE PASSAGE WITH TRANSPOSE? ";:GOSUB80
  163. 3705 IFA$="N"THENNT=0:GOTO3720
  164. 3710 PRINT"[206]UMBER OF OCTAVES":INPUT"(-2 TO 2 INCLUSIVE)";N:N=INT(N):NT=12*N
  165. 3715 IFN<-2ORN>2THENGOSUB50:GOTO3710
  166. 3720 PRINT"[208]ASSAGE TO BE DUPLICATED:":INPUT"[214]OICE, [211]TART, [204]ENGTH";V,P,L
  167. 3725 IFV<1ORV>3ORP<1ORP+L>LMTHENGOSUB50:GOTO3720
  168. 3730 PRINT"[196]ESTINATION:":INPUT"[214]OICE, [211]TART";V1,P1
  169. 3735 IFV1<1ORV1>3ORP1<1THENGOSUB50:GOTO3730
  170. 3740 INPUT"[206]UMBER OF TIMES";N:IFN<1ORN>255THENGOSUB50:GOTO3740
  171. 3745 IFP1+N*L>LMTHENGOSUB50:GOTO3730
  172. 3750 Z=FNA(P)+V-1:GOSUB30:POKE680,LO:POKE681,HI
  173. 3755 Z=FNA(P1)+V1-1:GOSUB30:POKE253,LO:POKE254,HI
  174. 3760 Z=L:GOSUB30:POKE682,LO:POKE683,HI:POKESX,N:POKE679,(NT)AND255
  175. 3765 SYS14273:RETURN
  176. 4200 Z=13:GOSUB60:PRINT"  [211][146]ET [198]ENCE
  177. 4205 [153]"  (null)WAITEMOVE ASCENCE"
  178. 4210 [133]"";A$
  179. 4215 [141]90:B[178]B[171]209:[139]B[179]1[176]B[177]2[167]4200
  180. 4220 [133]"ATNT";I:[139]I[179]1[176]I[177]12287[167]4200
  181. 4225 [145]B[137]4230,4235
  182. 4230 I[178][165]A(I):[129]J[178]0[164]2:[151]I[170]J,0:[130]:[142]
  183. 4235 I[178][165]A(I):[129]J[178]0[164]2:[151]I[170]J,128:[130]:[142]
  184. 4400 Z[178]2:[141]60:TB[178]15872:MX[178]114:N[178][194](TB):[153]N"JUMP(S) PRESENT
  185. 4405 INPUT"[211]TART AT JUMP #";P:IFP<1OR(P>NANDN<>.)THENGOSUB50:GOTO4405
  186. 4410 Z=2:GOSUB60:PRINT"[202]UMP #"TAB(10)"[198]ROM"TAB(25)"[212]O"
  187. 4415 FORI=PTOP+9:FORJ=0TO3:N(J)=PEEK(TB-3+4*I+J):NEXT:IFI>MXTHEN4430
  188. 4420 PRINT" "I;:IFI>NORN(1)=255THENPRINT",,":GOTO4430
  189. 4425 PRINTCM$TAB(10)FNP(N(0)+256*N(1))CM$TAB(25)FNP(N(2)+256*N(3))
  190. 4430 NEXT
  191. 4435 M$=",,":GOSUB400
  192. 4465 INPUT"[145] [157]";I$,N(1),N(2):I=ASC(I$):IFI<48THENGOSUB50:GOTO4465
  193. 4470 IFI<58THENI=VAL(I$):GOTO4505
  194. 4475 I=I-76-13*(I=68)-9*(I=73):IFI<1THENGOTO4465
  195. 4477 ONIGOTO4485,4490,4495,4500,4520,4540
  196. 4480 GOSUB50:GOTO4465
  197. 4485 RETURN
  198. 4490 P=P+10:IFP>113THEN4500
  199. 4495 GOTO4410
  200. 4500 P=P-10:IFP<1THENP=1
  201. 4502 GOTO4410
  202. 4505 IFI<1ORI>113ORN(1)<1ORN(1)>LM ORN(2)<1ORN(2)>LMTHENGOSUB50:GOTO4465
  203. 4510 Z=FNA(N(1)):GOSUB30:POKETB+4*I-3,LO:POKETB+4*I-2,HI
  204. 4515 Z=FNA(N(2)):GOSUB30:POKETB+4*I-1,LO:POKETB+4*I,HI:IFI>NTHENN=I:POKETB,N
  205. 4517 GOTO4465
  206. 4520 GOSUB500:GOTO4410
  207. 4540 GOSUB600:GOTO4410
  208. 4600 Z=4:GOSUB60:TB=15360:N=PEEK(TB):PRINTN"INSTRUMENT CHANGE(S) PRESENT
  209. 4602 MX[178]127
  210. 4605 [133]"(null)TART AT CHANGE #";P:[139]P[179]1[176](P[177]N[175]N[179][177].)[167][141]50:[137]4605
  211. 4610 Z[178]4:[141]60:[153]"LENHANGE #"[163]10)"ATNT PULSE"[163]20)"(null)OICE #";
  212. 4612 [153][163]29)"RIGHT$NSTRUMENT
  213. 4615 FORI=PTOP+9:FORJ=0TO3:N(J)=PEEK(TB-3+4*I+J):NEXT:IFI>255THEN4630
  214. 4620 PRINT" "I;:IFI>NORN(1)=255THENPRINT",,,":GOTO4630
  215. 4625 PRINTCM$TAB(10)FNP(N(0)+256*N(1))CM$TAB(20)N(2)CM$TAB(29)N(3)
  216. 4630 NEXT
  217. 4635 M$=",,,":GOSUB400
  218. 4665 INPUT"[145] [157]";I$,N(1),N(2),N(3):I=ASC(I$):IFI<48THENGOSUB50:GOTO4665
  219. 4670 IFI<58THENI=VAL(I$):GOTO4705
  220. 4675 I=I-76-13*(I=68)-9*(I=73):IFI<1THENGOTO4665
  221. 4677 ONIGOTO4685,4690,4695,4700,4720,4740
  222. 4680 GOSUB50:GOTO4665
  223. 4685 RETURN
  224. 4690 P=P+10:IFP>255THEN4700
  225. 4695 GOTO4610
  226. 4700 P=P-10:IFP<1THENP=1
  227. 4702 GOTO4610
  228. 4705 IFI<1ORI>255ORN(1)<1ORN(1)>LMORN(2)<1ORN(2)>255THENGOSUB50:GOTO4665
  229. 4707 IFN(3)<1ORN(3)>255THENGOSUB50:GOTO4665
  230. 4710 Z=FNA(N(1)):GOSUB30:POKETB+4*I-3,LO:POKETB+4*I-2,HI
  231. 4715 POKETB+4*I-1,N(2):POKETB+4*I,N(3):IFI>NTHENN=I:POKETB,N
  232. 4717 GOTO4665
  233. 4720 GOSUB500:GOTO4610
  234. 4740 GOSUB600:GOTO4610
  235. 4750 FORK=TB+4*(N(2)+N(1)-1)TOTB+4*N(2)-4STEP-1
  236. 5000 Z=14:GOSUB60:PRINTTAB(12)"[208]ERFORMANCE [205]ENU
  237. 5010 [153]"ASC1:  PEEKACK TO (null)AIN (null)ENU
  238. 5020 PRINT"[198]2:  [211]ET [212]EMPERAMENT
  239. 5030 [153]"ASC3:  (null)ET RIGHT$NSTRUMENTS
  240. 5040 PRINT"[198]4:  [211]ET [212]RANSPOSE
  241. 5050 [153]"ASC5:  (null)LAY
  242. 5070 PRINT"[198]7:  [211]ET [212]EMPO
  243. 5090 [141]40:[141]10:[145]A[141]5100,5300,5500,5700,6200,6400,5100,5100
  244. 5095 [139]A[177]1[167]5000
  245. 5097 A[178]5
  246. 5100 [142]
  247. 5300 Z[178]10:[141]60:TB[178]16332:N[178][194](TB):[153]N"INSTRUMENT(S) PRESENT
  248. 5305 PRINT"[201]NST"TAB(5)"[198]ORM"TAB(10)"[193]TT"TAB(15)"[196]EC"TAB(20)"[211]US";
  249. 5310 PRINTTAB(25)"[210]EL"TAB(30)"[215]IDTH"
  250. 5315 FORI=1TO9:FORJ=0TO4:N(J)=PEEK(TB-4+5*I+J):NEXT
  251. 5320 PRINT" "I;CM$TAB(5);:IFN(2)=255THENPRINT",,,,,":GOTO5330
  252. 5322 GOSUB5450:PRINTCM$TAB(10)INT(N(3)/16)CM$TAB(15)(N(3)AND15);
  253. 5325 PRINTCM$TAB(20)INT(N(4)/16)CM$TAB(25)(N(4)AND15);
  254. 5327 IFN(2)=64THENPRINTCM$TAB(30)N(0)+256*N(1):GOTO5330
  255. 5328 PRINTCM$
  256. 5330 NEXT
  257. 5345 M$=",,,,,,":GOSUB420
  258. 5365 INPUT"[145] [157]";I$,A$,N(0),N(1),N(2),N(3),N(4):I=ASC(I$)
  259. 5367 IFI<48THENGOSUB50:GOTO5365
  260. 5370 IFI<58THENI=VAL(I$):GOTO5400
  261. 5375 I=I-76:IFI<1THENGOTO5365
  262. 5377 ONIGOTO5385,5300,5300,5300
  263. 5380 GOSUB50:GOTO5365
  264. 5385 RETURN
  265. 5400 IFI<1ORI>9THENGOSUB50:GOTO5365
  266. 5405 J=3-(A$="T")-2*(A$="S")-3*(A$="P")-4*(A$="N")
  267. 5410 IFJ=3THEN5440
  268. 5415 POKETB-2+5*I,2^J
  269. 5420 FORJ=0TO3:N(J)=N(J)AND15:NEXT:N(4)=N(4)AND4095
  270. 5425 POKETB-1+5*I,16*N(0)+N(1)
  271. 5430 POKETB+5*I,16*N(2)+N(3)
  272. 5435 Z=N(4):GOSUB30:POKETB-4+5*I,LO:POKETB-3+5*I,HI:GOTO5475
  273. 5440 FORJ=0TO4:POKETB-4+5*I+J,255:NEXT:GOTO5475
  274. 5450 J=INT(LOG(N(2)+.1)/LOG(2))-4:PRINTW$(J);:RETURN
  275. 5475 J=.:FORI=1TO9:IFPEEK(TB-2+5*I)<>255THENJ=J+1
  276. 5480 NEXT:POKETB,J:GOTO5365
  277. 5500 Z=3:GOSUB60
  278. 5502 IF(PEEK(2)AND1)=.THENGOSUB6200:GOTO5500
  279. 5504 IF(PEEK(2)AND2)=.THENPOKE2,(PEEK(2)OR2):GOTO5500
  280. 5506 IF(PEEK(2)AND16)=.THENGOSUB5700:GOTO5500
  281. 5510 PRINT"  1,  [208]LAY,
  282. 5515 [153]"  2,  PEEKEGINNING,"BEG
  283. 5520 [153]"  3,  VALNDING,"FIN
  284. 5525 [153]"  4,  (null)EMPO - (null)ULSES/TEMPO NOTE,"PN
  285. 5530 [153][163]14)"(null)EMPO NOTES/MINUTE,"NM
  286. 5532 [153][163]14)"(null)ULSE="[194](824)[170]256[172][194](825)"MILLISECONDS
  287. 5535 PRINT"  5,  [202]UMPS,";:P=PEEK(2)AND32:GOSUB5590
  288. 5540 PRINT"  6,  [207]RCHESTRATION,";:P=PEEK(2)AND64:GOSUB5590
  289. 5545 PRINT"  7,  [212]RANSPOSE,";:P=PEEK(826):PRINTP+256*(P>24)
  290. 5550 PRINT"  8,  ";:IF(FR-1/11)<1E-5THENPRINT"[197]QUAL TEMPERAMENT,":GOTO5557
  291. 5555 PRINTFR"[157]-COMMA [205]EANTONE TEMPERAMENT,
  292. 5557 [153]"  9,  (null)ENU,
  293. 5558 INPUT"";A$,C$,B$:GOSUB90:IFB<49ORB>57THENPRINT"":GOTO5558
  294. 5560 ONB-48GOSUB5600,5570,5570,5700,5580,5580,6400,6200,5565
  295. 5562 IFB<>57THENGOTO5500
  296. 5565 RETURN
  297. 5570 I=VAL(B$):IFI<1ORI>LMTHENGOSUB50:RETURN
  298. 5572 Z=FNA(I):GOSUB30:IFB=50THENPOKE820,LO:POKE821,HI:BEG=I:RETURN
  299. 5575 POKE822,LO:POKE823,HI:FIN=I:RETURN
  300. 5580 K=2^(B-48):IF(PEEK(2)ANDK)=.THENPOKE2,(PEEK(2)ORK):RETURN
  301. 5585 POKE2,(PEEK(2)AND(255-K)):RETURN
  302. 5590 IFPTHENPRINT"[197]NABLED":RETURN
  303. 5595 PRINT"[196]ISABLED":RETURN
  304. 5600 PRINT"[208]LAYING":SYS14860:RETURN
  305. 5700 Z=13:GOSUB60:INPUT"[208]ULSES PER TEMPO NOTE";PN
  306. 5705 INPUT"[212]EMPO NOTES PER MINUTE";NM
  307. 5710 IFNM*PN<1ORNM>60000THENGOSUB50:GOTO5700
  308. 5715 Z=INT(60000/(NM*PN)+.5):GOSUB30:POKE824,LO:POKE825,HI
  309. 5720 POKE2,(PEEK(2)OR16):RETURN
  310. 6200 Z=13:GOSUB60:TB=14336
  311. 6205 PRINT"[197]QUAL TEMPERAMENT":PRINT"[205]EAN-TONE TEMPERAMENT"
  312. 6210 INPUTA$:GOSUB90:IFB<>197ANDB<>205THENGOSUB50:GOTO6200
  313. 6215 IFB=197THENFR=1/11:GOSUB6300:GOTO6260
  314. 6220 INPUT"[198]RACTION OF A COMMA (0.0-0.5)";FR
  315. 6225 IFFR<0ORFR>.5THENGOSUB50:GOTO6220
  316. 6230 GOSUB6300:F=1.5^(1-4*FR)*5^FR
  317. 6235 FORJ=1TO12:G=7217.9119*F^(J-7)
  318. 6240 FORK=-6TO6:N=7*J+12*K:IFN<1ORN>87THEN6250
  319. 6245 Z=INT(G*2^K):GOSUB30:POKETB+2*N,LO:POKETB+2*N+1,HI
  320. 6250 NEXTK,J:POKE2,(PEEK(2)OR1):GOTO6270
  321. 6260 FORN=1TO87:Z=INT(7217.9119*2^((N-49)/12))
  322. 6265 GOSUB30:POKETB+2*N,LO:POKETB+2*N+1,HI:NEXT:POKE2,(PEEK(2)OR1)
  323. 6270 GOSUB200:RETURN
  324. 6300 PRINT"[211]ETTING TEMPERAMENT.  [208]LEASE WAIT.":RETURN
  325. 6400 Z=13:GOSUB60
  326. 6405 INPUT"[206]UMBER OF SEMITONES (-24 TO 24)";N
  327. 6410 IFABS(N)>24THENGOSUB50:GOTO6405
  328. 6415 POKE826,N-256*(N<0):RETURN
  329. 9000 REM INITIALISE
  330. 9005 SD=54272:VL=SD+24:LM=12287:MB=16384:TH=3:SA=780:SX=781:SY=782:SP=783
  331. 9010 POKE2,0:POKE53280,14:POKE53281,15:POKE646,0:PRINTCHR$(14)CHR$(8)
  332. 9015 DEFFNA(P)=MB+TH*P
  333. 9020 DEFFNP(X)=INT((X-MB)/TH)
  334. 9025 BL$="       ":CM$=",":DIMN(4),W$(3)
  335. 9030 W$(0)="T":W$(1)="S":W$(2)="P":W$="N"
  336. 9035 IFPEEK(52)<>55THEN5
  337. 9040 GOSUB200:PRINT"[147]"TAB(16)"[205][193][197][211][212][210][207]
  338. 9050 [153]""[163]11)"ATN (null)USIC (null)ROCESSOR
  339. 9060 PRINT""TAB(11)"[194]Y [199]ARY [196]. [203]OHLER
  340. 9070 [153]"         (null)RESS ANY KEY TO START         ":[151]2,1
  341. 9075 [161]A$:[139]A$[178]""[167]9075
  342. 9080 [139][194](14592)[178]162[175][194](14860)[178]32[167]9200
  343. 9085 [141]150
  344. 9095 [151]251,77:[151]252,76
  345. 9100 [151]SA,2:[151]SX,251:[151]SY,.:[158]65469
  346. 9105 [151]SA,1:[151]SX,DV:[151]SY,1:[158]65466
  347. 9110 [129]I[178]0[164]5:[151]679[170]I,[194](45[170]I):[130]
  348. 9115 [153]"(null)OADING MACHINE LANGUAGE. (null)LEASE WAIT."
  349. 9120 [151]SA,.:[158]65493
  350. 9125 [151]45,[194](679):[151]46,[194](680):[151]47,[194](681)
  351. 9130 [151]48,[194](682):[151]49,[194](683):[151]50,[194](684):[137]9040
  352. 9200 [143] MAIN PROGRAMME
  353. 9210 [141]2400:[141]1000:Z[178]14:[141]60:[153]"VALXITING (null)ATNVAL(null)(null)(null)(null)":[128]
  354.