]> github.com/historicalsource and other repositories - mspacman-7800.git/blob - PUTCHAR.S
Initial import.
[mspacman-7800.git] / PUTCHAR.S
1 \r
2 *  PUTCHAR.S      THIS PROVIDES ROUTINES FOR MODIFYING THE SCREEN\r
3 \r
4 *  THIS ROUTINE PUTS UP A SET OF CHARACTERS IN A BLOCK ON THE SCREEN.  IT'S\r
5 *  PARAMETERS ARE:\r
6 *         TEMP0   THE NUMBER OF LINES TO BE CHANGED\r
7 *         TEMP1   THE NUMBER OF COLUMNS TO BE CHANGED\r
8 *         TEMP2   WHAT CHARACTER IN THE FONT TO START WITH (THIS IS INCREMENTED)\r
9 *         TEMP3   WHAT ZONE THE MODIFICATION STARTS IN\r
10 *         TEMP4   WHAT COLUMN IN THE ZONE IT STARTS IN\r
11 *         TEMP5, 6, AND 7 ARE USED FOR INTERNAL USE\r
12 PUTCHARS  LDA     #$01\r
13           STA     TEMP5\r
14           JMP     PCHAR\r
15 \r
16 \r
17 *  THIS ROUTINE IS THE SAME AS PUTCHARS, BUT THE CHARACTER USED FOR MODIFICATION\r
18 *  DOES NOT CHANGE.\r
19 PUTCHAR   LDA     #$00\r
20           STA     TEMP5\r
21           JMP     PCHAR\r
22 \r
23 \r
24 *  THIS ROUTINE DOES THE WORK FOR PUTCHARS AND PUTCHAR\r
25 PCHAR     LDX     TEMP3                  ;THE ZONE\r
26           LDA     SCRLOW,X               ;LOW BYTE OF ADDRESS FOR ZONE\r
27           STA     TEMP6                  ;TEMP LOCATION\r
28           LDA     SCRHI,X                ;HI BYTE OF ADDRESS FOR ZONE\r
29           STA     TEMP7\r
30 \r
31           LDX     TEMP1                  ;NUMBER OF COLUMNS\r
32           LDY     TEMP4                  ;STARTING COLUMN\r
33 PLOOP     LDA     TEMP2                  ;STARTING CHAR\r
34           STA     (TEMP6),Y\r
35           LDA     TEMP5                  ;SEE IF STARTING CHAR IS INCREMENTED\r
36           BEQ     PJMP0\r
37           INC     TEMP2                  ;NEXT CHAR\r
38 PJMP0     INY\r
39           DEX\r
40           BNE     PLOOP\r
41 \r
42           INC     TEMP3                  ;NEXT ZONE\r
43           DEC     TEMP0                  ;ONE LESS LINE\r
44           BNE     PCHAR                  ;DO IT AGAIN IF MORE LINES\r
45           RTS\r
46 \r
47 \r
48 *  THIS ROUTINE PUTS A SINGLE CHARACTER INTO A SINGLE PLACE ON THE SCREEN.\r
49 *  PARAMETERS:\r
50 *         TEMP0   ZONE\r
51 *         TEMP1   COLUMN\r
52 *         X       CHARACTER\r
53 *  TEMP2-3 ARE USED.\r
54 PLOPCHAR  STY     TEMP23\r
55           LDY     TEMP0                  ;THE ZONE\r
56           LDA     SCRLOW,Y               ;LOW BYTE OF ADDRESS FOR ZONE\r
57           STA     TEMP2                  ;TEMP LOCATION\r
58           LDA     SCRHI,Y                ;HI BYTE OF ADDRESS FOR ZONE\r
59           STA     TEMP3\r
60           LDY     TEMP1\r
61           TXA\r
62           STA     (TEMP2),Y\r
63           LDY     TEMP23\r
64           RTS\r
65 \r
66 \r
67 *  THIS RETURNS (IN A) THE CONTENTS OF A CHARACTER.\r
68 *  PARAMETERS:  TEMP0 - ZONE, TEMP1 - COL\r
69 *  TEMPS:  TEMP2-3\r
70 GETCHAR   STY     TEMP23\r
71           LDY     TEMP0                  ;THE ZONE\r
72           LDA     SCRLOW,Y               ;LOW BYTE OF ADDRESS FOR ZONE\r
73           STA     TEMP2                  ;TEMP LOCATION\r
74           LDA     SCRHI,Y                ;HI BYTE OF ADDRESS FOR ZONE\r
75           STA     TEMP3\r
76 \r
77           LDY     TEMP1                  ;STARTING COLUMN\r
78           LDA     (TEMP2),Y\r
79           LDY     TEMP23\r
80           RTS\r
81 \r
82 \r
83 *  THIS ROUTINE ADDS THE ACCUMULATOR TO THE PRESENT SCORE.  NOTE THAT THE\r
84 *  ACCUMULATOR SHOULD HAVE A DECIMAL NUMBER, THIS WILL BE MULTIPLIED BY 10\r
85 *  TEMP 8-12 ARE USED.  REGISTERS ARE PRESERVED.  TEMP 6-7 ARE USED BY WRTSCORE\r
86 *  IF ADDTOTAL IS CALLED, THE USER SETS UP TEMP11-12 TO THE ADDED SCORE\r
87 ADDSCORE  STA     TEMP12\r
88           LDA     #$00\r
89           STA     TEMP11\r
90 ADDTOTAL  TXA                            ;STACK REGISTERS\r
91           PHA\r
92           TYA\r
93           PHA\r
94 \r
95           LDA     #$00                   ;CLEAR TOP TWO BYTES OF ADDED VALUE\r
96           STA     TEMP9\r
97           STA     TEMP10\r
98           LDX     AUTOPLAY\r
99           BNE     ADSOUT\r
100           LDY     PLAYER                 ;SEE WHICH PLAYER IS ACTIVE\r
101           BNE     ADSP2\r
102 \r
103           LDY     #$03\r
104           SED                            ;DECIMAL MODE ON\r
105           CLC\r
106 ADS1LOOP  LDA     TEMP9,Y\r
107           ADC     P1SCORE,Y\r
108           STA     P1SCORE,Y\r
109           LDA     #$00\r
110           DEY\r
111           BPL     ADS1LOOP\r
112           CLD                            ;DECIMAL MODE OFF\r
113           JSR     CHKSCOR1\r
114           JMP     ADSOUT\r
115 \r
116 ADSP2     LDY     #$03\r
117           SED                            ;DECIMAL MODE ON\r
118           CLC\r
119 ADS2LOOP  LDA     TEMP9,Y\r
120           ADC     P2SCORE,Y\r
121           STA     P2SCORE,Y\r
122           LDA     #$00\r
123           DEY\r
124           BPL     ADS2LOOP\r
125           CLD                            ;DECIMAL MODE OFF\r
126           JSR     CHKSCOR2\r
127 \r
128 ADSOUT    JSR     WRTSCORE\r
129           PLA                            ;UNSTACK REGISTERS\r
130           TAY\r
131           PLA\r
132           TAX\r
133           RTS\r
134 \r
135 \r
136 *  THIS ROUTINE CHECKS TO SEE IF PLAYER 1 HAS A BONUS LIFE COMING\r
137 CHKSCOR1  LDA     P1BONUS                ;MAKE SURE BONUS IS ENABLED\r
138           BMI     CKS1OUT\r
139           SED\r
140           SEC                            ;DECIMAL MODE ON\r
141           LDA     P1BONUS+1\r
142           SBC     TEMP12\r
143           STA     P1BONUS+1\r
144           LDA     P1BONUS\r
145           SBC     TEMP11\r
146           STA     P1BONUS\r
147           CLD                            ;DECIMAL MODE OFF\r
148           LDA     P1BONUS                ;COMPENSATE FOR 6502 BUG\r
149           BPL     CKS1OUT\r
150           JSR     INCLIVES\r
151 CKS1OUT   RTS\r
152 \r
153 \r
154 *  THIS ROUTINE CHECKS TO SEE IF PLAYER 2 HAS A BONUS LIFE COMING\r
155 CHKSCOR2  LDA     P2BONUS                ;MAKE SURE BONUS IS ENABLED\r
156           BMI     CKS2OUT\r
157           SED\r
158           SEC                            ;DECIMAL MODE ON\r
159           LDA     P2BONUS+1\r
160           SBC     TEMP12\r
161           STA     P2BONUS+1\r
162           LDA     P2BONUS\r
163           SBC     TEMP11\r
164           STA     P2BONUS\r
165           CLD                            ;DECIMAL MODE OFF\r
166           LDA     P2BONUS                ;COMPENSATE FOR 6502 BUG\r
167           BPL     CKS2OUT\r
168           JSR     INCLIVES\r
169 CKS2OUT   RTS\r
170 \r
171 \r
172 *  THIS ROUTINE INITIALIZES THE LIVES\r
173 INITLIV   LDA     #$04\r
174           STA     LIVES\r
175           STA     TOTLIVES\r
176           LDX     TWOPLAYR\r
177           BEQ     ILOUT\r
178           STA     BAKLIVES               ;FOR THE OTHER PLAYER\r
179           LDA     #$09\r
180           STA     TOTLIVES\r
181 ILOUT     RTS\r
182 \r
183 \r
184 *  THIS ROUTINE DECREMENTS THE LIVES.\r
185 DECLIVES  LDA     AUTOPLAY\r
186           BNE     DECALT\r
187           JSR     CLEARTUN\r
188           JSR     WAIT\r
189           DEC     LIVES\r
190           JSR     WRTLIVES\r
191           LDA     LIVES\r
192           BPL     DLCONT\r
193           JSR     OVER                   ;PUT GAME OVER UP\r
194           JSR     WAIT\r
195           JSR     WCLEAR\r
196 DLCONT    DEC     TOTLIVES\r
197           BMI     DLDEAD\r
198           LDA     TWOPLAYR\r
199           BNE     DLSWITCH\r
200           JSR     LIFEINIT\r
201 DLREADY   JSR     READY                  ;PUT PLAYER READY UP\r
202           JSR     WAIT\r
203           JMP     WCLEAR\r
204 DLSWITCH  JSR     OTHRINIT               ;SWITCH TO OTHER PLAYER\r
205           JMP     DLREADY\r
206 DLDEAD    LDA     #$01                   ;GAME OVER\r
207           STA     GAMEOVER\r
208           RTS\r
209 DECALT    JMP     NEXTRACK               ;IF AUTOPLAY - SWITCH RACKS INSTEAD\r
210 \r
211 \r
212 *  THIS ROUTINE INCREMENTS THE LIVES.\r
213 INCLIVES  INC     LIVES\r
214           INC     TOTLIVES\r
215           LDA     #$14\r
216           JSR     DOTUNE\r
217           JMP     WRTLIVES\r
218 \r
219 \r
220 *  THIS ROUTINE WRITES THE SCORES OF THE PLAYERS ON THE SCREEN\r
221 *  TEMPS 6-7 AND 10 ARE USED\r
222 *  NOTE:  SCORE+1 IS USED SINCE THE HI BYTE IS ONLY MAINTAINED FOR THE HIGH\r
223 *         SCORE CART\r
224 WRTSCORE  LDX     #$1E\r
225           LDA     SCRLOW,X               ;LOW BYTE OF ADDRESS FOR ZONE\r
226           STA     TEMP6                  ;TEMP LOCATION\r
227           LDA     SCRHI,X                ;HI BYTE OF ADDRESS FOR ZONE\r
228           STA     TEMP7                  ;NOW - ZONE LINE IS SET UP\r
229           LDY     #P1SCRCOL              ;STARTING COLUMN\r
230 \r
231           LDX     PLAYER\r
232           LDA     NUMCHAR,X\r
233           STA     TEMP10                 ;SET STARTING CHARACTER FOR ZERO\r
234           LDX     #$00\r
235 \r
236 WRSALOOP  LDA     P1SCORE+1,X            ;ELIMINATE LEADING ZEROS\r
237           LSR     A\r
238           LSR     A\r
239           LSR     A\r
240           LSR     A\r
241           BNE     WRS1JMP0\r
242           JSR     WRTBLANK\r
243           LDA     P1SCORE+1,X\r
244           AND     #$0F\r
245           BNE     WRS1JMP1\r
246           JSR     WRTBLANK\r
247           INX\r
248           CPX     #$03\r
249           BMI     WRSALOOP\r
250           JMP     WRS1JMP2\r
251 \r
252 WRS1LOOP  LDA     P1SCORE+1,X            ;WRITE SCORE FOR PLAYER 1\r
253           LSR     A\r
254           LSR     A\r
255           LSR     A\r
256           LSR     A\r
257 WRS1JMP0  JSR     WRTDIGIT\r
258           LDA     P1SCORE+1,X\r
259           AND     #$0F\r
260 WRS1JMP1  JSR     WRTDIGIT\r
261           INX\r
262           CPX     #$03\r
263           BMI     WRS1LOOP\r
264 \r
265 WRS1JMP2  LDA     #$00                   ;TRAILING ZERO\r
266           JSR     WRTDIGIT\r
267 \r
268 WRSB      LDA     TWOPLAYR               ;DON'T DO SECOND IF ONE-PLAYER\r
269           BEQ     WRS2NONE\r
270           LDX     PLAYER\r
271           LDA     NUMCHAR2,X\r
272           STA     TEMP10                 ;SET STARTING CHARACTER FOR ZERO\r
273           LDX     #$00                   ;START WITH HIGH BYTE\r
274           LDY     #P2SCRCOL              ;STARTING COLUMN\r
275 \r
276 WRSBLOOP  LDA     P2SCORE+1,X            ;ELIMINATE LEADING ZEROS\r
277           LSR     A\r
278           LSR     A\r
279           LSR     A\r
280           LSR     A\r
281           BNE     WRS2JMP0\r
282           JSR     WRTBLANK\r
283           LDA     P2SCORE+1,X\r
284           AND     #$0F\r
285           BNE     WRS2JMP1\r
286           JSR     WRTBLANK\r
287           INX\r
288           CPX     #$03\r
289           BMI     WRSBLOOP\r
290           JMP     WRS2JMP2\r
291 \r
292 WRS2LOOP  LDA     P2SCORE+1,X            ;WRITE SCORE FOR PLAYER 2\r
293           LSR     A\r
294           LSR     A\r
295           LSR     A\r
296           LSR     A\r
297 WRS2JMP0  JSR     WRTDIGIT\r
298           LDA     P2SCORE+1,X\r
299           AND     #$0F\r
300 WRS2JMP1  JSR     WRTDIGIT\r
301           INX\r
302           CPX     #$03\r
303           BMI     WRS2LOOP\r
304 \r
305 WRS2JMP2  LDA     #$00                   ;TRAILING ZERO\r
306           JMP     WRTDIGIT               ;ALL DONE\r
307 \r
308 WRS2NONE  LDY     #P2SCRCOL              ;CLEAR OUT PLAYER 2 (JUST IN CASE)\r
309           LDX     #$06\r
310 WRS2NLP   JSR     WRTBLANK\r
311           DEX\r
312           BPL     WRS2NLP\r
313           RTS\r
314 \r
315 *  THIS ROUTINE WRITES A DIGIT (IN THE ACCUMULATOR) TO THE NEXT SPOT ON THE\r
316 *  SCREEN (TEMP6).  TEMP10 IS ADDED (TO GIVE OFFSET INTO FONT).\r
317 WRTDIGIT  CLC\r
318           ADC     TEMP10\r
319           STA     (TEMP6),Y\r
320           INY\r
321           RTS\r
322 \r
323 *  THIS ROUTINE WRITES A BKANK TO THE NEXT SPOT ON THE SCREEN (TEMP6).\r
324 WRTBLANK  LDA     #BLNKCHAR\r
325           STA     (TEMP6),Y\r
326           INY\r
327           RTS\r
328 \r
329 \r
330 *  THIS ROUTINE WRITES THE LIVES ON THE SCREEN\r
331 WRTLIVES  LDA     LIVES                  ;GET NUMBER OF LIVES\r
332           CMP     #$05                   ;MAKE SURE NOT TOO BIG\r
333           BMI     WLJMP0\r
334           LDA     #$05\r
335 WLJMP0    ASL     A                      ;TURN IT INTO AN INDEX INTO DLISTS\r
336           ASL     A\r
337           STA     TEMP16\r
338 \r
339           LDX     #$10                   ;NOW, GO THROUGH THE INDICATORS\r
340 WLLOOP    CPX     TEMP16\r
341           BPL     WLBLANK\r
342           LDA     #$28                   ;TURN ON AN INDICATOR\r
343           STA     BDLIST0,X\r
344           LDA     #$2A\r
345           STA     BDLIST1,X\r
346           JMP     WLNEXT\r
347 WLBLANK   LDA     #$00                   ;TURN ON A BLANK\r
348           STA     BDLIST0,X\r
349           STA     BDLIST1,X\r
350 WLNEXT    DEX                            ;NEXT ONE IS 4 LESS\r
351           DEX\r
352           DEX\r
353           DEX\r
354           BPL     WLLOOP\r
355 \r
356           RTS\r
357 \r
358 \r
359 *  FLASH THE POWER DOTS\r
360 FLASHDOT  JSR     SETFLSH                ;SET NEXT FLASH\r
361 \r
362           LDY     RACK\r
363           LDA     EDZONE0,Y\r
364           STA     TEMP0\r
365           LDA     EDCOL0,Y\r
366           STA     TEMP1\r
367           JSR     SWTCHDOT               ;SWITCH ZONE 0 COLUMN 0\r
368           LDA     EDCOL1,Y\r
369           STA     TEMP1\r
370           JSR     SWTCHDOT               ;SWITCH ZONE 0 COLUMN 1\r
371           LDA     EDZONE1,Y\r
372           STA     TEMP0\r
373           JSR     SWTCHDOT               ;SWITCH ZONE 1 COLUMN 1\r
374           LDA     EDCOL0,Y\r
375           STA     TEMP1\r
376           JMP     SWTCHDOT               ;SWITCH ZONE 1 COLUMN 0\r
377 \r
378 \r
379 *  SWITCH A SINGLE POWER DOT - ZONE AND COL IN TEMP0 AND 1\r
380 SWTCHDOT  JSR     GETCHAR\r
381           CMP     #BLNKCHAR\r
382           BEQ     SDOUT\r
383           EOR     #$01\r
384           TAX\r
385           JMP     PLOPCHAR\r
386 SDOUT     RTS\r
387 \r
388 \r
389 *  MAKE THE POWER DOTS WHITE FOR END OF RACK\r
390 FINALDOT  LDY     RACK\r
391           LDA     EDZONE0,Y\r
392           STA     TEMP0\r
393           LDA     EDCOL0,Y\r
394           STA     TEMP1\r
395           JSR     ONDOT                  ;TURN ON ZONE 0 COLUMN 0\r
396           LDA     EDCOL1,Y\r
397           STA     TEMP1\r
398           JSR     ONDOT                  ;TURN ON ZONE 0 COLUMN 1\r
399           LDA     EDZONE1,Y\r
400           STA     TEMP0\r
401           JSR     ONDOT                  ;TURN ON ZONE 1 COLUMN 1\r
402           LDA     EDCOL0,Y\r
403           STA     TEMP1\r
404           JMP     ONDOT                  ;TURN ON ZONE 1 COLUMN 0\r
405 \r
406 \r
407 *  TURN ON SINGLE POWER DOT - ZONE AND COL IN TEMP0 AND 1\r
408 ONDOT     JSR     GETCHAR\r
409           AND     #$FE\r
410           TAX\r
411           JMP     PLOPCHAR\r
412 \r
413 \r
414 *  SET THE NEXT FLASH MOVE\r
415 SETFLSH   LDA     RTLOCAL+1\r
416           CLC\r
417           ADC     #WAITFLSH\r
418           STA     FLSHWAIT\r
419           RTS\r
420 \r
421 \r
422 *  THIS JUST SETS TEMP0 AND TEMP1 TO HAVE THE SCREEN LOCATION FOR ZONE Y\r
423 SETSCRN   LDA     SCRLOW,Y               ;LOW BYTE OF ADDRESS FOR ZONE\r
424           STA     TEMP0                  ;TEMP LOCATION\r
425           LDA     SCRHI,Y                ;HI BYTE OF ADDRESS FOR ZONE\r
426           STA     TEMP1\r
427           RTS\r
428 \r
429 \r
430 *  PUT THE READY MESSAGE UP\r
431 READY     JSR     WPLAYR                 ;WRITE THE PLAYER\r
432           LDY     #$21\r
433           JMP     WRTMESG                ;WRITE READY\r
434 \r
435 \r
436 *  PUT THE GAME OVER MESSAGE UP\r
437 OVER      JSR     WPLAYR                 ;WRITE THE PLAYER\r
438 ALLOVER   LDY     #$22\r
439           JMP     WRTMESG                ;WRITE GAME OVER\r
440 \r
441 \r
442 *  PUT A PLAYER UP ON THE SCREEN\r
443 WPLAYR    LDA     TWOPLAYR\r
444           BEQ     WPLOUT\r
445           LDA     #OFFSCRN               ;MOVE THE RED GUY AWAY\r
446           STA     HPLIST+1\r
447           STA     DOLIST+1\r
448 \r
449           LDA     PLAYER                 ;WRITE THE PLAYER\r
450           CLC\r
451           ADC     #$0F\r
452           TAY\r
453           JSR     WRTMESG\r
454 WPLOUT    RTS\r
455 \r
456 \r
457 *  ERASE ALL THE MESSAGES ON THE SCREEN\r
458 WCLEAR    JSR     WCSETUP\r
459           LDA     #MESHZONE\r
460           STA     TEMP3                  ;ZONE\r
461           JSR     PUTCHAR\r
462           JSR     WCSETUP\r
463           LDA     #MESLZONE\r
464           STA     TEMP3                  ;ZONE\r
465           JMP     PUTCHAR\r
466 \r
467 \r
468 *  PREPARE THE TEMPS FOR WCLEAR\r
469 WCSETUP   LDA     #$01\r
470           STA     TEMP0                  ;ONE LINE\r
471           LDA     #$0A\r
472           STA     TEMP1                  ;10 COLUMNS\r
473           LDA     #BLNKCHAR\r
474           STA     TEMP2                  ;CHARACTER\r
475           LDA     #MESCOL\r
476           STA     TEMP4                  ;COLUMN\r
477           RTS\r
478 \r
479 \r
480 *  THIS ROUTINE WRITES ONE OF THE TITLE PAGE MESSAGES ON THE SCREEN\r
481 *  INPUT:  MESSAGE IN Y (SMASHES Y)\r
482 WRTMESG   STX     TEMP5                  ;SAVE X\r
483           LDA     TMLENGTH,Y             ;SET LENGTH OF MESSAGE\r
484           STA     TEMP4\r
485           LDA     TMZONE,Y               ;SET STARTING ZONE AND COLUMN\r
486           STA     TEMP0\r
487           LDA     TMCOL,Y\r
488           STA     TEMP1\r
489           TYA                            ;TEMP 6 NON ZERO IF MESSAGE $10 OR OVER\r
490           SEC\r
491           SBC     #$13\r
492           STA     TEMP6\r
493           LDA     TMOFFSET,Y             ;SET Y TO OFFSET\r
494           TAY\r
495 \r
496 WMLOOP    LDA     TEMP6\r
497           BPL     WMLJMP0\r
498           LDA     TMESSAGE,Y             ;DO IT\r
499           JMP     WMLJMP1\r
500 WMLJMP0   LDA     TMESSAG2,Y             ;DO IT - SECOND BANK OF MESSAGES\r
501 WMLJMP1   TAX\r
502           JSR     PLOPCHAR\r
503           INY                            ;NEXT INPUT CHAR\r
504           INC     TEMP1                  ;NEXT OUTPUT CHAR\r
505           DEC     TEMP4                  ;SEE IF DONE\r
506           BPL     WMLOOP\r
507 \r
508           LDX     TEMP5                  ;RESTORE X\r
509           RTS\r
510 \r
511 \r
512 *  DATA FOR MESSAGES.  NOTE - MESSAGES OVER $13 COME FROM TMESSAG2, OTHERS COME\r
513 *  FROM TMESSAGE.\r
514 \r
515 *  THESE ARE OFFSETS INTO THE MESSAGE TABLE\r
516 TMOFFSET  DB      $00,$06,$0C,$12,$18,$22,$36,$3A        ;OFFSETS INTO TMESSAGE\r
517           DB      $42,$52,$62,$72,$82,$92,$A1,$BF\r
518           DB      $B4,$B0,$BB\r
519 HSCOFF    DB      $00,$0A,$14,$1E,$28,$32,$3C,$46\r
520           DB      $50,$55,$5A,$5F,$68,$71,$7A,$84\r
521 TMLENGTH  DB      $05,$05,$05,$05,$09,$13,$03,$07        ;LENGTH (-1)\r
522           DB      $0F,$0F,$0F,$0F,$0F,$0E,$0E,$09\r
523           DB      $09,$09,$09\r
524           DB      $09,$09,$09,$09,$09,$09,$09,$09\r
525           DB      $04,$04,$04,$08,$08,$08,$09,$09\r
526 TMZONE    DB      $0F,$0F,$0F,$0F,$0F,$1C,$0C,$0C        ;ZONE MESSAGE APPEARS\r
527           DB      $02,$03,$04,$05,$06,$16,$18,$0A\r
528           DB      $0A,$0C,$0C\r
529           DB      $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F\r
530           DB      $0F,$0F,$0F,$0E,$0E,$0E,$10,$10\r
531 TMCOL     DB      $0A,$0A,$0A,$0A,$0A,$04,$08,$08        ;COLUMN FOR MESSAGE\r
532           DB      $06,$06,$06,$06,$06,$06,$06,$09\r
533           DB      $09,$09,$09\r
534           DB      $09,$09,$09,$09,$09,$09,$09,$09\r
535           DB      $04,$04,$04,$0C,$0C,$0C,$09,$09\r
536 \r
537 *  THESE ARE THE MESSAGES FOR THE TITLE PAGE\r
538 TMESSAGE  DB      $5F,$69,$66,$6B,$68,$76                ;0 - BLINKY\r
539           DB      $6D,$66,$6B,$68,$76,$50                ;1 - PINKY\r
540           DB      $66,$6B,$68,$76,$50,$50                ;2 - INKY\r
541           DB      $70,$72,$62,$50,$50,$50                ;3 - SUE\r
542           DB      $6A,$70,$50,$6D,$5E,$60,$7A,$6A,$5E,$6B ;4 - MS PAC-MAN\r
543           DB      $60,$6C,$6D,$76,$6F,$66,$64,$65,$71,$00 ;5 - COPYRIGHT\r
544           DB      $5E,$71,$5E,$6F,$66,$00,$55,$5D,$5C,$58 ;    ATARI 1984\r
545           DB      $74,$66,$71,$65                        ;6 - WITH\r
546           DB      $70,$71,$5E,$6F,$6F,$66,$6B,$64        ;7 - STARRING\r
547           DB      $83,$88,$8D,$92,$97,$00,$00,$00        ;8 - LINE 1 - MS PAC LO\r
548           DB      $00,$00,$00,$00,$00,$00,$00,$00\r
549           DB      $84,$89,$8E,$93,$98,$9C,$00,$00        ;9 - LINE 2\r
550           DB      $00,$00,$00,$00,$00,$00,$00,$00\r
551           DB      $85,$8A,$8F,$94,$99,$9D,$A0,$00        ;A - LINE 3\r
552           DB      $A4,$A7,$AA,$AD,$AF,$A4,$B2,$B3\r
553           DB      $86,$8B,$90,$95,$9A,$9E,$A1,$A3        ;B - LINE 4\r
554           DB      $A5,$A8,$AB,$AE,$95,$B0,$A8,$AB\r
555           DB      $87,$8C,$91,$96,$9B,$9F,$A2,$00        ;C - LINE 5\r
556           DB      $A6,$A9,$AC,$91,$96,$B1,$A9,$AC\r
557           DB      $72,$70,$62,$00,$67,$6C,$76,$70        ;D - USE JOYS\r
558           DB      $71,$66,$60,$68,$00,$71,$6C            ;    TICK TO\r
559           DB      $60,$65,$5E,$6B,$64,$62,$00,$70        ;E - CHANGE S\r
560           DB      $62,$71,$71,$66,$6B,$64,$70            ;    ETTINGS\r
561           DB      $6C,$6B,$62,$00,$6D,$69,$5E,$76,$62,$6F  ;11 - ONE PLAYER\r
562           DB      $00                                      ;10 - PLAYER TWO\r
563           DB      $71,$74,$6C,$00,$6D,$69,$5E,$76,$62,$6F  ;12 - TWO PLAYER\r
564           DB      $00,$6C,$6B,$62                          ;F - PLAYER ONE\r
565 \r
566 TMESSAG2  DB      $71,$62,$61,$61,$76,$00,$5F,$62,$5E,$6F  ;13 - TEDDY BEAR\r
567           DB      $00,$60,$65,$62,$6F,$6F,$66,$62,$70,$00  ;14 -  CHERRIES\r
568           DB      $70,$71,$6F,$5E,$74,$5F,$62,$6F,$6F,$76  ;15 - STRAWBERRY\r
569           DB      $00,$00,$6C,$6F,$5E,$6B,$64,$62,$00,$00  ;16 -   ORANGE\r
570           DB      $00,$6D,$6F,$62,$71,$77,$62,$69,$00,$00  ;17 -  PRETZEL\r
571           DB      $00,$00,$5E,$6D,$6D,$69,$62,$00,$00,$00  ;18 -   APPLE\r
572           DB      $00,$00,$00,$6D,$62,$5E,$6F,$00,$00,$00  ;19 -    PEAR\r
573           DB      $00,$00,$5F,$5E,$6B,$5E,$6B,$5E,$00,$00  ;1A -   BANANA\r
574           DB      $5E,$60,$71,$50,$55                      ;1B - ACT 1\r
575           DB      $5E,$60,$71,$50,$56                      ;1C - ACT 2\r
576           DB      $5E,$60,$71,$50,$57                      ;1D - ACT 3\r
577           DB      $71,$65,$62,$76,$50,$6A,$62,$62,$71      ;1E - THEY MEET\r
578           DB      $71,$65,$62,$50,$60,$65,$5E,$70,$62      ;1F - THE CHASE\r
579           DB      $67,$72,$6B,$66,$6C,$6F,$50,$50,$50      ;20 - JUNIOR\r
580           DB      $00,$00,$6F,$62,$5E,$61,$76,$78,$00,$00  ;21 -   READY\r
581           DB      $64,$5E,$6A,$62,$00,$00,$6C,$73,$62,$6F  ;22 - GAME  OVER\r
582 \r
583 \r
584 *  START OF DIGITS FOR CURRENT AND NON-CURRENT PLAYERS\r
585 NUMCHAR   DB      $54,$46\r
586 NUMCHAR2  DB      $46,$54\r
587 \r
588 *  ZONES AND COLUMNS FOR MESSAGES\r
589 MESHZONE  EQU     $0A\r
590 MESLZONE  EQU     $10\r
591 MESCOL    EQU     $09\r
592 \r