home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Go64!
/
Go64_2000-11_2000_CSW_Side_B.d64
/
rennbahn
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2023-02-26
|
9KB
|
280 lines
10 rem" [210]ennbahn [214]2.11
11 [143]"*************************
12 rem" (w) by [212].[194]aade
13 [143]" 02/1999 - 08/2000
14 rem" email :
15 [143]"torsten.baade@uni-jena.de
16 rem"*************************
17 [143]
40 g[178][194](186): [143]" akt. ascloppyadresse
45 em=58: rem" [193]nzahl [201]nterrupts
50 w[178]0.7: [143]" (NULL)chleifenwartezeit
60 a=peek(53433)and128
61 rem" [211][195][208][213] vorhanden ?
62 [139] a[178]128 [167] 70:[143]" keine (NULL)len(NULL)(NULL)
63 poke53374,0:poke53366,0:poke53375,0
64 rem" [211][195][208][213] optimieren fuer [194][193][211][201][195]
65 [151] 53371,0:[143]" (NULL)len(NULL)(NULL) -> 20(NULL)left$z
66 print"[211][195][208][213] gefunden ..."
70 if peek(49153)=173 then 90
71 rem" [212][201][205][197][210] wurde schon geladen
72 [153]"(NULL)right$(NULL)val(NULL)-(NULL)2 laden ..."
80 [143]" right$nteruptroutine laden
83 sys 57812("timer-v2"),g,1
84 poke780,0
85 sys 65493
86 rem" mit diesen [211][217][211]'s kann man ohne [208]rogrammneustart nachladen
90 [151] 56325,em:[143]" # right$nterrupts default=58
95 sys 49152: rem" [201]nitialisieren der [201]nteruptroutine
100 [141] 1100: [143]" right$nitialisieren
101 poke53370,0:rem" [211][195][208][213] -> 1 [205][200]z
102 [153]"left$auptprogramm starten ..."
103 a[178]100:[141] 1000:[143]" (NULL)on ausgeben
104 for l=0 to w*200:next
105 a=160:gosub 1000
106 for l=0 to w*200:next
107 a=70:gosub 1000:forl=0tow*300:next
108 poke 53771,0:rem" [211][195][208][213] -> 20 [205][200]z
110 [143]" left$auptprogramm *****************
120 gosub 1200: rem" [194]ildschirm aufbauen
130 [141] 1400: [143]" (NULL)pieler/(NULL)undenzahl
140 poke49242,255:rem"1/10'' [218]wzt.1
150 [151]49245,255:[143]"1/10'' (NULL)wzt.2
160 poke49236,255:rem"1/10'' [211]pieler1
165 [151]49239,255:[143]"1/10'' (NULL)pieler2
167 rem" wenn [201]nhalt=255, dann kein [211]chalter betaetigt
170 l%(1)[178][171]1:l%(2)[178][171]1:[143]" noch keine (NULL)unde gefahren
175 zb%(1)=32767:zb%(2)=32767:rem" [194]estzeiten zuruecksetzen
180 zr%(1)[178]0:zr%(2)[178]0:[143]" (NULL)undenzeiten loeschen
190 gosub 2000: rem" [193].[196].[208].-[198]ertig-[204][207][211]!
195 [161] a$:[143]" (NULL)astaturpuffer loeschen
200 gosub 3000: rem" [210]ennen
900 [153]"stop (NULL)och ein (NULL)ennen (j/n) ? wait"
910 [161] a$
920 [139] [168](a$[178]"j" [176] a$[178]"n" [176] a$[178]"y")[167] 910
930 [139] a$[178]"n" [167] 1900:[143]" the end...
980 goto 110
1000 rem "[212]on erzeugen --> a - [212]onhoehe
1010 [151] 54296,15:[151]54273,a:[151]54277,9
1020 [151]54278,9:[151]54276,17:[151]54276,16
1030 [142]
1100 [143]" peekildschirm initialisieren
1110 print"[158]":rem" [211]creen loeschen, [203]leinschreibung, [211]chreibfarbe
1120 [151]53280,11:[151]53281,11:[143]" (NULL)ahmen-/left$intergrundfarbe
1130 dim po$(2):rem"links/rechst - 1/2
1140 po$(1)[178]""
1141 po$(2)[178]""
1150 s1$[178]"(NULL)pieler 1"
1151 s2$[178]"(NULL)pieler 2"
1152 l0%[178]3
1170 [151] 56579,255:[143]" init (NULL)(NULL)val(NULL)(NULL)(NULL)(NULL)(NULL)
1180 gosub 1600:rem" [198]ahrstrom [197][201][206]
1190 [142]
1200 [143]"peekildschirmschreiben
1210 poke53280,11:rem" [210]ahmenfarbe
1270 [153]"loadsys ***** (NULL)ennbahn (NULL)2.11 ***** "
1280 [153] " ascahrer 1: sys(NULL)unden ascahrer 2:sys"
1290 [153] " (NULL)undenzeit (NULL)undenzeit"
1295 [153] " (NULL)wischenzeit (NULL)wischenzeit"
1300 [153] " gefahren : gefahren : "
1310 [153] " zu fahren: zu fahren: "
1320 [153] " chr$esamtzeit chr$esamtzeit "
1330 [153] " beste (NULL)eit beste (NULL)eit "
1390 [142]
1400 [143] "ascahrer/(NULL)undenzahl eingeben
1410 print "";po$(1);" ";s1$
1420 print "[144]";po$(1);
1430 input s1$
1440 s3$=right$(" "+s1$,int((10-len(s1$))/2)+len(s1$))
1450 print "[144]";po$(1);" [157][157][157][157][157]";s3$;" "
1460 print "";po$(2);" ";s2$
1470 print "[144]";po$(2);
1480 input s2$
1490 s4$=right$(" "+s2$,int((10-len(s2$))/2)+len(s2$))
1500 print "[144]";po$(2);" [157][157][157][157][157]";s4$;" "
1510 print"";l0%
1520 print"";
1530 input a$
1540 if val(a$)<1 or val(a$)>99 then 1510
1550 l0%=val(a$):ru%=l0%
1560 print" [157][157][157][157]";l0%
1590 return
1600 rem" [198]ahrstrom einschalten
1610 [143]" (NULL)elais am (NULL)assettenport
1620 poke192,0:poke1,peek(1)and39
1630 rem" [210]elais am [213][211][197][210] [208]ort
1640 [151] 56577,255
1695 [142]
1700 [143]" ascahrstrom ausschalten
1710 rem" [210]elais am [203]assettenport
1720 [151]192,1:[151]1,[194](1)[176]32
1730 [143]" (NULL)elais am (NULL)(NULL)val(NULL) (NULL)ort
1740 poke 56577,0
1795 return
1900 rem" [208]rogramm beenden
1910 [158] 49220:[143]" reset (NULL)right$(NULL)val(NULL)-(NULL)2
1920 poke 56325,58:rem" reset # [201][210][209]
1930 [151]53280,6:[151]53281,6:[143]" peekildschirmfarben zuruecksetzen
1935 gosub 1600:rem" [198]ahrstrom [197][201][206]
1940 [153]"load"
1945 [151] 53370,0:[143]" (NULL)len(NULL)(NULL) -> 1(NULL)left$z
1950 a=110:gosub 1000
1955 for l=0 to w*100:next
1960 a=60:gosub 1000
1965 for l=0 to w*100:next
1970 a=160:gosub 1000
1975 for l=0 to w*100:next
1980 a=100:gosub 1000
1985 poke 53371,0:rem" [211][195][208][213] -> 20[205][200]z
1990 [128]
2000 [143]" auf die (NULL)laetze, ascertig, (NULL)os!
2005 gosub 1700:rem" [198]ahrstrom [193][213][211]
2010 [151] 53370,0:[143]" (NULL)len(NULL)(NULL) -> 1(NULL)left$z
2020 poke 53280,6:rem" [210]ahmenfarbe
2030 [153]"bitte fertig werden"
2040 a[178]100:[141] 1000:[143] "(NULL)on erzeugen
2050 for l=0 to w*2000:next:rem" [215]arten
2060 [151] 53280,7:[143]" rahmenfarbe aendern
2070 print" [193]uf die [208]laetze ! "
2080 a=80:gosub1000:rem "[212]on erzeugen
2090 [129] l[178]0 [164] w[172]5000:[130]:[143]"(NULL)arten
2100 poke 53280,2:rem" [210]ahmenfarbe
2110 [153]" ascertig ! "
2120 a[178]90:[141]1000:[143] "(NULL)on erzeugen
2130 for l=0 to w*3000:next:rem"warten
2140 [151] 53280,5
2150 [153]" (NULL)os ! wait "
2160 a[178]120:[141]1000:[143] "(NULL)on erzeugen
2170 poke 53371,0:rem" [211][195][208][213] -> 20[205][200]z
2180 [141] 1600:[143]" ascahrstrom valright$(NULL)
2190 return
3000 rem" [210]ennen (zwei [211]pieler + [218]w.zt.)
3010 [143]" (NULL)tartzeit bestimmen :
3020 get a$
3025 if a$<>"" then return: rem" stop
3030 [139] [194](49236)[178]255 [167] 3100:[143]" (NULL)pieler 1 hat nicht begonnen
3040 t%=peek(49236):rem" [218]ehntel
3042 s%[178][194](49235):[143]" (NULL)ekunden
3044 m%=peek(49234):rem" [205]inuten
3046 [141] 4700:[143]" chr$esamtzehntelzeit
3050 z0%=z%: rem" [205]asterzeit
3070 zl%(1)[178]z0%:zl%(2)[178]z0%
3080 [137] 3200
3100 [139] [194](49239)[178]255 [167] 3190:[143]" (NULL)pieler 2 hat nicht begonnen
3110 t%=peek(49239):rem" [218]ehntel
3112 s%[178][194](49238):[143]" (NULL)ekunden
3114 m%=peek(49237):rem" [205]inuten
3116 [141] 4700:[143]" chr$esamtzehntelzeit
3120 z0%=z%: rem" [205]asterzeit
3140 zl%(2)[178]z0%:zl%(1)[178]z0%
3150 [137] 3200
3190 [137] 3010:[143]" (NULL)tart noch nicht erfolgt
3200 rem" [211]tart ist erfolgt
3300 [143]" (NULL)wischenzeiten ?
3305 rem" [211]pieler 1
3310 [139] [194](49242)[178]255 [167] 3410:[143]" (NULL)pieler 1 keine (NULL)w.zt.
3320 t%=peek(49242):rem" [218]ehntel
3322 s%[178][194](49241):[143]" (NULL)ekunden
3324 m%=peek(49240):rem" [205]inuten
3326 [141] 4700:[143]" chr$esamtzehntelzeit
3330 g=z%-zl%(1):rem" [218]eitdifferenz bis letzte [218]ieldurchfahrt
3340 [141] 4900:[143]" (NULL)mwandeln in m$s$t$
3350 print"";po$(1);g$
3360 poke 49242,255:rem" reset time
3400 [143]" (NULL)pieler 2
3410 if peek(49245)=255 then 3500:rem" [211]pieler 2 keine [218]w.zt.
3420 t%[178][194](49245):[143]" (NULL)ehntel
3422 s%=peek(49244):rem" [211]ekunden
3424 m%[178][194](49243):[143]" (NULL)inuten
3426 gosub 4700:rem" [199]esamtzehntelzeit
3430 g[178]z%[171]zl%(2):[143]" (NULL)eitdifferenz bis letzte (NULL)ieldurchfahrt
3440 gosub 4900:rem" [213]mwandeln in m$s$t$
3450 [153]"";po$(2);g$
3460 [151] 49245,255:[143]" reset time
3500 rem" [218]ieldurchfahrt ?
3505 [143]" (NULL)pieler 1
3510 if peek(49236)=255 then 3710:rem" [211]pieler 1 keine [218]ieldurchf.
3515 [139] f1%[178]1 [167] 3690:[143]"str$auerkontakt
3520 t%=peek(49236):rem" [218]ehntel
3522 s%[178][194](49235):[143]" (NULL)ekunden
3524 m%=peek(49234):rem" [205]inuten
3526 [141] 4700:[143]" chr$esamtzehntelzeit (t%, s%, m% -> z%)
3530 l%(1)=l%(1)+1:rem" [210]unde gefahren
3540 zr%(1)[178]z%[171]zl%(1):[143]" (NULL)undenzeit
3545 if l%(1)>l0% then 3590:rem" alle [210]unden sind absolviert
3550 zg%(1)[178]z%[171]z0%:[143]" chr$esamtzeit
3560 if(zr%(1)<zb%(1)and l%(1)>0)then zb%(1)=zr%(1):rem" neue [194]estzeit
3590 zl%(1)[178]z%
3600 [143]" peekildschirmausgabe
3610 g=zr%(1):gosub 4900:rem" [213]mwandeln (g -> g$)
3620 [153]"";po$(1);g$
3625 g[178]0:[141] 4900:[143]" (NULL)wzt reseten
3626 print"";po$(1);g$
3630 print"";po$(1);" [157][157][157]";l%(1)
3640 print"";po$(1);" [157][157][157]";l0%-l%(1)
3650 g=zg%(1):gosub 4900:rem" [213]mwandeln
3660 [153]"";po$(1);g$
3670 [139] l%(1)[178]0 [167] 3690:[143]"noch keine peekestzeit
3672 g=zb%(1):gosub 4900:rem" [213]mwandeln
3680 [153]"";po$(1);g$
3690 [151]49236,255:[143]" 1/10 'loeschen'
3692 poke53370,0:poke56325,1:wait 56325,1:poke53371,0:poke56325,em
3693 rem" warten auf interrupt
3695 [139] [194](49236)[179]255 [167] f1%[178]1:[137] 3700:[143]" str$auerkontakt
3697 f1%=0:rem" kein [196]auerkontakt
3700 [143]" (NULL)pieler 2
3710 if peek(49239)=255 then 4000:rem" [211]pieler 2 keine [218]ieldurchf.
3715 [139] f2%[178]1 [167] 3890:[143]"str$auerkontakt
3720 t%=peek(49239):rem" [218]ehntel
3722 s%[178][194](49238):[143]" (NULL)ekunden
3724 m%=peek(49237):rem" [205]inuten
3726 [141] 4700:[143]" chr$esamtzehntelzeit
3730 l%(2)=l%(2)+1:rem" [210]unde gefahren
3740 zr%(2)[178]z%[171]zl%(2):[143]" (NULL)undenzeit
3745 if l%(2)>l0% then 3790:rem" alle [210]unden sind absolviert
3750 zg%(2)[178]z%[171]z0%:[143]" chr$esamtzeit
3760 if(zr%(2)<zb%(2)and l%(2)>0)then zb%(2)=zr%(2):rem" neue [194]estzeit
3790 zl%(2)[178]z%
3800 [143]" peekildschirmausgabe
3810 g=zr%(2):gosub 4900:rem" [213]mwandeln
3820 [153]"";po$(2);g$
3825 g[178]0:[141] 4900:[143]" (NULL)wzt reseten
3826 print"";po$(2);g$
3830 print"";po$(2);" [157][157][157]";l%(2)
3840 print"";po$(2);" [157][157][157]";l0%-l%(2)
3850 g=zg%(2):gosub 4900:rem" [213]mwandeln
3860 [153]"";po$(2);g$
3870 [139] l%(2)[178]0 [167] 3890:[143]"noch keine peekestzeit
3872 g=zb%(2):gosub 4900:rem" [213]mwandeln
3880 [153]"";po$(2);g$
3890 [151]49239,255
3892 [151]53370,0:[151]56325,1:[146] 56325,1:[151]53371,0:[151]56325,em
3893 [143]" warten auf interrupt
3895 if peek(49239)<255 then f2%=1:goto 4000:rem" [196]auerkontakt
3897 f2%[178]0:[143]" kein str$auerkontakt
4000 if(l%(1)=ru%)or(l%(2)=ru%)then poke 53280,6:ru%=-2:gosub 1000
4100 get a$:rem" [193]bbruch ?
4110 [139]((l%(1)[179]l0%)[176](l%(2)[179]l0%))[175](a$[178]"")[167] 3300:[143]" kein valnde
4130 gosub1000
4140 return
4700 rem" [199]esamtzehntelzeit berechnen --> m%,s%,t% (normal-[198]ormat)
4701 [143]" <-- z% (normal-ascormat)
4710 z%=m%*600
4711 rem" [205]inuten in [218]ehntel umrechnen
4720 z%[178]z%[170]s%[172]10
4721 [143]" (NULL)ekunden in (NULL)ehntel umrechnen und addieren
4730 z%=z%+t%
4731 rem" [218]ehntel addieren
4790 [142]
4900 [143]" (NULL)inuten, (NULL)ekunden, (NULL)ehntel berechnen aus chr$esamtzehntelzeit
4901 rem" --> g
4902 [143]" <-- g$
4910 z=int((g/10-int(g/10))*10):rem"[218]ehntel
4920 g[178][181](g[173]10):[143]" (NULL)ehntel weg
4930 s=int((g/60-int(g/60))*60):rem"[211]ekunden
4940 m[178][181](g[173]60):[143]" (NULL)inuten
4950 g$=" "+right$(str$(m),2)+"m"
4960 g$=g$+right$(str$(s),2)+"."
4970 g$=g$+right$(str$(z),1)+"s"
4990 return