Listing of file='FBALL' on disk='vmedia/games.wvd.zip'
# Sector 792, program filename = 'FBALL' 0001 GOTO 100 : REM "FBALL" 0002 DEFFN'00"LIST S 100,9999" 0003 DEFFN'30 : PRINT HEX(03) : RETURN 0004 DEFFN'14 : COM CLEAR : LOAD DC F"GAMES" 0100 COM D$(12)24,O$(34)24,N$(2),S(2),A$(2)1,A1$(2)1,T9(2),Q$3,M1$(12,34)3,L$2 0,P$(12,20)3,O$24,B1$1,B2$1,T$(7)64 0105 IF D$(1)=" " THEN 110 : GOTO 160 0110 REM LOAD DATA 0120 DATA LOAD DC OPEN F "PLNAMES" 0130 DATA LOAD DC D$(),O$() 0140 DATA LOAD DC OPEN F "STATS" 0150 DATA LOAD DC M1$(),P$(),T$() 0160 DEFFNR(P1)=SQR(-2.*LOG(RND(1)))*COS(2*#PI*RND(1)) 0170 SELECT R 0180 GOSUB '30 0190 Y=20 : Y1=10 : D0=1 : T=15 : Q=1 : T1=00.0 : T9(1),T9(2)=3 0200 S(1),S(2)=0 0210 INPUT "HOME TEAM'S NAME",N$(1) 0220 INPUT "VISITING TEAM'S NAME",N$(2) 0230 O9=1 : D9=2 : IF RND(1)<.5 THEN 240 : O9=2 : D9=1 0240 O1$=N$(O9) : D1$=N$(D9) 0250 O8=O9 0260 F7=0 0270 SELECT P9 0280 PRINT "THE ";O1$;" WON THE TOSS. THEY WILL RECEIVE." : GOSUB ' 70 0290 PRINT 0300 SELECT P0 : GOSUB ' 54 0310 REM 0320 GOSUB '100 0330 SELECT P0 0350 GOSUB 3200 : IF O>-2 THEN 390 : GOSUB '101 : PRINT 0360 PRINT "THE ";O1$;" REQUESTED A MEASUREMENT" : PRINT "THEY NEED "; : P1=0 : IF Y1<1 THEN 370 : P1=INT(Y1) : PRINT P1;" YARDS, "; 0370 IF Y1<1/3 THEN 380 : P1=INT((Y1-P1)*3) : PRINT P1;" FEET, "; 0380 P1=INT((Y1-INT(Y1))*36-P1*12) : PRINT P1;" INCHES FOR A FIRST DOWN" : PRINT : GOTO 350 0390 IF O<35 THEN 440 : ON O-34 GOTO 400,400,410,410,420,420 0400 REM PUNT : GOSUB '45(1) : GOTO 430 0410 REM FIELD GOAL : GOSUB '85 : GOTO 430 0420 REM KICKOFF : GOSUB '55 : GOTO 900 0430 ON U5 GOTO 540,300,310,890,900,460,790 0440 IF O>0THEN 460 : IF T9(O9)=0THEN 320 : T9(O9)=T9(O9)-1 : P1=0 : IF O=-1 THEN 450 : GOTO 460 0450 GOTO 320 0460 PRINT HEX(0C);TAB(60),HEX(0C) 0480 M9=30 : V9=5 0490 PRINT "THE ";D1$;" CHOOSE A "; : INPUT "DEFENSIVE PLAY",D : GOTO 520 0500 IF D=-1 THEN 510 : GOTO 520 0510 GOTO 490 0520 L$=" " 0530 IF D>0THEN 540 : IF T9(D9)=0THEN 460 : T9(D9)=T9(D9)-1 : P1=0 : GOTO 500 0540 REM 0550 C6=0 : C5=0 : E3=0 : C4=0 0560 REM FUMBLE : GOSUB '75(-2,3,.03,.5) : IF E7=1 THEN 710 0570 IF O<13 THEN 660 : IF O>32 THEN 660 : UNPACK(##)STR(P$(D,O-12),1,1)TO C7 : UNPACK(##)STR(P$(D,O-12),2,1)TO C8 : UNPACK(##)STR(P$(D,O-12),3,1) TO C9 0580 C7=C7/100 : C8=C8/100 : C9=C9/100 0590 IF Y<80 THEN 610 : IF O< 21 THEN 610 : IF O>24 THEN 610 : IF O=22 THEN 610 0600 C7=-1 0610 R0=RND(1) : C5=1 : IF R0>C7+C8 THEN 640 0620 R0=RND(1) : IF R0<C8 THEN 630 : L$="PASS COMPLETE" : M9=15 : V9=4 : GOTO 660 0630 L$="PASS INTERCEPTED" : C6=1 : GOTO 660 0640 R0=RND(1) : IF R0>C9 THEN 650 : L$="QB SACKED" : GOSUB ' 40(-6,5) : R0=X : GOTO 710 0650 R0=0 : L$="PASS INCOMPLETE" : M9=8 : V9=1 : C4=1 : GOTO 710 0660 UNPACK(##)STR(M1$(D,O),1,1)TO M 0670 UNPACK(###)STR(M1$(D,O),2,2)TO V 0680 GOSUB '40(M,SQR(V)) : R0=X 0690 IF C5=0 THEN 700 : R0=ABS(R0) : IF R0>.75*M THEN 700 : R0=.75*M : GOTO 710 0700 IF R0>-5 THEN 710 : R0=R0/2 0710 Y=Y+R0 : Y1=Y1-R0 : D0=D0+1 0720 IF P1>0THEN 730 : V9=1 : M9=5 : P1=1 0730 T1=T1-V9*RND(1)-M9 : IF T1>=0THEN 750 : T1=60+T1 : T=T-1 0740 IF T>=0THEN 750 : Q=Q+1 : T=15 : T1=0 : IF Q=3THEN 1360 : IF Q=5THEN 1450 0750 IF C6=0 THEN 760 : GOSUB '101 : PRINT "***** PASS INTERCEPTED *****" : GOSUB '80(10,3,0,.05) : GOTO 890 0760 IF Y1>0THEN 770 : Y1=10 : D0=1 : F7=1 : IF Y<=90 THEN 770 : Y1=100-Y 0770 GOSUB '100 0780 PRINT "THE ";O1$;" CHOSE ";O$(O);" -- ";O : PRINT "THE ";D1$;" CHOSE ";D$(D);" -- ";D 0790 GOSUB ' 50 0800 IF E3=0THEN 810 : PRINT "** THE ";D1$;" RECOVERED THE BALL! **" : GOTO 890 0810 IF Y<=0 THEN 1570 : IF Y>=100 THEN 880 : IF F7=1 THEN 820 : IF D0>4THEN 860 : GOTO 840 0820 F7=0 0830 PRINT HEX(0C); : PRINT "** GOOD FOR THE ";O1$;", THEY GOT A FIRST DOWN! **" 0840 REM 0850 GOTO 350 0860 PRINT HEX(0C); : PRINT "THE ";O1$;" FAILED TO MAKE A FIRST DOWN." : PRINT " THE BALL GOES OVER TO THE ";D1$ 0870 GOTO 890 0880 S(O9)=S(O9)+6 : Y=80 : GOSUB 1210 : GOTO 300 0890 GOSUB ' 70 0900 INPUT " PRESS RETURN",Z8$ 0910 GOTO 310 0920 REM \A9 0930 REM \97\85\B4"PLNAMES" 0940 REM \97\85D$(),O$() 0950 REM \97\85\96 0960 REM \97\85\B4"STATS" 0970 REM \97\85M1$(),P$(),T$() 0980 REM \97\85\96 0990 STOP 1000 REM *** SCOREBOARD S/R *** 1010 DEFFN'100 1020 A$(1)="*" : A$(2)=" " : A1$(1)=" " : A1$(2)="*" 1030 Y3=INT(Y+.5) : Y2=INT(Y1+.5) : IF Y1>=1 THEN 1040 : Y2=1 : IF Y1>0 THEN 1040 : Y2=0 1040 SELECT P0 : GOSUB '30 : IF Y3>0 THEN 1050 : Y3=0 : IF Y3<100 THEN 1050 : Y3=100 1050 PRINT "************************** SCOREBOARD **************************" 1060 PRINT "* HOME TIME VISITORS *" 1070 PRINTUSING 1080,A$(O9), N$(1),T,T1,A1$(O9),N$(2); 1080 %* # ################ ## ## # ##############* 1090 PRINTUSING 1100,S(1),S(2); 1100 %* ## ## * 1110 Y9=Y : IF Y3<=50THEN 1115 : Y9=100-Y3 1115 IF Y9>0 THEN 1120 : Y9=0 1120 PRINT "* BALL ON YDS TO GOAL YARDS TO GO DOWN QUARTER *" 1130 E0=D0 : IF D0<5THEN 1140 : E0=4 1140 PRINTUSING 1150,Y9,100-Y3 ,Y2,E0,Q; 1150 %* -### -### -### # # * 1160 PRINTUSING 1170,T9(1),T9(2); 1170 %* # TIMEOUTS # * 1180 PRINT "****************************************************************" 1190 PRINT 1200 RETURN : REM *** 1210 GOSUB 2020 : Y,Y1=0 : D0=1 : GOSUB '100 : PRINT 1220 SELECT P0 1230 PRINT " *************** TOUCHDOWN ****************" 1240 PRINT 1250 SELECT P1 1260 PRINT " ***** HOORAY FOR THE ";O1$;" *****" 1270 SELECT P0 1280 PRINT : INPUT " FOR EXTRA POINT, KEY 'RETURN'",Z8$ 1290 IF RND(1)>.9THEN 1300 : IF RND(1)>.9 THEN 1310 : S(O9)=S(O9)+1 : GOSUB '100 : PRINT " ** THE ";O1$;" MADE THE EXTRA POINT! **" : GOTO 1320 1300 GOSUB '100 : PRINT " ***** THE ";D1$;" BLOCKED THE EXTRA POINT!!! *****" : GOTO 1330 1310 GOSUB '100 : PRINT : PRINT " **** NO GOOD ****" : PRINT : PRINT 1320 REM 1330 Y1=0 : D0=1 : Y=0 1340 F7=0 : U5=2 : RETURN 1350 RETURN : REM *** 1360 REM HALFTIME 1370 Y1=0 : D0=0 1380 GOSUB '100 1390 PRINT : PRINT " ***** HALFTIME *****" 1400 Y=80 : T9(1),T9(2)=3 1410 PRINT : PRINT : INPUT " FOR HALFTIME SHOW, KEY 'RETURN'",Z8$ 1420 GOTO 2290 1430 D9=O8 : O9=1 : IF D9<>O9 THEN 1440 : O9=2 1440 GOSUB '70 : GOTO 300 1450 REM GAME OVER 1460 T=0 : Y1=0 : D0=0 : Q=4 1470 GOSUB '100 1480 PRINT : PRINT " ***** THE GAME IS OVER *****" 1490 PRINT 1500 IF S(1)=S(2)THEN 1550 1510 Z=2 1520 IF S(1)<S(2) THEN 1530 : Z=1 1530 PRINT "**** THREE CHEERS FOR THE ";N$(Z);", THEY WON THE GAME!! ****" 1540 GOTO 1560 1550 PRINT " ***** BOO! THE ";N$(1);" AND THE ";N$(2);" TIED! *****" 1560 STOP " TO REPLAY, KEY 'RUN 320'" 1570 REM SAFETY 1580 SELECT P9 : PRINT ";" : SELECT P0 1590 S(D9)=S(D9)+2 1600 GOSUB '100 1610 PRINT "***** THE ";N$(D9);" SCORED A SAFETY !!!! *****" 1620 Y=20 1630 PRINT : PRINT "THE ";O1$;" WILL HAVE TO PUNT FROM THE 20" 1640 INPUT " KEY 'RETURN'",A$ 1650 GOSUB '45(0) : GOSUB '70 : SELECT P3 : PRINT : SELECT P0 : GOTO 310 1660 REM *** PUNT S/R 1670 DEFFN'45(B) : IF B=0 THEN 1760 : O2=O : D0=D0+1 1680 GOSUB '101 : PRINT : PRINT "THE ";O1$;" ARE IN PUNT FORMATION" : GOSUB 3210 : D=O : O=O2 : IF O=36 THEN 1830 : ON D-12 GOTO 1690,1700,1710 1690 M4=10 : V4=10 : P1=.02 : P2=.02 : P3=.20 : P4=.05 : GOTO 1720 1700 M4=5 : V4=5 : P1=.10 : P2=.07 : P3=.60 : P4=0 : GOTO 1720 1710 M4=0 : V4=5 : P1=0 : P2=.02 : P3=.75 : P4=0 1720 IF RND(1)>P1 THEN 1750 : PRINT : PRINT "**** THE PUNT WAS BLOCKED ****" : PRINT : R0=INT(4*FNR(0)-5) : P5=.75 : Y=Y+R0 : IF R0>0 THEN 1730 : P5=.5 1730 IF RND(1)>P5 THEN 1740 : PRINT "THE ";D1$;" RECOVERED" : GOSUB '70 : GOSUB '60 : U5=5 : RETURN 1740 PRINT "THE ";O1$;" RETAINED POSSESSION" : U5=7 : RETURN 1750 GOSUB ' 75(-13,5,P2,.5) : IF E7=0 THEN 1770 : PRINT : PRINT L$ : IF E3=1 THEN 800 : U5=7 : RETURN 1760 M4=10 : V4=10 : P4=.05 : P3=0 1770 P0=INT(SQR(15)*FNR(0)+45) 1780 GOSUB '101 1790 PRINT "THE ";O1$;" PUNTED FOR ";P0;" YARDS" 1800 Y=Y+P0 1810 GOSUB '80(M4,SQR(V4),P3,P4) 1820 RETURN 1830 GOSUB '46 : RETURN : REM *** 1840 REM *** RETURN S/R 1850 DEFFN'80(M5,V5,P7,P8) 1860 IF RND(1)>P8 THEN 1870 : M5=5*M5 1870 IF Y>110 THEN 1950 1880 IF Y>100 THEN 1980 1890 IF RND(1)>P7 THEN 1900 : P0=0 : PRINT HEX(0A),"**** NO RETURN ****" : GOTO 1940 1900 GOSUB '40(M5,V5) : P0=INT(X) 1910 PRINT "THE ";D1$;" RETURNED FOR ";P0;" YARDS" 1920 PRINT 1930 Y=Y-P0 : GOSUB '60 1940 U5=4 : RETURN 1950 PRINT "OUT OF THE ENDZONE. BALL GOES ON THE 20" 1960 PRINT 1970 Y=80 : U5=4 : RETURN 1980 Y7=INT(Y-100) 1990 PRINT "BALL IS ";Y7;" YARDS DEEP IN THE ENDZONE. WILL THE ";D1$;" RETURN "; 2000 Q$="YES" : INPUT Q$ : IF Q$="YES" THEN 1900 : GOTO 1970 2010 REM *** 2020 FOR I=1TO 2 : SELECT P9 : PRINT HEX(0C3A) : NEXT I : SELECT P0 2030 FOR I=1 TO 5 : PRINT HEX(03) : PRINT : SELECT P0 : PRINT : PRINT : PRINT : MAT PRINT T$; : SELECT P1 : PRINT : PRINT 2040 NEXT I 2050 SELECT P0 2060 RETURN 2070 REM *** 2080 REM *** FIELD GOAL 2090 DEFFN'85 2100 Y0=100-Y+17 : Y0=INT(Y0+.5) : U5=4 2110 GOSUB '101 : PRINT "** THE ";O1$;" ATTEMPT A ";Y0;"- YARD FIELD GOAL" : PRINT 2120 R0= 8*FNR(0)+55 : R0=INT(R0) 2130 D0=1 : Y1=10 : T1=T1-5 2140 IF RND(1)<.95 THEN 2190 2150 R0=10*FNR(0)+5 : R0=INT(R0) : Y=Y+R0 2160 PRINT " ***** THE ";D1$;" BLOCKED THE FIELD GOAL!!! *****" 2170 PRINT " THEY TAKE OVER THE BALL" 2180 GOTO 2280 2190 Y0=Y+R0-7 : IF Y0>110 THEN 2200 : GOTO 2230 2200 SELECT D : R0=ARCTAN(2.5/(100-Y+17)) : SELECT R 2210 IF R0*.2>RND(1) THEN 2250 2220 D0=1 : PRINT "** THE FIELD GOAL WAS NO GOOD---IT WAS WIDE" : IF Y>80 THEN 2240 : U5=4 : GOTO 2280 2230 D0=1 : PRINT "** THE FIELD GOAL WAS NO GOOD---IT WAS SHORT" : IF Y>80 THEN 2240 : U5=4 : GOTO 2280 2240 Y=80 : GOTO 2280 2250 S(O9)=S(O9)+3 : U5=2 2260 Y=0 : Y1=10 : D0=1 : GOSUB '100 : PRINT " ***** HOORAY FOR THE ";O1$;" !!! *****" 2270 PRINT " THE KICK WAS GOOD!" 2280 RETURN : REM *** 2290 REM HALFTIME SHOW : GOSUB '30 2300 SELECT D : FOR I=1 TO 100 2310 A= 50*ABS(SIN(I*10)) 2320 PRINT TAB(64-A);"*****" : PRINT TAB(A);"+++++" 2330 NEXT I 2340 SELECT R 2350 GOSUB '100 : PRINT " HALFTIME OVER. WHAT DID YOU EXPECT FELLA?" 2360 GOTO 1430 2370 REM *** NORMAL DISTRIBUTION TO NEAREST INCH 2380 DEFFN'40(M5,V5) 2390 X=V5*FNR(0)+M5 : X=INT(36*X)/36 2400 RETURN 2410 REM *** 2420 REM *** DANDY DON S/R 2430 DEFFN'50 2440 SELECT P0 : PRINT 2450 IF C4=0 THEN 2460 : PRINT "PASS INCOMPLETE" : GOTO 2520 2460 IF R0<30 THEN 2470 : PRINT HEX(0C);L$;" - THE ";D1$;" LOST THEIR JOCKS ON THAT ONE " : IF 100-Y<=0 THEN 2465 : PRINT INT(R0);" YARD GAIN" : GOTO 2520 2465 PRINT "ALL THE WAY BIG TEAM" : GOTO 2520 2470 IF L$=" " THEN 2480 : PRINT L$;" - "; 2480 L1$="GAIN" : IF R0>0 THEN 2490 : L1$="LOSS" 2490 R1=ABS(R0) : L2$="YARD" : IF R1>1 THEN 2510 : IF R1>1/3 THEN 2500 : L2$="FOOT" 2500 PRINT L1$;" OF LESS THAN A ";L2$;" ON THE PLAY" : GOTO 2520 2510 PRINT INT(R1);" - YARD ";L1$;" ON THE PLAY" 2520 PRINT : SELECT P0 : RETURN 2530 REM *** 2540 REM *** TEST FOR SCORE S/R 2550 DEFFN' 60 2560 IF Y<100 THEN 2570 : S(O9)=S(O9)+6 : GOSUB 1210 : Y=80 : GOTO 890 2570 IF Y>0 THEN 2580 : GOTO 1570 2580 RETURN 2590 REM *** 2600 REM *** TEST FOR FIRST OR FOURTH DOWN S/R 2610 DEFFN' 65 2620 F7=0 2630 IF Y1>0 THEN 2640 : Y1=10 : D0=1 : F7=1 : IF Y<=90 THEN 2650 : Y1=100-Y 2640 IF D0< 5 THEN 2650 : F7=-1 2650 RETURN 2660 REM *** 2670 REM *** EXCHANGE OF BALL S/R 2680 DEFFN' 70 2690 Z=O9 : O9=D9 : D9=Z 2700 O1$=N$(O9) : D1$=N$(D9) 2710 Y=100-Y : D0=1 : Y1=10 : IF Y<=90 THEN 2720 : Y1=100-Y 2720 RETURN 2730 REM *** 2740 REM *** FUMBLE S/R 2750 DEFFN' 75 (M5,V5,P7,P8) 2760 E7=0 2770 IF RND(1)>P7 THEN 2790 : E7=1 : L$="*** FUMBLE ***" : E3=0 : GOSUB '40(M5,V5) : Y=Y+X : R0=X : IF RND(1)>P8 THEN 2790 2780 E3=1 2790 RETURN 2800 REM *** 2810 REM *** FAKE KICK S/R 2820 DEFFN' 46 2830 PRINT "THE ";O1$;" CALLED A FAKE --- INPUT YOUR PLAY, COACH" 2840 GOSUB 3210 2850 ON D-12 GOTO 2860,2870,2880 2860 D=12 : GOTO 2900 2870 D=10 : GOTO 2900 2880 PRINT "THE ";D1$;" ARE ON THEIR TOES"; 2890 INPUT " - THEY CALL A FAKE DEFENSE",D 2900 M9=20 : V9=5 : L$=" " : GOSUB '75(-5,2,.3,.5) 2910 U5=1 : RETURN 2920 REM *** 2930 REM *** CALL TO KICKOFF 2940 DEFFN'54 2950 INPUT "PRESS RETURN",A$ : Y=35 : GOSUB '100 2960 PRINT "THE ";O1$;" MUST KICKOFF" 2970 GOSUB 3210 : IF O=39 THEN 2980 : IF O=40 THEN 2980 : GOTO 2960 2980 GOSUB '55 : PRINT : INPUT " PRESS RETURN",Z8$ : RETURN 2990 REM *** 3000 REM *** KICKOFF S/R 3010 DEFFN'55 3020 M=55 : V=5 : P3=0 : Y=35 : PRINT HEX(0C);TAB(60),HEX(0C) 3030 D=13 : PRINT "THE ";O1$;" ARE READY TO KICKOFF"; 3040 INPUT D : PRINT : IF O=40 THEN 3120 3050 IF D= 15 THEN 3070 3060 M4=15 : V4=5 : P4=.05 : GOTO 3080 3070 M4=10 : V4=3 : P4=0 3080 GOSUB '40(M,V) : Y=Y+INT(X) : PRINT "THE ";O1$;" KICKED FOR ";INT(X);" YARDS" 3090 GOSUB '80(M4,V4,P3,P4) 3100 GOSUB '70 : RETURN 3110 REM *** ONSIDES KICK 3120 M=12 : V=2 : GOSUB '40(M,V) : Y=Y+INT(X) : P3=.4 3130 IF D<>15 THEN 3140 : P3=.1 3140 PRINT "THE ";O1$;" TRIED AN ONSIDES KICK!" : PRINT 3150 IF X<10 THEN 3180 : IF RND(1)>P3 THEN 3160 : PRINT " IT WORKED!!" : U5=5 : Y1=10 : RETURN 3160 PRINT "THE ";D1$;" COVERED THE BALL, THOUGH" 3170 GOSUB '70 : U5=5 : RETURN 3180 PRINT "THE KICK WAS TOO SHORT" : GOTO 3170 3190 REM *** 3200 PRINT "THE ";O1$;" CHOOSE AN OFFENSIVE PLAY" 3210 KEYIN B1$,3230,3230 3220 GOTO 3210 3230 IF B1$=HEX(0D) THEN 3290 3240 KEYIN B2$,3260,3260 3250 GOTO 3240 3260 IF B2$="*" THEN 3210 : IF B1$="-" THEN 3300 3270 IF B2$<>HEX(0D)THEN 3280 : CONVERT B1$TO O : RETURN 3280 CONVERT B1$ TO B1 : CONVERT B2$ TO B2 3290 O=10*B1+B2 : RETURN 3300 CONVERT B2$ TO O : O=-O : RETURN 4000 DEFFN'101 : PRINT HEX(010A0A0A0A0A0A0A0A0A) 4010 FOR I=1 TO 6 : PRINT TAB(60) : NEXT I 4020 PRINT HEX(0C0C0C0C0C0C); : RETURN