home *** CD-ROM | disk | FTP | other *** search
/ Go64! / Go64_1999-04_1999_CSW_Side_A.d64 / cc (.txt) < prev    next >
Commodore BASIC  |  2023-02-26  |  8KB  |  294 lines

  1. 1 if peek(49152)<> 76 then sys57812"cc49152",8,1:poke780,0:sys65493
  2. 5 printchr$(8);chr$(142)
  3. 10 fl=855:mt=65536*256:db=1:sf=879:fs=1
  4. 11 rt=843:mz=5:te(0)=50:te(1)=50
  5. 20 poke sf,0:rem rennen nicht aktiv setzen (stopflag)
  6. 25 j=49152:sys j:rem timer und irq initialisieren
  7. 26 c=j+30
  8. 29 l$="                                        "
  9. 30 l1$="[192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192]"
  10. 31 l2$="[194][157]":t$=l2$:l2$=t$+t$:l2$=l2$+l2$+l2$+l2$+l2$:l2$=l2$+l2$+t$+t$
  11. 40 dim t(4)
  12. 41 dim bt(4)
  13. 42 dim r(4) :rem rundenzeiten
  14. 50 mo$(0)="training     ":mo$(1)="einzelfahrer":mo$(2)="team (normal)"
  15. 51 mo$(3)="team (rugby)"
  16. 52 f$(0)="fahrer 1":f$(1)="fahrer 2":f$(2)="fahrer 3":f$(3)="fahrer 4"
  17. 54 mr(0)=25:mr(1)=25:mr(2)=25:mr(3)=25
  18. 99 gosub4010
  19. 100 rem main
  20. 110 poke646,15:printchr$(147):print"          - carrera count v1.0b -"
  21. 111 print"----------------------------------------"
  22. 120 print"    f1 - setup (daten eingeben)"
  23. 130 print"    f7 - zaehler (rennen starten)"
  24. 140 print"    f3 - rennmodus: "mo$(mo)
  25. 170 print"     q - quit"
  26. 175 print"----- (c) 1999 by peter steinmeyer -----"
  27. 180 getk$
  28. 182 if k$="[136]"then gosub500:goto100
  29. 184 if k$="q"ork$=chr$(3)then sysj+18:print"[147]ciao ..":printchr$(9):end
  30. 186 ifk$="[133]"then gosub5000:goto100
  31. 188 if k$="[134]"then gosub400:goto180
  32. 190 goto 180
  33. 200 rem zaehlschleife
  34. 210 for ba=0to3:ifpeek(fl+ba)=1then gosub2300:rem runde gefahren
  35. 220 next:gosub1200
  36. 222 if fw<>10 then gosub 2400:rem sieg!
  37. 230 getk$
  38. 231 if k$="[133]"then bt(0)=mt
  39. 232 if k$="[134]"then bt(1)=mt
  40. 233 if k$="[135]"then bt(2)=mt
  41. 234 if k$="[136]"then bt(3)=mt
  42. 235 if k$="1"then ff=1:ba=0:gosub2300
  43. 236 if k$="2"then ff=1:ba=1:gosub2300
  44. 237 if k$="3"then ff=1:ba=2:gosub2300
  45. 238 if k$="4"then ff=1:ba=3:gosub2300
  46. 240 if k$="q"ork$=chr$(3)thenpokesf,0:return
  47. 241 if k$="s"thenrs=1:gosub300:goto200
  48. 242 if k$="p"ork$=" "then gosub 2600
  49. 249 iffw<>10 then 230
  50. 250 goto200
  51. 299 rem
  52. 300 rem rennen starten
  53. 310 sysj+3:pokesf,0:rem strom aus
  54. 352 gosub3000:rem bildschirm
  55. 354 gosub4000:rem variablen init
  56. 356 ifmo>0then gosub3800:rem countdown
  57. 360 sysj+24:sysj+39:pokesf,1:sysj+6
  58. 370 return
  59. 400 rem modus
  60. 402 mo=mo+1:ifmo=4then mo=0
  61. 404 sysc,20,8:printmo$(mo):return
  62. 500 rem rennen
  63. 510 gosub 300
  64. 520 gosub 200
  65. 530 return
  66. 999 end
  67. 1000 rem holt zeit fuer ba in t1$
  68. 1010 t1=peek(rt+ba*3)+peek(rt+1+ba*3)*256+peek(rt+2+ba*3)*65536
  69. 1012 t2=int(t1/6000):t2$=str$(t2):t2$="00"+mid$(t2$,2)
  70. 1014 t3=t1-(t2*6000):t3=int(t3/100):t3$=str$(t3):t3$="00"+mid$(t3$,2)
  71. 1016 t4=t1-t2*6000-t3*100:t4$=str$(t4):t4$="00"+mid$(t4$,2)
  72. 1018 t1$=right$(t2$,2)+chr$(58)+right$(t3$,2)+"'"+right$(t4$,2)
  73. 1020 return
  74. 1100 getk$:ifk$=""then1100
  75. 1110 return
  76. 1200 rem beste(r) durchschnitt / runde
  77. 1205 sys c,14,24:poke646,15
  78. 1210 f=f+1:if f>20thenf=-10
  79. 1220 if f>0 then 1240
  80. 1225 bt=bt(0):i=0:poke646,15
  81. 1230 fort=1to3:ifbt(t)<btthen i=t:bt=bt(t)
  82. 1232 next
  83. 1234 if bt(i)<mtthenprint"  beste runde :";f$(i);
  84. 1236 return
  85. 1240 if f>10then1300
  86. 1242 d=d(0):i=0
  87. 1245 fort=1to3:ifd(t)<dthen i=t:d=d(t)
  88. 1248 next
  89. 1250 ifd(i)<mtthenprint"bester schnitt:";f$(i);
  90. 1290 return
  91. 1300 print"  modus: ";mo$(mo);"   ";
  92. 1310 return
  93. 2300 rem zaehlen
  94. 2302 if fs=0ormo=0then2310
  95. 2304 if sf(ba)=1thensf(ba)=0:pokefl+ba,0:return
  96. 2310 r(ba)=r(ba)+1:ifr(ba)=100thenr(ba)=0
  97. 2315 sys j+36,r(ba),4+ba*9,5
  98. 2330 gosub1000
  99. 2332 if ff=1thengoto2392
  100. 2335 sysj+33,ba
  101. 2340 sys c,4+ba*9,15
  102. 2350 poke646,1:printt1$;
  103. 2360 poke fl+ba,0:rem rundenflag loe.
  104. 2370 if t1<bt(ba)thenbt(ba)=t1:sysc,4+9*ba,13:poke646,15:printt1$;
  105. 2375 gosub2800:rem rundenscnitt
  106. 2380 ifmo=1thengosub2900
  107. 2382 ifmo=2thengosub2920
  108. 2384 ifmo=3thengosub2950
  109. 2390 return
  110. 2392 rem keine zeiten ermitteln
  111. 2394 ff=0:pokefl+ba,0:return
  112. 2400 rem ende des rennens
  113. 2405 pokesf,0
  114. 2410 sysj+3
  115. 2420 sysc,0,24:print"                                       ";
  116. 2422 sysc,0,24
  117. 2430 if mo=1thenprint"der sieger ist:"f$(fw);
  118. 2440 if mo=2thenprint"gewinner : "f$(2*fw);" und ";f$(2*fw+1);
  119. 2450 if mo=3thenprint"gewinner : "f$(fw);" und ";f$(fw+2);
  120. 2490 return
  121. 2600 rem pause
  122. 2605 if pf=1 then 2650
  123. 2610 pokesf,0:sysj+3:
  124. 2620 sys c,5,24:print"--pause--";
  125. 2630 pf=1:rem pausenflag
  126. 2640 return
  127. 2650 pf=0:poke sf,1:sysj+6
  128. 2690 return
  129. 2800 rem rundenschnitt
  130. 2805 ifd(ba)=mtthend(ba)=0
  131. 2810 d(ba)=d(ba)+t1:ifr(ba)=0then2840
  132. 2820 t1=int(d(ba)/r(ba)):gosub1012
  133. 2830 sysc,4+ba*9,11:poke646,15:printt1$;
  134. 2840 return
  135. 2900 ifr(ba)=mr(ba)thenfw=ba
  136. 2910 return
  137. 2920 rem ausw team norm
  138. 2925 tt(0)=r(0)+r(1):tt(1)=r(2)+r(3)
  139. 2928 if tt(0)=te(0)thenfw=0
  140. 2930 if tt(1)=te(1)thenfw=1
  141. 2932 poke646,15:sys c,4,1:print"team 1 runden:[157]";tt(0)
  142. 2934 poke646,15:sys c,22,1:print"team 2 runden:[157]";tt(1)
  143. 2949 return
  144. 2950 rem ausw team rug
  145. 2955 tt(0)=r(0)+r(2):tt(1)=r(1)+r(3)
  146. 2958 if tt(0)=te(0)thenfw=0
  147. 2960 if tt(1)=te(1)thenfw=1
  148. 2962 poke646,15:sys c,4,1:print"team 1 runden:[157]";tt(0)
  149. 2964 poke646,15:sys c,22,1:print"team 2 runden:[157]";tt(1)
  150. 2999 return
  151. 3000 rem renn-bildschirm aufbauen
  152. 3005 poke646,15:print"[147]";:rem hintergrund einfaerben
  153. 3010 poke646,14:print"   [176]";l1$;"[174]";
  154. 3020 sys c,3,1:printl2$
  155. 3040 sys c,21,0:print"[178][157]";l2$;
  156. 3060 sys c,39,1:printl2$;
  157. 3070 print"   [171]";l1$;"[179]";
  158. 3080 print"   [194]";l1$;"[194]";
  159. 3090 sys c,12,2:print"[178][157]";left$(l2$,61)
  160. 3100 sys c,30,2:print"[178][157]";left$(l2$,61)
  161. 3110 sysc,3,12:print"[171]";l1$;"[179]";
  162. 3120 sysc,3,23:print"[173][192][192][192][192][192][192][192][192][177][192][192][192][192][192][192][192][192][177][192][192][192][192][192][192][192][192][177][192][192][192][192][192][192][192][192][189]";
  163. 3130 poke646,1:print"s[146][157]t[157]a[157]r[157]t[157] [157]";
  164. 3140 print"q[146][157]u[157]i[157]t[157] [157]";
  165. 3150 print"p[146][157]a[157]u[157]s[157]e[157] [157]";
  166. 3180 sysc,4,3:printleft$(f$(0)+"        ",8)
  167. 3181 sysc,13,3:printleft$(f$(1)+"        ",8)
  168. 3182 sysc,22,3:printleft$(f$(2)+"        ",8)
  169. 3183 sysc,31,3:printleft$(f$(3)+"        ",8)
  170. 3190 poke1125,91:poke1205,66:poke1525,91
  171. 3200 sysc,0,24:print"zeit:";:poke 880,5:poke881,24
  172. 3290 return
  173. 3800 rem countdown
  174. 3805 for t=10 to 0 step-1
  175. 3806 wt=50:gosub3900
  176. 3810 for ba=0to3
  177. 3820 sys j+36,t,4+ba*9,5:rem zahl anzeigen
  178. 3830 next:next
  179. 3890 return
  180. 3900 rem wait wt=wartezeit in 1/100s
  181. 3910 tw=ti
  182. 3920 if ti-tw<wtthen3920
  183. 3930 return
  184. 4000 rem variablen init fuer rennen
  185. 4001 if db=0then4010:rem bestzeiten loeschen?
  186. 4002 for i=0to3:bt(i)=mt:d(ba)=mt:next
  187. 4010 i=mz*100:poke860,i/256
  188. 4012 poke859,i-(peek(860)*256)
  189. 4020 fw =10
  190. 4040 fori=0to3:d(i)=mt:sf(i)=1:r(i)=0:next
  191. 4050 sf(4)=1
  192. 4070 for i=0to1:poke828,0:poke829,0:poke830,0:next
  193. 4090 return
  194. 5000 rem setup
  195. 5010 print"[147]                   setup "
  196. 5020 print"----------------------------------------"
  197. 5030 print" -m-     modus:  ";mo$(mo)
  198. 5035 print
  199. 5040 print"  f1  name fahrer bahn 1: ";f$(0)
  200. 5041 print"  f3  name fahrer bahn 2: ";f$(1)
  201. 5042 print"  f5  name fahrer bahn 3: ";f$(2)
  202. 5043 print"  f7  name fahrer bahn 4: ";f$(3)
  203. 5060 print
  204. 5062 print" -1- vorgabe bahn 1: ";mr(0)
  205. 5064 print" -2- vorgabe bahn 2: ";mr(1)
  206. 5066 print" -3- vorgabe bahn 3: ";mr(2)
  207. 5068 print" -4- vorgabe bahn 4: ";mr(3)
  208. 5070 print" -5- vorgabe team 1: ";te(0)
  209. 5072 print" -6- vorgabe team 2: ";te(1)
  210. 5100 print
  211. 5110 print" -b- bestzeiten loeschen: ";
  212. 5120 if db=0then print"nein"
  213. 5122 if db=1then print"ja  "
  214. 5130 print" -z- minimale rundenzeit";mz;" sec"
  215. 5135 print" -f- fliegender start   : ";
  216. 5136 if fs=0then print"nein"
  217. 5137 if fs=1then print"ja  "
  218. 5190 print" -q-  hauptmenu"
  219. 5195 print" -shift- und taste zaehlt herab !";
  220. 5500 getk$
  221. 5510 if k$="m"thengosub6000
  222. 5525 if k$="[133]"then gosub6100:goto5000
  223. 5530 if k$="[134]"then gosub6200:goto5000
  224. 5535 if k$="[135]"then gosub6300:goto5000
  225. 5540 if k$="[136]"then gosub6400:goto5000
  226. 5545 if k$="1"then gosub6500
  227. 5546 if k$="!"then gosub6510
  228. 5550 if k$="2"then gosub6520
  229. 5551 if k$=chr$(34)thengosub6530
  230. 5555 if k$="3"then gosub6540
  231. 5556 if k$="#"then gosub6550
  232. 5560 if k$="4"then gosub6560
  233. 5561 if k$="$"then gosub6570
  234. 5565 if k$="b"thengosub6600
  235. 5567 if k$="f"thengosub7000
  236. 5570 if k$="z"then gosub6700
  237. 5572 if k$="[218]"then gosub6750
  238. 5575 ifk$="5"thengosub6800
  239. 5577 ifk$="%"thengosub6850
  240. 5580 ifk$="6"thengosub6900
  241. 5582 ifk$="&"thengosub6950
  242. 5600 if k$="q"ork$=chr$(3)then return
  243. 5610 goto5500
  244. 6000 rem modus
  245. 6010 mo=mo+1:ifmo=4thenmo=0
  246. 6020 sysc,16,3:printmo$(mo):return
  247. 6100 sys c,1,20:input"fahrername:";f$:f$(0)=left$(f$+"        ",8)
  248. 6105 sysc,26,5:printf$(0)
  249. 6110 sys c,1,20:printl$:return
  250. 6200 sys c,1,20:input"fahrername:";f$:f$(1)=left$(f$+"        ",8)
  251. 6205 sysc,26,6:printf$(1)
  252. 6210 sys c,1,20:printl$:return
  253. 6300 sys c,1,20:input"fahrername:";f$:f$(2)=left$(f$+"        ",8)
  254. 6305 sysc,26,7:printf$(2)
  255. 6310 sys c,1,20:printl$:return
  256. 6400 sys c,1,20:input"fahrername:";f$:f$(3)=left$(f$+"        ",8)
  257. 6405 sysc,26,8:printf$(3)
  258. 6410 sys c,1,20:printl$:return
  259. 6500 mr(0)=mr(0)+1:ifmr(0)=100thenmr(0)=0
  260. 6505 sys c,21,10:printmr(0);"[157] ":return
  261. 6510 mr(0)=mr(0)-1:ifmr(0)=-1thenmr(0)=99
  262. 6515 sys c,21,10:printmr(0);"[157] ":return
  263. 6520 mr(1)=mr(1)+1:ifmr(1)=100thenmr(1)=0
  264. 6525 sys c,21,11:printmr(1);"[157] ":return
  265. 6530 mr(1)=mr(1)-1:ifmr(1)=-1thenmr(1)=99
  266. 6535 sys c,21,11:printmr(1);"[157] ":return
  267. 6540 mr(2)=mr(2)+1:ifmr(2)=100thenmr(2)=0
  268. 6545 sys c,21,12:printmr(2);"[157] ":return
  269. 6550 mr(2)=mr(2)-1:ifmr(2)=-1thenmr(2)=99
  270. 6555 sys c,21,12:printmr(2);"[157] ":return
  271. 6560 mr(3)=mr(3)+1:ifmr(3)=100thenmr(3)=0
  272. 6565 sys c,21,13:printmr(3);"[157] ":return
  273. 6570 mr(3)=mr(3)-1:ifmr(3)=-1thenmr(3)=99
  274. 6575 sys c,21,13:printmr(3);"[157] ":return
  275. 6600 if db=0thendb=1:sysc,26,17:print"ja  ":return
  276. 6610 db=0:sysc,26,17:print"nein":return
  277. 6700 rem minimale rundenzeit
  278. 6710 mz=mz+1:ifmz>30thenmz=3
  279. 6720 sysc,24,18:printmz;"[157] ":return
  280. 6750 mz=mz-1:ifmz<3thenmz=30
  281. 6760 sysc,24,18:printmz;"[157] ":return
  282. 6800 rem team1 vorgabe
  283. 6810 te(0)=te(0)+10:ifte(0)>150thente(0)=10
  284. 6820 sysc,21,14:printte(0);"[157] ":return
  285. 6850 te(0)=te(0)-10:ifte(0)<10thente(0)=150
  286. 6860 sysc,21,14:printte(0);"[157] ":return
  287. 6900 rem team2 vorgabe
  288. 6910 te(1)=te(1)+10:ifte(1)>150thente(1)=10
  289. 6920 sysc,21,15:printte(1);"[157] ":return
  290. 6950 te(1)=te(1)-10:ifte(1)<10thente(1)=150
  291. 6960 sysc,21,15:printte(1);"[157] ":return
  292. 7000 if fs=0thenfs=1:sysc,26,19:print"ja  ":return
  293. 7010 fs=0:sysc,26,19:print"nein":return
  294.