First commit
[baseball.git] / BSCOMN.XX
1         .SBTTL EQUATES\r
2         .GLOBL  MOOLAH,IRQ,RESET,START,MAINND,PLAYIT\r
3 RAM     =0              ;0-FFF, 1K QUAD MAPPED\r
4 ALPHR   =200            ;30 CHARS/ROW 200-27D\r
5 ALPHL   =380            ;4 ROWS, 3 USEABLE\r
6 SCRFLD  =1000           ;30 "COLUMNS" X 30 CHARS\r
7 MOBJ    =13C0           ;DMA LOC FOR MOTION OBJ\r
8 HPICT   =MOBJ\r
9 HVPOS   =MOBJ+1\r
10 HHPOS   =MOBJ+32.\r
11 BHPICT  =HPICT+28.      ;BALL\r
12 FSLAST  =0C             ;LAST SWING PICTURE\r
13 BLAST   =06             ;LAST BUNT PICTURE\r
14 CRVSIN  =1              ;CURVE BALL ANGLE INCREMENT\r
15 CTCHFL  =02             ;BALL CAUGHT FLAG (BY CATCHER)\r
16 HITFLG  =01             ;BALL HIT FLAG\r
17 FLDFLG  =04             ;BALL FIELDED FLAG\r
18 THROFL  =08             ;BALL THROWN FLAG\r
19 PLYEND  =10             ;END OF PLAY FLAG\r
20 FOUL    =20             ;FOULD BALL FLAG\r
21 FBSPD   =40             ;INITIAL FAST BALL SPEED\r
22 CRVSPD  =30             ;INITIAL CURVE BALL SPEED\r
23 KBSPD   =20             ;INITIAL KNUCKLE BALL SPEED\r
24 CHUSPD  =30             ;SECONDARY CHANGE UP SPEED\r
25 STCRV1  =61.            ;BASE HORIZONTAL POSITION TO START CURVE\r
26 KBRFLG  =80             ;KNUCKLE BALL LEFT FLAG\r
27 KBLFLG  =40             ;KNUCKLE BALL RIGHT FLAG\r
28 ANGL45  =1F             ;45 DEGREES\r
29 PROX    =-4             ;PROXIMITY VALUE (USED IN CATCH)\r
30 FPROX   =6              ;PROXIMITY VALUE (USED IN COLCHK)\r
31 BTPROX  =16.            ;BASE COLLISION PROXIMITY VALUE\r
32 ANGL90  =3F             ;40 DEG.\r
33 HDUGD   =0              ;DEFENSE DUGOUT HORIZ LOCATION\r
34 VDUGD   =38             ;DEFENSE DUGOUT VERT LOCATION\r
35 HDUGO   =0              ;OFFENSE DUGOUT HORIZ LOCATION\r
36 VDUGO   =0C8            ;OFFENSE DUGOUT VERT LOCATION\r
37 BTHPOS  =HPOSH          ;BAT=M.O. #1\r
38 BTVPOS =VPOS\r
39 NGL180  =7F             ;180 DEG\r
40 SLDVAL  =8              ;# OF FRAMES TO "SLIDE"\r
41 PITCHER =1              ;PLAYER NUMBERS\r
42 CATCHER =2\r
43 FIRSTB  =3\r
44 SCNDB   =4\r
45 THIRDB  =5\r
46 SSTOP   =6\r
47 BATTER  =10.\r
48 INFIELD =6              ;HIGHEST INFIELDER #\r
49 INMAX   =0A0\r
50 SFHPOS  =2000           ;SCROLL FIELD H-OFFSET\r
51 OUT1    =2001           ;D7-D3 SPARE, D2-KICKER,D1-HIT,D0-WHISTLE\r
52 OUT2    =2002           ;D7,D6-UNUSED,D5-ATTRACT (BAR),D4-COIN CTR,D3-0-CROWD\r
53 OUT3    =2003           ;D7,D6-UNUSED,D5,D4-SPARE,D3-0 LED CATHODES\r
54 INTACK  =3000           ;INTERUPT ACKNOWLEDGE\r
55 INPORT  =4000           ;INPUT PORT FOR SWITCHES & COUNTERS\r
56 WTCHDG  =5000           ;WATCHDOG TIMER RESET\r
57 PROG    =6000           ;8K OF PROGRAM, ENDING AT 7FFF\r
58 SIDELN  =3              ;SIDELINE AT BOTTOM\r
59 YARDNO  =4              ;YARDLINE WITH "0" ON LEFT, NO ARROW\r
60 YARDAR  =5              ;YARDLINE WITH "0" ON LEFT, ARROW TO LEFT\r
61 ;6,7 ARE "1", 8,9 ARE "2", ETC. DOWN TO E,F ARE "5"\r
62 YARDSD  =2              ;YARDLINE WITH SIDELINE\r
63 PTRT    =40             ;"OR" IN 40 TO POINT RIGHT\r
64 ONTOP   =80             ;"OR" IN 80 FOR TOP OF SCREEN\r
65 BLANK   =0\r
66 YARDLN  =10             ;YARDLINE, NO SIDELINE, IN RIGHT OF STAMP\r
67 FL      =120.           ;FIELD LENGTH IN YARDS, INCLUDING ENDZONES\r
68 BALLNO  =14.            ;BALL IS OBJECT #14.\r
69 PSPAUS =10.             ;PAUSE BETWEEN BUTTON PUSHES (SECONDS)\r
70 S.SEL   =0              ;STATE OF ZERO IS "SELECT"\r
71 S.PLAY  =40             ;STATE OF 40 IS "PLAY"\r
72 S.PAUS  =80             ;STATE OF 80 IS "PAUSE" BETWEEN PLAYS\r
73 M.BAN1  =0              ;FIRST BANNER\r
74 M.BAN2  =M.BAN1+1       ;SECOND BANNER\r
75 M.BAN3  =M.BAN2+1\r
76 M.GO    =M.BAN3+1       ;MESSAGE "GAME OVER"\r
77 M.SWNG  =M.GO+1         ;"SELECT SWING"\r
78 M.PTCH  =M.SWNG+1       ;"SELECT PITCH"\r
79 M.BALL  =M.PTCH+1       ;"BALL"\r
80 M.STRK  =M.BALL+1       ;"STRIKE"\r
81 M.FOUL  =M.STRK+1       ;"FOUL BALL"\r
82 M.HR    =M.FOUL+1       ;"HOME RUN"\r
83 M.HB    =M.HR+1         ;  "    "HIT BATSMAN"\r
84 M.TRPL  =M.HB+1         ;  "    "TRIPLE"\r
85 M.DP    =M.TRPL+1       ;  "    "OFF SIDES"\r
86 M.SR    =M.DP+1         ;  "    "SIDES RETIRED"\r
87 M.RDY   =M.SR+1 ;  "    "READY"\r
88 M.IC    =M.RDY+1        ;  "    "INSERT COINS"\r
89 M.ECAT  =M.IC+1         ;  "    "EACH COIN ADDS TIME"\r
90 M.OUT   =M.ECAT+1       ;  "    "OUT"\r
91 M.GAO   =M.OUT+1        ;  "    "GAME ALMOST OVER"\r
92 M.LOUT  =M.GAO+1                ;"LINE OUT"\r
93 M.FOUT  =M.LOUT+1               ;"FLY OUT"\r
94 M.MB    =M.FOUT+1               ;"MISSED BASE"\r
95 M.PS    =M.MB+1                 ;"PRESS START"\r
96 M.AB    =M.PS+1                 ;"ATARI BASEBALL"\r
97 \f       .SBTTL ZERO PAGE\r
98 INTCNT: .BLKB 1         ;COUNT OF INTERRUPTS\r
99 SYNC:   .BLKB 1         ;SET TO 1 ONCE PER FRAME (3 FIELDS)\r
100 MOTDON: .BLKB 1         ;FLAG FOR IRQ 0=MOTUP SKIPPED, 1=MOTUP DONE\r
101 TOUT1:  .BLKB 1         ;HOLDING CELL FOR OUT1 (SEE SOUND,TBALL)\r
102 INPUT:  .BLKB 4         ;SWITCHES 0, COUNTERS 0, SWITCHES 2, COUNTERS 2\r
103 OTB:    .BLKB 1         ;OLD VALUE OF TRACK-BALL COUNTERS\r
104 NEWTB:  .BLKB 1         ;NEW VALUE OF TRACK-BALL CTR\r
105         .BLKB 2         ;OTB, NEWTB FOR #2\r
106 TBDIR:  .BLKB 1         ;DIRECTION H0,V0,H2,V2 (D3-D0)\r
107 TBCTR   =INPUT+1        ;TRACK BALL COUNTERS @ 1,3\r
108 ;D7-D4 = VERTICAL COUNTER, D3-D0 = HORIZ COUNTER\r
109 $COINA  =INPUT          ;COINS IN D7\r
110 $LAM    =INPUT          ;SLAM @ SAME WORD\r
111 $LMBIT  =20             ;IN BIT D5\r
112 OPTION  =INPUT+2        ;OPTIONS IN 4 LSB\r
113 ;FOR DEBUG:  SW.   BIT  MEANING\r
114 ;@OPTION      4    D3   ON-LOGO @ 50 YD. LINE, OFF-NO LOGO\r
115 ;             3    D2   ON-CONSECUTIVE DELAY PENALITIES, OFF-ONE MAX\r
116 ;             2    D1   ON-TACKLE TEST, OFF-REGULAR GAME\r
117 ;             1    D0   ON-1:30/COIN,OFF-2 MINUTES\r
118 ;ALL SWITCHES ASSERTED LOW\r
119 TEST    =INPUT+2        ;ON D6\r
120 VBLANK  =INPUT          ;ON D6\r
121 WHISTL: .BLKB 1         ;WHISTLE SOUND TIMER (WARBLED BEEP)\r
122 ADL:    .BLKB 1\r
123 ADH:    .BLKB 1\r
124 THUD:   .BLKB 1         ;HIT SOUND TIMER\r
125 CRACK:  .BLKB 1\r
126 CROWD:  .BLKB 1         ;CROWD   "   VOLUME\r
127 BEEP:   .BLKB 1         ;STEADY BEEP FOR 30-SEC WARNING\r
128 CHEER:  .BLKB 2         ;USED IN CROWD-SOUND GENERATION\r
129 \r
130 ;FOLLOWING LOCATIONS USED BY COIN ROUTINE\r
131 $CCTIM: .BLKB 1         ;COIN CTR PULSE TIMER\r
132 $CNCT:  .BLKB 1         ;COIN COUNT\r
133 $PSTSL: .BLKB 1         ;POST-COIN SLAM TIMER\r
134 $CNSTT: .BLKB 1         ;COIN SW STATUS\r
135         .BLKB 2         ;$PSTSL,$CNSTT FOR OTHER MECH.\r
136 $LMTIM: .BLKB 1         ;PRE-COIN SLAM TIMER\r
137 $INTCT  =INTCNT         ;USE EXISTING INTERRUPT COUNTER\r
138 SLOCK:  .BLKB 1         ;SET TO LOCK OUT MOTION UPDATE IN VBLANK\r
139 FIELD:  .BLKB 1         ;COUNTS FIELD IN A FRAME\r
140 DBSW:   .BLKB 1         ;DE-BOUNCE SAVE WORD\r
141 SWSTAT: .BLKB 1         ;SWITCH STATUS PLAYER1\r
142         .BLKB 2         ;DBSW,SWSTAT FOR PLAYER2\r
143 \r
144 LEDWD:  .BLKB 3         ;LED'S FOR PLAYER1,BUTTONS,PLAYER2\r
145 CTLPTR: .BLKB 1         ;POINT TO CONTROLLED MAN (- IF NONE)\r
146 PSTIM:  .BLKB 1         ;PLAY-SELECT TIMER\r
147         .BLKB 2         ;CTLPTR, PSTIM FOR #2\r
148         \r
149 TBHD:   .BLKB 1         ;TRACK-BALL H. DISPLACEMENT (1)\r
150 TBVD:   .BLKB 1         ;TRACK-BALL V. DISPLACEMENT (1)\r
151         .BLKB 2         ;TBHP, TBVP FOR 2\r
152 IJ:     .BLKB 1         ;BUCKET FOR INT.\r
153 POLYL:  .BLKB 1         ;USED IN RAND\r
154 POLYH:  .BLKB 1         ;  "\r
155 J:      .BLKB 1         ;BUCKET FOR MAINLINE\r
156 K:      .BLKB 1         ;  "\r
157 TOBALL: .BLKB 1         ;WHAT FIELDER MOVES TO BALL\r
158 BALFLG: .BLKB 1         ;PLAY STATUS\r
159 CALL:   .BLKB 1         ;PITCH CALL (1=STRIKE, 0=BALL)\r
160 FAIR:   .BLKB 1         ;FLAG FOR FAIR BALL\r
161 HASBAL: .BLKB 1         ;WHO HAS THE BALL\r
162 SSTART: .BLKB 1         ;SWING STARTED FLAG\r
163 BATOUT: .BLKB 1         ;BATTER OUT FLAG\r
164 FSTFLD: .BLKB 1         ;BALL NOT FIELDED=0\r
165 HOMRUN: .BLKB 1         ;HOMERUN=POS (NON ZERO) TRIPLE NEG\r
166 FLYOUT: .BLKB 1         ;FLYBALL OUT\r
167 FLASH:  .BLKB 1         ;FLASH SCOREBOARD=80, LOW 2 BITS=VOICE\r
168 RUNPLY:.BLKB 1          ;RUNS ON EACH PLAY\r
169 MISSED: .BLKB 1         ;MISSED BASE\r
170 ANMSK:  .BLKB 1         ;3F OR 0, USED IN MESSAGE ROUTINE\r
171 PINFO:  .BLKB 1         ;PITCH INFORMATION\r
172 ATRACT: .BLKB 1         ;+=ATTRACT, -= PLAY\r
173 STATE:  .BLKB 1         ;STATE OF GAME; SELECT, PLAY, OR PAUSE\r
174 PAUST:  .BLKB 1         ;PAUSE TIMER, 1 OR 6.4 SECONDS\r
175 FLDBAL: .BLKB 1         ;OUTFIELD TO BALL\r
176 OFFENS: .BLKB 1         ;POINTS TO BASE OF OFFENSE PLAYER\r
177 PLAYER: .BLKB 1         ;SAVE X -> PLAYER\r
178 WPLAYR: .BLKB 1         ;DIRECTION INDICATOR FOR BATTER-RUNNER\r
179 FORCE:  .BLKB 1         ;FORCE BASES\r
180 SLIDE:  .BLKB 1         ;SLIDING IF NEGATIVE\r
181 SAVE1:  .BLKB 1         ;USED IN BATRUN FOR SPECIAL PICTURE HANDLING\r
182 FRAME:  .BLKB 1         ;COUNT FRAMES (20 HZ)\r
183 RUNTIM: .BLKB 1         ;RUN CLOCK IF A 1, STOP IF 0\r
184 BCNT:   .BLKB 1\r
185 SFTIM:  .BLKB 1         ;SKIP-FRAME TIME, FOR DEBUG\r
186 AVVD:   .BLKB 1         ;!VERT. DIFF!\r
187 AVHDL:  .BLKB 1         ;!HORIZ. DIFF! LOW\r
188 AVHDH:  .BLKB 1         ;!  "      " ! HI\r
189 BSTMP:  .BLKB 1         ;BAT STAMP\r
190 \r
191 PLAYNO: .BLKB 1         ;PLAY # FOR PLAYER1\r
192         .BLKB 2         ;DUMMY***, PLAYNO FOR 2\r
193 \r
194 OMESL:  .BLKB 1         ;OLD MESSAGE, LEFT\r
195 OSSTAT: .BLKB 1         ;OLD SWITCH STATUS, FOR PLAY-SELECT\r
196 OMESR:  .BLKB 1         ;OLD MESSAGE, RIGHT\r
197         .BLKB 1         ;OSSTAT FOR #2\r
198 SCORE:  .BLKB 4         ;2 BYTES EACH\r
199 ;BELOW ARE OBJECT CONTROL BLOCKS\r
200 ANGLE:  .BLKB 1         ;ANGLE BALL IS TRAVELING\r
201 SPEED:  .BLKB 1         ;SPEED BALL IS TRAVELING\r
202 TEMP1:  .BLKB 1\r
203 TEMP2:  .BLKB 1\r
204 TEMP3:  .BLKB 1\r
205 TDEC:   .BLKB 1         ;TEMP FOR SWING ROUTINE\r
206 TMASK:  .BLKB 1         ;"      "       "       "\r
207 BITMAP: .BLKB 2         ;BIT MAP FOR LEG MOTION\r
208 FLDCTL: .BLKB 3         ;FIELDERS TO CONTROL\r
209 RUNS:   .BLKB 1         ;FUNS OFFENS #1\r
210 OUTS:   .BLKB 2         ;OUTS & RUNS OFFENS #2\r
211 INNING: .BLKB 1         ;CURRENT INNING\r
212 BALLS:  .BLKB 1\r
213 STRIKE: .BLKB 1\r
214 BASE:   .BLKB 4         ;BASE OBTAINED BY EACH RUNNER\r
215 MOVE:   .BLKB 4         ;BASE EACH RUNNER HEADED TO: 0=STOPPED, FF=TO DUGOUT\r
216 ININGS: .BLKB 1\r
217 THPOS:  .BLKB 2         ;TEMP HPOS\r
218 TVPOS:  .BLKB 1\r
219 THGOAL: .BLKB 1\r
220 TVGOAL: .BLKB 2\r
221 THINC:  .BLKB 2\r
222 TVINC:  .BLKB 2\r
223 VDISP:  .BLKB 1\r
224 HDISP:  .BLKB 2\r
225 W30TIM: .BLKB 1         ;0=NO WARNING,1=WARNING GIVEN,OTHERWISE IS TIMER\r
226 OLDOFF: .BLKB 1         ;OLD OFFENSE, USED BY PAUSE,CHANGE\r
227 LEDTMP: .BLKB 1         ;USED BY PSEL\r
228 QUOT:   .BLKB 4         ;"M.Q." REGISTER\r
229 DIVSOR: .BLKB 2         ;"L" REGISTER\r
230 CLCK2S: .BLKB 1         ;2 SEC CLOCK\r
231 TPC:    .BLKB 2         ;PC LOCATION FOR MODIFIED CASE\r
232 TOBALX: .BLKB 1         ;OUTFIELDER TO BALL\r
233 INSPDX: .BLKB 1         ;CURRENT MAX SPEED FOR INFIELD FIELDING\r
234 MPSTIM: .BLKB 1         ;MASTER PLAY SELECT TIMER\r
235 CLK32S: .BLKB 1         ;MASTER PLAY TIMER\r
236 SCBDRV: .BLKB 2         ;SCOREBOARD POINTER RIGHT VISITOR\r
237 SCBDRH: .BLKB 2         ;SCOREBOARD POINTER RIGHT HOME\r
238 SCBDLV: .BLKB 2         ;SCOREBOARD POINTER LEFT VISITOR\r
239 SCBDLH: .BLKB 2         ;SCOREBOARD POINTER LEFT HOME\r
240 PLYR1:  .BLKB 1         ;1 PLAYER INDICATOR\r
241 CMPLYR: .BLKB 1         ;COMPUTER PLAYER #\r
242 SAVPIC: .BLKB 4         ;SAVE LOCATIONS FOR INTERRUPT RTN\r
243 SETFLG: .BLKB 1         ;SETUP FLAG\r
244 THRTMR: .BLKB 1         ;THROW TIMER\r
245 PLYR2:  .BLKB 1         ; 2 PLAYER  FLAG\r
246 RUNING: .BLKB 1         ;RUNS IN INNING\r
247 EOZP:                   ;END-OF-ZERO-PAGE\r
248         .SBTTL TRACE POINTERS\r
249 ;BELOW ARE INPUT TO TRACE ROUTINE\r
250         .=100\r
251 TSRC:   .BLKB 2         ;POINTS TO WORD TO BE TRACED\r
252 TDST:   .BLKB 1         ;POINT TO SCREEN LOCATION\r
253 \f       .SBTTL MISC.(NON-ZERO-PAGE) RAM\r
254         .=280\r
255 HPOSL:  .BLKB 1         ;FRACTIONAL YDS OF H-POSN\r
256 HPOSH:  .BLKB 1         ;INTEGRAL YDS OF H-POSN\r
257         .BLKB 28.\r
258 BHPOSL  =HPOSL+<BALLNO*2>\r
259 BHPOSH  =HPOSH+<BALLNO*2>\r
260 FDHPOS: .BLKB 2         ;FIRST-DOWN MARKER H-POS\r
261 \r
262 VPOSL:  .BLKB 1         ;VPOS LOW BITS (< 1/8 YD)\r
263 VPOS:   .BLKB 1         ;VPOS IN YDS/8\r
264         .BLKB 28.       ;OTHER MEN\r
265 BVPOSL  =VPOSL+<BALLNO*2>\r
266 BVPOS   =VPOS+<BALLNO*2>\r
267 FDVPOS: .BLKB 2         ;FIRST-DOWN MARKER V-POS\r
268 \r
269 FLAGS:  .BLKB 1         ;D7=HAS BEEN AT HGOAL, VGOAL, D1 (ON BALL) IN PASS\r
270 ;D0=IN COLLISION, D2=IN COLLISION WITH OPPONENT\r
271 \r
272 \r
273 VGOAL:  .BLKB 1         ;FIELDERS GOAL (POSITION)\r
274 HGOAL:  .BLKB 1\r
275         .BLKB 30.       \r
276 \r
277 \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0