A large commit.
[pdp8.git] / sw / src / basic / BBALLA.BA
CommitLineData
81e70d48
PH
1100 REM BASEBALL - 1977
2120 REM ===============
3140 REM
4160 REM
5180 REM K. M. BOWYER
6200 REM 1000 CEDAR AVE.
7220 REM LEWES, DELAWARE
8240 REM 19958
9260 REM
10280 REM <<<DEFINE DIMENSIONS>>>
11300 REM
12320 DIM N$(9),P9$(9,4),H9$(9,15),V9$(9,15),V(16),H(16)
13340 DIM I1(16),B3(7),Q(7)
14360 DIM S1$(5,1)
15380 REM
16400 REM <<<GET FORMALITIES OUT OF THE WAY>>>
17420 REM
18440 PRINT "WELCOME TO SPITBALL STATIUM"\PRINT
19460 RANDOMIZE
20480 PRINT "TODAY OUR HOMETOWN 'SPITS' MEET THE VISITING :";
21500 INPUT N$\PRINT
22520 PRINT "WHILE THE SPITS TAKE THE FIELD, LETS LOOK AT THE LINEUPS."
23540 PRINT\PRINT "BAT","POS","SPITS",,N$\PRINT
24560 FOR I=1 TO 9
25580 READ P9$(I),H9$(I)
26600 PRINT I,P9$(I),H9$(I),,
27620 INPUT V9$(I)
28640 NEXT I
29660 REM
30680 REM <<<SET UP CONSTANTS FOR GAME>>>
31700 REM
32720 Q(1)=37\Q(2)=50\Q(3)=6\Q(4)=4\Q(5)=2\Q(6)=1
33740 Q(7)=Q(1)+Q(2)+Q(3)+Q(4)+Q(5)+Q(6)
34760 S=0\FOR I=1 TO 6\S=S+Q(I)\Q(I)=INT(S*100/Q(7))\NEXT I
35780 I1=0\T=1\O=3\FOR I=1 TO 16\H(I)=0\V(I)=0\NEXT I\B1=1\B2=1
36800 REM
37820 REM <<<TOP OF INNING>>>
38840 REM
39860 GOTO 3440
40880 REM
41900 REM <<<VISITING BATTER UP>>>
42920 REM <<<PRINT DIAAMOND, SCORE, COUNT AND BATTER>>>
43940 REM
44960 GOSUB 3740
45980 PRINT\PRINT N$;" BATTER IS - ";V9$(B1);"."
461000 REM
471020 REM <<<VISITOR BATTER SWINGS>>>
481040 REM
491060 GOSUB 2280\PRINT "YOUR SWING [(S)TEAL OR <CR>]: ";
501080 PRINT\PRINT ">";
511100 IF S$="S" GOTO 1980\Q(7)=100*RND(1)
521120 IF Q(7)>Q(1) GOTO 1160\B=B+1\PRINT "BALL";B\IF B<4 GOTO 960
531140 GOSUB 2680\GOTO 960
541160 IF Q(7)>Q(2) GOTO 1240\S=S+1\PRINT "STRIKE";S
551180 IF S=3 GOTO 1200\GOTO 960
561200 O=O+1\B1=B1+1\IF B1=10 GOTO 1220\GOTO 3400
571220 B1=1\GOTO 3400
581240 IF Q(7)>Q(3) GOTO 1300\H5=1
591260 P=40\GOSUB 3320\IF P=1 GOTO 4040
601280 GOSUB 3020\GOTO 960
611300 IF Q(7)>Q(4) GOTO 1320\H5=2\GOTO 1260
621320 IF Q(7)>Q(5) GOTO 1340\H5=3\GOTO 1260
631340 H5=4\GOTO 1260
641360 REM
651380 REM <<<BOTTOM OF INNING>>>
661400 REM <<<PRINT DIAMOND, SCORE, COUNT AND BATTER>>>
671420 REM
681440 GOSUB 3740
691460 PRINT\PRINT "SPITS BATTER IS - ";H9$(B2);"."
701480 REM
711500 REM <<<VISITING PITCHER PITCHES>>>
721520 REM
731540 GOSUB 2280\PRINT "YOUR PITCH [<CR>]: ";
741560 PRINT\PRINT ">";
751580 REM
761600 REM <<<HOME TEAM STEAL GENERATOR>>>
771620 REM
781640 IF B3(1)+B3(2)+B3(3)=0 GOTO 1700
791660 P=8\GOSUB 3320\IF P=0 GOTO 1700
801680 GOTO 1980
811700 Q(7)=100*RND(1)
821720 IF Q(7)>Q(1) GOTO 1780\B=B+1\PRINT "BALL";B
831740 IF B<4 GOTO 1440
841760 GOSUB 2680\GOTO 1440
851780 IF Q(7)>Q(2) GOTO 1860
861800 S=S+1\PRINT "STRIKE";S\IF S=3 GOTO 1820\GOTO 1440
871820 O=O+1\B2=B2+1\IF B2=10 GOTO 1840\GOTO 3440
881840 B2=1\GOTO 3400
891860 IF Q(7)>Q(3) GOTO 1900\H5=1
901880 GOSUB 3020\GOTO 1440
911900 IF Q(7)>Q(4) GOTO 1920\H5=2\GOTO 1880
921920 IF Q(7)>Q(5) GOTO 1940\H5=3\GOTO 1880
931940 H5=4\GOTO 1880
941960 REM
951980 REM <<<STEAL HANDLER>>>
962000 REM
972020 FOR I=3 TO 1 STEP -1\IF B3(I)<>0 GOTO 2080\NEXT I
982040 PRINT "CAN'T STEAL - NOBODY ON BASE !"
992060 IF T=1 GOTO 1440\GOTO 960
1002080 IF T=1 GOTO 2100\PRINT V9$(B3(I));\GOTO 2120
1012100 PRINT H9$(B3(I));
1022120 PRINT " ATTEMPTS TO STEAL - HE IS ";
1032140 P=80-20*I\GOSUB 3320\IF P=1 GOTO 2180
1042160 PRINT "OUT !"\O=O+1\B3(I)=0\GOTO 3440
1052180 PRINT "SAFE !"\B3(I+1)=B3(I)\B3(I)=0
1062200 IF I<>3 GOTO 2060\GOSUB 2360\GOTO 2060
1072220 REM
1082240 REM <<<PRINT COUNT SUBROUTINE>>>
1092260 REM
1102280 PRINT " B S O"\PRINT " ";B;" ";S;" ";O
1112300 PRINT
1122320 RETURN
1132340 REM
1142360 REM <<<RUN HANDLER>>>
1152380 REM
1162400 IF B3(4)+B3(5)+B3(6)+B3(7)<>0 GOTO 2420\RETURN
1172420 FOR I=7 TO 4 STEP -1\IF B3(I)=0 GOTO 2480
1182440 IF T=1 GOTO 2520
1192460 PRINT V9$(B3(I));" SCORES"\V(I1)=V(I1)+1\V(16)=V(16)+1
1202480 B3(I)=0\NEXT I
1212500 RETURN
1222520 PRINT H9$(B3(I));" SCORES"\H(I1)=H(I1)+1\H(16)=H(16)+1
1232540 GOTO 2480
1242560 REM
1252580 REM <<<CLEAR BASES, OUTS, STRIKES AND BALLS SUBROUTINE>>>
1262600 REM
1272620 FOR I=1 TO 7\B3(I)=0\NEXT I
1282640 B=0\S=0\O=0\RETURN
1292660 REM
1302680 REM <<<WALK HANDLER>>>
1312700 REM
1322720 IF T=1 GOTO 2740\PRINT V9$(B1);" WALKS"\GOTO 2760
1332740 PRINT H9$(B2);" WALKS"
1342760 B=0\S=0\IF B3(1)<>0 GOTO 2860
1352780 B3(1)=B1
1362800 IF T=0 GOTO 2820\B2=B2+1\IF B2<>10 GOTO 2840\B2=1\GOTO 2840
1372820 B1=B1+1\IF B1<>10 GOTO 2840\B1=1
1382840 RETURN
1392860 IF B3(2)<>0 GOTO 2900
1402880 B3(2)=B3(1)\GOTO 2780
1412900 IF B3(3)<>0 GOTO 2940
1422920 B3(3)=B3(2)\GOTO 2880
1432940 B3(4)=B3(3)\GOSUB 2400\GOTO 2920
1442960 REM
1452980 REM <<<HIT HANDLER>>>
1463000 REM
1473020 B=0\S=0\FOR I=1 TO H5
1483040 FOR J=7 TO 2 STEP -1
1493060 B3(J)=B3(J-1)
1503080 NEXT J\B3(1)=0
1513100 NEXT I
1523120 IF T=1 GOTO 3180
1533140 PRINT V9$(B1);\B3(H5)=B1
1543160 B1=B1+1\IF B1<>10 GOTO 3220\B1=1\GOTO 3220
1553180 PRINT H9$(B2);\B3(H5)=B2
1563200 B2=B2+1\IF B2<>10 GOTO 3220\B2=1
1573220 PRINT " GETS";H5;" BASE HIT"\GOSUB 2400
1583240 RETURN
1593260 REM
1603280 REM <<<PROBABILITY HANDLER>>>
1613300 REM
1623320 IF P/100<=RND(1) GOTO 3340\P=1\GOTO 3360
1633340 P=0
1643360 RETURN
1653380 REM
1663400 REM <<<OUT DISPATCHER>>>
1673420 REM
1683440 S=0\B=0\IF O=>3 GOTO 3460\IF T=1 GOTO 1440\GOTO 960
1693460 O=0\IF T=1 GOTO 3520
1703480 IF I1<9 GOTO 3500\IF V(16)=>H(16) GOTO 3500\GOTO 3600
1713500 PRINT\PRINT "BOTTOM OF INNING NO.";I1\T=1\GOSUB 2620\GOTO 1440
1723520 IF I1<9 GOTO 3560\IF I1=13 GOTO 3660
1733540 IF V(16)=H(16) GOTO 3560\GOTO 3600
1743560 PRINT\PRINT "TOP OF INNING NO.";\I1=I1+1
1753580 T=0\PRINT I1\GOSUB 2620\GOTO 960
1763600 PRINT\PRINT "END OF GAME"
1773620 FOR I=1 TO 7\B3(I)=0\NEXT I
1783640 PRINT "FINAL SCORE:"\GOSUB 3740\STOP
1793660 PRINT\PRINT "GAME CALLED DUE TO DARKNESS"\GOTO 3620
1803680 REM
1813700 REM <<<DISPLAAY SUBROUTINE>>>
1823720 REM
1833740 PRINT\PRINT
1843760 IF B3(2)=0 GOTO 3780\PRINT " [X]"," : INNING",\GOTO 3800
1853780 PRINT " [O]"," : INNING",
1863800 FOR I=1 TO I1\PRINT I;\NEXT I\PRINT " R"
1873820 IF B3(3)=0 GOTO 3840\PRINT "[X] ";\GOTO 3860
1883840 PRINT "[O] ";
1893860 IF B3(1)=0 GOTO 3880\PRINT "[X] : ";\GOTO 3900
1903880 PRINT "[O] : ";
1913900 PRINT N$,\FOR I=1 TO I1\PRINT V(I);\NEXT I\PRINT " ";V(16)
1923920 PRINT " [O]"," : SPITS",\FOR I=1 TO I1\PRINT H(I);\NEXT I
1933940 PRINT " ";H(16)
1943960 RETURN
1953980 REM
1964000 REM <<<FLY BALL & ERROR HANDELR>>>
1974020 REM
1984040 PRINT "FLY BALL CAUGHT BY ";
1994060 P=1+INT(9*RND(1))\IF T=1 GOTO 4100
2004080 PRINT H9$(P);" (";P9$(P);")"\GOTO 4120
2014100 PRINT V9$(P);" (";P9$(P);")"
2024120 P=15\GOSUB 3320\IF P=1 GOTO 4140\O=O+1\GOTO 3440
2034140 PRINT "*ERROR* HE DROPPED THE BALL!! - SAFE AT FIRST!"
2044160 H5=1\GOSUB 3020\GOTO 3440
2054180 REM
2064200 REM <<<DEFINE POSITIONS AND HOME TEAM PLAYERS>>>
2074220 REM
2084240 DATA "1B","LEFTY O'TOOLE","2B","DEAD EYE HERB"
2094260 DATA "SS","SCOOP JAMES","3B","DIGGER DAN"
2104280 DATA "LF","SCRATCHER SAM","CF","BLIND BERT"
2114300 DATA "RF","SLUGGER MCGHEE","C ","POP UP PETE"
2124320 DATA "P ","WILD WILLIE"
2134340 REM
2144360 REM <<<END OF PROGRAM>>>
2154380 REM
2164400 END