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