PUTCHAR.S 20 KB

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