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