A large commit.
[pdp8.git] / sw / src / basic / BBALLA.BA
1 100 REM BASEBALL - 1977
2 120 REM ===============
3 140 REM
4 160 REM
5 180 REM K. M. BOWYER
6 200 REM 1000 CEDAR AVE.
7 220 REM LEWES, DELAWARE
8 240 REM 19958
9 260 REM
10 280 REM <<<DEFINE DIMENSIONS>>>
11 300 REM
12 320 DIM N$(9),P9$(9,4),H9$(9,15),V9$(9,15),V(16),H(16)
13 340 DIM I1(16),B3(7),Q(7)
14 360 DIM S1$(5,1)
15 380 REM
16 400 REM <<<GET FORMALITIES OUT OF THE WAY>>>
17 420 REM
18 440 PRINT "WELCOME TO SPITBALL STATIUM"\PRINT
19 460 RANDOMIZE
20 480 PRINT "TODAY OUR HOMETOWN 'SPITS' MEET THE VISITING :";
21 500 INPUT N$\PRINT
22 520 PRINT "WHILE THE SPITS TAKE THE FIELD, LETS LOOK AT THE LINEUPS."
23 540 PRINT\PRINT "BAT","POS","SPITS",,N$\PRINT
24 560 FOR I=1 TO 9
25 580 READ P9$(I),H9$(I)
26 600 PRINT I,P9$(I),H9$(I),,
27 620 INPUT V9$(I)
28 640 NEXT I
29 660 REM
30 680 REM <<<SET UP CONSTANTS FOR GAME>>>
31 700 REM
32 720 Q(1)=37\Q(2)=50\Q(3)=6\Q(4)=4\Q(5)=2\Q(6)=1
33 740 Q(7)=Q(1)+Q(2)+Q(3)+Q(4)+Q(5)+Q(6)
34 760 S=0\FOR I=1 TO 6\S=S+Q(I)\Q(I)=INT(S*100/Q(7))\NEXT I
35 780 I1=0\T=1\O=3\FOR I=1 TO 16\H(I)=0\V(I)=0\NEXT I\B1=1\B2=1
36 800 REM
37 820 REM <<<TOP OF INNING>>>
38 840 REM
39 860 GOTO 3440
40 880 REM
41 900 REM <<<VISITING BATTER UP>>>
42 920 REM <<<PRINT DIAAMOND, SCORE, COUNT AND BATTER>>>
43 940 REM
44 960 GOSUB 3740
45 980 PRINT\PRINT N$;" BATTER IS - ";V9$(B1);"."
46 1000 REM
47 1020 REM <<<VISITOR BATTER SWINGS>>>
48 1040 REM
49 1060 GOSUB 2280\PRINT "YOUR SWING [(S)TEAL OR <CR>]: ";
50 1080 PRINT\PRINT ">";
51 1100 IF S$="S" GOTO 1980\Q(7)=100*RND(1)
52 1120 IF Q(7)>Q(1) GOTO 1160\B=B+1\PRINT "BALL";B\IF B<4 GOTO 960
53 1140 GOSUB 2680\GOTO 960
54 1160 IF Q(7)>Q(2) GOTO 1240\S=S+1\PRINT "STRIKE";S
55 1180 IF S=3 GOTO 1200\GOTO 960
56 1200 O=O+1\B1=B1+1\IF B1=10 GOTO 1220\GOTO 3400
57 1220 B1=1\GOTO 3400
58 1240 IF Q(7)>Q(3) GOTO 1300\H5=1
59 1260 P=40\GOSUB 3320\IF P=1 GOTO 4040
60 1280 GOSUB 3020\GOTO 960
61 1300 IF Q(7)>Q(4) GOTO 1320\H5=2\GOTO 1260
62 1320 IF Q(7)>Q(5) GOTO 1340\H5=3\GOTO 1260
63 1340 H5=4\GOTO 1260
64 1360 REM
65 1380 REM <<<BOTTOM OF INNING>>>
66 1400 REM <<<PRINT DIAMOND, SCORE, COUNT AND BATTER>>>
67 1420 REM
68 1440 GOSUB 3740
69 1460 PRINT\PRINT "SPITS BATTER IS - ";H9$(B2);"."
70 1480 REM
71 1500 REM <<<VISITING PITCHER PITCHES>>>
72 1520 REM
73 1540 GOSUB 2280\PRINT "YOUR PITCH [<CR>]: ";
74 1560 PRINT\PRINT ">";
75 1580 REM
76 1600 REM <<<HOME TEAM STEAL GENERATOR>>>
77 1620 REM
78 1640 IF B3(1)+B3(2)+B3(3)=0 GOTO 1700
79 1660 P=8\GOSUB 3320\IF P=0 GOTO 1700
80 1680 GOTO 1980
81 1700 Q(7)=100*RND(1)
82 1720 IF Q(7)>Q(1) GOTO 1780\B=B+1\PRINT "BALL";B
83 1740 IF B<4 GOTO 1440
84 1760 GOSUB 2680\GOTO 1440
85 1780 IF Q(7)>Q(2) GOTO 1860
86 1800 S=S+1\PRINT "STRIKE";S\IF S=3 GOTO 1820\GOTO 1440
87 1820 O=O+1\B2=B2+1\IF B2=10 GOTO 1840\GOTO 3440
88 1840 B2=1\GOTO 3400
89 1860 IF Q(7)>Q(3) GOTO 1900\H5=1
90 1880 GOSUB 3020\GOTO 1440
91 1900 IF Q(7)>Q(4) GOTO 1920\H5=2\GOTO 1880
92 1920 IF Q(7)>Q(5) GOTO 1940\H5=3\GOTO 1880
93 1940 H5=4\GOTO 1880
94 1960 REM
95 1980 REM <<<STEAL HANDLER>>>
96 2000 REM
97 2020 FOR I=3 TO 1 STEP -1\IF B3(I)<>0 GOTO 2080\NEXT I
98 2040 PRINT "CAN'T STEAL - NOBODY ON BASE !"
99 2060 IF T=1 GOTO 1440\GOTO 960
100 2080 IF T=1 GOTO 2100\PRINT V9$(B3(I));\GOTO 2120
101 2100 PRINT H9$(B3(I));
102 2120 PRINT " ATTEMPTS TO STEAL - HE IS ";
103 2140 P=80-20*I\GOSUB 3320\IF P=1 GOTO 2180
104 2160 PRINT "OUT !"\O=O+1\B3(I)=0\GOTO 3440
105 2180 PRINT "SAFE !"\B3(I+1)=B3(I)\B3(I)=0
106 2200 IF I<>3 GOTO 2060\GOSUB 2360\GOTO 2060
107 2220 REM
108 2240 REM <<<PRINT COUNT SUBROUTINE>>>
109 2260 REM
110 2280 PRINT " B S O"\PRINT " ";B;" ";S;" ";O
111 2300 PRINT
112 2320 RETURN
113 2340 REM
114 2360 REM <<<RUN HANDLER>>>
115 2380 REM
116 2400 IF B3(4)+B3(5)+B3(6)+B3(7)<>0 GOTO 2420\RETURN
117 2420 FOR I=7 TO 4 STEP -1\IF B3(I)=0 GOTO 2480
118 2440 IF T=1 GOTO 2520
119 2460 PRINT V9$(B3(I));" SCORES"\V(I1)=V(I1)+1\V(16)=V(16)+1
120 2480 B3(I)=0\NEXT I
121 2500 RETURN
122 2520 PRINT H9$(B3(I));" SCORES"\H(I1)=H(I1)+1\H(16)=H(16)+1
123 2540 GOTO 2480
124 2560 REM
125 2580 REM <<<CLEAR BASES, OUTS, STRIKES AND BALLS SUBROUTINE>>>
126 2600 REM
127 2620 FOR I=1 TO 7\B3(I)=0\NEXT I
128 2640 B=0\S=0\O=0\RETURN
129 2660 REM
130 2680 REM <<<WALK HANDLER>>>
131 2700 REM
132 2720 IF T=1 GOTO 2740\PRINT V9$(B1);" WALKS"\GOTO 2760
133 2740 PRINT H9$(B2);" WALKS"
134 2760 B=0\S=0\IF B3(1)<>0 GOTO 2860
135 2780 B3(1)=B1
136 2800 IF T=0 GOTO 2820\B2=B2+1\IF B2<>10 GOTO 2840\B2=1\GOTO 2840
137 2820 B1=B1+1\IF B1<>10 GOTO 2840\B1=1
138 2840 RETURN
139 2860 IF B3(2)<>0 GOTO 2900
140 2880 B3(2)=B3(1)\GOTO 2780
141 2900 IF B3(3)<>0 GOTO 2940
142 2920 B3(3)=B3(2)\GOTO 2880
143 2940 B3(4)=B3(3)\GOSUB 2400\GOTO 2920
144 2960 REM
145 2980 REM <<<HIT HANDLER>>>
146 3000 REM
147 3020 B=0\S=0\FOR I=1 TO H5
148 3040 FOR J=7 TO 2 STEP -1
149 3060 B3(J)=B3(J-1)
150 3080 NEXT J\B3(1)=0
151 3100 NEXT I
152 3120 IF T=1 GOTO 3180
153 3140 PRINT V9$(B1);\B3(H5)=B1
154 3160 B1=B1+1\IF B1<>10 GOTO 3220\B1=1\GOTO 3220
155 3180 PRINT H9$(B2);\B3(H5)=B2
156 3200 B2=B2+1\IF B2<>10 GOTO 3220\B2=1
157 3220 PRINT " GETS";H5;" BASE HIT"\GOSUB 2400
158 3240 RETURN
159 3260 REM
160 3280 REM <<<PROBABILITY HANDLER>>>
161 3300 REM
162 3320 IF P/100<=RND(1) GOTO 3340\P=1\GOTO 3360
163 3340 P=0
164 3360 RETURN
165 3380 REM
166 3400 REM <<<OUT DISPATCHER>>>
167 3420 REM
168 3440 S=0\B=0\IF O=>3 GOTO 3460\IF T=1 GOTO 1440\GOTO 960
169 3460 O=0\IF T=1 GOTO 3520
170 3480 IF I1<9 GOTO 3500\IF V(16)=>H(16) GOTO 3500\GOTO 3600
171 3500 PRINT\PRINT "BOTTOM OF INNING NO.";I1\T=1\GOSUB 2620\GOTO 1440
172 3520 IF I1<9 GOTO 3560\IF I1=13 GOTO 3660
173 3540 IF V(16)=H(16) GOTO 3560\GOTO 3600
174 3560 PRINT\PRINT "TOP OF INNING NO.";\I1=I1+1
175 3580 T=0\PRINT I1\GOSUB 2620\GOTO 960
176 3600 PRINT\PRINT "END OF GAME"
177 3620 FOR I=1 TO 7\B3(I)=0\NEXT I
178 3640 PRINT "FINAL SCORE:"\GOSUB 3740\STOP
179 3660 PRINT\PRINT "GAME CALLED DUE TO DARKNESS"\GOTO 3620
180 3680 REM
181 3700 REM <<<DISPLAAY SUBROUTINE>>>
182 3720 REM
183 3740 PRINT\PRINT
184 3760 IF B3(2)=0 GOTO 3780\PRINT " [X]"," : INNING",\GOTO 3800
185 3780 PRINT " [O]"," : INNING",
186 3800 FOR I=1 TO I1\PRINT I;\NEXT I\PRINT " R"
187 3820 IF B3(3)=0 GOTO 3840\PRINT "[X] ";\GOTO 3860
188 3840 PRINT "[O] ";
189 3860 IF B3(1)=0 GOTO 3880\PRINT "[X] : ";\GOTO 3900
190 3880 PRINT "[O] : ";
191 3900 PRINT N$,\FOR I=1 TO I1\PRINT V(I);\NEXT I\PRINT " ";V(16)
192 3920 PRINT " [O]"," : SPITS",\FOR I=1 TO I1\PRINT H(I);\NEXT I
193 3940 PRINT " ";H(16)
194 3960 RETURN
195 3980 REM
196 4000 REM <<<FLY BALL & ERROR HANDELR>>>
197 4020 REM
198 4040 PRINT "FLY BALL CAUGHT BY ";
199 4060 P=1+INT(9*RND(1))\IF T=1 GOTO 4100
200 4080 PRINT H9$(P);" (";P9$(P);")"\GOTO 4120
201 4100 PRINT V9$(P);" (";P9$(P);")"
202 4120 P=15\GOSUB 3320\IF P=1 GOTO 4140\O=O+1\GOTO 3440
203 4140 PRINT "*ERROR* HE DROPPED THE BALL!! - SAFE AT FIRST!"
204 4160 H5=1\GOSUB 3020\GOTO 3440
205 4180 REM
206 4200 REM <<<DEFINE POSITIONS AND HOME TEAM PLAYERS>>>
207 4220 REM
208 4240 DATA "1B","LEFTY O'TOOLE","2B","DEAD EYE HERB"
209 4260 DATA "SS","SCOOP JAMES","3B","DIGGER DAN"
210 4280 DATA "LF","SCRATCHER SAM","CF","BLIND BERT"
211 4300 DATA "RF","SLUGGER MCGHEE","C ","POP UP PETE"
212 4320 DATA "P ","WILD WILLIE"
213 4340 REM
214 4360 REM <<<END OF PROGRAM>>>
215 4380 REM
216 4400 END