home *** CD-ROM | disk | FTP | other *** search
/ Loadstar 243 / 243.d81 / sideditx (.txt) < prev    next >
Commodore BASIC  |  2022-08-26  |  23KB  |  594 lines

  1. 1 dn=peek(186):goto 9200:rem editor77 by harry bratt 10/26/84
  2. 5 jv=peek(56320):jb=1-(jv and 16)/16:jv=jv and 15:return
  3. 8 ac=abs(ac)
  4. 9 poke cy,3:print:poke cx,18-8*ac:printac$(ac+1):return
  5. 10 printchr$(19)chr$(146)c1$;:poke cx,25:print"mem:"fmchr$(157)"      ":return
  6. 12 poke 54283,129:poke 54283,32:return
  7. 19 v0=nt:v1=ac:v2=oc:v3=ln:v4=rs+2*sp:v5=ty:v6=1
  8. 20 h=peek(mm+cn):ifhand3 then sp=1:rs=0:ty=0:return
  9. 22 sp=0:ln=7-(hand31)/4-.5*((hand32)=32):ty=-((hand64)=64)
  10. 24 h=peek(mm+cn+1):if h=0 then rs=1:goto28
  11. 26 rs=0:nt=(hand7)-1:oc=7-(hand56)/8:ac=(hand192)/64-2
  12. 28 return
  13. 30 poke cy,21:printc0$:poke cx,x*5:h=peek(mm+cn):if h and 3 goto 36
  14. 31 if rs then print"(r)"y$;:goto 33
  15. 32 printc0$nt$chr$(asc(ac$)+162*(asc(ac$)=194))oc$y$;
  16. 33 println$lm$ty$(ty);
  17. 34 if v6 then nt=v0:ac=v1:oc=v2:ln=v3:rs=v4and1:sp=(v4and2)/2:ty=v5:v6=0
  18. 35 return
  19. 36 poke 251,peek(mm+cn+1-(hand2)/2):poke 252,-((peek(mm+cn)and3)<>1):sys 1232
  20. 37 prints$(peek(252)+1)y$chr$(157);:qi=asc(mid$(s$,peek(252)+1))-65
  21. 38 if abs(v(qi))<90 then qj=peek(251):gosub80:goto 34
  22. 39 qj=peek(mm+cn+1)+256*peek(251):gosub 80:goto 34
  23. 40 poke 1216+sc,pk:sc=3:poke 1219,1:pk=14:goto 510
  24. 45 gosub 5:if jb=0 then return
  25. 47 gosub 5:if jb then 47
  26. 48 jb=1:return
  27. 50 for k=0 to 6:ac%(ak%(abs(k+6*(ky<0))))=(k<abs(ky))*sgn(ky):next:return
  28. 60 ln$=chr$(196+ln):lm$=chr$(46+14*(ln=int(ln))):return
  29. 65 nt$=chr$(67+nt+7*(nt>4)):ac$=chr$(194+ac):oc$=right$(str$(oc),1):return
  30. 70 k=j-int(j/256)*256:j=(j-k)/256:return
  31. 80 if qi<>2 goto 84
  32. 82 if qjand1 then print-(11-int(qj/16)+12*(qj/2and7));:return
  33. 83 qj=int(qj/16)+12*(7-(qj/2and7)):goto 87
  34. 84 ifqi=9 then qj=(qjand3584)/2+(qjand255)+((qjand256)=256)*2048:goto 87
  35. 85 if qi>10 then on qi-10 goto 88,88,90,90,91,92
  36. 86 if v(qi)<0 then qj=qj+256*(qj>127)
  37. 87 print mid$(str$(qj),2+(qj<0));:return
  38. 88 if qj=0 then print"n";:return
  39. 89 printfw$(qj-1,qi-11);:return
  40. 90 printnu$(qj,qi-13);
  41. 91 return
  42. 92 qj=qj-256*(qj=0):qj=int(14400/qj):goto 87
  43. 200 rem input sbr
  44. 210 a$="":lh=0:printchr$(164)chr$(157);
  45. 215 get b$:if b$=""goto 215
  46. 220 b=asc(b$):if b=13 or b=141 then print" ";:return
  47. 230 if b<>20 or lh=0 goto 240
  48. 232 lh=lh-1:a$=left$(a$,lh-(lh=0))
  49. 235 printchr$(157)"  "chr$(157)chr$(157)chr$(164)chr$(157);:if lh=0 then a$=""
  50. 237 goto 215
  51. 240 if lh=mx-(asc(a$+" ")=45) goto 215
  52. 245 if b=45 and (fa and 1) and lh=0 goto 270
  53. 250 if b>47 and b<58 goto 270
  54. 260 if b<32 or b>90 or (fa and 2)=0 goto215
  55. 270 a$=a$+b$:lh=lh+1:printb$;:poke 212,0:printchr$(164)chr$(157);:goto 215
  56. 500 rem ** main joystick part **
  57. 501 if nn<0 then nt=0:oc=4:ln=3:rs=0:sp=0:goto 507
  58. 502 if gk=0 goto 507
  59. 503 tn=cn:for x=(tn/2-3)*(tn<5) to 7-(4-(nn-tn)/2)*-((nn-tn)<7)
  60. 504 cn=tn-6+2*x:gosub19:gosub60:gosub65:gosub30:next:cn=tn+2*(tn>nn)
  61. 505 gosub20:cn=tn
  62. 507 gosub 555:gosub 545
  63. 509 lq=0
  64. 510 gosub5:get k$:if k$="" then k$=" ":if jv=15 and jb=0 goto 510
  65. 511 if jb or asc(k$)=13 goto 600
  66. 512 if jv<>15 then poke 198,0:goto 530
  67. 513 on abs(asc(k$)-132) goto 8000,7000,4100,4000,4050,4060
  68. 514 k=-2*(k$="+")-3*(k$="\")-4*(k$="-"):if k>0 then ac=k-3:goto 554
  69. 515 if k$>"@" and k$<"h" then nt=asc(k$)-67:nt=nt-7*(nt<0):rs=0:sp=0:goto 553
  70. 516 if k$>"/" and k$<"8" then oc=val(k$):rs=0:sp=0:goto 553
  71. 517 if k$>"g" and k$<"x" then k=kl%(asc(k$)-72):if k>-1 then ln=k:goto 542
  72. 518 if k$="8" then ln=2:goto 542
  73. 519 if k$="." and ln>0 and ln<6 then ln=int(ln)+.5*(1-(ln*2)and1):goto 542
  74. 520 if (asc(k$) and 127)=20 goto 900
  75. 521 if k$="r" then rs=1-rs:ty=0:gosub555:goto 510
  76. 522 if k$="/" then ty=1-ty:rs=0:gosub555:goto 510
  77. 523 if asc(k$)=17 or asc(k$)=29 then jv=28-asc(k$):gosub650:jv=15
  78. 524 if k$="m" then lq=1:goto 740
  79. 525 if asc(k$)=221 or asc(k$)=219 then k=220-asc(k$):lq=1:goto 725
  80. 526 if asc(k$)=147 goto 980
  81. 529 goto 510
  82. 530 if jv>12 then rs=0:goto 550
  83. 535 k=.5*((jv>8)-(jv<8)):ln=ln+k:if ln=.5 or ln=6.5 then ln=ln+k
  84. 540 ln=ln+7.5*(ln>7)-7.5*(ln<0)
  85. 542 gosub12:if sp goto 554
  86. 543 gosub 545:goto 510
  87. 545 poke cy,17:print:poke cx,21:if sp then printc0$"--"spc(2)"-------":return
  88. 547 poke cy,17:print:poke cx,21:gosub 60:print c0$ln$lm$spc(2)ln$(ln):return
  89. 550 nt=nt+(jv=13)-(jv=14)
  90. 552 if nt<0 or nt>6 then oc=oc-(jv=14)+(jv=13):nt=3*(1-sgn(nt))
  91. 553 ac=ac%(nt):if sp=0 then gosub 555:goto 510
  92. 554 sp=0:gosub555:gosub545:goto 510
  93. 555 f1=0:poke cy,9:printc0$:poke cx,16:if rs then print"(r)":goto 567
  94. 556 if sp then print"---":goto 567
  95. 557 if oc>7 or (oc=7 and nt=6 and ac=-1) then oc=7:nt=6:ac=0
  96. 558 if oc<0 or (oc=0 and nt=0 and ac=1) then oc=0:nt=0:ac=0
  97. 559 poke 780,(1-rs)*(nt+1+8*(7-oc)+64*(ac+2)):sys 1396
  98. 560 poke cy,9:poke 54276,64:gosub 65:print
  99. 565 poke cx,16:printc0$nt$" "ac$:poke cy,14:print:poke cx,17
  100. 567 poke cy,14:print:poke cx,17:if rs or sp then print"-":goto 576
  101. 568 printoc$
  102. 576 poke cy,19:print:poke cx,9:printc3$chr$(146-128*rs)"rest"chr$(146);
  103. 577 print" <--select--> "chr$(146-128*ty)"tie":if f1 then return
  104. 579 if al=ac and rs=0 and sp=0 then 582
  105. 580 printc3$:h=ac:ac=al:gosub 8:ac=h:if rs or sp then al=2:return
  106. 582 al=ac:printc1$:gosub 8:return
  107. 600 rem ** button pressed **
  108. 605 fg=0
  109. 610 gosub 5:if jb=0 then 680
  110. 620 if jv=15 then 610
  111. 625 fg=1:if jv<13 goto 610
  112. 632 poke 1216+sc,pk
  113. 635 k=(jv=13)-(jv=14):sc=sc+k:sc=sc-k*(sc=5):sc=sc+6*((sc>6)-(sc<1))
  114. 640 pk=peek(1216+sc):poke 1216+sc,-(sc=3 or sc=1)
  115. 645 for k=1 to 90:next:goto 610
  116. 648 gosub650:gosub45:if jb then poke 198,0:goto 40
  117. 649 goto 648
  118. 650 k=-(jv<8):if(cn+(k=0))<0 or(cn>nn and k=1)or jv>11 or in then fg=1:return
  119. 651 if k=0 then poke cy,21:print:poke cx,35:printz$(0);
  120. 652 poke cy,21:print:printz$(1-k);:x=k*7
  121. 656 cn=cn-2+4*k:if cn-2=nn then fg=1:return
  122. 658 tn=cn:if sq=0 then gosub 20:gosub 545:gosub 555
  123. 660 cn=cn-6-14*(jv<8):if cn<0 or cn>nn goto 670
  124. 662 gosub19:gosub60:gosub65:gosub30
  125. 670 fg=1:cn=tn:gosub20:return
  126. 680 if fg then on sc goto 648,800,510,750,510,700
  127. 682 if (fm=0 and cn>nn) or (ln=7 and (ty or rs)) goto 510
  128. 684 in=in+(in>0):poke mm+cn,4*(7-int(ln))-32*(ln>int(ln))+64*ty
  129. 686 poke mm+cn+1,(1-rs)*(nt+1+8*(7-oc)+64*(ac+2)):gosub 60:gosub 65
  130. 687 if m1 then ac%(nt)=ac
  131. 688 if nn<cn then nn=nn+2:fm=fm-1:gosub10
  132. 689 x=3:gosub30:poke 780,peek(mm+cn+1):sys 1396:poke cy,21:print
  133. 690 poke 54276,64:printz$(0);:ty=0:f1=1:gosub576:cn=cn+2
  134. 691 if nn-cn<8 or in>4 goto 510
  135. 692 tn=cn:cn=cn+8:x=7:gosub19:gosub60:gosub65:gosub30:cn=tn:goto 510
  136. 700 rem ** key change **
  137. 710 gosub 45:if jb goto 40
  138. 715 if jv>12 and jv<15 goto 740
  139. 720 k=(jv=11)-(jv=7):if k=0 then 710
  140. 725 ky=ky+k:ky=ky+15*(sgn(ky)*(abs(ky)=8)):gosub12
  141. 730 poke cy,1:print:poke cx,10:printc1$abs(ky)chr$(157)chr$(193-2*(ky<0));
  142. 732 print" ("ky$(ky+7)")":goto 745
  143. 740 m1=1-m1:gosub12:poke cy,1:print:poke cx,30:printc1$mid$("on off",4-m1*3,3)
  144. 745 gosub 50:on lq+1 goto 710,509
  145. 750 rem** accidental change **
  146. 760 rs=0:gosub 45:if jb goto 40
  147. 770 k=(jv=7)-(jv=11):if k=0 then 760
  148. 775 ac=ac+k:ac=ac+3*(sgn(k))*(abs(ac)=2):if sp=0 then gosub555:goto 760
  149. 780 sp=0:gosub 555:gosub 545:goto 760
  150. 800 rem ** rest <--> tie **
  151. 810 gosub 45:if jb goto 40
  152. 815 if jv<>11 goto 825
  153. 820 rs=1-rs:ty=0:goto 840
  154. 825 if jv<>7 goto 810
  155. 830 ty=1-ty:rs=0:goto 840
  156. 840 if sp=0 then gosub555:goto 40
  157. 845 sp=0:gosub555:gosub545:goto 40
  158. 900 rem ** ins/del **
  159. 910 k=-(asc(k$)=20)
  160. 920 if cn>nnor (fm=0 and k=0) then on sq+1 goto 970,7375
  161. 923 gosub12:in=in-k*2+1:in=in-(in<0)
  162. 925 if k=0 then poke cy,21:print:poke cx,35:printz$(0);
  163. 927 poke cy,21:print:poke cx,15:printz$(1-k);
  164. 930 if k goto 939
  165. 932 for i=0 to 2 step 2:j=mm+cn+i:gosub 70:poke 251+i,k:poke 252+i,j:next i
  166. 936 j=nn-cn+2:gosub 70:poke 781,k:poke 782,j:sys 1024:nn=nn+2
  167. 938 fm=fm-1:on sq+1 goto 970,7375
  168. 939 if cn=nn goto 950
  169. 940 for i=0 to 2 step 2:j=mm+cn+2-i:gosub 70:poke 251+i,k:poke 252+i,j:next i
  170. 942 j=nn-cn:gosub 70:poke 781,k:poke 782,j:sys 1024
  171. 950 nn=nn-2:fm=fm+1:if nn-cn<8 or in>4 then on sq+1 goto 970,7375
  172. 960 tn=cn:cn=cn+8:x=7:gosub19:gosub60:gosub65:gosub30:cn=tn:onsq+1goto 970,7375
  173. 970 gosub10:goto 510
  174. 980 printchr$(19)spc(25)c1$"clear to end?"
  175. 982 get k$:if k$="" goto 982
  176. 985 if k$<>"y" goto 995
  177. 990 for k=1 to 5:poke cy,21:print:poke cx,15:printz$(0);:next
  178. 992 fm=fm+(nn-cn+2)/2:nn=cn-2:in=0
  179. 995 gosub10:goto 510
  180. 4000 rem ** enter measure **
  181. 4010 if m1 then gosub 50
  182. 4015 mz=mz+1+1000*(mz>999):j=mz:gosub70
  183. 4020 poke mm+cn,j*64+30:poke mm+cn+1,k:b=1:goto 7300
  184. 4050 k=0:goto 4065
  185. 4060 k=nn+2
  186. 4065 if in goto 510
  187. 4067 cn=k
  188. 4070 gk