home *** CD-ROM | disk | FTP | other *** search
- 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@sport/moeller.de
- 16 rem"*************************
- 17 [143]
- 40 g[178][194](186): [143]" # of ascloppy
- 45 em=58: rem" # of interrupts
- 50 w[178]0.7: [143]" loop waiting time
- 60 a=peek(53433)and128
- 61 rem" [211][195][208][213] enabled ?
- 62 [139] a[178]128 [167] 70:[143]" no (NULL)len(NULL)(NULL)
- 63 poke53374,0:poke53366,0:poke53375,0
- 64 rem" optimize [211][195][208][213] for [194][193][211][201][195]
- 65 [151] 53371,0:[143]" (NULL)len(NULL)(NULL) -> 20(NULL)left$z
- 66 print"[211][195][208][213] found ..."
- 70 if peek(49153)=173 then 90
- 71 rem" [212][201][205][197][210] allways loaded
- 72 [153]"loading (NULL)right$(NULL)val(NULL)-(NULL)2 ..."
- 80 [143]" load interrupt routine
- 83 sys 57812("timer-v2"),g,1
- 84 poke780,0
- 85 sys 65493
- 86 rem" wit this [211][217][211]'s you can load new program parts witout new start
- 90 [151] 56325,em:[143]" # right$nterrupts default=58
- 95 sys 49152: rem" init interrupt routine
- 100 [141] 1100: [143]" init program
- 101 poke53370,0:rem" [211][195][208][213] -> 1 [205][200]z
- 102 [153]"start main program ..."
- 103 a[178]100:[141] 1000:[143]" sound
- 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]" main program *****************
- 120 gosub 1200: rem" init screen
- 130 [141] 1400: [143]" driver/# of laps
- 140 poke49242,255:rem"1/10'' interim1
- 150 [151]49245,255:[143]"1/10'' interim2
- 160 poke49236,255:rem"1/10'' driver1
- 165 [151]49239,255:[143]"1/10'' driver2
- 167 rem" if content=255, then no switch was actuated
- 170 l%(1)[178][171]1:l%(2)[178][171]1:[143]" always no lap driven
- 175 zb%(1)=32767:zb%(2)=32767:rem" reset best time
- 180 zr%(1)[178]0:zr%(2)[178]0:[143]" reset lap time
- 190 gosub 2000: rem" ready-steady-go!
- 195 [161] a$:[143]" reset key buffer
- 200 gosub 3000: rem" the [210][193][195][197]
- 900 [153]"stop another race (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 "make sound --> a - frequency
- 1010 [151] 54296,15:[151]54273,a:[151]54277,9
- 1020 [151]54278,9:[151]54276,17:[151]54276,16
- 1030 [142]
- 1100 [143]" init screen
- 1110 print"[158]":rem" clear screen, print mode, ink color
- 1120 [151]53280,11:[151]53281,11:[143]" background/frame color
- 1130 dim po$(2):rem"left/right - 1/2
- 1140 po$(1)[178]""
- 1141 po$(2)[178]""
- 1150 s1$[178]"player1"
- 1151 s2$[178]"player2"
- 1152 l0%[178]3
- 1170 [151] 56579,255:[143]" init (NULL)(NULL)val(NULL)(NULL)(NULL)(NULL)(NULL)
- 1180 gosub 1600:rem" power [207][206]
- 1190 [142]
- 1200 [143]"print on screen
- 1210 poke53280,11:rem" frame color
- 1270 [153]"loadsys ***** (NULL)atnlenval (NULL)(NULL)atnlen(NULL) (NULL)2.11 ***** "
- 1280 [153] " driver 1: sys laps driver 2:sys"
- 1290 [153] " lap time : lap time :"
- 1295 [153] " interim 1: interim 2:"
- 1300 [153] " driven : driven :"
- 1310 [153] " to go : to go :"
- 1320 [153] " total time total time"
- 1330 [153] " best time: best time:"
- 1390 [142]
- 1400 [143] "enter drivers & # of laps
- 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" power [207][206]
- 1610 [143]" (NULL)elais at cassette port
- 1620 poke192,0:poke1,peek(1)and39
- 1630 rem" [210]elais at [213][211][197][210] [208]ort
- 1640 [151] 56577,255
- 1695 [142]
- 1700 [143]" power (NULL)ascasc
- 1710 rem" [210]elais at cassette port
- 1720 [151]192,1:[151]1,[194](1)[176]32
- 1730 [143]" (NULL)elais at (NULL)(NULL)val(NULL) (NULL)ort
- 1740 poke 56577,0
- 1795 return
- 1900 rem" end program
- 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]" reset colors
- 1935 gosub 1600:rem" power [207][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]" (NULL)eady, (NULL)teady, chr$(NULL)!
- 2005 gosub 1700:rem" power [207][206]
- 2010 [151] 53370,0:[143]" (NULL)len(NULL)(NULL) -> 1(NULL)left$z
- 2020 poke 53280,6:rem" frame color
- 2030 [153]"prepare for race"
- 2040 a[178]100:[141] 1000:[143] "sound
- 2050 for l=0 to w*2000:next:rem" wait
- 2060 [151] 53280,7:[143]"change frame color
- 2070 print" [210][197][193][196][217]! "
- 2080 a=80:gosub1000:rem "sound
- 2090 [129] l[178]0 [164] w[172]5000:[130]:[143]"wait
- 2100 poke 53280,2:rem" frame color
- 2110 [153]" (NULL)(NULL)valatnstr$(NULL)! "
- 2120 a[178]90:[141]1000:[143] "sound
- 2130 for l=0 to w*3000:next:rem"wait
- 2140 [151] 53280,5
- 2150 [153]" chr$(NULL) ! wait"
- 2160 a[178]120:[141]1000:[143] "sound
- 2170 poke 53371,0:rem" [211][195][208][213] -> 20[205][200]z
- 2180 [141] 1600:[143]" power (NULL)(NULL)
- 2190 return
- 3000 rem" [210]ace (two [208]layer + interim)
- 3010 [143]" determine start time:
- 3020 get a$
- 3025 if a$<>"" then return: rem" stop
- 3030 [139] [194](49236)[178]255 [167] 3100:[143]" driver1 did not started yet
- 3040 t%=peek(49236):rem" 1/10
- 3042 s%[178][194](49235):[143]" (NULL)econds
- 3044 m%=peek(49234):rem" [205]inutes
- 3046 [141] 4700:[143]" total time in 1/10
- 3050 z0%=z%: rem" [205]astertime
- 3070 zl%(1)[178]z0%:zl%(2)[178]z0%
- 3080 [137] 3200
- 3100 [139] [194](49239)[178]255 [167] 3190:[143]" driver2 did not started yet
- 3110 t%=peek(49239):rem" 1/10
- 3112 s%[178][194](49238):[143]" (NULL)econds
- 3114 m%=peek(49237):rem" [205]inutes
- 3116 [141] 4700:[143]" total time in 1/10
- 3120 z0%=z%: rem" [205]astertime
- 3140 zl%(2)[178]z0%:zl%(1)[178]z0%
- 3150 [137] 3200
- 3190 [137] 3010:[143]" (NULL)tart did not happened yet
- 3200 rem" [211]tart always done
- 3300 [143]" right$nterims ?
- 3305 rem" [208]layer 1
- 3310 [139] [194](49242)[178]255 [167] 3410:[143]" driver1 no interim
- 3320 t%=peek(49242):rem" 1/10
- 3322 s%[178][194](49241):[143]" (NULL)econds
- 3324 m%=peek(49240):rem" [205]inutes
- 3326 [141] 4700:[143]" total time 1/10
- 3330 g=z%-zl%(1):rem" time diference to last finis line
- 3340 [141] 4900:[143]" change to m$s$t$
- 3350 print"";po$(1);g$
- 3360 poke 49242,255:rem" reset time
- 3400 [143]" (NULL)layer 2
- 3410 if peek(49245)=255 then 3500:rem" [208]layer 2 no interim
- 3420 t%[178][194](49245):[143]" 1/10
- 3422 s%=peek(49244):rem" [211]econds
- 3424 m%[178][194](49243):[143]" (NULL)inutes
- 3426 gosub 4700:rem" total time 1/10
- 3430 g[178]z%[171]zl%(2):[143]" str$ifference to last finish line
- 3440 gosub 4900:rem" [195]hange to m$s$t$
- 3450 [153]"";po$(2);g$
- 3460 [151] 49245,255:[143]" reset time
- 3500 rem" [198]inish line ?
- 3505 [143]" (NULL)pieler 1
- 3510 if peek(49236)=255 then 3710:rem" [208]layer 1 not
- 3515 [139] f1%[178]1 [167] 3690:[143]"permanent contact
- 3520 t%=peek(49236):rem" 1/10
- 3522 s%[178][194](49235):[143]" (NULL)ekunden
- 3524 m%=peek(49234):rem" [205]inuten
- 3526 [141] 4700:[143]" total time 1/10 (t%, s%, m% -> z%)
- 3530 l%(1)=l%(1)+1:rem" lap driven
- 3540 zr%(1)[178]z%[171]zl%(1):[143]" lap time
- 3545 if l%(1)>l0% then 3590:rem" all laps driven
- 3550 zg%(1)[178]z%[171]z0%:[143]" (NULL)otal time
- 3560 if(zr%(1)<zb%(1)and l%(1)>0)then zb%(1)=zr%(1):rem" new best time
- 3590 zl%(1)[178]z%
- 3600 [143]" print on screen
- 3610 g=zr%(1):gosub 4900:rem" [195]hange (g -> g$)
- 3620 [153]"";po$(1);g$
- 3625 g[178]0:[141] 4900:[143]" reset interim
- 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" [195]hange
- 3660 [153]"";po$(1);g$
- 3670 [139] l%(1)[178]0 [167] 3690:[143]"no best time
- 3672 g=zb%(1):gosub 4900:rem" change
- 3680 [153]"";po$(1);g$
- 3690 [151]49236,255:[143]" 1/10 'clear'
- 3692 poke53370,0:poke56325,1:wait 56325,1:poke53371,0:poke56325,em
- 3693 rem" wait for interrupt
- 3695 [139] [194](49236)[179]255 [167] f1%[178]1:[137] 3700:[143]" permantent contact
- 3697 f1%=0:rem" no permanent contact
- 3700 [143]" (NULL)layer 2
- 3710 if peek(49239)=255 then 4000:rem" [208]layer 2 no finish
- 3715 [139] f2%[178]1 [167] 3890:[143]"permanent contact
- 3720 t%=peek(49239):rem" 1/10
- 3722 s%[178][194](49238):[143]" (NULL)ekunden
- 3724 m%=peek(49237):rem" [205]inuten
- 3726 [141] 4700:[143]" total time 1/10
- 3730 l%(2)=l%(2)+1:rem" lap driven
- 3740 zr%(2)[178]z%[171]zl%(2):[143]" lap time
- 3745 if l%(2)>l0% then 3790:rem" all laps driven
- 3750 zg%(2)[178]z%[171]z0%:[143]" total time
- 3760 if(zr%(2)<zb%(2)and l%(2)>0)then zb%(2)=zr%(2):rem" new best time
- 3790 zl%(2)[178]z%
- 3800 [143]" print to screen
- 3810 g=zr%(2):gosub 4900:rem" [195]hange
- 3820 [153]"";po$(2);g$
- 3825 g[178]0:[141] 4900:[143]" reset interim
- 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" [195]hange
- 3860 [153]"";po$(2);g$
- 3870 [139] l%(2)[178]0 [167] 3890:[143]"no best time
- 3872 g=zb%(2):gosub 4900:rem" [195]ange
- 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]" wait for interrupt
- 3895 if peek(49239)<255 then f2%=1:goto 4000:rem" permanent contact
- 3897 f2%[178]0:[143]" no permanent contact
- 4000 if(l%(1)=ru%)or(l%(2)=ru%)then poke 53280,6:ru%=-2:gosub 1000
- 4100 get a$:rem" cancel ?
- 4110 [139]((l%(1)[179]l0%)[176](l%(2)[179]l0%))[175](a$[178]"")[167] 3300:[143]" no end
- 4130 gosub1000
- 4140 return
- 4700 rem" calculate total time in 1/10 --> m%,s%,t% (normal-[198]ormat)
- 4701 [143]" <-- z% (normal-ascormat)
- 4710 z%=m%*600
- 4711 rem" [205]inutes to 1/10
- 4720 z%[178]z%[170]s%[172]10
- 4721 [143]" (NULL)econds to 1/10 and add
- 4730 z%=z%+t%
- 4731 rem" add 1/10
- 4790 [142]
- 4900 [143]" (NULL)inutes, (NULL)econds, 1/10 calculate from total 1/10
- 4901 rem" --> g
- 4902 [143]" <-- g$
- 4910 z=int((g/10-int(g/10))*10):rem"1/10
- 4920 g[178][181](g[173]10):[143]" sub 1/10
- 4930 s=int((g/60-int(g/60))*60):rem"sec
- 4940 m[178][181](g[173]60):[143]" (NULL)inutes
- 4950 g$=" "+right$(str$(m),2)+"m"
- 4960 g$=g$+right$(str$(s),2)+"."
- 4970 g$=g$+right$(str$(z),1)+"s"
- 4990 return
-