]> cloudbase.mooo.com Git - z180-stamp.git/blame - z180/ddtz.180
phys. address 0x00040 points to fifo_list
[z180-stamp.git] / z180 / ddtz.180
CommitLineData
a16ba2b0
L
1 page 255\r
2 .z80\r
3\r
30d1329e 4 extrn ?const,?conin,?cono\r
29605004
L
5 extrn getiff\r
6 extrn selbnk,@cbnk\r
a16ba2b0
L
7\r
8 global ddtz,bpent\r
9 global $stack\r
10\r
11\r
12 include config.inc\r
29605004 13 if CPU_Z180\r
a16ba2b0
L
14 include z180reg.inc\r
15 include z180.lib\r
29605004 16 endif\r
a16ba2b0
L
17\r
18BS equ 08h\r
19TAB equ 09h\r
20CR equ 0dh\r
21LF equ 0ah\r
22DEL equ 7fh\r
23CNTRX equ 'X'-'@'\r
24\r
25TPA equ 100h\r
26TOPRAM equ 0f000h\r
27\r
28\r
29MEMDUMP_CNT equ 16 ;mem dump bytes per line\r
30BP_CNT equ 12 ;number of breakbpoints\r
31\r
32\r
33;--------------------------------------------------\r
30d1329e 34;\r
a16ba2b0
L
35\r
36; copy code to common memory and execute it there\r
37comst macro\r
38 call ?excom\r
39 ds 1\r
40?lcs defl $\r
41 endm\r
42\r
43; mark end of common code snippet\r
44comend macro\r
45?lce defl $\r
46?lclen defl ?lce-?lcs\r
47 org ?lcs-1\r
48 db ?lclen\r
49 org ?lce\r
50 ifndef ?lcmax\r
51?lcmax defl 0\r
52 endif\r
53 if ?lclen gt ?lcmax\r
54?lcmax defl ?lclen\r
55 endif\r
56 endm\r
57\r
a16ba2b0
L
58\r
59\r
60\r
61 cseg\r
62\r
63;----------------------------------------------------------\r
64\r
65MSG:\r
66 DB 'DDT/Z - HD64180 (ROM)'\r
67 DB CR,LF,0\r
68\r
69HLPMSG:\r
70 DB 'DDT/Z180 (ROM) Commands:',CR,LF\r
71 DB '> @ examine/substitute the displacement register @',CR,LF\r
72 DB '> A [address] Assemble',CR,LF\r
73 DB '> B[X] display [or clear] all Breakpoints',CR,LF\r
74 DB ' B breakp [:count] [breakp..] set Breakpoints',CR,LF\r
75 DB ' BX address [address..] clear Breakpoints',CR,LF\r
76 DB '>>C[N][J] [count] trace over Calls [No list] [Jumps only]',CR,LF\r
77 DB ' C[N][J] W|U expression trace over Calls While|Until ...',CR,LF\r
78 DB '>>D [startadr] [endadr] Display memory in hex and ascii',CR,LF\r
79 DB '> G [startadr] [;breakp..] Go [to start] [temporary breakpoints]',CR,LF\r
80 DB '> H [expression [expression]] compute expressions / show High/max load adr.',CR,LF\r
81 DB '>>I [port] Input a byte from port',CR,LF\r
82 DB '>>L [startadr] [endadr] List disassembled code',CR,LF\r
83 DB '> M[V] startadr endadr destadr Move memory [and verify]',CR,LF\r
84 DB '>>O [byte] [port] Output a byte to port',CR,LF\r
85 DB '> Q[J] startadr endadr bytes Qery memory for byte string [Justified]',CR,LF\r
86 DB '> R [displacement] Read intel hex from console [add displacemt]',CR,LF\r
87 DB '> S address Substitute memory',CR,LF\r
88 DB '>>T[N][J] [count] Trace [No list] [Jumps only] [count steps]',CR,LF\r
89 DB ' T[N][J] W|U expression Trace While|Until expression',CR,LF\r
90 DB '> V startadr endadr destadr Verify (compare) two memory areas',CR,LF\r
91 DB '> X[register] eXamine [and substitute] registers',CR,LF\r
92 DB '> Y[0..9] eXamine [and substitute] Y variables',CR,LF\r
93 DB '> Z startadr endadr bytes Zap (fill) memory with a byte string',CR,LF\r
94 DB 0\r
95\r
96ddtz:\r
97 ld sp,$stack\r
98 ld a,(wstrtflg) ;check warm start flag\r
99 or a\r
29605004 100;;; jr nz,ddtz_w\r
a16ba2b0
L
101\r
102 exx\r
103 ld hl,sysramc\r
104 ld de,topcodbeg\r
105 ld bc,topcodend-topcodbeg\r
30d1329e
L
106 ldir\r
107\r
a16ba2b0
L
108 exx\r
109\r
29605004 110 if CPU_Z180\r
a16ba2b0
L
111 ld a,e\r
112 ld (ubbr),a\r
29605004 113 endif\r
30d1329e 114\r
a16ba2b0 115ddtz_w:\r
fecee241
L
116 ld hl,MSG\r
117 call PSTR\r
118 call ddtei\r
a16ba2b0
L
119\r
120; DDTZ main loop\r
121\r
122DDTZML:\r
fecee241
L
123 ld sp,$stack\r
124 ld hl,l07eah\r
125 ld (CMD_ERR),hl\r
126 ld hl,(REG.PC)\r
127 ld (OFFS.pc),hl\r
128 call sub_0e68h\r
129 ld hl,(CMD_RPT)\r
130 ld de,DDTZML\r
131 call CP.HL.DE\r
132 ld a,'>'\r
133 call OUTCHAR\r
134 call nz,OUTCHAR\r
135 call z,OUTBL\r
136 call INLINE\r
137 call SKIPBL\r
138 jr z,exe_hl\r
139 ld hl,DDTZML\r
140 ld (CMD_RPT),hl\r
141 inc de\r
142 sub '?'\r
143 jr c,ERROR\r
144 cp 'Z'+1-'?'\r
145 jr nc,ERROR\r
146 add a,a\r
147 ld hl,CMDTAB\r
148 call ADD_HL_A\r
149 ld a,(hl)\r
150 inc hl\r
151 ld h,(hl)\r
152 ld l,a\r
153 jr exe_hl\r
a16ba2b0 154ERROR:\r
fecee241 155 ld hl,(CMD_ERR)\r
a16ba2b0 156exe_hl:\r
fecee241
L
157 call CALL.HL\r
158 jr DDTZML\r
a16ba2b0
L
159\r
160CALL.HL:\r
fecee241 161 jp (hl)\r
a16ba2b0
L
162\r
163\r
164CMDTAB:\r
fecee241
L
165 defw CMD.? ;Help\r
166 defw CMD.@ ;Offset\r
167 defw CMD.A ;Assemble\r
168 defw CMD.B ;Breakpoint\r
169 defw CMD.C ;Call\r
170 defw CMD.D ;Display\r
171 defw ERROR ;\r
172 defw ERROR ;\r
173 defw CMD.G ;Go\r
174 defw CMD.H ;Hex Math\r
175 defw CMD.I ;In Port\r
176 defw ERROR ;\r
177 defw ERROR ;\r
178 defw CMD.L ;List\r
179 defw CMD.M ;Move\r
180 defw ERROR ;\r
181 defw CMD.O ;Out Port\r
182 defw ERROR ;\r
183 defw CMD.Q ;Query\r
184 defw CMD.R ;Read Intel Hex\r
185 defw CMD.S ;Substitute\r
186 defw CMD.T ;Trace\r
187 defw ERROR ;\r
188 defw CMD.V ;Verify\r
189 defw ERROR ;\r
190 defw CMD.X ;eXamine\r
191 defw CMD.Y ;eXamine Y Registers\r
192 defw CMD.Z ;Zap (fill) memory\r
a16ba2b0 193l07eah:\r
fecee241
L
194 ld a,'?'\r
195 call OUTCHAR\r
196 jp CRLF\r
a16ba2b0
L
197\r
198CMD.?:\r
199 call assert_eol\r
200 ld hl,HLPMSG\r
201 call PSTR\r
202 ret\r
203\r
30d1329e
L
204$ci:\r
205 push hl\r
206 push de\r
207 push bc\r
208 call ?conin\r
209 pop bc\r
210 pop de\r
211 pop hl\r
212 ret\r
213\r
214$co:\r
215 push hl\r
216 push de\r
217 push bc\r
218 ld c,a\r
219 call ?cono\r
220 pop bc\r
221 pop de\r
222 pop hl\r
223 ret\r
224\r
a16ba2b0 225DELC:\r
30d1329e
L
226 ld a,b\r
227 or a\r
228 ret z\r
229 call DELC1\r
230 dec hl\r
231 dec b\r
232 inc c\r
233 ld a,(hl)\r
234 cp ' '\r
235 ret nc\r
236DELC1:\r
237 push de\r
238 push hl\r
239 push bc\r
240 ld c,BS\r
241 call ?cono\r
242 ld c,' '\r
243 call ?cono\r
244 ld c,BS\r
245 call ?cono\r
246 pop bc\r
247 pop hl\r
248 pop de\r
249 ret\r
250\r
a16ba2b0 251DELL:\r
3531528e
L
252 ld a,b ;\r
253 or a ;\r
254 ret z ;\r
255 call DELC ;\r
256 jr DELL ;\r
a16ba2b0
L
257\r
258INLINE:\r
3531528e
L
259 push hl ;\r
260 ld hl,CI.BUF ;\r
261 ld c,(hl) ;\r
262 inc hl ;\r
263 ld b,000h ;\r
264 inc hl ;\r
a16ba2b0 265inlnxtch:\r
3531528e
L
266 ld a,c ;\r
267 or a ;\r
268 jr z,inl_e ;\r
269 call $ci ;\r
270 cp CR ;\r
271 jr z,inl_e ;Accept line\r
272 cp LF ;\r
273 jr z,inl_e ;Accept line\r
274 cp BS ;\r
275 jr nz,l0844h ;\r
276 call DELC ;Delete Char\r
277 jr inlnxtch ;\r
a16ba2b0 278l0844h:\r
3531528e
L
279 cp DEL ;\r
280 jr nz,l084dh ;\r
281 call DELC ;Delete Char\r
282 jr inlnxtch ;\r
a16ba2b0 283l084dh:\r
3531528e
L
284 cp CNTRX ;\r
285 jr nz,l0856h ;\r
286 call DELL ;Delete Line\r
287 jr inlnxtch ;\r
a16ba2b0 288l0856h:\r
3531528e
L
289 cp TAB ;\r
290 jr nz,l085ch ;\r
291 ld a,' ' ;\r
a16ba2b0 292l085ch:\r
3531528e
L
293 ld (hl),a ;\r
294 cp ' ' ;\r
295 jr nc,l0869h ;\r
29605004 296 ld a,'^' ;Controll characters\r
3531528e
L
297 call $co ;\r
298 ld a,(hl) ;\r
299 add a,'@' ;\r
a16ba2b0 300l0869h:\r
3531528e
L
301 call $co ;\r
302 inc hl ;\r
303 inc b ;\r
304 dec c ;\r
305 jr inlnxtch ;\r
a16ba2b0
L
306\r
307inl_e:\r
3531528e
L
308 ld hl,ci.buf+1 ;\r
309 ld (hl),b ;\r
310 call CRLF ;\r
311 ld de,ci.buf+1 ;\r
312 ld a,(de) ;\r
313 ld b,a ;\r
314 ld c,000h ;\r
315 inc b ;\r
a16ba2b0 316l0880h:\r
3531528e
L
317 inc de ;\r
318 dec b ;\r
319 jr z,l08b2h ;\r
320 ld a,(de) ;\r
321 bit 0,c ;\r
322 call z,UPCASE ;\r
323 ld (de),a ;\r
324 cp '''' ;\r
325 jr nz,l0880h ;\r
326 push de ;\r
327 dec de ;\r
328 ld a,(de) ;\r
329 cp '''' ;\r
330 jr z,l08aeh ;\r
331 dec de ;\r
332 ld a,(de) ;\r
333 cp '^' ;\r
334 jr z,l08a2h ;\r
335 dec de ;\r
336 ld a,(de) ;\r
337 cp '^' ;\r
338 jr nz,l08aeh ;\r
a16ba2b0 339l08a2h:\r
3531528e
L
340 inc de ;\r
341 push bc ;\r
342 call sub_0a0eh ;\r
343 pop bc ;\r
344 dec de ;\r
345 ld a,(de) ;\r
346 cp '''' ;\r
347 jr z,l08afh ;\r
a16ba2b0 348l08aeh:\r
3531528e 349 inc c ;\r
a16ba2b0 350l08afh:\r
3531528e
L
351 pop de ;\r
352 jr l0880h ;\r
a16ba2b0 353l08b2h:\r
3531528e
L
354 xor a ;\r
355 ld (de),a ;\r
356 ld de,ci.buf+2 ;\r
357 pop hl ;\r
358 ret ;\r
a16ba2b0
L
359\r
360UPCASE:\r
3531528e
L
361 cp 'a' ;\r
362 ret c ;\r
363 cp 'z'+1 ;\r
364 ret nc ;\r
365 and 05fh ;\r
366 ret ;\r
a16ba2b0
L
367\r
368out.hl.@:\r
3531528e
L
369 call out.hl ;\r
370 push de ;\r
371 push hl ;\r
372 ld de,(offs.@) ;\r
373 ld a,d ;\r
374 or e ;\r
375 jr z,l08ddh ;\r
376 call OUTBL ;\r
377 ld a,'@' ;\r
378 call OUTCHAR ;\r
379 and a ;\r
380 sbc hl,de ;\r
381 call out.hl ;\r
a16ba2b0 382l08ddh:\r
3531528e
L
383 pop hl ;\r
384 pop de ;\r
385 ret ;\r
a16ba2b0
L
386\r
387out.bin.w:\r
3531528e
L
388 ld a,h ;\r
389 call out.bin.b ;\r
390 ld a,l ;\r
a16ba2b0 391out.bin.b:\r
3531528e 392 ld b,008h ;\r
a16ba2b0 393l08e7h:\r
3531528e
L
394 add a,a ;\r
395 push af ;\r
396 ld a,0 ;\r
397 adc a,a ;\r
398 call out.digit ;\r
399 pop af ;\r
400 djnz l08e7h ;\r
401 ld a,'"' ;\r
402 jp OUTCHAR ;\r
a16ba2b0
L
403\r
404sub_08f7h:\r
3531528e
L
405 ld a,'-' ;\r
406 call OUTCHAR ;\r
407 dec hl ;\r
408 jp cpl.hl ;\r
a16ba2b0
L
409\r
410out.hl.decm:\r
3531528e
L
411 push hl ;\r
412 call sub_08f7h ;\r
413 db 3eh ; ld a,0E5h\r
a16ba2b0
L
414out.hl.dec:\r
415 push hl\r
3531528e
L
416 ld b,6 ;\r
417 call sub_0917h ;\r
418 pop hl ;\r
419 ld a,'.' ;\r
420 call OUTCHAR ;\r
a16ba2b0 421l0911h:\r
3531528e
L
422 call OUTBL ;\r
423 djnz l0911h ;\r
424 ret ;\r
a16ba2b0
L
425\r
426\r
427sub_0917h:\r
fecee241
L
428 dec b\r
429 push de\r
430 ld de,10\r
431 call DIV_HL_DE\r
432 ld a,h\r
433 or l\r
434 call nz,sub_0917h\r
435 ld a,e\r
436 pop de\r
437 jr out.digit\r
a16ba2b0
L
438\r
439sub_0928h:\r
fecee241
L
440 push hl\r
441 call sub_08f7h\r
442 call out.hl\r
443 pop hl\r
444 ret\r
a16ba2b0 445out.hl:\r
fecee241
L
446 ld a,h\r
447 call out.hex\r
448 ld a,l\r
a16ba2b0 449out.hex:\r
fecee241
L
450 push af\r
451 rra\r
452 rra\r
453 rra\r
454 rra\r
455 call out.digit\r
456 pop af\r
a16ba2b0 457out.digit:\r
fecee241
L
458 and 00fh\r
459 cp 10\r
460 jr c,l0947h\r
461 add a,007h\r
a16ba2b0 462l0947h:\r
fecee241
L
463 add a,'0'\r
464 jr OUTCHAR\r
a16ba2b0 465l094bh:\r
fecee241
L
466 ld a,'-'\r
467 call OUTCHAR\r
468 ld a,040h\r
a16ba2b0 469out.ascii:\r
fecee241
L
470 ex af,af'\r
471 call outquote\r
472 ex af,af'\r
473 push af\r
474 res 7,a\r
475 cp ' '\r
476 jr nc,l0960h\r
477 sub 0c0h\r
a16ba2b0 478l0960h:\r
fecee241
L
479 call OUTCHAR\r
480 push af\r
481 cp ''''\r
482 call z,OUTCHAR\r
483 pop af\r
484 ex af,af'\r
485 call outquote\r
486 pop af\r
487 or a\r
488 ld a,'.'\r
489 call m,OUTCHAR\r
490 ex af,af'\r
491 jr c,l094bh\r
492 ret\r
a16ba2b0
L
493\r
494outquote:\r
fecee241 495 ld a,''''\r
a16ba2b0 496OUTCHAR:\r
30d1329e
L
497 push hl\r
498 push de\r
499 push bc\r
500 push af\r
501 and 07fh\r
502 ld c,a\r
503 call ?cono\r
504 ld hl,CON.COL\r
505 inc (hl)\r
506 pop af\r
507 pop bc\r
508 pop de\r
509 pop hl\r
fecee241 510 ret\r
a16ba2b0
L
511\r
512inchar:\r
30d1329e
L
513 push hl\r
514 push de\r
515 push bc\r
516 call ?const\r
517 and a\r
518 jr z,inch1\r
519 call ?conin\r
fecee241 520 scf\r
30d1329e
L
521inch1:\r
522 pop bc\r
523 pop de\r
524 pop hl\r
fecee241 525 ret\r
a16ba2b0
L
526\r
527PSTR:\r
fecee241 528 ld c,000h\r
a16ba2b0 529l0995h:\r
fecee241
L
530 ld a,(hl)\r
531 and a\r
532 ret z\r
533 call OUTCHAR\r
534 inc c\r
535 inc hl\r
536 and a\r
537 ret m\r
538 jr l0995h\r
a16ba2b0
L
539\r
540outbl6:\r
fecee241 541 call outbl2\r
a16ba2b0 542outbl4:\r
fecee241 543 call outbl2\r
a16ba2b0 544outbl2:\r
fecee241 545 call OUTBL\r
a16ba2b0 546OUTBL:\r
fecee241
L
547 ld a,' '\r
548 jr OUTCHAR\r
a16ba2b0 549CRLF:\r
fecee241
L
550 call inchar\r
551 ld a,CR\r
552 call OUTCHAR\r
553 ld a,LF\r
554 call OUTCHAR\r
555 ld a,000h\r
556 ld (CON.COL),a\r
557 jp c,DDTZML\r
558 ret\r
a16ba2b0
L
559\r
560ADD_HL_A:\r
fecee241
L
561 add a,l\r
562 ld l,a\r
563 ret nc\r
564 inc h\r
565 ret\r
a16ba2b0
L
566\r
567SKIPBL0:\r
fecee241 568 inc de\r
a16ba2b0 569SKIPBL:\r
fecee241
L
570 ld a,(de)\r
571 cp ' '\r
572 jr z,SKIPBL0\r
573 cp 009h\r
574 jr z,SKIPBL0\r
575 or a\r
576 ret\r
a16ba2b0
L
577\r
578skip_to_nextarg:\r
fecee241
L
579 call SKIPBL\r
580 cp ','\r
581 ret nz\r
582 inc de\r
583 call SKIPBL\r
584 cp a\r
585 ret\r
a16ba2b0
L
586\r
587assert_eol:\r
fecee241
L
588 call SKIPBL\r
589 ret z\r
a16ba2b0 590l09e5h:\r
fecee241 591 jp ERROR\r
a16ba2b0
L
592\r
593chk.sp:\r
fecee241
L
594 push hl\r
595 push de\r
596 ld hl,0\r
597 add hl,sp\r
598 ld de,$stack-50\r
599 call CP.HL.DE\r
600 pop de\r
601 pop hl\r
602 jr c,l09e5h\r
603 ret\r
a16ba2b0
L
604\r
605CP.HL.DE:\r
fecee241
L
606 and a\r
607 sbc hl,de\r
608 add hl,de\r
609 ret\r
a16ba2b0
L
610\r
611lookupch:\r
fecee241 612 ld b,000h\r
a16ba2b0 613l0a00h:\r
fecee241
L
614 ld a,(hl)\r
615 and a\r
616 ret z\r
617 ld a,(de)\r
618 cp (hl)\r
619 jr z,l0a0bh\r
620 inc hl\r
621 inc b\r
622 jr l0a00h\r
a16ba2b0 623l0a0bh:\r
fecee241
L
624 scf\r
625 inc de\r
626 ret\r
a16ba2b0
L
627\r
628sub_0a0eh:\r
fecee241
L
629 ld hl,b_0x132A_start\r
630 ld b,07fh\r
631 jr l0a17h\r
a16ba2b0
L
632\r
633sub_0a15h:\r
fecee241 634 ld b,0ffh\r
a16ba2b0 635l0a17h:\r
fecee241
L
636 inc b\r
637 ld a,(hl)\r
638 and a\r
639 ret z\r
640 call l0a27\r
641 jr nc,l0a17h\r
642 res 7,b\r
643 ret\r
a16ba2b0
L
644\r
645sub_0a23h:\r
fecee241
L
646 push bc\r
647 res 7,b\r
a16ba2b0
L
648 db 3eh ;0a26 ld a,0c5h\r
649l0a27:\r
fecee241
L
650 push bc\r
651 push de\r
a16ba2b0 652l0a29h:\r
fecee241
L
653 ld a,(de)\r
654 xor (hl)\r
655 and 07fh\r
656 jr nz,l0a41h\r
657 bit 7,(hl)\r
658 inc hl\r
659 inc de\r
660 jr z,l0a29h\r
661 scf\r
662 bit 7,b\r
663 call z,sub_0d20h\r
664 jr nc,l0a44h\r
665 pop af\r
666 scf\r
667 pop bc\r
668 ret\r
a16ba2b0
L
669\r
670l0a41h:\r
fecee241 671 call sub_0a50h\r
a16ba2b0 672l0a44h:\r
fecee241
L
673 pop de\r
674 and a\r
675 pop bc\r
676 ret\r
a16ba2b0
L
677\r
678sub_0a48h:\r
fecee241 679 inc b\r
a16ba2b0 680l0a49h:\r
fecee241
L
681 dec b\r
682 ret z\r
683 call sub_0a50h\r
684 jr l0a49h\r
a16ba2b0 685sub_0a50h:\r
fecee241
L
686 ld a,(hl)\r
687 and a\r
688 ret z\r
a16ba2b0 689l0a53h:\r
fecee241
L
690 ld a,(hl)\r
691 inc hl\r
692 and a\r
693 ret m\r
694 jr l0a53h\r
a16ba2b0
L
695\r
696get_arg3:\r
fecee241
L
697 call get_arg_range\r
698 push hl\r
699 push bc\r
700 call skip_to_nextarg\r
701 call get_arg\r
702 ex de,hl\r
703 pop bc\r
704 pop hl\r
705 ret\r
a16ba2b0
L
706\r
707sub_0a68h:\r
fecee241
L
708 call EXPR\r
709 jr c,error0\r
710 ret\r
a16ba2b0
L
711\r
712get_arg:\r
fecee241 713 call sub_0a68h\r
a16ba2b0 714l0a71h:\r
fecee241 715 jp assert_eol\r
a16ba2b0
L
716\r
717get_lastarg_def:\r
fecee241
L
718 call get_arg_def\r
719 jr l0a71h\r
a16ba2b0
L
720\r
721get_arg_def:\r
fecee241
L
722 push hl\r
723 call EXPR\r
724 jr c,l0a80h\r
725 ex (sp),hl\r
a16ba2b0 726l0a80h:\r
fecee241
L
727 pop hl\r
728 ret\r
a16ba2b0
L
729\r
730sub_0a82h:\r
fecee241
L
731 call sub_0a87h\r
732 jr l0a71h\r
a16ba2b0
L
733\r
734sub_0a87h:\r
735 db 0e6h ;0a87 and 037h (clear carry)\r
736get_arg_range:\r
737 scf\r
fecee241
L
738 ex af,af'\r
739 push bc\r
740 push hl\r
741 call EXPR\r
742 jr nc,l0a97h\r
743 ex af,af'\r
744 jr c,error0\r
745 ex af,af'\r
746 pop hl\r
747\r
748 defb 03eh\r
a16ba2b0 749l0a97h:\r
fecee241
L
750 pop af\r
751 call sub_0aa5h\r
752 jr nc,l0aa3h\r
753 ex af,af'\r
754 pop bc\r
755 ret nc\r
a16ba2b0 756error0:\r
fecee241 757 jp ERROR\r
a16ba2b0
L
758\r
759l0aa3h:\r
fecee241
L
760 pop af\r
761 ret\r
a16ba2b0
L
762\r
763sub_0aa5h:\r
fecee241
L
764 call skip_to_nextarg\r
765 cp 'S'\r
766 jr nz,l0aadh\r
767 inc de\r
a16ba2b0 768l0aadh:\r
fecee241
L
769 push hl\r
770 push af\r
771 call EXPR\r
772 jr c,l0ac3h\r
773 ld b,h\r
774 ld c,l\r
775 pop af\r
776 pop hl\r
777 jr z,l0ac1h\r
778 ld a,c\r
779 sub l\r
780 ld c,a\r
781 ld a,b\r
782 sbc a,h\r
783 ld b,a\r
784 inc bc\r
a16ba2b0 785l0ac1h:\r
fecee241
L
786 and a\r
787 ret\r
a16ba2b0
L
788\r
789l0ac3h:\r
fecee241
L
790 pop af\r
791 pop hl\r
792 jr z,error0\r
793 scf\r
794 ret\r
a16ba2b0
L
795\r
796EXPR:\r
fecee241 797 call SKIPBL\r
a16ba2b0 798EXPR1:\r
fecee241
L
799 call do_subexpr\r
800 ret c\r
801 call do_rel_op\r
802 ret nc\r
803 push bc\r
804 push hl\r
805 call do_subexpr\r
806 jr c,error0\r
807 ex de,hl\r
808 ex (sp),hl\r
809 and a\r
810 sbc hl,de\r
811 ld hl,0ffffh\r
812 pop de\r
813 ret\r
a16ba2b0
L
814\r
815do_op_eq:\r
fecee241
L
816 jr z,l0af8h\r
817 jr l0af7h\r
a16ba2b0 818do_op_ne:\r
fecee241
L
819 jr nz,l0af8h\r
820 jr l0af7h\r
a16ba2b0 821do_op_le:\r
fecee241 822 jr z,l0af8h\r
a16ba2b0 823do_op_lt:\r
fecee241
L
824 jr c,l0af8h\r
825 jr l0af7h\r
a16ba2b0 826do_op_gt:\r
fecee241 827 jr z,l0af7h\r
a16ba2b0 828do_op_ge:\r
fecee241 829 jr nc,l0af8h\r
a16ba2b0 830l0af7h:\r
fecee241 831 inc hl\r
a16ba2b0 832l0af8h:\r
fecee241
L
833 and a\r
834 ret\r
a16ba2b0
L
835\r
836do_rel_op:\r
fecee241
L
837 push hl\r
838 ld hl,tab_eq_le_ge\r
839 call lookupch\r
840 jr nc,l0b28h\r
841 ld a,b\r
842 or a\r
843 jr z,l0b1ch\r
844 ld a,(de)\r
845 cp '='\r
846 jr nz,l0b11h\r
847 inc de\r
848 inc b\r
849 inc b\r
850 jr l0b1ch\r
a16ba2b0
L
851\r
852l0b11h:\r
fecee241
L
853 bit 0,b\r
854 jr z,l0b1ch\r
855 cp '>'\r
856 jr nz,l0b1ch\r
857 inc de\r
858 ld b,005h\r
a16ba2b0 859l0b1ch:\r
fecee241
L
860 ld hl,tab_func_eqlege\r
861 ld a,b\r
862 add a,a\r
863 call ADD_HL_A\r
864 ld c,(hl)\r
865 inc hl\r
866 ld b,(hl)\r
867 scf\r
a16ba2b0 868l0b28h:\r
fecee241
L
869 pop hl\r
870 ret\r
a16ba2b0
L
871\r
872tab_eq_le_ge:\r
873 db '=<>',0\r
874\r
875tab_func_eqlege:\r
fecee241
L
876 defw do_op_eq\r
877 defw do_op_lt\r
878 defw do_op_gt\r
879 defw do_op_le\r
880 defw do_op_ge\r
881 defw do_op_ne\r
a16ba2b0
L
882\r
883do_subexpr:\r
fecee241
L
884 call do_factor\r
885 ret c\r
a16ba2b0 886l0b3eh:\r
fecee241
L
887 call do_binary_op\r
888 push hl\r
889 push bc\r
890 call do_factor\r
891 pop bc\r
892 ex de,hl\r
893 ex (sp),hl\r
894 jr nc,l0b52h\r
895 pop de\r
896 ld a,b\r
897 or c\r
898 ret z\r
899 jp ERROR\r
a16ba2b0
L
900\r
901l0b52h:\r
fecee241
L
902 ld a,b\r
903 or c\r
904 push bc\r
905 ret nz\r
906 pop bc\r
a16ba2b0 907do_op_add:\r
fecee241 908 add hl,de\r
a16ba2b0 909l0b58h:\r
fecee241
L
910 pop de\r
911 jr l0b3eh\r
a16ba2b0
L
912\r
913do_op_sub:\r
fecee241
L
914 and a\r
915 sbc hl,de\r
916 jr l0b58h\r
a16ba2b0
L
917\r
918do_op_mlt:\r
29605004
L
919 push bc\r
920 if CPU_Z180\r
a16ba2b0
L
921 ld b,h\r
922 ld c,e\r
923 ld h,e\r
924 ld e,l\r
925 mlt bc\r
926 mlt de\r
927 mlt hl\r
928 ld a,h\r
929 add a,c\r
930 add a,e\r
931 ld h,a\r
29605004
L
932 else\r
933 ld b,h\r
934 ld c,l\r
935 ld hl,0\r
936 ld a,16\r
937mlt_1:\r
938 add hl,hl\r
939 ex de,hl\r
940 add hl,hl\r
941 ex de,hl\r
942 jr nc,mlt_2\r
943 add hl,bc\r
944mlt_2:\r
945 dec a\r
946 jr nz,mlt_1\r
947 endif\r
948 pop bc\r
949 jr l0b58h\r
a16ba2b0
L
950\r
951do_op_div:\r
fecee241
L
952 call DIV_HL_DE\r
953 jr l0b58h\r
a16ba2b0
L
954\r
955do_op_mod:\r
fecee241
L
956 call DIV_HL_DE\r
957 ex de,hl\r
958 jr l0b58h\r
a16ba2b0
L
959\r
960DIV_HL_DE:\r
fecee241
L
961 push bc\r
962 ex de,hl\r
963 ld b,h\r
964 ld c,l\r
965 ld hl,0\r
966 ld a,16\r
a16ba2b0 967l0b89h:\r
fecee241
L
968 push af\r
969 add hl,hl\r
970 ex de,hl\r
971 xor a\r
972 add hl,hl\r
973 ex de,hl\r
974 adc a,l\r
975 sub c\r
976 ld l,a\r
977 ld a,h\r
978 sbc a,b\r
979 ld h,a\r
980 inc de\r
981 jr nc,l0b9ah\r
982 add hl,bc\r
983 dec de\r
a16ba2b0 984l0b9ah:\r
fecee241
L
985 pop af\r
986 dec a\r
987 jr nz,l0b89h\r
988 ex de,hl\r
989 pop bc\r
990 ret\r
a16ba2b0
L
991\r
992do_op_and:\r
fecee241
L
993 ld a,h\r
994 and d\r
995 ld h,a\r
996 ld a,l\r
997 and e\r
998 ld l,a\r
999 jr l0b58h\r
a16ba2b0
L
1000\r
1001do_op_or:\r
fecee241
L
1002 ld a,h\r
1003 or d\r
1004 ld h,a\r
1005 ld a,l\r
1006 or e\r
1007 ld l,a\r
1008 jr l0b58h\r
a16ba2b0
L
1009\r
1010do_op_xor:\r
fecee241
L
1011 ld a,h\r
1012 xor d\r
1013 ld h,a\r
1014 ld a,l\r
1015 xor e\r
1016 ld l,a\r
1017 jr l0b58h\r
a16ba2b0
L
1018\r
1019do_binary_op:\r
fecee241
L
1020 push hl\r
1021 ld hl,tab_op_a\r
1022 call lookupch\r
1023 ld a,b\r
1024 ld hl,tab_func_opa\r
1025 add a,a\r
1026 call ADD_HL_A\r
1027 ld c,(hl)\r
1028 inc hl\r
1029 ld b,(hl)\r
1030 pop hl\r
1031 ret\r
a16ba2b0
L
1032\r
1033tab_op_a:\r
1034 DB '+-*/%&!#',0\r
1035tab_func_opa:\r
fecee241
L
1036 defw do_op_add\r
1037 defw do_op_sub\r
1038 defw do_op_mlt\r
1039 defw do_op_div\r
1040 defw do_op_mod\r
1041 defw do_op_and\r
1042 defw do_op_or\r
1043 defw do_op_xor\r
1044 defw 0\r
a16ba2b0
L
1045\r
1046fact_factor:\r
fecee241
L
1047 call do_factor\r
1048 ret nc\r
1049 jp ERROR\r
a16ba2b0
L
1050\r
1051do_factor:\r
fecee241
L
1052 call chk.sp\r
1053 call get.number\r
1054 ret nc\r
1055 inc de\r
1056 ld hl,TOPRAM\r
1057 cp 'T'\r
1058 ret z\r
1059 ld hl,(HILOD)\r
1060 cp 'H'\r
1061 ret z\r
1062 ld hl,(MAXLOD)\r
1063 cp 'M'\r
1064 ret z\r
1065 ld hl,TPA\r
1066 cp 'L'\r
1067 ret z\r
1068 ld hl,(offs.@)\r
1069 cp '@'\r
1070 ret z\r
1071 ld hl,(OFFS.pc)\r
1072 cp '$'\r
1073 ret z\r
1074 cp '-'\r
1075 jr z,fact_factneg\r
1076 cp '~'\r
1077 jr z,fact_factinv\r
1078 cp '+'\r
1079 jr z,fact_factor\r
1080 cp '^'\r
1081 jr z,fact_reg.CPU\r
1082 cp 'Y'\r
1083 jr z,fact_reg.Y\r
1084 cp '('\r
1085 jr z,fact_mem\r
1086 cp '['\r
a16ba2b0 1087 jp z,EXPR_BRCKT ;0c35 [ expression ]\r
fecee241
L
1088 cp ''''\r
1089 jr z,fact_factstring\r
1090 dec de\r
1091 scf\r
1092 ret\r
a16ba2b0
L
1093\r
1094fact_reg.Y:\r
fecee241
L
1095 call get.decdigit\r
1096 jp c,ERROR\r
1097 inc de\r
1098 add a,a\r
1099 ld hl,reg.Y\r
1100 call ADD_HL_A\r
1101 ld a,(hl)\r
1102 inc hl\r
1103 ld h,(hl)\r
1104 ld l,a\r
1105 and a\r
1106 ret\r
a16ba2b0 1107fact_factstring:\r
fecee241 1108 ld hl,0\r
a16ba2b0 1109l0c56h:\r
fecee241
L
1110 ld a,(de)\r
1111 cp ''''\r
1112 jr z,l0c62h\r
1113 and a\r
1114 ret z\r
a16ba2b0 1115l0c5dh:\r
fecee241
L
1116 ld h,l\r
1117 ld l,a\r
1118 inc de\r
1119 jr l0c56h\r
a16ba2b0
L
1120\r
1121l0c62h:\r
fecee241
L
1122 inc de\r
1123 ld a,(de)\r
1124 cp ''''\r
1125 jr z,l0c5dh\r
1126 sub '.'\r
1127 or a\r
1128 ret nz\r
1129 inc de\r
1130 set 7,l\r
1131 ret\r
a16ba2b0
L
1132\r
1133fact_reg.CPU:\r
fecee241
L
1134 call sub_1315h\r
1135 jr nc,l0cbbh\r
1136 ld a,(hl)\r
1137 inc hl\r
1138 ld h,(hl)\r
1139 ld l,a\r
1140 and a\r
1141 bit 0,c\r
1142 ret nz\r
1143 ld h,000h\r
1144 ret\r
a16ba2b0
L
1145\r
1146fact_factneg:\r
fecee241
L
1147 call fact_factor\r
1148 dec hl\r
a16ba2b0 1149cpl.hl:\r
fecee241
L
1150 ld a,h\r
1151 cpl\r
1152 ld h,a\r
1153 ld a,l\r
1154 cpl\r
1155 ld l,a\r
1156 ret\r
a16ba2b0 1157fact_factinv:\r
fecee241
L
1158 call fact_factor\r
1159 jr cpl.hl\r
a16ba2b0
L
1160\r
1161fact_mem:\r
fecee241
L
1162 call EXPR1\r
1163 jr c,l0cbbh\r
1164 ld a,(de)\r
1165 cp ')'\r
1166 jr nz,l0cbbh\r
1167 inc de\r
a16ba2b0 1168 comst\r
fecee241 1169 ld a,(hl)\r
a16ba2b0
L
1170 inc hl ;\r
1171 ld h,(hl) ;\r
1172 comend\r
fecee241
L
1173 ld l,a\r
1174 ld a,(de)\r
1175 inc de\r
1176 cp '.'\r
1177 ret z\r
1178 dec de\r
1179 xor a\r
1180 ld h,a\r
1181 ret\r
a16ba2b0
L
1182\r
1183EXPR_BRCKT:\r
fecee241
L
1184 call EXPR1\r
1185 jr c,l0cbbh\r
1186 ld a,(de)\r
1187 cp ']'\r
1188 inc de\r
1189 ret z\r
a16ba2b0 1190l0cbbh:\r
fecee241 1191 jp ERROR\r
a16ba2b0
L
1192\r
1193get.number:\r
fecee241
L
1194 call get.hexdigit\r
1195 ret c\r
1196 push de\r
a16ba2b0 1197l0cc3h:\r
fecee241
L
1198 inc de\r
1199 call get.hexdigit\r
1200 jr nc,l0cc3h\r
1201 pop de\r
1202 cp '.'\r
1203 jr z,l0d04h\r
1204 cp '"'\r
1205 jr z,l0ce9h\r
1206 ld hl,0\r
a16ba2b0 1207l0cd5h:\r
fecee241
L
1208 call get.hexdigit\r
1209 jr c,l0ce4h\r
1210 add hl,hl\r
1211 add hl,hl\r
1212 add hl,hl\r
1213 add hl,hl\r
1214 call ADD_HL_A\r
1215 inc de\r
1216 jr l0cd5h\r
a16ba2b0 1217l0ce4h:\r
fecee241
L
1218 xor 'H'\r
1219 ret nz\r
1220 inc de\r
1221 ret\r
a16ba2b0
L
1222\r
1223l0ce9h:\r
fecee241 1224 ld hl,0\r
a16ba2b0 1225l0cech:\r
fecee241 1226 call get.decdigit\r
a16ba2b0 1227l0cefh:\r
fecee241
L
1228 inc de\r
1229 jr c,l0cf8h\r
1230 add hl,hl\r
1231 call ADD_HL_A\r
1232 jr l0cech\r
a16ba2b0 1233l0cf8h:\r
fecee241
L
1234 cp '"'\r
1235 jp nz,ERROR\r
1236 call get.decdigit\r
1237 jr nc,l0cefh\r
1238 or a\r
1239 ret\r
a16ba2b0 1240l0d04h:\r
fecee241 1241 ld hl,0\r
a16ba2b0 1242l0d07h:\r
fecee241
L
1243 call get.decdigit\r
1244 inc de\r
1245 jr c,l0d1ah\r
1246 push bc\r
a16ba2b0 1247 add hl,hl ;0d0e hl *= 10\r
fecee241
L
1248 ld b,h\r
1249 ld c,l\r
1250 add hl,hl\r
1251 add hl,hl\r
1252 add hl,bc\r
1253 pop bc\r
1254 call ADD_HL_A\r
1255 jr l0d07h\r
a16ba2b0 1256l0d1ah:\r
fecee241
L
1257 cp '.'\r
1258 ret z\r
1259 jp ERROR\r
a16ba2b0
L
1260\r
1261sub_0d20h:\r
fecee241
L
1262 ld a,(de)\r
1263 cp 05bh\r
1264 jr l0d28h\r
a16ba2b0
L
1265\r
1266get.hexdigit:\r
fecee241 1267 ld a,(de)\r
a16ba2b0 1268sub_0d26h:\r
fecee241 1269 cp 'F'+1\r
a16ba2b0 1270l0d28h:\r
fecee241
L
1271 ccf\r
1272 ret c\r
1273 cp 'A'\r
1274 jr c,l0d32h\r
1275 sub 'A'-10\r
1276 ret\r
a16ba2b0
L
1277\r
1278get.decdigit:\r
fecee241 1279 ld a,(de)\r
a16ba2b0 1280l0d32h:\r
fecee241
L
1281 cp '9'+1\r
1282 jr l0d39h\r
a16ba2b0 1283get.bindigit:\r
fecee241
L
1284 ld a,(de)\r
1285 cp '1'+1\r
a16ba2b0 1286l0d39h:\r
fecee241
L
1287 ccf\r
1288 ret c\r
1289 cp '0'\r
1290 ret c\r
1291 sub '0'\r
1292 ret\r
a16ba2b0
L
1293\r
1294l0d41h:\r
fecee241 1295 call assert_eol\r
a16ba2b0
L
1296\r
1297prnt_cpustat:\r
fecee241
L
1298 call prnt_f\r
1299 call outbl2\r
1300 ld hl,b_0x0DFD_start\r
1301 ld de,b_0x0E1D_start\r
1302 ld b,006h\r
a16ba2b0 1303l0d52h:\r
fecee241
L
1304 call prnt_regs\r
1305 djnz l0d52h\r
1306 push hl\r
1307 push de\r
1308 ld iy,(REG.PC)\r
1309 call sub_1f77h\r
1310 exx\r
1311 ex af,af'\r
1312 call CRLF\r
1313 call prnt_f2\r
1314 call outbl2\r
1315 pop de\r
1316 pop hl\r
1317 ld b,007h\r
a16ba2b0 1318l0d6fh:\r
fecee241
L
1319 call prnt_regs\r
1320 djnz l0d6fh\r
1321 exx\r
1322 ex af,af'\r
1323 and a\r
1324 jr z,l0d7fh\r
1325 call outbl6\r
1326 call sub_1f5bh\r
a16ba2b0 1327l0d7fh:\r
fecee241 1328 jp crlf\r
a16ba2b0
L
1329\r
1330prnt_f:\r
fecee241
L
1331 ld a,(reg.f)\r
1332 call prnt_flags\r
1333 ld a,(reg.iff)\r
1334 cp 0f3h\r
1335 jp z,outbl\r
1336 ld a,'E'\r
1337 jp outchar\r
a16ba2b0
L
1338\r
1339prnt_f2:\r
fecee241
L
1340 ld a,(reg.f2)\r
1341 call prnt_flags\r
1342 jp outbl\r
a16ba2b0
L
1343\r
1344prnt_flags:\r
fecee241
L
1345 ld b,a\r
1346 ld a,'S'\r
1347 call sub_0dbeh\r
1348 ld a,'Z'\r
1349 call sub_0dbeh\r
1350 rl b\r
1351 ld a,'H'\r
1352 call sub_0dbeh\r
1353 rl b\r
1354 ld a,'V'\r
1355 call sub_0dbeh\r
1356 ld a,'N'\r
1357 call sub_0dbeh\r
1358 ld a,'C'\r
a16ba2b0 1359sub_0dbeh:\r
fecee241
L
1360 rl b\r
1361 jp c,OUTCHAR\r
1362 jp OUTBL\r
a16ba2b0
L
1363\r
1364prnt_regs:\r
fecee241
L
1365 push bc\r
1366 push de\r
1367 call PSTR\r
1368 ld a,'='\r
1369 call OUTCHAR\r
1370 ex (sp),hl\r
1371 ld e,(hl)\r
1372 inc hl\r
1373 ld d,(hl)\r
1374 inc hl\r
1375 ld a,(hl)\r
1376 inc hl\r
1377 push hl\r
1378 and a\r
1379 jr z,l0df2h\r
1380 push af\r
1381 ld a,(de)\r
1382 ld l,a\r
1383 inc de\r
1384 ld a,(de)\r
1385 ld h,a\r
1386 pop af\r
1387 dec a\r
1388 jr z,l0dedh\r
1389 call out.hl.@\r
1390 call z,outbl6\r
1391 jr l0df6h\r
a16ba2b0 1392l0dedh:\r
fecee241
L
1393 call out.hl\r
1394 jr l0df6h\r
a16ba2b0 1395l0df2h:\r
fecee241
L
1396 ld a,(de)\r
1397 call out.hex\r
a16ba2b0 1398l0df6h:\r
fecee241
L
1399 call OUTBL\r
1400 pop de\r
1401 pop hl\r
1402 pop bc\r
1403 ret\r
a16ba2b0
L
1404\r
1405b_0x0DFD_start:\r
1406 DC 'A '\r
1407 DC 'BC '\r
1408 DC 'DE '\r
1409 DC 'HL '\r
1410 DC 'SP'\r
1411 DC 'PC'\r
1412 DC 'A'''\r
1413 DC 'BC'''\r
1414 DC 'DE'''\r
1415 DC 'HL'''\r
1416 DC 'IX'\r
1417 DC 'IY'\r
1418 DC 'I'\r
1419 DB 0\r
1420\r
1421b_0x0E1D_start:\r
fecee241
L
1422 defw reg.a\r
1423 defb 000h\r
1424 defw reg.c\r
1425 defb 001h\r
1426 defw reg.e\r
1427 defb 001h\r
1428 defw reg.l\r
1429 defb 001h\r
1430 defw reg.sp\r
1431 defb 001h\r
1432 defw reg.pc\r
1433 defb 002h\r
1434 defw reg.a2\r
1435 defb 000h\r
1436 defw reg.c2\r
1437 defb 001h\r
1438 defw reg.e2\r
1439 defb 001h\r
1440 defw reg.l2\r
1441 defb 001h\r
1442 defw reg.ix\r
1443 defb 001h\r
1444 defw reg.iy\r
1445 defb 001h\r
1446 defw reg.i\r
1447 dw 0\r
a16ba2b0
L
1448\r
1449CMD.G:\r
fecee241
L
1450 sub a\r
1451 ld (TCFLG),a\r
1452 ld (XA747),a\r
1453 call EXPR\r
1454 jr c,l0e54h\r
1455 ld (REG.PC),hl\r
a16ba2b0 1456l0e54h:\r
fecee241
L
1457 call SKIPBL\r
1458 jp z,l1183h\r
1459 cp ';'\r
1460 jp nz,ERROR\r
1461 inc de\r
1462 ld a,002h\r
1463 call sub_0f24h\r
1464 jp l1183h\r
a16ba2b0
L
1465\r
1466sub_0e68h:\r
fecee241
L
1467 ld b,BP_CNT\r
1468 ld ix,bp_tab\r
a16ba2b0 1469l0e6eh:\r
fecee241
L
1470 ld a,(ix+000h)\r
1471 and 0f1h\r
1472 ld (ix+000h),a\r
1473 call sub_11c5h\r
1474 ld de,BP_SIZE\r
1475 add ix,de\r
1476 djnz l0e6eh\r
1477 ret\r
a16ba2b0
L
1478\r
1479CMD.B:\r
fecee241
L
1480 call SKIPBL\r
1481 jr z,l0ecbh\r
1482 inc de\r
1483 cp 'X'\r
1484 jr z,l0e91h\r
1485 dec de\r
1486 ld a,001h\r
1487 jp sub_0f24h\r
a16ba2b0 1488l0e91h:\r
fecee241
L
1489 call SKIPBL\r
1490 jr z,l0ea6h\r
a16ba2b0 1491l0e96h:\r
fecee241
L
1492 call EXPR\r
1493 jp c,assert_eol\r
1494 push de\r
1495 call sub_0ea7h\r
1496 pop de\r
1497 call skip_to_nextarg\r
1498 jr l0e96h\r
a16ba2b0 1499l0ea6h:\r
fecee241 1500 scf\r
a16ba2b0 1501sub_0ea7h:\r
fecee241
L
1502 ld b,BP_CNT\r
1503 ld ix,bp_tab\r
a16ba2b0 1504l0eadh:\r
fecee241
L
1505 push af\r
1506 jr c,l0ebbh\r
1507 ld e,(ix+002h)\r
1508 ld d,(ix+003h)\r
1509 call CP.HL.DE\r
1510 jr nz,l0ec2h\r
a16ba2b0 1511l0ebbh:\r
fecee241
L
1512 ld (ix+000h),000h\r
1513 call sub_11c5h\r
a16ba2b0 1514l0ec2h:\r
fecee241
L
1515 ld de,BP_SIZE\r
1516 add ix,de\r
1517 pop af\r
1518 djnz l0eadh\r
1519 ret\r
a16ba2b0 1520l0ecbh:\r
fecee241
L
1521 ld b,BP_CNT\r
1522 ld ix,bp_tab\r
a16ba2b0 1523l0ed1h:\r
fecee241
L
1524 bit 0,(ix+000h)\r
1525 jr z,l0f1ch\r
1526 ld a,'R'\r
1527 bit 4,(ix+000h)\r
1528 jr nz,l0ee1h\r
1529 ld a,' '\r
a16ba2b0 1530l0ee1h:\r
fecee241
L
1531 call OUTCHAR\r
1532 call OUTBL\r
1533 ld l,(ix+002h)\r
1534 ld h,(ix+003h)\r
1535 call out.hl.@\r
1536 call outbl2\r
1537 ld a,':'\r
1538 call OUTCHAR\r
1539 ld l,(ix+004h)\r
1540 ld h,(ix+005h)\r
1541 call out.hl\r
1542 ld l,(ix+006h)\r
1543 ld h,(ix+007h)\r
1544 ld a,h\r
1545 or l\r
1546 jr z,l0f19h\r
1547 call outbl4\r
1548 ld a,'I'\r
1549 call OUTCHAR\r
1550 call outbl2\r
1551 call PSTR\r
a16ba2b0 1552l0f19h:\r
fecee241 1553 call CRLF\r
a16ba2b0 1554l0f1ch:\r
fecee241
L
1555 ld de,BP_SIZE\r
1556 add ix,de\r
1557 djnz l0ed1h\r
1558 ret\r
a16ba2b0
L
1559\r
1560sub_0f24h:\r
fecee241
L
1561 ld b,a\r
1562 call SKIPBL\r
1563 ret z\r
1564 cp 'R'\r
1565 jr nz,l0f30h\r
1566 inc de\r
1567 set 4,b\r
a16ba2b0 1568l0f30h:\r
fecee241
L
1569 push bc\r
1570 call EXPR\r
1571 jp c,ERROR\r
1572 pop bc\r
1573 bit 0,b\r
1574 push bc\r
1575 push de\r
1576 push hl\r
1577 call nz,sub_0ea7h\r
1578 pop hl\r
1579 call sub_0f68h\r
1580 pop de\r
1581 ld (ix+002h),l\r
1582 ld (ix+003h),h\r
1583 call sub_0f80h\r
1584 ld (ix+004h),l\r
1585 ld (ix+005h),h\r
1586 call sub_0f91h\r
1587 ld (ix+006h),l\r
1588 ld (ix+007h),h\r
1589 call skip_to_nextarg\r
1590 pop af\r
1591 ld (ix+000h),a\r
1592 and 00fh\r
1593 jr sub_0f24h\r
a16ba2b0 1594sub_0f68h:\r
fecee241
L
1595 ld b,BP_CNT\r
1596 ld ix,bp_tab\r
a16ba2b0 1597l0f6eh:\r
fecee241
L
1598 ld a,(ix+000h)\r
1599 and 00fh\r
1600 ret z\r
1601 push bc\r
1602 ld bc,BP_SIZE\r
1603 add ix,bc\r
1604 pop bc\r
1605 djnz l0f6eh\r
1606 jp ERROR\r
a16ba2b0
L
1607\r
1608sub_0f80h:\r
fecee241
L
1609 call SKIPBL\r
1610 ld hl,1\r
1611 cp 03ah\r
1612 ret nz\r
1613 inc de\r
1614 call EXPR\r
1615 jp c,ERROR\r
1616 ret\r
a16ba2b0 1617sub_0f91h:\r
fecee241
L
1618 call SKIPBL\r
1619 cp 049h\r
1620 ld hl,0\r
1621 ret nz\r
1622 inc de\r
1623 call SKIPBL\r
1624 push de\r
1625 call EXPR\r
1626 jp c,ERROR\r
1627 ex de,hl\r
1628 pop de\r
1629 push de\r
1630 sbc hl,de\r
1631 ld b,h\r
1632 ld c,l\r
1633 ld hl,(sexp1)\r
1634 push hl\r
1635 add hl,bc\r
1636 ld de,sexpbufe\r
1637 call CP.HL.DE\r
1638 jp nc,ERROR\r
1639 pop hl\r
1640 ld (sexp2),hl\r
1641 pop de\r
1642 ex de,hl\r
1643 ldir\r
1644 xor a\r
1645 ld (de),a\r
1646 inc de\r
1647 ex de,hl\r
1648 ld (sexp1),hl\r
1649 ld hl,(sexp2)\r
1650 ret\r
a16ba2b0
L
1651\r
1652bpddtz:\r
1653 if ROMSYS\r
29605004
L
1654 ld h,ROMEN\r
1655 jr z,l0fd2h\r
1656 inc h\r
a16ba2b0 1657l0fd2h:\r
29605004
L
1658 push hl ;save rom enable stat\r
1659 endif\r
1660 push bc\r
1661 push de\r
1662 push ix\r
1663 push iy\r
1664 ld a,i\r
1665 ld h,a\r
1666 ld l,000h\r
1667 push hl ;save I register\r
1668\r
1669 if CPU_Z180\r
1670 ld a,0f3h ;DI\r
1671 jp po,l0fe6h\r
1672 ld a,0fbh ;EI\r
1673 else ;NMOS Z80 design flaw\r
1674 call getiff ;return Carry set, if INTs are disabled.\r
1675 ld a,0f3h ;DI\r
1676 jr c,l0fe6h\r
1677 ld a,0fbh ;EI\r
a16ba2b0 1678 endif\r
a16ba2b0 1679l0fe6h:\r
29605004
L
1680 ld (reg.iff),a\r
1681 ld hl,ivtab\r
1682 ld a,h\r
1683 ld i,a\r
1684 call ddtei\r
1685 ex af,af'\r
1686 push af\r
1687 exx\r
1688 push bc\r
1689 push de\r
1690 push hl\r
1691 call bp.unset\r
1692 if CPU_Z180\r
1693 in0 a,(itc)\r
1694 jp p,l1017h\r
1695 res TRAP,a\r
1696 out0 (itc),a\r
1697 bit UFO,a\r
1698 jr z,l1011h\r
1699 ld hl,(REG.PC)\r
1700 dec hl\r
1701 ld (REG.PC),hl\r
a16ba2b0 1702l1011h:\r
29605004
L
1703 ld hl,MSG_trap\r
1704 call PSTR\r
a16ba2b0 1705l1017h:\r
29605004
L
1706 endif\r
1707\r
1708 ld a,(XBFE8)\r
1709 dec a\r
1710 jr z,l1051h\r
1711 call inchar\r
1712 jr c,l102eh\r
1713 call sub_1059h\r
1714 and a\r
1715 jp z,l1183h\r
1716 and 083h\r
1717 jp z,l284ah\r
a16ba2b0 1718l102eh:\r
29605004 1719 call sub_0e68h\r
fecee241 1720 call prnt_cpustat\r
29605004 1721 jp DDTZML\r
a16ba2b0 1722\r
29605004 1723 if CPU_Z180\r
a16ba2b0
L
1724MSG_trap:\r
1725 DB CR,LF,'Undefined opcode trap'\r
1726 DB CR,LF,0\r
29605004 1727 endif\r
a16ba2b0
L
1728\r
1729l1051h:\r
fecee241
L
1730 ld (XBFE8),a\r
1731 ld c,007h\r
1732 jp l119fh\r
a16ba2b0 1733sub_1059h:\r
fecee241
L
1734 ld a,080h\r
1735 ex af,af'\r
1736 sub a\r
1737 ld (XA747),a\r
1738 ld b,BP_CNT\r
1739 ld ix,bp_tab\r
a16ba2b0 1740l1066h:\r
fecee241
L
1741 ld a,(ix+000h)\r
1742 and 007h\r
1743 jr z,l107eh\r
1744 ld e,(ix+002h)\r
1745 ld d,(ix+003h)\r
1746 ld hl,(REG.PC)\r
1747 call CP.HL.DE\r
1748 push bc\r
1749 call z,sub_1087h\r
1750 pop bc\r
a16ba2b0 1751l107eh:\r
fecee241
L
1752 ld de,BP_SIZE\r
1753 add ix,de\r
1754 djnz l1066h\r
1755 ex af,af'\r
1756 ret\r
a16ba2b0 1757sub_1087h:\r
fecee241
L
1758 ex af,af'\r
1759 res 7,a\r
1760 ex af,af'\r
1761 ld e,(ix+006h)\r
1762 ld d,(ix+007h)\r
1763 ld a,d\r
1764 or e\r
1765 ld hl,0ffffh\r
1766 call nz,EXPR\r
1767 ld a,h\r
1768 or l\r
1769 jr z,l10aeh\r
1770 ld e,(ix+004h)\r
1771 ld d,(ix+005h)\r
1772 dec de\r
1773 ld a,d\r
1774 or e\r
1775 jr z,l10b9h\r
1776 ld (ix+004h),e\r
1777 ld (ix+005h),d\r
a16ba2b0 1778l10aeh:\r
fecee241
L
1779 bit 4,(ix+000h)\r
1780 ret z\r
1781 ld a,001h\r
1782 ld (XA747),a\r
1783 ret\r
a16ba2b0 1784l10b9h:\r
fecee241
L
1785 ex af,af'\r
1786 or (ix+000h)\r
1787 ex af,af'\r
a16ba2b0
L
1788 ret\r
1789\r
1790bp.unset:\r
fecee241
L
1791 ld b,BP_CNT\r
1792 ld ix,bp_tab\r
a16ba2b0 1793l10c5h:\r
fecee241
L
1794 bit 5,(ix+000h)\r
1795 res 5,(ix+000h)\r
1796 jr z,l10e7h\r
1797 ld l,(ix+002h)\r
1798 ld h,(ix+003h)\r
cdc4625b 1799 ld a,(ddtzrst)\r
fecee241
L
1800 comst\r
1801 cp (hl)\r
a16ba2b0 1802 comend\r
fecee241
L
1803 jr nz,l10e7h\r
1804 ld a,(ix+001h)\r
1805 comst\r
1806 ld (hl),a\r
a16ba2b0
L
1807 comend\r
1808l10e7h:\r
fecee241
L
1809 res 3,(ix+000h)\r
1810 ld de,BP_SIZE\r
1811 add ix,de\r
1812 djnz l10c5h\r
1813 ret\r
a16ba2b0 1814sub_10f3h:\r
fecee241
L
1815 ld b,BP_CNT\r
1816 ld ix,bp_tab\r
a16ba2b0 1817l10f9h:\r
fecee241
L
1818 ld a,(ix+000h)\r
1819 and 003h\r
1820 jr z,l110dh\r
1821 ld e,(ix+002h)\r
1822 ld d,(ix+003h)\r
1823 ld hl,(REG.PC)\r
1824 call CP.HL.DE\r
1825 ret z\r
a16ba2b0 1826l110dh:\r
fecee241
L
1827 ld de,BP_SIZE\r
1828 add ix,de\r
1829 djnz l10f9h\r
1830 sub a\r
1831 inc a\r
1832 ret\r
a16ba2b0 1833sub_1117h:\r
fecee241
L
1834 call sub_0f68h\r
1835 ld (ix+004h),001h\r
1836 ld (ix+005h),000h\r
1837 ld (ix+002h),l\r
1838 ld (ix+003h),h\r
1839 ld (ix+006h),000h\r
1840 ld (ix+007h),000h\r
1841 ld a,(XBFE8)\r
1842 and a\r
1843 ld a,008h\r
1844 jr nz,l113ah\r
1845 ld a,004h\r
a16ba2b0 1846l113ah:\r
fecee241
L
1847 ld (ix+000h),a\r
1848 ret\r
a16ba2b0
L
1849\r
1850bp.set:\r
fecee241
L
1851 ld b,BP_CNT\r
1852 ld ix,bp_tab\r
a16ba2b0 1853l1144h:\r
fecee241
L
1854 ld a,(ix+000h)\r
1855 and c\r
1856 jr z,l117bh\r
1857 set 5,(ix+000h)\r
1858 ld l,(ix+002h)\r
1859 ld h,(ix+003h)\r
1860\r
1861\r
cdc4625b 1862 ld a,(ddtzrst)\r
fecee241
L
1863 comst\r
1864 ld e,(hl)\r
1865 ld (hl),a\r
a16ba2b0 1866 comend\r
fecee241
L
1867 ld (ix+001h),e\r
1868 and 038h\r
1869 ld h,0\r
1870 ld l,a\r
1871 ld de,bpent\r
a16ba2b0 1872 comst ;\r
fecee241
L
1873 ld (hl),0c3h\r
1874 inc hl\r
1875 ld (hl),e\r
1876 inc hl\r
1877 ld (hl),d\r
a16ba2b0
L
1878 comend\r
1879\r
fecee241 1880\r
a16ba2b0 1881l117bh:\r
fecee241
L
1882 ld de,BP_SIZE\r
1883 add ix,de\r
1884 djnz l1144h\r
a16ba2b0 1885 ret\r
fecee241 1886\r
a16ba2b0 1887l1183h:\r
fecee241
L
1888 sub a\r
1889 ld (XBFE8),a\r
1890 ld a,(XA747)\r
1891 and a\r
1892 call nz,prnt_cpustat\r
1893 call sub_10f3h\r
1894 ld c,007h\r
1895 jr nz,l119fh\r
1896 ld a,001h\r
1897 ld (XBFE8),a\r
1898 call sub_26e7h\r
1899 ld c,008h\r
a16ba2b0 1900l119fh:\r
fecee241 1901 call bp.set\r
a16ba2b0 1902 ld sp,$stack ;11a2 set/restore user cpu state\r
fecee241
L
1903 pop hl\r
1904 pop de\r
1905 pop bc\r
1906 pop af\r
1907 exx\r
1908 ex af,af'\r
1909 pop af\r
1910 ld i,a\r
1911 pop iy\r
1912 pop ix\r
1913 pop de\r
1914 pop bc\r
a16ba2b0 1915 if ROMSYS\r
fecee241
L
1916 pop hl\r
1917 ld a,l\r
1918 and M_MWI\r
1919 ld l,a\r
1920 di\r
1921 in0 a,(dcntl)\r
1922 and ~M_MWI\r
1923 or l\r
1924 ld l,a\r
1925 ld a,h\r
a16ba2b0
L
1926 else\r
1927 pop hl\r
1928 di\r
1929 endif\r
1930 jp $go ;11c2 common ram, switch banks and go to user prog\r
1931\r
1932sub_11c5h:\r
fecee241
L
1933 ld a,(ix+000h)\r
1934 and 003h\r
1935 ret nz\r
1936 ld e,(ix+006h)\r
1937 ld d,(ix+007h)\r
1938 ld a,d\r
1939 or e\r
1940 ret z\r
1941 push bc\r
1942 ld h,d\r
1943 ld l,e\r
1944 sub a\r
1945 ld (ix+006h),a\r
1946 ld (ix+007h),a\r
1947 ld bc,0ffffh\r
1948 cpir\r
a16ba2b0 1949l11e3h:\r
fecee241
L
1950 push de\r
1951 ld de,(sexp1)\r
1952 call CP.HL.DE\r
1953 pop de\r
1954 jr nc,l11f9h\r
1955 call sub_11ffh\r
a16ba2b0 1956l11f1h:\r
fecee241
L
1957 ld a,(hl)\r
1958 ldi\r
1959 and a\r
1960 jr nz,l11f1h\r
1961 jr l11e3h\r
a16ba2b0 1962l11f9h:\r
fecee241
L
1963 ld (sexp1),de\r
1964 pop bc\r
1965 ret\r
a16ba2b0 1966sub_11ffh:\r
fecee241
L
1967 ld iy,bp_tab\r
1968 push de\r
a16ba2b0 1969l1204h:\r
fecee241
L
1970 ld e,(iy+006h)\r
1971 ld d,(iy+007h)\r
1972 call CP.HL.DE\r
1973 jr z,l1216h\r
1974 ld de,BP_SIZE\r
1975 add iy,de\r
1976 jr l1204h\r
a16ba2b0 1977l1216h:\r
fecee241
L
1978 pop de\r
1979 ld (iy+006h),e\r
1980 ld (iy+007h),d\r
1981 ret\r
a16ba2b0
L
1982\r
1983CMD.Y:\r
fecee241
L
1984 call get.decdigit\r
1985 jr c,l122fh\r
1986 inc de\r
1987 push af\r
1988 call assert_eol\r
1989 pop af\r
1990 call sub_1248h\r
1991 jp l127ch\r
a16ba2b0 1992l122fh:\r
fecee241
L
1993 call assert_eol\r
1994 xor a\r
a16ba2b0 1995l1233h:\r
fecee241
L
1996 push af\r
1997 call sub_1248h\r
1998 call outbl4\r
1999 pop af\r
2000 inc a\r
2001 bit 0,a\r
2002 push af\r
2003 call z,CRLF\r
2004 pop af\r
2005 cp LF\r
2006 jr c,l1233h\r
2007 ret\r
a16ba2b0
L
2008\r
2009sub_1248h:\r
fecee241
L
2010 ld c,a\r
2011 ld b,0\r
2012 add a,'0'+080h\r
2013 ld de,msg.Y+1\r
2014 ld (de),a\r
2015 dec de\r
2016 ld hl,reg.Y\r
2017 add hl,bc\r
2018 add hl,bc\r
2019 ex de,hl\r
2020 ld c,003h\r
2021 jp l129ah\r
a16ba2b0
L
2022\r
2023CMD.X:\r
fecee241
L
2024 call SKIPBL\r
2025 call sub_1315h\r
2026 jp nc,l0d41h\r
2027 call assert_eol\r
2028 ld a,b\r
2029 cp 01fh\r
2030 jr z,l12c6h\r
2031 cp 020h\r
2032 jr z,l12b6h\r
2033 ex de,hl\r
2034 ld hl,b_0x132A_start\r
2035 call sub_0a48h\r
a16ba2b0 2036l1279h:\r
fecee241 2037 call l129ah\r
a16ba2b0 2038l127ch:\r
fecee241
L
2039 call OUTBL\r
2040 push de\r
2041 push bc\r
2042 call INLINE\r
2043 call SKIPBL\r
2044 jr z,l1297h\r
2045 call get_arg\r
2046 ld b,h\r
2047 ld c,l\r
2048 pop af\r
2049 pop hl\r
2050 ld (hl),c\r
2051 bit 0,a\r
2052 ret z\r
2053 inc hl\r
2054 ld (hl),b\r
2055 ret\r
a16ba2b0 2056l1297h:\r
fecee241
L
2057 pop af\r
2058 pop hl\r
2059 ret\r
a16ba2b0 2060l129ah:\r
fecee241
L
2061 ld b,c\r
2062 call PSTR\r
2063 ld a,'='\r
2064 call OUTCHAR\r
2065 ld a,(de)\r
2066 bit 0,b\r
2067 jp z,out.hex\r
2068 ld l,a\r
2069 inc de\r
2070 ld a,(de)\r
2071 dec de\r
2072 ld h,a\r
2073 bit 1,b\r
2074 jp z,out.hl\r
2075 jp out.hl.@\r
a16ba2b0
L
2076\r
2077l12b6h:\r
fecee241
L
2078 call prnt_f\r
2079 ld a,0f3h\r
2080 ld (reg.iff),a\r
2081 scf\r
2082 call sub_12d1h\r
2083 ld (reg.f),a\r
2084 ret\r
a16ba2b0
L
2085\r
2086l12c6h:\r
fecee241
L
2087 call prnt_f2\r
2088 and a\r
2089 call sub_12d1h\r
2090 ld (reg.f2),a\r
2091 ret\r
a16ba2b0
L
2092\r
2093sub_12d1h:\r
fecee241
L
2094 ex af,af'\r
2095 ld b,000h\r
2096 call outbl\r
2097 call assert_eol\r
2098 call inline\r
a16ba2b0 2099l12ddh:\r
fecee241
L
2100 call skipbl\r
2101 ld a,b\r
2102 ret z\r
2103 push bc\r
2104 ld hl,tab_pr_flags\r
2105 call lookupch\r
2106 jp nc,error\r
2107 ld a,b\r
2108 cp 008h\r
2109 jr z,l12feh\r
2110 inc b\r
2111 ld a,001h\r
2112 jr l12f7h\r
a16ba2b0 2113l12f6h:\r
fecee241 2114 rlca\r
a16ba2b0 2115l12f7h:\r
fecee241
L
2116 djnz l12f6h\r
2117 pop bc\r
2118 or b\r
2119 ld b,a\r
2120 jr l12ddh\r
a16ba2b0 2121l12feh:\r
fecee241
L
2122 ex af,af'\r
2123 jp nc,ERROR\r
2124 ex af,af'\r
2125 ld a,0FBh\r
2126 ld (reg.iff),a\r
2127 pop bc\r
2128 jr l12ddh\r
a16ba2b0
L
2129\r
2130tab_pr_flags:\r
2131 db 'CNV H ZSE'\r
2132 db 0\r
2133\r
2134sub_1315h:\r
fecee241
L
2135 call sub_0a0eh\r
2136 ret nc\r
2137 ld a,b\r
2138 add a,b\r
2139 add a,b\r
2140 ld hl,b_0x136C_start\r
2141 call ADD_HL_A\r
2142 ld c,(hl)\r
2143 inc hl\r
2144 ld a,(hl)\r
2145 inc hl\r
2146 ld h,(hl)\r
2147 ld l,a\r
2148 scf\r
2149 ret\r
a16ba2b0
L
2150\r
2151b_0x132A_start:\r
29605004
L
2152 if ROMSYS\r
2153 DC 'ROMSEL'\r
2154 endif\r
2155 if CPU_Z180\r
a16ba2b0
L
2156 DC 'CBAR'\r
2157 DC 'BBR'\r
29605004
L
2158 else\r
2159 DC 'BNK'\r
2160 endif\r
a16ba2b0
L
2161 DC 'BC'''\r
2162 DC 'DE'''\r
2163 DC 'HL'''\r
2164 DC 'BC'\r
2165 DC 'DE'\r
2166 DC 'HL'\r
2167 DC 'A'''\r
2168 DC 'B'''\r
2169 DC 'C'''\r
2170 DC 'D'''\r
2171 DC 'E'''\r
2172 DC 'H'''\r
2173 DC 'L'''\r
2174 DC 'A'\r
2175 DC 'B'\r
2176 DC 'C'\r
2177 DC 'D'\r
2178 DC 'E'\r
2179 DC 'H'\r
2180 DC 'L'\r
2181 DC 'IX'\r
2182 DC 'IY'\r
2183 DC 'SP'\r
2184 DC 'PC'\r
2185 DC 'X'\r
2186 DC 'Y'\r
2187 DC 'S'\r
2188 DC 'P'\r
2189 DC 'I'\r
2190 DC 'F'''\r
2191 DC 'F'\r
a16ba2b0
L
2192 DB 0\r
2193b_0x136C_start:\r
29605004 2194 if ROMSYS\r
fecee241
L
2195 defb 000h\r
2196 defw uromen\r
29605004
L
2197 endif\r
2198 if CPU_Z180\r
fecee241
L
2199 defb 000h\r
2200 defw ucbar\r
2201 defb 000h\r
2202 defw ubbr\r
29605004 2203 else\r
fecee241
L
2204 defb 000h\r
2205 defw ubnk\r
29605004 2206 endif\r
fecee241
L
2207 defb 003h\r
2208 defw reg.c2\r
2209 defb 003h\r
2210 defw reg.e2\r
2211 defb 003h\r
2212 defw reg.l2\r
2213 defb 003h\r
2214 defw reg.c\r
2215 defb 003h\r
2216 defw reg.e\r
2217 defb 003h\r
2218 defw reg.l\r
2219 defb 000h\r
2220 defw reg.a2\r
2221 defb 000h\r
2222 defw reg.b2\r
2223 defb 000h\r
2224 defw reg.c2\r
2225 defb 000h\r
2226 defw reg.d2\r
2227 defb 000h\r
2228 defw reg.e2\r
2229 defb 000h\r
2230 defw reg.h2\r
2231 defb 000h\r
2232 defw reg.l2\r
2233 defb 000h\r
2234 defw reg.a\r
2235 defb 000h\r
2236 defw reg.b\r
2237 defb 000h\r
2238 defw reg.c\r
2239 defb 000h\r
2240 defw reg.d\r
2241 defb 000h\r
2242 defw reg.e\r
2243 defb 000h\r
2244 defw reg.h\r
2245 defb 000h\r
2246 defw reg.l\r
2247 defb 003h\r
2248 defw reg.ix\r
2249 defb 003h\r
2250 defw reg.iy\r
2251 defb 003h\r
2252 defw reg.sp\r
2253 defb 003h\r
2254 defw reg.pc\r
2255 defb 003h\r
2256 defw reg.ix\r
2257 defb 003h\r
2258 defw reg.iy\r
2259 defb 003h\r
2260 defw reg.sp\r
2261 defb 003h\r
2262 defw reg.pc\r
2263 defb 000h\r
2264 defw reg.i\r
2265 defb 000h\r
2266 defw reg.f2\r
2267 defb 000h\r
2268 defw reg.f\r
a16ba2b0 2269CMD.S:\r
fecee241
L
2270 ld hl,(lst.S)\r
2271 call get_lastarg_def\r
a16ba2b0 2272l13d8h:\r
fecee241
L
2273 ld (lst.S),hl\r
2274 call out.hl.@\r
2275 call OUTBL\r
2276 comst\r
2277 ld a,(hl)\r
a16ba2b0 2278 comend\r
fecee241
L
2279 call out.hex\r
2280 call outbl2\r
2281 call INLINE\r
2282 call SKIPBL\r
2283 inc hl\r
2284 jr z,l13d8h\r
2285 dec hl\r
2286 inc de\r
2287 cp '.'\r
2288 jp z,assert_eol\r
2289 cp '-'\r
2290 jr nz,l1406h\r
2291 ld a,(de)\r
2292 or a\r
2293 dec hl\r
2294 jr z,l13d8h\r
2295 inc hl\r
a16ba2b0 2296l1406h:\r
fecee241
L
2297 dec de\r
2298 call get_bytes_m\r
2299 jr l13d8h\r
a16ba2b0
L
2300\r
2301CMD.@:\r
fecee241
L
2302 call assert_eol\r
2303 ld hl,MSG_at\r
2304 ld de,offs.@\r
2305 ld c,001h\r
2306 jp l1279h\r
a16ba2b0
L
2307MSG_at:\r
2308 dc '@'\r
2309\r
2310CMD.I:\r
fecee241
L
2311 ld hl,CMD.I\r
2312 ld (CMD_RPT),hl\r
2313 ld hl,(lst.IP)\r
2314 call get_lastarg_def\r
2315 ld (lst.IP),hl\r
2316 ld b,h\r
2317 ld c,l\r
29605004 2318 if CPU_Z180\r
fecee241
L
2319 ld a,b\r
2320 or a\r
2321 jr nz,l1442h\r
2322 ld a,c\r
2323 ld hl,ucbar\r
2324 cp cbar\r
2325 jr z,l143fh\r
2326 ld hl,ubbr\r
2327 cp bbr\r
2328 jr nz,l1442h\r
a16ba2b0 2329l143fh:\r
fecee241
L
2330 ld a,(hl)\r
2331 jr l1444h\r
a16ba2b0 2332l1442h:\r
29605004 2333 endif\r
fecee241 2334 in a,(c)\r
a16ba2b0 2335l1444h:\r
fecee241
L
2336 push af\r
2337 call out.hex\r
2338 call outbl4\r
2339 pop af\r
2340 call out.bin.b\r
2341 jp CRLF\r
a16ba2b0 2342CMD.O:\r
fecee241
L
2343 ld hl,CMD.O\r
2344 ld (CMD_RPT),hl\r
2345 ld hl,(lst.OD)\r
2346 call get_arg_def\r
2347 ld a,l\r
2348 ld (lst.OD),a\r
2349 push af\r
2350 call skip_to_nextarg\r
2351 ld hl,(lst.OP)\r
2352 call get_lastarg_def\r
2353 ld (lst.OP),hl\r
2354 ld b,h\r
2355 ld c,l\r
29605004 2356 if CPU_Z180\r
fecee241
L
2357 ld a,b\r
2358 or a\r
2359 jr nz,l1489h\r
2360 ld a,c\r
2361 ld hl,ucbar\r
2362 cp cbar\r
2363 jr z,l148dh\r
2364 ld hl,ubbr\r
2365 cp bbr\r
2366 jr z,l148dh\r
2367 cp cbr\r
2368 jp z,ERROR\r
a16ba2b0 2369l1489h:\r
29605004 2370 endif\r
fecee241
L
2371 pop af\r
2372 out (c),a\r
2373 ret\r
29605004 2374 if CPU_Z180\r
a16ba2b0 2375l148dh:\r
fecee241
L
2376 pop af\r
2377 ld (hl),a\r
2378 ret\r
29605004 2379 endif\r
a16ba2b0
L
2380\r
2381CMD.V:\r
2382 call get_arg3 ;1490 get from, size, to\r
2383cmp_mem:\r
fecee241
L
2384 push bc\r
2385 comst\r
2386 ld a,(de)\r
2387 ld b,(hl)\r
a16ba2b0 2388 comend\r
fecee241
L
2389 cp b\r
2390 jr z,l14bah\r
2391 ld c,a\r
2392 call out.hl.@\r
2393 call OUTBL\r
2394 ld a,b\r
2395 call out.hex\r
2396 call outbl2\r
2397 ld a,c\r
2398 call out.hex\r
2399 call OUTBL\r
2400 ex de,hl\r
2401 call out.hl.@\r
2402 ex de,hl\r
2403 call CRLF\r
a16ba2b0 2404l14bah:\r
fecee241
L
2405 pop bc\r
2406 inc hl\r
2407 inc de\r
2408 dec bc\r
2409 ld a,b\r
2410 or c\r
2411 jr nz,cmp_mem\r
2412 ret\r
a16ba2b0
L
2413\r
2414CMD.M:\r
fecee241
L
2415 ld a,(de)\r
2416 cp 'V'\r
2417 jr nz,bm_nv\r
2418 inc de\r
a16ba2b0
L
2419bm_nv:\r
2420 push af ;14c9 save 'V' flag\r
fecee241
L
2421 call get_arg3\r
2422 push hl\r
2423 push de\r
2424 push bc\r
2425 call CP.HL.DE\r
2426 jr nc,bm_mvdown\r
2427 add hl,bc\r
2428 ex de,hl\r
2429 add hl,bc\r
2430 ex de,hl\r
2431 dec hl\r
2432 dec de\r
2433 comst\r
2434 lddr\r
a16ba2b0 2435 comend\r
fecee241 2436 jr bm_done\r
a16ba2b0 2437bm_mvdown:\r
fecee241
L
2438 comst\r
2439 ldir\r
a16ba2b0
L
2440 comend\r
2441bm_done:\r
fecee241
L
2442 pop bc\r
2443 pop de\r
2444 pop hl\r
2445 pop af\r
a16ba2b0 2446 jr z,cmp_mem ;14ed validate?\r
fecee241 2447 ret\r
a16ba2b0 2448CMD.H:\r
fecee241
L
2449 call EXPR\r
2450 jp c,l173ch\r
2451 call skip_to_nextarg\r
2452 push hl\r
2453 call EXPR\r
2454 push af\r
2455 call assert_eol\r
2456 pop af\r
2457 ex de,hl\r
2458 pop hl\r
2459 jr c,l1511h\r
2460 push hl\r
2461 push de\r
2462 add hl,de\r
2463 call l1511h\r
2464 pop de\r
2465 pop hl\r
2466 and a\r
2467 sbc hl,de\r
a16ba2b0
L
2468l1511h:\r
2469 call out.hl ;1511 val\r
fecee241 2470 call outbl2\r
a16ba2b0 2471 call sub_0928h ;1517 -val\r
fecee241 2472 call outbl4\r
a16ba2b0 2473 call out.hl.dec ;151d dec\r
fecee241 2474 call outbl2\r
a16ba2b0 2475 call out.hl.decm ;1523 -dec\r
fecee241 2476 call outbl4\r
a16ba2b0 2477 call out.bin.w ;1529 bin\r
fecee241
L
2478 call outbl2\r
2479 ld a,l\r
2480 call out.ascii\r
2481 jp CRLF\r
a16ba2b0
L
2482\r
2483CMD.Q:\r
fecee241
L
2484 ld a,(de)\r
2485 sub 'J'\r
2486 ld (lst.Qj),a\r
2487 jr nz,l153fh\r
2488 inc de\r
a16ba2b0 2489l153fh:\r
fecee241
L
2490 call get_arg_range\r
2491 push bc\r
2492 push hl\r
2493 call sub_15a7h\r
2494 pop hl\r
a16ba2b0 2495l1548h:\r
fecee241
L
2496 call sub_1594h\r
2497 jr nz,l1562h\r
2498 push bc\r
2499 push hl\r
2500 ld a,(lst.Qj)\r
2501 or a\r
2502 jr nz,l1559h\r
2503 ld bc,-8\r
2504 add hl,bc\r
a16ba2b0 2505l1559h:\r
fecee241
L
2506 ld bc,MEMDUMP_CNT\r
2507 and a\r
2508 call memdump\r
2509 pop hl\r
2510 pop bc\r
a16ba2b0 2511l1562h:\r
fecee241
L
2512 inc hl\r
2513 ex (sp),hl\r
2514 dec hl\r
2515 ld a,h\r
2516 or l\r
2517 ex (sp),hl\r
2518 jr nz,l1548h\r
2519 pop bc\r
2520 ret\r
a16ba2b0
L
2521\r
2522CMD.Z:\r
fecee241
L
2523 call get_arg_range\r
2524 push bc\r
2525 push hl\r
2526 call sub_15a7h\r
2527 ld a,b\r
2528 pop hl\r
2529 pop bc\r
2530 push hl\r
2531 ex de,hl\r
a16ba2b0 2532l1579h:\r
fecee241
L
2533 push af\r
2534 ld a,(hl)\r
2535 comst\r
2536 ld (de),a\r
a16ba2b0 2537 comend\r
fecee241
L
2538 pop af\r
2539 inc de\r
2540 cpi\r
2541 jp po,l1592h\r
2542 dec a\r
2543 jr nz,l1579h\r
2544 pop hl\r
2545 comst\r
2546 ldir\r
a16ba2b0 2547 comend\r
fecee241 2548 ret\r
a16ba2b0 2549l1592h:\r
fecee241
L
2550 pop hl\r
2551 ret\r
a16ba2b0
L
2552\r
2553sub_1594h:\r
fecee241
L
2554 push hl\r
2555 push de\r
2556 push bc\r
a16ba2b0 2557l1597h:\r
fecee241
L
2558 ld a,(de)\r
2559 comst\r
2560 cp (hl)\r
a16ba2b0 2561 comend\r
fecee241
L
2562 jr nz,l15a3h\r
2563 inc de\r
2564 inc hl\r
2565 djnz l1597h\r
a16ba2b0 2566l15a3h:\r
fecee241
L
2567 pop bc\r
2568 pop de\r
2569 pop hl\r
2570 ret\r
a16ba2b0
L
2571\r
2572sub_15a7h:\r
fecee241
L
2573 ld hl,ci.buf+1\r
2574 call get_bytes\r
2575 ld de,ci.buf+1\r
2576 and a\r
2577 sbc hl,de\r
2578 ld b,l\r
2579 ret nz\r
2580 jp ERROR\r
a16ba2b0
L
2581\r
2582get_bytes:\r
2583 db 0e6h ;15b8 and 037h (clear carry, skip next opc)\r
2584get_bytes_m:\r
2585 scf\r
2586l15bah:\r
fecee241
L
2587 push af\r
2588 call skip_to_nextarg\r
2589 cp 'W'\r
2590 jr nz,l15d9h\r
2591 inc de\r
2592 push hl\r
2593 call sub_0a68h\r
2594 ex de,hl\r
2595 pop bc\r
2596 pop af\r
2597 push af\r
2598 push bc\r
2599 ex (sp),hl\r
2600 jr nc,l15d3h\r
2601 comst\r
a16ba2b0 2602l15d3h:\r
fecee241 2603 ld (hl),e\r
a16ba2b0 2604 comend\r
fecee241
L
2605 inc hl\r
2606 ld c,d\r
2607 pop de\r
2608 jr l15e5h\r
a16ba2b0 2609l15d9h:\r
fecee241
L
2610 cp ''''\r
2611 jr z,l15f1h\r
2612 push hl\r
2613 call EXPR\r
2614 ld c,l\r
2615 pop hl\r
2616 jr c,l1626h\r
a16ba2b0 2617l15e5h:\r
fecee241
L
2618 pop af\r
2619 push af\r
2620 jr nc,l15edh\r
2621 comst\r
a16ba2b0 2622l15edh:\r
fecee241 2623 ld (hl),c\r
a16ba2b0 2624 comend\r
fecee241
L
2625 inc hl\r
2626 jr l161eh\r
a16ba2b0 2627l15f1h:\r
fecee241
L
2628 inc de\r
2629 ld a,(de)\r
2630 cp ''''\r
2631 jr z,l1607h\r
2632 or a\r
2633 jr z,l1626h\r
a16ba2b0 2634l15fah:\r
fecee241
L
2635 ld c,a\r
2636 pop af\r
2637 push af\r
2638 jr nc,l1603h\r
2639 comst\r
a16ba2b0 2640l1603h:\r
fecee241 2641 ld (hl),c\r
a16ba2b0 2642 comend\r
fecee241
L
2643 inc hl\r
2644 jr l15f1h\r
a16ba2b0 2645l1607h:\r
fecee241
L
2646 inc de\r
2647 ld a,(de)\r
2648 cp ''''\r
2649 jr z,l15fah\r
2650 cp '.'\r
2651 jr nz,l161eh\r
2652 inc de\r
2653 dec hl\r
2654 pop af\r
2655 push af\r
2656 jr nc,l161bh\r
2657 comst\r
a16ba2b0 2658l161bh:\r
fecee241 2659 set 7,(hl)\r
a16ba2b0 2660 comend\r
fecee241 2661 inc hl\r
a16ba2b0 2662l161eh:\r
fecee241
L
2663 pop af\r
2664 jr nc,l15bah\r
2665 ld (lst.S),hl\r
2666 jr l15bah\r
a16ba2b0
L
2667\r
2668l1626h:\r
fecee241
L
2669 pop af\r
2670 ret nc\r
2671 ld (lst.S),hl\r
2672 ret\r
a16ba2b0
L
2673\r
2674CMD.D:\r
fecee241
L
2675 ld hl,CMD.D\r
2676 ld (CMD_RPT),hl\r
2677 ld hl,(lst.D)\r
2678 ld bc,00080h\r
2679 call sub_0a82h\r
2680 scf\r
a16ba2b0 2681memdump:\r
fecee241
L
2682 push bc\r
2683 push de\r
2684 push hl\r
2685 ex af,af'\r
a16ba2b0 2686l1640h:\r
fecee241
L
2687 call out.hl.@\r
2688 call z,outbl2\r
2689 call OUTBL\r
2690 ld de,0\r
a16ba2b0 2691l164ch:\r
fecee241
L
2692 comst\r
2693 ld a,(hl)\r
a16ba2b0 2694 comend\r
fecee241
L
2695 inc hl\r
2696 call out.hex\r
2697 call OUTBL\r
2698 dec bc\r
2699 inc e\r
2700 ld a,e\r
2701 cp 010h\r
2702 jr z,l1668h\r
2703 and 003h\r
2704 call z,OUTBL\r
2705 ld a,b\r
2706 or c\r
2707 jr nz,l164ch\r
a16ba2b0 2708l1668h:\r
fecee241
L
2709 call OUTBL\r
2710 and a\r
2711 sbc hl,de\r
a16ba2b0 2712l166eh:\r
fecee241
L
2713 comst\r
2714 ld a,(hl)\r
a16ba2b0 2715 comend\r
fecee241
L
2716 call sub_168fh\r
2717 call OUTCHAR\r
2718 inc hl\r
2719 dec e\r
2720 jr nz,l166eh\r
2721 ex af,af'\r
2722 jr nc,l1683h\r
2723 ld (lst.D),hl\r
a16ba2b0 2724l1683h:\r
fecee241
L
2725 ex af,af'\r
2726 call CRLF\r
2727 ld a,b\r
2728 or c\r
2729 jr nz,l1640h\r
2730 pop hl\r
2731 pop de\r
2732 pop bc\r
2733 ret\r
a16ba2b0 2734sub_168fh:\r
fecee241
L
2735 and 07fh\r
2736 cp 07fh\r
2737 jr z,l1698h\r
2738 cp 020h\r
2739 ret nc\r
a16ba2b0 2740l1698h:\r
fecee241
L
2741 ld a,02eh\r
2742 ret\r
a16ba2b0
L
2743\r
2744; Read Intel Hex File from console.\r
a16ba2b0 2745CMD.R:\r
fecee241 2746 ld hl,0\r
3531528e 2747 call get_lastarg_def ;169e get offset from command line\r
fecee241
L
2748 push hl\r
2749 ld hl,0\r
2750 ld (HILOD),hl\r
a16ba2b0 2751w_recstart:\r
fecee241
L
2752 call i.getchar\r
2753 jr z,l16deh\r
2754 cp ':'\r
2755 jr nz,w_recstart\r
a16ba2b0
L
2756 ld c,0 ;16b1 init checksum\r
2757 call i.gethexbyte ;16b3 record len\r
fecee241 2758 ld b,a\r
a16ba2b0 2759 call i.gethexbyte ;16b7 address high\r
fecee241 2760 ld h,a\r
a16ba2b0 2761 call i.gethexbyte ;16bb address low\r
fecee241 2762 ld l,a\r
a16ba2b0 2763 call i.gethexbyte ;16bf record type (ignored)\r
fecee241 2764 ld a,b\r
a16ba2b0 2765 and a ;16c3 record len == 0?\r
fecee241 2766 jr z,l16deh\r
a16ba2b0 2767l16c6h:\r
fecee241 2768 call i.gethexbyte\r
3531528e 2769 pop de ;16c9 offset\r
fecee241
L
2770 push de\r
2771 push hl\r
2772 add hl,de\r
2773 call i.storebyte\r
2774 pop hl\r
2775 inc hl\r
3531528e
L
2776 djnz l16c6h ;16d2 repeat for record len\r
2777 call i.gethexbyte ;16d4 checksum\r
fecee241
L
2778 ld a,c\r
2779 and a\r
a16ba2b0
L
2780 jp nz,ERROR ;16d9 exit if checksum error\r
2781 jr w_recstart ;16dc next record\r
2782l16deh:\r
fecee241
L
2783 pop hl\r
2784 call i.gethexbyte\r
2785 jp l173fh\r
a16ba2b0
L
2786\r
2787i.gethexbyte:\r
fecee241
L
2788 call sub_16f6h\r
2789 rlca\r
2790 rlca\r
2791 rlca\r
2792 rlca\r
2793 ld d,a\r
2794 call sub_16f6h\r
2795 add a,d\r
2796 ld d,a\r
2797 add a,c\r
2798 ld c,a\r
2799 ld a,d\r
2800 ret\r
a16ba2b0
L
2801\r
2802sub_16f6h:\r
fecee241
L
2803 call i.getchar\r
2804 jr z,l16ffh\r
2805 call sub_0d26h\r
2806 ret nc\r
a16ba2b0 2807l16ffh:\r
fecee241 2808 jp ERROR\r
a16ba2b0
L
2809\r
2810i.getchar:\r
fecee241
L
2811 call $ci\r
2812 cp 01ah\r
2813 ret\r
a16ba2b0
L
2814\r
2815i.storebyte:\r
fecee241
L
2816 push af\r
2817 push de\r
3531528e 2818 ld de,TPA ;170a lowest allowed load address\r
fecee241
L
2819 call CP.HL.DE\r
2820 jp c,ERROR\r
3531528e 2821 ld de,$stcka ;1713 highest allowed load address\r
fecee241
L
2822 call CP.HL.DE\r
2823 jp nc,ERROR\r
2824 ld de,(HILOD)\r
2825 call CP.HL.DE\r
2826 jr c,l1728h\r
2827 ld (HILOD),hl\r
a16ba2b0 2828l1728h:\r
fecee241
L
2829 ld de,(MAXLOD)\r
2830 call CP.HL.DE\r
2831 jr c,l1734h\r
2832 ld (MAXLOD),hl\r
a16ba2b0 2833l1734h:\r
fecee241
L
2834 pop de\r
2835 pop af\r
2836 comst\r
3531528e 2837 ld (hl),a ;173a store byte\r
a16ba2b0 2838 comend\r
fecee241 2839 ret\r
a16ba2b0
L
2840\r
2841l173ch:\r
fecee241 2842 call assert_eol\r
a16ba2b0 2843l173fh:\r
fecee241
L
2844 ld hl,MSG_high\r
2845 call PSTR\r
2846 ld hl,(HILOD)\r
2847 call out.hl\r
2848 ld hl,MSG_max\r
2849 call PSTR\r
2850 ld hl,(MAXLOD)\r
2851 call out.hl\r
2852 jp CRLF\r
a16ba2b0
L
2853\r
2854MSG_high:\r
2855 DC 'High = '\r
2856MSG_max:\r
2857 DC ' Max = '\r
2858\r
2859CMD.A:\r
fecee241
L
2860 ld hl,(lst.A)\r
2861 call get_lastarg_def\r
2862 push hl\r
2863 pop iy\r
2864 ld hl,l17c4h\r
2865 ld (CMD_ERR),hl\r
2866 ld (XB068),sp\r
a16ba2b0 2867l177ch:\r
fecee241
L
2868 push iy\r
2869 pop hl\r
2870 ld (lst.A),hl\r
2871 ld (OFFS.pc),hl\r
2872 push hl\r
2873 call sub_1f3fh\r
2874 pop iy\r
2875 ld c,b\r
2876 ld de,(offs.@)\r
2877 ld a,d\r
2878 or e\r
2879 ld b,011h\r
2880 jr z,l1798h\r
2881 ld b,019h\r
a16ba2b0 2882l1798h:\r
fecee241
L
2883 call OUTBL\r
2884 ld a,(CON.COL)\r
2885 cp b\r
2886 jr c,l1798h\r
2887 push bc\r
2888 call INLINE\r
2889 pop bc\r
2890 call SKIPBL\r
2891 cp '.'\r
2892 ret z\r
2893 cp '-'\r
2894 jr nz,l17b6h\r
2895 ld iy,(XB06C)\r
2896 jr l177ch\r
a16ba2b0 2897l17b6h:\r
fecee241
L
2898 and a\r
2899 call nz,sub_17cdh\r
2900 ld (XB06C),iy\r
2901 ld b,0\r
2902 add iy,bc\r
2903 jr l177ch\r
a16ba2b0 2904l17c4h:\r
fecee241
L
2905 call l07eah\r
2906 ld sp,(XB068)\r
2907 jr l177ch\r
a16ba2b0
L
2908\r
2909sub_17cdh:\r
fecee241
L
2910 call SKIPBL\r
2911 ld hl,t_MNEMONICS\r
2912 call sub_0a15h\r
2913 jp nc,ERROR\r
2914 call SKIPBL\r
2915 push de\r
2916 ld a,b\r
2917 add a,b\r
2918 add a,b\r
2919 ld hl,b_0x17EE_start\r
2920 call ADD_HL_A\r
2921 ld e,(hl)\r
2922 inc hl\r
2923 ld d,(hl)\r
2924 inc hl\r
2925 ld b,(hl)\r
2926 ex de,hl\r
2927 pop de\r
2928 jp (hl)\r
a16ba2b0
L
2929\r
2930b_0x17EE_start:\r
fecee241 2931 defw l1b54h\r
a16ba2b0
L
2932\r
2933b_0x17F0_start:\r
fecee241 2934 defb 088h\r
a16ba2b0
L
2935\r
2936b_0x17F1_start:\r
fecee241 2937 defw l1b74h\r
a16ba2b0
L
2938\r
2939b_0x17F3_start:\r
fecee241 2940 defb 080h\r
a16ba2b0
L
2941\r
2942b_0x17F4_start:\r
fecee241 2943 defw l1babh\r
a16ba2b0
L
2944\r
2945b_0x17F6_start:\r
fecee241 2946 defb 0a0h\r
a16ba2b0
L
2947\r
2948b_0x17F7_start:\r
fecee241 2949 defw l1c14h\r
a16ba2b0
L
2950\r
2951b_0x17F9_start:\r
fecee241 2952 defb 040h\r
a16ba2b0
L
2953\r
2954b_0x17FA_start:\r
fecee241 2955 defw l1c38h\r
a16ba2b0
L
2956\r
2957b_0x17FC_start:\r
fecee241 2958 defb 0c4h\r
a16ba2b0
L
2959\r
2960b_0x17FD_start:\r
fecee241 2961 defw l1b36h\r
a16ba2b0
L
2962\r
2963b_0x17FF_start:\r
fecee241 2964 defb 03fh\r
a16ba2b0
L
2965\r
2966b_0x1800_start:\r
fecee241 2967 defw l1babh\r
a16ba2b0
L
2968\r
2969b_0x1802_start:\r
fecee241 2970 defb 0b8h\r
a16ba2b0
L
2971\r
2972b_0x1803_start:\r
fecee241 2973 defw gen.opc.ED2\r
a16ba2b0
L
2974\r
2975b_0x1805_start:\r
fecee241 2976 defb 0a9h\r
a16ba2b0
L
2977\r
2978b_0x1806_start:\r
fecee241 2979 defw gen.opc.ED2\r
a16ba2b0
L
2980\r
2981b_0x1808_start:\r
fecee241 2982 defb 0b9h\r
a16ba2b0
L
2983\r
2984b_0x1809_start:\r
fecee241 2985 defw gen.opc.ED2\r
a16ba2b0
L
2986\r
2987b_0x180B_start:\r
fecee241 2988 defb 0a1h\r
a16ba2b0
L
2989\r
2990b_0x180C_start:\r
fecee241 2991 defw gen.opc.ED2\r
a16ba2b0
L
2992\r
2993b_0x180E_start:\r
fecee241 2994 defb 0b1h\r
a16ba2b0
L
2995\r
2996b_0x180F_start:\r
fecee241 2997 defw l1b36h\r
a16ba2b0
L
2998\r
2999b_0x1811_start:\r
fecee241 3000 defb 02fh\r
a16ba2b0
L
3001\r
3002b_0x1812_start:\r
fecee241 3003 defw l1b36h\r
a16ba2b0
L
3004\r
3005b_0x1814_start:\r
fecee241 3006 defb 027h\r
a16ba2b0
L
3007\r
3008b_0x1815_start:\r
fecee241 3009 defw l1dabh\r
a16ba2b0
L
3010\r
3011b_0x1817_start:\r
fecee241 3012 defb 005h\r
a16ba2b0
L
3013\r
3014b_0x1818_start:\r
fecee241 3015 defw l1b36h\r
a16ba2b0
L
3016\r
3017b_0x181A_start:\r
fecee241 3018 defb 0f3h\r
a16ba2b0
L
3019\r
3020b_0x181B_start:\r
fecee241 3021 defw l1ca4h\r
a16ba2b0
L
3022\r
3023b_0x181D_start:\r
fecee241 3024 defb 010h\r
a16ba2b0
L
3025\r
3026b_0x181E_start:\r
fecee241 3027 defw l1b36h\r
a16ba2b0
L
3028\r
3029b_0x1820_start:\r
fecee241 3030 defb 0fbh\r
a16ba2b0
L
3031\r
3032b_0x1821_start:\r
fecee241 3033 defw l1d54h\r
a16ba2b0
L
3034\r
3035b_0x1823_start:\r
fecee241 3036 defb 0e3h\r
a16ba2b0
L
3037\r
3038b_0x1824_start:\r
fecee241 3039 defw l1b36h\r
a16ba2b0
L
3040\r
3041b_0x1826_start:\r
fecee241 3042 defb 0d9h\r
a16ba2b0
L
3043\r
3044b_0x1827_start:\r
fecee241 3045 defw l1b36h\r
a16ba2b0
L
3046\r
3047b_0x1829_start:\r
fecee241 3048 defb 076h\r
a16ba2b0
L
3049\r
3050b_0x182A_start:\r
fecee241 3051 defw l1cbfh\r
a16ba2b0
L
3052\r
3053b_0x182C_start:\r
fecee241 3054 defb 046h\r
a16ba2b0
L
3055\r
3056b_0x182D_start:\r
fecee241 3057 defw l1cf8h\r
a16ba2b0
L
3058\r
3059b_0x182F_start:\r
fecee241 3060 defb 040h\r
a16ba2b0
L
3061\r
3062b_0x1830_start:\r
fecee241 3063 defw l1dabh\r
a16ba2b0
L
3064\r
3065b_0x1832_start:\r
fecee241 3066 defb 004h\r
a16ba2b0
L
3067\r
3068b_0x1833_start:\r
fecee241 3069 defw gen.opc.ED2\r
a16ba2b0
L
3070\r
3071b_0x1835_start:\r
fecee241 3072 defb 0aah\r
a16ba2b0
L
3073\r
3074b_0x1836_start:\r
fecee241 3075 defw gen.opc.ED2\r
a16ba2b0
L
3076\r
3077b_0x1838_start:\r
fecee241 3078 defb 0bah\r
a16ba2b0
L
3079\r
3080b_0x1839_start:\r
fecee241 3081 defw gen.opc.ED2\r
a16ba2b0
L
3082\r
3083b_0x183B_start:\r
fecee241 3084 defb 0a2h\r
a16ba2b0
L
3085\r
3086b_0x183C_start:\r
fecee241 3087 defw gen.opc.ED2\r
a16ba2b0
L
3088\r
3089b_0x183E_start:\r
fecee241 3090 defb 0b2h\r
a16ba2b0
L
3091\r
3092b_0x183F_start:\r
fecee241 3093 defw l1c5eh\r
a16ba2b0
L
3094\r
3095b_0x1841_start:\r
fecee241 3096 defb 0c2h\r
a16ba2b0
L
3097\r
3098b_0x1842_start:\r
fecee241 3099 defw l1cabh\r
a16ba2b0
L
3100\r
3101b_0x1844_start:\r
fecee241 3102 defb 020h\r
a16ba2b0
L
3103\r
3104b_0x1845_start:\r
fecee241 3105 defw l1934h\r
a16ba2b0
L
3106\r
3107b_0x1847_start:\r
fecee241 3108 defb 040h\r
a16ba2b0
L
3109\r
3110b_0x1848_start:\r
fecee241 3111 defw gen.opc.ED2\r
a16ba2b0
L
3112\r
3113b_0x184A_start:\r
fecee241 3114 defb 0a8h\r
a16ba2b0
L
3115\r
3116b_0x184B_start:\r
fecee241 3117 defw gen.opc.ED2\r
a16ba2b0
L
3118\r
3119b_0x184D_start:\r
fecee241 3120 defb 0b8h\r
a16ba2b0
L
3121\r
3122b_0x184E_start:\r
fecee241 3123 defw gen.opc.ED2\r
a16ba2b0
L
3124\r
3125b_0x1850_start:\r
fecee241 3126 defb 0a0h\r
a16ba2b0
L
3127\r
3128b_0x1851_start:\r
fecee241 3129 defw gen.opc.ED2\r
a16ba2b0
L
3130\r
3131b_0x1853_start:\r
fecee241 3132 defb 0b0h\r
a16ba2b0
L
3133\r
3134b_0x1854_start:\r
fecee241 3135 defw gen.opc.ED2\r
a16ba2b0
L
3136\r
3137b_0x1856_start:\r
fecee241 3138 defb 044h\r
a16ba2b0
L
3139\r
3140b_0x1857_start:\r
fecee241 3141 defw l1b36h\r
a16ba2b0
L
3142\r
3143b_0x1859_start:\r
fecee241 3144 defb 000h\r
a16ba2b0
L
3145\r
3146b_0x185A_start:\r
fecee241 3147 defw l1babh\r
a16ba2b0
L
3148\r
3149b_0x185C_start:\r
fecee241 3150 defb 0b0h\r
a16ba2b0
L
3151\r
3152b_0x185D_start:\r
fecee241 3153 defw gen.opc.ED2\r
a16ba2b0
L
3154\r
3155b_0x185F_start:\r
fecee241 3156 defb 0bbh\r
a16ba2b0
L
3157\r
3158b_0x1860_start:\r
fecee241 3159 defw gen.opc.ED2\r
a16ba2b0
L
3160\r
3161b_0x1862_start:\r
fecee241 3162 defb 0b3h\r
a16ba2b0
L
3163\r
3164b_0x1863_start:\r
fecee241 3165 defw l1d2ch\r
a16ba2b0
L
3166\r
3167b_0x1865_start:\r
fecee241 3168 defb 041h\r
a16ba2b0
L
3169\r
3170b_0x1866_start:\r
fecee241 3171 defw gen.opc.ED2\r
a16ba2b0
L
3172\r
3173b_0x1868_start:\r
fecee241 3174 defb 0abh\r
a16ba2b0
L
3175\r
3176b_0x1869_start:\r
fecee241 3177 defw gen.opc.ED2\r
a16ba2b0
L
3178\r
3179b_0x186B_start:\r
fecee241 3180 defb 0a3h\r
a16ba2b0
L
3181\r
3182b_0x186C_start:\r
fecee241 3183 defw l1ce4h\r
a16ba2b0
L
3184\r
3185b_0x186E_start:\r
fecee241 3186 defb 0c1h\r
a16ba2b0
L
3187\r
3188b_0x186F_start:\r
fecee241 3189 defw l1ce4h\r
a16ba2b0
L
3190\r
3191b_0x1871_start:\r
fecee241 3192 defb 0c5h\r
a16ba2b0
L
3193\r
3194b_0x1872_start:\r
fecee241 3195 defw l1c14h\r
a16ba2b0
L
3196\r
3197b_0x1874_start:\r
fecee241 3198 defb 080h\r
a16ba2b0
L
3199\r
3200b_0x1875_start:\r
fecee241 3201 defw l1c50h\r
a16ba2b0
L
3202\r
3203b_0x1877_start:\r
fecee241 3204 defb 0c0h\r
a16ba2b0
L
3205\r
3206b_0x1878_start:\r
fecee241 3207 defw gen.opc.ED2\r
a16ba2b0
L
3208\r
3209b_0x187A_start:\r
fecee241 3210 defb 04dh\r
a16ba2b0
L
3211\r
3212b_0x187B_start:\r
fecee241 3213 defw gen.opc.ED2\r
a16ba2b0
L
3214\r
3215b_0x187D_start:\r
fecee241 3216 defb 045h\r
a16ba2b0
L
3217\r
3218b_0x187E_start:\r
fecee241 3219 defw l1bd8h\r
a16ba2b0
L
3220\r
3221b_0x1880_start:\r
fecee241 3222 defb 010h\r
a16ba2b0
L
3223\r
3224b_0x1881_start:\r
fecee241 3225 defw l1b36h\r
a16ba2b0
L
3226\r
3227b_0x1883_start:\r
fecee241 3228 defb 017h\r
a16ba2b0
L
3229\r
3230b_0x1884_start:\r
fecee241 3231 defw l1bd8h\r
a16ba2b0
L
3232\r
3233b_0x1886_start:\r
fecee241 3234 defb 000h\r
a16ba2b0
L
3235\r
3236b_0x1887_start:\r
fecee241 3237 defw l1b36h\r
a16ba2b0
L
3238\r
3239b_0x1889_start:\r
fecee241 3240 defb 007h\r
a16ba2b0
L
3241\r
3242b_0x188A_start:\r
fecee241 3243 defw gen.opc.ED2\r
a16ba2b0
L
3244\r
3245b_0x188C_start:\r
fecee241 3246 defb 06fh\r
a16ba2b0
L
3247\r
3248b_0x188D_start:\r
fecee241 3249 defw l1bd8h\r
a16ba2b0
L
3250\r
3251b_0x188F_start:\r
fecee241 3252 defb 018h\r
a16ba2b0
L
3253\r
3254b_0x1890_start:\r
fecee241 3255 defw l1b36h\r
a16ba2b0
L
3256\r
3257b_0x1892_start:\r
fecee241 3258 defb 01fh\r
a16ba2b0
L
3259\r
3260b_0x1893_start:\r
fecee241 3261 defw l1bd8h\r
a16ba2b0
L
3262\r
3263b_0x1895_start:\r
fecee241 3264 defb 008h\r
a16ba2b0
L
3265\r
3266b_0x1896_start:\r
fecee241 3267 defw l1b36h\r
a16ba2b0
L
3268\r
3269b_0x1898_start:\r
fecee241 3270 defb 00fh\r
a16ba2b0
L
3271\r
3272b_0x1899_start:\r
fecee241 3273 defw gen.opc.ED2\r
a16ba2b0
L
3274\r
3275b_0x189B_start:\r
fecee241 3276 defb 067h\r
a16ba2b0
L
3277\r
3278b_0x189C_start:\r
fecee241 3279 defw l1cd5h\r
a16ba2b0
L
3280\r
3281b_0x189E_start:\r
fecee241 3282 defb 0c7h\r
a16ba2b0
L
3283\r
3284b_0x189F_start:\r
fecee241 3285 defw l1b54h\r
a16ba2b0
L
3286\r
3287b_0x18A1_start:\r
fecee241 3288 defb 098h\r
a16ba2b0
L
3289\r
3290b_0x18A2_start:\r
fecee241 3291 defw l1b36h\r
a16ba2b0
L
3292\r
3293b_0x18A4_start:\r
fecee241 3294 defb 037h\r
a16ba2b0
L
3295\r
3296b_0x18A5_start:\r
fecee241 3297 defw l1c14h\r
a16ba2b0
L
3298\r
3299b_0x18A7_start:\r
fecee241 3300 defb 0c0h\r
a16ba2b0
L
3301\r
3302b_0x18A8_start:\r
fecee241 3303 defw l1bd8h\r
a16ba2b0
L
3304\r
3305b_0x18AA_start:\r
fecee241 3306 defb 020h\r
a16ba2b0
L
3307\r
3308b_0x18AB_start:\r
fecee241 3309 defw l1bd8h\r
a16ba2b0
L
3310\r
3311b_0x18AD_start:\r
fecee241 3312 defb 028h\r
a16ba2b0
L
3313\r
3314b_0x18AE_start:\r
fecee241 3315 defw l1bd8h\r
a16ba2b0
L
3316\r
3317b_0x18B0_start:\r
fecee241 3318 defb 038h\r
a16ba2b0
L
3319\r
3320b_0x18B1_start:\r
fecee241 3321 defw l1babh\r
a16ba2b0
L
3322\r
3323b_0x18B3_start:\r
fecee241 3324 defb 090h\r
a16ba2b0
L
3325\r
3326b_0x18B4_start:\r
fecee241 3327 defw l1babh\r
a16ba2b0
L
3328\r
3329b_0x18B6_start:\r
fecee241 3330 defb 0a8h\r
a16ba2b0
L
3331\r
3332b_0x18B7_start:\r
fecee241 3333 defw A.IN0\r
a16ba2b0
L
3334\r
3335b_0x18B9_start:\r
fecee241 3336 defb 000h\r
a16ba2b0
L
3337\r
3338b_0x18BA_start:\r
fecee241 3339 defw A.MLT\r
a16ba2b0
L
3340\r
3341b_0x18BC_start:\r
fecee241
L
3342 defb 04ch\r
3343 ld b,e\r
3344 dec de\r
a16ba2b0
L
3345\r
3346b_0x18BF_start:\r
fecee241 3347 defb 08bh\r
a16ba2b0
L
3348\r
3349b_0x18C0_start:\r
fecee241 3350 defw gen.opc.ED2\r
a16ba2b0
L
3351\r
3352b_0x18C2_start:\r
fecee241 3353 defb 09bh\r
a16ba2b0
L
3354\r
3355b_0x18C3_start:\r
fecee241 3356 defw gen.opc.ED2\r
a16ba2b0
L
3357\r
3358b_0x18C5_start:\r
fecee241 3359 defb 083h\r
a16ba2b0
L
3360\r
3361b_0x18C6_start:\r
fecee241 3362 defw gen.opc.ED2\r
a16ba2b0
L
3363\r
3364b_0x18C8_start:\r
fecee241 3365 defb 093h\r
a16ba2b0
L
3366\r
3367b_0x18C9_start:\r
fecee241 3368 defw l18fdh\r
a16ba2b0
L
3369\r
3370b_0x18CB_start:\r
fecee241 3371 defb 001h\r
a16ba2b0
L
3372\r
3373b_0x18CC_start:\r
fecee241 3374 defw gen.opc.ED2\r
a16ba2b0
L
3375\r
3376b_0x18CE_start:\r
fecee241 3377 defb 076h\r
a16ba2b0
L
3378\r
3379b_0x18CF_start:\r
fecee241 3380 defw l191dh\r
a16ba2b0
L
3381\r
3382b_0x18D1_start:\r
fecee241 3383 defb 004h\r
a16ba2b0
L
3384\r
3385b_0x18D2_start:\r
fecee241 3386 defw l192ch\r
a16ba2b0
L
3387\r
3388b_0x18D4_start:\r
fecee241 3389 defb 074h\r
a16ba2b0 3390A.IN0:\r
fecee241
L
3391 call sub_1e41h\r
3392 jr nc,l1931h\r
3393 cp 006h\r
3394 jr z,l1931h\r
3395 rlca\r
3396 rlca\r
3397 rlca\r
3398 add a,b\r
3399 ld b,a\r
3400 call sub_1ed1h\r
3401 call sub_1e06h\r
a16ba2b0 3402l18e9h:\r
fecee241
L
3403 call assert_eol\r
3404 comst\r
3405 ld (iy+000h),0edh\r
3406 ld (iy+001h),b\r
3407 ld (iy+002h),l\r
a16ba2b0 3408 comend\r
fecee241
L
3409 ld c,003h\r
3410 ret\r
a16ba2b0 3411l18fdh:\r
fecee241
L
3412 call sub_1e06h\r
3413 call sub_1ed1h\r
3414 call sub_1e41h\r
3415 jr nc,l1931h\r
3416 cp 006h\r
3417 jr z,l1931h\r
3418 rlca\r
3419 rlca\r
3420 rlca\r
3421 add a,b\r
3422 ld b,a\r
3423 jr l18e9h\r
a16ba2b0 3424A.MLT:\r
fecee241
L
3425 call sub_1e2eh\r
3426 jr nc,l1931h\r
3427 add a,b\r
3428 ld b,a\r
3429 jp gen.opc.ED2\r
a16ba2b0 3430l191dh:\r
fecee241
L
3431 call sub_1e41h\r
3432 jr nc,l192ah\r
3433 rlca\r
3434 rlca\r
3435 rlca\r
3436 add a,b\r
3437 ld b,a\r
3438 jp gen.opc.ED2\r
a16ba2b0 3439l192ah:\r
fecee241 3440 ld b,064h\r
a16ba2b0 3441l192ch:\r
fecee241
L
3442 call sub_1e12h\r
3443 jr l18e9h\r
a16ba2b0 3444l1931h:\r
fecee241 3445 jp ERROR\r
a16ba2b0 3446l1934h:\r
fecee241
L
3447 call sub_1e41h\r
3448 jp c,l19bfh\r
3449 call sub_1e68h\r
3450 jp c,l1a64h\r
3451 call sub_1e2eh\r
3452 jp c,l1a93h\r
3453 call sub_1e50h\r
3454 jp c,l1af0h\r
3455 ld a,(de)\r
3456 cp 049h\r
3457 jp z,l1b0ch\r
3458 cp 052h\r
3459 jp z,l1b14h\r
3460 cp 028h\r
3461 jp nz,ERROR\r
3462 inc de\r
3463 call sub_1e2eh\r
3464 jp c,l1b23h\r
3465 call tst_EXPR\r
3466 call sub_1ed8h\r
3467 call sub_1ed1h\r
3468 call sub_1e2eh\r
3469 jr c,l19adh\r
3470 call sub_1e50h\r
3471 jr nc,l1991h\r
3472 ld b,022h\r
a16ba2b0 3473l1978h:\r
fecee241
L
3474 call assert_eol\r
3475 ld a,(pfx.IXY)\r
a16ba2b0 3476l197eh:\r
fecee241
L
3477 comst\r
3478 ld (iy+000h),a\r
3479 ld (iy+001h),b\r
3480 ld (iy+002h),l\r
3481 ld (iy+003h),h\r
a16ba2b0 3482 comend\r
fecee241
L
3483 ld c,004h\r
3484 ret\r
a16ba2b0 3485l1991h:\r
fecee241
L
3486 ld a,(de)\r
3487 cp 041h\r
3488 jp nz,ERROR\r
3489 inc de\r
3490 ld b,032h\r
a16ba2b0 3491l199ah:\r
fecee241
L
3492 call assert_eol\r
3493 comst\r
3494 ld (iy+000h),b\r
3495 ld (iy+001h),l\r
3496 ld (iy+002h),h\r
a16ba2b0 3497 comend\r
fecee241
L
3498 ld c,003h\r
3499 ret\r
a16ba2b0 3500l19adh:\r
fecee241
L
3501 cp 020h\r
3502 jr z,l19bbh\r
3503 add a,043h\r
3504 ld b,a\r
a16ba2b0 3505l19b4h:\r
fecee241
L
3506 call assert_eol\r
3507 ld a,0edh\r
3508 jr l197eh\r
a16ba2b0 3509l19bbh:\r
fecee241
L
3510 ld b,022h\r
3511 jr l199ah\r
a16ba2b0 3512l19bfh:\r
fecee241
L
3513 ld b,a\r
3514 call sub_1ed1h\r
3515 call sub_1e41h\r
3516 jr nc,l19dbh\r
3517 push af\r
3518 ld a,b\r
3519 rlca\r
3520 rlca\r
3521 rlca\r
3522 ld b,a\r
3523 pop af\r
3524 add a,b\r
3525 add a,040h\r
3526 cp 076h\r
3527 jp z,ERROR\r
a16ba2b0 3528l19d7h:\r
fecee241
L
3529 ld b,a\r
3530 jp l1b36h\r
a16ba2b0 3531l19dbh:\r
fecee241
L
3532 call sub_1e68h\r
3533 jr nc,l1a02h\r
3534 ld a,b\r
3535 rlca\r
3536 rlca\r
3537 rlca\r
3538 add a,046h\r
3539 cp 076h\r
3540 jp z,ERROR\r
a16ba2b0 3541l19ebh:\r
fecee241
L
3542 ld b,a\r
3543 call assert_eol\r
3544 ld a,(pfx.IXY)\r
3545 comst\r
3546 ld (iy+000h),a\r
3547 ld (iy+001h),b\r
3548 ld (iy+002h),c\r
a16ba2b0 3549 comend\r
fecee241
L
3550 ld c,003h\r
3551 ret\r
a16ba2b0 3552l1a02h:\r
fecee241
L
3553 ld a,(de)\r
3554 cp 'I'\r
3555 jr z,l1a15h\r
3556 cp 'R'\r
3557 jr nz,l1a21h\r
3558 ld a,b\r
3559 cp 007h\r
3560 jp nz,ERROR\r
3561 ld b,05fh\r
3562 jr l1a1dh\r
a16ba2b0 3563l1a15h:\r
fecee241
L
3564 ld a,b\r
3565 cp 007h\r
3566 jp nz,ERROR\r
3567 ld b,057h\r
a16ba2b0 3568l1a1dh:\r
fecee241
L
3569 inc de\r
3570 jp gen.opc.ED2\r
a16ba2b0 3571l1a21h:\r
fecee241
L
3572 cp '('\r
3573 jr z,l1a3fh\r
3574 call sub_1e12h\r
a16ba2b0 3575 ld a,b ;1a28 ld r,nn\r
fecee241
L
3576 rlca\r
3577 rlca\r
3578 rlca\r
3579 add a,006h\r
a16ba2b0 3580l1a2eh:\r
fecee241 3581 ld b,a\r
a16ba2b0 3582l1a2fh:\r
fecee241
L
3583 call assert_eol\r
3584 comst\r
3585 ld (iy+000h),b\r
3586 ld (iy+001h),l\r
a16ba2b0 3587 comend\r
fecee241
L
3588 ld c,002h\r
3589 ret\r
a16ba2b0 3590l1a3fh:\r
fecee241
L
3591 inc de\r
3592 ld a,b\r
3593 cp 007h\r
3594 jp nz,ERROR\r
3595 call sub_1e2eh\r
3596 jr nc,l1a59h\r
3597 cp 030h\r
3598 jp nc,ERROR\r
3599 add a,00ah\r
3600 ld b,a\r
3601 call sub_1ed8h\r
3602 jp l1b36h\r
a16ba2b0 3603l1a59h:\r
fecee241
L
3604 call tst_EXPR\r
3605 call sub_1ed8h\r
3606 ld b,03ah\r
3607 jp l199ah\r
a16ba2b0 3608l1a64h:\r
fecee241
L
3609 call sub_1ed1h\r
3610 call sub_1e41h\r
3611 jr nc,l1a76h\r
3612 cp 006h\r
3613 jp z,ERROR\r
3614 add a,070h\r
3615 jp l19ebh\r
a16ba2b0 3616l1a76h:\r
fecee241
L
3617 call sub_1e12h\r
3618 call assert_eol\r
3619 ld a,(pfx.IXY)\r
3620 comst\r
a16ba2b0 3621 ld (iy+000h),a ;1a83 dd/fd\r
fecee241 3622 ld (iy+001h),036h\r
a16ba2b0
L
3623 ld (iy+002h),c ;1a8a displacement\r
3624 ld (iy+003h),l ;1a8d nn\r
3625 comend\r
fecee241
L
3626 ld c,4\r
3627 ret\r
a16ba2b0 3628l1a93h:\r
fecee241
L
3629 ld b,a\r
3630 call sub_1ed1h\r
3631 ld hl,t_HL.AF\r
3632 call sub_0a23h\r
3633 jr c,l1abeh\r
3634 call sub_1e50h\r
3635 jr nc,l1ac7h\r
3636 ld a,b\r
3637 cp 030h\r
3638 jr nz,l1b20h\r
3639 ld b,0f9h\r
a16ba2b0 3640l1aabh:\r
fecee241
L
3641 call assert_eol\r
3642 ld a,(pfx.IXY)\r
3643 comst\r
3644 ld (iy+000h),a\r
3645 ld (iy+001h),b\r
a16ba2b0 3646 comend\r
fecee241
L
3647 ld c,002h\r
3648 ret\r
a16ba2b0 3649l1abeh:\r
fecee241
L
3650 ld a,b\r
3651 cp 030h\r
3652 jr nz,l1b20h\r
3653 ld b,0f9h\r
3654 jr l1b36h\r
a16ba2b0 3655l1ac7h:\r
fecee241
L
3656 ld a,(de)\r
3657 cp 028h\r
3658 jr nz,l1ae3h\r
3659 inc de\r
3660 call tst_EXPR\r
3661 call sub_1ed8h\r
3662 ld a,b\r
3663 cp 020h\r
3664 jr z,l1adeh\r
3665 add a,04bh\r
3666 ld b,a\r
3667 jp l19b4h\r
a16ba2b0 3668l1adeh:\r
fecee241
L
3669 ld b,02ah\r
3670 jp l199ah\r
a16ba2b0 3671l1ae3h:\r
fecee241
L
3672 call tst_EXPR\r
3673 call assert_eol\r
3674 ld a,001h\r
3675 add a,b\r
3676 ld b,a\r
3677 jp l199ah\r
a16ba2b0 3678l1af0h:\r
fecee241
L
3679 call sub_1ed1h\r
3680 ld a,(de)\r
3681 cp 028h\r
3682 jr nz,l1b04h\r
3683 inc de\r
3684 call tst_EXPR\r
3685 call sub_1ed8h\r
3686 ld b,02ah\r
3687 jp l1978h\r
a16ba2b0 3688l1b04h:\r
fecee241
L
3689 call tst_EXPR\r
3690 ld b,021h\r
3691 jp l1978h\r
a16ba2b0 3692l1b0ch:\r
fecee241
L
3693 inc de\r
3694 call sub_1ed1h\r
3695 ld b,047h\r
3696 jr l1b1ah\r
a16ba2b0 3697l1b14h:\r
fecee241
L
3698 inc de\r
3699 call sub_1ed1h\r
3700 ld b,04fh\r
a16ba2b0 3701l1b1ah:\r
fecee241
L
3702 ld a,(de)\r
3703 inc de\r
3704 cp 041h\r
3705 jr z,gen.opc.ED2\r
a16ba2b0 3706l1b20h:\r
fecee241 3707 jp ERROR\r
a16ba2b0 3708l1b23h:\r
fecee241
L
3709 cp 020h\r
3710 jr nc,l1b20h\r
3711 add a,002h\r
3712 ld b,a\r
3713 call sub_1ed8h\r
3714 call sub_1ed1h\r
3715 ld a,(de)\r
3716 cp 041h\r
3717 jr nz,l1b20h\r
3718 inc de\r
a16ba2b0 3719l1b36h:\r
fecee241
L
3720 call assert_eol\r
3721 comst\r
3722 ld (iy+000h),b\r
a16ba2b0 3723 comend\r
fecee241
L
3724 ld c,001h\r
3725 ret\r
a16ba2b0 3726gen.opc.ED2:\r
fecee241
L
3727 call assert_eol\r
3728 comst\r
3729 ld (iy+000h),0edh\r
3730 ld (iy+001h),b\r
a16ba2b0 3731 comend\r
fecee241
L
3732 ld c,002h\r
3733 ret\r
a16ba2b0 3734l1b54h:\r
fecee241
L
3735 ld hl,t_HL.AF\r
3736 call sub_0a23h\r
3737 jr nc,l1babh\r
3738 call sub_1ed1h\r
3739 call sub_1e2eh\r
3740 jp nc,ERROR\r
3741 push af\r
3742 ld a,b\r
3743 cp 088h\r
3744 ld b,04ah\r
3745 jr z,l1b6fh\r
3746 ld b,042h\r
a16ba2b0 3747l1b6fh:\r
fecee241
L
3748 pop af\r
3749 add a,b\r
a16ba2b0 3750l1b71h:\r
fecee241
L
3751 ld b,a\r
3752 jr gen.opc.ED2\r
a16ba2b0 3753l1b74h:\r
fecee241
L
3754 ld hl,t_HL.AF\r
3755 call sub_0a23h\r
3756 jr c,l1b9dh\r
3757 call sub_1e50h\r
3758 jr nc,l1babh\r
3759 call sub_1ed1h\r
3760 ld hl,t_BC.DE.IX.SP\r
3761 ld a,(pfx.IXY)\r
3762 cp 0fdh\r
3763 jr nz,l1b91h\r
3764 ld hl,t_BC.DE.IY.SP\r
a16ba2b0 3765l1b91h:\r
fecee241
L
3766 call sub_1e2bh\r
3767 jp nc,ERROR\r
3768 add a,009h\r
a16ba2b0 3769l1b99h:\r
fecee241
L
3770 ld b,a\r
3771 jp l1aabh\r
a16ba2b0 3772l1b9dh:\r
fecee241
L
3773 call sub_1ed1h\r
3774 call sub_1e2eh\r
3775 jp nc,ERROR\r
3776 add a,009h\r
3777 jp l19d7h\r
a16ba2b0 3778l1babh:\r
fecee241
L
3779 ld a,(de)\r
3780 cp 041h\r
3781 jr nz,l1bbbh\r
3782 push de\r
3783 inc de\r
3784 call skip_to_nextarg\r
3785 jr z,l1bbah\r
3786 pop de\r
3787 jr l1bbbh\r
a16ba2b0 3788l1bbah:\r
fecee241 3789 pop af\r
a16ba2b0 3790l1bbbh:\r
fecee241
L
3791 call sub_1e41h\r
3792 jr c,l1bceh\r
3793 call sub_1e68h\r
3794 jr c,l1bd2h\r
3795 call sub_1e12h\r
3796 ld a,b\r
3797 add a,046h\r
3798 jp l1a2eh\r
a16ba2b0 3799l1bceh:\r
fecee241
L
3800 add a,b\r
3801 jp l19d7h\r
a16ba2b0 3802l1bd2h:\r
fecee241
L
3803 ld a,b\r
3804 add a,006h\r
3805 jp l19ebh\r
a16ba2b0 3806l1bd8h:\r
fecee241
L
3807 call sub_1e41h\r
3808 jr c,l1c01h\r
3809 call sub_1e68h\r
3810 jp nc,ERROR\r
3811 ld a,b\r
3812 add a,006h\r
3813 ld b,a\r
a16ba2b0 3814l1be7h:\r
fecee241
L
3815 call assert_eol\r
3816 ld a,(pfx.IXY)\r
3817 comst\r
3818 ld (iy+000h),a\r
3819 ld (iy+001h),0cbh\r
3820 ld (iy+002h),c\r
3821 ld (iy+003h),b\r
a16ba2b0 3822 comend\r
fecee241
L
3823 ld c,004h\r
3824 ret\r
a16ba2b0 3825l1c01h:\r
fecee241 3826 add a,b\r
a16ba2b0 3827l1c02h:\r
fecee241
L
3828 ld b,a\r
3829 call assert_eol\r
3830 comst\r
3831 ld (iy+000h),0cbh\r
3832 ld (iy+001h),b\r
a16ba2b0 3833 comend\r
fecee241
L
3834 ld c,002h\r
3835 ret\r
a16ba2b0 3836l1c14h:\r
fecee241
L
3837 call sub_1de6h\r
3838 call sub_1ed1h\r
3839 call sub_1e41h\r
3840 jr c,l1c2fh\r
3841 call sub_1e68h\r
3842 jp nc,ERROR\r
3843 ld a,l\r
3844 rlca\r
3845 rlca\r
3846 rlca\r
3847 add a,006h\r
3848 add a,b\r
3849 ld b,a\r
3850 jr l1be7h\r
a16ba2b0 3851l1c2fh:\r
fecee241
L
3852 add a,b\r
3853 ld b,a\r
3854 ld a,l\r
3855 rlca\r
3856 rlca\r
3857 rlca\r
3858 add a,b\r
3859 jr l1c02h\r
a16ba2b0 3860l1c38h:\r
fecee241
L
3861 push de\r
3862 call sub_1eb8h\r
3863 jr nc,l1c47h\r
3864 add a,b\r
3865 ld b,a\r
3866 call skip_to_nextarg\r
3867 jr z,l1c49h\r
3868 pop de\r
3869 push de\r
a16ba2b0 3870l1c47h:\r
fecee241 3871 ld b,0cdh\r
a16ba2b0 3872l1c49h:\r
fecee241
L
3873 pop af\r
3874 call tst_EXPR\r
3875 jp l199ah\r
a16ba2b0 3876l1c50h:\r
fecee241
L
3877 call sub_1eb8h\r
3878 jr nc,l1c59h\r
3879 add a,b\r
3880 ld b,a\r
3881 jr l1c5bh\r
a16ba2b0 3882l1c59h:\r
fecee241 3883 ld b,0c9h\r
a16ba2b0 3884l1c5bh:\r
fecee241 3885 jp l1b36h\r
a16ba2b0 3886l1c5eh:\r
fecee241
L
3887 push de\r
3888 call sub_1eb8h\r
3889 jr c,l1c71h\r
a16ba2b0 3890l1c64h:\r
fecee241
L
3891 pop de\r
3892 ld hl,b_0x1C97_start\r
3893 call sub_0a15h\r
3894 jr c,l1c7fh\r
3895 ld b,0c3h\r
3896 jr l1c79h\r
a16ba2b0 3897l1c71h:\r
fecee241
L
3898 add a,b\r
3899 ld b,a\r
3900 call skip_to_nextarg\r
3901 jr nz,l1c64h\r
3902 pop af\r
a16ba2b0 3903l1c79h:\r
fecee241
L
3904 call tst_EXPR\r
3905 jp l199ah\r
a16ba2b0 3906l1c7fh:\r
fecee241
L
3907 call assert_eol\r
3908 ld a,b\r
3909 and a\r
3910 jr nz,l1c8bh\r
3911 ld b,0e9h\r
3912 jp l1b36h\r
a16ba2b0 3913l1c8bh:\r
fecee241
L
3914 ld b,0ddh\r
3915 dec a\r
3916 jr z,l1c92h\r
3917 ld b,0fdh\r
a16ba2b0 3918l1c92h:\r
fecee241
L
3919 ld l,0e9h\r
3920 jp l1a2fh\r
a16ba2b0
L
3921\r
3922b_0x1C97_start:\r
3923 DC '(HL)'\r
3924 DC '(IX)'\r
3925 DC '(IY)'\r
3926 DB 0\r
3927\r
3928l1ca4h:\r
fecee241
L
3929 call skip_to_nextarg\r
3930 ld b,010h\r
3931 jr l1cb9h\r
a16ba2b0 3932l1cabh:\r
fecee241
L
3933 call sub_1ebfh\r
3934 jr c,l1cb4h\r
3935 ld b,018h\r
3936 jr l1cb9h\r
a16ba2b0 3937l1cb4h:\r
fecee241
L
3938 add a,b\r
3939 ld b,a\r
3940 call sub_1ed1h\r
a16ba2b0 3941l1cb9h:\r
fecee241
L
3942 call sub_1defh\r
3943 jp l1a2fh\r
a16ba2b0 3944l1cbfh:\r
fecee241
L
3945 call sub_1e12h\r
3946 ld a,l\r
3947 cp 003h\r
3948 jr nc,l1d23h\r
3949 and a\r
3950 jr z,l1cd2h\r
3951 ld b,056h\r
3952 cp 001h\r
3953 jr z,l1cd2h\r
3954 ld b,05eh\r
a16ba2b0 3955l1cd2h:\r
fecee241 3956 jp gen.opc.ED2\r
a16ba2b0 3957l1cd5h:\r
fecee241
L
3958 call sub_1e12h\r
3959 ld a,l\r
3960 push af\r
3961 add a,b\r
3962 ld b,a\r
3963 pop af\r
3964 and 0c7h\r
3965 jr nz,l1d23h\r
3966 jp l1b36h\r
a16ba2b0 3967l1ce4h:\r
fecee241
L
3968 call sub_1e50h\r
3969 jr c,l1cf2h\r
3970 call sub_1e25h\r
3971 jr nc,l1d23h\r
3972 add a,b\r
3973 jp l19d7h\r
a16ba2b0 3974l1cf2h:\r
fecee241
L
3975 ld a,b\r
3976 add a,020h\r
3977 jp l1b99h\r
a16ba2b0 3978l1cf8h:\r
fecee241
L
3979 call sub_1e41h\r
3980 jr nc,l1d23h\r
3981 cp 006h\r
3982 jr z,l1d23h\r
3983 rlca\r
3984 rlca\r
3985 rlca\r
3986 add a,b\r
3987 ld b,a\r
3988 cp 078h\r
3989 jr nz,l1d1ah\r
3990 call sub_1ed1h\r
3991 call sub_1d26h\r
3992 jr c,l1d20h\r
3993 call sub_1e06h\r
3994 ld b,0dbh\r
3995 jp l1a2fh\r
a16ba2b0 3996l1d1ah:\r
fecee241
L
3997 call sub_1ed1h\r
3998 call sub_1d26h\r
a16ba2b0 3999l1d20h:\r
fecee241 4000 jp c,gen.opc.ED2\r
a16ba2b0 4001l1d23h:\r
fecee241 4002 jp ERROR\r
a16ba2b0 4003sub_1d26h:\r
fecee241
L
4004 ld hl,t__C_\r
4005 jp sub_0a23h\r
a16ba2b0 4006l1d2ch:\r
fecee241
L
4007 call sub_1d26h\r
4008 jr nc,l1d44h\r
4009 call sub_1ed1h\r
4010 call sub_1e41h\r
4011 jr nc,l1d23h\r
4012 cp 006h\r
4013 jr z,l1d23h\r
4014 rlca\r
4015 rlca\r
4016 rlca\r
4017 add a,b\r
4018 jp l1b71h\r
a16ba2b0 4019l1d44h:\r
fecee241
L
4020 call sub_1e06h\r
4021 call sub_1ed1h\r
4022 cp 041h\r
4023 jr nz,l1d23h\r
4024 inc de\r
4025 ld b,0d3h\r
4026 jp l1a2fh\r
a16ba2b0 4027l1d54h:\r
fecee241
L
4028 ld hl,b_0x1D80_start\r
4029 call sub_0a15h\r
4030 jp nc,ERROR\r
4031 ld c,b\r
4032 call assert_eol\r
4033 ld b,000h\r
4034 ld hl,b_0x1DA1_start\r
4035 add hl,bc\r
4036 add hl,bc\r
4037 ld a,(hl)\r
4038 comst\r
4039 ld (iy+000h),a\r
a16ba2b0 4040 comend\r
fecee241
L
4041 ld c,001h\r
4042 inc hl\r
4043 ld a,(hl)\r
4044 and a\r
4045 ret z\r
4046 comst\r
4047 ld (iy+001h),a\r
a16ba2b0 4048 comend\r
fecee241
L
4049 ld c,002h\r
4050 ret\r
a16ba2b0
L
4051\r
4052b_0x1D80_start:\r
4053 DC 'AF,AF'''\r
4054l1d86h:\r
4055 DC 'DE,HL'\r
4056 DC '(SP),HL'\r
4057 DC '(SP),IX'\r
4058 DC '(SP),IY'\r
fecee241 4059 db 000h\r
a16ba2b0
L
4060\r
4061b_0x1DA1_start:\r
fecee241
L
4062 db 008h\r
4063 db 000h\r
4064 db 0ebh\r
4065 db 000h\r
4066 db 0e3h\r
4067 db 000h\r
4068 db 0ddh\r
4069 db 0e3h\r
4070 db 0fdh\r
4071 db 0e3h\r
a16ba2b0 4072l1dabh:\r
fecee241
L
4073 call sub_1e50h\r
4074 jr c,l1dc6h\r
4075 call sub_1e2eh\r
4076 jr c,l1dd2h\r
4077 call sub_1e41h\r
4078 jr c,l1ddfh\r
4079 call sub_1e68h\r
4080 jp nc,ERROR\r
4081 ld a,b\r
4082 add a,030h\r
4083 jp l19ebh\r
a16ba2b0 4084l1dc6h:\r
fecee241
L
4085 ld a,b\r
4086 ld b,023h\r
4087 cp 004h\r
4088 jr z,l1dcfh\r
4089 ld b,02bh\r
a16ba2b0 4090l1dcfh:\r
fecee241 4091 jp l1aabh\r
a16ba2b0 4092l1dd2h:\r
fecee241
L
4093 push af\r
4094 ld a,b\r
4095 ld b,003h\r
4096 cp 004h\r
4097 jr z,l1ddch\r
4098 ld b,00bh\r
a16ba2b0 4099l1ddch:\r
fecee241
L
4100 pop af\r
4101 jr l1de2h\r
a16ba2b0 4102l1ddfh:\r
fecee241
L
4103 rlca\r
4104 rlca\r
4105 rlca\r
a16ba2b0 4106l1de2h:\r
fecee241
L
4107 add a,b\r
4108 jp l19d7h\r
a16ba2b0 4109sub_1de6h:\r
fecee241
L
4110 call sub_1e12h\r
4111 ld a,l\r
4112 cp 008h\r
4113 jr nc,error1\r
4114 ret\r
a16ba2b0 4115sub_1defh:\r
fecee241
L
4116 call tst_EXPR\r
4117 push bc\r
4118 push iy\r
4119 pop bc\r
4120 and a\r
4121 sbc hl,bc\r
4122 dec hl\r
4123 dec hl\r
4124 pop bc\r
4125 call sub_1e15h\r
4126 ld a,h\r
4127 xor l\r
4128 bit 7,a\r
4129 jr nz,error1\r
4130 ret\r
a16ba2b0 4131sub_1e06h:\r
fecee241
L
4132 ld a,(de)\r
4133 cp 028h\r
4134 jr nz,sub_1e12h\r
4135 inc de\r
4136 call sub_1e12h\r
4137 jp sub_1ed8h\r
a16ba2b0
L
4138\r
4139sub_1e12h:\r
fecee241 4140 call tst_EXPR\r
a16ba2b0 4141sub_1e15h:\r
fecee241
L
4142 ld a,h\r
4143 and a\r
4144 ret z\r
4145 inc a\r
4146 ret z\r
4147 jr error1\r
a16ba2b0
L
4148\r
4149tst_EXPR:\r
fecee241
L
4150 push bc\r
4151 call EXPR\r
4152 pop bc\r
4153 ret nc\r
a16ba2b0 4154error1:\r
fecee241 4155 jp ERROR\r
a16ba2b0 4156sub_1e25h:\r
fecee241
L
4157 push hl\r
4158 ld hl,t_BC.DE.HL.AF\r
4159 jr l1e32h\r
a16ba2b0 4160sub_1e2bh:\r
fecee241
L
4161 push hl\r
4162 jr l1e32h\r
a16ba2b0 4163sub_1e2eh:\r
fecee241
L
4164 push hl\r
4165 ld hl,t_BC.DE.HL.SP\r
a16ba2b0 4166l1e32h:\r
fecee241
L
4167 push bc\r
4168 call sub_0a15h\r
4169 jr nc,l1e3eh\r
4170 ld a,b\r
4171 rlca\r
4172 rlca\r
4173 rlca\r
4174 rlca\r
4175 scf\r
a16ba2b0 4176l1e3eh:\r
fecee241
L
4177 pop bc\r
4178 pop hl\r
4179 ret\r
a16ba2b0 4180sub_1e41h:\r
fecee241
L
4181 call SKIPBL\r
4182 push bc\r
4183 push hl\r
4184 ld hl,t_BCDEHL_HL_A\r
4185 call sub_0a15h\r
4186 ld a,b\r
4187 pop hl\r
4188 pop bc\r
4189 ret\r
a16ba2b0 4190sub_1e50h:\r
fecee241
L
4191 push hl\r
4192 push bc\r
4193 ld hl,t_IX.IY\r
4194 call sub_0a15h\r
4195 jr nc,l1e65h\r
4196 ld a,0ddh\r
4197 dec b\r
4198 jr nz,l1e61h\r
4199 ld a,0fdh\r
a16ba2b0 4200l1e61h:\r
fecee241
L
4201 ld (pfx.IXY),a\r
4202 scf\r
a16ba2b0 4203l1e65h:\r
fecee241
L
4204 pop bc\r
4205 pop hl\r
4206 ret\r
a16ba2b0 4207sub_1e68h:\r
fecee241
L
4208 push hl\r
4209 push bc\r
4210 ld a,(de)\r
4211 cp '('\r
4212 jr nz,l1eb4h\r
4213 push de\r
4214 inc de\r
4215 ld hl,t_IX.IY\r
4216 call sub_0a15h\r
4217 jr nc,l1eb3h\r
4218 pop af\r
4219 ld a,0ddh\r
4220 dec b\r
4221 jr nz,l1e81h\r
4222 ld a,0fdh\r
a16ba2b0 4223l1e81h:\r
fecee241
L
4224 ld (pfx.IXY),a\r
4225 ld a,(de)\r
4226 cp '+'\r
4227 jr z,l1e95h\r
4228 cp ')'\r
4229 ld hl,0\r
4230 jr z,l1eadh\r
4231 cp '-'\r
4232 jp nz,ERROR\r
a16ba2b0 4233l1e95h:\r
fecee241
L
4234 push af\r
4235 inc de\r
a16ba2b0 4236 call sub_1e12h ;1e97 get displacement\r
fecee241
L
4237 pop af\r
4238 cp '+'\r
4239 jr z,l1ea7h\r
4240 ld b,h\r
4241 ld c,l\r
4242 ld hl,0\r
4243 and a\r
4244 sbc hl,bc\r
a16ba2b0 4245l1ea7h:\r
fecee241
L
4246 ld a,(de)\r
4247 cp ')'\r
4248 jp nz,ERROR\r
a16ba2b0 4249l1eadh:\r
fecee241
L
4250 inc de\r
4251 pop bc\r
4252 ld c,l\r
4253 pop hl\r
4254 scf\r
4255 ret\r
a16ba2b0 4256l1eb3h:\r
fecee241 4257 pop de\r
a16ba2b0 4258l1eb4h:\r
fecee241
L
4259 pop bc\r
4260 pop hl\r
4261 and a\r
4262 ret\r
a16ba2b0 4263sub_1eb8h:\r
fecee241
L
4264 ld hl,t_tstfl_ZCPS\r
4265 ld c,007h\r
4266 jr l1ec4h\r
a16ba2b0 4267sub_1ebfh:\r
fecee241
L
4268 ld hl,t_tstfl_ZC\r
4269 ld c,003h\r
a16ba2b0 4270l1ec4h:\r
fecee241
L
4271 push bc\r
4272 call sub_0a15h\r
4273 ld a,b\r
4274 pop bc\r
4275 ret nc\r
4276 and c\r
4277 rlca\r
4278 rlca\r
4279 rlca\r
4280 scf\r
4281 ret\r
a16ba2b0 4282sub_1ed1h:\r
fecee241
L
4283 call skip_to_nextarg\r
4284 ret z\r
a16ba2b0 4285l1ed5h:\r
fecee241 4286 jp ERROR\r
a16ba2b0 4287sub_1ed8h:\r
fecee241
L
4288 ld a,(de)\r
4289 cp 029h\r
4290 jr nz,l1ed5h\r
4291 inc de\r
4292 ret\r
a16ba2b0 4293CMD.L:\r
fecee241
L
4294 ld hl,CMD.L\r
4295 ld (CMD_RPT),hl\r
4296 call EXPR\r
4297 jr nc,l1eedh\r
4298 ld hl,(lst.L)\r
a16ba2b0 4299l1eedh:\r
fecee241
L
4300 push hl\r
4301 pop iy\r
4302 call skip_to_nextarg\r
4303 call sub_0aa5h\r
4304 jr nc,l1f17h\r
4305 call assert_eol\r
4306 ld b,010h\r
a16ba2b0 4307l1efdh:\r
fecee241
L
4308 push bc\r
4309 push iy\r
4310 pop hl\r
4311 push hl\r
4312 call sub_1f3fh\r
4313 call CRLF\r
4314 pop iy\r
4315 ld c,b\r
4316 ld b,000h\r
4317 add iy,bc\r
4318 ld (lst.L),iy\r
4319 pop bc\r
4320 djnz l1efdh\r
4321 ret\r
a16ba2b0 4322l1f17h:\r
fecee241
L
4323 call assert_eol\r
4324 ld h,b\r
4325 ld l,c\r
4326 ld a,b\r
4327 or c\r
4328 jr nz,l1f21h\r
4329 dec hl\r
a16ba2b0 4330l1f21h:\r
fecee241
L
4331 push hl\r
4332 push iy\r
4333 pop hl\r
4334 push hl\r
4335 call sub_1f3fh\r
4336 call CRLF\r
4337 pop iy\r
4338 ld e,b\r
4339 ld d,000h\r
4340 add iy,de\r
4341 ld (lst.L),iy\r
4342 pop hl\r
4343 and a\r
4344 sbc hl,de\r
4345 ret z\r
4346 ret c\r
4347 jr l1f21h\r
a16ba2b0 4348sub_1f3fh:\r
fecee241
L
4349 call out.hl.@\r
4350 call z,OUTBL\r
4351 call OUTBL\r
4352 sub a\r
4353 ld (CON.COL),a\r
4354 call sub_1f77h\r
4355 and a\r
4356 ret z\r
a16ba2b0 4357l1f51h:\r
fecee241
L
4358 call OUTBL\r
4359 ld a,(CON.COL)\r
4360 cp 010h\r
4361 jr c,l1f51h\r
a16ba2b0 4362sub_1f5bh:\r
fecee241
L
4363 ld de,(offs.@)\r
4364 ld a,d\r
4365 or e\r
4366 ret z\r
4367 ld a,'('\r
4368 call OUTCHAR\r
4369 ld a,'@'\r
4370 call OUTCHAR\r
4371 and a\r
4372 sbc hl,de\r
4373 call out.hl\r
4374 ld a,')'\r
4375 jp OUTCHAR\r
a16ba2b0 4376sub_1f77h:\r
fecee241
L
4377 sub a\r
4378 ld (XBE03),a\r
4379 call sub_1f9eh\r
4380 jr nc,l1f91h\r
4381 push bc\r
4382 call sub_2581h\r
4383 ex de,hl\r
4384 call sub_1fdbh\r
4385 pop bc\r
4386 ld a,(XBE03)\r
4387 ld hl,(XBE01)\r
4388 scf\r
4389 ret\r
a16ba2b0 4390l1f91h:\r
fecee241
L
4391 ld hl,b_0x1F9B_start\r
4392 call PSTR\r
4393 ld b,001h\r
4394 sub a\r
4395 ret\r
a16ba2b0
L
4396\r
4397b_0x1F9B_start:\r
4398 DC '???'\r
fecee241 4399\r
a16ba2b0 4400sub_1f9eh:\r
fecee241
L
4401 sub a\r
4402 ld (is.pfx.IXY),a\r
4403 comst\r
4404 ld a,(iy+000h)\r
a16ba2b0 4405 comend\r
fecee241
L
4406 cp 0edh\r
4407 jp z,disas_pfx.ED\r
4408 cp 0ddh\r
4409 jr z,l1fc5h\r
4410 cp 0fdh\r
4411 jr z,l1fc9h\r
a16ba2b0 4412sub_1fb6h:\r
fecee241
L
4413 comst\r
4414 ld a,(iy+000h)\r
a16ba2b0 4415 comend\r
fecee241
L
4416 cp 0cbh\r
4417 jp z,l2061h\r
4418 jp l2078h\r
a16ba2b0 4419l1fc5h:\r
fecee241
L
4420 ld a,001h\r
4421 jr l1fcbh\r
a16ba2b0 4422l1fc9h:\r
fecee241 4423 ld a,002h\r
a16ba2b0 4424l1fcbh:\r
fecee241
L
4425 ld (is.pfx.IXY),a\r
4426 call sub_1fdch\r
4427 ret nc\r
4428 push bc\r
4429 call sub_1fb6h\r
4430 pop af\r
4431 add a,b\r
4432 ld b,a\r
4433 scf\r
4434 ret\r
a16ba2b0
L
4435\r
4436sub_1fdbh:\r
fecee241 4437 jp (hl)\r
a16ba2b0
L
4438\r
4439sub_1fdch:\r
fecee241
L
4440 inc iy\r
4441 ld hl,b_0x2011_start\r
4442 call sub_20bbh\r
4443 ld b,002h\r
4444 ret c\r
4445 ld hl,l202ch\r
4446 call sub_20bbh\r
4447 ld b,001h\r
4448 ret c\r
4449 comst\r
4450 ld a,(iy+000h)\r
a16ba2b0 4451 comend\r
fecee241
L
4452 cp 0cbh\r
4453 jr nz,l200fh\r
4454 comst\r
4455 ld a,(iy+002h)\r
a16ba2b0 4456 comend\r
fecee241
L
4457 cp 036h\r
4458 ret z\r
4459 and 007h\r
4460 cp 006h\r
4461 jr nz,l200fh\r
4462 ld b,002h\r
4463 scf\r
4464 ret\r
a16ba2b0 4465l200fh:\r
fecee241
L
4466 and a\r
4467 ret\r
a16ba2b0
L
4468\r
4469b_0x2011_start:\r
fecee241
L
4470 db 034h\r
4471 db 035h\r
4472 db 036h\r
4473 db 046h\r
4474 db 04eh\r
4475 db 056h\r
4476 db 05eh\r
4477 db 066h\r
4478 db 06eh\r
4479 db 070h\r
4480 db 071h\r
4481 db 072h\r
4482 db 073h\r
4483 db 074h\r
4484 db 075h\r
4485 db 076h\r
4486 db 077h\r
4487 db 07eh\r
4488 db 086h\r
4489 db 08eh\r
4490 db 096h\r
4491 db 09eh\r
4492 db 0a6h\r
4493 db 0aeh\r
4494 db 0b6h\r
4495 db 0beh\r
4496 db 000h\r
a16ba2b0 4497l202ch:\r
fecee241
L
4498 db 009h\r
4499 db 019h\r
4500 db 021h\r
4501 db 022h\r
4502 db 023h\r
4503 db 029h\r
4504 db 02ah\r
4505 db 02bh\r
4506 db 039h\r
4507 db 0e1h\r
4508 db 0e3h\r
4509 db 0e5h\r
4510 db 0e9h\r
4511 db 0f9h\r
4512 db 000h\r
a16ba2b0
L
4513\r
4514disas_pfx.ED:\r
fecee241
L
4515 inc iy\r
4516 ld hl,b_0x2200_start\r
4517 call sub_209dh\r
4518 ld b,002h\r
4519 ret c\r
4520 ld hl,l2235h\r
4521 call lookup_opc\r
4522 ld b,002h\r
4523 ret c\r
4524 ld hl,l228bh\r
4525 call lookup_opc\r
4526 ld b,003h\r
4527 ret c\r
4528 ld hl,l22b4h\r
4529 call lookup_opc\r
4530 ld b,004h\r
4531 ret\r
a16ba2b0 4532l2061h:\r
fecee241
L
4533 push iy\r
4534 inc iy\r
4535 ld a,(is.pfx.IXY)\r
4536 and a\r
4537 jr z,l206dh\r
4538 inc iy\r
a16ba2b0 4539l206dh:\r
fecee241
L
4540 ld hl,l22c9h\r
4541 call lookup_opc\r
4542 pop iy\r
4543 ld b,002h\r
4544 ret\r
a16ba2b0 4545l2078h:\r
fecee241
L
4546 ld hl,b_0x218B_start\r
4547 call lookup_opc\r
4548 ld b,002h\r
4549 ret c\r
4550 ld hl,b_0x20ED_start\r
4551 call sub_209dh\r
4552 ld b,001h\r
4553 ret c\r
4554 ld hl,b_0x2108_start\r
4555 call lookup_opc\r
4556 ld b,001h\r
4557 ret c\r
4558 ld hl,b_0x21D2_start\r
4559 call lookup_opc\r
4560 ret nc\r
4561 ld b,003h\r
4562 ret\r
a16ba2b0
L
4563\r
4564sub_209dh:\r
fecee241
L
4565 ld a,(hl)\r
4566 cp 0ffh\r
4567 ret z\r
4568 comst\r
4569 cp (iy+000h)\r
a16ba2b0 4570 comend\r
fecee241
L
4571 jr z,l20aeh\r
4572 inc hl\r
4573 inc hl\r
4574 jr sub_209dh\r
a16ba2b0 4575l20aeh:\r
fecee241
L
4576 inc hl\r
4577 ld c,(hl)\r
4578 ld hl,t_MNEMONICS\r
4579 ld b,000h\r
4580 add hl,bc\r
4581 ld de,l230bh\r
4582 scf\r
4583 ret\r
a16ba2b0 4584sub_20bbh:\r
fecee241
L
4585 ld a,(hl)\r
4586 and a\r
4587 ret z\r
4588 inc hl\r
4589 comst\r
4590 cp (iy+000h)\r
a16ba2b0 4591 comend\r
fecee241
L
4592 jr nz,sub_20bbh\r
4593 scf\r
4594 ret\r
a16ba2b0
L
4595\r
4596lookup_opc:\r
fecee241
L
4597 comst\r
4598 ld a,(iy+000h)\r
a16ba2b0 4599 comend\r
fecee241
L
4600 and (hl)\r
4601 inc hl\r
4602 cp (hl)\r
4603 jr z,l20dfh\r
4604 inc hl\r
4605 inc hl\r
4606 inc hl\r
4607 inc hl\r
4608 ld a,(hl)\r
4609 and a\r
4610 jr nz,lookup_opc\r
4611 ret\r
a16ba2b0 4612l20dfh:\r
fecee241
L
4613 inc hl\r
4614 ld c,(hl)\r
4615 inc hl\r
4616 ld e,(hl)\r
4617 inc hl\r
4618 ld d,(hl)\r
4619 ld hl,t_MNEMONICS\r
4620 ld b,000h\r
4621 add hl,bc\r
4622 scf\r
4623 ret\r
a16ba2b0
L
4624\r
4625b_0x20ED_start: ; 1 byte opcodes (no parameters)\r
4626 db 076h ;20ed halt\r
fecee241 4627 db 039h ;20ee\r
a16ba2b0 4628 db 0d9h ;20ef exx\r
fecee241 4629 db 036h\r
a16ba2b0 4630 db 0f3h ;20f1 di\r
fecee241 4631 db 02ch\r
a16ba2b0 4632 db 0fbh ;20f3 ei\r
fecee241 4633 db 032h\r
a16ba2b0 4634 db 000h ;20f5 nop\r
fecee241 4635 db 069h\r
a16ba2b0 4636 db 007h ;20f7 rlca\r
fecee241 4637 db 09eh\r
a16ba2b0 4638 db 00fh ;20f9 rrca\r
fecee241 4639 db 0adh\r
a16ba2b0 4640 db 017h ;20fb rla\r
fecee241 4641 db 098h\r
a16ba2b0 4642 db 01fh ;20fd rra\r
fecee241 4643 db 0a7h\r
a16ba2b0 4644 db 027h ;20ff daa\r
fecee241 4645 db 026h\r
a16ba2b0 4646 db 02fh ;2101 cpl\r
fecee241 4647 db 023h\r
a16ba2b0 4648 db 037h ;2103 scf\r
fecee241 4649 db 0bah\r
a16ba2b0 4650 db 03fh ;2105 ccf\r
fecee241 4651 db 010h\r
a16ba2b0
L
4652 db 0ffh ;2107 EOT\r
4653\r
4654b_0x2108_start: ; 1 byte opcodes\r
4655 defb 0c0h ;2108 ld r,r\r
fecee241
L
4656 defb 040h\r
4657 defb 056h\r
4658 defw l22fch\r
a16ba2b0
L
4659\r
4660 defb 0f8h ;210d add a,r\r
fecee241
L
4661 defb 080h\r
4662 defb 003h\r
4663 defw l2305h\r
a16ba2b0
L
4664\r
4665 defb 0f8h ;2112 adc a,r\r
fecee241
L
4666 defb 088h\r
4667 defb 000h\r
4668 defw l2305h\r
4669\r
4670 defb 0f8h\r
4671 defb 090h\r
4672 defb 0c9h\r
4673 defw l24ebh\r
4674\r
4675 defb 0f8h\r
4676 defb 098h\r
4677 defb 0b7h\r
4678 defw l2305h\r
4679\r
4680 defb 0f8h\r
4681 defb 0a0h\r
4682 defb 006h\r
4683 defw l24ebh\r
4684\r
4685 defb 0f8h\r
4686 defb 0a8h\r
4687 defb 0cch\r
4688 defw l24ebh\r
4689\r
4690 defb 0f8h\r
4691 defb 0b0h\r
4692 defb 06ch\r
4693 defw l24ebh\r
4694\r
4695 defb 0f8h\r
4696 defb 0b8h\r
4697 defb 013h\r
4698 defw l24ebh\r
4699\r
4700 defb 0c7h\r
a16ba2b0 4701 defb 0c0h ;2136 ret cc\r
fecee241
L
4702 defb 08bh\r
4703 defw l2561h\r
a16ba2b0 4704\r
30d1329e 4705 defb 0c7h ;213a rst\r
fecee241
L
4706 defb 0c7h\r
4707 defb 0b4h\r
4708 defw l231eh\r
a16ba2b0
L
4709\r
4710 defb 0ffh ;213f ret\r
fecee241
L
4711 defb 0c9h\r
4712 defb 08bh\r
4713 defw l230bh\r
a16ba2b0
L
4714\r
4715 defb 0cfh ;2144 pop rr\r
fecee241
L
4716 defb 0c1h\r
4717 defb 081h\r
4718 defw l2546h\r
a16ba2b0
L
4719\r
4720 defb 0cfh ;2149 push rr\r
fecee241
L
4721 defb 0c5h\r
4722 defb 084h\r
4723 defw l2546h\r
a16ba2b0
L
4724\r
4725 defb 0ffh ;214e ex (sp),hl\r
fecee241
L
4726 defb 0e3h\r
4727 defb 034h\r
4728 defw l232ah\r
a16ba2b0
L
4729\r
4730 defb 0ffh ;2153 jp (hl)\r
fecee241
L
4731 defb 0e9h\r
4732 defb 052h\r
4733 defw l2338h\r
a16ba2b0
L
4734\r
4735 defb 0ffh ;2158 ex de,hl\r
fecee241
L
4736 defb 0ebh\r
4737 defb 034h\r
4738 defw l2345h\r
a16ba2b0
L
4739\r
4740 defb 0ffh ;215d ld sp,hl\r
fecee241
L
4741 defb 0f9h\r
4742 defb 056h\r
4743 defw l234bh\r
a16ba2b0
L
4744\r
4745 defb 0cfh ;2162 inc rr\r
fecee241
L
4746 defb 003h\r
4747 defb 041h\r
4748 defw l254bh\r
a16ba2b0
L
4749\r
4750 defb 0cfh ;2167 dec rr\r
fecee241
L
4751 defb 00bh\r
4752 defb 029h\r
4753 defw l254bh\r
a16ba2b0
L
4754\r
4755 defb 0c7h ;216c inc r\r
fecee241
L
4756 defb 004h\r
4757 defb 041h\r
4758 defw l24dfh\r
a16ba2b0
L
4759\r
4760 defb 0c7h ;2171 dec r\r
fecee241
L
4761 defb 005h\r
4762 defb 029h\r
4763 defw l24dfh\r
a16ba2b0
L
4764\r
4765 defb 0ffh ;2176 ex af,af'\r
fecee241
L
4766 defb 008h\r
4767 defb 034h\r
4768 defw l2357h\r
a16ba2b0
L
4769\r
4770 defb 0cfh ;217b add hl,rr\r
fecee241
L
4771 defb 009h\r
4772 defb 003h\r
4773 defw l235dh\r
a16ba2b0
L
4774\r
4775 defb 0efh ;2180 ld (rr),a ;rr=bc,de\r
fecee241
L
4776 defb 002h\r
4777 defb 056h\r
4778 defw l2366h\r
a16ba2b0
L
4779\r
4780 defb 0efh ;2185 ld a,(rr) ;rr=bc,de\r
fecee241
L
4781 defb 00ah\r
4782 defb 056h\r
4783 defw l236fh\r
a16ba2b0
L
4784\r
4785 defb 000h ;218a EOT\r
4786\r
4787b_0x218B_start: ; 2 byte opdodes\r
4788 defb 0c7h ;218b ld r,nn\r
fecee241
L
4789 defb 006h\r
4790 defb 056h\r
4791 defw l2384h\r
a16ba2b0
L
4792\r
4793 defb 0ffh ;2190 add a,nn\r
fecee241
L
4794 defb 0c6h\r
4795 defb 003h\r
4796 defw l237fh\r
a16ba2b0
L
4797\r
4798 defb 0ffh ;2195 adc a,nn\r
fecee241
L
4799 defb 0ceh\r
4800 defb 000h\r
4801 defw l237fh\r
a16ba2b0
L
4802\r
4803 defb 0ffh ;219a sub a,nn\r
fecee241
L
4804 defb 0d6h\r
4805 defb 0c9h\r
4806 defw l2397h\r
a16ba2b0 4807\r
fecee241
L
4808 defb 0ffh\r
4809 defb 0deh\r
4810 defb 0b7h\r
4811 defw l237fh\r
a16ba2b0
L
4812\r
4813 defb 0ffh ;21a4 and a,nn\r
fecee241
L
4814 defb 0e6h\r
4815 defb 006h\r
4816 defw l2397h\r
a16ba2b0 4817\r
fecee241
L
4818 defb 0ffh\r
4819 defb 0eeh\r
4820 defb 0cch\r
4821 defw l2397h\r
a16ba2b0 4822\r
fecee241
L
4823 defb 0ffh\r
4824 defb 0f6h\r
4825 defb 06ch\r
4826 defw l2397h\r
a16ba2b0
L
4827\r
4828 defb 0ffh ;21b3 cp a,nn\r
fecee241
L
4829 defb 0feh\r
4830 defb 013h\r
4831 defw l2397h\r
a16ba2b0
L
4832\r
4833 defb 0ffh ;21b8 djnz\r
fecee241
L
4834 defb 010h\r
4835 defb 02eh\r
4836 defw l23b0h\r
a16ba2b0
L
4837\r
4838 defb 0ffh ;21bd jr\r
fecee241
L
4839 defb 018h\r
4840 defb 054h\r
4841 defw l23b0h\r
a16ba2b0
L
4842\r
4843 defb 0e7h ;21c2 jr,cc\r
fecee241
L
4844 defb 020h\r
4845 defb 054h\r
4846 defw l23a1h\r
a16ba2b0 4847\r
fecee241 4848 defb 0ffh\r
a16ba2b0 4849 defb 0d3h ;21c8 out (nn),a\r
fecee241
L
4850 defb 076h\r
4851 defw l23d5h\r
a16ba2b0
L
4852\r
4853 defb 0ffh ;21cc in a,(nn)\r
fecee241
L
4854 defb 0dbh\r
4855 defb 03fh\r
4856 defw l23c3h\r
a16ba2b0
L
4857\r
4858 defb 000h ;21d1 EOT\r
4859\r
4860b_0x21D2_start: ; 3 byte opcodes\r
fecee241
L
4861 defb 0c7h\r
4862 defb 0c2h\r
4863 defb 052h\r
4864 defw l23e0h\r
4865\r
4866 defb 0c7h\r
4867 defb 0c4h\r
4868 defb 00ch\r
4869 defw l23e0h\r
4870\r
4871 defb 0cfh\r
4872 defb 001h\r
4873 defb 056h\r
4874 defw l23fch\r
4875\r
4876 defb 0ffh\r
4877 defb 0c3h\r
4878 defb 052h\r
4879 defw l23e6h\r
4880\r
4881 defb 0ffh\r
4882 defb 0cdh\r
4883 defb 00ch\r
4884 defw l23e6h\r
4885\r
4886 defb 0ffh\r
4887 defb 022h\r
4888 defb 056h\r
4889 defw l2404h\r
4890\r
4891 defb 0ffh\r
4892 defb 02ah\r
4893 defb 056h\r
4894 defw l240dh\r
4895\r
4896 defb 0ffh\r
4897 defb 032h\r
4898 defb 056h\r
4899 defw l2416h\r
4900\r
4901 defb 0ffh\r
4902 defb 03ah\r
4903 defb 056h\r
4904 defw l2421h\r
4905\r
4906 defb 000h\r
a16ba2b0
L
4907\r
4908b_0x2200_start: ; prefix ED + 1 byte opcode\r
4909 defb 044h ;2200 neg\r
fecee241 4910 defb 066h\r
a16ba2b0 4911 defb 045h ;2202 retn\r
fecee241 4912 defb 092h\r
a16ba2b0 4913 defb 04dh ;2204 reti\r
fecee241 4914 defb 08eh\r
a16ba2b0 4915 defb 067h ;2206 rrd\r
fecee241 4916 defb 0b1h\r
a16ba2b0 4917 defb 06fh ;2208 rld\r
fecee241 4918 defb 0a2h\r
a16ba2b0 4919 defb 0a0h ;220a ldi\r
fecee241
L
4920 defb 05fh\r
4921 defb 0a1h\r
4922 defb 01ch\r
4923 defb 0a2h\r
4924 defb 04bh\r
4925 defb 0a3h\r
4926 defb 07dh\r
a16ba2b0 4927 defb 0a8h ;2212 ldd\r
fecee241
L
4928 defb 058h\r
4929 defb 0a9h\r
4930 defb 015h\r
4931 defb 0aah\r
4932 defb 044h\r
4933 defb 0abh\r
4934 defb 079h\r
a16ba2b0 4935 defb 0b0h ;221a ldir\r
fecee241
L
4936 defb 062h\r
4937 defb 0b1h\r
4938 defb 01fh\r
4939 defb 0b2h\r
4940 defb 04eh\r
4941 defb 0b3h\r
4942 defb 072h\r
a16ba2b0 4943 defb 0b8h ;2222 lddr\r
fecee241
L
4944 defb 05bh\r
4945 defb 0b9h\r
4946 defb 018h\r
4947 defb 0bah\r
4948 defb 047h\r
4949 defb 0bbh\r
4950 defb 06eh\r
a16ba2b0 4951 defb 08bh ;222a otdm\r
fecee241 4952 defb 0d5h\r
a16ba2b0 4953 defb 09bh ;222c otdmr\r
fecee241 4954 defb 0d9h\r
a16ba2b0 4955 defb 083h ;222e otim\r
fecee241 4956 defb 0deh\r
a16ba2b0 4957 defb 093h ;2230 otimr\r
fecee241 4958 defb 0e2h\r
a16ba2b0 4959 defb 076h ;2232 slp\r
fecee241 4960 defb 0ebh\r
a16ba2b0 4961 defb 0ffh ;2234 EOT\r
fecee241 4962\r
a16ba2b0
L
4963l2235h:\r
4964 defb 0e7h ;2235 in r,(c) ;r=bcde\r
fecee241
L
4965 defb 040h\r
4966 defb 03fh\r
4967 defw l2455h\r
a16ba2b0
L
4968\r
4969 defb 0f7h ;223a in r,(c) ;r=hl\r
fecee241
L
4970 defb 060h\r
4971 defb 03fh\r
4972 defw l2455h\r
a16ba2b0
L
4973\r
4974 defb 0ffh ;223f in r,(c) ;r=a\r
fecee241
L
4975 defb 078h\r
4976 defb 03fh\r
4977 defw l2455h\r
a16ba2b0 4978\r
fecee241
L
4979 defb 0e7h\r
4980 defb 041h\r
4981 defb 076h\r
4982 defw l2461h\r
a16ba2b0 4983\r
fecee241
L
4984 defb 0f7h\r
4985 defb 061h\r
4986 defb 076h\r
4987 defw l2461h\r
a16ba2b0
L
4988\r
4989 defb 0ffh ;224e out (c),r ;r=a\r
fecee241
L
4990 defb 079h\r
4991 defb 076h\r
4992 defw l2461h\r
a16ba2b0
L
4993\r
4994 defb 0cfh ;2253 sbc hl,rr\r
fecee241
L
4995 defb 042h\r
4996 defb 0b7h\r
4997 defw l246dh\r
a16ba2b0
L
4998\r
4999 defb 0cfh ;2258 adc hl,rr\r
fecee241
L
5000 defb 04ah\r
5001 defb 000h\r
5002 defw l246dh\r
a16ba2b0
L
5003\r
5004 defb 0ffh ;225d im 0\r
fecee241
L
5005 defb 046h\r
5006 defb 03dh\r
5007 defw l2427h\r
a16ba2b0
L
5008\r
5009 defb 0ffh ;2262 im 1\r
fecee241
L
5010 defb 056h\r
5011 defb 03dh\r
5012 defw l242bh\r
a16ba2b0
L
5013\r
5014 defb 0ffh ;2267 im 2\r
fecee241
L
5015 defb 05eh\r
5016 defb 03dh\r
5017 defw l242fh\r
a16ba2b0
L
5018\r
5019 defb 0ffh ;226c ld i,a\r
fecee241
L
5020 defb 047h\r
5021 defb 056h\r
5022 defw l2434h\r
a16ba2b0 5023\r
fecee241
L
5024 defb 0ffh\r
5025 defb 057h\r
5026 defb 056h\r
5027 defw l2439h\r
a16ba2b0 5028\r
fecee241
L
5029 defb 0ffh\r
5030 defb 04fh\r
5031 defb 056h\r
5032 defw l243eh\r
a16ba2b0 5033\r
fecee241
L
5034 defb 0ffh\r
5035 defb 05fh\r
5036 defb 056h\r
5037 defw l2443h\r
a16ba2b0
L
5038\r
5039 defb 0cfh ;2280 mlt rr\r
fecee241
L
5040 defb 04ch\r
5041 defb 0d2h\r
5042 defw l254bh\r
a16ba2b0
L
5043\r
5044 defb 0c7h ;2285 tst r\r
fecee241
L
5045 defb 004h\r
5046 defb 0eeh\r
5047 defw l24dfh\r
a16ba2b0 5048\r
fecee241 5049 defb 000h\r
a16ba2b0
L
5050\r
5051l228bh:\r
fecee241
L
5052 defb 0e7h\r
5053 defb 000h\r
5054 defb 0cfh\r
a16ba2b0
L
5055\r
5056b_0x228E_start:\r
fecee241 5057 defw l230ch\r
a16ba2b0
L
5058\r
5059b_0x2290_start:\r
fecee241
L
5060 defb 0f7h\r
5061 defb 020h\r
5062 defb 0cfh\r
a16ba2b0
L
5063\r
5064b_0x2293_start:\r
fecee241 5065 defw l230ch\r
a16ba2b0
L
5066\r
5067b_0x2295_start:\r
fecee241
L
5068 defb 0ffh\r
5069 defb 038h\r
5070 defb 0cfh\r
a16ba2b0
L
5071\r
5072b_0x2298_start:\r
fecee241 5073 defw l230ch\r
a16ba2b0
L
5074\r
5075b_0x229A_start:\r
fecee241
L
5076 defb 0e7h\r
5077 defb 001h\r
5078 defb 0e7h\r
a16ba2b0
L
5079\r
5080b_0x229D_start:\r
fecee241 5081 defw l2315h\r
a16ba2b0
L
5082\r
5083b_0x229F_start:\r
fecee241
L
5084 defb 0f7h\r
5085 defb 021h\r
5086 defb 0e7h\r
a16ba2b0
L
5087\r
5088b_0x22A2_start:\r
fecee241 5089 defw l2315h\r
a16ba2b0
L
5090\r
5091b_0x22A4_start:\r
fecee241
L
5092 defb 0ffh\r
5093 defb 039h\r
5094 defb 0e7h\r
a16ba2b0
L
5095\r
5096b_0x22A7_start:\r
fecee241 5097 defw l2315h\r
a16ba2b0
L
5098\r
5099b_0x22A9_start:\r
fecee241
L
5100 defb 0ffh\r
5101 defb 064h\r
5102 defb 0eeh\r
a16ba2b0
L
5103\r
5104b_0x22AC_start:\r
fecee241 5105 defw l2397h\r
a16ba2b0
L
5106\r
5107b_0x22AE_start:\r
fecee241
L
5108 defb 0ffh\r
5109 defb 074h\r
5110 defb 0f1h\r
a16ba2b0
L
5111\r
5112b_0x22B1_start:\r
fecee241 5113 defw l2397h\r
a16ba2b0
L
5114\r
5115b_0x22B3_start:\r
fecee241 5116 defb 000h\r
a16ba2b0 5117l22b4h:\r
fecee241
L
5118 defb 0efh\r
5119 defb 043h\r
5120 defb 056h\r
a16ba2b0
L
5121\r
5122b_0x22B7_start:\r
fecee241 5123 defw l2476h\r
a16ba2b0
L
5124\r
5125b_0x22B9_start:\r
fecee241
L
5126 defb 0ffh\r
5127 defb 073h\r
5128 defb 056h\r
a16ba2b0
L
5129\r
5130b_0x22BC_start:\r
fecee241 5131 defw l2476h\r
a16ba2b0
L
5132\r
5133b_0x22BE_start:\r
fecee241
L
5134 defb 0efh\r
5135 defb 04bh\r
5136 defb 056h\r
a16ba2b0
L
5137\r
5138b_0x22C1_start:\r
fecee241 5139 defw l247fh\r
a16ba2b0
L
5140\r
5141b_0x22C3_start:\r
fecee241
L
5142 defb 0ffh\r
5143 defb 07bh\r
5144 defb 056h\r
a16ba2b0
L
5145\r
5146b_0x22C6_start:\r
fecee241 5147 defw l247fh\r
a16ba2b0
L
5148\r
5149b_0x22C8_start:\r
fecee241 5150 defb 000h\r
a16ba2b0 5151l22c9h:\r
fecee241
L
5152 defb 0f8h\r
5153 defb 000h\r
5154 defb 09bh\r
a16ba2b0
L
5155\r
5156b_0x22CC_start:\r
fecee241 5157 defw l24aeh\r
a16ba2b0
L
5158\r
5159b_0x22CE_start:\r
fecee241
L
5160 defb 0f8h\r
5161 defb 008h\r
5162 defb 0aah\r
a16ba2b0
L
5163\r
5164b_0x22D1_start:\r
fecee241 5165 defw l24aeh\r
a16ba2b0
L
5166\r
5167b_0x22D3_start:\r
fecee241
L
5168 defb 0f8h\r
5169 defb 010h\r
5170 defb 096h\r
a16ba2b0
L
5171\r
5172b_0x22D6_start:\r
fecee241 5173 defw l24aeh\r
a16ba2b0
L
5174\r
5175b_0x22D8_start:\r
fecee241
L
5176 defb 0f8h\r
5177 defb 018h\r
5178 defb 0a5h\r
a16ba2b0
L
5179\r
5180b_0x22DB_start:\r
fecee241 5181 defw l24aeh\r
a16ba2b0
L
5182\r
5183b_0x22DD_start:\r
fecee241
L
5184 defb 0f8h\r
5185 defb 020h\r
5186 defb 0c0h\r
a16ba2b0
L
5187\r
5188b_0x22E0_start:\r
fecee241 5189 defw l24aeh\r
a16ba2b0
L
5190\r
5191b_0x22E2_start:\r
fecee241
L
5192 defb 0f8h\r
5193 defb 028h\r
5194 defb 0c3h\r
a16ba2b0
L
5195\r
5196b_0x22E5_start:\r
fecee241 5197 defw l24aeh\r
a16ba2b0
L
5198\r
5199b_0x22E7_start:\r
fecee241
L
5200 defb 0f8h\r
5201 defb 038h\r
5202 defb 0c6h\r
a16ba2b0
L
5203\r
5204b_0x22EA_start:\r
fecee241 5205 defw l24aeh\r
a16ba2b0
L
5206\r
5207b_0x22EC_start:\r
fecee241
L
5208 defb 0c0h\r
5209 defb 040h\r
5210 defb 009h\r
a16ba2b0
L
5211\r
5212b_0x22EF_start:\r
fecee241 5213 defw l2487h\r
a16ba2b0
L
5214\r
5215b_0x22F1_start:\r
fecee241
L
5216 defb 0c0h\r
5217 defb 080h\r
5218 defb 088h\r
a16ba2b0
L
5219\r
5220b_0x22F4_start:\r
fecee241 5221 defw l2487h\r
a16ba2b0
L
5222\r
5223b_0x22F6_start:\r
fecee241
L
5224 defb 0c0h\r
5225 defb 0c0h\r
5226 defb 0bdh\r
a16ba2b0
L
5227\r
5228b_0x22F9_start:\r
fecee241 5229 defw l2487h\r
a16ba2b0
L
5230\r
5231b_0x22FB_start:\r
fecee241 5232 defb 000h\r
a16ba2b0 5233l22fch:\r
fecee241
L
5234 call l24dfh\r
5235 call sub_257ch\r
5236 jp l24ebh\r
a16ba2b0 5237l2305h:\r
fecee241
L
5238 call sub_2579h\r
5239 jp l24ebh\r
a16ba2b0 5240l230bh:\r
fecee241 5241 ret\r
a16ba2b0 5242l230ch:\r
fecee241
L
5243 call l24dfh\r
5244 call sub_257ch\r
5245 jp l23c6h\r
a16ba2b0 5246l2315h:\r
fecee241
L
5247 call l23c6h\r
5248 call sub_257ch\r
5249 jp l24dfh\r
a16ba2b0 5250l231eh:\r
fecee241
L
5251 comst\r
5252 ld a,(iy+000h)\r
a16ba2b0 5253 comend\r
fecee241
L
5254 and 038h\r
5255 jp out.hex\r
a16ba2b0 5256l232ah:\r
fecee241
L
5257 ld hl,b_0x2333_start\r
5258 call PSTR\r
5259 jp l253eh\r
a16ba2b0
L
5260\r
5261b_0x2333_start:\r
5262 DC '(SP),'\r
5263\r
5264l2338h:\r
fecee241
L
5265 ld a,'('\r
5266 call OUTCHAR\r
5267 call l253eh\r
5268 ld a,')'\r
5269 jp OUTCHAR\r
a16ba2b0 5270l2345h:\r
fecee241
L
5271 ld hl,l1d86h\r
5272 jp PSTR\r
a16ba2b0 5273l234bh:\r
fecee241
L
5274 ld hl,b_0x2354_start\r
5275 call PSTR\r
5276 jp l253eh\r
a16ba2b0
L
5277\r
5278b_0x2354_start:\r
5279 DC 'SP,'\r
5280\r
5281l2357h:\r
fecee241
L
5282 ld hl,b_0x1D80_start\r
5283 jp PSTR\r
a16ba2b0 5284l235dh:\r
fecee241
L
5285 call l253eh\r
5286 call sub_257ch\r
5287 jp l254bh\r
a16ba2b0 5288l2366h:\r
fecee241
L
5289 call sub_2372h\r
5290 call sub_257ch\r
5291 jp l23dbh\r
a16ba2b0 5292l236fh:\r
fecee241 5293 call sub_2579h\r
a16ba2b0 5294sub_2372h:\r
fecee241
L
5295 ld a,'('\r
5296 call OUTCHAR\r
5297 call l254bh\r
5298 ld a,')'\r
5299 jp OUTCHAR\r
a16ba2b0 5300l237fh:\r
fecee241
L
5301 call sub_2579h\r
5302 jr l2397h\r
a16ba2b0 5303l2384h:\r
fecee241
L
5304 call l24dfh\r
5305 call sub_257ch\r
5306 ld a,(is.pfx.IXY)\r
5307 and a\r
5308 comst\r
5309 ld a,(iy+002h)\r
a16ba2b0 5310 comend\r
fecee241 5311 jr nz,l239eh\r
a16ba2b0 5312l2397h:\r
fecee241
L
5313 comst\r
5314 ld a,(iy+001h)\r
a16ba2b0
L
5315 comend\r
5316l239eh:\r
fecee241 5317 jp out.hex\r
a16ba2b0 5318l23a1h:\r
fecee241
L
5319 comst\r
5320 ld a,(iy+000h)\r
a16ba2b0 5321 comend\r
fecee241
L
5322 and 018h\r
5323 call sub_2568h\r
5324 call sub_257ch\r
a16ba2b0 5325l23b0h:\r
fecee241
L
5326 comst\r
5327 ld c,(iy+001h)\r
a16ba2b0 5328 comend\r
fecee241
L
5329 ld a,c\r
5330 rla\r
5331 sbc a,a\r
5332 ld b,a\r
5333 push iy\r
5334 pop hl\r
5335 add hl,bc\r
5336 inc hl\r
5337 inc hl\r
5338 jr l23f0h\r
a16ba2b0 5339l23c3h:\r
fecee241 5340 call sub_2579h\r
a16ba2b0 5341l23c6h:\r
fecee241
L
5342 ld a,028h\r
5343 call OUTCHAR\r
5344 comst\r
5345 ld a,(iy+001h)\r
a16ba2b0 5346 comend\r
fecee241 5347 jp l252bh\r
a16ba2b0 5348l23d5h:\r
fecee241
L
5349 call l23c6h\r
5350 call sub_257ch\r
a16ba2b0 5351l23dbh:\r
fecee241
L
5352 ld a,041h\r
5353 jp OUTCHAR\r
a16ba2b0 5354l23e0h:\r
fecee241
L
5355 call l2561h\r
5356 call sub_257ch\r
a16ba2b0 5357l23e6h:\r
fecee241
L
5358 comst\r
5359 ld l,(iy+001h)\r
5360 ld h,(iy+002h)\r
a16ba2b0
L
5361 comend\r
5362l23f0h:\r
fecee241 5363 ld a,002h\r
a16ba2b0 5364sub_23f2h:\r
fecee241
L
5365 ld (XBE03),a\r
5366 ld (XBE01),hl\r
5367 call out.hl\r
5368 ret\r
a16ba2b0 5369l23fch:\r
fecee241
L
5370 call l254bh\r
5371 call sub_257ch\r
5372 jr l23e6h\r
a16ba2b0 5373l2404h:\r
fecee241
L
5374 call sub_24c6h\r
5375 call sub_257ch\r
5376 jp l253eh\r
a16ba2b0 5377l240dh:\r
fecee241
L
5378 call l253eh\r
5379 call sub_257ch\r
5380 jp sub_24c6h\r
a16ba2b0 5381l2416h:\r
fecee241
L
5382 call sub_24c6h\r
5383 call sub_257ch\r
5384 ld a,041h\r
5385 jp OUTCHAR\r
a16ba2b0 5386l2421h:\r
fecee241
L
5387 call sub_2579h\r
5388 jp sub_24c6h\r
a16ba2b0 5389l2427h:\r
fecee241
L
5390 ld a,030h\r
5391 jr l2431h\r
a16ba2b0 5392l242bh:\r
fecee241
L
5393 ld a,031h\r
5394 jr l2431h\r
a16ba2b0 5395l242fh:\r
fecee241 5396 ld a,032h\r
a16ba2b0 5397l2431h:\r
fecee241 5398 jp OUTCHAR\r
a16ba2b0 5399l2434h:\r
fecee241
L
5400 ld hl,b_0x2449_start\r
5401 jr l2446h\r
a16ba2b0 5402l2439h:\r
fecee241
L
5403 ld hl,l244ch\r
5404 jr l2446h\r
a16ba2b0 5405l243eh:\r
fecee241
L
5406 ld hl,l244fh\r
5407 jr l2446h\r
a16ba2b0 5408l2443h:\r
fecee241 5409 ld hl,l2452h\r
a16ba2b0 5410l2446h:\r
fecee241 5411 jp PSTR\r
a16ba2b0
L
5412\r
5413b_0x2449_start:\r
5414 DC 'I,A'\r
5415l244ch:\r
5416 DC 'A,I'\r
5417l244fh:\r
5418 DC 'R,A'\r
5419l2452h:\r
5420 DC 'A,R'\r
5421\r
5422l2455h:\r
fecee241
L
5423 call l24dfh\r
5424 call sub_257ch\r
5425 ld hl,t__C_\r
5426 jp PSTR\r
a16ba2b0 5427l2461h:\r
fecee241
L
5428 ld hl,t__C_\r
5429 call PSTR\r
5430 call sub_257ch\r
5431 jp l24dfh\r
a16ba2b0 5432l246dh:\r
fecee241
L
5433 call l253eh\r
5434 call sub_257ch\r
5435 jp l254bh\r
a16ba2b0 5436l2476h:\r
fecee241
L
5437 call sub_24c6h\r
5438 call sub_257ch\r
5439 jp l254bh\r
a16ba2b0 5440l247fh:\r
fecee241
L
5441 call l254bh\r
5442 call sub_257ch\r
5443 jr sub_24c6h\r
a16ba2b0 5444l2487h:\r
fecee241
L
5445 ld a,(is.pfx.IXY)\r
5446 and a\r
5447 jr nz,l2496h\r
5448 comst\r
5449 ld a,(iy+001h)\r
a16ba2b0 5450 comend\r
fecee241 5451 jr l249dh\r
a16ba2b0 5452l2496h:\r
fecee241
L
5453 comst\r
5454 ld a,(iy+002h)\r
a16ba2b0
L
5455 comend\r
5456l249dh:\r
fecee241
L
5457 push af\r
5458 rra\r
5459 rra\r
5460 rra\r
5461 and 007h\r
5462 add a,'0'\r
5463 call OUTCHAR\r
5464 call sub_257ch\r
5465 pop af\r
5466 jr l24f2h\r
a16ba2b0 5467l24aeh:\r
fecee241
L
5468 ld a,(is.pfx.IXY)\r
5469 and a\r
5470 jr nz,l24bdh\r
5471 comst\r
5472 ld a,(iy+001h)\r
a16ba2b0 5473 comend\r
fecee241 5474 jr l24c4h\r
a16ba2b0 5475l24bdh:\r
fecee241
L
5476 comst\r
5477 ld a,(iy+002h)\r
a16ba2b0
L
5478 comend\r
5479l24c4h:\r
fecee241 5480 jr l24f2h\r
a16ba2b0 5481sub_24c6h:\r
fecee241
L
5482 ld a,'('\r
5483 call OUTCHAR\r
5484 comst\r
5485 ld l,(iy+001h)\r
5486 ld h,(iy+002h)\r
a16ba2b0 5487 comend\r
fecee241
L
5488 ld a,001h\r
5489 call sub_23f2h\r
5490 ld a,')'\r
5491 jp OUTCHAR\r
a16ba2b0 5492l24dfh:\r
fecee241
L
5493 comst\r
5494 ld a,(iy+000h)\r
a16ba2b0 5495 comend\r
fecee241
L
5496 rra\r
5497 rra\r
5498 rra\r
5499 jr l24f2h\r
a16ba2b0 5500l24ebh:\r
fecee241
L
5501 comst\r
5502 ld a,(iy+000h)\r
a16ba2b0
L
5503 comend\r
5504l24f2h:\r
fecee241
L
5505 and 007h\r
5506 cp 006h\r
5507 jr nz,l2533h\r
5508 ld a,(is.pfx.IXY)\r
5509 and a\r
5510 ld a,006h\r
5511 jr z,l2533h\r
5512 ld hl,b_0x2538_start\r
5513 ld a,(is.pfx.IXY)\r
5514 dec a\r
5515 jr z,l250ch\r
5516 ld hl,b_0x253B_start\r
a16ba2b0 5517l250ch:\r
fecee241
L
5518 call PSTR\r
5519 comst\r
5520 ld a,(iy+001h)\r
a16ba2b0 5521 comend\r
fecee241
L
5522 and a\r
5523 push af\r
5524 jp m,l2523h\r
5525 ld a,'+'\r
5526 call OUTCHAR\r
5527 pop af\r
5528 jr l252bh\r
a16ba2b0 5529l2523h:\r
fecee241
L
5530 ld a,'-'\r
5531 call OUTCHAR\r
5532 pop af\r
5533 neg\r
a16ba2b0 5534l252bh:\r
fecee241
L
5535 call out.hex\r
5536 ld a,')'\r
5537 jp OUTCHAR\r
a16ba2b0 5538l2533h:\r
fecee241
L
5539 ld hl,t_BCDEHL_HL_A\r
5540 jr l2572h\r
a16ba2b0
L
5541\r
5542b_0x2538_start:\r
5543 DC '(IX'\r
5544b_0x253B_start:\r
5545 DC '(IY'\r
5546\r
5547l253eh:\r
fecee241
L
5548 ld a,(is.pfx.IXY)\r
5549 ld hl,t_HL.IX.IY\r
5550 jr l2572h\r
a16ba2b0 5551l2546h:\r
fecee241
L
5552 ld hl,t_BC.DE.HL.AF\r
5553 jr l254eh\r
a16ba2b0 5554l254bh:\r
fecee241 5555 ld hl,t_BC.DE.HL.SP\r
a16ba2b0 5556l254eh:\r
fecee241
L
5557 comst\r
5558 ld a,(iy+000h)\r
a16ba2b0 5559 comend\r
fecee241
L
5560 rra\r
5561 rra\r
5562 rra\r
5563 rra\r
5564 and 003h\r
5565 cp 002h\r
5566 jr z,l253eh\r
5567 jr l2572h\r
a16ba2b0 5568l2561h:\r
fecee241
L
5569 comst\r
5570 ld a,(iy+000h)\r
a16ba2b0
L
5571 comend\r
5572sub_2568h:\r
fecee241
L
5573 rra\r
5574 rra\r
5575 rra\r
5576 and 007h\r
5577 ld hl,t_tstfl_ZCPS\r
5578 jr l2572h\r
a16ba2b0 5579l2572h:\r
fecee241
L
5580 ld b,a\r
5581 call sub_0a48h\r
5582 jp PSTR\r
a16ba2b0 5583sub_2579h:\r
fecee241 5584 call l23dbh\r
a16ba2b0 5585sub_257ch:\r
fecee241
L
5586 ld a,','\r
5587 jp OUTCHAR\r
a16ba2b0 5588sub_2581h:\r
fecee241 5589 call PSTR\r
a16ba2b0 5590l2584h:\r
fecee241
L
5591 call OUTBL\r
5592 inc c\r
5593 ld a,c\r
5594 cp 006h\r
5595 jr nz,l2584h\r
5596 ret\r
a16ba2b0
L
5597\r
5598t_MNEMONICS:\r
5599 DC 'ADC'\r
5600 DC 'ADD'\r
5601 DC 'AND'\r
5602 DC 'BIT'\r
5603 DC 'CALL'\r
5604 DC 'CCF'\r
5605 DC 'CP'\r
5606 DC 'CPD'\r
5607 DC 'CPDR'\r
5608 DC 'CPI'\r
5609 DC 'CPIR'\r
5610 DC 'CPL'\r
5611 DC 'DAA'\r
5612 DC 'DEC'\r
5613 DC 'DI'\r
5614 DC 'DJNZ'\r
5615 DC 'EI'\r
5616 DC 'EX'\r
5617 DC 'EXX'\r
5618 DC 'HALT'\r
5619 DC 'IM'\r
5620 DC 'IN'\r
5621 DC 'INC'\r
5622 DC 'IND'\r
5623 DC 'INDR'\r
5624 DC 'INI'\r
5625 DC 'INIR'\r
5626 DC 'JP'\r
5627 DC 'JR'\r
5628 DC 'LD'\r
5629 DC 'LDD'\r
5630 DC 'LDDR'\r
5631 DC 'LDI'\r
5632 DC 'LDIR'\r
5633 DC 'NEG'\r
5634 DC 'NOP'\r
5635 DC 'OR'\r
5636 DC 'OTDR'\r
5637 DC 'OTIR'\r
5638 DC 'OUT'\r
5639 DC 'OUTD'\r
5640 DC 'OUTI'\r
5641 DC 'POP'\r
5642 DC 'PUSH'\r
5643 DC 'RES'\r
5644 DC 'RET'\r
5645 DC 'RETI'\r
5646 DC 'RETN'\r
5647 DC 'RL'\r
5648 DC 'RLA'\r
5649 DC 'RLC'\r
5650 DC 'RLCA'\r
5651 DC 'RLD'\r
5652 DC 'RR'\r
5653 DC 'RRA'\r
5654 DC 'RRC'\r
5655 DC 'RRCA'\r
5656 DC 'RRD'\r
5657 DC 'RST'\r
5658 DC 'SBC'\r
5659 DC 'SCF'\r
5660 DC 'SET'\r
5661 DC 'SLA'\r
5662 DC 'SRA'\r
5663 DC 'SRL'\r
5664 DC 'SUB'\r
5665 DC 'XOR'\r
5666 DC 'IN0'\r
5667 DC 'MLT'\r
5668 DC 'OTDM'\r
5669 DC 'OTDMR'\r
5670 DC 'OTIM'\r
5671 DC 'OTIMR'\r
5672 DC 'OUT0'\r
5673 DC 'SLP'\r
5674 DC 'TST'\r
5675 DC 'TSTIO'\r
5676 DB 0\r
fecee241 5677\r
a16ba2b0
L
5678t_BCDEHL_HL_A:\r
5679 DC 'B'\r
5680 DC 'C'\r
5681 DC 'D'\r
5682 DC 'E'\r
5683 DC 'H'\r
5684 DC 'L'\r
5685 DC '(HL)'\r
5686 DC 'A'\r
5687 DB 0\r
5688t_BC.DE.HL.SP:\r
5689 DC 'BC'\r
5690 DC 'DE'\r
5691 DC 'HL'\r
5692 DC 'SP'\r
5693 DB 0\r
5694t_BC.DE.HL.AF:\r
5695 DC 'BC'\r
5696 DC 'DE'\r
5697t_HL.AF:\r
5698 DC 'HL'\r
5699 DC 'AF'\r
5700 DB 0\r
5701t_BC.DE.IY.SP:\r
5702 DC 'BC'\r
5703 DC 'DE'\r
5704 DC 'IY'\r
5705 DC 'SP'\r
5706 DB 0\r
5707t_BC.DE.IX.SP:\r
5708 DC 'BC'\r
5709 DC 'DE'\r
5710 DC 'IX'\r
5711 DC 'SP'\r
5712 DB 0\r
5713t_HL.IX.IY:\r
5714 DC 'HL'\r
5715t_IX.IY:\r
5716 DC 'IX'\r
5717 DC 'IY'\r
5718 DB 0\r
5719t_tstfl_ZC:\r
5720 DC 'NZ'\r
5721 DC 'Z'\r
5722 DC 'NC'\r
5723 DC 'C'\r
5724 DC 'NE'\r
5725 DC 'EQ'\r
5726 DC 'GE'\r
5727 DC 'LT'\r
5728 DB 0\r
5729t_tstfl_ZCPS:\r
5730 DC 'NZ'\r
5731 DC 'Z'\r
5732 DC 'NC'\r
5733 DC 'C'\r
5734 DC 'PO'\r
5735 DC 'PE'\r
5736 DC 'P'\r
5737 DC 'M'\r
5738 DC 'NE'\r
5739 DC 'EQ'\r
5740 DC 'GE'\r
5741 DC 'LT'\r
5742 DC 'NV'\r
5743 DC 'V'\r
5744 DB 0\r
5745t__C_:\r
5746 DC '(C)'\r
5747 DB 0\r
5748\r
5749sub_26e7h:\r
fecee241
L
5750 ld hl,(REG.PC)\r
5751 ld a,h\r
5752 or l\r
5753 jr z,l2715h\r
5754 ld iy,(REG.PC)\r
5755 call sub_1f9eh\r
5756 jp nc,ERROR\r
5757 ld c,b\r
5758 ld b,000h\r
5759 ld hl,(REG.PC)\r
5760 add hl,bc\r
5761 call sub_1117h\r
5762 ld iy,(REG.PC)\r
5763 ld hl,b_0x2717_start\r
5764 call lookup_opc\r
5765 ccf\r
5766 ret c\r
5767 ex de,hl\r
5768 call CALL.HL\r
5769 call c,sub_1117h\r
a16ba2b0 5770l2715h:\r
fecee241
L
5771 scf\r
5772 ret\r
a16ba2b0
L
5773\r
5774b_0x2717_start:\r
fecee241
L
5775 db 0ffh\r
5776 db 0ddh\r
5777 db 000h\r
a16ba2b0
L
5778 dw x278d\r
5779\r
fecee241
L
5780 db 0ffh\r
5781 db 0fdh\r
5782 db 000h\r
a16ba2b0
L
5783 dw x2792\r
5784\r
fecee241
L
5785 db 0ffh\r
5786 db 0edh\r
5787 db 000h\r
a16ba2b0
L
5788 dw x27a2\r
5789\r
5790l2726h:\r
fecee241
L
5791 db 0ffh\r
5792 db 0cdh\r
5793 db 000h\r
a16ba2b0
L
5794 dw x275e\r
5795\r
fecee241
L
5796 db 0ffh\r
5797 db 0c3h\r
5798 db 000h\r
a16ba2b0
L
5799 dw x2769\r
5800\r
fecee241
L
5801 db 0ffh\r
5802 db 0e9h\r
5803 db 000h\r
a16ba2b0
L
5804 dw x2788\r
5805\r
fecee241
L
5806 db 0ffh\r
5807 db 0c9h\r
5808 db 000h\r
a16ba2b0
L
5809 dw x27c9\r
5810\r
fecee241
L
5811 db 0ffh\r
5812 db 0cfh\r
5813 db 000h\r
a16ba2b0
L
5814 dw x280e\r
5815\r
fecee241
L
5816 db 0c7h\r
5817 db 0c7h\r
5818 db 000h\r
a16ba2b0
L
5819 dw x27ea\r
5820\r
fecee241
L
5821 db 0c7h\r
5822 db 0c4h\r
5823 db 000h\r
a16ba2b0
L
5824 dw x275e\r
5825\r
fecee241
L
5826 db 0f7h\r
5827 db 010h\r
5828 db 000h\r
a16ba2b0
L
5829 dw x2775\r
5830\r
fecee241
L
5831 db 0e7h\r
5832 db 020h\r
5833 db 000h\r
a16ba2b0
L
5834 dw x2775\r
5835\r
fecee241
L
5836 db 0c7h\r
5837 db 0c2h\r
5838 db 000h\r
a16ba2b0
L
5839 dw x2769\r
5840\r
fecee241
L
5841 db 0c7h\r
5842 db 0c0h\r
5843 db 000h\r
a16ba2b0
L
5844 dw x27b3\r
5845\r
fecee241 5846 db 000h\r
a16ba2b0
L
5847\r
5848x275e:\r
fecee241
L
5849 ld a,(XBFE8)\r
5850 and a\r
5851 jr nz,x2769\r
5852 ld a,(TCFLG)\r
5853 and a\r
5854 ret nz\r
a16ba2b0
L
5855\r
5856x2769:\r
fecee241
L
5857 comst\r
5858 ld l,(iy+001h)\r
5859 ld h,(iy+002h)\r
a16ba2b0 5860 comend\r
fecee241
L
5861 scf\r
5862 ret\r
a16ba2b0
L
5863\r
5864x2775:\r
fecee241
L
5865 comst\r
5866 ld c,(iy+001h)\r
a16ba2b0 5867 comend\r
fecee241
L
5868 ld a,c\r
5869 rla\r
5870 sbc a,a\r
5871 ld b,a\r
5872 ld hl,(REG.PC)\r
5873 add hl,bc\r
5874 inc hl\r
5875 inc hl\r
5876 scf\r
5877 ret\r
a16ba2b0
L
5878\r
5879x2788:\r
fecee241
L
5880 ld hl,(REG.L)\r
5881 scf\r
5882 ret\r
a16ba2b0
L
5883\r
5884x278d:\r
fecee241
L
5885 ld hl,(reg.ix)\r
5886 jr l2795h\r
a16ba2b0
L
5887\r
5888x2792:\r
fecee241 5889 ld hl,(reg.iy)\r
a16ba2b0 5890l2795h:\r
fecee241
L
5891 comst\r
5892 ld a,(iy+001h)\r
a16ba2b0 5893 comend\r
fecee241
L
5894 cp 0e9h\r
5895 scf\r
5896 ret z\r
5897 and a\r
5898 ret\r
a16ba2b0
L
5899\r
5900x27a2:\r
fecee241
L
5901 comst\r
5902 ld a,(iy+001h)\r
a16ba2b0 5903 comend\r
fecee241
L
5904 cp 04dh\r
5905 jr z,x27c9\r
5906 cp 045h\r
5907 jr z,x27c9\r
5908 and a\r
5909 ret\r
a16ba2b0
L
5910\r
5911x27b3:\r
fecee241
L
5912 comst\r
5913 ld a,(iy+000h)\r
a16ba2b0 5914 comend\r
fecee241
L
5915 ld (XBEDD),a\r
5916 ld hl,(REG.F)\r
5917 push hl\r
5918 pop af\r
5919 call XBEDD\r
5920 scf\r
5921 jr c,x27c9\r
5922 ret\r
a16ba2b0
L
5923\r
5924x27c9:\r
fecee241
L
5925 ld a,(XBFE8)\r
5926 and a\r
5927 jr nz,l27dah\r
5928 ld a,(TCFLG)\r
5929 and a\r
5930 jr z,l27dah\r
5931 call l27dah\r
5932 pop hl\r
5933 ret\r
a16ba2b0 5934l27dah:\r
fecee241
L
5935 ld hl,(REG.SP)\r
5936 comst\r
5937 ld e,(hl)\r
5938 inc hl\r
5939 ld d,(hl)\r
a16ba2b0 5940 comend\r
fecee241
L
5941 ex de,hl\r
5942 call sub_1117h\r
5943 and a\r
5944 ret\r
a16ba2b0
L
5945\r
5946x27ea:\r
cdc4625b 5947 ld a,(ddtzrst)\r
fecee241
L
5948 comst\r
5949 cp (iy+000h)\r
a16ba2b0 5950 comend\r
fecee241
L
5951 ret z\r
5952 comst\r
5953 ld a,(iy+000h)\r
a16ba2b0 5954 comend\r
fecee241
L
5955 and 038h\r
5956 ld l,a\r
5957 ld h,000h\r
5958 ld a,(XBFE8)\r
5959 and a\r
5960 jr nz,l280ch\r
5961 ld a,(TCFLG)\r
5962 and a\r
5963 ret nz\r
a16ba2b0 5964l280ch:\r
fecee241
L
5965 scf\r
5966 ret\r
a16ba2b0
L
5967\r
5968x280e:\r
fecee241
L
5969 and a\r
5970 ret\r
a16ba2b0
L
5971\r
5972CMD.C:\r
fecee241
L
5973 ld hl,CMD.C\r
5974 ld a,001h\r
5975 jr l281bh\r
a16ba2b0
L
5976\r
5977CMD.T:\r
fecee241
L
5978 xor a\r
5979 ld hl,CMD.T\r
a16ba2b0 5980l281bh:\r
fecee241
L
5981 ld (CMD_RPT),hl\r
5982 ld (TCFLG),a\r
5983 ld a,(de)\r
5984 sub 'N'\r
5985 jr nz,l2827h\r
5986 inc de\r
a16ba2b0 5987l2827h:\r
fecee241
L
5988 ld (TCNFLG),a\r
5989 ld a,(de)\r
5990 sub 'J'\r
5991 jr nz,l2830h\r
5992 inc de\r
a16ba2b0 5993l2830h:\r
fecee241
L
5994 ld (TRJFLG),a\r
5995 call sub_289fh\r
5996 jr z,l283eh\r
5997 ld hl,1\r
5998 call get_lastarg_def\r
a16ba2b0 5999l283eh:\r
fecee241
L
6000 ld (TCCSTR),hl\r
6001 sub a\r
6002 ld (XA747),a\r
a16ba2b0 6003l2845h:\r
fecee241
L
6004 call sub_26e7h\r
6005 jr l289ch\r
a16ba2b0 6006l284ah:\r
fecee241
L
6007 call sub_0e68h\r
6008 ld a,(TRJFLG)\r
6009 and a\r
6010 jr nz,l2864h\r
6011 ld iy,(REG.PC)\r
6012 call sub_28c1h\r
6013 jr z,l2864h\r
6014 ld hl,l2726h\r
6015 call lookup_opc\r
6016 jr nc,l2845h\r
a16ba2b0 6017l2864h:\r
fecee241
L
6018 ld a,(XBFEA)\r
6019 and a\r
6020 jr z,l2881h\r
6021 ld de,(TCCSTR)\r
6022 call EXPR\r
6023 ld a,h\r
6024 or l\r
6025 add a,0ffh\r
6026 sbc a,a\r
6027 ld hl,XBFEA\r
6028 xor (hl)\r
6029 bit 1,a\r
6030 jr z,l288ch\r
a16ba2b0 6031l287eh:\r
fecee241 6032 jp l102eh\r
a16ba2b0 6033l2881h:\r
fecee241
L
6034 ld hl,(TCCSTR)\r
6035 dec hl\r
6036 ld (TCCSTR),hl\r
6037 ld a,h\r
6038 or l\r
6039 jr z,l287eh\r
a16ba2b0 6040l288ch:\r
fecee241
L
6041 call sub_26e7h\r
6042 jr nc,l287eh\r
6043 ld a,(TCNFLG)\r
6044 ld b,a\r
6045 ld a,(XA747)\r
6046 or b\r
6047 ld (XA747),a\r
a16ba2b0 6048l289ch:\r
fecee241 6049 jp l1183h\r
a16ba2b0
L
6050\r
6051sub_289fh:\r
fecee241
L
6052 call SKIPBL\r
6053 xor a\r
6054 ld (XBFEA),a\r
6055 ld a,(de)\r
6056 cp 'U'\r
6057 jr z,l28aeh\r
6058 cp 'W'\r
6059 ret nz\r
a16ba2b0
L
6060\r
6061l28aeh:\r
fecee241
L
6062 inc de\r
6063 push af\r
6064 push de\r
6065 call EXPR\r
6066 jp c,ERROR\r
6067 call assert_eol\r
6068 pop hl\r
6069 pop af\r
6070 ld (XBFEA),a\r
6071 sub a\r
6072 ret\r
a16ba2b0
L
6073\r
6074sub_28c1h:\r
fecee241
L
6075 comst\r
6076 ld a,(iy+000h)\r
a16ba2b0
L
6077 ld b,(iy+0001)\r
6078 comend\r
fecee241
L
6079 cp 0edh\r
6080 jr z,l28dbh\r
6081 and 0dfh\r
6082 cp 0ddh\r
6083 ret nz\r
a16ba2b0 6084 ld a,b\r
fecee241
L
6085 cp 0e9h\r
6086 ret\r
a16ba2b0
L
6087l28dbh:\r
6088 ld a,b\r
fecee241
L
6089 and 0f7h\r
6090 cp 045h\r
6091 ret\r
a16ba2b0
L
6092\r
6093?excom:\r
fecee241
L
6094 ex (sp),hl\r
6095 push af\r
6096 push bc\r
6097 push de\r
6098 ld c,(hl)\r
6099 ld b,000h\r
6100 inc hl\r
a16ba2b0
L
6101 ld a,?lcmax\r
6102 sub c\r
fecee241 6103 ld de,?exeit\r
a16ba2b0
L
6104 ldir\r
6105 ex de,hl\r
6106 ld (hl),018h\r
6107 inc hl\r
6108 ld (hl),a\r
6109 ex de,hl\r
fecee241
L
6110 pop de\r
6111 pop bc\r
6112 pop af\r
6113 ex (sp),hl\r
29605004 6114 if CPU_Z180\r
fecee241
L
6115 push hl\r
6116 ld hl,(ubbr)\r
a16ba2b0 6117\r
29605004 6118 else\r
fecee241
L
6119 push af\r
6120 ld a,(ubnk)\r
29605004 6121 endif\r
a16ba2b0 6122 if ROMSYS\r
fecee241
L
6123 push af\r
6124 ld a,(uromen)\r
a16ba2b0 6125 endif\r
fecee241
L
6126 jp ?comcod\r
6127\r
a16ba2b0
L
6128;------------------------------------------\r
6129; ddtram\r
6130;------------------------------------------\r
6131\r
6132vartab:\r
8df5b655
L
6133; dseg\r
6134 cseg\r
fecee241 6135ddtram:\r
a16ba2b0 6136;todo:\r
4caee1ec 6137; The following 2 params are changeable by user.\r
a16ba2b0
L
6138; Should these moved to top ram?\r
6139;\r
cdc4625b
L
6140ddtzrst:\r
6141 rst DDTZRSTVEC ;rst used by ddtz\r
29605004 6142ddtei: ei ;ints enabled/disabled while ddtz is running\r
a16ba2b0 6143 ret ;\r
a16ba2b0 6144offs.pc:\r
fecee241 6145 dw TPA\r
a16ba2b0 6146offs.@:\r
fecee241 6147 dw 0\r
a16ba2b0 6148CMD_ERR:\r
fecee241 6149 dw 0\r
a16ba2b0 6150CMD_RPT:\r
fecee241 6151 dw DDTZML\r
a16ba2b0 6152ci.buf:\r
fecee241 6153 db 80\r
a16ba2b0
L
6154 rept 83\r
6155 db 0\r
6156 endm\r
a16ba2b0 6157CON.COL:\r
fecee241 6158 db 0\r
a16ba2b0 6159XA747:\r
fecee241 6160 db 0\r
a16ba2b0 6161bp_tab:\r
fecee241 6162 rept BP_CNT\r
a16ba2b0
L
6163 db 0,0\r
6164 dw 0,0,0\r
6165 endm\r
6166BP_SIZE equ 8\r
a16ba2b0 6167sexp1:\r
fecee241 6168 dw sexpbuf\r
a16ba2b0 6169sexp2:\r
fecee241 6170 dw sexpbuf\r
a16ba2b0 6171sexpbuf:\r
fecee241 6172 rept 128\r
a16ba2b0
L
6173 db 0\r
6174 endm\r
a16ba2b0
L
6175sexpbufe:\r
6176\r
6177msg.Y:\r
fecee241 6178 dc 'Y0'\r
a16ba2b0 6179reg.Y:\r
fecee241 6180 rept 10\r
a16ba2b0
L
6181 dw 0\r
6182 endm\r
a16ba2b0 6183lst.S:\r
fecee241 6184 dw 0\r
a16ba2b0 6185lst.IP:\r
fecee241 6186 dw 0\r
a16ba2b0 6187lst.OP:\r
fecee241 6188 dw 0\r
a16ba2b0 6189lst.OD:\r
a16ba2b0 6190 db 0\r
a16ba2b0 6191lst.Qj:\r
a16ba2b0 6192 db 0\r
a16ba2b0 6193lst.D:\r
fecee241 6194 dw 0\r
a16ba2b0 6195HILOD:\r
fecee241 6196 dw 0\r
a16ba2b0 6197MAXLOD:\r
fecee241 6198 dw 0\r
a16ba2b0 6199XB068:\r
fecee241 6200 dw 0\r
a16ba2b0 6201lst.A:\r
fecee241 6202 dw 0\r
a16ba2b0 6203XB06C:\r
fecee241 6204 dw 0\r
a16ba2b0 6205pfx.IXY:\r
fecee241 6206 db 000h\r
a16ba2b0 6207is.pfx.IXY:\r
fecee241 6208 db 000h\r
a16ba2b0 6209lst.L:\r
fecee241 6210 dw 0\r
a16ba2b0 6211XBE01:\r
fecee241 6212 dw 0\r
a16ba2b0 6213XBE03:\r
fecee241 6214 db 000h\r
a16ba2b0 6215XBEDD:\r
a16ba2b0 6216 ret ;ret cc\r
fecee241
L
6217 and a\r
6218 pop hl\r
6219 inc hl\r
6220 jp (hl)\r
a16ba2b0 6221XBFE8:\r
fecee241 6222 db 0\r
a16ba2b0 6223TCFLG:\r
fecee241 6224 db 0\r
a16ba2b0 6225XBFEA:\r
fecee241 6226 db 0\r
a16ba2b0 6227TCCSTR:\r
fecee241 6228 dw 0\r
a16ba2b0 6229TCNFLG:\r
fecee241 6230 db 0\r
a16ba2b0 6231TRJFLG:\r
fecee241 6232 db 0\r
a16ba2b0 6233wstrtflg:\r
a16ba2b0 6234 db 1\r
a16ba2b0
L
6235\r
6236 cseg\r
6237vartabe:\r
6238\r
6239;------------------------------------------\r
6240\r
6241 .phase sysram_start+stacksize\r
6242$stack:\r
6243$stcka equ $ - stacksize\r
6244\r
6245curphse defl $\r
6246 .dephase\r
6247sysramc:\r
6248 .phase curphse\r
6249topcodbeg:\r
6250\r
6251reg.l2: db 0 ; 0fe50h\r
6252reg.h2: db 0 ; 0fe51h\r
6253reg.e2: db 0 ; 0fe52h\r
6254reg.d2: db 0 ; 0fe53h\r
6255reg.c2: db 0 ; 0fe54h\r
6256reg.b2: db 0 ; 0fe55h\r
6257reg.f2: db 0 ; 0fe56h\r
6258reg.a2: db 0 ; 0fe57h\r
6259 db 0\r
6260reg.i: db high ivtab\r
6261reg.iy: dw 0 ; 0fe5ah\r
6262reg.ix: dw 0 ; 0fe5ch\r
6263reg.e: db 0 ; 0fe5eh\r
6264reg.d: db 0 ; 0fe5fh\r
6265reg.c: db 0 ; 0fe60h\r
6266reg.b: db 0 ; 0fe61h\r
6267 if ROMSYS\r
6268udcntl: db CWAITIO ; 0fe62h (mem-, io- wait)\r
6269uromen: db ROM_DIS ; 0fe63h\r
6270 endif\r
29605004 6271 if CPU_Z180\r
a16ba2b0
L
6272ubbr: db 0 ; 0fe64h\r
6273ucbar: db USR$CBAR ; 0fe65h\r
29605004
L
6274 else\r
6275 db 0 ; 0fe64h\r
6276ubnk: db 0 ; 0fe65h\r
6277 endif\r
a16ba2b0
L
6278reg.f: db 0 ; 0fe66h\r
6279reg.a: db 0 ; 0fe67h\r
6280reg.l: db 0 ; 0fe68h\r
6281reg.h: db 0 ; 0fe69h\r
6282reg.sp: dw TOPRAM ; 0fe6ah\r
6283\r
6284$go:\r
6285 if ROMSYS\r
6286 out (000h),a ;064c fe6c\r
fecee241 6287 out0 (dcntl),l\r
29605004 6288 pop hl\r
a16ba2b0 6289 endif\r
29605004 6290 if CPU_Z180\r
fecee241
L
6291 out0 (cbar),h\r
6292 out0 (bbr),l\r
29605004
L
6293 else\r
6294 ld a,h\r
6295 call selbnk\r
6296 endif\r
fecee241
L
6297 pop af\r
6298 pop hl\r
6299 ld sp,(reg.sp)\r
a16ba2b0 6300reg.iff:\r
fecee241 6301 ei\r
a16ba2b0
L
6302 db 0C3h ;jp TPA ;065f feff ($+1): reg.pc\r
6303reg.pc:\r
6304 dw TPA\r
fecee241 6305\r
a16ba2b0
L
6306bpent:\r
6307 ld (reg.l),hl ;0662 fe82: bpent:\r
fecee241
L
6308 pop hl\r
6309 dec hl\r
6310 ld (reg.pc),hl\r
6311 ld (reg.sp),sp\r
6312 ld sp,reg.l\r
6313 push af\r
29605004 6314 if CPU_Z180\r
fecee241
L
6315;;; TODO: cbar on trap?\r
6316 in0 h,(cbar)\r
6317 in0 l,(bbr)\r
6318 ld a,SYS$CBAR\r
6319 out0 (cbar),a\r
29605004
L
6320 else\r
6321 ld a,(@cbnk)\r
6322 ld h,a\r
6323 xor a\r
6324 ld l,a\r
6325 call selbnk\r
6326 endif\r
fecee241 6327 push hl\r
a16ba2b0
L
6328\r
6329 if ROMSYS\r
fecee241
L
6330 in0 l,(dcntl)\r
6331 ld a,CWAITROM+CWAITIO\r
6332 out0 (dcntl),a\r
6333 ld a,($crom)\r
6334 cp c$rom\r
6335 ld a,ROM_EN\r
6336 out (000h),a\r
a16ba2b0
L
6337 endif\r
6338\r
fecee241 6339 jp bpddtz\r
a16ba2b0
L
6340\r
6341?comcod:\r
6342 if ROMSYS\r
6343 out (000h),a ;0692 feb2\r
fecee241 6344 pop af\r
a16ba2b0
L
6345 endif\r
6346\r
29605004 6347 if CPU_Z180\r
fecee241
L
6348 out0 (cbar),h\r
6349 out0 (bbr),l\r
6350 pop hl\r
29605004
L
6351 else\r
6352 call selbnk\r
6353 pop af\r
6354 endif\r
a16ba2b0
L
6355?exeit:\r
6356 ds ?lcmax+2\r
fecee241 6357 push af\r
29605004 6358 if CPU_Z180\r
fecee241
L
6359 ld a,SYS$CBAR\r
6360 out0 (cbar),a\r
a16ba2b0 6361\r
29605004
L
6362;;; TODO: bbr?\r
6363 else\r
6364 xor a\r
6365 call selbnk\r
6366 endif\r
a16ba2b0 6367 if ROMSYS\r
fecee241
L
6368 ld a,ROM_EN\r
6369 out (000h),a\r
a16ba2b0 6370 endif\r
fecee241
L
6371\r
6372 pop af\r
6373 ret\r
a16ba2b0
L
6374\r
6375topcodend:\r
6376curph defl $\r
6377 .dephase\r
6378sysrame:\r
6379\r
6380 end\r