home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Go64!
/
Go64_1999-04_1999_CSW_Side_A.d64
/
cc
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2023-02-26
|
8KB
|
294 lines
1 if peek(49152)<> 76 then sys57812"cc49152",8,1:poke780,0:sys65493
5 printchr$(8);chr$(142)
10 fl=855:mt=65536*256:db=1:sf=879:fs=1
11 rt=843:mz=5:te(0)=50:te(1)=50
20 poke sf,0:rem rennen nicht aktiv setzen (stopflag)
25 j=49152:sys j:rem timer und irq initialisieren
26 c=j+30
29 l$=" "
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]"
31 l2$="[194][157]":t$=l2$:l2$=t$+t$:l2$=l2$+l2$+l2$+l2$+l2$:l2$=l2$+l2$+t$+t$
40 dim t(4)
41 dim bt(4)
42 dim r(4) :rem rundenzeiten
50 mo$(0)="training ":mo$(1)="einzelfahrer":mo$(2)="team (normal)"
51 mo$(3)="team (rugby)"
52 f$(0)="fahrer 1":f$(1)="fahrer 2":f$(2)="fahrer 3":f$(3)="fahrer 4"
54 mr(0)=25:mr(1)=25:mr(2)=25:mr(3)=25
99 gosub4010
100 rem main
110 poke646,15:printchr$(147):print" - carrera count v1.0b -"
111 print"----------------------------------------"
120 print" f1 - setup (daten eingeben)"
130 print" f7 - zaehler (rennen starten)"
140 print" f3 - rennmodus: "mo$(mo)
170 print" q - quit"
175 print"----- (c) 1999 by peter steinmeyer -----"
180 getk$
182 if k$="[136]"then gosub500:goto100
184 if k$="q"ork$=chr$(3)then sysj+18:print"[147]ciao ..":printchr$(9):end
186 ifk$="[133]"then gosub5000:goto100
188 if k$="[134]"then gosub400:goto180
190 goto 180
200 rem zaehlschleife
210 for ba=0to3:ifpeek(fl+ba)=1then gosub2300:rem runde gefahren
220 next:gosub1200
222 if fw<>10 then gosub 2400:rem sieg!
230 getk$
231 if k$="[133]"then bt(0)=mt
232 if k$="[134]"then bt(1)=mt
233 if k$="[135]"then bt(2)=mt
234 if k$="[136]"then bt(3)=mt
235 if k$="1"then ff=1:ba=0:gosub2300
236 if k$="2"then ff=1:ba=1:gosub2300
237 if k$="3"then ff=1:ba=2:gosub2300
238 if k$="4"then ff=1:ba=3:gosub2300
240 if k$="q"ork$=chr$(3)thenpokesf,0:return
241 if k$="s"thenrs=1:gosub300:goto200
242 if k$="p"ork$=" "then gosub 2600
249 iffw<>10 then 230
250 goto200
299 rem
300 rem rennen starten
310 sysj+3:pokesf,0:rem strom aus
352 gosub3000:rem bildschirm
354 gosub4000:rem variablen init
356 ifmo>0then gosub3800:rem countdown
360 sysj+24:sysj+39:pokesf,1:sysj+6
370 return
400 rem modus
402 mo=mo+1:ifmo=4then mo=0
404 sysc,20,8:printmo$(mo):return
500 rem rennen
510 gosub 300
520 gosub 200
530 return
999 end
1000 rem holt zeit fuer ba in t1$
1010 t1=peek(rt+ba*3)+peek(rt+1+ba*3)*256+peek(rt+2+ba*3)*65536
1012 t2=int(t1/6000):t2$=str$(t2):t2$="00"+mid$(t2$,2)
1014 t3=t1-(t2*6000):t3=int(t3/100):t3$=str$(t3):t3$="00"+mid$(t3$,2)
1016 t4=t1-t2*6000-t3*100:t4$=str$(t4):t4$="00"+mid$(t4$,2)
1018 t1$=right$(t2$,2)+chr$(58)+right$(t3$,2)+"'"+right$(t4$,2)
1020 return
1100 getk$:ifk$=""then1100
1110 return
1200 rem beste(r) durchschnitt / runde
1205 sys c,14,24:poke646,15
1210 f=f+1:if f>20thenf=-10
1220 if f>0 then 1240
1225 bt=bt(0):i=0:poke646,15
1230 fort=1to3:ifbt(t)<btthen i=t:bt=bt(t)
1232 next
1234 if bt(i)<mtthenprint" beste runde :";f$(i);
1236 return
1240 if f>10then1300
1242 d=d(0):i=0
1245 fort=1to3:ifd(t)<dthen i=t:d=d(t)
1248 next
1250 ifd(i)<mtthenprint"bester schnitt:";f$(i);
1290 return
1300 print" modus: ";mo$(mo);" ";
1310 return
2300 rem zaehlen
2302 if fs=0ormo=0then2310
2304 if sf(ba)=1thensf(ba)=0:pokefl+ba,0:return
2310 r(ba)=r(ba)+1:ifr(ba)=100thenr(ba)=0
2315 sys j+36,r(ba),4+ba*9,5
2330 gosub1000
2332 if ff=1thengoto2392
2335 sysj+33,ba
2340 sys c,4+ba*9,15
2350 poke646,1:printt1$;
2360 poke fl+ba,0:rem rundenflag loe.
2370 if t1<bt(ba)thenbt(ba)=t1:sysc,4+9*ba,13:poke646,15:printt1$;
2375 gosub2800:rem rundenscnitt
2380 ifmo=1thengosub2900
2382 ifmo=2thengosub2920
2384 ifmo=3thengosub2950
2390 return
2392 rem keine zeiten ermitteln
2394 ff=0:pokefl+ba,0:return
2400 rem ende des rennens
2405 pokesf,0
2410 sysj+3
2420 sysc,0,24:print" ";
2422 sysc,0,24
2430 if mo=1thenprint"der sieger ist:"f$(fw);
2440 if mo=2thenprint"gewinner : "f$(2*fw);" und ";f$(2*fw+1);
2450 if mo=3thenprint"gewinner : "f$(fw);" und ";f$(fw+2);
2490 return
2600 rem pause
2605 if pf=1 then 2650
2610 pokesf,0:sysj+3:
2620 sys c,5,24:print"--pause--";
2630 pf=1:rem pausenflag
2640 return
2650 pf=0:poke sf,1:sysj+6
2690 return
2800 rem rundenschnitt
2805 ifd(ba)=mtthend(ba)=0
2810 d(ba)=d(ba)+t1:ifr(ba)=0then2840
2820 t1=int(d(ba)/r(ba)):gosub1012
2830 sysc,4+ba*9,11:poke646,15:printt1$;
2840 return
2900 ifr(ba)=mr(ba)thenfw=ba
2910 return
2920 rem ausw team norm
2925 tt(0)=r(0)+r(1):tt(1)=r(2)+r(3)
2928 if tt(0)=te(0)thenfw=0
2930 if tt(1)=te(1)thenfw=1
2932 poke646,15:sys c,4,1:print"team 1 runden:[157]";tt(0)
2934 poke646,15:sys c,22,1:print"team 2 runden:[157]";tt(1)
2949 return
2950 rem ausw team rug
2955 tt(0)=r(0)+r(2):tt(1)=r(1)+r(3)
2958 if tt(0)=te(0)thenfw=0
2960 if tt(1)=te(1)thenfw=1
2962 poke646,15:sys c,4,1:print"team 1 runden:[157]";tt(0)
2964 poke646,15:sys c,22,1:print"team 2 runden:[157]";tt(1)
2999 return
3000 rem renn-bildschirm aufbauen
3005 poke646,15:print"[147]";:rem hintergrund einfaerben
3010 poke646,14:print" [176]";l1$;"[174]";
3020 sys c,3,1:printl2$
3040 sys c,21,0:print"[178][157]";l2$;
3060 sys c,39,1:printl2$;
3070 print" [171]";l1$;"[179]";
3080 print" [194]";l1$;"[194]";
3090 sys c,12,2:print"[178][157]";left$(l2$,61)
3100 sys c,30,2:print"[178][157]";left$(l2$,61)
3110 sysc,3,12:print"[171]";l1$;"[179]";
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]";
3130 poke646,1:print"s[146][157]t[157]a[157]r[157]t[157] [157]";
3140 print"q[146][157]u[157]i[157]t[157] [157]";
3150 print"p[146][157]a[157]u[157]s[157]e[157] [157]";
3180 sysc,4,3:printleft$(f$(0)+" ",8)
3181 sysc,13,3:printleft$(f$(1)+" ",8)
3182 sysc,22,3:printleft$(f$(2)+" ",8)
3183 sysc,31,3:printleft$(f$(3)+" ",8)
3190 poke1125,91:poke1205,66:poke1525,91
3200 sysc,0,24:print"zeit:";:poke 880,5:poke881,24
3290 return
3800 rem countdown
3805 for t=10 to 0 step-1
3806 wt=50:gosub3900
3810 for ba=0to3
3820 sys j+36,t,4+ba*9,5:rem zahl anzeigen
3830 next:next
3890 return
3900 rem wait wt=wartezeit in 1/100s
3910 tw=ti
3920 if ti-tw<wtthen3920
3930 return
4000 rem variablen init fuer rennen
4001 if db=0then4010:rem bestzeiten loeschen?
4002 for i=0to3:bt(i)=mt:d(ba)=mt:next
4010 i=mz*100:poke860,i/256
4012 poke859,i-(peek(860)*256)
4020 fw =10
4040 fori=0to3:d(i)=mt:sf(i)=1:r(i)=0:next
4050 sf(4)=1
4070 for i=0to1:poke828,0:poke829,0:poke830,0:next
4090 return
5000 rem setup
5010 print"[147] setup "
5020 print"----------------------------------------"
5030 print" -m- modus: ";mo$(mo)
5035 print
5040 print" f1 name fahrer bahn 1: ";f$(0)
5041 print" f3 name fahrer bahn 2: ";f$(1)
5042 print" f5 name fahrer bahn 3: ";f$(2)
5043 print" f7 name fahrer bahn 4: ";f$(3)
5060 print
5062 print" -1- vorgabe bahn 1: ";mr(0)
5064 print" -2- vorgabe bahn 2: ";mr(1)
5066 print" -3- vorgabe bahn 3: ";mr(2)
5068 print" -4- vorgabe bahn 4: ";mr(3)
5070 print" -5- vorgabe team 1: ";te(0)
5072 print" -6- vorgabe team 2: ";te(1)
5100 print
5110 print" -b- bestzeiten loeschen: ";
5120 if db=0then print"nein"
5122 if db=1then print"ja "
5130 print" -z- minimale rundenzeit";mz;" sec"
5135 print" -f- fliegender start : ";
5136 if fs=0then print"nein"
5137 if fs=1then print"ja "
5190 print" -q- hauptmenu"
5195 print" -shift- und taste zaehlt herab !";
5500 getk$
5510 if k$="m"thengosub6000
5525 if k$="[133]"then gosub6100:goto5000
5530 if k$="[134]"then gosub6200:goto5000
5535 if k$="[135]"then gosub6300:goto5000
5540 if k$="[136]"then gosub6400:goto5000
5545 if k$="1"then gosub6500
5546 if k$="!"then gosub6510
5550 if k$="2"then gosub6520
5551 if k$=chr$(34)thengosub6530
5555 if k$="3"then gosub6540
5556 if k$="#"then gosub6550
5560 if k$="4"then gosub6560
5561 if k$="$"then gosub6570
5565 if k$="b"thengosub6600
5567 if k$="f"thengosub7000
5570 if k$="z"then gosub6700
5572 if k$="[218]"then gosub6750
5575 ifk$="5"thengosub6800
5577 ifk$="%"thengosub6850
5580 ifk$="6"thengosub6900
5582 ifk$="&"thengosub6950
5600 if k$="q"ork$=chr$(3)then return
5610 goto5500
6000 rem modus
6010 mo=mo+1:ifmo=4thenmo=0
6020 sysc,16,3:printmo$(mo):return
6100 sys c,1,20:input"fahrername:";f$:f$(0)=left$(f$+" ",8)
6105 sysc,26,5:printf$(0)
6110 sys c,1,20:printl$:return
6200 sys c,1,20:input"fahrername:";f$:f$(1)=left$(f$+" ",8)
6205 sysc,26,6:printf$(1)
6210 sys c,1,20:printl$:return
6300 sys c,1,20:input"fahrername:";f$:f$(2)=left$(f$+" ",8)
6305 sysc,26,7:printf$(2)
6310 sys c,1,20:printl$:return
6400 sys c,1,20:input"fahrername:";f$:f$(3)=left$(f$+" ",8)
6405 sysc,26,8:printf$(3)
6410 sys c,1,20:printl$:return
6500 mr(0)=mr(0)+1:ifmr(0)=100thenmr(0)=0
6505 sys c,21,10:printmr(0);"[157] ":return
6510 mr(0)=mr(0)-1:ifmr(0)=-1thenmr(0)=99
6515 sys c,21,10:printmr(0);"[157] ":return
6520 mr(1)=mr(1)+1:ifmr(1)=100thenmr(1)=0
6525 sys c,21,11:printmr(1);"[157] ":return
6530 mr(1)=mr(1)-1:ifmr(1)=-1thenmr(1)=99
6535 sys c,21,11:printmr(1);"[157] ":return
6540 mr(2)=mr(2)+1:ifmr(2)=100thenmr(2)=0
6545 sys c,21,12:printmr(2);"[157] ":return
6550 mr(2)=mr(2)-1:ifmr(2)=-1thenmr(2)=99
6555 sys c,21,12:printmr(2);"[157] ":return
6560 mr(3)=mr(3)+1:ifmr(3)=100thenmr(3)=0
6565 sys c,21,13:printmr(3);"[157] ":return
6570 mr(3)=mr(3)-1:ifmr(3)=-1thenmr(3)=99
6575 sys c,21,13:printmr(3);"[157] ":return
6600 if db=0thendb=1:sysc,26,17:print"ja ":return
6610 db=0:sysc,26,17:print"nein":return
6700 rem minimale rundenzeit
6710 mz=mz+1:ifmz>30thenmz=3
6720 sysc,24,18:printmz;"[157] ":return
6750 mz=mz-1:ifmz<3thenmz=30
6760 sysc,24,18:printmz;"[157] ":return
6800 rem team1 vorgabe
6810 te(0)=te(0)+10:ifte(0)>150thente(0)=10
6820 sysc,21,14:printte(0);"[157] ":return
6850 te(0)=te(0)-10:ifte(0)<10thente(0)=150
6860 sysc,21,14:printte(0);"[157] ":return
6900 rem team2 vorgabe
6910 te(1)=te(1)+10:ifte(1)>150thente(1)=10
6920 sysc,21,15:printte(1);"[157] ":return
6950 te(1)=te(1)-10:ifte(1)<10thente(1)=150
6960 sysc,21,15:printte(1);"[157] ":return
7000 if fs=0thenfs=1:sysc,26,19:print"ja ":return
7010 fs=0:sysc,26,19:print"nein":return