DataMuseum.dk

Presents historical artifacts from the history of:

CP/M

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about CP/M

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦f62f4ab6a⟧ TextFile

    Length: 8448 (0x2100)
    Types: TextFile
    Names: »FOOTBL.BAS«

Derivation

└─⟦69a509965⟧ Bits:30005211 CR8 BASIC Games
    └─ ⟦this⟧ »FOOTBL.BAS« 

TextFile

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»