57
|
1 0000: ;Buggy machine language monitor and rudimentary O.S. version 1.0
|
|
2 0000:
|
|
3 0000: * Memory map of SBC
|
|
4 0000: * $0-$40 Zero page variables reserved by monitor and O.S.
|
|
5 0000: * $40-$FF Zero page portion for user programs.
|
|
6 0000: * $100-$17F Xmodem buffer 0, terminal input buffer,
|
|
7 0000: * $180-$1FF Xmodem buffer 1, terminal output buffer.
|
|
8 0000: * $200-$27F Terminal input line.
|
|
9 0000: * $280-$2FF Variables reserved by monitor and O.S.
|
|
10 0000: * $300-$400 System stack.
|
|
11 0000: * $400-$7FFF RAM for user programs and data.
|
|
12 0000: * $8000-$DFFF PROM for user programs.
|
|
13 0000: * $E000-$E1FF I/O addresses.
|
|
14 0000: * $E200-$E3FF Reserved.
|
|
15 0000: * $E400-$FFFF Monitor ROM
|
|
16 0000:
|
|
17 0000: * Reserved Zero page addresses
|
|
18 0000: org $0000
|
|
19 0000: setdp 0
|
|
20 0000: * First the I/O routine vectors.
|
|
21 0000: getchar rmb 3 ;Jump to getchar routine.
|
|
22 0003: putchar rmb 3 ;Jump to putchar routine.
|
|
23 0006: getline rmb 3 ;Jump to getline routine.
|
|
24 0009: putline rmb 3 ;Jump to putline routine.
|
|
25 000C: putcr rmb 3 ;Jump to putcr routine.
|
|
26 000F: getpoll rmb 3 ;Jump to getpoll routine.
|
|
27 0012: xopenin rmb 3 ;Jump to xopenin routine.
|
|
28 0015: xopenout rmb 3 ;Jump to xopenout routine.
|
|
29 0018: xabortin rmb 3 ;Jump to xabortin routine.
|
|
30 001B: xclosein rmb 3 ;Jump to xclosein routine.
|
|
31 001E: xcloseout rmb 3 ;Jump to xcloseout routine.
|
|
32 0021: delay rmb 3 ;Jump to delay routine.
|
|
33 0024:
|
|
34 0024: *Next the system variables in the zero page.
|
|
35 0024: temp rmb 2 ;hex scanning/disasm
|
|
36 0026: temp2 rmb 2 ;Hex scanning/disasm
|
|
37 0028: temp3 rmb 2 ;Used in Srecords, H command
|
|
38 002A: timer rmb 3 ;3 byte timer, incremented every 20ms
|
|
39 002D: xpacknum rmb 1 ;Packet number for XMODEM block,
|
|
40 002E: xsum rmb 1 ;XMODEM checksum
|
|
41 002F: lastok rmb 1 ;flag to indicate last block was OK
|
|
42 0030: xcount rmb 1 ;Count of characters in buffer.
|
|
43 0031: xmode rmb 1 ;XMODEM mode, 0 none, 1 out, 2 in.
|
|
44 0032:
|
|
45 0032: * I/O buffers.
|
|
46 0080: buflen equ 128 ;Length of input line buffer.
|
|
47 0032: org $100
|
|
48 0100: buf0 rmb 128 ;Xmodem buffer 0, serial input buffer.
|
|
49 0180: buf1 rmb 128 ;Xmodem buffer 1, serial output buffer.
|
|
50 0200: linebuf rmb buflen ;Input line buffer.
|
|
51 0280:
|
|
52 0280:
|
|
53 0280: * Interrupt vectors (start at $280)
|
|
54 0280: * All interrupts except RESET are vectored through jumps.
|
|
55 0280: * FIRQ is timer interrupt, IRQ is ACIA interrupt.
|
|
56 0280: swi3vec rmb 3
|
|
57 0283: swi2vec rmb 3
|
|
58 0286: firqvec rmb 3
|
|
59 0289: irqvec rmb 3
|
|
60 028C: swivec rmb 3
|
|
61 028F: nmivec rmb 3
|
|
62 0292: xerrvec rmb 3 ;Error handler for XMODEM error.
|
|
63 0295: exprvec rmb 3 ;Expression evaluator in assembler.
|
|
64 0298: asmerrvec rmb 3 ;Error handler for assembler errors.
|
|
65 029B:
|
|
66 029B: * Next the non zero page system variables.
|
|
67 029B: oldpc rmb 2 ;Saved pc value for J command.
|
|
68 029D: addr rmb 2 ;Address parameter.
|
|
69 029F: length rmb 2 ;Length parameter.
|
|
70 02A1:
|
|
71 0004: brkpoints equ 4 ;Number of settable breakpoints.
|
|
72 02A1: bpaddr rmb brkpoints*3 ;Address and byte for each break point.
|
|
73 02AD: stepbp rmb 3 ;Address of P command break point.
|
|
74 02B0:
|
|
75 02B0: sorg rmb 2 ;Origin address of S record entry.
|
|
76 02B2: soffs rmb 2 ;Offset load adrr-addr in record
|
|
77 02B4:
|
|
78 02B4: oldgetc rmb 2 ;Old getchar address.
|
|
79 02B6: oldputc rmb 2 ;Old putchar address.
|
|
80 02B8: oldputcr rmb 2 ;Old putcr address.
|
|
81 02BA: lastterm rmb 1 ;Last terminating character.
|
|
82 02BB: filler rmb 1 ;Filler at end of XMODEM file.
|
|
83 02BC: xmcr rmb 1 ;end-of-line characters for XMODEM send.
|
|
84 02BD: savesp rmb 2 ;Save sp to restore it on error.
|
|
85 02BF:
|
|
86 02BF: * Following variables are used by assembler/disassembler.
|
|
87 02BF: prebyte rmb 1
|
|
88 02C0: opc1 rmb 1
|
|
89 02C1: opcode rmb 1
|
|
90 02C2: postbyte rmb 1
|
|
91 02C3: amode rmb 1
|
|
92 02C4: operand rmb 2
|
|
93 02C6: mnembuf rmb 5 ;Buffer to store capitalized mnemonic.
|
|
94 02CB: opsize rmb 1 ;SIze (in bytes) of extra oeprand (0--2)
|
|
95 02CC: uncert rmb 1 ;Flag to indicate that op is unknown.
|
|
96 02CD: dpsetting rmb 2
|
|
97 02CF:
|
|
98 02CF: endvars equ *
|
|
99 02CF:
|
|
100 0400: ramstart equ $400 ;first free RAM address.
|
|
101 02CF:
|
|
102 8000: ramtop equ $8000 ;top of RAM.
|
|
103 02CF:
|
|
104 02CF: * I/O port addresses
|
|
105 E000: aciactl equ $e000 ;Control port of ACIA
|
|
106 E000: aciasta equ $e000 ;Status port of ACIA
|
|
107 E001: aciadat equ $e001 ;Data port of ACIA
|
|
108 02CF:
|
|
109 02CF: * ASCII control characters.
|
|
110 0001: SOH equ 1
|
|
111 0004: EOT equ 4
|
|
112 0006: ACK equ 6
|
|
113 0008: BS equ 8
|
|
114 0009: TAB equ 9
|
|
115 000A: LF equ 10
|
|
116 000D: CR equ 13
|
|
117 0015: NAK equ 21
|
|
118 0018: CAN equ 24
|
|
119 007F: DEL equ 127
|
|
120 02CF:
|
|
121 00DF: CASEMASK equ $DF ;Mask to make lowercase into uppercase.
|
|
122 02CF:
|
|
123 02CF: * Monitor ROM starts here.
|
|
124 02CF: org $E400
|
|
125 E400:
|
|
126 E400: 1AFF reset orcc #$FF ;Disable interrupts.
|
|
127 E402: 4F clra
|
|
128 E403: 1F8B tfr a,dp ;Set direct page register to 0.
|
|
129 E405: 10CE0400 lds #ramstart
|
|
130 E409: 8EE520 ldx #intvectbl
|
|
131 E40C: CE0280 ldu #swi3vec
|
|
132 E40F: C61B ldb #osvectbl-intvectbl
|
|
133 E411: 8D37 bsr blockmove ;Initialize interrupt vectors from ROM.
|
|
134 E413: 8EE53B ldx #osvectbl
|
|
135 E416: CE0000 ldu #0
|
|
136 E419: C624 ldb #endvecs-osvectbl
|
|
137 E41B: 8D2D bsr blockmove ;Initialize I/O vectors from ROM.
|
|
138 E41D: 8D33 bsr initacia ;Initialize serial port.
|
|
139 E41F: 1C00 andcc #$0 ;Enable interrupts
|
|
140 E421: * Put the 'saved' registers of the program being monitored on top of the
|
|
141 E421: * stack. There are 12 bytes on the stack for cc,b,a,dp,x,y,u and pc
|
|
142 E421: * pc is initialized to $400, the rest to zero.
|
|
143 E421: 8E0000 ldx #0
|
|
144 E424: 1F12 tfr x,y
|
|
145 E426: CE0400 ldu #ramstart
|
|
146 E429: 3450 pshs x,u
|
|
147 E42B: 3430 pshs x,y
|
|
148 E42D: 3430 pshs x,y
|
|
149 E42F: 8E029B ldx #oldpc
|
|
150 E432: C634 ldb #endvars-oldpc
|
|
151 E434: 6F80 clvar clr ,x+
|
|
152 E436: 5A decb
|
|
153 E437: 26FB bne clvar ;Clear the variable area.
|
|
154 E439: CC1A03 ldd #$1A03
|
|
155 E43C: FD02BB std filler ;Set XMODEM filler and end-of-line.
|
|
156 E43F: 8EE5E2 ldx #welcome
|
|
157 E442: BDE502 jsr outcount
|
|
158 E445: 9D0C jsr putcr ;Print a welcome message.
|
|
159 E447: 7EE579 jmp cmdline
|
|
160 E44A: * Block move routine, from X to U length B. Modifies them all and A.
|
|
161 E44A: A680 blockmove lda ,x+
|
|
162 E44C: A7C0 sta ,u+
|
|
163 E44E: 5A decb
|
|
164 E44F: 26F9 bne blockmove
|
|
165 E451: 39 rts
|
|
166 E452:
|
|
167 E452: * Initialize serial communications port, buffers, interrupts.
|
|
168 E452: C603 initacia ldb #$03
|
|
169 E454: F7E000 stb aciactl
|
|
170 E457: C635 ldb #%00110101
|
|
171 E459: 39 rts
|
|
172 E45A:
|
|
173 E45A: * O.S. routine to read a character into B register.
|
|
174 E45A: F6E000 osgetc ldb aciasta
|
|
175 E45D: C501 bitb #$01
|
|
176 E45F: 27F9 beq osgetc
|
|
177 E461: F6E001 ldb aciadat
|
|
178 E464: 39 rts
|
|
179 E465:
|
|
180 E465: ;O.S. rotuine to check if there is a character ready to be read.
|
|
181 E465: F6E000 osgetpoll ldb aciasta
|
|
182 E468: C501 bitb #$01
|
|
183 E46A: 2602 bne poltrue
|
|
184 E46C: 5F clrb
|
|
185 E46D: 39 rts
|
|
186 E46E: C6FF poltrue ldb #$ff
|
|
187 E470: 39 rts
|
|
188 E471:
|
|
189 E471: * O.S. routine to write the character in the B register.
|
|
190 E471: 3402 osputc pshs a
|
|
191 E473: B6E000 putcloop lda aciasta
|
|
192 E476: 8502 bita #$02
|
|
193 E478: 27F9 beq putcloop
|
|
194 E47A: F7E001 stb aciadat
|
|
195 E47D: 3502 puls a
|
|
196 E47F: 39 rts
|
|
197 E480:
|
|
198 E480: * O.S. routine to read a line into memory at address X, at most B chars
|
|
199 E480: * long, return actual length in B. Permit backspace editing.
|
|
200 E480: 3412 osgetl pshs a,x
|
|
201 E482: D724 stb temp
|
|
202 E484: 4F clra
|
|
203 E485: 9D00 osgetl1 jsr getchar
|
|
204 E487: C47F andb #$7F
|
|
205 E489: C108 cmpb #BS
|
|
206 E48B: 2704 beq backsp
|
|
207 E48D: C17F cmpb #DEL
|
|
208 E48F: 2614 bne osgetl2
|
|
209 E491: 4D backsp tsta ;Recognize BS and DEL as backspace key.
|
|
210 E492: 27F1 beq osgetl1 ;ignore if line already zero length.
|
|
211 E494: C608 ldb #BS
|
|
212 E496: 9D03 jsr putchar
|
|
213 E498: C620 ldb #' '
|
|
214 E49A: 9D03 jsr putchar
|
|
215 E49C: C608 ldb #BS ;Send BS,space,BS. This erases last
|
|
216 E49E: 9D03 jsr putchar ;character on most terminals.
|
|
217 E4A0: 301F leax -1,x ;Decrement address.
|
|
218 E4A2: 4A deca
|
|
219 E4A3: 20E0 bra osgetl1
|
|
220 E4A5: C10D osgetl2 cmpb #CR
|
|
221 E4A7: 270D beq newline
|
|
222 E4A9: C10A cmpb #LF
|
|
223 E4AB: 2613 bne osgetl3 ;CR or LF character ends line.
|
|
224 E4AD: F602BA ldb lastterm
|
|
225 E4B0: C10D cmpb #CR
|
|
226 E4B2: 27D1 beq osgetl1 ;Ignore LF if it comes after CR
|
|
227 E4B4: C60A ldb #LF
|
|
228 E4B6: F702BA newline stb lastterm
|
|
229 E4B9: 9D0C jsr putcr
|
|
230 E4BB: 1F89 tfr a,b ;Move length to B
|
|
231 E4BD: 3512 puls a,x ;restore registers.
|
|
232 E4BF: 39 rts ;<--- Here is the exit point.
|
|
233 E4C0: C109 osgetl3 cmpb #TAB
|
|
234 E4C2: 270F beq dotab
|
|
235 E4C4: C120 cmpb #' '
|
|
236 E4C6: 25BD blo osgetl1 ;Ignore control characters.
|
|
237 E4C8: 9124 cmpa temp
|
|
238 E4CA: 27B9 beq osgetl1 ;Ignore char if line full.
|
|
239 E4CC: 9D03 jsr putchar ;Echo the character.
|
|
240 E4CE: E780 stb ,x+ ;Store it in memory.
|
|
241 E4D0: 4C inca
|
|
242 E4D1: 20B2 bra osgetl1
|
|
243 E4D3: C620 dotab ldb #' '
|
|
244 E4D5: 9124 cmpa temp
|
|
245 E4D7: 27AC beq osgetl1
|
|
246 E4D9: 9D03 jsr putchar
|
|
247 E4DB: E780 stb ,x+
|
|
248 E4DD: 4C inca
|
|
249 E4DE: 8507 bita #7 ;Insert spaces until length mod 8=0
|
|
250 E4E0: 26F1 bne dotab
|
|
251 E4E2: 20A1 bra osgetl1
|
|
252 E4E4:
|
|
253 E4E4: * O.S. routine to write a line starting at address X, B chars long.
|
|
254 E4E4: 3416 osputl pshs a,b,x
|
|
255 E4E6: 1F98 tfr b,a
|
|
256 E4E8: 4D tsta
|
|
257 E4E9: 2707 beq osputl1
|
|
258 E4EB: E680 osputl2 ldb ,x+
|
|
259 E4ED: 9D03 jsr putchar
|
|
260 E4EF: 4A deca
|
|
261 E4F0: 26F9 bne osputl2
|
|
262 E4F2: 3516 osputl1 puls a,b,x
|
|
263 E4F4: 39 rts
|
|
264 E4F5:
|
|
265 E4F5: * O.S. routine to terminate a line.
|
|
266 E4F5: 3404 oscr pshs b
|
|
267 E4F7: C60D ldb #CR
|
|
268 E4F9: 9D03 jsr putchar
|
|
269 E4FB: C60A ldb #LF
|
|
270 E4FD: 9D03 jsr putchar ;Send the CR and LF characters.
|
|
271 E4FF: 3504 puls b
|
|
272 E501: 39 rts
|
|
273 E502:
|
|
274 E502: * Output a counted string at addr X
|
|
275 E502: 3414 outcount pshs x,b
|
|
276 E504: E680 ldb ,x+
|
|
277 E506: 9D09 jsr putline
|
|
278 E508: 3514 puls x,b
|
|
279 E50A: 39 rts
|
|
280 E50B:
|
|
281 E50B: 0C2C timerirq inc timer+2
|
|
282 E50D: 2608 bne endirq
|
|
283 E50F: 0C2B inc timer+1
|
|
284 E511: 2604 bne endirq
|
|
285 E513: 0C2A inc timer
|
|
286 E515: 3B rti
|
|
287 E516: 12 aciairq nop
|
|
288 E517: 3B endirq rti
|
|
289 E518:
|
|
290 E518: * Wait D times 20ms.
|
|
291 E518: D32B osdly addd timer+1
|
|
292 E51A: 10932B dlyloop cmpd timer+1
|
|
293 E51D: 26FB bne dlyloop
|
|
294 E51F: 39 rts
|
|
295 E520:
|
|
296 E520: * This table will be copied to the interrupt vector area in RAM.
|
|
297 E520: 7EE517 intvectbl jmp endirq
|
|
298 E523: 7EE517 jmp endirq
|
|
299 E526: 7EE50B jmp timerirq
|
|
300 E529: 7EE516 jmp aciairq
|
|
301 E52C: 7EE56A jmp unlaunch
|
|
302 E52F: 7EE517 jmp endirq
|
|
303 E532: 7EEE4B jmp xerrhand
|
|
304 E535: 7EF6F9 jmp expr
|
|
305 E538: 7E0298 jmp asmerrvec
|
|
306 E53B: * And this one to the I/O vector table.
|
|
307 E53B: 7EE45A osvectbl jmp osgetc
|
|
308 E53E: 7EE471 jmp osputc
|
|
309 E541: 7EE480 jmp osgetl
|
|
310 E544: 7EE4E4 jmp osputl
|
|
311 E547: 7EE4F5 jmp oscr
|
|
312 E54A: 7EE465 jmp osgetpoll
|
|
313 E54D: 7EED44 jmp xopin
|
|
314 E550: 7EED67 jmp xopout
|
|
315 E553: 7EED8C jmp xabtin
|
|
316 E556: 7EEDCF jmp xclsin
|
|
317 E559: 7EEDAC jmp xclsout
|
|
318 E55C: 7EE518 jmp osdly
|
|
319 E55F: endvecs equ *
|
|
320 E55F:
|
|
321 E55F: * The J command returns here.
|
|
322 E55F: 3410 stakregs pshs x ;Stack something where the pc comes
|
|
323 E561: 347F pshs cc,b,a,dp,x,y,u ;Stack the normal registers.
|
|
324 E563: BE029B ldx oldpc
|
|
325 E566: AF6A stx 10,s ;Stack the old pc value.
|
|
326 E568: 2007 bra unlaunch1
|
|
327 E56A: * The G and P commands return here through a breakpoint.
|
|
328 E56A: * Registers are already stacked.
|
|
329 E56A: EC6A unlaunch ldd 10,s
|
|
330 E56C: 830001 subd #1
|
|
331 E56F: ED6A std 10,s ;Decrement pc before breakpoint
|
|
332 E571: 1C00 unlaunch1 andcc #$0 ;reenable the interrupts.
|
|
333 E573: BDE9C1 jsr disarm ;Disarm the breakpoints.
|
|
334 E576: BDE916 jsr dispregs
|
|
335 E579: 9D1E cmdline jsr xcloseout
|
|
336 E57B: 10FF02BD sts savesp
|
|
337 E57F: 8E0200 ldx #linebuf
|
|
338 E582: C680 ldb #buflen
|
|
339 E584: 9D06 jsr getline
|
|
340 E586: 5D tstb
|
|
341 E587: 27F0 beq cmdline ;Ignore line if it is empty
|
|
342 E589: 3A abx
|
|
343 E58A: 6F84 clr ,x ;Make location after line zero.
|
|
344 E58C: 8E0200 ldx #linebuf
|
|
345 E58F: E680 ldb ,x+
|
|
346 E591: C4DF andb #CASEMASK ;Make 1st char uppercase.
|
|
347 E593: C041 subb #'A'
|
|
348 E595: 253E bcs unk
|
|
349 E597: C11A cmpb #26
|
|
350 E599: 243A bcc unk ;Unknown cmd if it is not a letter.
|
|
351 E59B: 8EE5A1 ldx #cmdtab
|
|
352 E59E: 58 aslb ;Index into command table.
|
|
353 E59F: 6E95 jmp [b,x]
|
|
354 E5A1:
|
|
355 E5A1: FC02E9F7E5D5E784 cmdtab fdb asm,break,unk,dump
|
|
356 E5A9: E7DEEBA7E88BE857 fdb enter,find,go,hex
|
|
357 E5B1: E845E89AE5D5E5D5 fdb inp,jump,unk,unk
|
|
358 E5B9: EB6AE5D5E5D5E8B9 fdb move,unk,unk,prog
|
|
359 E5C1: E5D5E95DEA65E8C5 fdb unk,regs,srec,trace
|
|
360 E5C9: F6A2E5D5E5D5EE52 fdb unasm,unk,unk,xmodem
|
|
361 E5D1: E5D5E5D5 fdb unk,unk
|
|
362 E5D5:
|
|
363 E5D5: * Unknown command handling routine.
|
|
364 E5D5: 9D18 unk jsr xabortin
|
|
365 E5D7: 8EE5FF ldx #unknown
|
|
366 E5DA: BDE502 jsr outcount
|
|
367 E5DD: 9D0C jsr putcr
|
|
368 E5DF: 7EE579 jmp cmdline
|
|
369 E5E2:
|
|
370 E5E2:
|
|
371 E5E2:
|
|
372 E5E2: * Here are some useful messages.
|
|
373 E5E2: 1C welcome fcb unknown-welcome-1
|
|
374 E5E3: 57656C636F6D6520 fcc "Welcome to BUGGY version 1.0"
|
|
375 E5EC: 6F20425547475920
|
|
376 E5F4: 76657273696F6E20
|
|
377 E5FC: 312E30
|
|
378 E5FF: 0F unknown fcb brkmsg-unknown-1
|
|
379 E600: 556E6B6E6F776E20 fcc "Unknown command"
|
|
380 E609: 6F6D6D616E64
|
|
381 E60F: 0E brkmsg fcb clrmsg-brkmsg-1
|
|
382 E610: 427265616B706F69 fcc "Breakpoint set"
|
|
383 E619: 7420736574
|
|
384 E61E: 12 clrmsg fcb fullmsg-clrmsg-1
|
|
385 E61F: 427265616B706F69 fcc "Breakpoint cleared"
|
|
386 E628: 7420636C65617265
|
|
387 E630: 64
|
|
388 E631: 10 fullmsg fcb smsg-fullmsg-1
|
|
389 E632: 427265616B706F69 fcc "Breakpoints full"
|
|
390 E63B: 74732066756C6C
|
|
391 E642: 11 smsg fcb lastrec-smsg-1
|
|
392 E643: 4572726F7220696E fcc "Error in S record"
|
|
393 E64C: 53207265636F7264
|
|
394 E654: 0A lastrec fcb xsmsg-lastrec-1
|
|
395 E655: 5339303330303030 fcc "S9030000FC"
|
|
396 E65E: 43
|
|
397 E65F: 11 xsmsg fcb xrmsg-xsmsg-1
|
|
398 E660: 537461727420584D fcc "Start XMODEM Send"
|
|
399 E669: 44454D2053656E64
|
|
400 E671: 14 xrmsg fcb xamsg-xrmsg-1
|
|
401 E672: 537461727420584D fcc "Start XMODEM Receive"
|
|
402 E67B: 44454D2052656365
|
|
403 E683: 697665
|
|
404 E686: 17 xamsg fcb invmmsg-xamsg-1
|
|
405 E687: 584D4F44454D2074 fcc "XMODEM transfer aborted"
|
|
406 E690: 616E736665722061
|
|
407 E698: 626F72746564
|
|
408 E69E: 10 invmmsg fcb exprmsg-invmmsg-1
|
|
409 E69F: 496E76616C696420 fcc "Invalid mnemonic"
|
|
410 E6A8: 6E656D6F6E6963
|
|
411 E6AF: 10 exprmsg fcb modemsg-exprmsg-1
|
|
412 E6B0: 4578707265737369 fcc "Expression error"
|
|
413 E6B9: 6E206572726F72
|
|
414 E6C0: 15 modemsg fcb brmsg-modemsg-1
|
|
415 E6C1: 4164647265737369 fcc "Addressing mode error"
|
|
416 E6CA: 67206D6F64652065
|
|
417 E6D2: 72726F72
|
|
418 E6D6: 0F brmsg fcb endmsg-brmsg-1
|
|
419 E6D7: 4272616E63682074 fcc "Branch too long"
|
|
420 E6E0: 6F206C6F6E67
|
|
421 E6E6: endmsg equ *
|
|
422 E6E6:
|
|
423 E6E6: * Output hex digit contained in A
|
|
424 E6E6: 8B90 hexdigit adda #$90
|
|
425 E6E8: 19 daa
|
|
426 E6E9: 8940 adca #$40
|
|
427 E6EB: 19 daa ;It's the standard conversion trick ascii
|
|
428 E6EC: 1F89 tfr a,b ;to hex without branching.
|
|
429 E6EE: 9D03 jsr putchar
|
|
430 E6F0: 39 rts
|
|
431 E6F1:
|
|
432 E6F1: * Output contents of A as two hex digits
|
|
433 E6F1: 3402 outbyte pshs a
|
|
434 E6F3: 44 lsra
|
|
435 E6F4: 44 lsra
|
|
436 E6F5: 44 lsra
|
|
437 E6F6: 44 lsra
|
|
438 E6F7: 8DED bsr hexdigit
|
|
439 E6F9: 3502 puls a
|
|
440 E6FB: 840F anda #$0f
|
|
441 E6FD: 20E7 bra hexdigit
|
|
442 E6FF:
|
|
443 E6FF: * Output contents of d as four hex digits
|
|
444 E6FF: 3404 outd pshs b
|
|
445 E701: 8DEE bsr outbyte
|
|
446 E703: 3502 puls a
|
|
447 E705: 8DEA bsr outbyte
|
|
448 E707: 39 rts
|
|
449 E708:
|
|
450 E708: * Skip X past spaces, B is first non-space character.
|
|
451 E708: E680 skipspace ldb ,x+
|
|
452 E70A: C120 cmpb #' '
|
|
453 E70C: 27FA beq skipspace
|
|
454 E70E: 39 rts
|
|
455 E70F:
|
|
456 E70F: * Convert ascii hex digit in B register to binary Z flag set if no hex digit.
|
|
457 E70F: C030 convb subb #'0'
|
|
458 E711: 2513 blo convexit
|
|
459 E713: C109 cmpb #9
|
|
460 E715: 230C bls cb2
|
|
461 E717: C4DF andb #CASEMASK ;Make uppercase.
|
|
462 E719: C007 subb #7 ;If higher than digit 9 it must be a letter.
|
|
463 E71B: C109 cmpb #9
|
|
464 E71D: 2307 bls convexit
|
|
465 E71F: C10F cmpb #15
|
|
466 E721: 2203 bhi convexit
|
|
467 E723: 1CFB cb2 andcc #$FB ;clear zero
|
|
468 E725: 39 rts
|
|
469 E726: 1A04 convexit orcc #$04
|
|
470 E728: 39 rts
|
|
471 E729:
|
|
472 E729: DC24 scanexit ldd temp
|
|
473 E72B: 301F leax -1,x
|
|
474 E72D: 0D26 tst temp2
|
|
475 E72F: 39 rts ;<-- exit point of scanhex
|
|
476 E730:
|
|
477 E730: * Scan for hexadecimal number at address X return in D, Z flag is set it no
|
|
478 E730: * number found.
|
|
479 E730: 0F24 scanhex clr temp
|
|
480 E732: 0F25 clr temp+1
|
|
481 E734: 0F26 clr temp2
|
|
482 E736: 8DD0 bsr skipspace
|
|
483 E738: BDE70F scloop jsr convb
|
|
484 E73B: 27EC beq scanexit
|
|
485 E73D: 3404 pshs b
|
|
486 E73F: DC24 ldd temp
|
|
487 E741: 58 aslb
|
|
488 E742: 49 rola
|
|
489 E743: 58 aslb
|
|
490 E744: 49 rola
|
|
491 E745: 58 aslb
|
|
492 E746: 49 rola
|
|
493 E747: 58 aslb
|
|
494 E748: 49 rola
|
|
495 E749: EBE0 addb ,s+
|
|
496 E74B: DD24 std temp
|
|
497 E74D: 0C26 inc temp2
|
|
498 E74F: E680 ldb ,x+
|
|
499 E751: 20E5 bra scloop
|
|
500 E753:
|
|
501 E753: FD029F scan2parms std length
|
|
502 E756: 8DD8 bsr scanhex
|
|
503 E758: 2710 beq sp2
|
|
504 E75A: FD029D std addr
|
|
505 E75D: 8DA9 bsr skipspace
|
|
506 E75F: C12C cmpb #','
|
|
507 E761: 2607 bne sp2
|
|
508 E763: 8DCB bsr scanhex
|
|
509 E765: 2703 beq sp2
|
|
510 E767: FD029F std length
|
|
511 E76A: 39 sp2 rts
|
|
512 E76B:
|
|
513 E76B: * Scan two hexdigits at in and convert to byte into A, Z flag if error.
|
|
514 E76B: 8D9B scanbyte bsr skipspace
|
|
515 E76D: 8DA0 bsr convb
|
|
516 E76F: 2712 beq sb1
|
|
517 E771: 1F98 tfr b,a
|
|
518 E773: E680 ldb ,x+
|
|
519 E775: 8D98 bsr convb
|
|
520 E777: 270A beq sb1
|
|
521 E779: 48 asla
|
|
522 E77A: 48 asla
|
|
523 E77B: 48 asla
|
|
524 E77C: 48 asla
|
|
525 E77D: D724 stb temp
|
|
526 E77F: 9B24 adda temp
|
|
527 E781: 1CFB andcc #$fb ;Clear zero flag
|
|
528 E783: 39 sb1 rts
|
|
529 E784:
|
|
530 E784:
|
|
531 E784: * This is the code for the D command, hex/ascii dump of memory
|
|
532 E784: * Syntax: D or D<addr> or D<addr>,<length>
|
|
533 E784: 8E0201 dump ldx #linebuf+1
|
|
534 E787: CC0040 ldd #$40
|
|
535 E78A: BDE753 jsr scan2parms ;Scan address and length, default length=64
|
|
536 E78D: 10BE029D ldy addr
|
|
537 E791: 8610 dh1 lda #16
|
|
538 E793: 9725 sta temp+1
|
|
539 E795: 1F20 tfr y,d
|
|
540 E797: BDE6FF jsr outd
|
|
541 E79A: C620 ldb #' '
|
|
542 E79C: 9D03 jsr putchar
|
|
543 E79E: A6A0 dh2 lda ,y+ ;display row of 16 mem locations as hex
|
|
544 E7A0: BDE6F1 jsr outbyte
|
|
545 E7A3: C620 ldb #' '
|
|
546 E7A5: 9625 lda temp+1
|
|
547 E7A7: 8109 cmpa #9
|
|
548 E7A9: 2602 bne dh6
|
|
549 E7AB: C62D ldb #'-' ;Do a - after the eighth byte.
|
|
550 E7AD: 9D03 dh6 jsr putchar
|
|
551 E7AF: 0A25 dec temp+1
|
|
552 E7B1: 26EB bne dh2
|
|
553 E7B3: 3130 leay -16,y ;And now for the ascii dump.
|
|
554 E7B5: 8610 lda #16
|
|
555 E7B7: E6A0 dh3 ldb ,y+
|
|
556 E7B9: C120 cmpb #' '
|
|
557 E7BB: 2402 bhs dh4
|
|
558 E7BD: C62E ldb #'.'
|
|
559 E7BF: C17F dh4 cmpb #DEL
|
|
560 E7C1: 2502 blo dh5
|
|
561 E7C3: C62E ldb #'.' ;Convert all nonprintables to .
|
|
562 E7C5: 9D03 dh5 jsr putchar
|
|
563 E7C7: 4A deca
|
|
564 E7C8: 26ED bne dh3
|
|
565 E7CA: 9D0C jsr putcr
|
|
566 E7CC: FC029F ldd length
|
|
567 E7CF: 830010 subd #16
|
|
568 E7D2: FD029F std length
|
|
569 E7D5: 22BA bhi dh1
|
|
570 E7D7: 10BF029D sty addr
|
|
571 E7DB: 7EE579 jmp cmdline
|
|
572 E7DE:
|
|
573 E7DE: * This is the code for the E command, enter hex bytes or ascii string.
|
|
574 E7DE: * Syntax E or E<addr> or E<addr> <bytes> or E<addr>"string"
|
|
575 E7DE: 8E0201 enter ldx #linebuf+1
|
|
576 E7E1: BDE730 jsr scanhex
|
|
577 E7E4: 2703 beq ent1
|
|
578 E7E6: FD029D std addr
|
|
579 E7E9: 8D26 ent1 bsr entline
|
|
580 E7EB: 1026FD8A lbne cmdline ;No bytes, then enter interactively.
|
|
581 E7EF: C645 ent2 ldb #'E'
|
|
582 E7F1: 9D03 jsr putchar
|
|
583 E7F3: FC029D ldd addr
|
|
584 E7F6: BDE6FF jsr outd
|
|
585 E7F9: C620 ldb #' '
|
|
586 E7FB: 9D03 jsr putchar ;Display Eaddr + space
|
|
587 E7FD: 8E0200 ldx #linebuf
|
|
588 E800: C680 ldb #buflen
|
|
589 E802: 9D06 jsr getline ;Get the line.
|
|
590 E804: 3A abx
|
|
591 E805: 6F84 clr ,x
|
|
592 E807: 8E0200 ldx #linebuf
|
|
593 E80A: 8D05 bsr entline
|
|
594 E80C: 26E1 bne ent2
|
|
595 E80E: 7EE579 jmp cmdline
|
|
596 E811:
|
|
597 E811: * Enter a line of hex bytes or ascci string at address X, Z if empty.
|
|
598 E811: BDE708 entline jsr skipspace
|
|
599 E814: 5D tstb
|
|
600 E815: 272B beq entexit
|
|
601 E817: C122 cmpb #'"'
|
|
602 E819: 270F beq entasc
|
|
603 E81B: 301F leax -1,x
|
|
604 E81D: 10BE029D ldy addr
|
|
605 E821: BDE76B entl2 jsr scanbyte ;Enter hex digits.
|
|
606 E824: 2715 beq entdone
|
|
607 E826: A7A0 sta ,y+
|
|
608 E828: 20F7 bra entl2
|
|
609 E82A: 10BE029D entasc ldy addr
|
|
610 E82E: A680 entl3 lda ,x+
|
|
611 E830: 4D tsta
|
|
612 E831: 2708 beq entdone
|
|
613 E833: 8122 cmpa #'"'
|
|
614 E835: 2704 beq entdone
|
|
615 E837: A7A0 sta ,y+
|
|
616 E839: 20F3 bra entl3
|
|
617 E83B: 10BF029D entdone sty addr
|
|
618 E83F: 1CFB andcc #$fb
|
|
619 E841: 39 rts
|
|
620 E842: 1A04 entexit orcc #$04
|
|
621 E844: 39 rts
|
|
622 E845:
|
|
623 E845: *This is the code for the I command, display the contents of an address
|
|
624 E845: * Syntax: Iaddr
|
|
625 E845: 8E0201 inp ldx #linebuf+1
|
|
626 E848: BDE730 jsr scanhex
|
|
627 E84B: 1F01 tfr d,x
|
|
628 E84D: A684 lda ,x ;Read the byte from memory.
|
|
629 E84F: BDE6F1 jsr outbyte ;Display itin hex.
|
|
630 E852: 9D0C jsr putcr
|
|
631 E854: 7EE579 jmp cmdline
|
|
632 E857:
|
|
633 E857: *This is the code for the H command, display result of simple hex expression
|
|
634 E857: *Syntax Hhexnum{+|-hexnum}
|
|
635 E857: 8E0201 hex ldx #linebuf+1
|
|
636 E85A: BDE730 jsr scanhex
|
|
637 E85D: DD28 std temp3
|
|
638 E85F: BDE708 hexloop jsr skipspace
|
|
639 E862: C12B cmpb #'+'
|
|
640 E864: 2609 bne hex1
|
|
641 E866: BDE730 jsr scanhex
|
|
642 E869: D328 addd temp3
|
|
643 E86B: DD28 std temp3
|
|
644 E86D: 20F0 bra hexloop
|
|
645 E86F: C12D hex1 cmpb #'-'
|
|
646 E871: 260E bne hexend
|
|
647 E873: BDE730 jsr scanhex
|
|
648 E876: 53 comb
|
|
649 E877: 43 coma
|
|
650 E878: C30001 addd #1
|
|
651 E87B: D328 addd temp3
|
|
652 E87D: DD28 std temp3
|
|
653 E87F: 20DE bra hexloop
|
|
654 E881: DC28 hexend ldd temp3
|
|
655 E883: BDE6FF jsr outd
|
|
656 E886: 9D0C jsr putcr
|
|
657 E888: 7EE579 jmp cmdline
|
|
658 E88B:
|
|
659 E88B: * This is the code for the G command, jump to the program
|
|
660 E88B: * Syntax G or G<addr>
|
|
661 E88B: 8E0201 go ldx #linebuf+1
|
|
662 E88E: BDE730 jsr scanhex
|
|
663 E891: 2702 beq launch
|
|
664 E893: ED6A std 10,s ;Store parameter in pc location.
|
|
665 E895: BDE9DB launch jsr arm ;Arm the breakpoints.
|
|
666 E898: 35FF puls cc,b,a,dp,x,y,u,pc
|
|
667 E89A:
|
|
668 E89A: * This is the code for the J command, run a subroutine.
|
|
669 E89A: * Syntax J<addr>
|
|
670 E89A: 8E0201 jump ldx #linebuf+1
|
|
671 E89D: EC6A ldd 10,s
|
|
672 E89F: FD029B std oldpc ;Save old pc
|
|
673 E8A2: BDE730 jsr scanhex
|
|
674 E8A5: ED6A std 10,s ;Store parameter in PC location
|
|
675 E8A7: 1F41 tfr s,x
|
|
676 E8A9: 327E leas -2,s
|
|
677 E8AB: 1F43 tfr s,u
|
|
678 E8AD: C60C ldb #12 ;Move the saved register set 2 addresses
|
|
679 E8AF: BDE44A jsr blockmove ;down on the stack.
|
|
680 E8B2: CCE55F ldd #stakregs
|
|
681 E8B5: ED6C std 12,s ;Prepare subroutine return address.
|
|
682 E8B7: 20DC bra launch ;Jump to the routine.
|
|
683 E8B9:
|
|
684 E8B9:
|
|
685 E8B9: * This is the code for the P command, run instruction followed by breakpoint
|
|
686 E8B9: * Syntax P
|
|
687 E8B9: 10AE6A prog ldy 10,s ;Get program counter value.
|
|
688 E8BC: BDF3C9 jsr disdecode ;Find out location past current insn.
|
|
689 E8BF: 10BF02AD sty stepbp
|
|
690 E8C3: 20D0 bra launch
|
|
691 E8C5:
|
|
692 E8C5: * This is the code for the T command, single step trace an instruction.
|
|
693 E8C5: * Syntax T
|
|
694 E8C5: BDE8CE trace jsr traceone
|
|
695 E8C8: BDE916 jsr dispregs
|
|
696 E8CB: 7EE579 jmp cmdline
|
|
697 E8CE:
|
|
698 E8CE: 1A50 traceone orcc #$50 ;Disable the interrupts.
|
|
699 E8D0: ECE1 ldd ,s++
|
|
700 E8D2: FD029B std oldpc ;Remove saved pc from stack.
|
|
701 E8D5: CCE8EA ldd #traceret
|
|
702 E8D8: FD0287 std firqvec+1 ;Adjust timer IRQ vector.
|
|
703 E8DB: 13 sync ;Synchronize on the next timer interrupt.
|
|
704 E8DC: ;1 cycle
|
|
705 E8DC: 8E1159 ldx #4441 ;3 cycles
|
|
706 E8DF: 301F traceloop leax -1,x ;6 cycles\x4441= 39969 cycles.
|
|
707 E8E1: 26FC bne traceloop ;3 cycles/
|
|
708 E8E3: 12 nop ;2 cycles.
|
|
709 E8E4: 12 nop ;2 cycles.
|
|
710 E8E5: 12 nop ;2 cycles.
|
|
711 E8E6: 2102 brn traceret ;3 cycles.
|
|
712 E8E8: 35FF puls x,y,u,a,b,dp,cc,pc ;17 cycles, total=39999 20ms @ 2MHz
|
|
713 E8EA: ;Pull all registers and execute.
|
|
714 E8EA: ;Is timed such that next timer IRQ
|
|
715 E8EA: ;occurs right after it.
|
|
716 E8EA: 3501 traceret puls cc
|
|
717 E8EC: 347F pshs x,y,u,a,b,dp,cc;Store full register set instead of cc.
|
|
718 E8EE: CCE50B ldd #timerirq
|
|
719 E8F1: FD0287 std firqvec+1 ;Restore timer IRQ vector.
|
|
720 E8F4: 6E9F029B jmp [oldpc]
|
|
721 E8F8:
|
|
722 E8F8:
|
|
723 E8F8: * Display the contents of 8 bit register, name in B, contents in A
|
|
724 E8F8: 9D03 disp8 jsr putchar
|
|
725 E8FA: C63D ldb #'='
|
|
726 E8FC: 9D03 jsr putchar
|
|
727 E8FE: BDE6F1 jsr outbyte
|
|
728 E901: C620 ldb #' '
|
|
729 E903: 9D03 jsr putchar
|
|
730 E905: 39 rts
|
|
731 E906:
|
|
732 E906: * Display the contents of 16 bit register, name in B, contents in Y
|
|
733 E906: 9D03 disp16 jsr putchar
|
|
734 E908: C63D ldb #'='
|
|
735 E90A: 9D03 jsr putchar
|
|
736 E90C: 1F20 tfr y,d
|
|
737 E90E: BDE6FF jsr outd
|
|
738 E911: C620 ldb #' '
|
|
739 E913: 9D03 jsr putchar
|
|
740 E915: 39 rts
|
|
741 E916:
|
|
742 E916: * Display the contents of the registers and disassemble instruction at
|
|
743 E916: * PC location.
|
|
744 E916: C658 dispregs ldb #'X'
|
|
745 E918: 10AE66 ldy 6,s ;Note that there's one return address on
|
|
746 E91B: 8DE9 bsr disp16 ;stack so saved register offsets are
|
|
747 E91D: C659 ldb #'Y' ;inremented by 2.
|
|
748 E91F: 10AE68 ldy 8,s
|
|
749 E922: 8DE2 bsr disp16
|
|
750 E924: C655 ldb #'U'
|
|
751 E926: 10AE6A ldy 10,s
|
|
752 E929: 8DDB bsr disp16
|
|
753 E92B: C653 ldb #'S'
|
|
754 E92D: 1F42 tfr s,y
|
|
755 E92F: 312E leay 14,y ;S of the running program is 12 higher,
|
|
756 E931: ;because regs are not stacked when running.
|
|
757 E931: 8DD3 bsr disp16
|
|
758 E933: C641 ldb #'A'
|
|
759 E935: A663 lda 3,s
|
|
760 E937: 8DBF bsr disp8
|
|
761 E939: C642 ldb #'B'
|
|
762 E93B: A664 lda 4,s
|
|
763 E93D: 8DB9 bsr disp8
|
|
764 E93F: C644 ldb #'D'
|
|
765 E941: A665 lda 5,s
|
|
766 E943: 8DB3 bsr disp8
|
|
767 E945: C643 ldb #'C'
|
|
768 E947: A662 lda 2,s
|
|
769 E949: 8DAD bsr disp8
|
|
770 E94B: 9D0C jsr putcr
|
|
771 E94D: C650 ldb #'P'
|
|
772 E94F: 10AE6C ldy 12,s
|
|
773 E952: 8DB2 bsr disp16
|
|
774 E954: BDF3C9 jsr disdecode
|
|
775 E957: BDF4AC jsr disdisp ;Disassemble instruction at PC
|
|
776 E95A: 9D0C jsr putcr
|
|
777 E95C: 39 rts
|
|
778 E95D:
|
|
779 E95D:
|
|
780 E95D: * This is the code for the R command, display or alter the registers.
|
|
781 E95D: * Syntax R or R<letter><hex>
|
|
782 E95D: 8E0201 regs ldx #linebuf+1
|
|
783 E960: BDE708 jsr skipspace
|
|
784 E963: 5D tstb
|
|
785 E964: 2605 bne setreg
|
|
786 E966: 8DAE bsr dispregs ;Display regs ifnothing follows.
|
|
787 E968: 7EE579 jmp cmdline
|
|
788 E96B: 108EE9B7 setreg ldy #regtab
|
|
789 E96F: 4F clra
|
|
790 E970: C4DF andb #CASEMASK ;Make letter uppercase.
|
|
791 E972: 6DA4 sr1 tst ,y
|
|
792 E974: 1027FC5D lbeq unk ;At end of register tab, unknown reg
|
|
793 E978: E1A0 cmpb ,y+
|
|
794 E97A: 2703 beq sr2 ;Found the register?
|
|
795 E97C: 4C inca
|
|
796 E97D: 20F3 bra sr1
|
|
797 E97F: 3402 sr2 pshs a
|
|
798 E981: BDE730 jsr scanhex ;Convert the hex argument.
|
|
799 E984: 3406 pshs d
|
|
800 E986: A662 lda 2,s ;Get register number.
|
|
801 E988: 8104 cmpa #4
|
|
802 E98A: 2409 bcc sr3
|
|
803 E98C: E661 ldb 1,s ;It's 8 bit.
|
|
804 E98E: 3263 leas 3,s ;Remove temp stuff from stack.
|
|
805 E990: E7E6 stb a,s ;Store it in the reg on stack.
|
|
806 E992: 7EE579 jmp cmdline
|
|
807 E995: 8108 sr3 cmpa #8
|
|
808 E997: 240C bcc sr4
|
|
809 E999: 3510 puls x ;It's 16 bit.
|
|
810 E99B: 3261 leas 1,s
|
|
811 E99D: 48 lsla
|
|
812 E99E: 8004 suba #4 ;Convert reg no to stack offset.
|
|
813 E9A0: AFE6 stx a,s
|
|
814 E9A2: 7EE579 jmp cmdline
|
|
815 E9A5: 3540 sr4 puls u ;It's the stack pointer.
|
|
816 E9A7: 3261 leas 1,s
|
|
817 E9A9: 3354 leau -12,u
|
|
818 E9AB: 1F41 tfr s,x
|
|
819 E9AD: 1F34 tfr u,s ;Set new stack pointer.
|
|
820 E9AF: C60C ldb #12
|
|
821 E9B1: BDE44A jsr blockmove ;Move register set to new stack location.
|
|
822 E9B4: 7EE579 jmp cmdline
|
|
823 E9B7:
|
|
824 E9B7: 4341424458595550 regtab FCC "CABDXYUPS "
|
|
825 E9C0: 20
|
|
826 E9C1:
|
|
827 E9C1: * Disarm the breakpoints, this is replace the SWI instructions with the
|
|
828 E9C1: * original byte.
|
|
829 E9C1: 8E02A1 disarm ldx #bpaddr
|
|
830 E9C4: 8605 lda #brkpoints+1
|
|
831 E9C6: EE81 disarm1 ldu ,x++
|
|
832 E9C8: E680 ldb ,x+ ;Get address in u, byte in b
|
|
833 E9CA: 11830000 cmpu #0
|
|
834 E9CE: 2702 beq disarm2
|
|
835 E9D0: E7C4 stb ,u
|
|
836 E9D2: 4A disarm2 deca
|
|
837 E9D3: 26F1 bne disarm1
|
|
838 E9D5: CE0000 ldu #0
|
|
839 E9D8: EF1D stu -3,x ;Clear the step breakpoint.
|
|
840 E9DA: 39 rts
|
|
841 E9DB:
|
|
842 E9DB: * Arm the breakponts, this is replace the byte at the breakpoint address
|
|
843 E9DB: * with an SWI instruction.
|
|
844 E9DB: 8E02AD arm ldx #bpaddr+brkpoints*3
|
|
845 E9DE: 8605 lda #brkpoints+1 ;Arm them in reverse order of disarming.
|
|
846 E9E0: EE84 arm1 ldu ,x ;Get address in u.
|
|
847 E9E2: 270D beq arm2
|
|
848 E9E4: E6C4 ldb ,u
|
|
849 E9E6: E702 stb 2,x
|
|
850 E9E8: 11A36C cmpu 12,s ;Compare to program counter location
|
|
851 E9EB: 2704 beq arm2
|
|
852 E9ED: C63F ldb #$3F
|
|
853 E9EF: E7C4 stb ,u ;Store SWI instruction if not equal.
|
|
854 E9F1: 301D arm2 leax -3,x
|
|
855 E9F3: 4A deca
|
|
856 E9F4: 26EA bne arm1
|
|
857 E9F6: 39 rts
|
|
858 E9F7:
|
|
859 E9F7: * This is the code for the break command, set, clear display breakpoints.
|
|
860 E9F7: * Syntax B or B<addr>. B displays, B<addr> sets or clears breakpoint.
|
|
861 E9F7: 8604 break lda #brkpoints
|
|
862 E9F9: 9727 sta temp2+1 ;Store number of breakpoints to visit.
|
|
863 E9FB: 8E0201 ldx #linebuf+1
|
|
864 E9FE: BDE730 jsr scanhex
|
|
865 EA01: 273B beq dispbp ;No number then display breakpoints
|
|
866 EA03: 8E02A1 ldx #bpaddr
|
|
867 EA06: CE0000 ldu #0
|
|
868 EA09: 1F32 tfr u,y
|
|
869 EA0B: 10A384 bp1 cmpd ,x
|
|
870 EA0E: 2720 beq clearit ;Found the breakpoint, so clear it,
|
|
871 EA10: 11A384 cmpu ,x ;Is location zero
|
|
872 EA13: 2602 bne bp2
|
|
873 EA15: 1F12 tfr x,y ;Set free address to y
|
|
874 EA17: 3003 bp2 leax 3,x
|
|
875 EA19: 0A27 dec temp2+1
|
|
876 EA1B: 26EE bne bp1
|
|
877 EA1D: 108C0000 cmpy #0 ;Address not found in list of breakpoints
|
|
878 EA21: 2716 beq bpfull ;Was free address found.
|
|
879 EA23: EDA4 std ,y ;If so, store breakpoint there.
|
|
880 EA25: 8EE60F ldx #brkmsg
|
|
881 EA28: BDE502 bpexit jsr outcount
|
|
882 EA2B: 9D0C jsr putcr
|
|
883 EA2D: 7EE579 jmp cmdline
|
|
884 EA30: 4F clearit clra
|
|
885 EA31: 5F clrb
|
|
886 EA32: ED84 std ,x
|
|
887 EA34: 8EE61E ldx #clrmsg
|
|
888 EA37: 20EF bra bpexit
|
|
889 EA39: 8EE631 bpfull ldx #fullmsg
|
|
890 EA3C: 20EA bra bpexit
|
|
891 EA3E:
|
|
892 EA3E: 8E02A1 dispbp ldx #bpaddr
|
|
893 EA41: EC84 dbp1 ldd ,x
|
|
894 EA43: 2707 beq dbp2
|
|
895 EA45: BDE6FF jsr outd
|
|
896 EA48: C620 ldb #' '
|
|
897 EA4A: 9D03 jsr putchar
|
|
898 EA4C: 3003 dbp2 leax 3,x
|
|
899 EA4E: 0A27 dec temp2+1
|
|
900 EA50: 26EF bne dbp1
|
|
901 EA52: 9D0C jsr putcr
|
|
902 EA54: 7EE579 jmp cmdline
|
|
903 EA57:
|
|
904 EA57: * Scan hex byte into a and add it to check sum in temp2+1
|
|
905 EA57: BDE76B addchk jsr scanbyte
|
|
906 EA5A: 10270077 lbeq srecerr
|
|
907 EA5E: 1F89 tfr a,b
|
|
908 EA60: DB27 addb temp2+1
|
|
909 EA62: D727 stb temp2+1
|
|
910 EA64: 39 rts
|
|
911 EA65:
|
|
912 EA65: * This tis the code for the S command, the Motorola S records entry.
|
|
913 EA65: * Syntax SO<addr> or SS<addr>,<len> or S1<bytes> or S9<bytes>
|
|
914 EA65: 8E0201 srec ldx #linebuf+1
|
|
915 EA68: E680 ldb ,x+
|
|
916 EA6A: C4DF andb #CASEMASK
|
|
917 EA6C: C14F cmpb #'O'
|
|
918 EA6E: 2772 beq setsorg
|
|
919 EA70: C153 cmpb #'S'
|
|
920 EA72: 277C beq sendrec
|
|
921 EA74: E61F ldb -1,x
|
|
922 EA76: 0F28 clr temp3
|
|
923 EA78: C131 cmpb #'1'
|
|
924 EA7A: 2706 beq readrec
|
|
925 EA7C: C139 cmpb #'9'
|
|
926 EA7E: 2655 bne srecerr
|
|
927 EA80: 0C28 inc temp3
|
|
928 EA82: 0F27 readrec clr temp2+1 ;clear checksum.
|
|
929 EA84: 8DD1 bsr addchk
|
|
930 EA86: 8002 suba #2 ;discount the address bytes from the count.
|
|
931 EA88: 9729 sta temp3+1 ;Read length byte.
|
|
932 EA8A: 8DCB bsr addchk
|
|
933 EA8C: 3402 pshs a
|
|
934 EA8E: 8DC7 bsr addchk
|
|
935 EA90: 3504 puls b
|
|
936 EA92: 1E89 exg a,b ;Read address into d.
|
|
937 EA94: FE02B0 ldu sorg
|
|
938 EA97: 270F beq rr1
|
|
939 EA99: FE02B2 ldu soffs
|
|
940 EA9C: 260A bne rr1
|
|
941 EA9E: 3406 pshs d ;Sorg is nonzero and soffs is zero, now
|
|
942 EAA0: B302B0 subd sorg ;set soffs
|
|
943 EAA3: FD02B2 std soffs
|
|
944 EAA6: 3506 puls d
|
|
945 EAA8: B302B2 rr1 subd soffs ;Subtract the address offset.
|
|
946 EAAB: 1F02 tfr d,y
|
|
947 EAAD: 8DA8 rr2 bsr addchk
|
|
948 EAAF: 0A29 dec temp3+1
|
|
949 EAB1: 2704 beq endrec
|
|
950 EAB3: A7A0 sta ,y+
|
|
951 EAB5: 20F6 bra rr2
|
|
952 EAB7: 0C27 endrec inc temp2+1 ;Check checksum.
|
|
953 EAB9: 261A bne srecerr
|
|
954 EABB: 0D28 tst temp3
|
|
955 EABD: 1027FAB8 lbeq cmdline ;Was it no S9 record?
|
|
956 EAC1: 108C0000 cmpy #0
|
|
957 EAC5: 2703 beq endrec1
|
|
958 EAC7: 10AF6A sty 10,s ;Store address into program counter.
|
|
959 EACA: 4F endrec1 clra
|
|
960 EACB: 5F clrb
|
|
961 EACC: FD02B0 std sorg ;Reset sorg, next S loads will be normal.
|
|
962 EACF: FD02B2 std soffs
|
|
963 EAD2: 7EE579 jmp cmdline
|
|
964 EAD5: 9D18 srecerr jsr xabortin
|
|
965 EAD7: 8EE642 ldx #smsg ;Error in srecord, display message.
|
|
966 EADA: BDE502 jsr outcount
|
|
967 EADD: 9D0C jsr putcr
|
|
968 EADF: 7EE579 jmp cmdline
|
|
969 EAE2: BDE730 setsorg jsr scanhex ;Set S record origin.
|
|
970 EAE5: FD02B0 std sorg
|
|
971 EAE8: 4F clra
|
|
972 EAE9: 5F clrb
|
|
973 EAEA: FD02B2 std soffs
|
|
974 EAED: 7EE579 jmp cmdline
|
|
975 EAF0: * Send a memory region as S-records.
|
|
976 EAF0: CC0100 sendrec ldd #$100 ;Scan address and length parameter.
|
|
977 EAF3: BDE753 jsr scan2parms
|
|
978 EAF6: FC02B0 ldd sorg
|
|
979 EAF9: 2709 beq ss1
|
|
980 EAFB: FC029D ldd addr
|
|
981 EAFE: B302B0 subd sorg
|
|
982 EB01: FD02B2 std soffs ;Compute offset for origin.
|
|
983 EB04: FC029F ss1 ldd length
|
|
984 EB07: 2748 beq endss ;All bytes sent?
|
|
985 EB09: 10830010 cmpd #16
|
|
986 EB0D: 2502 blo ss2
|
|
987 EB0F: C610 ldb #16 ;If more than 16 left, then send 16.
|
|
988 EB11: D724 ss2 stb temp
|
|
989 EB13: 50 negb
|
|
990 EB14: FE029F ldu length
|
|
991 EB17: 33C5 leau b,u
|
|
992 EB19: FF029F stu length ;Discount line length from length.
|
|
993 EB1C: C653 ldb #'S'
|
|
994 EB1E: 9D03 jsr putchar
|
|
995 EB20: C631 ldb #'1'
|
|
996 EB22: 9D03 jsr putchar
|
|
997 EB24: 0F25 clr temp+1 ;Clear check sum
|
|
998 EB26: D624 ldb temp
|
|
999 EB28: CB03 addb #3
|
|
1000 EB2A: 8D30 bsr checkout ;Output byte b as hex and add to check sum.
|
|
1001 EB2C: FC029D ldd addr
|
|
1002 EB2F: 1F02 tfr d,y
|
|
1003 EB31: B302B2 subd soffs
|
|
1004 EB34: 1E89 exg a,b
|
|
1005 EB36: 8D24 bsr checkout
|
|
1006 EB38: 1E89 exg a,b
|
|
1007 EB3A: 8D20 bsr checkout ;Output address (add into check sum)
|
|
1008 EB3C: E6A0 ss3 ldb ,y+
|
|
1009 EB3E: 8D1C bsr checkout
|
|
1010 EB40: 0A24 dec temp
|
|
1011 EB42: 26F8 bne ss3
|
|
1012 EB44: 10BF029D sty addr
|
|
1013 EB48: D625 ldb temp+1
|
|
1014 EB4A: 53 comb
|
|
1015 EB4B: 8D0F bsr checkout ;Output checksum byte.
|
|
1016 EB4D: 9D0C jsr putcr
|
|
1017 EB4F: 20B3 bra ss1
|
|
1018 EB51: 8EE654 endss ldx #lastrec
|
|
1019 EB54: BDE502 jsr outcount
|
|
1020 EB57: 9D0C jsr putcr
|
|
1021 EB59: 7EE579 jmp cmdline
|
|
1022 EB5C: * Output byte in register B and add it into check sum at temp+1
|
|
1023 EB5C: 3402 checkout pshs a
|
|
1024 EB5E: 1F98 tfr b,a
|
|
1025 EB60: DB25 addb temp+1
|
|
1026 EB62: D725 stb temp+1
|
|
1027 EB64: BDE6F1 jsr outbyte
|
|
1028 EB67: 3502 puls a
|
|
1029 EB69: 39 rts
|
|
1030 EB6A:
|
|
1031 EB6A: * This is the code for the M command, move memory region.
|
|
1032 EB6A: * Syntax: Maddr1,addr2,length
|
|
1033 EB6A: 8E0201 move ldx #linebuf+1
|
|
1034 EB6D: BDE730 jsr scanhex
|
|
1035 EB70: 1027FA61 lbeq unk
|
|
1036 EB74: DD28 std temp3
|
|
1037 EB76: BDE708 jsr skipspace
|
|
1038 EB79: C12C cmpb #','
|
|
1039 EB7B: 1026FA56 lbne unk
|
|
1040 EB7F: BDE730 jsr scanhex
|
|
1041 EB82: 1027FA4F lbeq unk
|
|
1042 EB86: 1F03 tfr d,u
|
|
1043 EB88: BDE708 jsr skipspace
|
|
1044 EB8B: C12C cmpb #','
|
|
1045 EB8D: 1026FA44 lbne unk
|
|
1046 EB91: BDE730 jsr scanhex
|
|
1047 EB94: 1027FA3D lbeq unk
|
|
1048 EB98: 1F02 tfr d,y ;Read the argument separated by commas
|
|
1049 EB9A: 9E28 ldx temp3 ;src addr to x, dest addr to u, length to y
|
|
1050 EB9C: ;Don't tolerate syntax deviations.
|
|
1051 EB9C: A680 mvloop lda ,x+
|
|
1052 EB9E: A7C0 sta ,u+
|
|
1053 EBA0: 313F leay -1,y
|
|
1054 EBA2: 26F8 bne mvloop ;Perform the block move.
|
|
1055 EBA4: 7EE579 jmp cmdline
|
|
1056 EBA7:
|
|
1057 EBA7:
|
|
1058 EBA7: * This is the code for the F command, find byte/ascii string in memory.
|
|
1059 EBA7: * Syntax: Faddr bytes or Faddr "ascii"
|
|
1060 EBA7: 8E0201 find ldx #linebuf+1
|
|
1061 EBAA: BDE730 jsr scanhex
|
|
1062 EBAD: 1F02 tfr d,y ;Scan the start address.
|
|
1063 EBAF: BDE708 jsr skipspace
|
|
1064 EBB2: C122 cmpb #'"'
|
|
1065 EBB4: 2611 bne findhex
|
|
1066 EBB6: CE0200 ldu #linebuf ;Quote found, so scan for quoted string.
|
|
1067 EBB9: 4F clra
|
|
1068 EBBA: E680 fstrloop ldb ,x+
|
|
1069 EBBC: 271F beq startsrch ;End of line without final quote.
|
|
1070 EBBE: C122 cmpb #'"'
|
|
1071 EBC0: 271B beq startsrch ;End quote found
|
|
1072 EBC2: E7C0 stb ,u+
|
|
1073 EBC4: 4C inca
|
|
1074 EBC5: 20F3 bra fstrloop
|
|
1075 EBC7: CE0200 findhex ldu #linebuf ;Convert string of hex bytes.
|
|
1076 EBCA: 301F leax -1,x ;String will be stored at start of line
|
|
1077 EBCC: 4F clra ;buffer and may overwrite part of the
|
|
1078 EBCD: 3402 fhexloop pshs a ;already converted string.
|
|
1079 EBCF: BDE76B jsr scanbyte
|
|
1080 EBD2: 1F89 tfr a,b
|
|
1081 EBD4: 3502 puls a
|
|
1082 EBD6: 2705 beq startsrch
|
|
1083 EBD8: E7C0 stb ,u+
|
|
1084 EBDA: 4C inca
|
|
1085 EBDB: 20F0 bra fhexloop
|
|
1086 EBDD: 4D startsrch tsta ;Start searching, start addr in Y,
|
|
1087 EBDE: ;string starts at linebuf, length A
|
|
1088 EBDE: 1027F997 lbeq cmdline ;Quit with zero length string.
|
|
1089 EBE2: 0F28 clr temp3
|
|
1090 EBE4: 9729 sta temp3+1
|
|
1091 EBE6: 1F21 srchloop tfr y,x
|
|
1092 EBE8: 9629 lda temp3+1
|
|
1093 EBEA: 8CE100 cmpx #$e100
|
|
1094 EBED: 2409 bcc srch1
|
|
1095 EBEF: 3086 leax a,x
|
|
1096 EBF1: 8CE000 cmpx #$e000 ;Stop at I/O addresses.
|
|
1097 EBF4: 1024F981 lbcc cmdline
|
|
1098 EBF8: 1F21 srch1 tfr y,x
|
|
1099 EBFA: CE0200 ldu #linebuf
|
|
1100 EBFD: E680 srch2 ldb ,x+
|
|
1101 EBFF: E1C0 cmpb ,u+
|
|
1102 EC01: 2614 bne srch3 ;Not equal, try next address.
|
|
1103 EC03: 4A deca
|
|
1104 EC04: 26F7 bne srch2
|
|
1105 EC06: 1F20 tfr y,d
|
|
1106 EC08: BDE6FF jsr outd ;String found
|
|
1107 EC0B: 9D0C jsr putcr
|
|
1108 EC0D: 0C28 inc temp3
|
|
1109 EC0F: 9628 lda temp3
|
|
1110 EC11: 8110 cmpa #$10
|
|
1111 EC13: 1027F962 lbeq cmdline ;If 10 matches found, just stop.
|
|
1112 EC17: 3121 srch3 leay 1,y
|
|
1113 EC19: 20CB bra srchloop
|
|
1114 EC1B:
|
|
1115 EC1B: * Send the contents of the xmodem buffer and get it acknowledged, zero flag
|
|
1116 EC1B: * is set if transfer aborted.
|
|
1117 EC1B: C601 xsendbuf ldb #SOH
|
|
1118 EC1D: BDE471 jsr osputc ;Send SOH
|
|
1119 EC20: D62D ldb xpacknum
|
|
1120 EC22: BDE471 jsr osputc ;Send block number.
|
|
1121 EC25: 53 comb
|
|
1122 EC26: BDE471 jsr osputc ;and its complement.
|
|
1123 EC29: 0F2E clr xsum
|
|
1124 EC2B: 8680 lda #128
|
|
1125 EC2D: 8E0100 ldx #buf0
|
|
1126 EC30: E684 xsloop ldb ,x
|
|
1127 EC32: DB2E addb xsum
|
|
1128 EC34: D72E stb xsum
|
|
1129 EC36: E680 ldb ,x+
|
|
1130 EC38: BDE471 jsr osputc
|
|
1131 EC3B: 4A deca
|
|
1132 EC3C: 26F2 bne xsloop ;Send the buffer contents.
|
|
1133 EC3E: D62E ldb xsum
|
|
1134 EC40: BDE471 jsr osputc ;Send the check sum
|
|
1135 EC43: BDE45A waitack jsr osgetc
|
|
1136 EC46: C118 cmpb #CAN
|
|
1137 EC48: 270C beq xsabt ;^X for abort.
|
|
1138 EC4A: C115 cmpb #NAK
|
|
1139 EC4C: 27CD beq xsendbuf ;Send again if NAK
|
|
1140 EC4E: C106 cmpb #ACK
|
|
1141 EC50: 26F1 bne waitack
|
|
1142 EC52: 0C2D inc xpacknum
|
|
1143 EC54: 1CFB xsok andcc #$fb ;Clear zero flag after ACK
|
|
1144 EC56: 39 xsabt rts
|
|
1145 EC57:
|
|
1146 EC57: * Start an XMODEM send session.
|
|
1147 EC57: C601 xsendinit ldb #1
|
|
1148 EC59: D72D stb xpacknum ;Initialize block number.
|
|
1149 EC5B: BDE45A waitnak jsr osgetc
|
|
1150 EC5E: C118 cmpb #CAN
|
|
1151 EC60: 27F4 beq xsabt ;If ^X exit with zero flag.
|
|
1152 EC62: C115 cmpb #NAK
|
|
1153 EC64: 27EE beq xsok
|
|
1154 EC66: 20F3 bra waitnak ;Wait until NAK received.
|
|
1155 EC68:
|
|
1156 EC68: * Send ETX and wait for ack.
|
|
1157 EC68: C604 xsendeot ldb #EOT
|
|
1158 EC6A: BDE471 jsr osputc
|
|
1159 EC6D: BDE45A waitack2 jsr osgetc
|
|
1160 EC70: C118 cmpb #CAN
|
|
1161 EC72: 27E2 beq xsabt
|
|
1162 EC74: C115 cmpb #NAK
|
|
1163 EC76: 27F0 beq xsendeot
|
|
1164 EC78: C106 cmpb #ACK
|
|
1165 EC7A: 27D8 beq xsok
|
|
1166 EC7C: 20EF bra waitack2
|
|
1167 EC7E:
|
|
1168 EC7E: * Read character into B with a timeout of A seconds, Carry set if timeout.
|
|
1169 EC7E: 48 gettimeout asla
|
|
1170 EC7F: C632 ldb #50
|
|
1171 EC81: 3D mul
|
|
1172 EC82: 1F98 tfr b,a
|
|
1173 EC84: 9B2C adda timer+2
|
|
1174 EC86: BDE465 gt1 jsr osgetpoll
|
|
1175 EC89: 5D tstb
|
|
1176 EC8A: 2607 bne gtexit
|
|
1177 EC8C: 912C cmpa timer+2
|
|
1178 EC8E: 26F6 bne gt1
|
|
1179 EC90: 1A01 orcc #$1
|
|
1180 EC92: 39 rts
|
|
1181 EC93: BDE45A gtexit jsr osgetc
|
|
1182 EC96: 1CFE andcc #$fe
|
|
1183 EC98: 39 rts
|
|
1184 EC99:
|
|
1185 EC99: * Wait until line becomes quiet.
|
|
1186 EC99: 8603 purge lda #3
|
|
1187 EC9B: BDEC7E jsr gettimeout
|
|
1188 EC9E: 24F9 bcc purge
|
|
1189 ECA0: 39 rts
|
|
1190 ECA1:
|
|
1191 ECA1: * Receive an XMODEM block and wait till it is OK, Z set if etx.
|
|
1192 ECA1: 8603 xrcvbuf lda #3
|
|
1193 ECA3: 0D2F tst lastok
|
|
1194 ECA5: 2709 beq sendnak
|
|
1195 ECA7: C606 ldb #ACK
|
|
1196 ECA9: BDE471 jsr osputc ;Send an ack.
|
|
1197 ECAC: 8605 lda #5
|
|
1198 ECAE: 2005 bra startblock
|
|
1199 ECB0: C615 sendnak ldb #NAK
|
|
1200 ECB2: BDE471 jsr osputc ;Send a NAK
|
|
1201 ECB5: 0F2F startblock clr lastok
|
|
1202 ECB7: 8DC5 bsr gettimeout
|
|
1203 ECB9: 8603 lda #3
|
|
1204 ECBB: 25F3 bcs sendnak ;Keep sending NAKs when timed out.
|
|
1205 ECBD: C104 cmpb #EOT
|
|
1206 ECBF: 2752 beq xrcveot ;End of file reached, acknowledge EOT.
|
|
1207 ECC1: C101 cmpb #SOH
|
|
1208 ECC3: 2649 bne purgeit ;Not, SOH, bad block.
|
|
1209 ECC5: 8601 lda #1
|
|
1210 ECC7: 8DB5 bsr gettimeout
|
|
1211 ECC9: 2543 bcs purgeit
|
|
1212 ECCB: D12D cmpb xpacknum ;Is it the right block?
|
|
1213 ECCD: 2707 beq xr1
|
|
1214 ECCF: 5C incb
|
|
1215 ECD0: D12D cmpb xpacknum ;Was it the previous block.
|
|
1216 ECD2: 263A bne purgeit
|
|
1217 ECD4: 0C2F inc lastok
|
|
1218 ECD6: D72E xr1 stb xsum
|
|
1219 ECD8: 8601 lda #1
|
|
1220 ECDA: 8DA2 bsr gettimeout
|
|
1221 ECDC: 2530 bcs purgeit
|
|
1222 ECDE: 53 comb
|
|
1223 ECDF: D12E cmpb xsum ;Is the complement of the block number OK
|
|
1224 ECE1: 262B bne purgeit
|
|
1225 ECE3: 8E0100 ldx #buf0
|
|
1226 ECE6: 0F2E clr xsum
|
|
1227 ECE8: 8601 xrloop lda #1
|
|
1228 ECEA: 8D92 bsr gettimeout
|
|
1229 ECEC: 2520 bcs purgeit
|
|
1230 ECEE: E780 stb ,x+
|
|
1231 ECF0: DB2E addb xsum
|
|
1232 ECF2: D72E stb xsum
|
|
1233 ECF4: 8C0180 cmpx #buf0+128
|
|
1234 ECF7: 26EF bne xrloop ;Get the data bytes.
|
|
1235 ECF9: 8601 lda #1
|
|
1236 ECFB: 8D81 bsr gettimeout
|
|
1237 ECFD: 250F bcs purgeit
|
|
1238 ECFF: D12E cmpb xsum
|
|
1239 ED01: 260B bne purgeit ;Check the check sum.
|
|
1240 ED03: 0D2F tst lastok
|
|
1241 ED05: 269A bne xrcvbuf ;Block was the previous block, get next one
|
|
1242 ED07: 0C2F inc lastok
|
|
1243 ED09: 0C2D inc xpacknum
|
|
1244 ED0B: 1CFB andcc #$fb
|
|
1245 ED0D: 39 rts
|
|
1246 ED0E: BDEC99 purgeit jsr purge
|
|
1247 ED11: 209D bra sendnak
|
|
1248 ED13: 8603 xrcveot lda #3 ;EOT was received.
|
|
1249 ED15: C606 ldb #ACK
|
|
1250 ED17: BDE471 ackloop jsr osputc
|
|
1251 ED1A: 4A deca
|
|
1252 ED1B: 26FA bne ackloop ;Send 3 acks in a row.
|
|
1253 ED1D: 39 rts
|
|
1254 ED1E:
|
|
1255 ED1E:
|
|
1256 ED1E: 9E01 savevecs ldx getchar+1
|
|
1257 ED20: BF02B4 stx oldgetc
|
|
1258 ED23: 9E04 ldx putchar+1
|
|
1259 ED25: BF02B6 stx oldputc
|
|
1260 ED28: 9E0D ldx putcr+1
|
|
1261 ED2A: BF02B8 stx oldputcr
|
|
1262 ED2D: 7F02BA clr lastterm
|
|
1263 ED30: 39 rts
|
|
1264 ED31:
|
|
1265 ED31: BE02B4 rstvecs ldx oldgetc
|
|
1266 ED34: 9F01 stx getchar+1
|
|
1267 ED36: BE02B6 ldx oldputc
|
|
1268 ED39: 9F04 stx putchar+1
|
|
1269 ED3B: BE02B8 ldx oldputcr
|
|
1270 ED3E: 9F0D stx putcr+1
|
|
1271 ED40: 7F02BA clr lastterm
|
|
1272 ED43: 39 rts
|
|
1273 ED44:
|
|
1274 ED44: * O.S. routine to open input through XMODEM transfer.
|
|
1275 ED44: 3416 xopin pshs x,a,b
|
|
1276 ED46: 8EE65F ldx #xsmsg
|
|
1277 ED49: BDE502 jsr outcount
|
|
1278 ED4C: 9D0C jsr putcr ;Display message to start XMODEM send.
|
|
1279 ED4E: 8DCE bsr savevecs
|
|
1280 ED50: 8EF492 ldx #noop
|
|
1281 ED53: 9F04 stx putchar+1 ;Disable character output.
|
|
1282 ED55: 8EEE12 ldx #xgetc
|
|
1283 ED58: 9F01 stx getchar+1 ;
|
|
1284 ED5A: 0F2F clr lastok
|
|
1285 ED5C: 0F30 clr xcount
|
|
1286 ED5E: 8601 lda #1
|
|
1287 ED60: 972D sta xpacknum
|
|
1288 ED62: 4C inca
|
|
1289 ED63: 9731 sta xmode ;set xmode to 2.
|
|
1290 ED65: 3596 puls x,a,b,pc
|
|
1291 ED67:
|
|
1292 ED67: * O.S. routine to open output through XMODEM transfer.
|
|
1293 ED67: 3416 xopout pshs x,a,b
|
|
1294 ED69: 8DB3 bsr savevecs
|
|
1295 ED6B: 8EE671 ldx #xrmsg
|
|
1296 ED6E: BDE502 jsr outcount ;Display message to start XMODEM receive
|
|
1297 ED71: 9D0C jsr putcr
|
|
1298 ED73: 8EEDD9 ldx #xputc
|
|
1299 ED76: 9F04 stx putchar+1
|
|
1300 ED78: 8EEDF7 ldx #xputcr
|
|
1301 ED7B: 9F0D stx putcr+1
|
|
1302 ED7D: BDEC57 jsr xsendinit
|
|
1303 ED80: 102700B7 lbeq xerror
|
|
1304 ED84: 0F30 clr xcount
|
|
1305 ED86: 8601 lda #1
|
|
1306 ED88: 9731 sta xmode
|
|
1307 ED8A: 3596 puls x,a,b,pc
|
|
1308 ED8C:
|
|
1309 ED8C:
|
|
1310 ED8C: * O.S. routine to abort input through XMODEM transfer.
|
|
1311 ED8C: 9631 xabtin lda xmode
|
|
1312 ED8E: 8102 cmpa #2
|
|
1313 ED90: 263C bne xclsend
|
|
1314 ED92: BDEC99 jsr purge
|
|
1315 ED95: C618 ldb #CAN
|
|
1316 ED97: 8608 lda #8
|
|
1317 ED99: BDE471 xabtloop jsr osputc
|
|
1318 ED9C: 4A deca
|
|
1319 ED9D: 26FA bne xabtloop ;Send 8 CAN characters to kill transfer.
|
|
1320 ED9F: 8D90 bsr rstvecs
|
|
1321 EDA1: 0F31 clr xmode
|
|
1322 EDA3: 8EE686 ldx #xamsg
|
|
1323 EDA6: BDE502 jsr outcount
|
|
1324 EDA9: 9D0C jsr putcr ;Send diagnostic message.
|
|
1325 EDAB: 39 rts
|
|
1326 EDAC:
|
|
1327 EDAC: * O.S. routine to close output through XMODEM transfer.
|
|
1328 EDAC: 9631 xclsout lda xmode
|
|
1329 EDAE: 8101 cmpa #1
|
|
1330 EDB0: 261C bne xclsend
|
|
1331 EDB2: 0D30 tst xcount
|
|
1332 EDB4: 270C beq xclsdone
|
|
1333 EDB6: 8680 lda #128
|
|
1334 EDB8: 9030 suba xcount
|
|
1335 EDBA: F602BB xclsloop ldb filler
|
|
1336 EDBD: 8D1A bsr xputc
|
|
1337 EDBF: 4A deca
|
|
1338 EDC0: 26F8 bne xclsloop ;Transfer filler chars to force block out.
|
|
1339 EDC2: BDEC68 xclsdone jsr xsendeot ;Send EOT
|
|
1340 EDC5: 10270072 lbeq xerror
|
|
1341 EDC9: BDED31 jsr rstvecs
|
|
1342 EDCC: 0F31 clr xmode
|
|
1343 EDCE: 39 xclsend rts
|
|
1344 EDCF:
|
|
1345 EDCF: * O.S. routine to close input through XMODEM, by gobbling up the remaining
|
|
1346 EDCF: * bytes.
|
|
1347 EDCF: D631 xclsin ldb xmode
|
|
1348 EDD1: C102 cmpb #2
|
|
1349 EDD3: 26F9 bne xclsend
|
|
1350 EDD5: 9D03 jsr putchar
|
|
1351 EDD7: 20F6 bra xclsin
|
|
1352 EDD9:
|
|
1353 EDD9: * putchar routine for XMODEM
|
|
1354 EDD9: 3416 xputc pshs x,a,b
|
|
1355 EDDB: 9630 lda xcount
|
|
1356 EDDD: 0C30 inc xcount
|
|
1357 EDDF: 8E0100 ldx #buf0
|
|
1358 EDE2: E786 stb a,x ;Store character in XMODEM buffer.
|
|
1359 EDE4: 817F cmpa #127
|
|
1360 EDE6: 260D bne xputc1 ;is buffer full?
|
|
1361 EDE8: 0F30 clr xcount
|
|
1362 EDEA: 3460 pshs y,u
|
|
1363 EDEC: BDEC1B jsr xsendbuf
|
|
1364 EDEF: 10270048 lbeq xerror
|
|
1365 EDF3: 3560 puls y,u
|
|
1366 EDF5: 3596 xputc1 puls x,a,b,pc
|
|
1367 EDF7:
|
|
1368 EDF7: * putcr routine for XMODEM
|
|
1369 EDF7: 3404 xputcr pshs b
|
|
1370 EDF9: F602BC ldb xmcr
|
|
1371 EDFC: C502 bitb #2
|
|
1372 EDFE: 2704 beq xputcr1
|
|
1373 EE00: C60D ldb #CR
|
|
1374 EE02: 8DD5 bsr xputc
|
|
1375 EE04: F602BC xputcr1 ldb xmcr
|
|
1376 EE07: C501 bitb #1
|
|
1377 EE09: 2704 beq xputcr2
|
|
1378 EE0B: C60A ldb #LF
|
|
1379 EE0D: 8DCA bsr xputc
|
|
1380 EE0F: 3504 xputcr2 puls b
|
|
1381 EE11: 39 rts
|
|
1382 EE12:
|
|
1383 EE12: * getchar routine for XMODEM
|
|
1384 EE12: 3412 xgetc pshs x,a
|
|
1385 EE14: 0D30 tst xcount ;No characters left?
|
|
1386 EE16: 260D bne xgetc1
|
|
1387 EE18: 3460 pshs y,u
|
|
1388 EE1A: BDECA1 jsr xrcvbuf ;Receive new block.
|
|
1389 EE1D: 3560 puls y,u
|
|
1390 EE1F: 2710 beq xgetcterm ;End of input?
|
|
1391 EE21: 8680 lda #128
|
|
1392 EE23: 9730 sta xcount
|
|
1393 EE25: 9630 xgetc1 lda xcount
|
|
1394 EE27: 40 nega
|
|
1395 EE28: 8E0180 ldx #buf0+128
|
|
1396 EE2B: E686 ldb a,x ;Get character from buffer
|
|
1397 EE2D: 0A30 dec xcount
|
|
1398 EE2F: 3592 puls x,a,pc
|
|
1399 EE31: BDED31 xgetcterm jsr rstvecs
|
|
1400 EE34: 0F31 clr xmode
|
|
1401 EE36: F602BB ldb filler
|
|
1402 EE39: 3592 puls x,a,pc
|
|
1403 EE3B:
|
|
1404 EE3B: BDED31 xerror jsr rstvecs ;Restore I/O vectors
|
|
1405 EE3E: 0F31 clr xmode
|
|
1406 EE40: 8EE686 ldx #xamsg
|
|
1407 EE43: BDE502 jsr outcount
|
|
1408 EE46: 9D0C jsr putcr
|
|
1409 EE48: 7E0292 jmp xerrvec
|
|
1410 EE4B:
|
|
1411 EE4B: 10FE02BD xerrhand lds savesp
|
|
1412 EE4F: 7EE579 jmp cmdline
|
|
1413 EE52:
|
|
1414 EE52: * This is the code for the X command, various XMODEM related commands.
|
|
1415 EE52: * Syntax: XSaddr,len XLaddr,len XX XOcrlf,filler, XSSaddr,len
|
|
1416 EE52: 8E0201 xmodem ldx #linebuf+1
|
|
1417 EE55: A680 lda ,x+
|
|
1418 EE57: 84DF anda #CASEMASK ;Convert to uppercase.
|
|
1419 EE59: 8158 cmpa #'X'
|
|
1420 EE5B: 274A beq xeq
|
|
1421 EE5D: 814C cmpa #'L'
|
|
1422 EE5F: 2733 beq xload
|
|
1423 EE61: 814F cmpa #'O'
|
|
1424 EE63: 2747 beq xopts
|
|
1425 EE65: 8153 cmpa #'S'
|
|
1426 EE67: 1026F76A lbne unk
|
|
1427 EE6B: A684 lda ,x
|
|
1428 EE6D: 84DF anda #CASEMASK
|
|
1429 EE6F: 8153 cmpa #'S'
|
|
1430 EE71: 271A beq xss
|
|
1431 EE73: CC0100 ldd #$100 ;XSaddr,len command.
|
|
1432 EE76: BDE753 jsr scan2parms ;Send binary through XMODEM
|
|
1433 EE79: 9D15 jsr xopenout
|
|
1434 EE7B: FE029D ldu addr
|
|
1435 EE7E: 10BE029F ldy length
|
|
1436 EE82: E6C0 xsbinloop ldb ,u+
|
|
1437 EE84: 9D03 jsr putchar
|
|
1438 EE86: 313F leay -1,y
|
|
1439 EE88: 26F8 bne xsbinloop ;Send all the bytes through XMODEM.
|
|
1440 EE8A: 7EE579 jmp cmdline
|
|
1441 EE8D: 3001 xss leax 1,x ;XSSaddr,len command.
|
|
1442 EE8F: 9D15 jsr xopenout ;Send Srecords through XMODEM
|
|
1443 EE91: 7EEAF0 jmp sendrec
|
|
1444 EE94: BDE730 xload jsr scanhex ;XLaddr command
|
|
1445 EE97: 1F02 tfr d,y ;Load binary through XMODEM
|
|
1446 EE99: 9D12 jsr xopenin
|
|
1447 EE9B: 9D00 xlodloop jsr getchar
|
|
1448 EE9D: 0D31 tst xmode ;File ended? then done
|
|
1449 EE9F: 1027F6D6 lbeq cmdline
|
|
1450 EEA3: E7A0 stb ,y+
|
|
1451 EEA5: 20F4 bra xlodloop
|
|
1452 EEA7: 9D12 xeq jsr xopenin ;XX command
|
|
1453 EEA9: 7EE579 jmp cmdline ;Execute commands received from XMODEM
|
|
1454 EEAC: CC001A xopts ldd #$1a
|
|
1455 EEAF: BDE753 jsr scan2parms
|
|
1456 EEB2: B6029E lda addr+1
|
|
1457 EEB5: B702BC sta xmcr
|
|
1458 EEB8: B602A0 lda length+1
|
|
1459 EEBB: B702BB sta filler
|
|
1460 EEBE: 7EE579 jmp cmdline
|
|
1461 EEC1:
|
|
1462 EEC1: * mnemonics table, ordered alphabetically.
|
|
1463 EEC1: * 5 bytes name, 1 byte category, 2 bytes opcode, 8 bytes total.
|
|
1464 EEC1: 4142582020 mnemtab fcc "ABX "
|
|
1465 EEC6: 00 fcb 0
|
|
1466 EEC7: 003A fdb $3a
|
|
1467 EEC9: 4144434120 fcc "ADCA "
|
|
1468 EECE: 07 fcb 7
|
|
1469 EECF: 0089 fdb $89
|
|
1470 EED1: 4144434220 fcc "ADCB "
|
|
1471 EED6: 07 fcb 7
|
|
1472 EED7: 00C9 fdb $c9
|
|
1473 EED9: 4144444120 fcc "ADDA "
|
|
1474 EEDE: 07 fcb 7
|
|
1475 EEDF: 008B fdb $8b
|
|
1476 EEE1: 4144444220 fcc "ADDB "
|
|
1477 EEE6: 07 fcb 7
|
|
1478 EEE7: 00CB fdb $cb
|
|
1479 EEE9: 4144444420 fcc "ADDD "
|
|
1480 EEEE: 08 fcb 8
|
|
1481 EEEF: 00C3 fdb $c3
|
|
1482 EEF1: 414E444120 fcc "ANDA "
|
|
1483 EEF6: 07 fcb 7
|
|
1484 EEF7: 0084 fdb $84
|
|
1485 EEF9: 414E444220 fcc "ANDB "
|
|
1486 EEFE: 07 fcb 7
|
|
1487 EEFF: 00C4 fdb $c4
|
|
1488 EF01: 414E444343 fcc "ANDCC"
|
|
1489 EF06: 02 fcb 2
|
|
1490 EF07: 001C fdb $1c
|
|
1491 EF09: 41534C2020 fcc "ASL "
|
|
1492 EF0E: 0A fcb 10
|
|
1493 EF0F: 0008 fdb $08
|
|
1494 EF11: 41534C4120 fcc "ASLA "
|
|
1495 EF16: 00 fcb 0
|
|
1496 EF17: 0048 fdb $48
|
|
1497 EF19: 41534C4220 fcc "ASLB "
|
|
1498 EF1E: 00 fcb 0
|
|
1499 EF1F: 0058 fdb $58
|
|
1500 EF21: 4153522020 fcc "ASR "
|
|
1501 EF26: 0A fcb 10
|
|
1502 EF27: 0007 fdb $07
|
|
1503 EF29: 4153524120 fcc "ASRA "
|
|
1504 EF2E: 00 fcb 0
|
|
1505 EF2F: 0047 fdb $47
|
|
1506 EF31: 4153524220 fcc "ASRB "
|
|
1507 EF36: 00 fcb 0
|
|
1508 EF37: 0057 fdb $57
|
|
1509 EF39: 4243432020 fcc "BCC "
|
|
1510 EF3E: 04 fcb 4
|
|
1511 EF3F: 0024 fdb $24
|
|
1512 EF41: 4243532020 fcc "BCS "
|
|
1513 EF46: 04 fcb 4
|
|
1514 EF47: 0025 fdb $25
|
|
1515 EF49: 4245512020 fcc "BEQ "
|
|
1516 EF4E: 04 fcb 4
|
|
1517 EF4F: 0027 fdb $27
|
|
1518 EF51: 4247452020 fcc "BGE "
|
|
1519 EF56: 04 fcb 4
|
|
1520 EF57: 002C fdb $2c
|
|
1521 EF59: 4247542020 fcc "BGT "
|
|
1522 EF5E: 04 fcb 4
|
|
1523 EF5F: 002E fdb $2e
|
|
1524 EF61: 4248492020 fcc "BHI "
|
|
1525 EF66: 04 fcb 4
|
|
1526 EF67: 0022 fdb $22
|
|
1527 EF69: 4248532020 fcc "BHS "
|
|
1528 EF6E: 04 fcb 4
|
|
1529 EF6F: 0024 fdb $24
|
|
1530 EF71: 4249544120 fcc "BITA "
|
|
1531 EF76: 07 fcb 7
|
|
1532 EF77: 0085 fdb $85
|
|
1533 EF79: 4249544220 fcc "BITB "
|
|
1534 EF7E: 07 fcb 7
|
|
1535 EF7F: 00C5 fdb $c5
|
|
1536 EF81: 424C452020 fcc "BLE "
|
|
1537 EF86: 04 fcb 4
|
|
1538 EF87: 002F fdb $2f
|
|
1539 EF89: 424C4F2020 fcc "BLO "
|
|
1540 EF8E: 04 fcb 4
|
|
1541 EF8F: 0025 fdb $25
|
|
1542 EF91: 424C532020 fcc "BLS "
|
|
1543 EF96: 04 fcb 4
|
|
1544 EF97: 0023 fdb $23
|
|
1545 EF99: 424C542020 fcc "BLT "
|
|
1546 EF9E: 04 fcb 4
|
|
1547 EF9F: 002D fdb $2d
|
|
1548 EFA1: 424D492020 fcc "BMI "
|
|
1549 EFA6: 04 fcb 4
|
|
1550 EFA7: 002B fdb $2b
|
|
1551 EFA9: 424E452020 fcc "BNE "
|
|
1552 EFAE: 04 fcb 4
|
|
1553 EFAF: 0026 fdb $26
|
|
1554 EFB1: 42504C2020 fcc "BPL "
|
|
1555 EFB6: 04 fcb 4
|
|
1556 EFB7: 002A fdb $2a
|
|
1557 EFB9: 4252412020 fcc "BRA "
|
|
1558 EFBE: 04 fcb 4
|
|
1559 EFBF: 0020 fdb $20
|
|
1560 EFC1: 42524E2020 fcc "BRN "
|
|
1561 EFC6: 04 fcb 4
|
|
1562 EFC7: 0021 fdb $21
|
|
1563 EFC9: 4253522020 mnembsr fcc "BSR "
|
|
1564 EFCE: 04 fcb 4
|
|
1565 EFCF: 008D fdb $8d
|
|
1566 EFD1: 4256432020 fcc "BVC "
|
|
1567 EFD6: 04 fcb 4
|
|
1568 EFD7: 0028 fdb $28
|
|
1569 EFD9: 4256532020 fcc "BVS "
|
|
1570 EFDE: 04 fcb 4
|
|
1571 EFDF: 0029 fdb $29
|
|
1572 EFE1: 434C522020 fcc "CLR "
|
|
1573 EFE6: 0A fcb 10
|
|
1574 EFE7: 000F fdb $0f
|
|
1575 EFE9: 434C524120 fcc "CLRA "
|
|
1576 EFEE: 00 fcb 0
|
|
1577 EFEF: 004F fdb $4f
|
|
1578 EFF1: 434C524220 fcc "CLRB "
|
|
1579 EFF6: 00 fcb 0
|
|
1580 EFF7: 005F fdb $5f
|
|
1581 EFF9: 434D504120 fcc "CMPA "
|
|
1582 EFFE: 07 fcb 7
|
|
1583 EFFF: 0081 fdb $81
|
|
1584 F001: 434D504220 fcc "CMPB "
|
|
1585 F006: 07 fcb 7
|
|
1586 F007: 00C1 fdb $c1
|
|
1587 F009: 434D504420 fcc "CMPD "
|
|
1588 F00E: 09 fcb 9
|
|
1589 F00F: 1083 fdb $1083
|
|
1590 F011: 434D505320 fcc "CMPS "
|
|
1591 F016: 09 fcb 9
|
|
1592 F017: 118C fdb $118c
|
|
1593 F019: 434D505520 fcc "CMPU "
|
|
1594 F01E: 09 fcb 9
|
|
1595 F01F: 1183 fdb $1183
|
|
1596 F021: 434D505820 fcc "CMPX "
|
|
1597 F026: 08 fcb 8
|
|
1598 F027: 008C fdb $8c
|
|
1599 F029: 434D505920 fcc "CMPY "
|
|
1600 F02E: 09 fcb 9
|
|
1601 F02F: 108C fdb $108c
|
|
1602 F031: 434F4D2020 fcc "COM "
|
|
1603 F036: 0A fcb 10
|
|
1604 F037: 0003 fdb $03
|
|
1605 F039: 434F4D4120 fcc "COMA "
|
|
1606 F03E: 00 fcb 0
|
|
1607 F03F: 0043 fdb $43
|
|
1608 F041: 434F4D4220 fcc "COMB "
|
|
1609 F046: 00 fcb 0
|
|
1610 F047: 0053 fdb $53
|
|
1611 F049: 4357414920 fcc "CWAI "
|
|
1612 F04E: 02 fcb 2
|
|
1613 F04F: 003C fdb $3c
|
|
1614 F051: 4441412020 fcc "DAA "
|
|
1615 F056: 00 fcb 0
|
|
1616 F057: 0019 fdb $19
|
|
1617 F059: 4445432020 fcc "DEC "
|
|
1618 F05E: 0A fcb 10
|
|
1619 F05F: 000A fdb $0a
|
|
1620 F061: 4445434120 fcc "DECA "
|
|
1621 F066: 00 fcb 0
|
|
1622 F067: 004A fdb $4a
|
|
1623 F069: 4445434220 fcc "DECB "
|
|
1624 F06E: 00 fcb 0
|
|
1625 F06F: 005A fdb $5a
|
|
1626 F071: 454F524120 fcc "EORA "
|
|
1627 F076: 07 fcb 7
|
|
1628 F077: 0088 fdb $88
|
|
1629 F079: 454F524220 fcc "EORB "
|
|
1630 F07E: 07 fcb 7
|
|
1631 F07F: 00C8 fdb $c8
|
|
1632 F081: 4551552020 fcc "EQU "
|
|
1633 F086: 0D fcb 13
|
|
1634 F087: 0005 fdb 5
|
|
1635 F089: 4558472020 fcc "EXG "
|
|
1636 F08E: 0B fcb 11
|
|
1637 F08F: 001E fdb $1e
|
|
1638 F091: 4643422020 mnemfcb fcc "FCB "
|
|
1639 F096: 0D fcb 13
|
|
1640 F097: 0007 fdb 7
|
|
1641 F099: 4643432020 fcc "FCC "
|
|
1642 F09E: 0D fcb 13
|
|
1643 F09F: 0008 fdb 8
|
|
1644 F0A1: 4644422020 fcc "FDB "
|
|
1645 F0A6: 0D fcb 13
|
|
1646 F0A7: 0009 fdb 9
|
|
1647 F0A9: 494E432020 fcc "INC "
|
|
1648 F0AE: 0A fcb 10
|
|
1649 F0AF: 000C fdb $0c
|
|
1650 F0B1: 494E434120 fcc "INCA "
|
|
1651 F0B6: 00 fcb 0
|
|
1652 F0B7: 004C fdb $4c
|
|
1653 F0B9: 494E434220 fcc "INCB "
|
|
1654 F0BE: 00 fcb 0
|
|
1655 F0BF: 005C fdb $5c
|
|
1656 F0C1: 4A4D502020 fcc "JMP "
|
|
1657 F0C6: 0A fcb 10
|
|
1658 F0C7: 000E fdb $0e
|
|
1659 F0C9: 4A53522020 mnemjsr fcc "JSR "
|
|
1660 F0CE: 08 fcb 8
|
|
1661 F0CF: 008D fdb $8d
|
|
1662 F0D1: 4C42434320 fcc "LBCC "
|
|
1663 F0D6: 05 fcb 5
|
|
1664 F0D7: 1024 fdb $1024
|
|
1665 F0D9: 4C42435320 fcc "LBCS "
|
|
1666 F0DE: 05 fcb 5
|
|
1667 F0DF: 1025 fdb $1025
|
|
1668 F0E1: 4C42455120 fcc "LBEQ "
|
|
1669 F0E6: 05 fcb 5
|
|
1670 F0E7: 1027 fdb $1027
|
|
1671 F0E9: 4C42474520 fcc "LBGE "
|
|
1672 F0EE: 05 fcb 5
|
|
1673 F0EF: 102C fdb $102c
|
|
1674 F0F1: 4C42475420 fcc "LBGT "
|
|
1675 F0F6: 05 fcb 5
|
|
1676 F0F7: 102E fdb $102e
|
|
1677 F0F9: 4C42484920 fcc "LBHI "
|
|
1678 F0FE: 05 fcb 5
|
|
1679 F0FF: 1022 fdb $1022
|
|
1680 F101: 4C42485320 fcc "LBHS "
|
|
1681 F106: 05 fcb 5
|
|
1682 F107: 1024 fdb $1024
|
|
1683 F109: 4C424C4520 fcc "LBLE "
|
|
1684 F10E: 05 fcb 5
|
|
1685 F10F: 102F fdb $102f
|
|
1686 F111: 4C424C4F20 fcc "LBLO "
|
|
1687 F116: 05 fcb 5
|
|
1688 F117: 1025 fdb $1025
|
|
1689 F119: 4C424C5320 fcc "LBLS "
|
|
1690 F11E: 05 fcb 5
|
|
1691 F11F: 1023 fdb $1023
|
|
1692 F121: 4C424C5420 fcc "LBLT "
|
|
1693 F126: 05 fcb 5
|
|
1694 F127: 102D fdb $102d
|
|
1695 F129: 4C424D4920 fcc "LBMI "
|
|
1696 F12E: 05 fcb 5
|
|
1697 F12F: 102B fdb $102b
|
|
1698 F131: 4C424E4520 fcc "LBNE "
|
|
1699 F136: 05 fcb 5
|
|
1700 F137: 1026 fdb $1026
|
|
1701 F139: 4C42504C20 fcc "LBPL "
|
|
1702 F13E: 05 fcb 5
|
|
1703 F13F: 102A fdb $102a
|
|
1704 F141: 4C42524120 fcc "LBRA "
|
|
1705 F146: 06 fcb 6
|
|
1706 F147: 0016 fdb $16
|
|
1707 F149: 4C42524E20 fcc "LBRN "
|
|
1708 F14E: 05 fcb 5
|
|
1709 F14F: 1021 fdb $1021
|
|
1710 F151: 4C42535220 fcc "LBSR "
|
|
1711 F156: 06 fcb 6
|
|
1712 F157: 0017 fdb $17
|
|
1713 F159: 4C42564320 fcc "LBVC "
|
|
1714 F15E: 05 fcb 5
|
|
1715 F15F: 1028 fdb $1028
|
|
1716 F161: 4C42565320 fcc "LBVS "
|
|
1717 F166: 05 fcb 5
|
|
1718 F167: 1029 fdb $1029
|
|
1719 F169: 4C44412020 fcc "LDA "
|
|
1720 F16E: 07 fcb 7
|
|
1721 F16F: 0086 fdb $86
|
|
1722 F171: 4C44422020 fcc "LDB "
|
|
1723 F176: 07 fcb 7
|
|
1724 F177: 00C6 fdb $c6
|
|
1725 F179: 4C44442020 fcc "LDD "
|
|
1726 F17E: 08 fcb 8
|
|
1727 F17F: 00CC fdb $cc
|
|
1728 F181: 4C44532020 fcc "LDS "
|
|
1729 F186: 09 fcb 9
|
|
1730 F187: 10CE fdb $10ce
|
|
1731 F189: 4C44552020 fcc "LDU "
|
|
1732 F18E: 08 fcb 8
|
|
1733 F18F: 00CE fdb $ce
|
|
1734 F191: 4C44582020 fcc "LDX "
|
|
1735 F196: 08 fcb 8
|
|
1736 F197: 008E fdb $8e
|
|
1737 F199: 4C44592020 fcc "LDY "
|
|
1738 F19E: 09 fcb 9
|
|
1739 F19F: 108E fdb $108e
|
|
1740 F1A1: 4C45415320 fcc "LEAS "
|
|
1741 F1A6: 03 fcb 3
|
|
1742 F1A7: 0032 fdb $32
|
|
1743 F1A9: 4C45415520 fcc "LEAU "
|
|
1744 F1AE: 03 fcb 3
|
|
1745 F1AF: 0033 fdb $33
|
|
1746 F1B1: 4C45415820 fcc "LEAX "
|
|
1747 F1B6: 03 fcb 3
|
|
1748 F1B7: 0030 fdb $30
|
|
1749 F1B9: 4C45415920 fcc "LEAY "
|
|
1750 F1BE: 03 fcb 3
|
|
1751 F1BF: 0031 fdb $31
|
|
1752 F1C1: 4C534C2020 fcc "LSL "
|
|
1753 F1C6: 0A fcb 10
|
|
1754 F1C7: 0008 fdb $08
|
|
1755 F1C9: 4C534C4120 fcc "LSLA "
|
|
1756 F1CE: 00 fcb 0
|
|
1757 F1CF: 0048 fdb $48
|
|
1758 F1D1: 4C534C4220 fcc "LSLB "
|
|
1759 F1D6: 00 fcb 0
|
|
1760 F1D7: 0058 fdb $58
|
|
1761 F1D9: 4C53522020 fcc "LSR "
|
|
1762 F1DE: 0A fcb 10
|
|
1763 F1DF: 0004 fdb $04
|
|
1764 F1E1: 4C53524120 fcc "LSRA "
|
|
1765 F1E6: 00 fcb 0
|
|
1766 F1E7: 0044 fdb $44
|
|
1767 F1E9: 4C53524220 fcc "LSRB "
|
|
1768 F1EE: 00 fcb 0
|
|
1769 F1EF: 0054 fdb $54
|
|
1770 F1F1: 4D554C2020 fcc "MUL "
|
|
1771 F1F6: 00 fcb 0
|
|
1772 F1F7: 003D fdb $3d
|
|
1773 F1F9: 4E45472020 fcc "NEG "
|
|
1774 F1FE: 0A fcb 10
|
|
1775 F1FF: 0000 fdb $00
|
|
1776 F201: 4E45474120 fcc "NEGA "
|
|
1777 F206: 00 fcb 0
|
|
1778 F207: 0040 fdb $40
|
|
1779 F209: 4E45474220 fcc "NEGB "
|
|
1780 F20E: 00 fcb 0
|
|
1781 F20F: 0050 fdb $50
|
|
1782 F211: 4E4F502020 fcc "NOP "
|
|
1783 F216: 00 fcb 0
|
|
1784 F217: 0012 fdb $12
|
|
1785 F219: 4F52412020 fcc "ORA "
|
|
1786 F21E: 07 fcb 7
|
|
1787 F21F: 008A fdb $8a
|
|
1788 F221: 4F52422020 fcc "ORB "
|
|
1789 F226: 07 fcb 7
|
|
1790 F227: 00CA fdb $ca
|
|
1791 F229: 4F52434320 fcc "ORCC "
|
|
1792 F22E: 02 fcb 2
|
|
1793 F22F: 001A fdb $1a
|
|
1794 F231: 4F52472020 fcc "ORG "
|
|
1795 F236: 0D fcb 13
|
|
1796 F237: 000C fdb 12
|
|
1797 F239: 5053485320 fcc "PSHS "
|
|
1798 F23E: 0C fcb 12
|
|
1799 F23F: 0034 fdb $34
|
|
1800 F241: 5053485520 fcc "PSHU "
|
|
1801 F246: 0C fcb 12
|
|
1802 F247: 0036 fdb $36
|
|
1803 F249: 50554C5320 fcc "PULS "
|
|
1804 F24E: 0C fcb 12
|
|
1805 F24F: 0035 fdb $35
|
|
1806 F251: 50554C5520 fcc "PULU "
|
|
1807 F256: 0C fcb 12
|
|
1808 F257: 0037 fdb $37
|
|
1809 F259: 524D422020 fcc "RMB "
|
|
1810 F25E: 0D fcb 13
|
|
1811 F25F: 0000 fdb 0
|
|
1812 F261: 524F4C2020 fcc "ROL "
|
|
1813 F266: 0A fcb 10
|
|
1814 F267: 0009 fdb $09
|
|
1815 F269: 524F4C4120 fcc "ROLA "
|
|
1816 F26E: 00 fcb 0
|
|
1817 F26F: 0049 fdb $49
|
|
1818 F271: 524F4C4220 fcc "ROLB "
|
|
1819 F276: 00 fcb 0
|
|
1820 F277: 0059 fdb $59
|
|
1821 F279: 524F522020 fcc "ROR "
|
|
1822 F27E: 0A fcb 10
|
|
1823 F27F: 0006 fdb $06
|
|
1824 F281: 524F524120 fcc "RORA "
|
|
1825 F286: 00 fcb 0
|
|
1826 F287: 0046 fdb $46
|
|
1827 F289: 524F524220 fcc "RORB "
|
|
1828 F28E: 00 fcb 0
|
|
1829 F28F: 0056 fdb $56
|
|
1830 F291: 5254492020 fcc "RTI "
|
|
1831 F296: 00 fcb 0
|
|
1832 F297: 003B fdb $3b
|
|
1833 F299: 5254532020 fcc "RTS "
|
|
1834 F29E: 00 fcb 0
|
|
1835 F29F: 0039 fdb $39
|
|
1836 F2A1: 5342434120 fcc "SBCA "
|
|
1837 F2A6: 07 fcb 7
|
|
1838 F2A7: 0082 fdb $82
|
|
1839 F2A9: 5342434220 fcc "SBCB "
|
|
1840 F2AE: 07 fcb 7
|
|
1841 F2AF: 00C2 fdb $c2
|
|
1842 F2B1: 5345542020 fcc "SET "
|
|
1843 F2B6: 0D fcb 13
|
|
1844 F2B7: 000F fdb 15
|
|
1845 F2B9: 5345544450 fcc "SETDP"
|
|
1846 F2BE: 0D fcb 13
|
|
1847 F2BF: 000E fdb 14
|
|
1848 F2C1: 5345582020 fcc "SEX "
|
|
1849 F2C6: 00 fcb 0
|
|
1850 F2C7: 001D fdb $1d
|
|
1851 F2C9: 5354412020 fcc "STA "
|
|
1852 F2CE: 07 fcb 7
|
|
1853 F2CF: 0087 fdb $87
|
|
1854 F2D1: 5354422020 fcc "STB "
|
|
1855 F2D6: 07 fcb 7
|
|
1856 F2D7: 00C7 fdb $c7
|
|
1857 F2D9: 5354442020 fcc "STD "
|
|
1858 F2DE: 08 fcb 8
|
|
1859 F2DF: 00CD fdb $cd
|
|
1860 F2E1: 5354532020 fcc "STS "
|
|
1861 F2E6: 09 fcb 9
|
|
1862 F2E7: 10CF fdb $10cf
|
|
1863 F2E9: 5354552020 fcc "STU "
|
|
1864 F2EE: 08 fcb 8
|
|
1865 F2EF: 00CF fdb $cf
|
|
1866 F2F1: 5354582020 fcc "STX "
|
|
1867 F2F6: 08 fcb 8
|
|
1868 F2F7: 008F fdb $8f
|
|
1869 F2F9: 5354592020 fcc "STY "
|
|
1870 F2FE: 09 fcb 9
|
|
1871 F2FF: 108F fdb $108f
|
|
1872 F301: 5355424120 fcc "SUBA "
|
|
1873 F306: 07 fcb 7
|
|
1874 F307: 0080 fdb $80
|
|
1875 F309: 5355424220 fcc "SUBB "
|
|
1876 F30E: 07 fcb 7
|
|
1877 F30F: 00C0 fdb $c0
|
|
1878 F311: 5355424420 fcc "SUBD "
|
|
1879 F316: 08 fcb 8
|
|
1880 F317: 0083 fdb $83
|
|
1881 F319: 5357492020 fcc "SWI "
|
|
1882 F31E: 00 fcb 0
|
|
1883 F31F: 003F fdb $3f
|
|
1884 F321: 5357493220 fcb "SWI2 "
|
|
1885 F326: 01 fcb 1
|
|
1886 F327: 103F fdb $103f
|
|
1887 F329: 5357493320 fcb "SWI3 "
|
|
1888 F32E: 01 fcb 1
|
|
1889 F32F: 113F fdb $113f
|
|
1890 F331: 53594E4320 fcc "SYNC "
|
|
1891 F336: 00 fcb 0
|
|
1892 F337: 0013 fdb $13
|
|
1893 F339: 5446522020 fcc "TFR "
|
|
1894 F33E: 0B fcb 11
|
|
1895 F33F: 001F fdb $1f
|
|
1896 F341: 5453542020 fcc "TST "
|
|
1897 F346: 0A fcb 10
|
|
1898 F347: 000D fdb $0d
|
|
1899 F349: 5453544120 fcc "TSTA "
|
|
1900 F34E: 00 fcb 0
|
|
1901 F34F: 004D fdb $4d
|
|
1902 F351: 5453544220 fcc "TSTB "
|
|
1903 F356: 00 fcb 0
|
|
1904 F357: 005D fdb $5d
|
|
1905 F359:
|
|
1906 0093: mnemsize equ (*-mnemtab)/8
|
|
1907 F359:
|
|
1908 F359: * Register table for PUSH/PULL and TFR/EXG instructions.
|
|
1909 F359: * 3 bytes for name, 1 for tfr/exg, 1 for push/pull, 5 total
|
|
1910 F359: 582020 asmregtab fcc "X "
|
|
1911 F35C: 0110 fcb $01,$10
|
|
1912 F35E: 592020 fcc "Y "
|
|
1913 F361: 0220 fcb $02,$20
|
|
1914 F363: 552020 aregu fcc "U "
|
|
1915 F366: 0340 fcb $03,$40
|
|
1916 F368: 532020 aregs fcc "S "
|
|
1917 F36B: 0440 fcb $04,$40
|
|
1918 F36D: 504320 fcc "PC "
|
|
1919 F370: 0580 fcb $05,$80
|
|
1920 F372: 412020 fcc "A "
|
|
1921 F375: 0802 fcb $08,$02
|
|
1922 F377: 422020 fcc "B "
|
|
1923 F37A: 0904 fcb $09,$04
|
|
1924 F37C: 442020 fcc "D "
|
|
1925 F37F: 0006 fcb $00,$06
|
|
1926 F381: 434320 fcc "CC "
|
|
1927 F384: 0A01 fcb $0a,$01
|
|
1928 F386: 434352 fcc "CCR"
|
|
1929 F389: 0A01 fcb $0a,$01
|
|
1930 F38B: 445020 fcc "DP "
|
|
1931 F38E: 0B08 fcb $0b,$08
|
|
1932 F390: 445052 fcc "DPR"
|
|
1933 F393: 0B08 fcb $0b,$08
|
|
1934 F395: 3F2020 reginval fcc "? "
|
|
1935 F398:
|
|
1936 F398: 58595553 ixregs fcc "XYUS"
|
|
1937 F39C:
|
|
1938 F39C: * opcode offsets to basic opcode, depends on first nibble.
|
|
1939 F39C: 000000000000A090 opcoffs fcb 0,0,0,0,0,0,-$60,-$70
|
|
1940 F3A4: 00F0E0D000F0E0D0 fcb 0,-$10,-$20,-$30,0,-$10,-$20,-$30
|
|
1941 F3AC: * mode depending on first nibble of opcode.
|
|
1942 F3AC: 0300000000000504 modetab fcb 3,0,0,0,0,0,5,4,1,3,5,4,1,3,5,4
|
|
1943 F3B5: 03050401030504
|
|
1944 F3BC: * mode depending on category code stored in mnemtab
|
|
1945 F3BC: 0000010506070701 modetab2 fcb 0,0,1,5,6,7,7,1,2,2,0,8,9
|
|
1946 F3C5: 02000809
|
|
1947 F3C9: * modes in this context: 0 no operands, 1 8-bit immediate, 2 16 bit imm,
|
|
1948 F3C9: * 3, 8-bit address, 4 16 bit address, 5 indexed with postbyte, 6 short
|
|
1949 F3C9: * relative, 7 long relative, 8 pushpul, 9 tftetx
|
|
1950 F3C9:
|
|
1951 F3C9: * Decode instruction pointed to by Y for disassembly (and to find out
|
|
1952 F3C9: * how long it is). On return, U points to appropriate mnemonic table entry,
|
|
1953 F3C9: * Y points past instruction.
|
|
1954 F3C9: * It's rather clumsy code, but we do want to reuse the same table
|
|
1955 F3C9: * as used with assembling.
|
|
1956 F3C9: 7F02BF disdecode clr prebyte
|
|
1957 F3CC: 7F02C3 clr amode
|
|
1958 F3CF: A6A0 lda ,y+
|
|
1959 F3D1: 8110 cmpa #$10
|
|
1960 F3D3: 2704 beq ddec1
|
|
1961 F3D5: 8111 cmpa #$11
|
|
1962 F3D7: 2605 bne ddec2
|
|
1963 F3D9: B702BF ddec1 sta prebyte ;Store $10 or $11 prebyte.
|
|
1964 F3DC: A6A0 lda ,y+ ;Get new opcode.
|
|
1965 F3DE: B702C1 ddec2 sta opcode
|
|
1966 F3E1: 44 lsra
|
|
1967 F3E2: 44 lsra
|
|
1968 F3E3: 44 lsra
|
|
1969 F3E4: 44 lsra ;Get high nibble.
|
|
1970 F3E5: 8EF3AC ldx #modetab
|
|
1971 F3E8: E686 ldb a,x
|
|
1972 F3EA: F702C3 stb amode
|
|
1973 F3ED: 8EF39C ldx #opcoffs
|
|
1974 F3F0: A686 lda a,x
|
|
1975 F3F2: BB02C1 adda opcode ;Add opcode offset to opcode.
|
|
1976 F3F5: B702C0 ddec4 sta opc1 ;Store the 'basis' opcode.
|
|
1977 F3F8: CEEEC1 ldu #mnemtab
|
|
1978 F3FB: 8E0093 ldx #mnemsize
|
|
1979 F3FE: C60D ddecloop ldb #13
|
|
1980 F400: E145 cmpb 5,u ;Compare category code with 13
|
|
1981 F402: 2708 beq ddec3 ;13=pseudo op, no valid opcode
|
|
1982 F404: FC02BF ldd prebyte
|
|
1983 F407: 10A346 cmpd 6,u
|
|
1984 F40A: 2722 beq ddecfound ;Opcode&prebyte agree, operation found.
|
|
1985 F40C: 3348 ddec3 leau 8,u ;point to next mnemonic
|
|
1986 F40E: 301F leax -1,x
|
|
1987 F410: 26EC bne ddecloop
|
|
1988 F412: CEF091 ldu #mnemfcb ;mnemonic not found, use FCB byte.
|
|
1989 F415: 8603 lda #3
|
|
1990 F417: B702C3 sta amode ;Store mode 3, 8 bit address.
|
|
1991 F41A: B602C1 lda opcode
|
|
1992 F41D: 7D02BF tst prebyte
|
|
1993 F420: 2708 beq ddec5
|
|
1994 F422: B602BF lda prebyte ;if it was the combination prebyte
|
|
1995 F425: 7F02BF clr prebyte ;and opcode that was not found,
|
|
1996 F428: 313F leay -1,y ;FCB just the prebyte
|
|
1997 F42A: B702C5 ddec5 sta operand+1 ;The byte must be stored as operand.
|
|
1998 F42D: 39 rts
|
|
1999 F42E: 1183EFC9 ddecfound cmpu #mnembsr
|
|
2000 F432: 260A bne ddec6
|
|
2001 F434: 868D lda #$8d ;Is it really the BSR opcode?
|
|
2002 F436: B102C1 cmpa opcode
|
|
2003 F439: 2703 beq ddec6
|
|
2004 F43B: CEF0C9 ldu #mnemjsr ;We mistakenly found BSR instead of JSR
|
|
2005 F43E: B602C3 ddec6 lda amode
|
|
2006 F441: 84FE anda #$FE
|
|
2007 F443: 260A bne ddec7
|
|
2008 F445: A645 lda 5,u ;nibble-dependent mode was 0 or 1,
|
|
2009 F447: 8EF3BC ldx #modetab2 ;use category dependent mode instead.
|
|
2010 F44A: A686 lda a,x
|
|
2011 F44C: B702C3 sta amode
|
|
2012 F44F: B602C3 ddec7 lda amode
|
|
2013 F452: 48 asla
|
|
2014 F453: 8EF458 ldx #disdectab
|
|
2015 F456: 6E96 jmp [a,x] ;jump dependent on definitive mode.
|
|
2016 F458: F492F48CF493F48C disdectab fdb noop,opdec1,opdec2,opdec1,opdec2,opdecidx
|
|
2017 F461: 93F49D
|
|
2018 F464: F48CF493F497F497 fdb opdec1,opdec2,opdecpb,opdecpb
|
|
2019 F46C: F492F492F492F492 disdectab1 fdb noop,noop,noop,noop,noop,noop,noop,noop
|
|
2020 F475: 92F492F492F492
|
|
2021 F47C: F48CF493F492F492 fdb opdec1,opdec2,noop,noop,opdec1,opdec2,noop,opdec2
|
|
2022 F485: 8CF493F492F493
|
|
2023 F48C: E6A0 opdec1 ldb ,y+
|
|
2024 F48E: 1D sex
|
|
2025 F48F: FD02C4 od1a std operand
|
|
2026 F492: 39 noop rts
|
|
2027 F493: ECA1 opdec2 ldd ,y++
|
|
2028 F495: 20F8 bra od1a
|
|
2029 F497: E6A0 opdecpb ldb ,y+
|
|
2030 F499: F702C2 odpa stb postbyte
|
|
2031 F49C: 39 rts
|
|
2032 F49D: E6A0 opdecidx ldb ,y+
|
|
2033 F49F: 2AF8 bpl odpa ;postbytes <$80 have no extra operands.
|
|
2034 F4A1: F702C2 stb postbyte
|
|
2035 F4A4: C40F andb #$0f
|
|
2036 F4A6: 58 aslb
|
|
2037 F4A7: 8EF46C ldx #disdectab1
|
|
2038 F4AA: 6E95 jmp [b,x]
|
|
2039 F4AC:
|
|
2040 F4AC: * Display disassembled instruction after the invocation of disdecode.
|
|
2041 F4AC: * U points to mnemonic table entry.
|
|
2042 F4AC: 1F31 disdisp tfr u,x
|
|
2043 F4AE: C605 ldb #5
|
|
2044 F4B0: 9D09 jsr putline ;Display the mnemonic.
|
|
2045 F4B2: C620 ldb #' '
|
|
2046 F4B4: 9D03 jsr putchar
|
|
2047 F4B6: B602C3 lda amode
|
|
2048 F4B9: 48 asla
|
|
2049 F4BA: 8EF4BF ldx #disdisptab
|
|
2050 F4BD: 6E96 jmp [a,x] ;Perform action dependent on mode.
|
|
2051 F4BF: F492F4D3F4D7F4E1 disdisptab fdb noop,disim8,disim16,disadr8,disadr16
|
|
2052 F4C8: D9
|
|
2053 F4C9: F599F4E9F4F7F557 fdb disidx,disrel8,disrel16,distfr,dispush
|
|
2054 F4D2: 0E
|
|
2055 F4D3: 8D29 disim8 bsr puthash
|
|
2056 F4D5: 200A bra disadr8
|
|
2057 F4D7: 8D25 disim16 bsr puthash
|
|
2058 F4D9: 8D27 disadr16 bsr putdol
|
|
2059 F4DB: FC02C4 ldd operand
|
|
2060 F4DE: 7EE6FF jmp outd
|
|
2061 F4E1: 8D1F disadr8 bsr putdol
|
|
2062 F4E3: B602C5 lda operand+1
|
|
2063 F4E6: 7EE6F1 jmp outbyte
|
|
2064 F4E9: 8D17 disrel8 bsr putdol
|
|
2065 F4EB: F602C5 ldb operand+1
|
|
2066 F4EE: 1D sex
|
|
2067 F4EF: 109F24 dr8a sty temp
|
|
2068 F4F2: D324 addd temp
|
|
2069 F4F4: 7EE6FF jmp outd
|
|
2070 F4F7: 8D09 disrel16 bsr putdol
|
|
2071 F4F9: FC02C4 ldd operand
|
|
2072 F4FC: 20F1 bra dr8a
|
|
2073 F4FE:
|
|
2074 F4FE: C623 puthash ldb #'#'
|
|
2075 F500: 0E03 jmp putchar
|
|
2076 F502: C624 putdol ldb #'$'
|
|
2077 F504: 0E03 jmp putchar
|
|
2078 F506: C62C putcomma ldb #','
|
|
2079 F508: 0E03 jmp putchar
|
|
2080 F50A: C620 putspace ldb #' '
|
|
2081 F50C: 0E03 jmp putchar
|
|
2082 F50E:
|
|
2083 F50E: C60C dispush ldb #12
|
|
2084 F510: 8EF359 ldx #asmregtab ;Walk through the register table.
|
|
2085 F513: 0F24 clr temp
|
|
2086 F515: B602C2 regloop lda postbyte
|
|
2087 F518: A404 anda 4,x
|
|
2088 F51A: 2735 beq dispush1 ;Is bit corresponding to reg set in postbyte
|
|
2089 F51C: 8CF363 cmpx #aregu
|
|
2090 F51F: 260B bne dispush3
|
|
2091 F521: 9725 sta temp+1
|
|
2092 F523: B602C1 lda opcode
|
|
2093 F526: 8402 anda #2
|
|
2094 F528: 2627 bne dispush1 ;no u register in pshu pulu.
|
|
2095 F52A: 9625 lda temp+1
|
|
2096 F52C: 8CF368 dispush3 cmpx #aregs
|
|
2097 F52F: 260B bne dispush4
|
|
2098 F531: 9725 sta temp+1
|
|
2099 F533: B602C1 lda opcode
|
|
2100 F536: 8402 anda #2
|
|
2101 F538: 2717 beq dispush1 ;no s register in pshs puls.
|
|
2102 F53A: 9625 lda temp+1
|
|
2103 F53C: 43 dispush4 coma
|
|
2104 F53D: B402C2 anda postbyte ;remove the bits from postbyte.
|
|
2105 F540: B702C2 sta postbyte
|
|
2106 F543: 3404 pshs b
|
|
2107 F545: 0D24 tst temp
|
|
2108 F547: 2702 beq dispush2
|
|
2109 F549: 8DBB bsr putcomma ;print comma after first register.
|
|
2110 F54B: 8D2B dispush2 bsr disregname
|
|
2111 F54D: 0C24 inc temp
|
|
2112 F54F: 3504 puls b
|
|
2113 F551: 3005 dispush1 leax 5,x
|
|
2114 F553: 5A decb
|
|
2115 F554: 26BF bne regloop
|
|
2116 F556: 39 rts
|
|
2117 F557:
|
|
2118 F557: B602C2 distfr lda postbyte
|
|
2119 F55A: 44 lsra
|
|
2120 F55B: 44 lsra
|
|
2121 F55C: 44 lsra
|
|
2122 F55D: 44 lsra
|
|
2123 F55E: 8D07 bsr distfrsub
|
|
2124 F560: 8DA4 bsr putcomma
|
|
2125 F562: B602C2 lda postbyte
|
|
2126 F565: 840F anda #$0f
|
|
2127 F567: C60C distfrsub ldb #12
|
|
2128 F569: 8EF359 ldx #asmregtab
|
|
2129 F56C: A103 distfrloop cmpa 3,x
|
|
2130 F56E: 2705 beq distfrend
|
|
2131 F570: 3005 leax 5,x
|
|
2132 F572: 5A decb
|
|
2133 F573: 26F7 bne distfrloop
|
|
2134 F575: 8D01 distfrend bsr disregname
|
|
2135 F577: 39 rts
|
|
2136 F578:
|
|
2137 F578: 8603 disregname lda #3
|
|
2138 F57A: 1F13 tfr x,u
|
|
2139 F57C: E6C0 drnloop ldb ,u+
|
|
2140 F57E: C120 cmpb #' '
|
|
2141 F580: 2705 beq drnend
|
|
2142 F582: 9D03 jsr putchar
|
|
2143 F584: 4A deca
|
|
2144 F585: 26F5 bne drnloop
|
|
2145 F587: 39 drnend rts
|
|
2146 F588:
|
|
2147 F588: B602C2 disidxreg lda postbyte
|
|
2148 F58B: 44 lsra
|
|
2149 F58C: 44 lsra
|
|
2150 F58D: 44 lsra
|
|
2151 F58E: 44 lsra
|
|
2152 F58F: 44 lsra
|
|
2153 F590: 8403 anda #3
|
|
2154 F592: 8EF398 ldx #ixregs
|
|
2155 F595: E686 ldb a,x
|
|
2156 F597: 0E03 jmp putchar
|
|
2157 F599:
|
|
2158 F599: 0F24 disidx clr temp
|
|
2159 F59B: B602C2 lda postbyte
|
|
2160 F59E: 2B23 bmi disidx1
|
|
2161 F5A0: 841F anda #$1f
|
|
2162 F5A2: 8510 bita #$10
|
|
2163 F5A4: 2605 bne negoffs
|
|
2164 F5A6: BDF692 jsr outdecbyte
|
|
2165 F5A9: 200A bra discomma
|
|
2166 F5AB: C62D negoffs ldb #'-'
|
|
2167 F5AD: 9D03 jsr putchar
|
|
2168 F5AF: 8AF0 ora #$f0
|
|
2169 F5B1: 40 nega
|
|
2170 F5B2: BDF692 jsr outdecbyte
|
|
2171 F5B5: BDF506 discomma jsr putcomma ;Display ,Xreg and terminating ]
|
|
2172 F5B8: 8DCE disindex bsr disidxreg
|
|
2173 F5BA: 0D24 disindir tst temp ;Display ] if indirect.
|
|
2174 F5BC: 2704 beq disidxend
|
|
2175 F5BE: C65D ldb #']'
|
|
2176 F5C0: 9D03 jsr putchar
|
|
2177 F5C2: 39 disidxend rts
|
|
2178 F5C3: 8510 disidx1 bita #$10
|
|
2179 F5C5: 2706 beq disidx2
|
|
2180 F5C7: C65B ldb #'['
|
|
2181 F5C9: 9D03 jsr putchar
|
|
2182 F5CB: 0C24 inc temp
|
|
2183 F5CD: B602C2 disidx2 lda postbyte
|
|
2184 F5D0: 840F anda #$0f
|
|
2185 F5D2: 48 asla
|
|
2186 F5D3: 8EF672 ldx #disidxtab
|
|
2187 F5D6: 6E96 jmp [a,x] ;Jump to routine for indexed mode
|
|
2188 F5D8: 8602 disadec2 lda #2
|
|
2189 F5DA: 2002 bra disadeca
|
|
2190 F5DC: 8601 disadec1 lda #1
|
|
2191 F5DE: BDF506 disadeca jsr putcomma
|
|
2192 F5E1: C62D disadloop ldb #'-'
|
|
2193 F5E3: 9D03 jsr putchar
|
|
2194 F5E5: 4A deca
|
|
2195 F5E6: 26F9 bne disadloop
|
|
2196 F5E8: 20CE bra disindex
|
|
2197 F5EA: 8602 disainc2 lda #2
|
|
2198 F5EC: 2002 bra disainca
|
|
2199 F5EE: 8601 disainc1 lda #1
|
|
2200 F5F0: 9725 disainca sta temp+1
|
|
2201 F5F2: BDF506 jsr putcomma
|
|
2202 F5F5: BDF588 jsr disidxreg
|
|
2203 F5F8: 9625 lda temp+1
|
|
2204 F5FA: C62B disailoop ldb #'+'
|
|
2205 F5FC: 9D03 jsr putchar
|
|
2206 F5FE: 4A deca
|
|
2207 F5FF: 26F9 bne disailoop
|
|
2208 F601: 7EF5BA jmp disindir
|
|
2209 F604: C641 disax ldb #'A'
|
|
2210 F606: 9D03 jsr putchar
|
|
2211 F608: 7EF5B5 jmp discomma
|
|
2212 F60B: C642 disbx ldb #'B'
|
|
2213 F60D: 9D03 jsr putchar
|
|
2214 F60F: 7EF5B5 jmp discomma
|
|
2215 F612: C644 disdx ldb #'D'
|
|
2216 F614: 9D03 jsr putchar
|
|
2217 F616: 7EF5B5 jmp discomma
|
|
2218 F619: C63F disinval ldb #'?'
|
|
2219 F61B: 9D03 jsr putchar
|
|
2220 F61D: 7EF5BA jmp disindir
|
|
2221 F620: B602C5 disnx lda operand+1
|
|
2222 F623: 2B09 bmi disnxneg
|
|
2223 F625: BDF502 disnx1 jsr putdol
|
|
2224 F628: BDE6F1 jsr outbyte
|
|
2225 F62B: 7EF5B5 jmp discomma
|
|
2226 F62E: C62D disnxneg ldb #'-'
|
|
2227 F630: 9D03 jsr putchar
|
|
2228 F632: 40 nega
|
|
2229 F633: 20F0 bra disnx1
|
|
2230 F635: BDF502 disnnx jsr putdol
|
|
2231 F638: FC02C4 ldd operand
|
|
2232 F63B: BDE6FF jsr outd
|
|
2233 F63E: 7EF5B5 jmp discomma
|
|
2234 F641: BDF502 disnpc jsr putdol
|
|
2235 F644: F602C5 ldb operand+1
|
|
2236 F647: 1D sex
|
|
2237 F648: 109F26 disnpca sty temp2
|
|
2238 F64B: D326 addd temp2
|
|
2239 F64D: BDE6FF jsr outd
|
|
2240 F650: 8EF66E ldx #commapc
|
|
2241 F653: C604 ldb #4
|
|
2242 F655: 9D09 jsr putline
|
|
2243 F657: 7EF5BA jmp disindir
|
|
2244 F65A: BDF502 disnnpc jsr putdol
|
|
2245 F65D: FC02C4 ldd operand
|
|
2246 F660: 20E6 bra disnpca
|
|
2247 F662: BDF502 disdirect jsr putdol
|
|
2248 F665: FC02C4 ldd operand
|
|
2249 F668: BDE6FF jsr outd
|
|
2250 F66B: 7EF5BA jmp disindir
|
|
2251 F66E:
|
|
2252 F66E: 2C504352 commapc fcc ",PCR"
|
|
2253 F672:
|
|
2254 F672: F5EEF5EAF5DCF5D8 disidxtab fdb disainc1,disainc2,disadec1,disadec2
|
|
2255 F67A: F5B5F60BF604F619 fdb discomma,disbx,disax,disinval
|
|
2256 F682: F620F635F619F612 fdb disnx,disnnx,disinval,disdx
|
|
2257 F68A: F641F65AF619F662 fdb disnpc,disnnpc,disinval,disdirect
|
|
2258 F692:
|
|
2259 F692: * Display byte A in decimal (0<=A<20)
|
|
2260 F692: 810A outdecbyte cmpa #10
|
|
2261 F694: 2506 blo odb1
|
|
2262 F696: 800A suba #10
|
|
2263 F698: C631 ldb #'1'
|
|
2264 F69A: 9D03 jsr putchar
|
|
2265 F69C: 8B30 odb1 adda #'0'
|
|
2266 F69E: 1F89 tfr a,b
|
|
2267 F6A0: 0E03 jmp putchar
|
|
2268 F6A2:
|
|
2269 F6A2: * This is the code for the U command, unassemble instructions in memory.
|
|
2270 F6A2: * Syntax: U or Uaddr or Uaddr,length
|
|
2271 F6A2: 8E0201 unasm ldx #linebuf+1
|
|
2272 F6A5: CC0014 ldd #20
|
|
2273 F6A8: BDE753 jsr scan2parms ;Scan address,length parameters.
|
|
2274 F6AB: FC029D ldd addr
|
|
2275 F6AE: F3029F addd length
|
|
2276 F6B1: FD029F std length
|
|
2277 F6B4: 10BE029D ldy addr
|
|
2278 F6B8: 1F20 unasmloop tfr y,d
|
|
2279 F6BA: BDE6FF jsr outd ;Display instruction address
|
|
2280 F6BD: BDF50A jsr putspace
|
|
2281 F6C0: 3420 pshs y
|
|
2282 F6C2: BDF3C9 jsr disdecode
|
|
2283 F6C5: 3510 puls x
|
|
2284 F6C7: 109F24 sty temp
|
|
2285 F6CA: 0F26 clr temp2
|
|
2286 F6CC: A680 unadishex lda ,x+
|
|
2287 F6CE: BDE6F1 jsr outbyte
|
|
2288 F6D1: 0C26 inc temp2
|
|
2289 F6D3: 0C26 inc temp2
|
|
2290 F6D5: 9C24 cmpx temp
|
|
2291 F6D7: 26F3 bne unadishex ;Display instruction bytes as hex.
|
|
2292 F6D9: C620 unadisspc ldb #' '
|
|
2293 F6DB: 9D03 jsr putchar
|
|
2294 F6DD: 0C26 inc temp2
|
|
2295 F6DF: 860B lda #11
|
|
2296 F6E1: 9126 cmpa temp2 ;Fill out with spaces to width 11.
|
|
2297 F6E3: 26F4 bne unadisspc
|
|
2298 F6E5: 26E5 bne unadishex
|
|
2299 F6E7: BDF4AC jsr disdisp ;Display disassembled instruction.
|
|
2300 F6EA: 9D0C jsr putcr
|
|
2301 F6EC: 10BC029F cmpy length
|
|
2302 F6F0: 23C6 bls unasmloop
|
|
2303 F6F2: 10BF029D sty addr
|
|
2304 F6F6: 7EE579 jmp cmdline
|
|
2305 F6F9:
|
|
2306 F6F9: * Simple 'expression evaluator' for assembler.
|
|
2307 F6F9: E684 expr ldb ,x
|
|
2308 F6FB: C12D cmpb #'-'
|
|
2309 F6FD: 2603 bne pos
|
|
2310 F6FF: 5F clrb
|
|
2311 F700: 3001 leax 1,x
|
|
2312 F702: 3404 pos pshs b
|
|
2313 F704: 8D11 bsr scanfact
|
|
2314 F706: 270C beq exprend1
|
|
2315 F708: 6DE0 tst ,s+
|
|
2316 F70A: 2607 bne exprend ;Was the minus sign there.
|
|
2317 F70C: 43 coma
|
|
2318 F70D: 53 comb
|
|
2319 F70E: C30001 addd #1
|
|
2320 F711: 1CFB andcc #$fb ;Clear Z flag for valid result.
|
|
2321 F713: 39 exprend rts
|
|
2322 F714: 3504 exprend1 puls b
|
|
2323 F716: 39 rts
|
|
2324 F717:
|
|
2325 F717: E680 scanfact ldb ,x+
|
|
2326 F719: C124 cmpb #'$'
|
|
2327 F71B: 1027F011 lbeq scanhex ;Hex number if starting with dollar.
|
|
2328 F71F: C127 cmpb #'''
|
|
2329 F721: 260E bne scandec ;char if starting with ' else decimal
|
|
2330 F723: E680 ldb ,x+
|
|
2331 F725: A684 lda ,x
|
|
2332 F727: 8127 cmpa #'''
|
|
2333 F729: 2602 bne scanchar2
|
|
2334 F72B: 3001 leax 1,x ;Increment past final quote if it's there.
|
|
2335 F72D: 4F scanchar2 clra
|
|
2336 F72E: 1CFB andcc #$fb ;Clear zero flag.
|
|
2337 F730: 39 rts
|
|
2338 F731: C130 scandec cmpb #'0'
|
|
2339 F733: 252F blo noexpr
|
|
2340 F735: C139 cmpb #'9'
|
|
2341 F737: 222B bhi noexpr
|
|
2342 F739: 0F24 clr temp
|
|
2343 F73B: 0F25 clr temp+1
|
|
2344 F73D: C030 scandloop subb #'0'
|
|
2345 F73F: 251C bcs sdexit
|
|
2346 F741: C10A cmpb #10
|
|
2347 F743: 2418 bcc sdexit
|
|
2348 F745: 3404 pshs b
|
|
2349 F747: DC24 ldd temp
|
|
2350 F749: 58 aslb
|
|
2351 F74A: 49 rola
|
|
2352 F74B: 3406 pshs d
|
|
2353 F74D: 58 aslb
|
|
2354 F74E: 49 rola
|
|
2355 F74F: 58 aslb
|
|
2356 F750: 49 rola
|
|
2357 F751: E3E1 addd ,s++ ;Multiply number by 10.
|
|
2358 F753: EBE0 addb ,s+
|
|
2359 F755: 8900 adca #0 ;Add digit to 10.
|
|
2360 F757: DD24 std temp
|
|
2361 F759: E680 ldb ,x+ ;Get next character.
|
|
2362 F75B: 20E0 bra scandloop
|
|
2363 F75D: DC24 sdexit ldd temp
|
|
2364 F75F: 301F leax -1,x
|
|
2365 F761: 1CFB andcc #$fb
|
|
2366 F763: 39 rts
|
|
2367 F764: 1A04 noexpr orcc #$04
|
|
2368 F766: 39 rts
|
|
2369 F767:
|
|
2370 F767: * Assemble the instruction pointed to by X.
|
|
2371 F767: * Fisrt stage: copy mnemonic to mnemonic buffer.
|
|
2372 F767: 8605 asminstr lda #5
|
|
2373 F769: CE02C6 ldu #mnembuf
|
|
2374 F76C: E680 mncploop ldb ,x+
|
|
2375 F76E: 2715 beq mncpexit
|
|
2376 F770: C120 cmpb #' '
|
|
2377 F772: 2711 beq mncpexit ;Mnemonic ends at first space or null
|
|
2378 F774: C4DF andb #CASEMASK
|
|
2379 F776: C141 cmpb #'A'
|
|
2380 F778: 2504 blo nolet
|
|
2381 F77A: C15A cmpb #'Z'
|
|
2382 F77C: 2302 bls mnemcp1 ;Capitalize letters, but only letters.
|
|
2383 F77E: E61F nolet ldb -1,x
|
|
2384 F780: E7C0 mnemcp1 stb ,u+ ;Copy to mnemonic buffer.
|
|
2385 F782: 4A deca
|
|
2386 F783: 26E7 bne mncploop
|
|
2387 F785: 4D mncpexit tsta
|
|
2388 F786: 2707 beq mncpdone
|
|
2389 F788: C620 ldb #' '
|
|
2390 F78A: E7C0 mnfilloop stb ,u+
|
|
2391 F78C: 4A deca
|
|
2392 F78D: 26FB bne mnfilloop ;Fill the rest of mnem buffer with spaces.
|
|
2393 F78F: * Second stage: look mnemonic up using binary search.
|
|
2394 F78F: 9F28 mncpdone stx temp3
|
|
2395 F791: 0F24 clr temp ;Low index=0
|
|
2396 F793: 8693 lda #mnemsize
|
|
2397 F795: 9725 sta temp+1 ;High index=mnemsize.
|
|
2398 F797: D625 bsrchloop ldb temp+1
|
|
2399 F799: C1FF cmpb #$ff
|
|
2400 F79B: 2739 beq invmnem ;lower limit -1?
|
|
2401 F79D: D124 cmpb temp
|
|
2402 F79F: 2535 blo invmnem ;hi index lower than low index?
|
|
2403 F7A1: 4F clra
|
|
2404 F7A2: DB24 addb temp ;Add indexes.
|
|
2405 F7A4: 8900 adca #0
|
|
2406 F7A6: 44 lsra
|
|
2407 F7A7: 56 rorb ;Divide by 2 to get average
|
|
2408 F7A8: D726 stb temp2
|
|
2409 F7AA: 58 aslb
|
|
2410 F7AB: 49 rola
|
|
2411 F7AC: 58 aslb
|
|
2412 F7AD: 49 rola
|
|
2413 F7AE: 58 aslb
|
|
2414 F7AF: 49 rola ;Multiply by 8 to get offset.
|
|
2415 F7B0: CEEEC1 ldu #mnemtab
|
|
2416 F7B3: 33CB leau d,u ;Add offset to table base
|
|
2417 F7B5: 1F32 tfr u,y
|
|
2418 F7B7: 8605 lda #5
|
|
2419 F7B9: 8E02C6 ldx #mnembuf
|
|
2420 F7BC: E680 bscmploop ldb ,x+
|
|
2421 F7BE: E1A0 cmpb ,y+
|
|
2422 F7C0: 2606 bne bscmpexit ;Characters don't match?
|
|
2423 F7C2: 4A deca
|
|
2424 F7C3: 26F7 bne bscmploop
|
|
2425 F7C5: 7EF7DC jmp mnemfound ;We found the mnemonic.
|
|
2426 F7C8: D626 bscmpexit ldb temp2
|
|
2427 F7CA: 2405 bcc bscmplower
|
|
2428 F7CC: 5A decb
|
|
2429 F7CD: D725 stb temp+1 ;mnembuf<table, adjust high limit.
|
|
2430 F7CF: 20C6 bra bsrchloop
|
|
2431 F7D1: 5C bscmplower incb
|
|
2432 F7D2: D724 stb temp ;mnembuf>table, adjust low limit.
|
|
2433 F7D4: 20C1 bra bsrchloop
|
|
2434 F7D6: 8EE69E invmnem ldx #invmmsg
|
|
2435 F7D9: 7E0298 jmp asmerrvec
|
|
2436 F7DC: * Stage 3: Perform routine depending on category code.
|
|
2437 F7DC: 7F02CC mnemfound clr uncert
|
|
2438 F7DF: 10BE029D ldy addr
|
|
2439 F7E3: A645 lda 5,u
|
|
2440 F7E5: 48 asla
|
|
2441 F7E6: 8EF7F0 ldx #asmtab
|
|
2442 F7E9: AD96 jsr [a,x]
|
|
2443 F7EB: 10BF029D sty addr
|
|
2444 F7EF: 39 rts
|
|
2445 F7F0: F812F816F81AF82F asmtab fdb onebyte,twobyte,immbyte,lea
|
|
2446 F7F8: F855F868F87BF882 fdb sbranch,lbranch,lbra,acc8
|
|
2447 F800: F893F8A4F8B7F8D9 fdb dreg1,dreg2,oneaddr,tfrexg
|
|
2448 F808: F902F928 fdb pushpul,pseudo
|
|
2449 F80C:
|
|
2450 F80C: E7A0 putbyte stb ,y+
|
|
2451 F80E: 39 rts
|
|
2452 F80F: EDA1 putword std ,y++
|
|
2453 F811: 39 rts
|
|
2454 F812:
|
|
2455 F812: E647 onebyte ldb 7,u ;Cat 0, one byte opcode w/o operands RTS
|
|
2456 F814: 20F6 bra putbyte
|
|
2457 F816: EC46 twobyte ldd 6,u ;Cat 1, two byte opcode w/o operands SWI2
|
|
2458 F818: 20F5 bra putword
|
|
2459 F81A: E647 immbyte ldb 7,u ;Cat 2, opcode w/ immdiate operand ANDCC
|
|
2460 F81C: 8DEE bsr putbyte
|
|
2461 F81E: BDF94B jsr scanops
|
|
2462 F821: F602C3 ldb amode
|
|
2463 F824: C101 cmpb #1
|
|
2464 F826: 1026038A lbne moderr
|
|
2465 F82A: F602C5 ldb operand+1
|
|
2466 F82D: 20DD bra putbyte
|
|
2467 F82F: E647 lea ldb 7,u ;Cat 3, LEA
|
|
2468 F831: 8DD9 bsr putbyte
|
|
2469 F833: BDF94B jsr scanops
|
|
2470 F836: B602C3 lda amode
|
|
2471 F839: 8101 cmpa #1
|
|
2472 F83B: 10270375 lbeq moderr ;No immediate w/ lea
|
|
2473 F83F: 8103 cmpa #3
|
|
2474 F841: 102402BE lbhs doaddr
|
|
2475 F845: BDFAF6 jsr set3
|
|
2476 F848: 868F lda #$8f
|
|
2477 F84A: B702C2 sta postbyte
|
|
2478 F84D: 8602 lda #2
|
|
2479 F84F: B702CB sta opsize ;Use 8F nn nn for direct mode.
|
|
2480 F852: 7EFB03 jmp doaddr
|
|
2481 F855: E647 sbranch ldb 7,u ;Cat 4, short branch instructions
|
|
2482 F857: 8DB3 bsr putbyte
|
|
2483 F859: BDF943 jsr startop
|
|
2484 F85C: 301F leax -1,x
|
|
2485 F85E: BD0295 jsr exprvec
|
|
2486 F861: 10270349 lbeq exprerr
|
|
2487 F865: 7EFB6C jmp shortrel
|
|
2488 F868: EC46 lbranch ldd 6,u ;Cat 5, long brach w/ two byte opcode
|
|
2489 F86A: 8DA3 bsr putword
|
|
2490 F86C: BDF943 lbra1 jsr startop
|
|
2491 F86F: 301F leax -1,x
|
|
2492 F871: BD0295 jsr exprvec
|
|
2493 F874: 10270336 lbeq exprerr
|
|
2494 F878: 7EFB90 jmp longrel
|
|
2495 F87B: E647 lbra ldb 7,u ;Cat 6, long branch w/ one byte opcode.
|
|
2496 F87D: BDF80C jsr putbyte
|
|
2497 F880: 20EA bra lbra1
|
|
2498 F882: 8601 acc8 lda #1 ;Cat 7, 8-bit two operand instructions ADDA
|
|
2499 F884: B702CB sta opsize
|
|
2500 F887: BDF94B jsr scanops
|
|
2501 F88A: BDF929 jsr adjopc
|
|
2502 F88D: BDF80C jsr putbyte
|
|
2503 F890: 7EFB03 jmp doaddr
|
|
2504 F893: 8602 dreg1 lda #2 ;Cat 8, 16-bit 2operand insns 1byte opc LDX
|
|
2505 F895: B702CB sta opsize
|
|
2506 F898: BDF94B jsr scanops
|
|
2507 F89B: BDF929 jsr adjopc
|
|
2508 F89E: BDF80C jsr putbyte
|
|
2509 F8A1: 7EFB03 jmp doaddr
|
|
2510 F8A4: 8602 dreg2 lda #2 ;Cat 9, 16-bit 2operand insns 2byte opc LDY
|
|
2511 F8A6: B702CB sta opsize
|
|
2512 F8A9: BDF94B jsr scanops
|
|
2513 F8AC: BDF929 jsr adjopc
|
|
2514 F8AF: A646 lda 6,u
|
|
2515 F8B1: BDF80F jsr putword
|
|
2516 F8B4: 7EFB03 jmp doaddr
|
|
2517 F8B7: BDF94B oneaddr jsr scanops ;Cat 10, one-operand insns NEG..CLR
|
|
2518 F8BA: E647 ldb 7,u
|
|
2519 F8BC: B602C3 lda amode
|
|
2520 F8BF: 8101 cmpa #1
|
|
2521 F8C1: 102702EF lbeq moderr ;No immediate mode
|
|
2522 F8C5: 8103 cmpa #3
|
|
2523 F8C7: 2408 bhs oaind ;indexed etc
|
|
2524 F8C9: B602CB lda opsize
|
|
2525 F8CC: 4A deca
|
|
2526 F8CD: 2704 beq oadir
|
|
2527 F8CF: CB10 addb #$10 ;Add $70 for extended direct.
|
|
2528 F8D1: CB60 oaind addb #$60 ;And $60 for indexed etc.
|
|
2529 F8D3: BDF80C oadir jsr putbyte ;And nothing for direct8.
|
|
2530 F8D6: 7EFB03 jmp doaddr
|
|
2531 F8D9: BDF943 tfrexg jsr startop ;Cat 11, TFR and EXG
|
|
2532 F8DC: 301F leax -1,x
|
|
2533 F8DE: E647 ldb 7,u
|
|
2534 F8E0: BDF80C jsr putbyte
|
|
2535 F8E3: BDFBCC jsr findreg
|
|
2536 F8E6: E6C4 ldb ,u
|
|
2537 F8E8: 58 aslb
|
|
2538 F8E9: 58 aslb
|
|
2539 F8EA: 58 aslb
|
|
2540 F8EB: 58 aslb
|
|
2541 F8EC: F702C2 stb postbyte
|
|
2542 F8EF: E680 ldb ,x+
|
|
2543 F8F1: C12C cmpb #','
|
|
2544 F8F3: 102602BD lbne moderr
|
|
2545 F8F7: BDFBCC jsr findreg
|
|
2546 F8FA: E6C4 ldb ,u
|
|
2547 F8FC: FA02C2 orb postbyte
|
|
2548 F8FF: 7EF80C jmp putbyte
|
|
2549 F902: BDF943 pushpul jsr startop ;Cat 12, PSH and PUL
|
|
2550 F905: 301F leax -1,x
|
|
2551 F907: E647 ldb 7,u
|
|
2552 F909: BDF80C jsr putbyte
|
|
2553 F90C: 7F02C2 clr postbyte
|
|
2554 F90F: BDFBCC pploop jsr findreg
|
|
2555 F912: E641 ldb 1,u
|
|
2556 F914: FA02C2 orb postbyte
|
|
2557 F917: F702C2 stb postbyte
|
|
2558 F91A: E680 ldb ,x+
|
|
2559 F91C: C12C cmpb #','
|
|
2560 F91E: 27EF beq pploop
|
|
2561 F920: 301F leax -1,x
|
|
2562 F922: F602C2 ldb postbyte
|
|
2563 F925: 7EF80C jmp putbyte
|
|
2564 F928: pseudo ;Cat 13, pseudo oeprations
|
|
2565 F928: 39 rts
|
|
2566 F929:
|
|
2567 F929: * Adjust opcdoe depending on mode (in $80-$FF range)
|
|
2568 F929: E647 adjopc ldb 7,u
|
|
2569 F92B: B602C3 lda amode
|
|
2570 F92E: 8102 cmpa #2
|
|
2571 F930: 2708 beq adjdir ;Is it direct?
|
|
2572 F932: 8103 cmpa #3
|
|
2573 F934: 2401 bhs adjind ;Indexed etc?
|
|
2574 F936: 39 rts ;Not, then immediate, no adjust.
|
|
2575 F937: CB20 adjind addb #$20 ;Add $20 to opcode for indexed etc modes.
|
|
2576 F939: 39 rts
|
|
2577 F93A: CB10 adjdir addb #$10 ;Add $10 to opcode for direct8
|
|
2578 F93C: B602CB lda opsize
|
|
2579 F93F: 4A deca
|
|
2580 F940: 26F5 bne adjind ;If opsize=2, add another $20 for extended16
|
|
2581 F942: 39 rts
|
|
2582 F943:
|
|
2583 F943: * Start scanning of operands.
|
|
2584 F943: 9E28 startop ldx temp3
|
|
2585 F945: 7F02C3 clr amode
|
|
2586 F948: 7EE708 jmp skipspace
|
|
2587 F94B:
|
|
2588 F94B: * amode settings in assembler: 1=immediate, 2=direct/extended, 3=indexed
|
|
2589 F94B: * etc. 4=pc relative, 5=indirect, 6=pcrelative and indirect.
|
|
2590 F94B:
|
|
2591 F94B: * This subroutine scans the assembler operands.
|
|
2592 F94B: 8DF6 scanops bsr startop
|
|
2593 F94D: C15B cmpb #'['
|
|
2594 F94F: 2607 bne noindir
|
|
2595 F951: 8605 lda #5 ;operand starts with [, then indirect.
|
|
2596 F953: B702C3 sta amode
|
|
2597 F956: E680 ldb ,x+
|
|
2598 F958: C123 noindir cmpb #'#'
|
|
2599 F95A: 10270087 lbeq doimm
|
|
2600 F95E: C12C cmpb #','
|
|
2601 F960: 1027009A lbeq dospecial
|
|
2602 F964: C4DF andb #CASEMASK ;Convert to uppercase.
|
|
2603 F966: 8686 lda #$86
|
|
2604 F968: C141 cmpb #'A'
|
|
2605 F96A: 270C beq scanacidx
|
|
2606 F96C: 8685 lda #$85
|
|
2607 F96E: C142 cmpb #'B'
|
|
2608 F970: 2706 beq scanacidx
|
|
2609 F972: 868B lda #$8B
|
|
2610 F974: C144 cmpb #'D'
|
|
2611 F976: 2616 bne scanlab
|
|
2612 F978: E680 scanacidx ldb ,x+ ;Could it be A,X B,X or D,X
|
|
2613 F97A: C12C cmpb #','
|
|
2614 F97C: 260E bne nocomma
|
|
2615 F97E: B702C2 sta postbyte
|
|
2616 F981: 7F02CB clr opsize
|
|
2617 F984: BDFAF6 jsr set3
|
|
2618 F987: BDFAD8 jsr scanixreg
|
|
2619 F98A: 2041 bra scanend
|
|
2620 F98C: 301F nocomma leax -1,x
|
|
2621 F98E: 301F scanlab leax -1,x ;Point to the start of the operand
|
|
2622 F990: BD0295 jsr exprvec
|
|
2623 F993: 10270217 lbeq exprerr
|
|
2624 F997: FD02C4 std operand
|
|
2625 F99A: 7D02CC tst uncert
|
|
2626 F99D: 2609 bne opsz2 ;Go for extended if operand unknown.
|
|
2627 F99F: B302CD subd dpsetting
|
|
2628 F9A2: 4D tsta ;Can we use 8-bit operand?
|
|
2629 F9A3: 2603 bne opsz2
|
|
2630 F9A5: 4C inca
|
|
2631 F9A6: 2002 bra opsz1
|
|
2632 F9A8: 8602 opsz2 lda #2
|
|
2633 F9AA: B702CB opsz1 sta opsize ;Set opsize depending on magnitude of op.
|
|
2634 F9AD: B602C3 lda amode
|
|
2635 F9B0: 8105 cmpa #5
|
|
2636 F9B2: 260C bne opsz3 ;Or was it indirect.
|
|
2637 F9B4: 8602 lda #2 ;Then we have postbyte and opsize=2
|
|
2638 F9B6: B702CB sta opsize
|
|
2639 F9B9: 868F lda #$8F
|
|
2640 F9BB: B702C2 sta postbyte
|
|
2641 F9BE: 2005 bra opsz4
|
|
2642 F9C0: 8602 opsz3 lda #2
|
|
2643 F9C2: B702C3 sta amode ;Assume direct or absolute addressing
|
|
2644 F9C5: E680 opsz4 ldb ,x+
|
|
2645 F9C7: C12C cmpb #','
|
|
2646 F9C9: 10270086 lbeq doindex ;If followed by, then indexed.
|
|
2647 F9CD: B602C3 scanend lda amode
|
|
2648 F9D0: 8105 cmpa #5
|
|
2649 F9D2: 2510 blo scanend2 ;Was it an indirect mode?
|
|
2650 F9D4: B602C2 lda postbyte
|
|
2651 F9D7: 8A10 ora #$10 ;Set indirect bit.
|
|
2652 F9D9: B702C2 sta postbyte
|
|
2653 F9DC: E680 ldb ,x+
|
|
2654 F9DE: C15D cmpb #']' ;Check for the other ]
|
|
2655 F9E0: 102701D0 lbeq moderr
|
|
2656 F9E4: 39 scanend2 rts
|
|
2657 F9E5: BD0295 doimm jsr exprvec ;Immediate addressing.
|
|
2658 F9E8: 102701C2 lbeq exprerr
|
|
2659 F9EC: FD02C4 std operand
|
|
2660 F9EF: B602C3 lda amode
|
|
2661 F9F2: 8105 cmpa #5
|
|
2662 F9F4: 102701BC lbeq moderr ;Inirect mode w/ imm is illegal.
|
|
2663 F9F8: 8601 lda #$01
|
|
2664 F9FA: B702C3 sta amode
|
|
2665 F9FD: 39 rts
|
|
2666 F9FE: BDFAF6 dospecial jsr set3
|
|
2667 FA01: 7F02CB clr opsize
|
|
2668 FA04: 4F clra
|
|
2669 FA05: E680 adecloop ldb ,x+
|
|
2670 FA07: C12D cmpb #'-'
|
|
2671 FA09: 2603 bne adecend
|
|
2672 FA0B: 4C inca ;Count the - signs for autodecrement.
|
|
2673 FA0C: 20F7 bra adecloop
|
|
2674 FA0E: 301F adecend leax -1,x
|
|
2675 FA10: 8102 cmpa #2
|
|
2676 FA12: 1022019E lbhi moderr
|
|
2677 FA16: 4D tsta
|
|
2678 FA17: 262F bne autodec
|
|
2679 FA19: 7F02C2 clr postbyte
|
|
2680 FA1C: BDFAD8 jsr scanixreg
|
|
2681 FA1F: 4F clra
|
|
2682 FA20: E680 aincloop ldb ,x+
|
|
2683 FA22: C12B cmpb #'+'
|
|
2684 FA24: 2603 bne aincend
|
|
2685 FA26: 4C inca
|
|
2686 FA27: 20F7 bra aincloop ;Count the + signs for autoincrement.
|
|
2687 FA29: 301F aincend leax -1,x
|
|
2688 FA2B: 8102 cmpa #2
|
|
2689 FA2D: 10220183 lbhi moderr
|
|
2690 FA31: 4D tsta
|
|
2691 FA32: 260A bne autoinc
|
|
2692 FA34: 8684 lda #$84
|
|
2693 FA36: BA02C2 ora postbyte
|
|
2694 FA39: B702C2 sta postbyte
|
|
2695 FA3C: 208F bra scanend
|
|
2696 FA3E: 8B7F autoinc adda #$7f
|
|
2697 FA40: BA02C2 ora postbyte
|
|
2698 FA43: B702C2 sta postbyte
|
|
2699 FA46: 2085 bra scanend
|
|
2700 FA48: 8B81 autodec adda #$81
|
|
2701 FA4A: B702C2 sta postbyte
|
|
2702 FA4D: BDFAD8 jsr scanixreg
|
|
2703 FA50: 16FF7A lbra scanend
|
|
2704 FA53: 7F02C2 doindex clr postbyte
|
|
2705 FA56: BDFAF6 jsr set3
|
|
2706 FA59: E680 ldb ,x+
|
|
2707 FA5B: C4DF andb #CASEMASK ;Convert to uppercase.
|
|
2708 FA5D: C150 cmpb #'P'
|
|
2709 FA5F: 10270057 lbeq dopcrel ;Check for PC relative.
|
|
2710 FA63: 301F leax -1,x
|
|
2711 FA65: 7F02CB clr opsize
|
|
2712 FA68: 8D6E bsr scanixreg
|
|
2713 FA6A: FC02C4 ldd operand
|
|
2714 FA6D: 7D02CC tst uncert
|
|
2715 FA70: 2638 bne longindex ;Go for long index if operand unknown.
|
|
2716 FA72: 1083FFF0 cmpd #-16
|
|
2717 FA76: 2D18 blt shortindex
|
|
2718 FA78: 1083000F cmpd #15
|
|
2719 FA7C: 2E12 bgt shortindex
|
|
2720 FA7E: B602C3 lda amode
|
|
2721 FA81: 8105 cmpa #5
|
|
2722 FA83: 2717 beq shortind1 ;Indirect may not be 5-bit index
|
|
2723 FA85: ;It's a five-bit index.
|
|
2724 FA85: C41F andb #$1f
|
|
2725 FA87: FA02C2 orb postbyte
|
|
2726 FA8A: F702C2 stb postbyte
|
|
2727 FA8D: 16FF3D lbra scanend
|
|
2728 FA90: 1083FF80 shortindex cmpd #-128
|
|
2729 FA94: 2D14 blt longindex
|
|
2730 FA96: 1083007F cmpd #127
|
|
2731 FA9A: 2E0E bgt longindex
|
|
2732 FA9C: 7C02CB shortind1 inc opsize
|
|
2733 FA9F: C688 ldb #$88
|
|
2734 FAA1: FA02C2 orb postbyte
|
|
2735 FAA4: F702C2 stb postbyte
|
|
2736 FAA7: 16FF23 lbra scanend
|
|
2737 FAAA: 8602 longindex lda #$2
|
|
2738 FAAC: B702CB sta opsize
|
|
2739 FAAF: C689 ldb #$89
|
|
2740 FAB1: FA02C2 orb postbyte
|
|
2741 FAB4: F702C2 stb postbyte
|
|
2742 FAB7: 16FF13 lbra scanend
|
|
2743 FABA: E680 dopcrel ldb ,x+
|
|
2744 FABC: C4DF andb #CASEMASK ;Convert to uppercase
|
|
2745 FABE: C143 cmpb #'C'
|
|
2746 FAC0: 2506 blo pcrelend
|
|
2747 FAC2: C152 cmpb #'R'
|
|
2748 FAC4: 2202 bhi pcrelend
|
|
2749 FAC6: 20F2 bra dopcrel ;Scan past the ,PCR
|
|
2750 FAC8: 301F pcrelend leax -1,x
|
|
2751 FACA: C68C ldb #$8C
|
|
2752 FACC: FA02C2 orb postbyte ;Set postbyte
|
|
2753 FACF: F702C2 stb postbyte
|
|
2754 FAD2: 7C02C3 inc amode ;Set addr mode to PCR
|
|
2755 FAD5: 16FEF5 lbra scanend
|
|
2756 FAD8:
|
|
2757 FAD8: * Scan for one of the 4 index registers and adjust postbyte.
|
|
2758 FAD8: E680 scanixreg ldb ,x+
|
|
2759 FADA: C4DF andb #CASEMASK ;Convert to uppercase.
|
|
2760 FADC: 3410 pshs x
|
|
2761 FADE: 8EF398 ldx #ixregs
|
|
2762 FAE1: 4F clra
|
|
2763 FAE2: E180 scidxloop cmpb ,x+
|
|
2764 FAE4: 2707 beq ixfound
|
|
2765 FAE6: 8B20 adda #$20
|
|
2766 FAE8: 2AF8 bpl scidxloop
|
|
2767 FAEA: 7EFBB4 jmp moderr ;Index register not found where expected.
|
|
2768 FAED: BA02C2 ixfound ora postbyte
|
|
2769 FAF0: B702C2 sta postbyte ;Set index reg bits in postbyte.
|
|
2770 FAF3: 3510 puls x
|
|
2771 FAF5: 39 rts
|
|
2772 FAF6:
|
|
2773 FAF6: * This routine sets amode to 3, if it was less.
|
|
2774 FAF6: B602C3 set3 lda amode
|
|
2775 FAF9: 8103 cmpa #3
|
|
2776 FAFB: 2405 bhs set3a
|
|
2777 FAFD: 8603 lda #3
|
|
2778 FAFF: B702C3 sta amode
|
|
2779 FB02: 39 set3a rts
|
|
2780 FB03:
|
|
2781 FB03: * This subroutine lays down the address.
|
|
2782 FB03: B602C3 doaddr lda amode
|
|
2783 FB06: 8103 cmpa #3
|
|
2784 FB08: 250D blo doa1
|
|
2785 FB0A: F602C2 ldb postbyte
|
|
2786 FB0D: BDF80C jsr putbyte
|
|
2787 FB10: B602C3 lda amode
|
|
2788 FB13: 8401 anda #1
|
|
2789 FB15: 2715 beq doapcrel ;pc rel modes.
|
|
2790 FB17: B602CB doa1 lda opsize
|
|
2791 FB1A: 4D tsta
|
|
2792 FB1B: 27E5 beq set3a
|
|
2793 FB1D: 4A deca
|
|
2794 FB1E: 2706 beq doa2
|
|
2795 FB20: FC02C4 ldd operand
|
|
2796 FB23: 7EF80F jmp putword
|
|
2797 FB26: F602C5 doa2 ldb operand+1
|
|
2798 FB29: 7EF80C jmp putbyte
|
|
2799 FB2C: 10BF029D doapcrel sty addr
|
|
2800 FB30: FC02C4 ldd operand
|
|
2801 FB33: B3029D subd addr
|
|
2802 FB36: 830001 subd #1
|
|
2803 FB39: 7D02CC tst uncert
|
|
2804 FB3C: 2614 bne pcrlong
|
|
2805 FB3E: 1083FF80 cmpd #-128
|
|
2806 FB42: 2D0E blt pcrlong
|
|
2807 FB44: 1083FF81 cmpd #-127
|
|
2808 FB48: 2E08 bgt pcrlong
|
|
2809 FB4A: 8601 lda #1
|
|
2810 FB4C: B702CB sta opsize
|
|
2811 FB4F: 7EF80C jmp putbyte
|
|
2812 FB52: 830001 pcrlong subd #1
|
|
2813 FB55: 313F leay -1,y
|
|
2814 FB57: 7C02C2 inc postbyte
|
|
2815 FB5A: 3406 pshs d
|
|
2816 FB5C: F602C2 ldb postbyte
|
|
2817 FB5F: BDF80C jsr putbyte
|
|
2818 FB62: 8602 lda #2
|
|
2819 FB64: B702CB sta opsize
|
|
2820 FB67: 3506 puls d
|
|
2821 FB69: 7EF80F jmp putword
|
|
2822 FB6C:
|
|
2823 FB6C: * This routine checks and lays down short relative address.
|
|
2824 FB6C: 10BF029D shortrel sty addr
|
|
2825 FB70: B3029D subd addr
|
|
2826 FB73: 830001 subd #1
|
|
2827 FB76: 1083FF80 cmpd #-128
|
|
2828 FB7A: 2D2C blt brerr
|
|
2829 FB7C: 1083007F cmpd #127
|
|
2830 FB80: 2E26 bgt brerr
|
|
2831 FB82: BDF80C jsr putbyte
|
|
2832 FB85: 8604 lda #4
|
|
2833 FB87: B702C3 sta amode
|
|
2834 FB8A: 8601 lda #1
|
|
2835 FB8C: B702CB sta opsize
|
|
2836 FB8F: 39 rts
|
|
2837 FB90: * This routine lays down long relative address.
|
|
2838 FB90: 10BF029D longrel sty addr
|
|
2839 FB94: B3029D subd addr
|
|
2840 FB97: 830002 subd #2
|
|
2841 FB9A: BDF80F jsr putword
|
|
2842 FB9D: 8604 lda #4
|
|
2843 FB9F: B702C3 sta amode
|
|
2844 FBA2: 8602 lda #2
|
|
2845 FBA4: B702CB sta opsize
|
|
2846 FBA7: 39 rts
|
|
2847 FBA8:
|
|
2848 FBA8: 8EE6D6 brerr ldx #brmsg
|
|
2849 FBAB: 7E0298 jmp asmerrvec
|
|
2850 FBAE: 8EE6AF exprerr ldx #exprmsg
|
|
2851 FBB1: 7E0298 jmp asmerrvec
|
|
2852 FBB4: 8EE6C0 moderr ldx #modemsg
|
|
2853 FBB7: 7E0298 jmp asmerrvec
|
|
2854 FBBA: 3410 asmerr pshs x
|
|
2855 FBBC: 9D18 jsr xabortin
|
|
2856 FBBE: 3510 puls x
|
|
2857 FBC0: BDE502 jsr outcount
|
|
2858 FBC3: 9D0C jsr putcr
|
|
2859 FBC5: 10FE02BD lds savesp
|
|
2860 FBC9: 7EE579 jmp cmdline
|
|
2861 FBCC:
|
|
2862 FBCC: * Find register for TFR and PSH instruction
|
|
2863 FBCC: C60C findreg ldb #12
|
|
2864 FBCE: 3424 pshs y,b
|
|
2865 FBD0: CEF359 ldu #asmregtab
|
|
2866 FBD3: 1F12 findregloop tfr x,y
|
|
2867 FBD5: 8603 lda #3
|
|
2868 FBD7: E6C4 frcmps ldb ,u
|
|
2869 FBD9: C120 cmpb #' '
|
|
2870 FBDB: 2606 bne frcmps1
|
|
2871 FBDD: E6A4 ldb ,y
|
|
2872 FBDF: C141 cmpb #'A'
|
|
2873 FBE1: 2D18 blt frfound
|
|
2874 FBE3: E6A0 frcmps1 ldb ,y+
|
|
2875 FBE5: C4DF andb #CASEMASK
|
|
2876 FBE7: E1C0 cmpb ,u+
|
|
2877 FBE9: 2606 bne frnextreg
|
|
2878 FBEB: 4A deca
|
|
2879 FBEC: 26E9 bne frcmps
|
|
2880 FBEE: 4C inca
|
|
2881 FBEF: 200A bra frfound
|
|
2882 FBF1: 4C frnextreg inca
|
|
2883 FBF2: 33C6 leau a,u
|
|
2884 FBF4: 6AE4 dec ,s
|
|
2885 FBF6: 26DB bne findregloop
|
|
2886 FBF8: 16FFB9 lbra moderr
|
|
2887 FBFB: 33C6 frfound leau a,u
|
|
2888 FBFD: 1F21 tfr y,x
|
|
2889 FBFF: 3524 puls y,b
|
|
2890 FC01: 39 rts
|
|
2891 FC02:
|
|
2892 FC02: * This is the code for the A command, assemble instructions.
|
|
2893 FC02: * Syntax: Aaddr
|
|
2894 FC02: 8E0201 asm ldx #linebuf+1
|
|
2895 FC05: BDE730 jsr scanhex
|
|
2896 FC08: FD029D std addr
|
|
2897 FC0B: FC029D asmloop ldd addr
|
|
2898 FC0E: BDE6FF jsr outd
|
|
2899 FC11: C620 ldb #' '
|
|
2900 FC13: 9D03 jsr putchar ;Print address and space.
|
|
2901 FC15: 8E0200 ldx #linebuf
|
|
2902 FC18: C680 ldb #128
|
|
2903 FC1A: 9D06 jsr getline ;Get new line
|
|
2904 FC1C: 5D tstb
|
|
2905 FC1D: 1027E958 lbeq cmdline ;Exit on empty line.
|
|
2906 FC21: 3A abx
|
|
2907 FC22: 6F84 clr ,x ;Make line zero terminated.
|
|
2908 FC24: 8E0200 ldx #linebuf
|
|
2909 FC27: BDF767 jsr asminstr
|
|
2910 FC2A: 20DF bra asmloop
|
|
2911 FC2C:
|
|
2912 FC2C: * Jump table for monitor routines that are usable by other programs.
|
|
2913 FC2C: org $ffc0
|
|
2914 FFC0: 7EE6F1 jmp outbyte
|
|
2915 FFC3: 7EE6FF jmp outd
|
|
2916 FFC6: 7EE76B jmp scanbyte
|
|
2917 FFC9: 7EE730 jmp scanhex
|
|
2918 FFCC: 7EF717 jmp scanfact
|
|
2919 FFCF: 7EF767 jmp asminstr
|
|
2920 FFD2:
|
|
2921 FFD2:
|
|
2922 FFD2: * Interrupt vector addresses at top of ROM. Most are vectored through jumps
|
|
2923 FFD2: * in RAM.
|
|
2924 FFD2: org $fff2
|
|
2925 FFF2: 0280 fdb swi3vec
|
|
2926 FFF4: 0283 fdb swi2vec
|
|
2927 FFF6: 0286 fdb firqvec
|
|
2928 FFF8: 0289 fdb irqvec
|
|
2929 FFFA: 028C fdb swivec
|
|
2930 FFFC: 028F fdb nmivec
|
|
2931 FFFE: E400 fdb reset
|
|
2932 0000:
|
|
2933 0000: end
|
|
2934 0 Pass 2 errors.
|
|
2935
|
|
2936 SYMBOL TABLE
|
|
2937 ACC8 02 f882 ACIACTL 00 e000 ACIADAT 00 e001 ACIAIRQ 02 e516
|
|
2938 ACIASTA 00 e000 ACK 00 0006 ACKLOOP 02 ed17 ADDCHK 02 ea57
|
|
2939 ADDR 02 029d ADECEND 02 fa0e ADECLOOP 02 fa05 ADJDIR 02 f93a
|
|
2940 ADJIND 02 f937 ADJOPC 02 f929 AINCEND 02 fa29 AINCLOOP 02 fa20
|
|
2941 AMODE 02 02c3 AREGS 02 f368 AREGU 02 f363 ARM 02 e9db
|
|
2942 ARM1 02 e9e0 ARM2 02 e9f1 ASM 02 fc02 ASMERR 02 fbba
|
|
2943 ASMERRVEC 02 0298 ASMINSTR 02 f767 ASMLOOP 02 fc0b ASMREGTAB 02 f359
|
|
2944 ASMTAB 02 f7f0 AUTODEC 02 fa48 AUTOINC 02 fa3e BACKSP 02 e491
|
|
2945 BLOCKMOVE 02 e44a BP1 02 ea0b BP2 02 ea17 BPADDR 02 02a1
|
|
2946 BPEXIT 02 ea28 BPFULL 02 ea39 BREAK 02 e9f7 BRERR 02 fba8
|
|
2947 BRKMSG 02 e60f BRKPOINTS 00 0004 BRMSG 02 e6d6 BS 00 0008
|
|
2948 BSCMPEXIT 02 f7c8 BSCMPLOOP 02 f7bcBSCMPLOWER 02 f7d1 BSRCHLOOP 02 f797
|
|
2949 BUF0 02 0100 BUF1 02 0180 BUFLEN 00 0080 CAN 00 0018
|
|
2950 CASEMASK 00 00df CB2 02 e723 CHECKOUT 02 eb5c CLEARIT 02 ea30
|
|
2951 CLRMSG 02 e61e CLVAR 02 e434 CMDLINE 02 e579 CMDTAB 02 e5a1
|
|
2952 COMMAPC 02 f66e CONVB 02 e70f CONVEXIT 02 e726 CR 00 000d
|
|
2953 DBP1 02 ea41 DBP2 02 ea4c DDEC1 02 f3d9 DDEC2 02 f3de
|
|
2954 DDEC3 02 f40c DDEC4 02 f3f5 DDEC5 02 f42a DDEC6 02 f43e
|
|
2955 DDEC7 02 f44f DDECFOUND 02 f42e DDECLOOP 02 f3fe DEL 00 007f
|
|
2956 DELAY 02 0021 DH1 02 e791 DH2 02 e79e DH3 02 e7b7
|
|
2957 DH4 02 e7bf DH5 02 e7c5 DH6 02 e7ad DISADEC1 02 f5dc
|
|
2958 DISADEC2 02 f5d8 DISADECA 02 f5de DISADLOOP 02 f5e1 DISADR16 02 f4d9
|
|
2959 DISADR8 02 f4e1 DISAILOOP 02 f5fa DISAINC1 02 f5ee DISAINC2 02 f5ea
|
|
2960 DISAINCA 02 f5f0 DISARM 02 e9c1 DISARM1 02 e9c6 DISARM2 02 e9d2
|
|
2961 DISAX 02 f604 DISBX 02 f60b DISCOMMA 02 f5b5 DISDECODE 02 f3c9
|
|
2962 DISDECTAB 02 f458DISDECTAB1 02 f46c DISDIRECT 02 f662 DISDISP 02 f4ac
|
|
2963 DISDISPTAB 02 f4bf DISDX 02 f612 DISIDX 02 f599 DISIDX1 02 f5c3
|
|
2964 DISIDX2 02 f5cd DISIDXEND 02 f5c2 DISIDXREG 02 f588 DISIDXTAB 02 f672
|
|
2965 DISIM16 02 f4d7 DISIM8 02 f4d3 DISINDEX 02 f5b8 DISINDIR 02 f5ba
|
|
2966 DISINVAL 02 f619 DISNNPC 02 f65a DISNNX 02 f635 DISNPC 02 f641
|
|
2967 DISNPCA 02 f648 DISNX 02 f620 DISNX1 02 f625 DISNXNEG 02 f62e
|
|
2968 DISP16 02 e906 DISP8 02 e8f8 DISPBP 02 ea3e DISPREGS 02 e916
|
|
2969 DISPUSH 02 f50e DISPUSH1 02 f551 DISPUSH2 02 f54b DISPUSH3 02 f52c
|
|
2970 DISPUSH4 02 f53cDISREGNAME 02 f578 DISREL16 02 f4f7 DISREL8 02 f4e9
|
|
2971 DISTFR 02 f557 DISTFREND 02 f575DISTFRLOOP 02 f56c DISTFRSUB 02 f567
|
|
2972 DLYLOOP 02 e51a DOA1 02 fb17 DOA2 02 fb26 DOADDR 02 fb03
|
|
2973 DOAPCREL 02 fb2c DOIMM 02 f9e5 DOINDEX 02 fa53 DOPCREL 02 faba
|
|
2974 DOSPECIAL 02 f9fe DOTAB 02 e4d3 DPSETTING 02 02cd DR8A 02 f4ef
|
|
2975 DREG1 02 f893 DREG2 02 f8a4 DRNEND 02 f587 DRNLOOP 02 f57c
|
|
2976 DUMP 02 e784 ENDIRQ 02 e517 ENDMSG 02 e6e6 ENDREC 02 eab7
|
|
2977 ENDREC1 02 eaca ENDSS 02 eb51 ENDVARS 02 02cf ENDVECS 02 e55f
|
|
2978 ENT1 02 e7e9 ENT2 02 e7ef ENTASC 02 e82a ENTDONE 02 e83b
|
|
2979 ENTER 02 e7de ENTEXIT 02 e842 ENTL2 02 e821 ENTL3 02 e82e
|
|
2980 ENTLINE 02 e811 EOT 00 0004 EXPR 02 f6f9 EXPREND 02 f713
|
|
2981 EXPREND1 02 f714 EXPRERR 02 fbae EXPRMSG 02 e6af EXPRVEC 02 0295
|
|
2982 FHEXLOOP 02 ebcd FILLER 02 02bb FIND 02 eba7 FINDHEX 02 ebc7
|
|
2983 FINDREG 02 fbccFINDREGLOOP 02 fbd3 FIRQVEC 02 0286 FRCMPS 02 fbd7
|
|
2984 FRCMPS1 02 fbe3 FRFOUND 02 fbfb FRNEXTREG 02 fbf1 FSTRLOOP 02 ebba
|
|
2985 FULLMSG 02 e631 GETCHAR 02 0000 GETLINE 02 0006 GETPOLL 02 000f
|
|
2986 GETTIMEOUT 02 ec7e GO 02 e88b GT1 02 ec86 GTEXIT 02 ec93
|
|
2987 HEX 02 e857 HEX1 02 e86f HEXDIGIT 02 e6e6 HEXEND 02 e881
|
|
2988 HEXLOOP 02 e85f IMMBYTE 02 f81a INITACIA 02 e452 INP 02 e845
|
|
2989 INTVECTBL 02 e520 INVMMSG 02 e69e INVMNEM 02 f7d6 IRQVEC 02 0289
|
|
2990 IXFOUND 02 faed IXREGS 02 f398 JUMP 02 e89a LASTOK 02 002f
|
|
2991 LASTREC 02 e654 LASTTERM 02 02ba LAUNCH 02 e895 LBRA 02 f87b
|
|
2992 LBRA1 02 f86c LBRANCH 02 f868 LEA 02 f82f LENGTH 02 029f
|
|
2993 LF 00 000a LINEBUF 02 0200 LONGINDEX 02 faaa LONGREL 02 fb90
|
|
2994 MNCPDONE 02 f78f MNCPEXIT 02 f785 MNCPLOOP 02 f76c MNEMBSR 02 efc9
|
|
2995 MNEMBUF 02 02c6 MNEMCP1 02 f780 MNEMFCB 02 f091 MNEMFOUND 02 f7dc
|
|
2996 MNEMJSR 02 f0c9 MNEMSIZE 00 0093 MNEMTAB 02 eec1 MNFILLOOP 02 f78a
|
|
2997 MODEMSG 02 e6c0 MODERR 02 fbb4 MODETAB 02 f3ac MODETAB2 02 f3bc
|
|
2998 MOVE 02 eb6a MVLOOP 02 eb9c NAK 00 0015 NEGOFFS 02 f5ab
|
|
2999 NEWLINE 02 e4b6 NMIVEC 02 028f NOCOMMA 02 f98c NOEXPR 02 f764
|
|
3000 NOINDIR 02 f958 NOLET 02 f77e NOOP 02 f492 OADIR 02 f8d3
|
|
3001 OAIND 02 f8d1 OD1A 02 f48f ODB1 02 f69c ODPA 02 f499
|
|
3002 OLDGETC 02 02b4 OLDPC 02 029b OLDPUTC 02 02b6 OLDPUTCR 02 02b8
|
|
3003 ONEADDR 02 f8b7 ONEBYTE 02 f812 OPC1 02 02c0 OPCODE 02 02c1
|
|
3004 OPCOFFS 02 f39c OPDEC1 02 f48c OPDEC2 02 f493 OPDECIDX 02 f49d
|
|
3005 OPDECPB 02 f497 OPERAND 02 02c4 OPSIZE 02 02cb OPSZ1 02 f9aa
|
|
3006 OPSZ2 02 f9a8 OPSZ3 02 f9c0 OPSZ4 02 f9c5 OSCR 02 e4f5
|
|
3007 OSDLY 02 e518 OSGETC 02 e45a OSGETL 02 e480 OSGETL1 02 e485
|
|
3008 OSGETL2 02 e4a5 OSGETL3 02 e4c0 OSGETPOLL 02 e465 OSPUTC 02 e471
|
|
3009 OSPUTL 02 e4e4 OSPUTL1 02 e4f2 OSPUTL2 02 e4eb OSVECTBL 02 e53b
|
|
3010 OUTBYTE 02 e6f1 OUTCOUNT 02 e502 OUTD 02 e6ffOUTDECBYTE 02 f692
|
|
3011 PCRELEND 02 fac8 PCRLONG 02 fb52 POLTRUE 02 e46e POS 02 f702
|
|
3012 POSTBYTE 02 02c2 PPLOOP 02 f90f PREBYTE 02 02bf PROG 02 e8b9
|
|
3013 PSEUDO 02 f928 PURGE 02 ec99 PURGEIT 02 ed0e PUSHPUL 02 f902
|
|
3014 PUTBYTE 02 f80c PUTCHAR 02 0003 PUTCLOOP 02 e473 PUTCOMMA 02 f506
|
|
3015 PUTCR 02 000c PUTDOL 02 f502 PUTHASH 02 f4fe PUTLINE 02 0009
|
|
3016 PUTSPACE 02 f50a PUTWORD 02 f80f RAMSTART 00 0400 RAMTOP 00 8000
|
|
3017 READREC 02 ea82 REGINVAL 02 f395 REGLOOP 02 f515 REGS 02 e95d
|
|
3018 REGTAB 02 e9b7 RESET 02 e400 RR1 02 eaa8 RR2 02 eaad
|
|
3019 RSTVECS 02 ed31 SAVESP 02 02bd SAVEVECS 02 ed1e SB1 02 e783
|
|
3020 SBRANCH 02 f855SCAN2PARMS 02 e753 SCANACIDX 02 f978 SCANBYTE 02 e76b
|
|
3021 SCANCHAR2 02 f72d SCANDEC 02 f731 SCANDLOOP 02 f73d SCANEND 02 f9cd
|
|
3022 SCANEND2 02 f9e4 SCANEXIT 02 e729 SCANFACT 02 f717 SCANHEX 02 e730
|
|
3023 SCANIXREG 02 fad8 SCANLAB 02 f98e SCANOPS 02 f94b SCIDXLOOP 02 fae2
|
|
3024 SCLOOP 02 e738 SDEXIT 02 f75d SENDNAK 02 ecb0 SENDREC 02 eaf0
|
|
3025 SET3 02 faf6 SET3A 02 fb02 SETREG 02 e96b SETSORG 02 eae2
|
|
3026 SHORTIND1 02 fa9cSHORTINDEX 02 fa90 SHORTREL 02 fb6c SKIPSPACE 02 e708
|
|
3027 SMSG 02 e642 SOFFS 02 02b2 SOH 00 0001 SORG 02 02b0
|
|
3028 SP2 02 e76a SR1 02 e972 SR2 02 e97f SR3 02 e995
|
|
3029 SR4 02 e9a5 SRCH1 02 ebf8 SRCH2 02 ebfd SRCH3 02 ec17
|
|
3030 SRCHLOOP 02 ebe6 SREC 02 ea65 SRECERR 02 ead5 SS1 02 eb04
|
|
3031 SS2 02 eb11 SS3 02 eb3c STAKREGS 02 e55fSTARTBLOCK 02 ecb5
|
|
3032 STARTOP 02 f943 STARTSRCH 02 ebdd STEPBP 02 02ad SWI2VEC 02 0283
|
|
3033 SWI3VEC 02 0280 SWIVEC 02 028c TAB 00 0009 TEMP 02 0024
|
|
3034 TEMP2 02 0026 TEMP3 02 0028 TFREXG 02 f8d9 TIMER 02 002a
|
|
3035 TIMERIRQ 02 e50b TRACE 02 e8c5 TRACELOOP 02 e8df TRACEONE 02 e8ce
|
|
3036 TRACERET 02 e8ea TWOBYTE 02 f816 UNADISHEX 02 f6cc UNADISSPC 02 f6d9
|
|
3037 UNASM 02 f6a2 UNASMLOOP 02 f6b8 UNCERT 02 02cc UNK 02 e5d5
|
|
3038 UNKNOWN 02 e5ff UNLAUNCH 02 e56a UNLAUNCH1 02 e571 WAITACK 02 ec43
|
|
3039 WAITACK2 02 ec6d WAITNAK 02 ec5b WELCOME 02 e5e2 XABORTIN 02 0018
|
|
3040 XABTIN 02 ed8c XABTLOOP 02 ed99 XAMSG 02 e686 XCLOSEIN 02 001b
|
|
3041 XCLOSEOUT 02 001e XCLSDONE 02 edc2 XCLSEND 02 edce XCLSIN 02 edcf
|
|
3042 XCLSLOOP 02 edba XCLSOUT 02 edac XCOUNT 02 0030 XEQ 02 eea7
|
|
3043 XERRHAND 02 ee4b XERROR 02 ee3b XERRVEC 02 0292 XGETC 02 ee12
|
|
3044 XGETC1 02 ee25 XGETCTERM 02 ee31 XLOAD 02 ee94 XLODLOOP 02 ee9b
|
|
3045 XMCR 02 02bc XMODE 02 0031 XMODEM 02 ee52 XOPENIN 02 0012
|
|
3046 XOPENOUT 02 0015 XOPIN 02 ed44 XOPOUT 02 ed67 XOPTS 02 eeac
|
|
3047 XPACKNUM 02 002d XPUTC 02 edd9 XPUTC1 02 edf5 XPUTCR 02 edf7
|
|
3048 XPUTCR1 02 ee04 XPUTCR2 02 ee0f XR1 02 ecd6 XRCVBUF 02 eca1
|
|
3049 XRCVEOT 02 ed13 XRLOOP 02 ece8 XRMSG 02 e671 XSABT 02 ec56
|
|
3050 XSBINLOOP 02 ee82 XSENDBUF 02 ec1b XSENDEOT 02 ec68 XSENDINIT 02 ec57
|
|
3051 XSLOOP 02 ec30 XSMSG 02 e65f XSOK 02 ec54 XSS 02 ee8d
|
|
3052 XSUM 02 002e
|