home *** CD-ROM | disk | FTP | other *** search
/ 64'er Special 61 / 64er_Magazin_Sonderheft_61_19xx_Markt__Technik_de_Side_B.d64 / kern.bas (.txt) < prev    next >
Commodore BASIC  |  2022-10-26  |  6KB  |  242 lines

  1. 100 rem krieg der kerne
  2. 101 rem
  3. 102 rem nach spektrum der wissenschaft
  4. 103 rem 8/84
  5. 104 rem
  6. 105 rem martin rogge, moellenholt 24
  7. 106 rem 2300 kiel 1
  8. 107 rem 11.06.87
  9. 108 :
  10. 109 goto1000
  11. 110 :
  12. 150 a$=""
  13. 160 ll=5:goto200
  14. 170 ll=16
  15. 200 printa$;"[164][157]";
  16. 210 getb$:ifb$=""goto210
  17. 215 b=asc(b$):ifb>95orb=34goto210
  18. 220 ifb=13thenprint" ":return
  19. 230 ifb<>20goto260
  20. 240 iflen(a$)<1goto210
  21. 250 a$=left$(a$,len(a$)-1):print" [157][157][164][157]";:goto210
  22. 260 ifb<32goto210
  23. 270 iflen(a$)<llthena$=a$+b$:printb$"[164][157]";:goto210
  24. 280 a$=left$(a$,len(a$)-1)+b$:print"[157]"b$;:goto210
  25. 290 :
  26. 1000 data dat,mov,add,sub,jmp,jmz,jmn,djn,djz,cmp,spl
  27. 1200 poke53280,0:poke53281,0
  28. 1210 dim f$(1,255),l(1),n$(1),w(2),b(4)
  29. 1220 fori=0to10:readb$(i):next:l(0)=-1:l(1)=-1
  30. 1230 f(0)=28928:f(1)=30208:ba=7*4096:kf=31488
  31. 1240 :
  32. 1500 print"[158][147]","                 "
  33. 1510 print," krieg der kerne "
  34. 1520 print,"                 "
  35. 1530 print,"1 - editor"
  36. 1540 print,"2 - kaempfer laden"
  37. 1550 print,"3 - kaempfer speichern"
  38. 1560 print,"4 - kampf starten"
  39. 1562 print,"5 - speicher listen"
  40. 1565 print,"6 - ende"
  41. 1570 geta$:ifa$<"1"ora$>"6"goto1570
  42. 1580 onval(a$)goto8000,6000,7000,2000,9500
  43. 1590 :
  44. 1600 print"[147]":end
  45. 1610 :
  46. 2000 print"[147]kaempfer a: "n$(0)
  47. 2010 k=0:gosub3000:iffgoto2340
  48. 2100 print"kaempfer b: "n$(1)
  49. 2110 k=1:gosub3000:iffgoto2340
  50. 2120 print"wieviele zuege pro kampf ? ";:a$="10000":gosub160:z=val(a$)
  51. 2130 pokeba+13,z/256:pokeba+12,z-256*peek(ba+13)
  52. 2140 print"wieviele kaempfe ? ";:a$="1":gosub160:y=val(a$)
  53. 2150 pokeba+8,l(0):pokeba+9,l(1):d=999-l(0)-l(1)
  54. 2160 w(0)=0:w(1)=0:w(2)=0
  55. 2170 fori=1toy:sys26624
  56. 2175 forj=0to7:pokeba+j,0:next
  57. 2180 x=int(d*rnd(1))+l(0)+1:poke38913,x/256:poke38912,x-256*peek(38913)
  58. 2190 a=usr(0):w(a)=w(a)+1
  59. 2200 next
  60. 2205 poke53280,11:gosub5540:poke53280,0
  61. 2300 print"[147]ergebnis:"
  62. 2310 print""n$(0):print"[145]"spc(18)w(1)
  63. 2320 print""n$(1):print"[145]"spc(18)w(2)
  64. 2330 print"unentschieden     "w(0)
  65. 2340 print"":gosub5530:goto1500
  66. 2350 :
  67. 3000 ifl(k)<0thenprint"compilation error: kein quellcode.":f=-1:return
  68. 3005 f=0:fori=0tol(k)
  69. 3010 a$=f$(k,i):gosub4000:iflen(a$)<4goto3900
  70. 3030 b$=left$(a$,3)
  71. 3040 forj=0to10:ifb$=b$(j)thenx=j:j=12
  72. 3050 next:ifj<12thenf=-1:goto3900
  73. 3060 a$=mid$(a$,4):gosub4000
  74. 3070 onxgoto3400,3400,3400,3500,3600,3600,3800,3800,4200,3500
  75. 3080 gosub4700:iffgoto3900
  76. 3090 zq%=vo*za:zz%=0:aq=0:az=0
  77. 3100 b(0)=xor48ork*64or((x>0)and128)
  78. 3110 b(1)=zq%-256*int(zq%/256)
  79. 3120 b(2)=((zq%/256)and15)oraq*64
  80. 3130 b(3)=zz%-256*int(zz%/256)
  81. 3140 b(4)=((zz%/256)and15)oraz*64
  82. 3150 forj=0to4:pokef(k)+256*j+i,b(j):next
  83. 3160 next:print"compilation complete, no error.":return
  84. 3170 :
  85. 3400 gosub4600:iffgoto3900
  86. 3405 aq=aa:zq%=vo*za
  87. 3410 gosub4800:iffgoto3900
  88. 3415 az=aa:zz%=vo*za:goto3100
  89. 3420 :
  90. 3500 gosub4800:iffgoto3900
  91. 3505 zq%=vo*za:zz%=0:aq=aa:az=0:goto3100
  92. 3510 :
  93. 3600 gosub4800:iffgoto3900
  94. 3605 aq=aa:zq%=vo*za
  95. 3610 gosub4600:iffgoto3900
  96. 3615 az=aa:zz%=vo*za:goto3100
  97. 3620 :
  98. 3800 gosub4800:iffgoto3900
  99. 3805 aq=aa:zq%=vo*za
  100. 3810 gosub4800:iffgoto3900
  101. 3815 az=aa:zz%=vo*za:goto3100
  102. 3820 :
  103. 3900 x=i:i=l(k):next:print"compilation error in line"x:f=-1:return
  104. 3910 :
  105. 4000 ifleft$(a$,1)=" "thena$=mid$(a$,2):goto4000
  106. 4010 return
  107. 4020 :
  108. 4200 gosub4600:iffgoto3900
  109. 4205 aq=aa:zq%=vo*za
  110. 4210 gosub4600:iffgoto3900
  111. 4215 az=aa:zz%=vo*za:goto3100
  112. 4220 :
  113. 4500 b$=left$(a$,1):a$=mid$(a$,2)
  114. 4505 ifb$=" "orb$=""thenm=-2:return
  115. 4530 ifb$<"0"orb$>"9"thenm=-1:return
  116. 4540 m=val(b$):return
  117. 4550 :
  118. 4600 aa=1:b$=left$(a$,1):ifb$="#"thenaa=0:a$=mid$(a$,2)
  119. 4610 ifb$="@"thenaa=2:a$=mid$(a$,2)
  120. 4620 :
  121. 4700 vo=1:b$=left$(a$,1):ifb$="-"thenvo=-1
  122. 4710 ifb$="+"orb$="-"thena$=mid$(a$,2)
  123. 4720 gosub4500:ifm<0orm>9thenf=-1:return
  124. 4730 za=m
  125. 4740 gosub4500:ifm=-2goto4770
  126. 4750 ifm<0orm>9thenf=-1:return
  127. 4760 za=10*za+m:goto4740
  128. 4770 ifza>999thenf=-1
  129. 4780 return
  130. 4790 :
  131. 4800 gosub4600:ifaa=0thenf=-1
  132. 4810 return
  133. 4820 :
  134. 5000 print"[147]kaempfer a oder b ? ";
  135. 5010 geta$:ifa$="a"thenk=0:goto5040
  136. 5020 ifa$<>"b"goto5010
  137. 5030 k=1
  138. 5040 printa$:return
  139. 5050 :
  140. 5500 f=0:input#1,v$,w$,x$,y$:ifval(v$)<9thenreturn
  141. 5510 print"disk-error:":f=-1
  142. 5520 printv$":"w$":"x$":"y$
  143. 5530 print"<cr> druecken"
  144. 5540 geta$:ifa$<>chr$(13)goto5540
  145. 5550 return
  146. 5560 :
  147. 6000 gosub5000 :rem laden
  148. 6010 print"name: ";:a$="":gosub170:n$(k)=a$
  149. 6020 open1,8,15:print#1,"i0":gosub5500:iffgoto6900
  150. 6030 open2,8,2,n$(k):gosub5500:iffgoto6900
  151. 6040 l(k)=-1
  152. 6050 l(k)=l(k)+1:input#2,f$(k,l(k)):ifst=0goto6050
  153. 6060 gosub5500
  154. 6900 close2:close1:goto1500
  155. 6910 :
  156. 7000 gosub5000 :rem speichern
  157. 7020 open1,8,15:print#1,"i0":gosub5500:iffgoto6900
  158. 7025 print"name: ";:a$=n$(k):gosub170:n$(k)=a$
  159. 7030 open2,8,2,n$(k)+",s,w":gosub5500:iffgoto6900
  160. 7035 print""n$(k)" wird gespeichert."
  161. 7040 fori=0tol(k)
  162. 7050 print#2,chr$(34)f$(k,i):next
  163. 7060 goto6060
  164. 7070 :
  165. 8000 gosub5000:ez=0
  166. 8100 print"[147]name: "n$(k):print
  167. 8110 fori=eztoez+9:ifi>l(k)thenf$(k,i)=""
  168. 8120 print""right$("  "+str$(i),4)" [146]  "f$(k,i)
  169. 8130 next
  170. 8140 print"s[146]chreiben"
  171. 8150 print"l[146]oeschen"
  172. 8160 print"a[146]endern"
  173. 8170 print"d[146]rucken"
  174. 8180 print"u[146]mbenennen"
  175. 8190 print"+/-"
  176. 8200 print"e[146]nde"
  177. 8210 geta$:fori=1to8:ifa$=mid$("+-esladu",i,1)thena=i:i=9
  178. 8220 next:ifi<10goto8210
  179. 8230 onagoto8300,8400,1500,8600,8800,9000,9200,9400
  180. 8240 :
  181. 8300 ifez<231thenez=ez+10:goto8100
  182. 8310 goto8210
  183. 8320 :
  184. 8400 ifez>9thenez=ez-10:goto8100
  185. 8410 goto8210
  186. 8420 :
  187. 8600 print"schreiben ab zeile: ";:gosub150:aa=val(a$)
  188. 8610 ifaa<0oraa>l(k)+1goto8100
  189. 8620 print"[147]abbruch durch eine leerzeile.":ll=30
  190. 8630 ifl(k)>248goto8100
  191. 8635 print""right$("  "+str$(aa),4)" [146]  ";
  192. 8640 a$="":gosub200:ifa$=""goto8100
  193. 8650 ifaa>l(k)thenf$(k,aa)=a$:aa=aa+1:l(k)=l(k)+1:goto8630
  194. 8660 fori=l(k)toaastep-1:f$(k,i+1)=f$(k,i):next:l(k)=l(k)+1
  195. 8670 f$(k,aa)=a$:aa=aa+1:goto8630
  196. 8680 :
  197. 8800 print"loeschen von zeile: ";:gosub150:aa=val(a$)
  198. 8810 print"         bis zeile: ";:gosub150:bb=val(a$)
  199. 8820 ifbb<aaoraa<0oraa>l(k)goto8100
  200. 8830 ifbb=>l(k)thenl(k)=aa-1:goto8100
  201. 8840 d=bb+1-aa:fori=bb+1tol(k):f$(k,i-d)=f$(k,i):next
  202. 8850 l(k)=l(k)-d:goto8100
  203. 8860 :
  204. 9000 print"aendern von zeile: ";:gosub150:aa=val(a$)
  205. 9010 ifaa<ezoraa>ez+9oraa>l(k)goto8100
  206. 9020 print""
  207. 9030 fori=0toaa-ez:print:next
  208. 9040 print"";:a$=f$(k,aa):ll=30
  209. 9050 gosub200:f$(k,aa)=a$:goto8100
  210. 9060 :
  211. 9200 print"[147]":open4,4,0
  212. 9205 print#4,"name: "n$(k):print#4
  213. 9210 fori=0tol(k)
  214. 9220 print#4,right$("  "+str$(i),4)"  "f$(k,i)
  215. 9230 next
  216. 9240 close4:goto8100
  217. 9250 :
  218. 9400 print"name: ";:a$=n$(k):gosub170:n$(k)=a$:goto8100
  219. 9410 :
  220. 9500 print"[147]abbruch durch _"
  221. 9510 fori=0to999:print""right$("  "+str$(i),4)" [146]  ";
  222. 9515 za=peek(kf+5*i)
  223. 9520 ifza=0goto9800
  224. 9525 print"";:if(zaand64)thenprint"";
  225. 9530 za=zaand15:printb$(za)" ";
  226. 9537 aq=int(peek(kf+5*i+2)/64):q=256*(peek(kf+5*i+2)and15)+peek(kf+5*i+1)
  227. 9538 ifq>2047thenq=q-4096
  228. 9539 a$="":ifza=0goto9555
  229. 9540 ifaq=0thena$="#"
  230. 9550 ifaq=2thena$="@"
  231. 9555 l=2:ifq<0thenl=1
  232. 9560 printa$mid$(str$(q),l)" ";
  233. 9570 ifza=0orza=4orza=10goto9800
  234. 9575 az=int(peek(kf+5*i+4)/64):z=256*(peek(kf+5*i+4)and15)+peek(kf+5*i+3)
  235. 9577 ifz>2047thenz=z-4096
  236. 9580 a$="":ifaz=0thena$="#"
  237. 9590 ifaz=2thena$="@"
  238. 9595 l=2:ifz<0thenl=1
  239. 9600 printa$mid$(str$(z),l)" ";
  240. 9800 print"[158]":geta$:ifa$="_"theni=999
  241. 9810 next:gosub5530:goto1500
  242.