|
DataMuseum.dkPresents historical artifacts from the history of: CP/M |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about CP/M Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - download
Length: 8448 (0x2100) Types: TextFile Names: »FOOTBL.BAS«
└─⟦69a509965⟧ Bits:30005211 CR8 BASIC Games └─ ⟦this⟧ »FOOTBL.BAS«
1 REM PROGRAM FOOTBL.BAS 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) 510 LET P(B)=0 520 NEXT B 530 READ Z(A,3) 540 NEXT A 550 PRINT "DO YOU WANT TO RECEIVE"; 560 LET X=1 570 GOSUB 3620 580 LET S=2-SGN(13-Q) 590 LET K=S 600 LET T1=120 610 LET U2=3 620 LET U=3 630 LET C=900 640 GOSUB 2260 650 LET F1=50 660 LET B=INT(F1+O*20*RND+(1-O)*29*(2-RND^7-RND^(3-Z2))) 670 LET O=0 680 LET Z9=8 690 GOSUB 1500 700 LET L=0 710 IF B<=99 THEN 2350 720 PRINT "A TOUCHBACK" 730 LET B=20 740 LET L=0 750 IF S=2 THEN 780 760 PRINT "MY "; 770 GOTO 790 780 PRINT "YOUR "; 790 GOSUB 3300 800 GOSUB 2990 810 LET D=1 820 LET F2=.03 830 LET O=0 840 IF C<=0 THEN 2780 850 GOSUB 2540 860 LET Z2=1 870 LET Z3=.3 880 IF C<=F*T1 THEN 2930 890 IF C<=0 THEN 2780 900 IF L=0 THEN 920 910 PRINT "TIME TO GO--"; 920 PRINT INT(C/60);"MIN,";C-60*INT(C/60);"SEC. "; 930 PRINT "YOUR PLAY"; 940 GOSUB 3620 950 IF S=1 THEN 990 960 IF Q>8 THEN 930 970 LET M=Q 980 GOTO 1010 990 LET Y=Q-8 1000 IF ABS(Q-10.5)^2>3 THEN 930 1010 LET C=INT(C-L*(5+23*RND)) 1020 LET L=1 1030 IF M=7 THEN 1770 1040 IF M=8 THEN 1930 1050 LET Y1=Y-1 1060 IF RND>Z(M-1,Y1) THEN 1250 1070 LET A=2 1080 GOSUB 3030 1090 IF M<4 THEN 1120 1100 PRINT "PASS COMPLETE.."; 1110 LET L=SGN(INT(4*RND)) 1120 IF RND<F2 THEN 2520 1130 IF G>0 THEN 1220 1140 IF G=0 THEN 1180 1150 IF G+B<1 THEN 2180 1160 PRINT "LOSS OF";-G; 1170 GOTO 1620 1180 PRINT "NO GAIN" 1190 LET Z9=2 1200 GOSUB 1500 1210 GOTO 1680 1220 IF B+G>99 THEN 1660 1230 PRINT "GAIN OF";G; 1240 GOTO 1620 1250 IF M>3 THEN 1290 1260 LET A=1 1270 GOSUB 3030 1280 GOTO 1130 1290 IF RND<.06*(2-SGN(Y-3)) THEN 1370 1300 IF RND<.05+INT(Y/3.5)/5 THEN 1520 1310 LET Z9=6 1320 GOSUB 1500 1330 PRINT "PASS INCOMPLETE" 1340 LET L=0 1350 LET G=0 1360 GOTO 3130 1370 PRINT "PASS **INTERCEPTED**"; 1380 LET A=1 1390 GOSUB 3030 1400 IF B<40 THEN 1420 1410 LET G=20*(1+SGN(G)) 1420 LET B=100-B-G 1430 LET S=3-S 1440 LET Z9=9 1450 GOSUB 1500 1460 IF B<1 THEN 720 1470 IF B>99 THEN 1660 1480 PRINT "AT "; 1490 GOTO 2370 1500 LET C=C-INT(4+Z9/2*(1+RND)) 1510 RETURN 1520 LET G=-(5+INT(10*RND)) 1530 PRINT "THE QUARTERBACK "; 1540 IF RND>.5 THEN 1570 1550 PRINT "IS THROWN FOR A "; 1560 GOTO 1120 1570 LET G=-(2*G+8) 1580 LET M=5 1590 LET A=1 1600 PRINT "SCRAMBLES FOR A "; 1610 GOTO 1120 1620 LET B=B+G 1630 PRINT "TO "; 1640 GOSUB 3310 1650 IF B<=99 THEN 1680 1660 GOSUB 2000 1670 GOTO 640 1680 IF B1>B THEN 3130 1690 IF B1<B THEN 1740 1700 IF RND>.5 THEN 1740 1710 PRINT "**MEASUREMENT**" 1720 GOSUB 3530 1730 IF RND<.5 THEN 3130 1740 GOSUB 2990 1750 LET D=0 1760 GOTO 3130 1770 IF RND<.06 THEN 1900 1780 LET B=B+30+INT(15*(1-RND^3)) 1790 LET Z9=2 1800 GOSUB 1500 1810 IF B<=99 THEN 1860 1820 LET P1=3 1830 GOSUB 2040 1840 IF P1=0 THEN 720 1850 GOTO 640 1860 PRINT "THE KICK IS "; 1870 LET Z2=0 1880 LET S=3-S 1890 GOTO 2350 1900 PRINT "**BLOCKED** RECOVERED.."; 1910 LET G=-INT(14*RND) 1920 GOTO 1420 1930 PRINT "THE PUNT IS "; 1940 IF RND<.06 THEN 1900 1950 LET F1=B 1960 LET Z2=1 1970 LET S=3-S 1980 LET Z3=.65 1990 GOTO 660 2000 PRINT "** TOUCHDOWN**" 2010 LET P1=1 2020 LET P(S)=P(S)+6 2030 LET B=130 2040 PRINT "THE KICK IS "; 2050 IF RND<(B/132)^4 THEN 2080 2060 LET P1=0 2070 PRINT "NO "; 2080 PRINT "GOOD" 2090 LET P(S)=P(S)+P1 2100 GOSUB 2130 2110 LET S=3-S 2120 RETURN 2130 PRINT "SCORE: ME";P(1);" YOU";P(2) 2140 LET L=0 2150 IF X<5 THEN 2170 2160 IF P(1)<>P(2) THEN 2780 2170 RETURN 2180 PRINT "**SAFETY**" 2190 LET P(3-S)=P(3-S)+2 2200 LET F1=30 2210 LET S=3-S 2220 GOSUB 2130 2230 GOSUB 3450 2240 PRINT "FROM THE 20" 2250 GOTO 660 2260 GOSUB 3450 2270 IF S=2 THEN 2340 2280 PRINT "ON-SIDE"; 2290 GOSUB 3620 2300 IF Q<>13 THEN 2340 2310 LET F2=.15 2320 LET Z2=1 2330 LET O=1 2340 RETURN 2350 LET B=100-B 2360 PRINT "RECEIVED AT "; 2370 GOSUB 3310 2380 IF Z2*RND>Z3 THEN 2500 2390 IF RND<F2 THEN 2510 2400 LET G=5+INT(100*RND) 2410 IF RND<.15 THEN 2440 2420 LET G=INT(24*(1-RND^2)) 2430 IF G=0 THEN 2500 2440 LET B=B+G 2450 PRINT " AND RUN BACK..."; 2460 LET L=1 2470 IF B>99 THEN 1660 2480 PRINT " TO "; 2490 GOSUB 3310 2500 IF RND>F2 THEN 3270 2510 LET G=0 2520 PRINT "**FUMBLE**"; 2530 GOTO 1420 2540 IF S=1 THEN 2570 2550 LET Y=INT(1+3.5*RND) 2560 RETURN 2570 LET M=INT(55*RND/10.5)+1 2580 IF (B1-B)/(5-D)<3 THEN 2600 2590 LET M=INT(6-4*RND^2) 2600 IF L*F*60>=C THEN 2680 2610 IF D<4 THEN 2560 2620 PRINT "I'LL "; 2630 IF B<55 THEN 2730 2640 IF 0<4*RND-B1+B THEN 2760 2650 PRINT "TRY FOR A FIELD GOAL" 2660 LET M=7 2670 RETURN 2680 IF P(2)*U2<=P(1)*U2 THEN 2610 2690 PRINT "TIME OUT" 2700 LET U2=U2-1 2710 GOSUB 3530 2720 GOTO 2610 2730 PRINT "PUNT" 2740 LET M=8 2750 RETURN 2760 PRINT "GO FOR IT" 2770 RETURN 2780 IF X<4 THEN 2840 2790 IF P(1)=P(2) THEN 2840 2800 PRINT "THE GAME IS OVER" 2810 PRINT "FINAL "; 2820 GOSUB 2130 2830 STOP 2840 PRINT "END OF PERIOD";X 2850 GOSUB 2130 2860 LET F=1-F 2870 GOSUB 3530 2880 LET C=900 2890 LET X=X+1 2900 IF F<>0 THEN 820 2910 LET S=3-K 2920 GOTO 590 2930 IF T1=0 THEN 2780 2940 PRINT "2 MINUTE WARNING" 2950 GOSUB 3530 2960 LET T1=0 2970 LET C=120 2980 GOTO 890 2990 LET B1=B+10 3000 IF B1<=100 THEN 3020 3010 LET B1=100 3020 RETURN 3030 LET Q=1.3*(A*RND-1)-.06 3040 LET A=1 3050 IF Q>=0 THEN 3080 3060 LET A=0 3070 LET Q=-Q 3080 LET M1=M-1 3090 LET G=D(A,M1)+FNT(Q)*(D(2,M1)-D(A,M1))/3.5 3100 LET G=G+INT(RND+.02)*A*100*RND 3110 LET G=INT(G) 3120 RETURN 3130 LET D=D+1 3140 IF D=5 THEN 3250 3150 IF D<> 1 THEN 3170 3160 PRINT "1ST"; 3170 IF D<>2 THEN 3190 3180 PRINT "2ND"; 3190 IF D<>3 THEN 3210 3200 PRINT "3RD"; 3210 IF D<4 THEN 3230 3220 PRINT "4TH"; 3230 PRINT " AND";B1-B;" "; 3240 GOTO 820 3250 LET S=3-S 3260 LET B=100-B 3270 IF S=2 THEN 780 3280 PRINT "MY "; 3290 GOTO 790 3300 PRINT "BALL ON "; 3310 IF B=50 THEN 3410 3320 LET V=50-ABS(B-50) 3330 LET C=C-INT(7+3*RND) 3340 IF S=1 THEN 3430 3350 IF B<50 THEN 3380 3360 PRINT "MY "; 3370 GOTO 3390 3380 PRINT "YOUR "; 3390 PRINT V 3400 RETURN 3410 PRINT "THE 50" 3420 RETURN 3430 IF B<50 THEN 3360 3440 GOTO 3380 3450 IF S=2 THEN 3480 3460 PRINT "YOU"; 3470 GOTO 3490 3480 PRINT "I"; 3490 PRINT " KICK OFF." 3500 LET F2=.06 3510 LET Z2=0 3520 RETURN 3530 LET L=0 3540 PRINT "TIMEOUT CALLED..." 3550 PRINT 3560 RETURN 3570 IF U=0 THEN 3610 3580 LET U=U-1 3590 GOSUB 3530 3600 GOTO 3620 3610 PRINT "..WRONG, TRY AGAIN" 3620 INPUT A 3630 IF ABS(INT(A))>17 THEN 3610 3640 LET Q=R(INT(ABS(A))) 3650 IF Q=0 THEN 3610 3660 IF Q=100 THEN 3570 3670 RETURN 3680 DATA .5,-2,.25,4,.5,13,.55 3690 DATA .4,-2,.3,7,.65,15,.75 3700 DATA .4,-2,.3,6,.6,15,.35 3710 DATA .65,-2,.65,6,.6,17,.9 3720 DATA .4,2,.7,10,.4,27,.2 3730 DATA .1,19,.4,35,.2,100,.1 3740 END «eof»