annotate 3rdparty/packages/pacos9/movpac90.as @ 3220:9ccec98c9897

Updated IDE Driver makefile so it will have place holders for dsk, dskclean, and dskcopy so that make does not error out when chaining into the driver tree to build disk images where applicable.
author David Ladd <drencor-xeen@users.sourceforge.net>
date Wed, 20 Dec 2017 16:10:50 -0600
parents 06508da42c98
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1864
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
1
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
2 NAM MOVPAC
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
3 TTL Move pacman routines
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
4
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
5 * Program segment to be compiled using Level II RMA
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
6 * This is not a mainline program segment
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
7 * Written by Larry Olson
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
8
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
9 IFP1
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
10 * use /dd/defs/os9defs.a
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
11 ENDc
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
12
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
13
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
14 STACK EQU 100
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
15
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
16
2946
06508da42c98 pacos: Add code and bss sections, lwlink style
Tormod Volden <debian.tormod@gmail.com>
parents: 2945
diff changeset
17 SECTION bss
1864
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
18
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
19 * Local variables
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
20
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
21 RMB STACK
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
22
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
23 ENDSECT
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
24
2946
06508da42c98 pacos: Add code and bss sections, lwlink style
Tormod Volden <debian.tormod@gmail.com>
parents: 2945
diff changeset
25 SECTION code
1864
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
26
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
27 MVPAC: nop
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
28
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
29 * Read joystick
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
30
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
31 JOY lda PATH Set path to window
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
32 ldb #$13 Setup for SS.Joy
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
33 ldx PORT,U Get selected port
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
34 os9 I$GetStt
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
35 lbcs ERR1
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
36 stx JOYSTX
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
37 sty JOYSTY
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
38 sta BUTTON
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
39 * Cycle is used to animate pacman
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
40
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
41 CYC dec CYCLE Decrement cycle counter
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
42 bpl MVRT If >0 continue
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
43 lda #2 Reset counter to 2
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
44 sta CYCLE
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
45
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
46 clra
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
47 sta MOVFLG,U
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
48
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
49 * Check direction of joystick & move pacman
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
50
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
51 MVRT leay ARRAY,U Point to start of array
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
52 ldd POFSET Get pacman offset in array
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
53 leax D,Y
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
54 * X reg now points to pacman position in array
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
55 ldd JOYSTX Get joystick X value
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
56 cmpd #37 Is it greater than 37 ?
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
57 blo MVLFT Go to move left
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
58
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
59 inc MOVFLG,U
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
60
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
61 lda 1,X Get adjacent byte from array
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
62 lbmi MVDWN If wall then go check for down
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
63 ldd PCXLOC GET pseudo screen X location
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
64 cmpd PXNEW Is it equal to actual location?
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
65 beq SKIPR
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
66 addd #8
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
67 std PCXLOC
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
68 SKIPR ldd PXNEW Get actual screen X location
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
69 addd #8 Add 8 to it
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
70 std PXNEW Put it back
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
71 ldd PYNEW Get screen Y location
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
72 std PCYLOC Set pyold = pynew
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
73 ldd POFSET Get pacman array offset
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
74 addd #1 Increment it
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
75 cmpd #1793 Is it off screen to the right ?
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
76 bne STBUF1
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
77 * Erase pacman on right side of screen
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
78 * Before moving pacman to left side
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
79 lda #37 Set for blank pacman
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
80 sta PBFN Put it in putblk code
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
81 ldd #572
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
82 std PXLOC
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
83 ldd #85
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
84 std PYLOC
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
85 lbsr PUTBLK Go erase pacman
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
86
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
87 ldd #44
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
88 std PXNEW Reset pac screen X to 36
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
89 subd #8 Set pseudo X location
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
90 std PCXLOC
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
91 lda #1
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
92 ldd #1726 Move pacman to left side
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
93 STBUF1 std POFSET Store pacman array offset
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
94 leax D,Y Point to pacman position in array
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
95 lda #25 Set pacman direction buffer
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
96 sta BUFF for right facing pacman
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
97 ldb #1
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
98 lda B,X Get the byte at this spot
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
99 bmi MVPAC1 Branch if wall
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
100 bita #6 Check for a dot or pill
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
101 beq MVPAC1
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
102 lbsr ERPILL Go erase pill or dot
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
103 bra MVPAC1
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
104 MVLFT ldd JOYSTX Get joystick X value
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
105 cmpd #27
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
106 bhi MVDWN
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
107 inc MOVFLG,U
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
108 lda -1,X Get byte 1 move to the left
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
109 bmi MVDWN Branch if wall
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
110 ldd PXNEW Get new pac position
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
111 subd #8 Subtract 8 from it
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
112 std PXNEW Put it back
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
113 std PCXLOC Set pxold = pxnew
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
114 ldd PYNEW
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
115 std PCYLOC Set pyold = pynew
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
116 ldd POFSET Get pacman array offset
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
117 subd #1 Decrement it
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
118 cmpd #1725 Is it off left side of screen ?
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
119 bne STBUF2 If not then store hcount
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
120 * Erase pacman on left side of screen
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
121 * Before moving pacman to right side
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
122 lda #37 Set for blank pacman
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
123 sta PBFN Put it in PUTBLK code
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
124 ldd #44
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
125 std PXLOC
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
126 ldd #85
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
127 std PYLOC
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
128 lbsr PUTBLK Go erase pacman
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
129
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
130 ldd #572
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
131 std PXNEW Update screen location too.
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
132 std PCXLOC
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
133 ldd #1792 Move pacman to right side
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
134 STBUF2 std POFSET Store pacman array offset
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
135 leax D,Y X holds pacman position in array
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
136 lda #28 Set pacman direction buffer
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
137 sta BUFF for left facing pacman
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
138 ldb #-1
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
139 lda B,X Get byte from array
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
140 bmi MVPAC1 Branch if wall
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
141 bita #6 Check for dot or pill
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
142 beq MVPAC1
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
143 lbsr ERPILL Go erase pill or dot
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
144 MVPAC1 lda BUFF
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
145 adda CYCLE
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
146 sta PCBFN
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
147 leax PUTPACM,U
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
148 ldy #8
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
149 lda PATH
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
150 os9 I$Write
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
151 lbcs ERR1
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
152
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
153 MVDWN leay ARRAY,U Point to start of array
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
154 ldd POFSET Get pacman array offset
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
155 leax D,Y X holds pacman array position
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
156 ldd JOYSTY Get joystick Y value
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
157 cmpd #27 Is it greater than 27 ?
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
158 bhi MVUP If not, then check for up move
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
159 inc MOVFLG,U
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
160 lda 69,X Look at byte one line down
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
161 lbmi LEAVE Branch if wall
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
162 ldd PCYLOC Get pseudo screen Y location
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
163 cmpd PYNEW Are they the same ?
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
164 beq SKIPD
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
165 addd #3 Add 3 to it
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
166 std PCYLOC
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
167 SKIPD ldd PYNEW Get actual screen Y location
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
168 addd #3 Add 3 to it
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
169 std PYNEW Put it back
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
170 ldd PXNEW
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
171 std PCXLOC
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
172 SKIPD2 ldd POFSET Get location in array
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
173 addd #69 Move down 1 line
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
174 cmpd #3692 Off screen at bottom?
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
175 bne STBUF3
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
176
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
177 lda #37 Blank pacman buffer
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
178 sta PBFN
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
179 ldd #316
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
180 std PXLOC
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
181 ldd #166
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
182 std PYLOC
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
183 lbsr PUTBLK Go erase pacman at bottom
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
184
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
185 ldd #300
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
186 std PXNEW
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
187 std PCXLOC
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
188 ldd #07 New Y scrn location
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
189 std PCYLOC
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
190 addd #3
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
191 std PYNEW
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
192 ldd #33 Move to top of array
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
193 STBUF3 std POFSET
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
194 leax D,Y
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
195 lda #34 Set pacman direction buffer
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
196 sta BUFF for down facing pacman
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
197 ldb #69 Look one line down
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
198 lda B,X Get byte at this spot
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
199 bmi MVPAC2 Branch if wall
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
200 bita #6 Check for dot(2) or pill(4)
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
201 beq MVPAC2 Go move pacman
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
202 lbsr ERPILL Go erase pill or dot
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
203 bra MVPAC2 Go move pacman
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
204
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
205 MVUP ldd JOYSTY Get joystick Y value
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
206 cmpd #37 Is it less than 37 ?
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
207 lblo LEAVE
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
208 inc MOVFLG,U
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
209 lda -69,X Get byte from array, 1 line up
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
210 bmi LEAVE Branch if wall
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
211 ldd PYNEW Get pac screen Y location
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
212 subd #3 Subtract 3 from it
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
213 std PYNEW Put it back
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
214 std PCYLOC Set pyold = pynew
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
215 ldd PXNEW
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
216 std PCXLOC Set pxold = pxnew
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
217 lda #31 Set direction buffer
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
218 sta BUFF to up facing pacman
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
219 ldd POFSET Get pacman array offset
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
220 subd #69 Move up one line
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
221 cmpd #33 At top of screen?
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
222 bne STBUF4
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
223
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
224 lda #37 Blank pacman buffer #
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
225 sta PBFN
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
226 ldd #300
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
227 std PXLOC
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
228 ldd #13
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
229 std PYLOC
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
230 lbsr PUTBLK Erase pacman at top
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
231
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
232 ldd #316
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
233 std PXNEW
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
234 std PCXLOC
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
235 ldd #169
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
236 std PYNEW
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
237 std PCYLOC
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
238 ldd #3692
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
239 STBUF4 std POFSET Put it back
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
240 leax D,Y X holds pacman array position
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
241 ldb #-69
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
242 lda B,X Get byte at this spot
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
243 bmi MVPAC2 Branch if wall
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
244 bita #6 Check for dot(2) or pill(4)
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
245 beq MVPAC2 Go move pacman
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
246 lbsr ERPILL Go erase pill or dot
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
247 MVPAC2 lda BUFF Get current pac buffer
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
248 adda CYCLE Add cycle count
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
249 sta PCBFN Set putblk buffer
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
250 leax PUTPACM,U
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
251 ldy #8
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
252 lda PATH
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
253 os9 I$Write
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
254 lbcs ERR1
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
255
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
256 LEAVE lda MOVFLG,U
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
257 bne EXTCHK
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
258 ldx #2
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
259 lbsr WAIT
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
260
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
261 EXTCHK ldb PACMAN Get # of pacmen left
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
262 cmpb #6 Only a total of 6 allowed
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
263 beq MVDONE If already 6, then exit
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
264 lda SCRBCD,U
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
265 anda #15 %00001111 strip high
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
266 cmpa EXTPAC,U Compare it with goal
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
267 blo MVDONE If not =, then exit
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
268 incb If =, then give bonus-
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
269 stb PACMAN pacman to player
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
270 inc EXTPAC,U Increment goal
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
271 ldd #181
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
272 std PYLOC,U
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
273 lda #28
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
274 sta PBFN,U
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
275 lda #30
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
276 ldb PACMAN
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
277 subb #1
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
278 mul
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
279 std PXLOC,U
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
280 ldd #600
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
281 subd PXLOC,U
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
282 std PXLOC,U
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
283 lbsr PUTBLK
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
284
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
285 MVDONE rts Return to MAIN
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
286
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
287 PALCHG: clrb
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
288 stb STRLGH Save counter
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
289 leay STRING,U String to output
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
290 leax G1OFST,U Point to ghost tables
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
291 lda 10,X Get #1 ghost status
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
292 cmpa #1
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
293 bne TEST2
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
294 ldd #$1b31 Palette set code
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
295 std ,Y++ Put it in string
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
296 ldd #$043d
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
297 std ,Y++ Put it in string
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
298 inc STRLGH
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
299 lda #2
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
300 sta 10,X Make ghost run from pacman
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
301 TEST2 lda 30,X Get #2 ghost status
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
302 cmpa #1
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
303 bne TEST3
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
304 ldd #$1b31 Palette set code
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
305 std ,Y++ Put it in string
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
306 ldd #$063d
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
307 std ,Y++ Put it in string
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
308 inc STRLGH
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
309 lda #2
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
310 sta 30,X Make ghost run from pacman
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
311 TEST3 lda 50,X Get #3 ghost status
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
312 cmpa #1
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
313 bne TEST4
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
314 ldd #$1b31 Palette set code
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
315 std ,Y++
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
316 ldd #$053d
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
317 std ,Y++ Put it in string
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
318 inc STRLGH
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
319 lda #2
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
320 sta 50,X Make ghost run from pacman
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
321 TEST4 lda 70,X Get #4 ghost status
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
322 cmpa #1
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
323 bne TESTCK
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
324 ldd #$1b31 Palette set code
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
325 std ,Y++
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
326 ldd #$033d
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
327 std ,Y
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
328 inc STRLGH
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
329 lda #2
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
330 sta 70,X Make ghost run from pacman
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
331 TESTCK ldb STRLGH
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
332 beq OTDONE
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
333 lda #4
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
334 mul
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
335 tfr D,Y
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
336 leax STRING,U
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
337 lbsr OUTSTR
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
338 OTDONE rts
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
339
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
340 * erase pill subroutine
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
341 * Erases DOT or PILL from array
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
342 * and updates score
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
343 * On entry, X reg points to spot in array
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
344 * B reg holds 1 byte offset 1,-1,96 or -96
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
345 * A reg holds byte at that point in array
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
346
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
347 ERPILL cmpa #6 Was it a bonus ?
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
348 beq ERBON
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
349 bita #4 Was it a power dot ?
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
350 beq ERDOT
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
351 anda #1
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
352 sta B,X Erase power pill from array
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
353 lda #32 Add 20 to score
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
354 sta POINTS+2
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
355
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
356 ldd DOTTOT
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
357 addd #1
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
358 std DOTTOT
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
359
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
360 lda #100 Set timeout counter
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
361 sta POWFLG
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
362 lbsr PALCHG Go change color of ghosts
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
363 bra ADDUP
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
364
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
365 ERBON clra
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
366 sta B,X
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
367 lbsr SETBON Go to Bonus Routines(in SCRNS)
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
368 lda #154 Add 100 to score
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
369 sta POINTS+2
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
370 bra ADDUP
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
371
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
372 ERDOT anda #1
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
373 sta B,X Erase dot from array
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
374 lda #1 Add 1 point to score
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
375 sta POINTS+2 Put it back
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
376
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
377 ldd DOTTOT
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
378 addd #1
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
379 std DOTTOT
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
380
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
381 * Add points to score
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
382
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
383 ADDUP: leax SCRBCD+3,U
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
384 leay POINTS+3,U
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
385 ldb #3 Set loop counter to 3
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
386 andcc #%11111110 Clear carry
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
387 ADLOOP lda ,-X Decrement X and get a byte
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
388 adca ,-Y Add new points
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
389 daa Decimal adjust bytes
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
390 sta ,X Put result back in score byte
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
391 decb Decrement loop counter
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
392 bne ADLOOP Loop till done
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
393
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
394 SHIFT leay SCRASC,U Point to asc string
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
395 leax SCRBCD,U Point to score bytes
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
396 ldb #3 Set loop counter to 3
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
397 stb SHCNT Set loop counter to 3
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
398 clrb Clear leading zero flag
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
399 SFLOOP lda ,X Get a byte of score, bump pointer
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
400 lsra
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
401 lsra Shift high nibble to low
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
402 lsra
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
403 lsra
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
404 beq TSTFG1
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
405 incb Set leading zero flag
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
406 TSTFG1 tstb Is leading zero flag set ?
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
407 bne ASCSET1
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
408 lda #-16 48-16 = ascii space
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
409 ASCSET1 adda #48 Add ascii offset for number
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
410 sta ,Y+ Put result in score string
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
411 lda ,X+ Get bcd score byte again
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
412 anda #15 Mask off high nibble
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
413 beq TSTFG2
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
414 incb
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
415 TSTFG2 tstb
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
416 bne ASCSET2
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
417 lda #-16
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
418 ASCSET2 adda #48
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
419 sta ,Y+
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
420 dec SHCNT
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
421 bne SFLOOP Loop 3 times
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
422
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
423 JUST1 leax SCRPOS,U Point to score string
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
424 ldy #9 Output 9 characters
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
425 lbsr OUTSTR Go output string
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
426
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
427 rts
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
428
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
429 * Noise maker when pacman eats a dot
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
430
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
431
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
432 *WOCWOC lda PATH
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
433 * ldb #$98
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
434 * ldx #$3202
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
435 * ldy #3000
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
436 * os9 I$SetStt
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
437
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
438 * ldy #2000
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
439 * os9 I$GetStt
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
440
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
441 * Return to MAIN
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
442
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
443 *SCDONE rts
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
444
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
445
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
446 ENDSECT
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
447
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
448
f351932fa6cd Added pacos9
boisy
parents:
diff changeset
449