Listing of file='BOWLER.BAS;01' on disk='vmedia/chip_1-sector.ccvf'
1 X= RND (- PEEK (33209)) 2 PLOT 30,16:PLOT 12 5 HC= PEEK (33278) 10 DIM PL(7,9),P5(10,2) 15 DIM SC(2,11,3) 17 DIM FR(2),TF(2,3) 19 FR(1)= 1:FR(2)= 1 20 GOSUB 800:GOSUB 830 100 PLOT 12:PLOT 15 105 PLOT 30,17:PLOT 29,19 108 W= 10 110 FOR X= 0TO W 120 PLOT 3,0,X 130 FOR Y= 0TO 61:PRINT "`";:NEXT Y 135 PRINT 140 NEXT X 142 PLOT 3,19,11,6,6:PRINT "PRESS ANY KEY TO ROLL BALL" 145 GOSUB 5000:REM SET UP PINS 146 GOSUB 5050:REM SET UP SCOREBOARD 147 FH= 1:GOTO 10020 148 REM 150 X= 3:POKE (33278),32 160 PLOT 30,17:PLOT 29,19 165 FOR Y= 1TO W- 1:PLOT 3,X,Y:PLOT 29,16:PRINT "#":PLOT 3,X,Y- 1:PLOT 29,19:PRINT "`":GOSUB 1000:NEXT Y 170 FOR Y= W- 1TO 1STEP - 1:PLOT 3,X,Y:PLOT 29,16:PRINT "#":PLOT 3,X,Y+ 1:PLOT 29,19:PRINT "`":GOSUB 1000:NEXT Y 190 GOTO 160 200 REM PIN HITTING SUBROUTINE 202 Y= YH:PH= 0 205 IF FH> 1THEN 210 207 RS= RND (1):IF RS> .2AND RS< .8AND (Y= 4OR Y= 6)THEN PH= 10:GOTO 900 210 SP= RND (1):SP= (INT (SP* 10))/ 10:IF SP> .6THEN 210 220 FOR X= 1TO 7 225 IF SP> .3THEN 240 230 IF PL(X,Y- 1)> 0THEN GOSUB 300:REM PIN HIT LEFT 240 IF PL(X,Y)> 0THEN GOSUB 400:REM PIN HIT CENTER 245 IF SP< .3THEN 260 250 IF PL(X,Y+ 1)> 0THEN GOSUB 500:REM PIN HIT RIGHT 255 IF H1> 0THEN GOSUB 850 257 H1= 0 260 NEXT X 270 GOTO 10000 300 IF SP= 0THEN XI= 1:YI= .166667:GOTO 330 310 IF SP= .1THEN XI= 1:YI= .5:GOTO 330 320 IF SP= .2THEN XI= .5:YI= .75:GOTO 330 325 XI= 0:YI= 1 330 PD= PL(X,Y- 1):GOSUB 600:PL(X,Y- 1)= 0:PH= PH+ 1 340 HX= X:HY= Y- 1 350 HX= HX+ XI:HY= HY- YI:IX= INT (HX):IY= INT (HY) 360 IF IX> 7OR IY< 2OR IY> 8THEN GOSUB 850:RETURN 370 IF PL(IX,IY)> 0THEN PD= PL(IX,IY):GOSUB 600:PL(IX,IY)= 0:PH= PH+ 1 380 GOTO 350 400 IF SP= 0THEN XI= .5:YI= .75:GOTO 470 410 IF SP= .1THEN XI= 1:YI= .5:GOTO 470 420 IF SP= .2THEN XI= 1:YI= .166667:GOTO 470 430 IF SP= .3THEN XI= 1:YI= 0:GOTO 470 440 IF SP= .4THEN XI= 1:YI= - .166667:GOTO 470 450 IF SP= .5THEN XI= 1:YI= - .5:GOTO 470 460 IF SP= .6THEN XI= .5:YI= - .75 470 HX= X:HY= Y:PD= PL(X,Y):GOSUB 600:PL(X,Y)= 0:PH= PH+ 1 480 GOTO 350 500 IF SP= .3THEN XI= 0:YI= - 1:GOTO 540 510 IF SP= .4THEN XI= .5:YI= - .75 520 IF SP= .5THEN XI= 1:YI= - .5:GOTO 540 530 IF SP= .6THEN XI= 1:YI= - .166667 540 HX= X:HY= Y+ 1:PD= PL(X,Y+ 1):PL(X,Y+ 1)= 0:GOSUB 600:PH= PH+ 1 550 GOTO 350 600 REM PIN RESETTER 610 PLOT 30,17:PLOT 29,19 620 PLOT 3,P5(PD,1),P5(PD,2):PRINT "`":RETURN 799 REM SUB. 800 SETS UP WORK ARRAY 800 FOR X= 0TO 7:FOR Y= 0TO 9:PL(X,Y)= 0:NEXT Y:NEXT X 810 PL(1,5)= 1:PL(3,4)= 2:PL(3,6)= 3:PL(5,3)= 4:PL(5,5)= 5:PL(5,7)= 6:PL(7,2)= 7:PL(7,4)= 8:PL(7,6)= 9 820 PL(7,8)= 10:RETURN 830 REM SET UP PIN LOC. ARRAY 835 RESTORE 5000:FOR X= 1TO 10:READ P5(X,1),P5(X,2):NEXT X:RETURN 850 REM BALL DEFLECTION SUBROUTINE 860 IF SP= 0THEN SP= .1:RETURN 862 IF SP= .1THEN SP= .2:RETURN 865 IF SP= .2THEN SP= .3:RETURN 867 IF SP= .3THEN RETURN 868 IF SP= .4THEN SP= .3:RETURN 870 IF SP= .5THEN SP= .4:RETURN 880 IF SP= .6THEN SP= .5:RETURN 890 PRINT "ERROR!!! SP=";SP;" --- OUT OF RANGE!!!":END 900 RESTORE 500 910 PLOT 30,17:PLOT 29,19 920 FOR P1= 1TO 10:READ A:READ B:PLOT 3,A,B:PRINT "`":NEXT P1 930 GOTO 10000 1000 NC= PEEK (33278):IF NC< > 32THEN PLOT 28:PLOT 30,17:PLOT 29,19:PRINT "`":GOTO 2000 1010 RETURN 2000 YH= Y:ON YGOTO 2100,2200,2300,2400,2500,2600,2700,2800,2900 2010 PRINT "ERROR 1:";X:END 2020 PLOT 3,61,Y:PRINT "`":NEXT Y:GOTO 150 2100 PH= 0:MD= 60:GOSUB 4000:GOTO 10000 2110 GOTO 10000 2200 MD= 59:GOSUB 4000:GOTO 200 2300 MD= 57:GOSUB 4000:GOTO 200 2400 MD= 55:GOSUB 4000:GOTO 200 2500 MD= 53:GOSUB 4000:GOTO 200 2600 MD= 55:GOSUB 4000:GOTO 200 2700 MD= 57:GOSUB 4000:GOTO 200 2800 MD= 59:GOSUB 4000:GOTO 200 2900 PH= 0:MD= 60:GOSUB 4000:GOTO 10000 4000 REM BALL ROLL SUBROUTINE 4010 FOR X= 3TO MD:PLOT 30,17:PLOT 29,19:PLOT 3,X- 1,Y:PRINT "`":PLOT 30,16:PLOT 3,X,Y:PRINT " ":NEXT X 4020 PLOT 3,X- 1,Y:PLOT 30,17:PLOT 29,19:PRINT "`" 4040 RETURN 4050 FOR X= 0TO 5:FOR Y= 0TO W:PLOT 3,X,Y:PRINT "`":NEXT Y:NEXT X:RETURN 5000 DATA 54,5,56,4,56,6,58,3,58,5,58,7,60,2,60,4,60,6,60,8 5010 RESTORE 5000:PLOT 30,23 5020 FOR PS= 1TO 10:READ X:READ Y:PLOT 3,X,Y:PRINT " ":NEXT PS:RETURN 5050 PLOT 30,16:PLOT 29,23 5060 X= 57:GOSUB 5150 5070 X= 33:GOSUB 5150 5080 PLOT 3,0,16:PLOT 29,19 5090 PRINT " 1 2 3 4 5 6 7 8 9 10":RETURN 5150 FOR Y= 0TO 96STEP 12 5160 PLOT 2,Y,X,242,Y+ 12,X,Y+ 12,X- 19,Y,X- 19,Y,X,255 5170 PLOT 2,Y+ 6,X,242,Y+ 6,X- 7,Y+ 12,X- 7,255 5180 NEXT Y 5190 PLOT 2,108,X,242,120,X,120,X- 19,108,X- 19,255 5200 PLOT 2,108,X- 7,242,120,X- 7,255 5210 PLOT 2,112,X,242,112,X- 6,255 5220 PLOT 2,116,X,242,116,X- 6,255 5230 RETURN 6000 REM SCORE SUBROUTINE 10000 GOSUB 4050:GOSUB 15000 10001 IF PH= 10THEN GOSUB 5000 10002 IF FH= 4THEN 10010 10003 REM IFPH=10THEN10010 10005 FH= FH+ 1:IF FH< 3THEN 150 10007 IF FR(PN)< 10THEN 10010 10008 IF FH= 4THEN FH= 3:IF PH= 10THEN GOSUB 500 10009 GOTO 150 10010 FR(PN)= FR(PN)+ 1:IF PN= 1THEN PN= 2:GOTO 10050 10020 PN= 1:F1= F1+ 1:IF F1> 10THEN 10300:REM FINALS 10050 PLOT 3,2,13:PLOT 30,16:PLOT 29,18 10060 PRINT "PLAYER";PN;"'S TURN" 10065 FH= 1 10070 GOSUB 5000:GOSUB 800 10080 GOTO 148 10300 FOR X= 1TO 1000:NEXT X:PLOT 30,16:PLOT 29,17:PLOT 12 10310 PLOT 3,0,12:IF SC(1,10,3)= SC(2,10,3)THEN PRINT "IT'S A TIE!!!":PRINT :GOTO 10330 10312 PRINT "PLAYER";:IF SC(1,10,3)> SC(2,10,3)THEN WP= 1:GOTO 10320 10315 WP= 2 10320 PRINT WP;" WINS.":PRINT 10330 INPUT "ANOTHER GAME? (Y/N) ";A$ 10340 IF A$= "Y"THEN RUN 10350 IF A$< > "N"THEN 10330 10360 END 15000 REM CALCULATE SCORE 15025 IF FH= 3AND PH= 0THEN H$= "-":GOTO 20000 15050 IF FH= 1AND PH= 10AND FR(PN)= 10THEN FH= 1:H$= "X":SC(PN,FR(PN),1)= 3:GOTO 20000 15100 IF FH= 1AND PH= 10THEN FH= 2:H$= "X":SC(PN,FR(PN),1)= 3:GOTO 20000 15120 IF FH= 2AND SC(PN,FR(PN),2)+ PH= 10THEN H$= "/":SC(PN,FR(PN),1)= 2:GOTO 20000 15140 IF PH= 0THEN H$= "-":GOTO 20000 15160 IF FH> 1THEN H$= RIGHT$ (STR$ (PH),1):SC(PN,FR(PN),2)= SC(PN,FR(PN),2)+ PH:GOTO 20000 15180 IF FH= 1THEN H$= RIGHT$ (STR$ (PH),1):SC(PN,FR(PN),2)= PH:GOTO 20000 15200 PRINT "ERROR DURING SCOREKEEPING":END 20000 IF FR(PN)= 10THEN 22000 20002 PLOT 30,16:PLOT 29,17:GOSUB 21010 20005 FOR X= 1TO FR(PN) 20010 IF SC(PN,X,1)< = 0THEN 20040 20020 SC(PN,X,1)= SC(PN,X,1)- 1:SC(PN,X,2)= SC(PN,X,2)+ PH 20030 IF SC(PN,X,1)> 0THEN 20100 20040 SC(PN,X,3)= SC(PN,X,2)+ SC(PN,X- 1,3) 20050 IF X< FR(PN)THEN WF= X:FV= SC(PN,X,3):GOSUB 21000:GOTO 20100 20060 IF FH= 1THEN 20100 20070 FV= SC(PN,X,3):WF= FR(PN):GOSUB 21000 20100 NEXT X:RETURN 21000 PX= - 4+ (WF* 6):PY= 15+ 6* PN:PLOT 3,PX,PY:PLOT 14:PRINT RIGHT$ (STR$ (FV),3):PLOT 15:RETURN 21010 PX= (- 5+ (FR(PN)* 6))+ (FH- 1)* 3:PY= 12+ PN* 6:PLOT 3,PX,PY:PRINT H$:RETURN 22000 REM TENTH FRAME ROUTINE 22010 TF(PN,FH)= PH:SC(PN,10,2)= TF(PN,1)+ TF(PN,2)+ TF(PN,3) 22020 PLOT 30,16:PLOT 29,17 22060 IF SC(PN,8,1)> 0THEN SC(PN,8,1)= SC(PN,8,1)- 1:SC(PN,8,2)= SC(PN,8,2)+ PH 22080 IF SC(PN,8,1)> 0THEN 22150 22100 SC(PN,8,3)= SC(PN,8,2)+ SC(PN,7,3):FV= SC(PN,8,3):WF= 8:GOSUB 21000 22150 IF SC(PN,9,1)> 0THEN SC(PN,9,1)= SC(PN,9,1)- 1:SC(PN,9,2)= SC(PN,9,2)+ PH 22170 IF SC(PN,9,1)> 0THEN 22220 22190 SC(PN,9,3)= SC(PN,9,2)+ SC(PN,8,3):FV= SC(PN,9,3):WF= 9:GOSUB 21000 22220 IF FH= 1THEN PLOT 3,55,(12+ PN* 6):PRINT H$:RETURN 22221 IF PH= 10THEN H$= "X" 22222 IF FH= 2THEN PLOT 3,57,(12+ PN* 6):PRINT H$:IF SC(PN,10,2)= 10THEN GOSUB 5000:GOSUB 800:GOSUB 830 22223 IF FH= 3AND (TF(PN,1)+ TF(PN,2)< > 10)AND (TF(PN,2)+ TF(PN,3)= 10)THEN H$= "/" 22224 IF FH= 3THEN PLOT 3,59,(12+ PN* 6):PRINT H$:GOTO 22260 22225 IF SC(PN,10,2)< 10THEN 22260 22240 RETURN 22260 SC(PN,10,3)= SC(PN,10,2)+ SC(PN,9,3):WF= 10:FV= SC(PN,10,3):GOSUB 21000 22270 FH= 4:RETURN 30000 FOR X= 1TO 2:FOR Y= 1TO 10:FOR Z= 1TO 3:PRINT SC(X,Y,Z);:NEXT Z:PRINT :NEXT Y,X 30010 GOTO 30010