File FOOTBL.BA (BASIC source file)

Directory of image this file is from
This file as a plain text file

10 PRINT "THIS IS A DEMONSTRATION OF PDP-11 BASIC"
20 PRINT "IF YOU NEED INSTRUCTIONS FOR PLAYING FOOTBALL, TYPE A 1";
30 INPUT I
40 IF I<>1 THEN 340
50 PRINT
60 PRINT
70 PRINT "WHEN IT ASKS YOU A QUESTION TO BE ANSWERED YES OR"
80 PRINT "NO, TYPE IN 0 FOR NO OR 1 FOR YES." 
90 PRINT
100 PRINT "ON OFFENSE YOU HAVE THE FOLLOWING PERMITTED PLAYS:" 
110 PRINT "PLAY","CODE"
120 PRINT "RUN","10" 
130 PRINT "PASS","11"
140 PRINT "SWEEP","12" 
150 PRINT "SCREEN PASS","13" 
160 PRINT "LONG PASS","14" 
170 PRINT "DRAW PLAY","15" 
180 PRINT "PUNT","16"
190 PRINT "FIELDGOAL","17" 
200 PRINT
210 PRINT "ON DEFENSE, YOU MAY TRY ONE OF THE FOLLOWING:"
220 PRINT "DEFENSE","CODE" 
230 PRINT "NORMAL","4","GOOD AGAINST SWEEP AND SCREEN" 
240 PRINT "HOLD","5","GOOD AGAINST RUN, PASS AND DRAW" 
250 PRINT "BLITZ","6","GOOD AGAINST PASS OR LONG PASS" 
260 PRINT "INTERCEPT","7","INCREASES THE ODDS FOR AN INTERCEPTION" 
270 PRINT "BLOCK","8","GIVES YOU A CHANCE TO BLOCK A KICK,"
280 PRINT " "," ","BUT DECREASES THE DISTANCE RUNBACK."
290 PRINT
300 PRINT "TO CALL A PARTICULAR PLAY JUST TYPE ITS CODE NUMBER." 
310 PRINT "ALSO, AT ANY TIME DURING PLAY YOU MAY CALL TIME OUT"
320 PRINT "BY TYPING A '2'.  HOWEVER YOU ARE PERMITTED ONLY THREE" 
330 PRINT "TIMEOUTS PER HALF." 
340 PRINT
350 PRINT
360 DEF FNT(X)=SIN(X)/COS(X)
370 DIM R(17)
380 FOR I=0 TO 17
390 READ R(I)
400 NEXT I 
410 DATA 9,13,100,0,9,10,12,11,12,0,1,5,3,4,6,2,8,7
420 RANDOMIZE
430 LET F=0
440 LET Z3=0
450 LET O=0
460 LET L=0
470 DIM Z(5,3),P(2),D(2,5) 
480 FOR A=0 TO 5 
490 FOR B=0 TO 2 
500 READ Z(A,B),D(B,A) 
505 LET P(B)=0
510 NEXT B 
520 READ Z(A,3)
530 NEXT A 
540 PRINT "DO YOU WANT TO RECEIVE";
550 LET X=1
560 GOSUB 3610
570 LET S=2-SGN(13-Q)
580 LET K=S
590 LET T1=120 
600 LET U2=3 
610 LET U=3
620 LET C=900
630 GOSUB 2250
640 LET F1=50
650 LET B=INT(F1+O*20*RND(0)+(1-O)*29*(2-RND(0)^7-RND(0)^(3-Z2)))
660 LET O=0
670 LET Z9=8 
680 GOSUB 1490
690 LET L=0
700 IF B<=99 THEN 2340
710 PRINT "A  TOUCHBACK" 
720 LET B=20 
730 LET L=0
740 IF S=2 THEN 770
750 PRINT "MY "; 
760 GOTO 780
770 PRINT "YOUR "; 
780 GOSUB 3290
790 GOSUB 2980
800 LET D=1
810 LET F2=.03 
820 LET O=0
830 IF C<=0 THEN 2770
840 GOSUB 2530
850 LET Z2=1 
860 LET Z3=.3
870 IF C<=F*T1 THEN 2920
880 IF C<=0 THEN 2770
890 IF L=0 THEN 910
900 PRINT "TIME TO GO--";
910 PRINT INT(C/60);"MIN,";C-60*INT(C/60);"SEC.  ";
920 PRINT "YOUR PLAY"; 
930 GOSUB 3610
940 IF S=1 THEN 980
950 IF Q>8 THEN 920
960 LET M=Q
970 GOTO 1000
980 LET Y=Q-8
990 IF ABS(Q-10.5)^2>3 THEN 920
1000 LET C=INT(C-L*(5+23*RND(X))) 
1010 LET L=1
1020 IF M=7 THEN 1760
1030 IF M=8 THEN 1920
1040 LET Y1=Y-1 
1050 IF RND(X)>Z(M-1,Y1) THEN 1240
1060 LET A=2
1070 GOSUB 3020
1080 IF M<4 THEN 1110
1090 PRINT "PASS COMPLETE.."; 
1100 LET L=SGN(INT(4*RND(0))) 
1110 IF RND(X)<F2 THEN 2510
1120 IF G>0 THEN 1210
1130 IF G=0 THEN 1170
1140 IF G+B<1 THEN 2170
1150 PRINT "LOSS OF";-G;
1160 GOTO 1610
1170 PRINT "NO GAIN"
1180 LET Z9=2 
1190 GOSUB 1490
1200 GOTO 1670
1210 IF B+G>99 THEN 1650
1220 PRINT "GAIN OF";G; 
1230 GOTO 1610
1240 IF M>3 THEN 1280
1250 LET A=1
1260 GOSUB 3020
1270 GOTO 1120
1280 IF RND(X)<.06*(2-SGN(Y-3)) THEN 1360
1290 IF RND(0)<.05+INT(Y/3.5)/5 THEN 1510
1300 LET Z9=6 
1310 GOSUB 1490
1320 PRINT "PASS INCOMPLETE"
1330 LET L=0
1340 LET G=0
1350 GOTO 3120
1360 PRINT "PASS **INTERCEPTED**";
1370 LET A=1
1380 GOSUB 3020
1390 IF B<40 THEN 1410
1400 LET G=20*(1+SGN(G))
1410 LET B=100-B-G
1420 LET S=3-S
1430 LET Z9=9 
1440 GOSUB 1490
1450 IF B<1 THEN 710
1460 IF B>99 THEN 1650
1470 PRINT "AT "; 
1480 GOTO 2360
1490 LET C=C-INT(4+Z9/2*(1+RND(0))) 
1500 RETURN 
1510 LET G=-(5+INT(10*RND(X)))
1520 PRINT "THE QUARTERBACK ";
1530 IF RND(X)>.5 THEN 1560
1540 PRINT "IS THROWN FOR A ";
1550 GOTO 1110
1560 LET G=-(2*G+8) 
1570 LET M=5
1580 LET A=1
1590 PRINT "SCRAMBLES FOR A ";
1600 GOTO 1110
1610 LET B=B+G
1620 PRINT "TO "; 
1630 GOSUB 3300
1640 IF B<=99 THEN 1670
1650 GOSUB 1990
1660 GOTO 630
1670 IF B1>B THEN 3120
1680 IF B1<B THEN 1730
1690 IF RND(0)>.5 THEN 1730
1700 PRINT "**MEASUREMENT**"
1710 GOSUB 3520
1720 IF RND(X)<.5 THEN 3120
1730 GOSUB 2980
1740 LET D=0
1750 GOTO 3120
1760 IF RND(X)<.06 THEN 1890
1770 LET B=B+30+INT(15*(1-RND(X)^3))
1780 LET Z9=2 
1790 GOSUB 1490
1800 IF B<=99 THEN 1850
1810 LET P1=3 
1820 GOSUB 2030
1830 IF P1=0 THEN 710
1840 GOTO 630
1850 PRINT "THE KICK IS ";
1860 LET Z2=0 
1870 LET S=3-S
1880 GOTO 2340
1890 PRINT "**BLOCKED** RECOVERED.."; 
1900 LET G=-INT(14*RND(X))
1910 GOTO 1410
1920 PRINT "THE PUNT IS ";
1930 IF RND(X)<.06 THEN 1890
1940 LET F1=B 
1950 LET Z2=1 
1960 LET S=3-S
1970 LET Z3=.65 
1980 GOTO 650
1990 PRINT "** TOUCHDOWN**" 
2000 LET P1=1 
2010 LET P(S)=P(S)+6
2020 LET B=130
2030 PRINT "THE KICK IS ";
2040 IF RND(X)<(B/132)^4 THEN 2070
2050 LET P1=0 
2060 PRINT "NO "; 
2070 PRINT "GOOD" 
2080 LET P(S)=P(S)+P1 
2090 GOSUB 2120
2100 LET S=3-S
2110 RETURN 
2120 PRINT "SCORE: ME";P(1);" YOU";P(2) 
2130 LET L=0
2140 IF X<5 THEN 2160
2150 IF P(1)<>P(2) THEN 2770
2160 RETURN 
2170 PRINT "**SAFETY**" 
2180 LET P(3-S)=P(3-S)+2
2190 LET F1=30
2200 LET S=3-S
2210 GOSUB 2120
2220 GOSUB 3440
2230 PRINT "FROM THE 20"
2240 GOTO 650
2250 GOSUB 3440
2260 IF S=2 THEN 2330
2270 PRINT "ON-SIDE"; 
2280 GOSUB 3610
2290 IF Q<>13 THEN 2330
2300 LET F2=.15 
2310 LET Z2=1 
2320 LET O=1
2330 RETURN 
2340 LET B=100-B
2350 PRINT "RECEIVED AT ";
2360 GOSUB 3300
2370 IF Z2*RND(X)>Z3 THEN 2490
2380 IF RND(X)<F2 THEN 2500
2390 LET G=5+INT(100*RND(0))
2400 IF RND(0)<.15 THEN 2430
2410 LET G=INT(24*(1-RND(X)^2)) 
2420 IF G=0 THEN 2490
2430 LET B=B+G
2440 PRINT " AND RUN BACK...";
2450 LET L=1
2460 IF B>99 THEN 1650
2470 PRINT " TO ";
2480 GOSUB 3300
2490 IF RND(0)>F2 THEN 3260
2500 LET G=0
2510 PRINT "**FUMBLE**";
2520 GOTO 1410
2530 IF S=1 THEN 2560
2540 LET Y=INT(1+3.5*RND(0))
2550 RETURN 
2560 LET M=INT(55*RND(0)/10.5)+1
2570 IF (B1-B)/(5-D)<3 THEN 2590
2580 LET M=INT(6-4*RND(0)^2)
2590 IF L*F*60>=C THEN 2670
2600 IF D<4 THEN 2550
2610 PRINT "I'LL "; 
2620 IF B<55 THEN 2720
2630 IF 0<4*RND(0)-B1+B THEN 2750
2640 PRINT "TRY FOR A FIELD GOAL" 
2650 LET M=7
2660 RETURN 
2670 IF P(2)*U2<=P(1)*U2 THEN 2600
2680 PRINT "TIME OUT" 
2690 LET U2=U2-1
2700 GOSUB 3520
2710 GOTO 2600
2720 PRINT "PUNT" 
2730 LET M=8
2740 RETURN 
2750 PRINT "GO FOR IT"
2760 RETURN 
2770 IF X<4 THEN 2830
2780 IF P(1)=P(2) THEN 2830
2790 PRINT "THE GAME IS OVER" 
2800 PRINT "FINAL ";
2810 GOSUB 2120
2820 STOP 
2830 PRINT "END OF PERIOD";X
2840 GOSUB 2120
2850 LET F=1-F
2860 GOSUB 3520
2870 LET C=900
2880 LET X=X+1
2890 IF F<>0 THEN 810
2900 LET S=3-K
2910 GOTO 580
2920 IF T1=0 THEN 2770
2930 PRINT "2 MINUTE WARNING" 
2940 GOSUB 3520
2950 LET T1=0 
2960 LET C=120
2970 GOTO 880
2980 LET B1=B+10
2990 IF B1<=100 THEN 3010
3000 LET B1=100 
3010 RETURN 
3020 LET Q=1.3*(A*RND(0)-1)-.06 
3030 LET A=1
3040 IF Q>=0 THEN 3070
3050 LET A=0
3060 LET Q=-Q 
3070 LET M1=M-1 
3080 LET G=D(A,M1)+FNT(Q)*(D(2,M1)-D(A,M1))/3.5
3090 LET G=G+INT(RND(0)+.02)*A*100*RND(0)
3100 LET G=INT(G)
3110 RETURN 
3120 LET D=D+1
3130 IF D=5 THEN 3240
3140 IF D<>  1 THEN 3160
3150 PRINT "1ST"; 
3160 IF D<>2 THEN 3180
3170 PRINT "2ND"; 
3180 IF D<>3 THEN 3200
3190 PRINT "3RD"; 
3200 IF D<4 THEN 3220
3210 PRINT "4TH"; 
3220 PRINT " AND";B1-B;"   "; 
3230 GOTO 810
3240 LET S=3-S
3250 LET B=100-B
3260 IF S=2 THEN 770
3270 PRINT "MY "; 
3280 GOTO 780
3290 PRINT "BALL ON ";
3300 IF B=50 THEN 3400
3310 LET V=50-ABS(B-50) 
3320 LET C=C-INT(7+3*RND(0))
3330 IF S=1 THEN 3420
3340 IF B<50 THEN 3370
3350 PRINT "MY "; 
3360 GOTO 3380
3370 PRINT "YOUR "; 
3380 PRINT V
3390 RETURN 
3400 PRINT "THE 50" 
3410 RETURN 
3420 IF B<50 THEN 3350
3430 GOTO 3370
3440 IF S=2 THEN 3470
3450 PRINT "YOU"; 
3460 GOTO 3480
3470 PRINT "I"; 
3480 PRINT " KICK OFF." 
3490 LET F2=.06 
3500 LET Z2=0 
3510 RETURN 
3520 LET L=0
3530 PRINT "TIMEOUT CALLED..."
3540 PRINT  
3550 RETURN 
3560 IF U=0 THEN 3600
3570 LET U=U-1
3580 GOSUB 3520
3590 GOTO 3610
3600 PRINT "..WRONG, TRY AGAIN" 
3610 INPUT A
3620 IF ABS(INT(A))>17 THEN 3600
3630 LET Q=R(INT(ABS(A))) 
3640 IF Q=0 THEN 3600
3650 IF Q=100 THEN 3560
3660 RETURN 
3670 DATA .5,-2,.25,4,.5,13,.55 
3680 DATA .4,-2,.3,7,.65,15,.75 
3690 DATA .4,-2,.3,6,.6,15,.35
3700 DATA .65,-2,.65,6,.6,17,.9 
3710 DATA .4,2,.7,10,.4,27,.2 
3720 DATA .1,19,.4,35,.2,100,.1 
3730 END



Feel free to contact me, David Gesswein djg@pdp8online.com with any questions, comments on the web site, or if you have related equipment, documentation, software etc. you are willing to part with.  I am interested in anything PDP-8 related, computers, peripherals used with them, DEC or third party, or documentation. 

PDP-8 Home Page   PDP-8 Site Map   PDP-8 Site Search