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