home *** CD-ROM | disk | FTP | other *** search
/ Power Pack / Power_Pack_3_1992_Alfons_Mittelmeyer_de.d64 / composer (.txt) < prev    next >
Commodore BASIC  |  2023-02-26  |  14KB  |  467 lines

  1. 1 rem **********************************
  2. 2 rem *                                *
  3. 3 rem *    composer v3.0 + hcopy       *
  4. 4 rem *                                *
  5. 5 rem *     von dieter borchert        *
  6. 6 rem *                                *
  7. 7 rem *                                *
  8. 8 rem *                                *
  9. 9 rem **********************************
  10. 10 :
  11. 12 dimno(7,12),ln(7,12),hn(7,12),da$(20),va(3,2),wx$(12,6)
  12. 13 print"[147]arbeiten sie mit"
  13. 14 print"datasette (1) oder floppy disk (8) ?"
  14. 15 getgn$:ifgn$=""then15
  15. 16 gn=val(gn$):ifgn<>1andgn<>8then15
  16. 17 print"[147]bitte einen moment geduld !"
  17. 18 fori=0to12:readda$(i):next:fori=1to8:readd$(i):next
  18. 19 fori=1to3:readva(i,1),va(i,2):next
  19. 20 fori=1to11:forj=1to6:readwx$(i,j):next:next:printchr$(8);chr$(142);
  20. 21 poke808,225:rem erst eingeben,wenn programm einwandfrei laeuft
  21. 22 n1=0:vo=1:da=1:ok=4:z=211:s=214:cs=58732
  22. 23 rem frequenzen definieren
  23. 24 fr=262.89
  24. 25 ift=8then70
  25. 26 no(t,nr)=fr*1.0594631:hn(t,nr)=int(no(t,nr)/256)
  26. 30 ln(t,nr)=int(no(t,nr)-hn(t,nr)*256)-1
  27. 45 fr=no(t,nr):nr=nr+1
  28. 50 ifnr=12thent=t+1:nr=0
  29. 60 goto25
  30. 70 fori=0to7:no(i,12)=0:next
  31. 75 ifpeek(750)=134then100
  32. 76 sys(57812)"comp mc",gn,1:poke780,0:sys65493:poke750,134
  33. 77 fori=49152to49199:pokei,0:next:goto100
  34. 80 geta$:ifa$=""then80
  35. 81 return
  36. 90 print"(taste druecken)":gosub80:return
  37. 100 poke53280,1:poke53281,1:print"[147]";:poke198,0:rem hauptmenue
  38. 101 print"[147]----------------------------------------";:
  39. 102 print"composer v 3.0 / (c) 1986 by d.borchert ";
  40. 103 print"----------------------------------------";:
  41. 110 print""spc(12)"hauptmenue"
  42. 120 printspc(10)"=============="
  43. 130 print""tab(8)"1) laden
  44. 140 [153]""[163]8)"2) speichern
  45. 150 print""tab(8)"3) parameter setzen
  46. 160 [153]""[163]8)"4) melodie spielen
  47. 170 print""tab(8)"5) melodie stoppen
  48. 180 [153]""[163]8)"6) loeschen / teile kopieren"
  49. 190 [153]""[163]8)"7) neue melodie eingeben
  50. 200 print""tab(8)"8) noten zeigen / floppybefehl
  51. 205 [153]""[163]8)"9) drucken / ende";
  52. 210 [141]80
  53. 220 a[178][197](a$):[145]a[141]1000,2000,3000,4000,5000,6000,7000,8000,9000
  54. 230 [137]100
  55. 500 [143] kleines window ausgeben
  56. 505 [151]z,17:[151]s,17:[158]cs:[153]"(NULL)tantantantantantantantantantantantantantantantantantantantanright$";
  57. 510 [129]i[178]1[164]6:[151]z,17:[151]s,17[170]i:[158]cs:[153]"                     ";:[130]
  58. 520 [129]i[178]1[164]6:[151]z,17:[151]s,17[170]i:[158]cs:[153]"(NULL)";wx$(cc,i);
  59. 530 [151]z,38:[151]s,17[170]i:[158]cs:[153]"(NULL)";:[130]
  60. 535 [151]z,17:[151]s,24:[158]cs:[153]"mid$tantantantantantantantantantantantantantantantantantantantan(NULL)wait";
  61. 540 [142]
  62. 600 [153]"ononon";:[142]:[143] cursor in position bringen
  63. 700 [143] window loeschen
  64. 705 [129]i[178]0[164]7:[151]z,8:[151]s,i[170]17:[158]cs:[153]"                               ";
  65. 710 [130]:[142]
  66. 800 [143] grosses window ausgeben
  67. 802 [151]z,8:[151]s,17:[158]cs:[153]"(NULL)tantantantantantantantantantantantantantantantantantantantantantantantantantantantantanright$";
  68. 804 [129]i[178]1[164]6:
  69. 805 [151]z,8:[151]s,17[170]i:[158]cs:[153]"                               ";:[130]
  70. 810 [129]i[178]1[164]6:[151]z,8:[151]s,17[170]i:[158]cs:[153]"(NULL)";wx$(cc,i);
  71. 820 [151]z,38:[151]s,17[170]i:[158]cs:[153]"(NULL)";:[130]
  72. 830 [151]z,8:[151]s,24:[158]cs:[153]"mid$tantantantantantantantantantantantantantantantantantantantantantantantantantantantantan(NULL)wait";
  73. 840 [142]
  74. 999 :
  75. 1000 [143] laden von musikstuecken
  76. 1001 :
  77. 1002 mp[178]1:[153]"loadfilename eingeben :"[166]25);
  78. 1005 [151]54296,0:[133]fi$:cc[178]9:[141]500
  79. 1006 [139]fi$[178]"$"[167][141]8070:[137]1000
  80. 1010 [158](57812)""[170]fi$[170]"",gn,1:[151]780,0:[158]65493:[141]700
  81. 1012 [139]gn[178]1[167]1030
  82. 1020 [159]15,8,15:[132]15,c,c$:[139]c$[179][177]"ok"[167][160]15:[137]10000n w[176]den.
  83. 1030 [160]15:[153]"die melodie koennen sie im"
  84. 1040 [153]"hauptmenue starten."
  85. 1050 [141]90
  86. 1060 [142]
  87. 1999 :
  88. 2000 [143] speichern von musikstuecken
  89. 2001 :
  90. 2002 mp[178]2:[153]"loadfilenamen eingeben:"[166]25);:[133]fi$
  91. 2003 [151]54296,0:[151]56334,0:[151]788,49:[151]789,234:[151]56334,1
  92. 2004 [139]gn[178]1[167]2010           "
  93. 2005 cc=8:gosub800:fi$=fi$+",p,w":open1,gn,1,fi$
  94. 2006 open15,8,15:input#15,c,c$:ifc$<>"ok"then2015
  95. 2007 print#1,chr$(0);chr$(192);
  96. 2008 fori=49152to53000:print#1,chr$(peek(i));:next
  97. 2009 close1:goto2015
  98. 2010 sys(57812)""+fi$+"",1:poke193,0:poke194,192:poke174,1:poke175,206:sys62957
  99. 2011 gosub700:goto2020
  100. 2015 gosub700:ifc$<>"ok"thenclose15:goto10000
  101. 2020 close15:print:print"die melodie wurde gespeichert."
  102. 2030 gosub90
  103. 2040 return
  104. 2999 :
  105. 3000 rem parameter setzen
  106. 3001 :
  107. 3005 print"[147]"tab(12)"parameter
  108. 3010 [153][163]11)"============"
  109. 3020 [153]"1) wellenform
  110. 3030 print"2) pulsform
  111. 3040 [153]"3) anschlag / abschwellen
  112. 3050 print"4) halten / ausklingen
  113. 3060 [153]"5) lautstarke / geschwindigkeit
  114. 3061 print"6) parameter initialisieren
  115. 3062 [153]"7) melodie stoppen
  116. 3063 print"8) anzahl der 1/8-noten
  117. 3064 [153]"9) zurueck ins hauptmenue
  118. 3070 gosub80
  119. 3080 onval(a$)goto3100,3200,3300,3400,3500,3600,3700,3800,3900
  120. 3090 goto3000
  121. 3100 fori=2to19:poke781,i:sys59903:next:cc=1:gosub500
  122. 3105 print"wellenform"
  123. 3106 print"stimme 1: ";peek(49161)
  124. 3107 print"stimme 2: ";peek(49162)
  125. 3108 print"stimme 3: ";peek(49163)
  126. 3110 print"wellenform eingeben:";
  127. 3120 inputwa$:wa=val(wa$):ifwa<17orwa>129thengosub600:goto3110
  128. 3130 print"welche stimme :";:gosub80:a1=val(a$):printa$
  129. 3140 ifa1=1thenpoke49161,wa:poke49170,wa-1:gosub90:goto3000
  130. 3150 ifa1=2thenpoke49162,wa:poke49171,wa-1:gosub90:goto3000
  131. 3160 ifa1=3thenpoke49163,wa:poke49172,wa-1:gosub90:goto3000
  132. 3170 gosub600:goto3130
  133. 3200 fori=2to19:poke781,i:sys59903:next:cc=2:gosub500
  134. 3210 print"pulsform :"
  135. 3220 print"stimme 1: ";peek(49155),peek(49156)
  136. 3230 print"stimme 2: ";peek(49157),peek(49158)
  137. 3240 print"stimme 3: ";peek(49159),peek(49160)
  138. 3250 print"neue pulsform (h-byte) :";:inputp1$:p1=val(p1$)
  139. 3255 ifp1<0orp1>15thengosub600:goto3250
  140. 3260 print"neue pulsform (l-byte) :";:inputp2$:p2=val(p2$)
  141. 3265 ifp2<0orp2>15thenprint:gosub600:goto3260
  142. 3270 print"welche stimme :";:gosub80:a1=val(a$):printa$
  143. 3271 ifa1=1thenpoke49155,p1:poke49156,p2:gosub90:goto3000
  144. 3272 ifa1=2thenpoke49157,p1:poke49158,p2:gosub90:goto3000
  145. 3273 ifa1=3thenpoke49159,p1:poke49160,p2:gosub90:goto3000
  146. 3274 gosub600:goto3270
  147. 3300 fori=2to19:poke781,i:sys59903:next:cc=3:gosub500
  148. 3310 print"anschlag / abschwellen"
  149. 3320 f(1)=int(peek(49164)/16):f(2)=peek(49164)-f(1)*16
  150. 3321 f(3)=int(peek(49166)/16):f(4)=peek(49166)-f(3)*16
  151. 3322 f(5)=int(peek(49168)/16):f(6)=peek(49168)-f(5)*16
  152. 3330 print"stimme 1 :";f(1),f(2)
  153. 3340 print"stimme 2 :";f(3),f(4)
  154. 3350 print"stimme 3 :";f(5),f(6)
  155. 3360 print"anschlag:";:inputa1$:a1=val(a1$)
  156. 3365 ifa1<0ora1>15thengosub600:goto3360
  157. 3370 print"abschwellen:";:inputa2$:a2=val(a2$)
  158. 3375 ifa2<0ora2>15thengosub600:goto3370
  159. 3376 a3=a1*16+a2
  160. 3380 print"welche stimme :";:gosub80:a4=val(a$):printa$
  161. 3381 ifa4=1thenpoke49164,a3:gosub90:goto3000
  162. 3382 ifa4=2thenpoke49166,a3:gosub90:goto3000
  163. 3383 ifa4=3thenpoke49168,a3:gosub90:goto3000
  164. 3390 gosub600:goto3380
  165. 3400 fori=2to19:poke781,i:sys59903:next:cc=4:gosub500
  166. 3410 print"halten / ausklingen"
  167. 3420 f(1)=int(peek(49165)/16):f(2)=peek(49165)-f(1)*16
  168. 3421 f(3)=int(peek(49167)/16):f(4)=peek(49167)-f(3)*16
  169. 3422 f(5)=int(peek(49169)/16):f(6)=peek(49169)-f(5)*16
  170. 3430 print"stimme 1 :";f(1),f(2)
  171. 3440 print"stimme 2 :";f(3),f(4)
  172. 3450 print"stimme 3 :";f(5),f(6)
  173. 3460 print"halten  :";:inputa1$:a1=val(a1$)
  174. 3465 ifa1<0ora1>15thengosub600:goto3460
  175. 3470 print"ausklingen:";:inputa2$:a2=val(a2$):a3=a1*16+a2:print
  176. 3475 ifa2<0ora2>15thengosub600:goto3470
  177. 3476 a3=a1*16+a2
  178. 3480 print"welche stimme :";:gosub80:a4=val(a$):printa$
  179. 3481 ifa4=1thenpoke49165,a3:gosub90:goto3000
  180. 3482 ifa4=2thenpoke49167,a3:gosub90:goto3000
  181. 3483 ifa4=3thenpoke49169,a3:gosub90:goto3000
  182. 3490 gosub600:goto3480
  183. 3500 fori=2to19:poke781,i:sys59903:next:cc=5:gosub500
  184. 3510 print"lautstaerke: ";peek(49153)
  185. 3520 print"neue lautstaerke : ";:inputlo$
  186. 3525 ifval(lo$)<0orval(lo$)>15thengosub600:goto3520
  187. 3530 poke49153,val(lo$)
  188. 3540 print"geschwindigkeit:";peek(49154)
  189. 3550 print"neue geschwindigkeit:";:inputsp$
  190. 3555 ifval(sp$)<4orval(sp$)>32thengosub600:goto3550
  191. 3556 poke49154,val(sp$):goto3000
  192. 3600 sys52000:goto3000
  193. 3700 poke54296,0:goto3000
  194. 3800 fori=2to22:poke781,i:sys59903:next:cc=6:gosub500
  195. 3810 print"anzahl der 1/8 noten:";peek(49152)
  196. 3820 print"neue anzahl :";:inputnv$:nv=val(nv$)
  197. 3821 ifnv=256thennv=0
  198. 3822 ifnv>256ornv<0thengosub600:goto3820
  199. 3826 poke49152,nv:goto3000
  200. 3900 return
  201. 3999 :
  202. 4000 rem musik anschalten
  203. 4001 :
  204. 4002 poke56334,0:poke788,56:poke789,199:poke56334,1:sys52000:return
  205. 4999 :
  206. 5000 rem musik ausschalten
  207. 5001 :
  208. 5002 poke56334,0:poke788,49:poke789,234:poke56334,1:poke54296,0:return
  209. 5999 :
  210. 6000 rem noten loeschen / teile kopieren
  211. 6001 :
  212. 6010 print"[147](n)oten loeschen  /  (t)eile kopieren"
  213. 6015 print"======================================"
  214. 6020 gosub80
  215. 6030 ifa$="n"then6100
  216. 6040 ifa$="t"then6300
  217. 6050 goto6020
  218. 6100 cc=9:gosub500:poke54296,0:print"";
  219. 6110 fori=49200to50999:pokei,0:next:gosub700:print"";:gosub90:return
  220. 6300 fori=3to24:poke781,i:sys59903:next
  221. 6305 print"kopieren von :";:inputh1$:h1=val(h1$)
  222. 6306 ifh1<0orh1>256then6305
  223. 6310 print"bis          :";:inputh2$:h2=val(h2$)
  224. 6315 ifh2<0orh2>256orh2<h1thenprint:gosub600:goto6310
  225. 6320 print"neuer anfang :";:inputh3$:h3=val(h3$)-1
  226. 6325 ifh3<0orh3>256thengosub600:goto6320
  227. 6330 print"welche stimme:";:inputh4$:h4=val(h4$)
  228. 6335 ifh4<0orh4>3thenprint:gosub600:goto6330
  229. 6340 h5=h3+(h2-h1):h6=h5-h3:cc=9:gosub500
  230. 6341 fori=0toh6
  231. 6342 pokeva(h4,1)+h3+i,peek(va(h4,1)+h1+i-1)
  232. 6343 pokeva(h4,2)+h3+i,peek(va(h4,2)+h1+i-1)
  233. 6344 next
  234. 6350 gosub700:pokez,3:pokes,13:syscs:print"noch einmal ?":gosub80
  235. 6351 ifa$="j"then6360
  236. 6352 ifa$="n"thenreturn
  237. 6353 goto6350
  238. 6360 print"[147]";(h1);"-";(h2);" neuer anfang:";h3+1;" stimme:";h4
  239. 6370 goto6300
  240. 6999 :
  241. 7000 rem neue melodie entwerfen
  242. 7001 :
  243. 7002 print"[147]"tab(8)"neue melodie entwerfen "
  244. 7010 printtab(7)"========================"
  245. 7012 n1=0:vo=1:l3=0:l2=0:l1=0:poke54296,0
  246. 7015 print"anzahl der 1/8-noten :";:inputen$:en=val(en$)
  247. 7016 poke781,3:sys59903:print"";
  248. 7017 ifen=256thenpoke49152,0:goto7020
  249. 7018 poke49152,en
  250. 7020 fori=0to12:printtab(2)da$(i):next
  251. 7030 print" note ^":y1=14:no=8:cc=7:gosub800
  252. 7040 poke199,0:pokez,9:pokes,5:syscs:print"oktave :";:poke199,1:printok
  253. 7042 pokez,22:pokes,5:syscs:print"laenge :";:poke199,1:printd$(da)
  254. 7045 n1$=str$(n1+1)+"  "
  255. 7046 pokez,9:pokes,7:syscs:print"note nr.:";:poke199,1::printn1$:poke199,0
  256. 7048 pokez,9:pokes,9:syscs:print"stimme nr.:";:poke199,1:printvo
  257. 7051 n2$=da$(l2)+str$(l1)+"    "
  258. 7053 pokez,9:pokes,11:syscs:print"letzte note :";:printn2$
  259. 7054 pokez,9:pokes,13:syscs:print"letzte dauer :";d$(l3)
  260. 7055 pokez,9:pokes,15:syscs:print"(return)=note uebernehmen"
  261. 7058 a$=""
  262. 7060 gosub80
  263. 7070 ifa$="[145]"then7100
  264. 7071 ifa$=""then7200
  265. 7072 ifa$>"0"anda$<"9"thenok=val(a$)
  266. 7073 ifa$="[133]"thenda=8
  267. 7074 ifa$="[137]"thenda=7
  268. 7075 ifa$="[134]"thenda=6
  269. 7076 ifa$="[138]"thenda=5
  270. 7077 ifa$="[135]"thenda=4
  271. 7078 ifa$="[139]"thenda=3
  272. 7079 ifa$="[136]"thenda=2
  273. 7080 ifa$="[140]"thenda=1
  274. 7085 ifa$=chr$(13)then7500
  275. 7086 ifa$="_"thenvf=9-da:goto7900
  276. 7087 ifa$="[147]"thenreturn
  277. 7088 ifa$="v"thenvo=vo+1:n1=0:ifvo=4thenreturn
  278. 7089 ifa$="n"thenn1=n1+(9-da)
  279. 7090 goto7040
  280. 7100 poke199,0:pokez,2:pokes,y1:syscs:printda$(no)
  281. 7110 no=no-1:y1=y1-1
  282. 7111 ifno<0thenno=0:y1=y1+1
  283. 7120 pokez,2:pokes,y1:syscs:poke199,1:printda$(no):goto7060
  284. 7200 poke199,0:pokez,2:pokes,y1:syscs:printda$(no)
  285. 7210 no=no+1:y1=y1+1
  286. 7211 ifno>12thenno=12:y1=y1-1
  287. 7220 pokez,2:pokes,y1:syscs:poke199,1:printda$(no):goto7060
  288. 7500 vf=9-da
  289. 7521 l1=ok:l2=no:l3=da
  290. 7530 fori=0tovf:pokeva(vo,1)+n1+i,hn(ok,no):pokeva(vo,2)+n1+i,ln(ok,no)
  291. 7531 next
  292. 7540 n1=n1+vf
  293. 7560 ifn1>=enthen7800
  294. 7570 goto7040
  295. 7800 vo=vo+1:ifvo=4thenreturn
  296. 7810 n1=0:pokez,9:pokes,11:syscs:print"            ";:goto7040
  297. 7900 n1=n1-vf:ifn1<=0thenn1=0
  298. 7910 goto7040
  299. 7999 :
  300. 8000 rem floppybefehl / noten zeigen
  301. 8001 :
  302. 8002 mp=8:print"[147]"tab(2)"(f)loppybefehl / (n)oten zeigen":poke54296,0
  303. 8003 gosub80
  304. 8004 ifa$="f"then8020
  305. 8005 ifa$="n"then8100
  306. 8010 goto8003
  307. 8020 cc=10:gosub800:close2,15:open2,8,15:print"befehl :";:inputco$
  308. 8040 fori=1tolen(co$):ifmid$(co$,i,1)="!"then8050
  309. 8041 next
  310. 8042 goto8065
  311. 8050 co$=left$(co$,i-1)+":"+right$(co$,len(co$)-i)
  312. 8055 print"haben sie sich vertippt ?"
  313. 8060 gosub80:ifa$="j"then8079
  314. 8065 ifco$="q:"thenreturn
  315. 8066 ifco$="v:"orco$="i:"orleft$(co$,2)="s:"then8078
  316. 8068 ifco$="$:"thengosub8071
  317. 8069 goto8079
  318. 8070 rem inhaltsverzeichnis
  319. 8071 print"[147]"spc(6)"inhaltsverzeichnis"
  320. 8072 open5,8,0,"$":get#5,a$,a$
  321. 8073 get#5,a$,a$:ifst=64thenclose5:gosub90:print"[147]":return
  322. 8074 get#5,a$,b$:printasc(a$+chr$(0))+256*asc(b$+chr$(0));
  323. 8075 get#5,a$:printa$;:ifa$<>""then8075
  324. 8076 print:goto8073
  325. 8078 print#2,co$:close2
  326. 8079 open15,8,15:input#15,c,c$:ifc$<>"ok"thenclose2:close15:goto10000
  327. 8080 close2:close15:goto8020
  328. 8100 rem show notes
  329. 8105 print"von note nummer:";:inputa1$:a1=val(a1$)-1
  330. 8106 ifa1<0ora1>255then8105
  331. 8110 print"bis note nr.";:inputa2$:a2=val(a2$)-1
  332. 8115 ifa2<0ora2<a1ora2>255thenprint:gosub600:goto8110
  333. 8120 print"welche stimme:";:gosub80:printa$:a3=val(a$)
  334. 8130 ifa3<1ora3>3thengosub600:goto8120
  335. 8150 print"[147]":ze=0:cc=9:gosub500:print""
  336. 8160 fori=a1toa2
  337. 8170 forr=0to7
  338. 8171 fort=0to12:w1=peek(va(a3,1)+i):w2=peek(va(a3,2)+i)
  339. 8172 ifw1=hn(r,t)thengg=1
  340. 8173 ifw2=ln(r,t)andgg=1thent1=t:t2=r:goto8176
  341. 8174 nextt
  342. 8175 nextr
  343. 8176 printi+1;"  note:";da$(t1);:printtab(20);"oktave:";t2:gg=0:ze=ze+1
  344. 8177 geta$:ifa$="[133]"thenreturn
  345. 8178 ifze>13thengosub90:fore=0to16:poke781,e:sys59903:next:ze=0:print""
  346. 8180 nexti
  347. 8190 print"fertig.":gosub90:return
  348. 8999 :
  349. 9000 rem drucken / ende
  350. 9001 :
  351. 9010 print"[147]";tab(10)"(d)rucken / (e)nde"
  352. 9015 printtab(8)"==========================="
  353. 9020 gosub80:ifa$<>"d"anda$<>"e"then9020
  354. 9030 ifa$="d"then9050
  355. 9040 poke808,237:end
  356. 9050 rem melodie drucken
  357. 9055 a1=peek(49152):ifa1=0thena1=255
  358. 9060 print"[147]bitte geben sie den namen ein :":inputk1$
  359. 9061 iflen(k1$)>40thenprint"name zu lang.":gosub90:goto9060
  360. 9062 print"[147]copyright bei wem ":inputk2$
  361. 9063 iflen(k2$)>60thenprint"name zu lang.":gosub90:goto9062
  362. 9064 print"[147]achtelnoten pro takt (4-12) ";:inputk3$:k3=val(k3$)
  363. 9065 ifk3<2ork3>12then9064
  364. 9066 print"[147]welche stimme sollen gedruckt werden   ?"
  365. 9067 print"stimme 1 (j/n) ?":gosub80:ifa$<>"j"anda$<>"n"then9066
  366. 9068 ifa$="j"thenf1(1)=1
  367. 9069 print"stimme 2 (j/n) ?":gosub80:ifa$<>"j"anda$<>"n"then9069
  368. 9070 ifa$="j"thenf1(2)=1
  369. 9071 print"stimme 3 (j/n) ?":gosub80:ifa$<>"j"anda$<>"n"then9071
  370. 9072 ifa$="j"thenf1(3)=1
  371. 9080 iff1(1)=1andf1(2)=1andf1(3)=1thenf1=1:f2=3:f3=1:goto9100
  372. 9081 iff1(1)=1andf1(2)=1thenf1=1:f2=2:f3=1:goto9100
  373. 9082 iff1(2)=1andf1(3)=1thenf1=2:f2=3:f3=1:goto9100
  374. 9083 iff1(1)=1andf1(3)=1thenf1=1:f2=3:f3=2:goto9100
  375. 9084 fori=1to3:iff1(i)=1thenf1=i:f2=i:f3=1:goto9100
  376. 9085 nexti
  377. 9100 cc=11:gosub800:print"";:open5,4:print#5,chr$(14);
  378. 9110 fori=1to(40-(len(k1$)))/2:print#5,chr$(32);:next:print#5,k1$
  379. 9120 fori=1to40:print#5,"=";:next:print#5,chr$(15);:fori=1to3:print#5,chr$(13);:next
  380. 9130 h1=0:h2=15
  381. 9135 ifa1<h2thenh2=a1-1:dc=1
  382. 9140 fora3=f1tof2stepf3
  383. 9145 print#5,a3;") ";:t3=0
  384. 9150 fori=h1toh2
  385. 9160 forr=0to7
  386. 9170 fort=0to12
  387. 9180 w1=peek(va(a3,1)+i):w2=peek(va(a3,2)+i)
  388. 9190 ifw1=hn(r,t)thengg=1
  389. 9191 ifw2=ln(r,t)-2andgg=1thengg=0:t1=t:t2=r:goto9230
  390. 9192 ifw2=ln(r,t)-1andgg=1thengg=0:t1=t:t2=r:goto9230
  391. 9193 ifw2=ln(r,t)+1andgg=1thengg=0:t1=t:t2=r:goto9230
  392. 9194 ifw2=ln(r,t)+2andgg=1thengg=0:t1=t:t2=r:goto9230
  393. 9200 ifw2=ln(r,t)andgg=1thengg=0:t1=t:t2=r:goto9230
  394. 9205 geta$:ifa$="[133]"thenprint#5:close5:return
  395. 9210 nextt
  396. 9220 nextr
  397. 9230 ifda$(t1)="pause"thenjn$="pau":goto9260
  398. 9240 jn$=da$(t1)+str$(t2):jn$=left$(jn$,2)+right$(jn$,1)
  399. 9250 ifmid$(jn$,2,1)=chr$(32)thenjn$=left$(jn$,1)+right$(jn$,1)+chr$(32)
  400. 9260 print#5,jn$;chr$(32);
  401. 9270 t3=t3+1:ift3=k3thenprint#5,"[221] ";:t3=0
  402. 9280 nexti
  403. 9290 print#5,chr$(10);
  404. 9300 nexta3
  405. 9310 fori=1to((h2-h1)+1)*4+9:print#5,"-";:next:print#5,chr$(10);
  406. 9315 fori=1to5:print#5,chr$(32);:next
  407. 9320 fori=h1+1toh2+1:kl$=str$(i)
  408. 9330 kl$=right$(kl$,len(kl$)-1):xc=len(kl$)
  409. 9340 ifxc=1thenkl$=chr$(32)+chr$(32)+kl$+chr$(32):goto9370
  410. 9350 ifxc=2thenkl$=chr$(32)+kl$+chr$(32):goto9370
  411. 9360 kl$=kl$+chr$(32)
  412. 9370 gh=gh+1:ifgh=k3+1thenprint#5,chr$(32);chr$(32);:gh=1
  413. 9380 print#5,kl$;:nexti:print#5,chr$(13);
  414. 9390 h3=h1:h1=h2+1
  415. 9400 h2=h2+(h2-h3)+1:gh=0:t3=0
  416. 9410 ifdc=1thendc=0:goto9440
  417. 9420 ifh2>=a1thenh2=a1:dc=1
  418. 9430 print#5,chr$(10);:goto9140
  419. 9440 print#5,chr$(13);chr$(13);chr$(15);
  420. 9450 f$(1)="composer v3.0 (c) 1986 bei d.borchert"
  421. 9460 f$(2)=k1$+" (c) 1986 bei "+k2$
  422. 9470 fori=1to2
  423. 9480 forj=1to(80-len(f$(i)))/2:print#5,chr$(32);:next:print#5,f$(i):nexti
  424. 9490 fori=1to3:f1(i)=0:next:print#5:close5:return
  425. 9999 :
  426. 10000 rem lese-und schreibfehler abfangen
  427. 10001 :
  428. 10009 print"";c;" ";c$
  429. 10010 print"sie koennen diesen namen nicht benutzen"
  430. 10020 print"(m) zurueck ins hauptmenue"
  431. 10030 print"(n) noch ein versuch   "
  432. 10040 gosub80
  433. 10050 ifa$="m"thenreturn
  434. 10060 ifa$="n"andmp=1then1000
  435. 10070 ifa$="n"andmp=2then2000
  436. 10075 ifa$="n"andmp=8then8000
  437. 10080 goto10040
  438. 10999 :
  439. 11000 rem daten von noten und zehldauer
  440. 11001 :
  441. 11005 datac,#c,d,#d,e,f,#f,g,#g,a,#a,h,pause
  442. 11010 data1/1,7/8,3/4,5/8,1/2,3/8,1/4,1/8
  443. 11020 data49200,49500,49800,50100,50400,50700
  444. 11025 rem daten fuer windows
  445. 11030 data wellenformen,------------,17 = dreieck,33 = saegezahn
  446. 11040 data65 = rechteck,129 = rauschen
  447. 11050 datapulsform,--------,werte von 0-15,l-byte=niederwert. -
  448. 11060 datah-byte=hoeherwert. -,byte
  449. 11070 dataanschlag/abschwellen,--------------------,,bitte nur werte
  450. 11080 datavon 0-15,eingeben
  451. 11090 datahalten/ausklingen,-----------------,,nur werte,von 0-15,sind zulaessig
  452. 11100 data---------------------,lautstaerke,werte von 0-15
  453. 11110 data---------------------,geschwindigkeit,werte von 4-32
  454. 11120 dataanzahl der noten,---------------,,eingaben von,0-256,sind moeglich
  455. 11130 data(cursortasten)=note aussuchen,(funkt.tasten)=dauer
  456. 11140 data(n)=eine note vor,(v)=naechste stimme eingeben
  457. 11150 data(shift-home)=zurueck zum menue,(_)=eine note zurueck
  458. 11160 databitte einen moment geduld.,die musikstuecke werden
  459. 11170 dataabsolut auf diskette/kassette,geschrieben. deshalb
  460. 11180 datadauert es etwas laenger,
  461. 11190 databitte haben sie,einen moment,geduld,,,
  462. 11200 datadiskettenbefehle,q!=hauptmenue
  463. 11210 data$!=inhaltsverzeichnis,"s!name=loescht das file name"
  464. 11220 datav!=validieren der diskette,i!=initialisieren der diskette
  465. 11230 datadruecken sie <f1>,um den druckvorgang zu,unterbrechen. bitte
  466. 11240 datahaben sie etwas geduld,der computer und der,drucker leisten harte arbeit.
  467.