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