home *** CD-ROM | disk | FTP | other *** search
/ Loadstar 216 / 216.d81 / concert (.txt) < prev    next >
Commodore BASIC  |  2022-08-26  |  8KB  |  259 lines

  1. 4 poke56,88:poke55,0:clr:tl=88*256
  2. 5 dv=peek(186):ifdv<8thendv=8
  3. 10 ifpeek(44)<>27thenstop
  4. 11 dimw$(100),w(20),tl(20),nx(9),n(9),tp(20):tl(0)=tl
  5. 12 deffnl(x)=x-fnh(x)*256:deffnh(x)=int(x/256):deffni(x)=peek(x)+256*peek(x+1)
  6. 20 sys57812"toolbox c000a",dv,0:poke780,0:poke781,0:poke782,192:sys65493
  7. 22 sys57812"concert font",dv,0:poke780,0:poke781,0:poke782,8:sys65493
  8. 24 poke53272,19
  9. 26 print"";
  10. 30 dm=49152:rd=dm+3:bn=dm+6:in=dm+9
  11. 31 gi=dm+12:bl=dm+30:bx=dm+15:ss=dm+18
  12. 32 sr=dm+21:pa=dm+24:ct=dm+27:sh=dm+72
  13. 33 br=dm+45:mu=dm+48:cm=dm+54:sw=dm+57
  14. 34 gw=dm+66:fi=dm+63
  15. 35 sysbl,"concert screen",dv,40960:syssr,160:poke53280,14:poke53281,1
  16. 37 sysss,208:sysss,216
  17. 40 lo=4096:sysbl,"cplay.ml",dv,lo
  18. 42 forx=0to33:poke6622+x,0:next
  19. 45 cm=0:cm$(0)="cue mode off":cm$(1)="cue mode on "
  20. 46 x=56832:pokex+14,255:pokex+24,128:pokex+19,0:pokex+20,240:pokex+18,129
  21. 47 m9=0:y=peek(x+28)andpeek(x+28):ify=255thenm9=3:pokex+18,0
  22. 48 a$(0)="midi & sid mode":a$(1)="stereo sid mode"
  23. 49 sysss,208
  24. 50 poke53281,1:syssr,208:wi=20:co=6:cr=160:ch=1:gosub10020
  25. 51 syspa,xp+1,yp+1,"choose:"
  26. 53 sysct,yp+2,"quick play"
  27. 54 sysct,yp+3,"create concert":sysct,yp+4,"_ to exit"
  28. 55 ch=2:gosub10100
  29. 56 iff%=0then600
  30. 57 iff%=2then2000
  31. 90 syssr,208:xp=21:yp=20:xw=len(a$(0))+2:yw=3:cr=160:co=2+m9+abs(cm-1)*8
  32. 91 gosub10000
  33. 92 syspa,xp+1,yp+1,a$(m9/3)
  34. 96 syspa,xp+1,yp+2,cm$(cm)
  35. 100 xp=0:yp=18:xw=14:yw=5:cr=160:co=10:gosub10000
  36. 110 syspa,xp+1,yp+1,"choose:"
  37. 120 syspa,xp+2,yp+2,"get song"
  38. 130 syspa,xp+2,yp+3,"change mode"
  39. 135 syspa,xp+2,yp+4,"disk access"
  40. 136 syspa,xp+3,yp+5,"_ to exit"
  41. 140 sysmu,yp+2,xp+2,xp+12,3,co,0,95
  42. 150 iff%=0then50
  43. 160 onf%goto200,300,390
  44. 200 sysss,216:sysdm,"$:p?.*",dv,57344,20,3,12,0,6
  45. 201 syssr,216:iff$=""then235
  46. 202 ifleft$(f$,3)="pc."then260
  47. 203 ifleft$(f$,3)="pd."thenclose15:open15,dv,15,"cd:"+f$:close15:cd=cd+1:goto200
  48. 204 co=7:ms$="loading: "+f$:gosub7400
  49. 206 sys6088:rem upload tools
  50. 210 sysbl,f$,dv,40560
  51. 220 poke163,112:poke164,158:poke165,2:poke166,160
  52. 223 ifcm=1thenco=5:ms$=f$+" cued":poke198,0:gosub7400
  53. 224 ifcm=1thengetz$:ifz$=""then224
  54. 225 co=6:ms$="playing: "+f$:gosub7400
  55. 230 syslo+m9:sys6121:rem download tools
  56. 235 ifcd>0thenclose15:open15,dv,15,"cd:_":cd=cd-1:close15:goto235
  57. 240 goto90
  58. 260 sysfi,f$,dv,0:n=f%:gosub7100:goto235
  59. 299 stop
  60. 300 cm=abs(cm-1)
  61. 305 ifcm>0then320
  62. 310 m9=abs(m9-3)
  63. 320 syssr,208:goto90
  64. 390 gosub400:goto90
  65. 400 syssr,208:co=0:cr=160:wi=20:ch=1:gosub10020:sysct,yp+1,"disk access:     "
  66. 401 dq=0:sysct,yp+2,"send command to "+str$(dv):sysct,yp+3,"change device"
  67. 402 sysmu,yp+2,xp+1,xp+xw-1,2,0,12,95:iff%=0thenreturn
  68. 403 onf%goto404,500
  69. 404 syspa,0,0,"[146][144]@                                       "
  70. 405 syspa,1,0,""
  71. 410 sysgw,0,2,38
  72. 415 ifw$=""then450
  73. 420 close15:open15,dv,15,w$:input#15,e,en$,n,f:close15
  74. 430 syssr,216:syspa,0,0,"[154]":printe"[157] ";n"[157] ";en$;" ";f
  75. 440 forx=1to3000:next
  76. 450 return
  77. 500 k=0:fori=8to15:close2:open2,i,2:close2:ifstthen510
  78. 505 i(k)=i:k=k+1
  79. 510 next:syssr,216:cr=160:co=9:wi=8:ch=k:gosub10020
  80. 520 sysct,yp+1,"drive: "
  81. 530 forx=0tok-1:sysct,yp+3+x,str$(i(x)):next:poke186,dv
  82. 540 sysmu,yp+3,xp+1,xp+xw-1,k,co,0,95
  83. 550 iff%=0thenreturn
  84. 560 dv=i(f%-1):poke186,dv:return
  85. 600 cr=160:co=8:wi=25:ch=0:gosub10020
  86. 610 sysct,yp+1,"leaving presto concert?"
  87. 620 sysct,yp+2,"(y/n)":poke198,0
  88. 630 getz$:ifz$=""then630
  89. 640 ifz$="y"then40000
  90. 650 goto50
  91. 1000 poke53281,0:sysbx,0,39,0,24,160,14:mode=0:nn=0:v$="make":n=0
  92. 1001 qd=0:ifnn=99thengosub2500:poke53281,1:syssr,208:goto2000
  93. 1002 xp=0:xw=14:yp=0:yw=12:cr=160:co=3:ifn=099thenf%=8:goto1025
  94. 1003 gosub10000:syspa,xp+1,yp+1,v$+" concert:"
  95. 1004 syspa,xp+2,yp+3,"begin"
  96. 1005 syspa,xp+2,yp+4,"load"
  97. 1006 syspa,xp+2,yp+5,"cue"
  98. 1007 syspa,xp+2,yp+6,"play":syspa,xp+2,yp+7,"pause"
  99. 1008 syspa,xp+2,yp+8,"continue":syspa,xp+2,yp+9,"remove"
  100. 1009 syspa,xp+2,yp+10,"end":sysss,216:syspa,30,0,""+str$(53248-tl)
  101. 1010 sysmu,yp+3,xp+1,xp+xw-1,8,co,1,95
  102. 1011 iff%=0thensyssr,208:goto2000
  103. 1012 ifmode=1then1025
  104. 1015 ifmode=0thenif(f%=1)or(f%=8)then1020
  105. 1016 goto1010
  106. 1020 iff%=8thenf%=0:goto1011
  107. 1021 mode=1:n=0:gosub1100:goto1010
  108. 1025 onf%goto1100,1200,1300,1400,1500,1600,1700,1900
  109. 1100 w$(n)="begin":kn=0:tl=88*256:goto1800
  110. 1200 ifdq=1thensysdm+3,20,3,12,1,7:syssr,216:goto1202
  111. 1201 sysdm,"$:pr.*,p1.*,p2.*,p3.*,pc.*",dv,57344,20,3,12,1,7:syssr,216:dq=1
  112. 1202 iff$=""then1801
  113. 1203 ifleft$(f$,3)="pc."thenw$(n)="concert:"+f$:n=n+1:goto1100
  114. 1204 kn=kn+1:w(kn)=n:ot=tl
  115. 1205 sys57812(f$),dv,0:poke780,1:poke781,fnl(tl):poke782,fnh(tl):sys65493:tl=fni(781)
  116. 1206 iftl>53248then1210
  117. 1207 tl(kn)=tl
  118. 1208 w$(n)=right$("0"+mid$(str$(kn),2),2)+"load:"+f$:goto1800
  119. 1210 syspa,20,0,"[150]not enough memory"
  120. 1212 forx=1to5000:next:kn=kn-1:tl=ot:goto1801
  121. 1300 w$(n)="  cue...":goto1800
  122. 1400 gosub1998:ifkn=0thensyssr,216:gosub1999:goto1801
  123. 1401 gosub1450
  124. 1406 iff%=0then1801
  125. 1408 w$(n)="play"+left$(w$(w(f%)),2)+":"+mid$(w$(w(f%)),8):goto1800
  126. 1450 xp=20:yp=0:xw=18:yw=kn+1:co=1:cr=160:gosub10000
  127. 1451 forx=1tokn:syspa,xp+1,yp+x,mid$(w$(w(x)),8):next
  128. 1452 sysmu,yp+1,xp+1,xp+xw-1,kn,1,1,95:syssr,216:goto1999
  129. 1500 w$(n)="@ pause...":goto1800
  130. 1600 gosub1998:ifkn>0then1602
  131. 1601 syssr,216:gosub1999:goto1801
  132. 1602 w$=left$(w$(n-1),2):if(w$<>"pl")and(w$<>"c0")then1601
  133. 1604 gosub1450
  134. 1606 iff%=0then1801
  135. 1608 w$(n)="c0nt"+left$(w$(w(f%)),2)+":"+mid$(w$(w(f%)),8):goto1800
  136. 1700 ifn=1then1801
  137. 1701 n=n-1:ifval(w$(n))>0thenkn=kn-1:tl=tl(kn)
  138. 1702 ifw$(n)="begin"thennx=n-1:gosub7001
  139. 1719 goto1801
  140. 1800 n=n+1
  141. 1801 ifn>13then1820
  142. 1802 gosub1998:ch=n-1:co=13:wi=24:sysbx,0,39,0,24,160,14
  143. 1805 gosub10020:forx=0ton-1:syspa,xp+2,yp+1+x,w$(x):next
  144. 1806 syspa,xp+1,yp+1+x,">"
  145. 1809 gosub1999
  146. 1810 goto1001
  147. 1820 gosub1998:ch=12:co=13:wi=24
  148. 1821 sysbx,0,39,0,24,160,14:gosub10020:q=0:forx=n-13ton-1
  149. 1822 syspa,xp+2,yp+1+q,w$(x):q=q+1:next
  150. 1824 syspa,xp+1,yp+1+q,">":goto1809
  151. 1900 w$(n)="x end":nn=099:goto1800
  152. 1998 c0=co:x1=xp:x2=xw:y1=yp:y2=yw:return
  153. 1999 co=c0:xp=x1:xw=x2:yp=y1:yw=y2:return
  154. 2000 poke53281,1:syssr,208:ch=4:wi=20:cr=160:co=5:gosub10020
  155. 2010 sysct,yp+1,"make concert"
  156. 2020 sysct,yp+2,"edit concert"
  157. 2030 sysct,yp+3,"save concert"
  158. 2035 sysct,yp+4,"load concert"
  159. 2036 sysct,yp+5,"play concert"
  160. 2037 sysct,yp+6,"disk access ":sysct,yp+7,"_ to exit"
  161. 2040 sysmu,yp+1,xp+1,xp+xw-1,6,co,0,95
  162. 2050 iff%=0then50
  163. 2060 onf%goto1000,3000,4000,5000,5500,6000
  164. 2500 sysbx,14,24,4,6,160,6:sysbx,13,23,3,5,160,2:syspa,14,4,"press key"
  165. 2501 poke198,0:wait198,1:poke198,0:return
  166. 3000 poke53281,0:sysbx,0,39,0,34,160,14:nn=0:v$="edit"
  167. 3001 mode=0:ifn>0thenmode=1
  168. 3002 goto1801
  169. 4000 ifn=0then2000
  170. 4005 wi=18:cr=160:co=2:ch=0:syssr,208:gosub10020
  171. 4010 syspa,xp+1,yp+1,"save:"
  172. 4020 syspa,xp+1,yp+2,"[146][144]pc.             ":syspa,xp+4,yp+2,""
  173. 4030 sysgw,0,15,13:ifw$=""then2000
  174. 4031 w$="pc."+w$
  175. 4035 close15:open15,dv,15,"s0:"+w$:close15
  176. 4040 close4:open4,dv,4,w$+",s,w"
  177. 4050 forx=0ton-1:print#4,w$(x):next:close4
  178. 4080 goto2000
  179. 5000 ifn=0then5020
  180. 5010 wi=18:cr=160:co=2:ch=1:syssr,208:gosub10020
  181. 5012 syspa,xp+1,yp+1,"load:"
  182. 5013 sysct,yp+2,"new concert"
  183. 5014 sysct,yp+3,"append"
  184. 5015 sysmu,yp+2,xp+1,xp+xw-1,2,co,0,95
  185. 5016 iff%=0then2000
  186. 5017 iff%=1thenn=0:kn=0:goto5020
  187. 5018 n=n-1
  188. 5020 syssr,208:sysdm,"$:pc.*",dv,57344,20,3,12,0,6
  189. 5030 sysfi,f$,dv,n:n=f%
  190. 5040 gosub7000:goto2000
  191. 5500 gosub7100:goto2000
  192. 6000 sysss,216:gosub400:goto2000
  193. 7000 nx=n
  194. 7001 tl=88*256:tl(0)=tl:kn=0
  195. 7002 ifnx<0thenreturn
  196. 7003 ifw$(nx)<>"begin"thennx=nx-1:goto7002
  197. 7004 ifnx=nthenreturn
  198. 7005 nx=nx+1:ifval(w$(nx))=0then7004
  199. 7006 sys57812(w$(nx)),dv,0:poke780,1:poke781,fnl(tl):poke782,fnh(tl):sys65493
  200. 7007 kn=kn+1:w(kn)=val(w$(nx)):tl=fni(781):tl(kn)=tl:goto7004
  201. 7100 sys6088:dq=0:syssr,208:nx=0:sp=0:goto7102
  202. 7101 nx=nx+1:ifnx>100thenw$="x ":goto7114
  203. 7102 w$=left$(w$(nx),2):w=val(w$(nx))
  204. 7104 ifw$="be"thentp=88*256:goto7101
  205. 7106 ifw>0thentp(w)=tp:gosub7300:goto7101
  206. 7108 ifw$="  "thengosub7200:goto7101
  207. 7110 ifw$="pl"thengosub7210:goto7101
  208. 7112 ifw$="@ "thengosub7700:goto7101
  209. 7114 ifw$="x "then7250
  210. 7116 ifw$="co"thengosub7260:goto7101
  211. 7200 sysss,216:co=5
  212. 7202 ms$=mid$(w$(nx+1),8)+" cued":gosub7400
  213. 7204 poke198,0:wait198,1:poke198,0:return
  214. 7210 kx=0:w=val(mid$(w$(nx),5)):poke163,fnl(tp(w)):poke164,fnh(tp(w))
  215. 7212 poke165,fnl(tp(w)+402):poke166,fnh(tp(w)+402):poke829,0
  216. 7214 ifleft$(w$(nx+1),2)="c0"thengosub7500
  217. 7215 co=4:ms$="pl