home *** CD-ROM | disk | FTP | other *** search
/ Go64! / Go64_2000-11_2000_CSW_Side_B.d64 / rennbahn (.txt) < prev    next >
Commodore BASIC  |  2023-02-26  |  9KB  |  280 lines

  1. 10 rem"     [210]ennbahn [214]2.11
  2. 11 [143]"*************************
  3. 12 rem"     (w) by [212].[194]aade
  4. 13 [143]"   02/1999 - 08/2000
  5. 14 rem"         email :
  6. 15 [143]"torsten.baade@uni-jena.de
  7. 16 rem"*************************
  8. 17 [143]
  9. 40 g[178][194](186): [143]" akt. ascloppyadresse
  10. 45 em=58:       rem" [193]nzahl [201]nterrupts
  11. 50 w[178]0.7:       [143]" (NULL)chleifenwartezeit
  12. 60 a=peek(53433)and128
  13. 61 rem" [211][195][208][213] vorhanden ?
  14. 62 [139] a[178]128 [167] 70:[143]" keine (NULL)len(NULL)(NULL)
  15. 63 poke53374,0:poke53366,0:poke53375,0
  16. 64 rem" [211][195][208][213] optimieren fuer [194][193][211][201][195]
  17. 65 [151] 53371,0:[143]" (NULL)len(NULL)(NULL) -> 20(NULL)left$z
  18. 66 print"[211][195][208][213] gefunden ..."
  19. 70 if peek(49153)=173 then 90
  20. 71 rem" [212][201][205][197][210]  wurde schon geladen
  21. 72 [153]"(NULL)right$(NULL)val(NULL)-(NULL)2 laden ..."
  22. 80 [143]" right$nteruptroutine laden
  23. 83 sys 57812("timer-v2"),g,1
  24. 84 poke780,0
  25. 85 sys 65493
  26. 86 rem" mit diesen [211][217][211]'s kann man ohne     [208]rogrammneustart nachladen
  27. 90 [151] 56325,em:[143]" # right$nterrupts                             default=58
  28. 95 sys 49152:    rem" [201]nitialisieren der                      [201]nteruptroutine
  29. 100 [141] 1100:  [143]" right$nitialisieren
  30. 101 poke53370,0:rem" [211][195][208][213] -> 1 [205][200]z
  31. 102 [153]"left$auptprogramm starten ..."
  32. 103 a[178]100:[141] 1000:[143]" (NULL)on ausgeben
  33. 104 for l=0 to w*200:next
  34. 105 a=160:gosub 1000
  35. 106 for l=0 to w*200:next
  36. 107 a=70:gosub 1000:forl=0tow*300:next
  37. 108 poke 53771,0:rem" [211][195][208][213] -> 20 [205][200]z
  38. 110 [143]" left$auptprogramm *****************
  39. 120 gosub 1200: rem" [194]ildschirm aufbauen
  40. 130 [141] 1400: [143]" (NULL)pieler/(NULL)undenzahl
  41. 140 poke49242,255:rem"1/10'' [218]wzt.1
  42. 150 [151]49245,255:[143]"1/10'' (NULL)wzt.2
  43. 160 poke49236,255:rem"1/10'' [211]pieler1
  44. 165 [151]49239,255:[143]"1/10'' (NULL)pieler2
  45. 167 rem" wenn [201]nhalt=255, dann kein              [211]chalter betaetigt
  46. 170 l%(1)[178][171]1:l%(2)[178][171]1:[143]"                      noch keine (NULL)unde gefahren
  47. 175 zb%(1)=32767:zb%(2)=32767:rem"              [194]estzeiten zuruecksetzen
  48. 180 zr%(1)[178]0:zr%(2)[178]0:[143]"                      (NULL)undenzeiten loeschen
  49. 190 gosub 2000: rem" [193].[196].[208].-[198]ertig-[204][207][211]!
  50. 195 [161] a$:[143]" (NULL)astaturpuffer loeschen
  51. 200 gosub 3000: rem" [210]ennen
  52. 900 [153]"stop        (NULL)och ein (NULL)ennen (j/n) ?       wait"
  53. 910 [161] a$
  54. 920 [139] [168](a$[178]"j" [176] a$[178]"n" [176] a$[178]"y")[167] 910
  55. 930 [139] a$[178]"n" [167] 1900:[143]" the end...
  56. 980 goto 110
  57. 1000 rem "[212]on erzeugen --> a - [212]onhoehe
  58. 1010 [151] 54296,15:[151]54273,a:[151]54277,9
  59. 1020 [151]54278,9:[151]54276,17:[151]54276,16
  60. 1030 [142]
  61. 1100 [143]"   peekildschirm initialisieren
  62. 1110 print"[158]":rem" [211]creen loeschen,        [203]leinschreibung, [211]chreibfarbe
  63. 1120 [151]53280,11:[151]53281,11:[143]"          (NULL)ahmen-/left$intergrundfarbe
  64. 1130 dim po$(2):rem"links/rechst - 1/2
  65. 1140 po$(1)[178]""
  66. 1141 po$(2)[178]""
  67. 1150 s1$[178]"(NULL)pieler 1"
  68. 1151 s2$[178]"(NULL)pieler 2"
  69. 1152 l0%[178]3
  70. 1170 [151] 56579,255:[143]" init (NULL)(NULL)val(NULL)(NULL)(NULL)(NULL)(NULL)
  71. 1180 gosub 1600:rem" [198]ahrstrom [197][201][206]
  72. 1190 [142]
  73. 1200 [143]"peekildschirmschreiben
  74. 1210 poke53280,11:rem" [210]ahmenfarbe
  75. 1270 [153]"loadsys  *****      (NULL)ennbahn (NULL)2.11      *****  "
  76. 1280 [153] "     ascahrer 1:   sys(NULL)unden  ascahrer 2:sys"
  77. 1290 [153] "     (NULL)undenzeit          (NULL)undenzeit"
  78. 1295 [153] "    (NULL)wischenzeit        (NULL)wischenzeit"
  79. 1300 [153] "     gefahren :          gefahren : "
  80. 1310 [153] "     zu fahren:          zu fahren: "
  81. 1320 [153] "     chr$esamtzeit          chr$esamtzeit "
  82. 1330 [153] "     beste (NULL)eit          beste (NULL)eit "
  83. 1390 [142]
  84. 1400 [143] "ascahrer/(NULL)undenzahl eingeben
  85. 1410 print "";po$(1);"  ";s1$
  86. 1420 print "[144]";po$(1);
  87. 1430 input s1$
  88. 1440 s3$=right$("          "+s1$,int((10-len(s1$))/2)+len(s1$))
  89. 1450 print "[144]";po$(1);"     [157][157][157][157][157]";s3$;"     "
  90. 1460 print "";po$(2);"  ";s2$
  91. 1470 print "[144]";po$(2);
  92. 1480 input s2$
  93. 1490 s4$=right$("          "+s2$,int((10-len(s2$))/2)+len(s2$))
  94. 1500 print "[144]";po$(2);"     [157][157][157][157][157]";s4$;"     "
  95. 1510 print"";l0%
  96. 1520 print"";
  97. 1530 input a$
  98. 1540 if val(a$)<1 or val(a$)>99 then 1510
  99. 1550 l0%=val(a$):ru%=l0%
  100. 1560 print"      [157][157][157][157]";l0%
  101. 1590 return
  102. 1600 rem" [198]ahrstrom einschalten
  103. 1610 [143]" (NULL)elais am (NULL)assettenport
  104. 1620 poke192,0:poke1,peek(1)and39
  105. 1630 rem" [210]elais am [213][211][197][210] [208]ort
  106. 1640 [151] 56577,255
  107. 1695 [142]
  108. 1700 [143]" ascahrstrom ausschalten
  109. 1710 rem" [210]elais am [203]assettenport
  110. 1720 [151]192,1:[151]1,[194](1)[176]32
  111. 1730 [143]" (NULL)elais am (NULL)(NULL)val(NULL) (NULL)ort
  112. 1740 poke 56577,0
  113. 1795 return
  114. 1900 rem" [208]rogramm beenden
  115. 1910 [158] 49220:[143]" reset (NULL)right$(NULL)val(NULL)-(NULL)2
  116. 1920 poke 56325,58:rem" reset # [201][210][209]
  117. 1930 [151]53280,6:[151]53281,6:[143]"            peekildschirmfarben zuruecksetzen
  118. 1935 gosub 1600:rem" [198]ahrstrom [197][201][206]
  119. 1940 [153]"load"
  120. 1945 [151] 53370,0:[143]" (NULL)len(NULL)(NULL) -> 1(NULL)left$z
  121. 1950 a=110:gosub 1000
  122. 1955 for l=0 to w*100:next
  123. 1960 a=60:gosub 1000
  124. 1965 for l=0 to w*100:next
  125. 1970 a=160:gosub 1000
  126. 1975 for l=0 to w*100:next
  127. 1980 a=100:gosub 1000
  128. 1985 poke 53371,0:rem" [211][195][208][213] -> 20[205][200]z
  129. 1990 [128]
  130. 2000 [143]" auf die (NULL)laetze, ascertig, (NULL)os!
  131. 2005 gosub 1700:rem" [198]ahrstrom [193][213][211]
  132. 2010 [151] 53370,0:[143]" (NULL)len(NULL)(NULL) -> 1(NULL)left$z
  133. 2020 poke 53280,6:rem" [210]ahmenfarbe
  134. 2030 [153]"bitte fertig werden"
  135. 2040 a[178]100:[141] 1000:[143] "(NULL)on erzeugen
  136. 2050 for l=0 to w*2000:next:rem" [215]arten
  137. 2060 [151] 53280,7:[143]" rahmenfarbe                             aendern
  138. 2070 print"  [193]uf die [208]laetze ! "
  139. 2080 a=80:gosub1000:rem "[212]on erzeugen
  140. 2090 [129] l[178]0 [164] w[172]5000:[130]:[143]"(NULL)arten
  141. 2100 poke 53280,2:rem" [210]ahmenfarbe
  142. 2110 [153]"      ascertig !      "
  143. 2120 a[178]90:[141]1000:[143] "(NULL)on erzeugen
  144. 2130 for l=0 to w*3000:next:rem"warten
  145. 2140 [151] 53280,5
  146. 2150 [153]"       (NULL)os !       wait "
  147. 2160 a[178]120:[141]1000:[143] "(NULL)on erzeugen
  148. 2170 poke 53371,0:rem" [211][195][208][213] -> 20[205][200]z
  149. 2180 [141] 1600:[143]" ascahrstrom valright$(NULL)
  150. 2190 return
  151. 3000 rem" [210]ennen (zwei [211]pieler + [218]w.zt.)
  152. 3010 [143]" (NULL)tartzeit bestimmen :
  153. 3020 get a$
  154. 3025 if a$<>"" then return: rem" stop
  155. 3030 [139] [194](49236)[178]255 [167] 3100:[143]"            (NULL)pieler 1 hat nicht begonnen
  156. 3040 t%=peek(49236):rem" [218]ehntel
  157. 3042 s%[178][194](49235):[143]" (NULL)ekunden
  158. 3044 m%=peek(49234):rem" [205]inuten
  159. 3046 [141] 4700:[143]" chr$esamtzehntelzeit
  160. 3050 z0%=z%: rem" [205]asterzeit
  161. 3070 zl%(1)[178]z0%:zl%(2)[178]z0%
  162. 3080 [137] 3200
  163. 3100 [139] [194](49239)[178]255 [167] 3190:[143]"            (NULL)pieler 2 hat nicht begonnen
  164. 3110 t%=peek(49239):rem" [218]ehntel
  165. 3112 s%[178][194](49238):[143]" (NULL)ekunden
  166. 3114 m%=peek(49237):rem" [205]inuten
  167. 3116 [141] 4700:[143]" chr$esamtzehntelzeit
  168. 3120 z0%=z%: rem" [205]asterzeit
  169. 3140 zl%(2)[178]z0%:zl%(1)[178]z0%
  170. 3150 [137] 3200
  171. 3190 [137] 3010:[143]" (NULL)tart noch nicht                        erfolgt
  172. 3200 rem" [211]tart ist erfolgt
  173. 3300 [143]" (NULL)wischenzeiten ?
  174. 3305 rem" [211]pieler 1
  175. 3310 [139] [194](49242)[178]255 [167] 3410:[143]"            (NULL)pieler 1 keine (NULL)w.zt.
  176. 3320 t%=peek(49242):rem" [218]ehntel
  177. 3322 s%[178][194](49241):[143]" (NULL)ekunden
  178. 3324 m%=peek(49240):rem" [205]inuten
  179. 3326 [141] 4700:[143]" chr$esamtzehntelzeit
  180. 3330 g=z%-zl%(1):rem" [218]eitdifferenz bis                  letzte [218]ieldurchfahrt
  181. 3340 [141] 4900:[143]" (NULL)mwandeln in m$s$t$
  182. 3350 print"";po$(1);g$
  183. 3360 poke 49242,255:rem" reset time
  184. 3400 [143]" (NULL)pieler 2
  185. 3410 if peek(49245)=255 then 3500:rem"            [211]pieler 2 keine [218]w.zt.
  186. 3420 t%[178][194](49245):[143]" (NULL)ehntel
  187. 3422 s%=peek(49244):rem" [211]ekunden
  188. 3424 m%[178][194](49243):[143]" (NULL)inuten
  189. 3426 gosub 4700:rem" [199]esamtzehntelzeit
  190. 3430 g[178]z%[171]zl%(2):[143]" (NULL)eitdifferenz bis                  letzte (NULL)ieldurchfahrt
  191. 3440 gosub 4900:rem" [213]mwandeln in m$s$t$
  192. 3450 [153]"";po$(2);g$
  193. 3460 [151] 49245,255:[143]" reset time
  194. 3500 rem" [218]ieldurchfahrt ?
  195. 3505 [143]" (NULL)pieler 1
  196. 3510 if peek(49236)=255 then 3710:rem"            [211]pieler 1 keine [218]ieldurchf.
  197. 3515 [139] f1%[178]1 [167] 3690:[143]"str$auerkontakt
  198. 3520 t%=peek(49236):rem" [218]ehntel
  199. 3522 s%[178][194](49235):[143]" (NULL)ekunden
  200. 3524 m%=peek(49234):rem" [205]inuten
  201. 3526 [141] 4700:[143]" chr$esamtzehntelzeit                       (t%, s%, m% -> z%)
  202. 3530 l%(1)=l%(1)+1:rem" [210]unde gefahren
  203. 3540 zr%(1)[178]z%[171]zl%(1):[143]" (NULL)undenzeit
  204. 3545 if l%(1)>l0% then 3590:rem" alle                [210]unden sind absolviert
  205. 3550 zg%(1)[178]z%[171]z0%:[143]" chr$esamtzeit
  206. 3560 if(zr%(1)<zb%(1)and l%(1)>0)then zb%(1)=zr%(1):rem" neue [194]estzeit
  207. 3590 zl%(1)[178]z%
  208. 3600 [143]" peekildschirmausgabe
  209. 3610 g=zr%(1):gosub 4900:rem" [213]mwandeln                               (g -> g$)
  210. 3620 [153]"";po$(1);g$
  211. 3625 g[178]0:[141] 4900:[143]" (NULL)wzt reseten
  212. 3626 print"";po$(1);g$
  213. 3630 print"";po$(1);"      [157][157][157]";l%(1)
  214. 3640 print"";po$(1);"      [157][157][157]";l0%-l%(1)
  215. 3650 g=zg%(1):gosub 4900:rem" [213]mwandeln
  216. 3660 [153]"";po$(1);g$
  217. 3670 [139] l%(1)[178]0 [167] 3690:[143]"noch keine                              peekestzeit
  218. 3672 g=zb%(1):gosub 4900:rem" [213]mwandeln
  219. 3680 [153]"";po$(1);g$
  220. 3690 [151]49236,255:[143]" 1/10 'loeschen'
  221. 3692 poke53370,0:poke56325,1:wait 56325,1:poke53371,0:poke56325,em
  222. 3693 rem" warten auf interrupt
  223. 3695 [139] [194](49236)[179]255 [167] f1%[178]1:[137] 3700:[143]" str$auerkontakt
  224. 3697 f1%=0:rem" kein [196]auerkontakt
  225. 3700 [143]" (NULL)pieler 2
  226. 3710 if peek(49239)=255 then 4000:rem"            [211]pieler 2 keine [218]ieldurchf.
  227. 3715 [139] f2%[178]1 [167] 3890:[143]"str$auerkontakt
  228. 3720 t%=peek(49239):rem" [218]ehntel
  229. 3722 s%[178][194](49238):[143]" (NULL)ekunden
  230. 3724 m%=peek(49237):rem" [205]inuten
  231. 3726 [141] 4700:[143]" chr$esamtzehntelzeit
  232. 3730 l%(2)=l%(2)+1:rem" [210]unde gefahren
  233. 3740 zr%(2)[178]z%[171]zl%(2):[143]" (NULL)undenzeit
  234. 3745 if l%(2)>l0% then 3790:rem" alle                [210]unden sind absolviert
  235. 3750 zg%(2)[178]z%[171]z0%:[143]" chr$esamtzeit
  236. 3760 if(zr%(2)<zb%(2)and l%(2)>0)then zb%(2)=zr%(2):rem" neue [194]estzeit
  237. 3790 zl%(2)[178]z%
  238. 3800 [143]" peekildschirmausgabe
  239. 3810 g=zr%(2):gosub 4900:rem" [213]mwandeln
  240. 3820 [153]"";po$(2);g$
  241. 3825 g[178]0:[141] 4900:[143]" (NULL)wzt reseten
  242. 3826 print"";po$(2);g$
  243. 3830 print"";po$(2);"      [157][157][157]";l%(2)
  244. 3840 print"";po$(2);"      [157][157][157]";l0%-l%(2)
  245. 3850 g=zg%(2):gosub 4900:rem" [213]mwandeln
  246. 3860 [153]"";po$(2);g$
  247. 3870 [139] l%(2)[178]0 [167] 3890:[143]"noch keine                              peekestzeit
  248. 3872 g=zb%(2):gosub 4900:rem" [213]mwandeln
  249. 3880 [153]"";po$(2);g$
  250. 3890 [151]49239,255
  251. 3892 [151]53370,0:[151]56325,1:[146] 56325,1:[151]53371,0:[151]56325,em
  252. 3893 [143]" warten auf interrupt
  253. 3895 if peek(49239)<255 then f2%=1:goto 4000:rem" [196]auerkontakt
  254. 3897 f2%[178]0:[143]" kein str$auerkontakt
  255. 4000 if(l%(1)=ru%)or(l%(2)=ru%)then poke 53280,6:ru%=-2:gosub 1000
  256. 4100 get a$:rem" [193]bbruch ?
  257. 4110 [139]((l%(1)[179]l0%)[176](l%(2)[179]l0%))[175](a$[178]"")[167] 3300:[143]" kein valnde
  258. 4130 gosub1000
  259. 4140 return
  260. 4700 rem" [199]esamtzehntelzeit berechnen             --> m%,s%,t% (normal-[198]ormat)
  261. 4701 [143]" <-- z%       (normal-ascormat)
  262. 4710 z%=m%*600
  263. 4711 rem" [205]inuten in [218]ehntel umrechnen
  264. 4720 z%[178]z%[170]s%[172]10
  265. 4721 [143]" (NULL)ekunden in (NULL)ehntel umrechnen           und addieren
  266. 4730 z%=z%+t%
  267. 4731 rem" [218]ehntel addieren
  268. 4790 [142]
  269. 4900 [143]" (NULL)inuten, (NULL)ekunden, (NULL)ehntel         berechnen aus chr$esamtzehntelzeit
  270. 4901 rem" --> g
  271. 4902 [143]" <-- g$
  272. 4910 z=int((g/10-int(g/10))*10):rem"[218]ehntel
  273. 4920 g[178][181](g[173]10):[143]" (NULL)ehntel weg
  274. 4930 s=int((g/60-int(g/60))*60):rem"[211]ekunden
  275. 4940 m[178][181](g[173]60):[143]" (NULL)inuten
  276. 4950 g$=" "+right$(str$(m),2)+"m"
  277. 4960 g$=g$+right$(str$(s),2)+"."
  278. 4970 g$=g$+right$(str$(z),1)+"s"
  279. 4990 return
  280.