]> cloudbase.mooo.com Git - ddt180.git/blob - ddt180.z80
Reorg
[ddt180.git] / ddt180.z80
1 ; Disassembled ddtz.com, version "DDT/Z [8101]"
2 ; with modified relocater.
3 ;
4 ; Build steps:
5 ; - Assemble to a .REL file with M80 or a compatible assembler.
6 ; - Use Digital Research Link-80 to generate a .PRL file (op switch).
7 ; - Cut the .PRL header (first 256 byte) end rename the result to DDTZ.COM.
8
9 ;-------------------------------------------------------------------------------
10 ; Relocation loader
11 ;
12
13 TPA equ 0100h
14 cseg
15 .phase TPA
16
17 jp start
18
19 ldr_end:
20 ldr_size equ $ - TPA
21 current_phase defl $
22
23 .dephase
24 current_cseg defl $
25
26 ;-------------------------------------------------------------------------------
27 ; DDT/Z core
28 ;
29
30 ; Some greneral definitions
31
32 TAB equ 9
33 LF equ 10
34 CR equ 13
35
36 ; CP/M memory layout
37
38 BDOS equ 5
39 dfcb1 equ 05ch
40 dfcb2 equ 06ch
41 DMA_BUF equ 080h
42 TPA equ 0100h
43
44 ; BDOS function calls
45
46 BDOS_CIN equ 1 ;Console Input
47 BDOS_COUT equ 2 ;Console Output
48 BDOS_PSTR equ 9 ;Print String
49 BDOS_CBUF equ 10 ;Read Console Buffer
50 BDOS_CSTAT equ 11 ;Get Console Status
51 BDOS_OPEN equ 15 ;Open File
52 BDOS_CLOSE equ 16 ;Close File
53 BDOS_DELETE equ 19 ;Delete File
54 BDOS_READ equ 20 ;Read Sequential
55 BDOS_WRITE equ 21 ;Write Sequential
56 BDOS_CREATE equ 22 ;Make File
57 BDOS_SETDMA equ 26 ;Set DMA Address
58
59 ; ddtz specific definitions
60
61 STACK_SIZE equ 64 ;ddtz internal stack
62 CONBUF_SIZE equ 80 ;Size of console input buffer
63 EXPR_BUF_SIZE equ 128 ;expressen buffer for conditional breakpoints
64 BP_CNT equ 12 ;Number of breakpoints
65 BP_SIZE equ 8 ;Size of a breakpoint record
66 YREG_CNT equ 10 ;Number of Y registers (0..9)
67
68 ;-------------------------------------------------------------------------------
69
70 ddtz_base:
71 jp ddtz_bdos
72 l0003h:
73 rst 30h
74 sub_0004h:
75 nop
76 ret
77 ddtz_bdos:
78 jp 0
79
80 current_cseg defl $ - current_cseg
81 .phase current_phase + current_cseg
82 signon:
83 db 'DDT/180',TAB
84 db '[8101] 003',CR,LF,'$'
85 msgz80:
86 db 'Z80 or better required!',cr,lf,'$'
87
88 current_phase defl $
89 .dephase
90 current_cseg defl $
91 ds STACK_SIZE - (current_phase - signon)
92
93
94 stack:
95 reg.l2: db 000h
96 reg.h2: db 000h
97 reg.e2: db 000h
98 reg.d2: db 000h
99 reg.c2: db 000h
100 reg.b2: db 000h
101 reg.f2: db 000h
102 reg.a2: db 000h
103 l004eh: db 000h
104 reg.i: db 000h
105 reg.iy: dw 0000h
106 reg.ix: dw 0000h
107 reg.f: db 000h
108 reg.a: db 000h
109 reg.c: db 000h
110 reg.b: db 000h
111 reg.e: db 000h
112 reg.d: db 000h
113 reg.l: db 000h
114 reg.h: db 000h
115 reg_sp: dw TPA
116 reg.iff:
117 db 0f3h
118 db 0c3h
119 reg.pc: dw TPA
120 var.$: dw 0000h
121 var.@: dw 0
122
123 error_func:dw l0146h
124 cmd_rpt:dw mainloop
125
126 conbuf:
127 db CONBUF_SIZE
128
129 ld sp,stack
130 exx
131 ld de,ddtz_base
132 or a
133 sbc hl,de
134 add hl,de
135 jr c,l0079h
136 ex de,hl
137 l0079h:
138 ld de,TPA
139 l007ch:
140 dec hl
141 ld (hl),000h
142 ld a,h
143 sub d
144 ld b,a
145 ld a,l
146 sub e
147 or b
148 jr nz,l007ch
149 ld a,i
150 ld (reg.i),a
151 ld a,0f3h
152 jp po,l0093h
153 ld a,0fbh
154 l0093h:
155 ld (reg.iff),a
156 call sub_0004h
157 ld hl,ddtz_base
158 ld l,000h
159 ld (reg_sp),hl
160 call cpy_fcb2
161 ld a,(dfcb1+1)
162 cp ' '
163 ld hl,0
164 call nz,read_file
165 jr mainloop
166
167 ds CONBUF_SIZE + 3 - ($ - conbuf)
168
169 CMDTAB:
170 dw cmd_@ ;examine/substitute the displacement register @
171 dw cmd_A ;Assemble
172 dw cmd_B ;Breakpoints display/set/clear
173 dw cmd_C ;trace over Calls
174 dw cmd_D ;Display memory in hex and ascii
175 dw ERROR ;
176 dw cmd_F ;specify Filename and command line
177 dw cmd_G ;Go
178 dw cmd_H ;compute Hex and other expressions
179 dw cmd_I ;Input a byte from port
180 dw ERROR ;
181 dw ERROR ;
182 dw cmd_L ;List disassembled code
183 dw cmd_M ;Move memory [and verify]
184 dw ERROR ;
185 dw cmd_O ;Output a byte to port
186 dw ERROR ;
187 dw cmd_Q ;Qery memory for byte string
188 dw cmd_R ;Read binary or hex file and/or symbol file
189 dw cmd_S ;Substitute memory
190 dw cmd_T ;Trace
191 dw ERROR ;
192 dw cmd_V ;Verify (compare) two memory areas
193 dw cmd_W ;Write a file to disk
194 dw cmd_X ;eXamine [and substitute] registers
195 dw cmd_Y ;examine [and substitute] Y variables
196 dw cmd_Z ;Zap (fill) memory with a byte string
197
198 mainloop:
199 ld sp,stack
200 ld hl,l0146h
201 ld (error_func),hl
202 ld hl,(reg.pc)
203 ld (var.$),hl
204 call bp_clr_temporary
205 ld hl,(cmd_rpt)
206 ld de,mainloop
207 call cp_hl_de
208 ld a,'>'
209 call outchar
210 call nz,outchar
211 call z,outbl
212 call get_line
213 call skipbl
214 jr z,exe_hl
215 ld hl,mainloop
216 ld (cmd_rpt),hl
217 inc de
218 sub '@'
219 jr c,ERROR
220 cp 'Z'+1-'@'
221 jr nc,ERROR
222 add a,a
223 ld hl,CMDTAB
224 call add_hl_a
225 ld a,(hl)
226 inc hl
227 ld h,(hl)
228 ld l,a
229 jr exe_hl
230
231 ERROR:
232 ld hl,(error_func)
233 exe_hl:
234 call CALL_HL
235 jr mainloop
236
237 l0146h:
238 ld a,'?'
239 call outchar
240 ;fall thru
241 crlf:
242 call inchar
243 ld a,CR
244 call outchar
245 ld a,LF
246 call outchar
247 ld a,0
248 ld (con_col),a
249 jr c,mainloop
250 ret
251
252 out.hl.@:
253 call out_hl
254 push de
255 push hl
256 ld de,(var.@)
257 ld a,d
258 or e
259 jr z,l01bfh
260 call outbl
261 ld a,'@'
262 call outchar
263 and a
264 sbc hl,de
265 call out_hl
266 l01bfh:
267 pop hl
268 pop de
269 ret
270
271 sub_01d9h:
272 ld a,'-'
273 call outchar
274 dec hl
275 jp cpl.hl
276
277 out_hl_dec_neg:
278 push hl
279 call sub_01d9h
280 defb 03eh
281 out.hl.dec:
282 push hl
283 ld b,006h
284 call sub_01f9h
285 pop hl
286 ld a,'.'
287 call outchar
288 l01f3h:
289 call outbl
290 djnz l01f3h
291 ret
292 sub_01f9h:
293 dec b
294 push de
295 ld de,10
296 call div_hl_de
297 ld a,h
298 or l
299 call nz,sub_01f9h
300 ld a,e
301 pop de
302 jr out_dgt
303
304 out_hl_neg:
305 push hl
306 call sub_01d9h
307 call out_hl
308 pop hl
309 ret
310
311 out_hl:
312 ld a,h
313 call out_hex
314 ld a,l
315
316 out_hex:
317 push af
318 rra
319 rra
320 rra
321 rra
322 call out_dgt
323 pop af
324
325 out_dgt:
326 and 0fh
327 cp 10
328 jr c,l0229h
329 add a,007h
330 l0229h:
331 add a,'0'
332 jr outchar
333
334 out.bin.w:
335 ld a,h
336 call out.bin.b
337 ld a,l
338 out.bin.b:
339 ld b,8
340 l01c9h:
341 add a,a
342 push af
343 ld a,00
344 adc a,a
345 call out_dgt
346 pop af
347 djnz l01c9h
348 ld a,'"'
349 jr outchar
350
351 out.ascii:
352 push af
353 res 7,a
354 cp ' '
355 push af
356 call nc,outbl
357 call outquote
358 pop af
359 jr nc,l0242h
360 sub 0c0h
361 ex af,af'
362 ld a,'^'
363 call outchar
364 ex af,af'
365 l0242h:
366 call outchar
367 cp ''''
368 call z,outchar
369 ex af,af'
370 call outquote
371 pop af
372 or a
373 ld a,'.'
374 call m,outchar
375 ex af,af'
376 ret
377
378 outbl6:
379 call outbl2
380 outbl4:
381 call outbl2
382 outbl2:
383 call outbl
384 outbl:
385 ld a,' '
386 jr outchar
387
388 p_char_lparen:
389 ld a,'('
390 jr outchar
391
392 outquote:
393 ld a,''''
394 outchar:
395 push hl
396 push de
397 push bc
398 push af
399 and 07fh
400 ld e,a
401 ld c,BDOS_COUT
402 call ddtz_bdos
403 ld hl,con_col
404 inc (hl)
405 pop af
406 pop bc
407 pop de
408 pop hl
409 ret
410
411 pstr:
412 ld c,0
413 l028ah:
414 ld a,(hl)
415 inc hl
416 and a
417 ret z
418 call outchar
419 inc c
420 and a
421 ret m
422 jr l028ah
423
424 pstr_inl:
425 ex (sp),hl
426 call pstr
427 ex (sp),hl
428 ret
429
430 inchar:
431 push hl
432 push de
433 push bc
434 ld c,BDOS_CSTAT
435 call ddtz_bdos
436 and a
437 jr z,l0284h
438 ld c,BDOS_CIN
439 call ddtz_bdos
440 scf
441 l0284h:
442 pop bc
443 pop de
444 pop hl
445 ret
446
447 get_line:
448 push hl
449 ld de,conbuf
450 ld c,BDOS_CBUF
451 call ddtz_bdos
452 call crlf
453 ld de,conbuf+1
454 ld a,(de)
455 ld b,a
456 ld c,0
457 inc b
458 l0162h:
459 inc de
460 dec b
461 jr z,l0194h
462 ld a,(de)
463 bit 0,c
464 call z,toupper
465 ld (de),a
466 cp ''''
467 jr nz,l0162h
468 push de
469 dec de
470 ld a,(de)
471 cp ''''
472 jr z,l0190h
473 dec de
474 ld a,(de)
475 cp '^'
476 jr z,l0184h
477 dec de
478 ld a,(de)
479 cp '^'
480 jr nz,l0190h
481 l0184h:
482 inc de
483 push bc
484 call sub_0303h
485 pop bc
486 dec de
487 ld a,(de)
488 cp ''''
489 jr z,l0191h
490 l0190h:
491 inc c
492 l0191h:
493 pop de
494 jr l0162h
495 l0194h:
496 xor a
497 ld (de),a
498 ld de,conbuf+2
499 pop hl
500 ret
501
502 toupper:
503 cp 'a'
504 ret c
505 cp 'z'+1
506 ret nc
507 and 05fh
508 ret
509
510 skipbl0:
511 inc de
512 skipbl:
513 ld a,(de)
514 cp ' '
515 jr z,skipbl0
516 cp TAB
517 jr z,skipbl0
518 or a
519 ret
520
521 next_arg:
522 call skipbl
523 cp ','
524 ret nz
525 inc de
526 call skipbl
527 cp a
528 ret
529
530 assert_eol:
531 call skipbl
532 ret z
533 to_error:
534 jp ERROR
535
536 chk_sp:
537 push hl
538 push de
539 ld hl,0
540 add hl,sp
541 ld de,stack-40
542 call cp_hl_de
543 pop de
544 pop hl
545 jr c,to_error
546 ret
547
548 add_hl_a:
549 add a,l
550 ld l,a
551 ret nc
552 inc h
553 ret
554
555 cp_hl_de:
556 and a
557 sbc hl,de
558 add hl,de
559 ret
560
561 sub_hl_a1:
562 dec hl
563 sub_hl_a:
564 push bc
565 ld c,a
566 ld b,0
567 or a
568 sbc hl,bc
569 pop bc
570 ret
571
572 sym_getname:
573 push de
574 push hl
575 ld hl,ddtz_base+2
576 sgn_l:
577 ld d,(hl)
578 dec hl
579 ld e,(hl)
580 dec hl
581 ld a,(hl)
582 cp 0c3h
583 jr z,sgn_e
584
585 ex (sp),hl
586 call cp_hl_de
587 jr z,sgn_e
588 ex (sp),hl
589 call sub_hl_a1
590 jr sgn_l
591 sgn_e:
592 sub 0c3h
593 pop hl
594 pop de
595 ret
596
597 p_symstr:
598 push bc
599 ld b,(hl)
600 pss_l:
601 dec hl
602 ld a,(hl)
603 call outchar
604 djnz pss_l
605 pop bc
606 ret
607
608 p_sym_space:
609 if 0
610 ld a,(dash_flag)
611 or a
612 ret nz
613 endif
614
615 push hl
616 push bc
617 ld c,a
618 ld a,(con_col)
619 ld b,a
620 call sym_getname
621 jr z,psb_align
622 bit 7,c
623 jr z,psb_nd
624 ld a,' '
625 call outchar
626 ld a,'.'
627 call outchar
628 psb_nd:
629 call p_symstr
630
631 psb_align:
632 ld a,(con_col)
633 sub b
634 ld b,a
635 ld a,(symlen_max)
636 bit 7,c
637 jr z,$+4
638 add a,2
639 res 7,c
640 add c
641 sub b
642 ld b,a
643 jr z,psb_e
644 psb_a_l:
645 call outbl
646 djnz psb_a_l
647 psb_e:
648 pop bc
649 pop hl
650 ret
651
652 p_label:
653 if 0
654 ld a,(dash_flag)
655 or a
656 ret nz
657 endif
658 push hl
659 call sym_getname
660 jr z,pl_e
661 call p_symstr
662 ld a,':'
663 call outchar
664 call crlf
665 pl_e:
666 pop hl
667 ret
668
669 lookupch:
670 ld b,0
671 l02f5h:
672 ld a,(hl)
673 and a
674 ret z
675 ld a,(de)
676 cp (hl)
677 jr z,l0300h
678 inc hl
679 inc b
680 jr l02f5h
681 l0300h:
682 scf
683 inc de
684 ret
685
686 sub_0303h:
687 ld hl,b_0cc3_start
688 ld b,07fh
689 jr l030ch
690
691 sub_030ah:
692 ld b,0ffh
693 l030ch:
694 inc b
695 ld a,(hl)
696 and a
697 ret z
698 call sub_031ch
699 jr nc,l030ch
700 res 7,b
701 ret
702
703 sub_0318h:
704 push bc
705 res 7,b
706 defb 03eh
707 sub_031ch:
708 push bc
709 push de
710 l031eh:
711 ld a,(de)
712 xor (hl)
713 and 07fh
714 jr nz,l0336h
715 bit 7,(hl)
716 inc hl
717 inc de
718 jr z,l031eh
719 scf
720 bit 7,b
721 call z,sub_060ch
722 jr nc,l0339h
723 pop af
724 scf
725 pop bc
726 ret
727 l0336h:
728 call sub_0345h
729 l0339h:
730 pop de
731 and a
732 pop bc
733 ret
734
735 sel_dc_string:
736 inc b
737 l033eh:
738 dec b
739 ret z
740 call sub_0345h
741 jr l033eh
742
743 sub_0345h:
744 ld a,(hl)
745 and a
746 ret z
747 l0348h:
748 ld a,(hl)
749 inc hl
750 and a
751 ret m
752 jr l0348h
753
754 sub_034eh:
755 call get_arg_range
756 push hl
757 push bc
758 call next_arg
759 call sub_0363h
760 ex de,hl
761 pop bc
762 pop hl
763 ret
764
765 sub_035dh:
766 call expr
767 jr c,error0
768 ret
769
770 sub_0363h:
771 call sub_035dh
772 l0366h:
773 jp assert_eol
774
775 get_lastarg_def:
776 call get_arg_def
777 jr l0366h
778
779 get_arg_def:
780 push hl
781 call expr
782 jr c,l0375h
783 ex (sp),hl
784 l0375h:
785 pop hl
786 ret
787
788 sub_0377h:
789 call b_037c_start
790 jr l0366h
791
792 b_037c_start:
793 defb 0e6h
794 get_arg_range:
795 scf
796 ex af,af'
797 push bc
798 push hl
799 call expr
800 jr nc,l038ch
801 ex af,af'
802 jr c,error0
803 ex af,af'
804 pop hl
805 defb 03eh
806 l038ch:
807 pop af
808 call get_range
809 jr nc,l0398h
810 ex af,af'
811 pop bc
812 ret nc
813 error0:
814 jp ERROR
815 l0398h:
816 pop af
817 ret
818
819 get_range:
820 call next_arg
821 cp 'S'
822 jr nz,l03a2h
823 inc de
824 l03a2h:
825 push hl
826 push af
827 call expr
828 jr c,l03b8h
829 ld b,h
830 ld c,l
831 pop af
832 pop hl
833 jr z,l03b6h
834 ld a,c
835 sub l
836 ld c,a
837 ld a,b
838 sbc a,h
839 ld b,a
840 inc bc
841 l03b6h:
842 and a
843 ret
844 l03b8h:
845 pop af
846 pop hl
847 jr z,error0
848 scf
849 ret
850
851 expr:
852 call skipbl
853 expr1:
854 call do_subexpr
855 ret c
856 call do_rel_op
857 ret nc
858 push bc
859 push hl
860 call do_subexpr
861 jr c,error0
862 ex de,hl
863 ex (sp),hl
864 and a
865 sbc hl,de
866 ld hl,0ffffh
867 pop de
868 ret
869
870 do_op_eq:
871 jr z,l03edh
872 jr l03ech
873 do_op_ne:
874 jr nz,l03edh
875 jr l03ech
876 do_op_le:
877 jr z,l03edh
878 do_op_lt:
879 jr c,l03edh
880 jr l03ech
881 do_op_gt:
882 jr z,l03ech
883 do_op_ge:
884 jr nc,l03edh
885 l03ech:
886 inc hl
887 l03edh:
888 and a
889 ret
890 do_rel_op:
891 push hl
892 ld hl,tab_eq_le_ge
893 call lookupch
894 jr nc,l041dh
895 ld a,b
896 or a
897 jr z,l0411h
898 ld a,(de)
899 cp '='
900 jr nz,l0406h
901 inc de
902 inc b
903 inc b
904 jr l0411h
905 l0406h:
906 bit 0,b
907 jr z,l0411h
908 cp '>'
909 jr nz,l0411h
910 inc de
911 ld b,005h
912 l0411h:
913 ld hl,tab_func_eqlege
914 ld a,b
915 add a,a
916 call add_hl_a
917 ld c,(hl)
918 inc hl
919 ld b,(hl)
920 scf
921 l041dh:
922 pop hl
923 ret
924
925 tab_eq_le_ge:
926 db '=<>',0
927
928 tab_func_eqlege:
929 dw do_op_eq
930 dw do_op_lt
931 dw do_op_gt
932 dw do_op_le
933 dw do_op_ge
934 dw do_op_ne
935
936 do_subexpr:
937 call do_factor
938 ret c
939 l0433h:
940 call do_binary_op
941 push hl
942 push bc
943 call do_factor
944 pop bc
945 ex de,hl
946 ex (sp),hl
947 jr nc,l0447h
948 pop de
949 ld a,b
950 or c
951 ret z
952 jp ERROR
953
954 l0447h:
955 ld a,b
956 or c
957 push bc
958 ret nz
959 pop bc
960
961 doop_add:
962 add hl,de
963 l044dh:
964 pop de
965 jr l0433h
966
967 doop_sub:
968 and a
969 sbc hl,de
970 jr l044dh
971
972 doop_mlt:
973 push bc
974 ld b,h
975 ld c,l
976 ld hl,0
977 ld a,010h
978 l045dh:
979 add hl,hl
980 ex de,hl
981 add hl,hl
982 ex de,hl
983 jr nc,l0464h
984 add hl,bc
985 l0464h:
986 dec a
987 jr nz,l045dh
988 pop bc
989 jr l044dh
990
991 doop_div:
992 call div_hl_de
993 jr l044dh
994
995 doop_mod:
996 call div_hl_de
997 ex de,hl
998 jr l044dh
999
1000 ; divide x/y
1001 ; hl: x
1002 ; de: y
1003 ; return:
1004 ; hl: q (x/y)
1005 ; de: r (x%y)
1006
1007 div_hl_de:
1008 push bc
1009 ex de,hl
1010 ld b,h
1011 ld c,l
1012 ld hl,0
1013 ld a,16
1014
1015 ; de: x (x shifted out, q shifted in)
1016 ; bc: y
1017 ; hl: r (initially 0)
1018
1019 l047eh:
1020 push af
1021 add hl,hl
1022 ex de,hl
1023 xor a
1024 add hl,hl
1025 ex de,hl
1026 adc a,l
1027 sub c
1028 ld l,a
1029 ld a,h
1030 sbc a,b
1031 ld h,a
1032 inc de
1033 jr nc,l048fh
1034 add hl,bc
1035 dec de
1036 l048fh:
1037 pop af
1038 dec a
1039 jr nz,l047eh
1040 ex de,hl
1041 pop bc
1042 ret
1043
1044 doop_and:
1045 ld a,h
1046 and d
1047 ld h,a
1048 ld a,l
1049 and e
1050 ld l,a
1051 jr l044dh
1052
1053 doop_or:
1054 ld a,h
1055 or d
1056 ld h,a
1057 ld a,l
1058 or e
1059 ld l,a
1060 jr l044dh
1061
1062 doop_xor:
1063 ld a,h
1064 xor d
1065 ld h,a
1066 ld a,l
1067 xor e
1068 ld l,a
1069 jr l044dh
1070
1071 do_binary_op:
1072 push hl
1073 ld hl,tab_op_a
1074 call lookupch
1075 ld a,b
1076 ld hl,tblf_opa
1077 add a,a
1078 call add_hl_a
1079 ld c,(hl)
1080 inc hl
1081 ld b,(hl)
1082 pop hl
1083 ret
1084
1085 tab_op_a:
1086 DB '+-*/%&!#',0
1087
1088 tblf_opa:
1089 dw doop_add
1090 dw doop_sub
1091 dw doop_mlt
1092 dw doop_div
1093 dw doop_mod
1094 dw doop_and
1095 dw doop_or
1096 dw doop_xor
1097 dw 0
1098
1099 fact_factor:
1100 call do_factor
1101 ret nc
1102 jp ERROR
1103
1104 do_factor:
1105 call chk_sp
1106 call get.number
1107 ret nc
1108 inc de
1109 ld hl,(BDOS+1)
1110 cp 'T'
1111 ret z
1112 ld hl,(high_load)
1113 cp 'H'
1114 ret z
1115 ld hl,(max_load)
1116 cp 'M'
1117 ret z
1118 ld hl,TPA
1119 cp 'L'
1120 ret z
1121 ld hl,(var.@)
1122 cp '@'
1123 ret z
1124 ld hl,(var.$)
1125 cp '$'
1126 ret z
1127 cp '-'
1128 jr z,fact_factneg
1129 cp '~'
1130 jr z,fact_factinv
1131 cp '+'
1132 jr z,fact_factor
1133 cp '^'
1134 jr z,fact_reg.CPU
1135 cp 'Y'
1136 jr z,fact_reg.Y
1137 cp '('
1138 jr z,fact_mem
1139 cp '['
1140 jr z,expr_brckt
1141 cp ''''
1142 jr z,fact_factstring
1143 cp '.'
1144 jr z,fact_symbol
1145 dec de
1146 scf
1147 ret
1148
1149 fact_reg.Y:
1150 call get.decdigit
1151 jr c,error4
1152 inc de
1153 get_y_val:
1154 add a,a
1155 ld hl,reg_Y
1156 call add_hl_a
1157 ld a,(hl)
1158 inc hl
1159 ld h,(hl)
1160 ld l,a
1161 and a
1162 ret
1163
1164 fact_factstring:
1165 ld hl,0
1166 l054bh:
1167 ld a,(de)
1168 cp ''''
1169 jr z,l0557h
1170 and a
1171 ret z
1172 l0552h:
1173 ld h,l
1174 ld l,a
1175 inc de
1176 jr l054bh
1177 l0557h:
1178 inc de
1179 ld a,(de)
1180 cp ''''
1181 jr z,l0552h
1182 sub '.'
1183 or a
1184 ret nz
1185 inc de
1186 set 7,l
1187 ret
1188
1189 fact_reg.CPU:
1190 call sub_0caeh
1191 jr nc,error4
1192 ld a,(hl)
1193 inc hl
1194 ld h,(hl)
1195 ld l,a
1196 and a
1197 bit 0,c
1198 ret nz
1199 ld h,000h
1200 ret
1201
1202 fact_factneg:
1203 call fact_factor
1204 dec hl
1205 cpl.hl:
1206 ld a,h
1207 cpl
1208 ld h,a
1209 ld a,l
1210 cpl
1211 ld l,a
1212 ret
1213
1214 fact_factinv:
1215 call fact_factor
1216 jr cpl.hl
1217
1218 fact_mem:
1219 call expr1
1220 jr c,error4
1221 ld a,(de)
1222 cp ')'
1223 jr nz,error4
1224 inc de
1225 ld a,(hl)
1226 inc hl
1227 ld h,(hl)
1228 ld l,a
1229 ld a,(de)
1230 inc de
1231 cp '.'
1232 ret z
1233 dec de
1234 xor a
1235 ld h,a
1236 ret
1237
1238 expr_brckt:
1239 call expr1
1240 jr c,error4
1241 ld a,(de)
1242 cp ']'
1243 inc de
1244 ret z
1245 error4:
1246 jp ERROR
1247
1248 fact_symbol:
1249 push bc
1250 ld hl,ddtz_base
1251
1252 fs_nxtsym:
1253 ld a,(hl) ;symlen
1254 cp 0c3h
1255 jr z,error4
1256 ld b,a
1257 inc b
1258 push hl
1259 push de
1260 fs_2:
1261 ld a,(de)
1262 call test_termchar
1263 jr z,fs_endstr
1264 dec b
1265 jr z,fs_cont
1266 inc de
1267 dec hl
1268 cp (hl)
1269 jr z,fs_2
1270 fs_cont:
1271 pop de
1272 pop hl
1273 ld a,(hl)
1274 add a,3
1275 call sub_hl_a
1276 jr fs_nxtsym
1277
1278 fs_endstr:
1279 dec b
1280 jr nz,fs_cont
1281 pop hl
1282 pop hl
1283 inc hl
1284 ld a,(hl)
1285 inc hl
1286 ld h,(hl)
1287 ld l,a
1288 or a
1289 pop bc
1290 ret
1291
1292 t_trmchrs:
1293 db ' !#&()*+,-/:;<=>[\]{|}',0
1294 t_trmchrs_len equ $ - t_trmchrs
1295
1296 test_termchar:
1297 push hl
1298 push bc
1299 ld hl,t_trmchrs
1300 ld bc,t_trmchrs_len
1301 cpir
1302 pop bc
1303 pop hl
1304 ret
1305
1306
1307
1308 get.number:
1309 call get.hexdigit
1310 ret c
1311 push de
1312 test_number:
1313 inc de
1314 call get.hexdigit
1315 jr nc,test_number
1316 pop de
1317 cp '.'
1318 jr z,get_dec_number
1319 cp '"'
1320 jr z,get_bin_number
1321 ld hl,0
1322 next_hexdigit:
1323 call get.hexdigit
1324 jr c,hexnum_done
1325 add hl,hl
1326 add hl,hl
1327 add hl,hl
1328 add hl,hl
1329 call add_hl_a
1330 inc de
1331 jr next_hexdigit
1332
1333 hexnum_done:
1334 xor 'H'
1335 ret nz
1336 inc de
1337 ret
1338
1339 get_bin_number:
1340 ld hl,0
1341 next_bindigit:
1342 call get.bindigit
1343 l05dbh:
1344 inc de
1345 jr c,l05e4h
1346 add hl,hl
1347 call add_hl_a
1348 jr next_bindigit
1349 l05e4h:
1350 cp '"'
1351 jp nz,ERROR
1352 call get.bindigit
1353 jr nc,l05dbh
1354 or a
1355 ret
1356
1357 get_dec_number:
1358 ld hl,0
1359 next_decdigit:
1360 call get.decdigit
1361 inc de
1362 jr c,decnum_done
1363 push bc
1364 add hl,hl
1365 ld b,h
1366 ld c,l
1367 add hl,hl
1368 add hl,hl
1369 add hl,bc
1370 pop bc
1371 call add_hl_a
1372 jr next_decdigit
1373 decnum_done:
1374 cp '.'
1375 ret z
1376 jp ERROR
1377
1378 sub_060ch:
1379 ld a,(de)
1380 cp '['
1381 jr l0614h
1382
1383 get.hexdigit:
1384 ld a,(de)
1385 hex_digit:
1386 cp 'F'+1
1387 l0614h:
1388 ccf
1389 ret c
1390 cp 'A'
1391 jr c,l061eh
1392 sub 'A'-10
1393 ret
1394
1395 get.decdigit:
1396 ld a,(de)
1397 l061eh:
1398 cp '9'+1
1399 jr l0625h
1400
1401 get.bindigit:
1402 ld a,(de)
1403 cp '1'+1
1404 l0625h:
1405 ccf
1406 ret c
1407 cp '0'
1408 ret c
1409 sub '0'
1410 ret
1411
1412 p_cpustat0:
1413 call assert_eol
1414 p_cpustat:
1415 call p_f
1416 call outbl2
1417 ld hl,b_06e9_start
1418 ld de,b_0709_start
1419 ld b,6
1420 l063eh:
1421 call p_regs
1422 djnz l063eh
1423 push hl
1424 push de
1425 ld iy,(reg.pc)
1426 call p_disas_instr
1427 exx
1428 ex af,af'
1429 call crlf
1430 call p_f2
1431 call outbl2
1432 pop de
1433 pop hl
1434 ld b,7
1435 l065bh:
1436 call p_regs
1437 djnz l065bh
1438 exx
1439 ex af,af'
1440 and a
1441 jr z,l066bh
1442 call outbl6
1443 call p_offset
1444 l066bh:
1445 jp crlf
1446
1447 p_f:
1448 ld a,(reg.f)
1449 call p_flags
1450 ld a,(reg.iff)
1451 cp 0f3h
1452 jp z,outbl
1453 ld a,'E'
1454 jp outchar
1455 p_f2:
1456 ld a,(reg.f2)
1457 call p_flags
1458 jp outbl
1459 p_flags:
1460 ld b,a
1461 ld a,'S'
1462 call sub_06aah
1463 ld a,'Z'
1464 call sub_06aah
1465 rl b
1466 ld a,'H'
1467 call sub_06aah
1468 rl b
1469 ld a,'V'
1470 call sub_06aah
1471 ld a,'N'
1472 call sub_06aah
1473 ld a,'C'
1474 sub_06aah:
1475 rl b
1476 jp c,outchar
1477 jp outbl
1478
1479 p_regs:
1480 push bc
1481 push de
1482 call pstr
1483 ld a,'='
1484 call outchar
1485 ex (sp),hl
1486 ld e,(hl)
1487 inc hl
1488 ld d,(hl)
1489 inc hl
1490 ld a,(hl)
1491 inc hl
1492 push hl
1493 and a
1494 jr z,l06deh
1495 push af
1496 ld a,(de)
1497 ld l,a
1498 inc de
1499 ld a,(de)
1500 ld h,a
1501 pop af
1502 dec a
1503 jr z,l06d9h
1504 call out.hl.@
1505 call z,outbl6
1506 jr l06e2h
1507 l06d9h:
1508 call out_hl
1509 jr l06e2h
1510 l06deh:
1511 ld a,(de)
1512 call out_hex
1513 l06e2h:
1514 call outbl
1515 pop de
1516 pop hl
1517 pop bc
1518 ret
1519
1520 b_06e9_start:
1521 DC 'A '
1522 DC 'BC '
1523 DC 'DE '
1524 DC 'HL '
1525 DC 'SP'
1526 DC 'PC'
1527 DC 'a'''
1528 DC 'bc'''
1529 DC 'de'''
1530 DC 'hl'''
1531 DC 'IX'
1532 DC 'IY'
1533 DC 'I'
1534 DB 0
1535
1536 b_0709_start:
1537 dw reg.a
1538 db 000h
1539 dw reg.c
1540 db 001h
1541 dw reg.e
1542 db 001h
1543 dw reg.l
1544 db 001h
1545 dw reg_sp
1546 db 001h
1547 dw reg.pc
1548 db 002h
1549 dw reg.a2
1550 db 000h
1551 dw reg.c2
1552 db 001h
1553 dw reg.e2
1554 db 001h
1555 dw reg.l2
1556 db 001h
1557 dw reg.ix
1558 db 001h
1559 dw reg.iy
1560 db 001h
1561 dw reg.i
1562 db 000h
1563 db 000h
1564
1565 cmd_G:
1566 sub a
1567 ld (trace_call_flag),a
1568 ld (l0941h),a
1569 call expr
1570 jr c,l0740h
1571 ld (reg.pc),hl
1572 l0740h:
1573 call skipbl
1574 jp z,user_go
1575 cp ';'
1576 jp nz,ERROR
1577 inc de
1578 ld a,002h
1579 call bp_enter
1580 jp user_go
1581
1582 bp_clr_temporary:
1583 ld b,BP_CNT
1584 ld ix,bp_tab
1585 l075ah:
1586 ld a,(ix+000h)
1587 and 0f1h
1588 ld (ix+000h),a
1589 call bp_clr_condition
1590 ld de,BP_SIZE
1591 add ix,de
1592 djnz l075ah
1593 ret
1594
1595 cmd_B:
1596 call skipbl
1597 jr z,bp_print
1598 inc de
1599 cp 'X'
1600 jr z,bp_clr0
1601 dec de
1602 ld a,001h
1603 jp bp_enter
1604 bp_clr0:
1605 call skipbl
1606 jr z,bp_clr_all
1607 bp_clr_next:
1608 call expr
1609 jp c,assert_eol
1610 push de
1611 call bp_clr
1612 pop de
1613 call next_arg
1614 jr bp_clr_next
1615
1616 bp_clr_all:
1617 scf
1618 bp_clr:
1619 ld b,BP_CNT
1620 ld ix,bp_tab
1621 l0799h:
1622 push af
1623 jr c,l07a7h
1624 ld e,(ix+002h)
1625 ld d,(ix+003h)
1626 call cp_hl_de
1627 jr nz,l07aeh
1628 l07a7h:
1629 ld (ix+000h),000h
1630 call bp_clr_condition
1631 l07aeh:
1632 ld de,BP_SIZE
1633 add ix,de
1634 pop af
1635 djnz l0799h
1636 ret
1637
1638 bp_print:
1639 ld b,BP_CNT
1640 ld ix,bp_tab
1641 bp_pr_l:
1642 bit 0,(ix+000h)
1643 jr z,bp_pr_cont
1644 ld a,'R'
1645 bit 4,(ix+000h)
1646 jr nz,l07cdh
1647 ld a,' '
1648 l07cdh:
1649 call outchar
1650 call outbl
1651 ld l,(ix+002h)
1652 ld h,(ix+003h)
1653 call out.hl.@
1654 ld a,82h
1655 call p_sym_space
1656 call pstr_inl
1657 dc ':'
1658 ld l,(ix+004h)
1659 ld h,(ix+005h)
1660 call out_hl
1661 ld l,(ix+006h)
1662 ld h,(ix+007h)
1663 ld a,h
1664 or l
1665 jr z,l0805h
1666 call outbl4
1667 ld a,'I'
1668 call outchar
1669 call outbl2
1670 call pstr
1671 l0805h:
1672 call crlf
1673 bp_pr_cont:
1674 ld de,BP_SIZE
1675 add ix,de
1676 djnz bp_pr_l
1677 ret
1678
1679 ; Add break points to list
1680 ; A = 1 Permanent (B command)
1681 ; A = 2 Temporary (G command)
1682
1683 bp_enter:
1684 ld b,a
1685 call skipbl
1686 ret z
1687 cp 'R'
1688 jr nz,bp_e_1
1689 inc de
1690 set 4,b
1691 bp_e_1:
1692 push bc
1693 call expr
1694 jp c,ERROR
1695 pop bc
1696 bit 0,b
1697 push bc
1698 push de
1699 push hl
1700 call nz,bp_clr
1701 pop hl
1702 call bp_get_freeslot
1703 pop de
1704 ld (ix+002h),l
1705 ld (ix+003h),h
1706 call bp_get_count
1707 ld (ix+004h),l
1708 ld (ix+005h),h
1709 call bp_get_condition
1710 ld (ix+006h),l
1711 ld (ix+007h),h
1712 call next_arg
1713 pop af
1714 ld (ix+000h),a
1715 and 00fh
1716 jr bp_enter
1717
1718 bp_get_freeslot:
1719 ld b,BP_CNT
1720 ld ix,bp_tab
1721 bp_gf_l:
1722 ld a,(ix+000h)
1723 and 00fh
1724 ret z
1725 push bc
1726 ld bc,BP_SIZE
1727 add ix,bc
1728 pop bc
1729 djnz bp_gf_l
1730 jp ERROR
1731
1732 bp_get_count:
1733 call skipbl
1734 ld hl,1
1735 cp ':'
1736 ret nz
1737 inc de
1738 call expr
1739 jp c,ERROR
1740 ret
1741
1742 bp_get_condition:
1743 call skipbl
1744 cp 'I'
1745 ld hl,0
1746 ret nz
1747 inc de
1748 call skipbl
1749 push de
1750 call expr
1751 jp c,ERROR
1752 ex de,hl
1753 pop de
1754 push de
1755 sbc hl,de
1756 ld b,h
1757 ld c,l
1758 ld hl,(expr_p1)
1759 push hl
1760 add hl,bc
1761 ld de,expr_bufe
1762 call cp_hl_de
1763 jp nc,ERROR
1764 pop hl
1765 ld (expr_p2),hl
1766 pop de
1767 ex de,hl
1768 ldir
1769 xor a
1770 ld (de),a
1771 inc de
1772 ex de,hl
1773 ld (expr_p1),hl
1774 ld hl,(expr_p2)
1775 ret
1776
1777 bpddtz:
1778 ld (reg.l),hl
1779 pop hl
1780 dec hl
1781 ld (reg.pc),hl
1782 ld (reg_sp),sp
1783 ld sp,reg.l
1784 push de
1785 push bc
1786 push af
1787 push ix
1788 push iy
1789 ld a,i
1790 call sub_0004h
1791 ld h,a
1792 ld l,000h
1793 push hl
1794 ld a,0f3h
1795 jp po,l08dfh
1796 ld a,0fbh
1797 l08dfh:
1798 ld (reg.iff),a
1799 ex af,af'
1800 push af
1801 exx
1802 push bc
1803 push de
1804 push hl
1805 call sub_097ah
1806 ld a,(b_21e2_start)
1807 dec a
1808 jr z,l090bh
1809 call inchar
1810 jr c,l0902h
1811 call sub_0913h
1812 and a
1813 jp z,user_go
1814 and 083h
1815 jp z,l2151h
1816 l0902h:
1817 call bp_clr_temporary
1818 call p_cpustat
1819 jp mainloop
1820
1821 l090bh:
1822 ld (b_21e2_start),a
1823 ld c,007h
1824 jp l0a41h
1825
1826 sub_0913h:
1827 ld a,080h
1828 ex af,af'
1829 sub a
1830 ld (l0941h),a
1831 ld b,BP_CNT
1832 ld ix,bp_tab
1833 l0920h:
1834 ld a,(ix+000h)
1835 and 007h
1836 jr z,l0938h
1837 ld e,(ix+002h)
1838 ld d,(ix+003h)
1839 ld hl,(reg.pc)
1840 call cp_hl_de
1841 push bc
1842 call z,sub_0942h
1843 pop bc
1844 l0938h:
1845 ld de,BP_SIZE
1846 add ix,de
1847 djnz l0920h
1848 ex af,af'
1849 ret
1850
1851 sub_0942h:
1852 ex af,af'
1853 res 7,a
1854 ex af,af'
1855 ld e,(ix+006h)
1856 ld d,(ix+007h)
1857 ld a,d
1858 or e
1859 ld hl,0ffffh
1860 call nz,expr
1861 ld a,h
1862 or l
1863 jr z,l0969h
1864 ld e,(ix+004h)
1865 ld d,(ix+005h)
1866 dec de
1867 ld a,d
1868 or e
1869 jr z,l0974h
1870 ld (ix+004h),e
1871 ld (ix+005h),d
1872 l0969h:
1873 bit 4,(ix+000h)
1874 ret z
1875 ld a,001h
1876 ld (l0941h),a
1877 ret
1878 l0974h:
1879 ex af,af'
1880 or (ix+000h)
1881 ex af,af'
1882 ret
1883
1884 sub_097ah:
1885 ld b,BP_CNT
1886 ld ix,bp_tab
1887 l0980h:
1888 bit 5,(ix+000h)
1889 res 5,(ix+000h)
1890 jr z,l099ah
1891 ld l,(ix+002h)
1892 ld h,(ix+003h)
1893 ld a,(l0003h)
1894 cp (hl)
1895 jr nz,l099ah
1896 ld a,(ix+001h)
1897 ld (hl),a
1898 l099ah:
1899 res 3,(ix+000h)
1900 ld de,BP_SIZE
1901 add ix,de
1902 djnz l0980h
1903 ret
1904
1905 sub_09a6h:
1906 ld b,BP_CNT
1907 ld ix,bp_tab
1908 l09ach:
1909 ld a,(ix+000h)
1910 and 003h
1911 jr z,l09c0h
1912 ld e,(ix+002h)
1913 ld d,(ix+003h)
1914 ld hl,(reg.pc)
1915 call cp_hl_de
1916 ret z
1917 l09c0h:
1918 ld de,BP_SIZE
1919 add ix,de
1920 djnz l09ach
1921 sub a
1922 inc a
1923 ret
1924
1925 sub_09cah:
1926 call bp_get_freeslot
1927 ld (ix+004h),001h
1928 ld (ix+005h),000h
1929 ld (ix+002h),l
1930 ld (ix+003h),h
1931 ld (ix+006h),000h
1932 ld (ix+007h),000h
1933 ld a,(b_21e2_start)
1934 and a
1935 ld a,008h
1936 jr nz,l09edh
1937 ld a,004h
1938 l09edh:
1939 ld (ix+000h),a
1940 ret
1941
1942 sub_09f1h:
1943 ld b,BP_CNT
1944 ld ix,bp_tab
1945 l09f7h:
1946 ld a,(ix+000h)
1947 and c
1948 jr z,l0a1dh
1949 set 5,(ix+000h)
1950 ld l,(ix+002h)
1951 ld h,(ix+003h)
1952 ld a,(hl)
1953 ld (ix+001h),a
1954 ld a,(l0003h)
1955 ld (hl),a
1956 and 038h
1957 ld h,000h
1958 ld l,a
1959 ld (hl),0c3h
1960 inc hl
1961 ld de,bpddtz
1962 ld (hl),e
1963 inc hl
1964 ld (hl),d
1965 l0a1dh:
1966 ld de,BP_SIZE
1967 add ix,de
1968 djnz l09f7h
1969 ret
1970
1971 user_go:
1972 sub a
1973 ld (b_21e2_start),a
1974 ld a,(l0941h)
1975 and a
1976 call nz,p_cpustat
1977 call sub_09a6h
1978 ld c,007h
1979 jr nz,l0a41h
1980 ld a,001h
1981 ld (b_21e2_start),a
1982 call sub_1ffeh
1983 ld c,008h
1984 l0a41h:
1985 call sub_09f1h
1986 ld sp,reg.l2
1987 pop hl
1988 pop de
1989 pop bc
1990 pop af
1991 exx
1992 ex af,af'
1993 pop af
1994 ld i,a
1995 pop iy
1996 pop ix
1997 pop af
1998 pop bc
1999 pop de
2000 pop hl
2001 ld sp,(reg_sp)
2002 jp reg.iff
2003
2004 bp_clr_condition:
2005 ld a,(ix+000h)
2006 and 003h
2007 ret nz
2008 ld e,(ix+006h)
2009 ld d,(ix+007h)
2010 ld a,d
2011 or e
2012 ret z
2013 push bc
2014 ld h,d
2015 ld l,e
2016 sub a
2017 ld (ix+006h),a
2018 ld (ix+007h),a
2019 ld bc,0ffffh
2020 cpir
2021 l0a7dh:
2022 push de
2023 ld de,(expr_p1)
2024 call cp_hl_de
2025 pop de
2026 jr nc,l0a93h
2027 call sub_0a99h
2028 l0a8bh:
2029 ld a,(hl)
2030 ldi
2031 and a
2032 jr nz,l0a8bh
2033 jr l0a7dh
2034 l0a93h:
2035 ld (expr_p1),de
2036 pop bc
2037 ret
2038
2039 sub_0a99h:
2040 ld iy,bp_tab
2041 push de
2042 l0a9eh:
2043 ld e,(iy+006h)
2044 ld d,(iy+007h)
2045 call cp_hl_de
2046 jr z,l0ab0h
2047 ld de,BP_SIZE
2048 add iy,de
2049 jr l0a9eh
2050 l0ab0h:
2051 pop de
2052 ld (iy+006h),e
2053 ld (iy+007h),d
2054 ret
2055
2056 cmd_Y:
2057 call get.decdigit
2058 jr c,l0bc3h
2059 inc de
2060 push af
2061 call assert_eol
2062 pop af
2063 call sub_0bdch
2064 jp l0c15h
2065 l0bc3h:
2066 call assert_eol
2067 xor a
2068 l0bc7h:
2069 push af
2070 call sub_0bdch
2071 pop af
2072 push af
2073 call get_y_val
2074 ld a,82h
2075 call p_sym_space
2076 pop af
2077 inc a
2078 bit 0,a
2079 push af
2080 call z,crlf
2081 pop af
2082 cp YREG_CNT
2083 jr c,l0bc7h
2084 ret
2085
2086 sub_0bdch:
2087 ld c,a
2088 ld b,0
2089 add a,'0'+080h
2090 ld de,msg_Y+1
2091 ld (de),a
2092 dec de
2093 ld hl,reg_Y
2094 add hl,bc
2095 add hl,bc
2096 ex de,hl
2097 ld c,003h
2098 jp l0c33h
2099
2100 cmd_X:
2101 call skipbl
2102 call sub_0caeh
2103 jp nc,p_cpustat0
2104 call assert_eol
2105 ld a,b
2106 cp 01eh
2107 jr z,l0c5fh
2108 cp 01fh
2109 jr z,l0c4fh
2110 cp 01dh
2111 jp z,ERROR
2112 ex de,hl
2113 ld hl,b_0cc3_start
2114 call sel_dc_string
2115 l0c12h:
2116 call l0c33h
2117 l0c15h:
2118 call outbl
2119 push de
2120 push bc
2121 call get_line
2122 call skipbl
2123 jr z,l0c30h
2124 call sub_0363h
2125 ld b,h
2126 ld c,l
2127 pop af
2128 pop hl
2129 ld (hl),c
2130 bit 0,a
2131 ret z
2132 inc hl
2133 ld (hl),b
2134 ret
2135 l0c30h:
2136 pop af
2137 pop hl
2138 ret
2139
2140 l0c33h:
2141 ld b,c
2142 call pstr
2143 ld a,'='
2144 call outchar
2145 ld a,(de)
2146 bit 0,b
2147 jp z,out_hex
2148 ld l,a
2149 inc de
2150 ld a,(de)
2151 dec de
2152 ld h,a
2153 bit 1,b
2154 jp z,out_hl
2155 jp out.hl.@
2156
2157 l0c4fh:
2158 call p_f
2159 ld a,0f3h
2160 ld (reg.iff),a
2161 scf
2162 call sub_0c6ah
2163 ld (reg.f),a
2164 ret
2165 l0c5fh:
2166 call p_f2
2167 and a
2168 call sub_0c6ah
2169 ld (reg.f2),a
2170 ret
2171 sub_0c6ah:
2172 ex af,af'
2173 ld b,000h
2174 call outbl
2175 call assert_eol
2176 call get_line
2177 l0c76h:
2178 call skipbl
2179 ld a,b
2180 ret z
2181 push bc
2182 ld hl,b_0ca4_start
2183 call lookupch
2184 jp nc,ERROR
2185 ld a,b
2186 cp 008h
2187 jr z,l0c97h
2188 pop bc
2189 rlca
2190 rlca
2191 rlca
2192 add a,0c0h
2193 ld (l0c94h),a
2194 defb 0cbh
2195 l0c94h:
2196 defb 0c0h
2197 jr l0c76h
2198 l0c97h:
2199 ex af,af'
2200 jp nc,ERROR
2201 ex af,af'
2202 ld a,0fbh
2203 ld (reg.iff),a
2204 pop bc
2205 jr l0c76h
2206
2207 b_0ca4_start:
2208 db 'CNV H ZSE',0
2209
2210 sub_0caeh:
2211 call sub_0303h
2212 ret nc
2213 ld a,b
2214 add a,b
2215 add a,b
2216 ld hl,b_0cfa_start
2217 call add_hl_a
2218 ld c,(hl)
2219 inc hl
2220 ld a,(hl)
2221 inc hl
2222 ld h,(hl)
2223 ld l,a
2224 scf
2225 ret
2226
2227 b_0cc3_start:
2228 DC 'BC'''
2229 DC 'DE'''
2230 DC 'HL'''
2231 DC 'BC'
2232 DC 'DE'
2233 DC 'HL'
2234 DC 'A'''
2235 DC 'B'''
2236 DC 'C'''
2237 DC 'D'''
2238 DC 'E'''
2239 DC 'H'''
2240 DC 'L'''
2241 DC 'A'
2242 DC 'B'
2243 DC 'C'
2244 DC 'D'
2245 DC 'E'
2246 DC 'H'
2247 DC 'L'
2248 DC 'IX'
2249 DC 'IY'
2250 DC 'SP'
2251 DC 'PC'
2252 DC 'X'
2253 DC 'Y'
2254 DC 'S'
2255 DC 'P'
2256 DC 'I'
2257 DC 'IP'
2258 DC 'F'''
2259 DC 'F'
2260 DB 0
2261
2262 b_0cfa_start:
2263 db 003h
2264 dw reg.c2
2265 db 003h
2266 dw reg.e2
2267 db 003h
2268 dw reg.l2
2269 db 003h
2270 dw reg.c
2271 db 003h
2272 dw reg.e
2273 db 003h
2274 dw reg.l
2275 db 000h
2276 dw reg.a2
2277 db 000h
2278 dw reg.b2
2279 db 000h
2280 dw reg.c2
2281 db 000h
2282 dw reg.d2
2283 db 000h
2284 dw reg.e2
2285 db 000h
2286 dw reg.h2
2287 db 000h
2288 dw reg.l2
2289 db 000h
2290 dw reg.a
2291 db 000h
2292 dw reg.b
2293 db 000h
2294 dw reg.c
2295 db 000h
2296 dw reg.d
2297 db 000h
2298 dw reg.e
2299 db 000h
2300 dw reg.h
2301 db 000h
2302 dw reg.l
2303 db 003h
2304 dw reg.ix
2305 db 003h
2306 dw reg.iy
2307 db 003h
2308 dw reg_sp
2309 db 003h
2310 dw reg.pc
2311 db 003h
2312 dw reg.ix
2313 db 003h
2314 dw reg.iy
2315 db 003h
2316 dw reg_sp
2317 db 003h
2318 dw reg.pc
2319 db 000h
2320 dw reg.i
2321 db 003h
2322 dw l004eh
2323 db 000h
2324 dw reg.f2
2325 db 000h
2326 dw reg.f
2327
2328 cmd_S:
2329 ld hl,(last_S)
2330 call get_lastarg_def
2331 l0d60h:
2332 ld (last_S),hl
2333 call out.hl.@
2334 call outbl
2335 ld a,(hl)
2336 call out_hex
2337 call outbl2
2338 call get_line
2339 call skipbl
2340 inc hl
2341 jr z,l0d60h
2342 dec hl
2343 inc de
2344 cp '.'
2345 jp z,assert_eol
2346 cp '-'
2347 jr nz,l0d8ah
2348 ld a,(de)
2349 or a
2350 dec hl
2351 jr z,l0d60h
2352 inc hl
2353 l0d8ah:
2354 dec de
2355 call sub_0ef8h
2356 jr l0d60h
2357
2358 cmd_@:
2359 call assert_eol
2360 ld hl,msg_@
2361 ld de,var.@
2362 ld c,001h
2363 jp l0c12h
2364
2365 msg_@:
2366 dc '@'
2367
2368 cmd_I:
2369 ld hl,cmd_I
2370 ld (cmd_rpt),hl
2371 ld hl,(last_I)
2372 call get_lastarg_def
2373 ld (last_I),hl
2374 ld b,h
2375 ld c,l
2376 in a,(c)
2377 push af
2378 call out_hex
2379 call outbl4
2380 pop af
2381 call out.bin.b
2382 jp crlf
2383
2384 cmd_O:
2385 ld hl,cmd_O
2386 ld (cmd_rpt),hl
2387 ld hl,(last_O_val)
2388 call get_arg_def
2389 ld a,l
2390 ld (last_O_val),a
2391 push af
2392 call next_arg
2393 ld hl,(last_O_addr)
2394 call get_lastarg_def
2395 ld (last_O_addr),hl
2396 ld b,h
2397 ld c,l
2398 pop af
2399 out (c),a
2400 ret
2401
2402 cmd_V:
2403 call sub_034eh
2404 l0dedh:
2405 push bc
2406 ld a,(de)
2407 ld b,(hl)
2408 cp b
2409 jr z,l0e10h
2410 ld c,a
2411 call out.hl.@
2412 call outbl
2413 ld a,b
2414 call out_hex
2415 call outbl2
2416 ld a,c
2417 call out_hex
2418 call outbl
2419 ex de,hl
2420 call out.hl.@
2421 ex de,hl
2422 call crlf
2423 l0e10h:
2424 pop bc
2425 inc hl
2426 inc de
2427 dec bc
2428 ld a,b
2429 or c
2430 jr nz,l0dedh
2431 ret
2432
2433 cmd_M:
2434 ld a,(de)
2435 cp 'V'
2436 jr nz,l0e1fh
2437 inc de
2438 l0e1fh:
2439 push af
2440 call sub_034eh
2441 push hl
2442 push de
2443 push bc
2444 call cp_hl_de
2445 jr nc,cmdm_up
2446 add hl,bc
2447 ex de,hl
2448 add hl,bc
2449 ex de,hl
2450 dec hl
2451 dec de
2452 lddr
2453 db 01h ;swallow ldir instruction (ld bc,...)
2454 cmdm_up:
2455 ldir
2456 pop bc
2457 pop de
2458 pop hl
2459 pop af
2460 jr z,l0dedh
2461 ret
2462
2463 cmd_H:
2464 ld a,(de)
2465 cp 'S'
2466 jr z,p_symbols
2467
2468 call expr
2469 jp c,p_max_high0
2470 call next_arg
2471 push hl
2472 call expr
2473 push af
2474 call assert_eol
2475 pop af
2476 ex de,hl
2477 pop hl
2478 jr c,l0e5eh
2479 push hl
2480 push de
2481 add hl,de
2482 call l0e5eh
2483 pop de
2484 pop hl
2485 and a
2486 sbc hl,de
2487 l0e5eh:
2488 call out_hl
2489 call outbl2
2490 call out_hl_neg
2491 call outbl4
2492 call out.hl.dec
2493 call outbl2
2494 call out_hl_dec_neg
2495 call outbl4
2496 call out.bin.w
2497 call outbl
2498 ld a,l
2499 call out.ascii
2500 ld a,80h
2501 call p_sym_space
2502 jp crlf
2503
2504 p_symbols:
2505 inc de
2506 call assert_eol
2507 ld a,(symlen_max)
2508 add a,8
2509 ld b,a
2510 ld a,80 ;screen width
2511 ld c,-1
2512 psym_1:
2513 inc c
2514 sub a,b
2515 jr nc,psym_1
2516
2517 ld hl,ddtz_base+2
2518 psym_nxtline:
2519 ld b,c
2520 psym_nxtcol:
2521 ld d,(hl)
2522 dec hl
2523 ld e,(hl)
2524 dec hl
2525 ld a,(hl)
2526 call sub_hl_a1
2527 cp 0c3h
2528 jr z,psym_e
2529
2530 ex de,hl
2531 call out_hl
2532 call outbl
2533 ld a,3
2534 call p_sym_space
2535 ex de,hl
2536 djnz psym_nxtcol
2537 call crlf
2538 jr psym_nxtline
2539 psym_e:
2540 ld a,b
2541 cp c
2542 ret z
2543 jp crlf
2544
2545 cmd_Q:
2546 ld a,(de)
2547 sub 'J'
2548 ld (cmd_Q_jopt),a
2549 jr nz,l0e8dh
2550 inc de
2551 l0e8dh:
2552 call get_arg_range
2553 push bc
2554 push hl
2555 call sub_0ee6h
2556 pop hl
2557 l0e96h:
2558 call sub_0ed7h
2559 jr nz,l0eb0h
2560 push bc
2561 push hl
2562 ld a,(cmd_Q_jopt)
2563 or a
2564 jr nz,l0ea7h
2565 ld bc,-8
2566 add hl,bc
2567 l0ea7h:
2568 ld bc,16
2569 and a
2570 call sub_0f58h
2571 pop hl
2572 pop bc
2573 l0eb0h:
2574 inc hl
2575 ex (sp),hl
2576 dec hl
2577 ld a,h
2578 or l
2579 ex (sp),hl
2580 jr nz,l0e96h
2581 pop bc
2582 ret
2583
2584 cmd_Z:
2585 call get_arg_range
2586 push bc
2587 push hl
2588 call sub_0ee6h
2589 ld a,b
2590 pop hl
2591 pop bc
2592 push hl
2593 ex de,hl
2594 l0ec7h:
2595 ldi
2596 jp po,l0ed3h
2597 dec a
2598 jr nz,l0ec7h
2599 pop hl
2600 ldir
2601 ret
2602 l0ed3h:
2603 pop hl
2604 ret
2605
2606 sub_0ed7h:
2607 push hl
2608 push de
2609 push bc
2610 l0edah:
2611 ld a,(de)
2612 cp (hl)
2613 jr nz,l0ee2h
2614 inc de
2615 inc hl
2616 djnz l0edah
2617 l0ee2h:
2618 pop bc
2619 pop de
2620 pop hl
2621 ret
2622
2623 sub_0ee6h:
2624 ld hl,conbuf+1
2625 call sub_0ef7h
2626 ld de,conbuf+1
2627 and a
2628 sbc hl,de
2629 ld b,l
2630 ret nz
2631 jp ERROR
2632
2633 sub_0ef7h:
2634 db 0e6h ; and 037h (clear carry)
2635 sub_0ef8h:
2636 scf
2637 l0ef9h:
2638 push af
2639 call next_arg
2640 cp 'W'
2641 jr nz,l0f0eh
2642 inc de
2643 push hl
2644 call sub_035dh
2645 ex de,hl
2646 ex (sp),hl
2647 ld (hl),e
2648 inc hl
2649 ld a,d
2650 pop de
2651 jr l0f1ah
2652 l0f0eh:
2653 cp ''''
2654 jr z,l0f1eh
2655 push hl
2656 call expr
2657 ld a,l
2658 pop hl
2659 jr c,l0f42h
2660 l0f1ah:
2661 ld (hl),a
2662 inc hl
2663 jr l0f3ah
2664 l0f1eh:
2665 inc de
2666 ld a,(de)
2667 cp ''''
2668 jr z,l0f2bh
2669 or a
2670 jr z,l0f42h
2671 l0f27h:
2672 ld (hl),a
2673 inc hl
2674 jr l0f1eh
2675 l0f2bh:
2676 inc de
2677 ld a,(de)
2678 cp ''''
2679 jr z,l0f27h
2680 cp '.'
2681 jr nz,l0f3ah
2682 inc de
2683 dec hl
2684 set 7,(hl)
2685 inc hl
2686 l0f3ah:
2687 pop af
2688 jr nc,l0ef9h
2689 ld (last_S),hl
2690 jr l0ef9h
2691 l0f42h:
2692 pop af
2693 ret nc
2694 ld (last_S),hl
2695 ret
2696
2697 cmd_D:
2698 ld hl,cmd_D
2699 ld (cmd_rpt),hl
2700 ld hl,(last_D)
2701 ld bc,128
2702 call sub_0377h
2703 scf
2704 sub_0f58h:
2705 push bc
2706 push de
2707 push hl
2708 ex af,af'
2709 l0f5ch:
2710 call out.hl.@
2711 call z,outbl2
2712 call outbl
2713 ld de,0
2714 l0f68h:
2715 ld a,(hl)
2716 inc hl
2717 call out_hex
2718 call outbl
2719 dec bc
2720 inc e
2721 ld a,e
2722 cp 010h
2723 jr z,l0f80h
2724 and 003h
2725 call z,outbl
2726 ld a,b
2727 or c
2728 jr nz,l0f68h
2729 l0f80h:
2730 call outbl
2731 and a
2732 sbc hl,de
2733 l0f86h:
2734 ld a,(hl)
2735 call sub_0fa3h
2736 call outchar
2737 inc hl
2738 dec e
2739 jr nz,l0f86h
2740 ex af,af'
2741 jr nc,l0f97h
2742 ld (last_D),hl
2743 l0f97h:
2744 ex af,af'
2745 call crlf
2746 ld a,b
2747 or c
2748 jr nz,l0f5ch
2749 pop hl
2750 pop de
2751 pop bc
2752 ret
2753
2754 sub_0fa3h:
2755 and 07fh
2756 cp 07fh
2757 jr z,l0fach
2758 cp ' '
2759 ret nc
2760 l0fach:
2761 ld a,'.'
2762 ret
2763
2764 cmd_F:
2765 push de
2766 ld hl,DMA_BUF+1
2767 ld (hl),' '
2768 inc hl
2769 l0fb6h:
2770 ld a,(de)
2771 ld (hl),a
2772 inc hl
2773 inc de
2774 and a
2775 jr nz,l0fb6h
2776 ld a,l
2777 sub DMA_BUF+2
2778 ld (DMA_BUF),a
2779 pop hl
2780 ld de,dfcb1
2781 call parse_filename
2782 ld de,dfcb2
2783 call parse_filename
2784 ;fall thru
2785
2786 cpy_fcb2:
2787 ld hl,dfcb2
2788 ld de,fcbsym
2789 ld bc,16
2790 ldir
2791 ret
2792
2793 parse_filename:
2794 call sub_102ch
2795 push de
2796 push bc
2797 ld b,(hl)
2798 inc hl
2799 ld a,(hl)
2800 cp ':'
2801 jr nz,l0fe1h
2802 inc hl
2803 ld a,b
2804 sub 040h
2805 and 01fh
2806 jr l0fe3h
2807 l0fe1h:
2808 dec hl
2809 xor a
2810 l0fe3h:
2811 ld (de),a
2812 inc de
2813 ld b,8
2814 call sub_0ff2h
2815 ld b,3
2816 call sub_0ff2h
2817 pop bc
2818 pop de
2819 ret
2820
2821 sub_0ff2h:
2822 call sub_1012h
2823 jr z,l0ffeh
2824 inc hl
2825 ld (de),a
2826 inc de
2827 djnz sub_0ff2h
2828 jr l1003h
2829 l0ffeh:
2830 ld a,c
2831 l0fffh:
2832 ld (de),a
2833 inc de
2834 djnz l0fffh
2835 l1003h:
2836 call sub_1012h
2837 inc hl
2838 jr nz,l1003h
2839 cp '*'
2840 jr z,l1003h
2841 cp '.'
2842 ret z
2843 dec hl
2844 ret
2845
2846 sub_1012h:
2847 ld a,(hl)
2848 ld c,' '
2849 and 01fh
2850 ret z
2851 ld a,(hl)
2852 cp ' '
2853 ret z
2854 call sub_1043h
2855 ret z
2856 cp '/'
2857 ret z
2858 cp '.'
2859 ret z
2860 ld c,'?'
2861 cp '*'
2862 ret
2863
2864 l102bh:
2865 inc hl
2866 sub_102ch:
2867 ld a,(hl)
2868 cp '/'
2869 jr z,l103bh
2870 call sub_1043h
2871 jr z,l102bh
2872 l1036h:
2873 cp ' '
2874 jr z,l102bh
2875 ret
2876
2877 l103bh:
2878 ld a,(hl)
2879 cp ' '+1
2880 jr c,l1036h
2881 inc hl
2882 jr l103bh
2883
2884 sub_1043h:
2885 cp '='
2886 ret z
2887 cp '_'
2888 ret z
2889 cp ','
2890 ret
2891
2892 setup_fcb:
2893 push de
2894 ld hl,12
2895 add hl,de
2896 xor a
2897 ld b,21
2898 l1052h:
2899 ld (hl),a
2900 inc hl
2901 djnz l1052h
2902 ld de,DMA_BUF
2903 ld c,BDOS_SETDMA
2904 call ddtz_bdos
2905 pop de
2906 ret
2907
2908 file_open:
2909 ld (cur_fcb),de
2910 call setup_fcb
2911 ld c,BDOS_OPEN
2912 call ddtz_bdos
2913 inc a
2914 jp z,ERROR
2915 ld a,080h
2916 ld (cmdR_rindex),a
2917 ret
2918
2919 read_byte:
2920 ld a,(cmdR_rindex)
2921 cp 080h
2922 jr nz,l1111h
2923 call read_sector
2924 ret z
2925 sub a
2926 l1111h:
2927 inc a
2928 ld (cmdR_rindex),a
2929 push hl
2930 add a,07fh
2931 ld l,a
2932 ld h,000h
2933 ld a,(hl)
2934 pop hl
2935 cp 01ah
2936 ret
2937
2938 read_sector:
2939 push hl
2940 push de
2941 push bc
2942 ld de,(cur_fcb)
2943 ld c,BDOS_READ
2944 call ddtz_bdos
2945 dec a
2946 jr z,l1132h
2947 jp p,ERROR
2948 l1132h:
2949 pop bc
2950 pop de
2951 pop hl
2952 ret
2953
2954 cmdR_storebyte:
2955 push af
2956 push de
2957 ld de,TPA
2958 call cp_hl_de
2959 jp c,ERROR
2960 ld de,(BDOS+1)
2961 call cp_hl_de
2962 jp nc,ERROR
2963 ld de,(high_load)
2964 call cp_hl_de
2965 jr c,l1157h
2966 ld (high_load),hl
2967 l1157h:
2968 ld de,(max_load)
2969 call cp_hl_de
2970 jr c,l1163h
2971 ld (max_load),hl
2972 l1163h:
2973 pop de
2974 pop af
2975 ld (hl),a
2976 ret
2977
2978 strncmp:
2979 ld a,(de)
2980 cp (hl)
2981 inc de
2982 inc hl
2983 ret nz
2984 djnz strncmp
2985 ret
2986
2987 str_hex:
2988 db 'HEX'
2989
2990 read_hexchar:
2991 call read_hexdigit
2992 rlca
2993 rlca
2994 rlca
2995 rlca
2996 ld d,a
2997 call read_hexdigit
2998 add a,d
2999 ld d,a
3000 add a,c
3001 ld c,a
3002 ld a,d
3003 ret
3004
3005 read_hexdigit:
3006 call read_byte
3007 jr z,error8
3008 hex_digit_v:
3009 call hex_digit
3010 ret nc
3011 error8:
3012 jp ERROR
3013
3014 read_hexbyte:
3015 call read_byte
3016 read_hexbyte0:
3017 push bc
3018 call hex_digit_v
3019 rlca
3020 rlca
3021 rlca
3022 rlca
3023 ld c,a
3024 call read_byte
3025 call hex_digit_v
3026 or c
3027 pop bc
3028 ret
3029
3030 cmd_R:
3031 ld hl,0
3032 call get_lastarg_def
3033 read_file:
3034 ld de,dfcb1+1
3035 ld a,(de)
3036 cp '?'
3037 jr z,read_symfile
3038 dec de
3039 push hl
3040 ld hl,0
3041 ld (high_load),hl
3042 call file_open
3043 ld hl,dfcb1+9
3044 ld de,str_hex
3045 ld b,3
3046 call strncmp
3047 pop hl
3048 jr z,read_hexfile
3049 ld de,TPA
3050 add hl,de
3051 push hl
3052 l108eh:
3053 call read_sector
3054 pop hl
3055 jr z,read_symfile
3056 ld de,DMA_BUF
3057 ld b,080h
3058 l109ah:
3059 ld a,(de)
3060 call cmdR_storebyte
3061 inc de
3062 inc hl
3063 djnz l109ah
3064 push hl
3065 jr l108eh
3066
3067 read_hexfile:
3068 push hl
3069 l10aeh:
3070 call read_byte
3071 jr z,rdhex_done
3072 cp ':'
3073 jr nz,l10aeh
3074 ld c,0
3075 call read_hexchar
3076 ld b,a
3077 call read_hexchar
3078 ld h,a
3079 call read_hexchar
3080 ld l,a
3081 ld a,b
3082 and a
3083 jr z,rdhex_done
3084 call read_hexchar
3085 l10cch:
3086 call read_hexchar
3087 pop de
3088 push de
3089 push hl
3090 add hl,de
3091 call cmdR_storebyte
3092 pop hl
3093 inc hl
3094 djnz l10cch
3095 call read_hexchar
3096 ld a,c
3097 and a
3098 jr nz,error9
3099 jr l10aeh
3100 rdhex_done:
3101 pop hl
3102 jr read_symfile
3103
3104 read_symfile:
3105 ld de,fcbsym+1
3106 ld a,(de)
3107 cp ' '
3108 jp z,p_max_high
3109
3110 call pstr_inl
3111 db 'SYMBOLS',CR,LF+80h
3112
3113 dec de
3114 call file_open
3115 rs_1:
3116 call read_byte
3117 rs_2:
3118 cp 1ah
3119 jp z,p_max_high
3120 cp '!'
3121 jr c,rs_1
3122 call read_hexbyte0
3123 ld d,a
3124 call read_hexbyte ; symval
3125 ld e,a
3126 push de ; symval
3127 call read_byte
3128 cp ' '
3129 jr z,rs_4
3130 pop hl ; discard symval
3131 rs_3: call read_byte
3132 cp ' '
3133 jr c,rs_2
3134 jr rs_3
3135 ;
3136 rs_4: ld hl,(BDOS+1) ;
3137 ld e,0 ; setup symlen
3138 rs_5: dec hl ;
3139 call read_byte ;
3140 cp TAB ;
3141 jr z,rs_6 ;
3142 cp CR ;
3143 jr z,rs_6 ;
3144 cp '!' ;
3145 jr c,error9 ;
3146 ld (hl),a ;
3147 inc e ; symlen++
3148 ld a,e ;
3149 cp 10h+1 ;
3150 jr c,rs_5 ;
3151 error9:
3152 jp ERROR ;
3153 ;
3154 rs_6: push de ; symlen
3155 push hl ;
3156 ex de,hl ;
3157 ld hl,(BDOS+1) ;
3158 inc hl ;
3159 ld e,(hl) ;
3160 inc hl ;
3161 ld d,(hl) ;
3162 pop hl ;
3163 ld (hl),d ;
3164 dec hl ;
3165 ld (hl),e ;
3166 dec hl ;
3167 ld (hl),0c3h ;
3168
3169 ld de,(max_load) ;
3170 call cp_hl_de ;
3171 jr c,error9 ;
3172
3173 ld de,(reg_sp) ;
3174 call cp_hl_de ;
3175 jr nc,rs_61 ;
3176 ld (reg_sp),hl ;
3177 rs_61:
3178
3179 ld de,(BDOS+1) ;
3180 ld (BDOS+1),hl ;
3181 ex de,hl ;
3182 pop de ;
3183 ld (hl),e ; symlen
3184 ld a,e
3185 inc hl ;
3186 pop de ; symval
3187 ld (hl),e ;
3188 inc hl ;
3189 ld (hl),d ;
3190 ld hl,symlen_max
3191 cp (hl)
3192 jr c,$+3
3193 ld (hl),a
3194 jp rs_1 ;
3195
3196
3197 p_max_high0:
3198 call assert_eol
3199 p_max_high:
3200 call pstr_inl
3201 DC 'High = '
3202 ld hl,(high_load)
3203 call out_hl
3204 call pstr_inl
3205 DC ' Max = '
3206 ld hl,(max_load)
3207 call out_hl
3208 call pstr_inl
3209 DC ' Top = '
3210 ld hl,(BDOS+1)
3211 call out_hl
3212 jp crlf
3213
3214 cmd_W:
3215 call get_arg_range
3216 call assert_eol
3217 push hl
3218 ld a,c
3219 add a,07fh
3220 jr nc,l11adh
3221 inc b
3222 l11adh:
3223 and 080h
3224 ld c,a
3225 push bc
3226 ld a,(dfcb1+1)
3227 cp ' '
3228 jr z,error5
3229 ld de,dfcb1
3230 call setup_fcb
3231 push de
3232 ld c,BDOS_DELETE
3233 call ddtz_bdos
3234 pop de
3235 ld c,BDOS_CREATE
3236 call ddtz_bdos
3237 inc a
3238 jr z,error5
3239 pop bc
3240 pop hl
3241 l11cch:
3242 ld a,b
3243 or c
3244 jr z,close_file
3245 push bc
3246 ld de,080h ; DMA_BUF
3247 ld b,d
3248 ld c,e
3249 ldir
3250 call write_sector
3251 ex (sp),hl
3252 ld bc,0ff80h
3253 add hl,bc
3254 ex (sp),hl
3255 pop bc
3256 jr l11cch
3257
3258 write_sector:
3259 push hl
3260 ld de,dfcb1
3261 ld c,BDOS_WRITE
3262 call ddtz_bdos
3263 pop hl
3264 and a
3265 ret z
3266 call close_file
3267 error5:
3268 jp ERROR
3269
3270 close_file:
3271 ld de,dfcb1
3272 ld c,BDOS_CLOSE
3273 jp ddtz_bdos
3274
3275 cmd_A:
3276 ld hl,(last_A)
3277 call get_lastarg_def
3278 push hl
3279 pop iy
3280 ld hl,l1259h
3281 ld (error_func),hl
3282 ld (l1262h),sp
3283 l1211h:
3284 push iy
3285 pop hl
3286 ld (last_A),hl
3287 ld (var.$),hl
3288 push hl
3289 call p_disas_line
3290 pop iy
3291 ld c,b
3292 ld de,(var.@)
3293 ld a,d
3294 or e
3295 ld b,17
3296 jr z,l122dh
3297 ld b,25
3298 l122dh:
3299 call outbl
3300 ld a,(con_col)
3301 cp b
3302 jr c,l122dh
3303 push bc
3304 call get_line
3305 pop bc
3306 call skipbl
3307 cp '.'
3308 ret z
3309 cp '-'
3310 jr nz,l124bh
3311 ld iy,(cmd_A_prev)
3312 jr l1211h
3313 l124bh:
3314 and a
3315 call nz,sub_1268h
3316 ld (cmd_A_prev),iy
3317 ld b,0
3318 add iy,bc
3319 jr l1211h
3320
3321 l1259h:
3322 call l0146h
3323 ld sp,(l1262h)
3324 jr l1211h
3325
3326 sub_1268h:
3327 call skipbl
3328 ld hl,t_MNEMONICS
3329 call sub_030ah
3330 jp nc,ERROR
3331 call skipbl
3332 push de
3333 ld a,b
3334 add a,b
3335 add a,b
3336 ld hl,b_1289_start
3337 call add_hl_a
3338 ld e,(hl)
3339 inc hl
3340 ld d,(hl)
3341 inc hl
3342 ld b,(hl)
3343 ex de,hl
3344 pop de
3345
3346 CALL_HL:
3347 jp (hl)
3348
3349 b_1289_start:
3350 dw as.ADC_SBC ;ADC
3351 db 088h ;
3352 dw as.ADD ;ADD
3353 db 080h ;
3354 dw as.AND_CP_OR_SUB_XOR ;AND
3355 db 0a0h ;
3356 dw as.BITOP ;BIT
3357 db 040h ;
3358 dw as.CALL ;CALL
3359 db 0c4h ;
3360 dw as.opc.noarg ;CCF
3361 db 03fh ;
3362 dw as.AND_CP_OR_SUB_XOR ;CP
3363 db 0b8h ;
3364 dw gen.opc.ED2 ;CPD
3365 db 0a9h ;
3366 dw gen.opc.ED2 ;CPDR
3367 db 0b9h ;
3368 dw gen.opc.ED2 ;CPI
3369 db 0a1h ;
3370 dw gen.opc.ED2 ;CPIR
3371 db 0b1h ;
3372 dw as.opc.noarg ;CPL
3373 db 02fh ;
3374 dw as.opc.noarg ;DAA
3375 db 027h ;
3376 dw as.DEC_INC ;DEC
3377 db 005h ;
3378 dw as.opc.noarg ;DI
3379 db 0f3h ;
3380 dw as.DJNZ ;DJNZ
3381 db 010h ;
3382 dw as.opc.noarg ;EI
3383 db 0fbh ;
3384 dw as.EX ;EX
3385 db 0e3h ;
3386 dw as.opc.noarg ;EXX
3387 db 0d9h ;
3388 dw as.opc.noarg ;HALT
3389 db 076h ;
3390 dw as.IM ;IM
3391 db 046h ;
3392 dw as.IN ;IN
3393 db 040h ;
3394 dw as.DEC_INC ;INC
3395 db 004h ;
3396 dw gen.opc.ED2 ;IND
3397 db 0aah ;
3398 dw gen.opc.ED2 ;INDR
3399 db 0bah ;
3400 dw gen.opc.ED2 ;INI
3401 db 0a2h ;
3402 dw gen.opc.ED2 ;INIR
3403 db 0b2h ;
3404 dw as.JP ;JP
3405 db 0c2h ;
3406 dw as.JR ;JR
3407 db 020h ;
3408 dw as.LD ;LD
3409 db 040h ;
3410 dw gen.opc.ED2 ;LDD
3411 db 0a8h ;
3412 dw gen.opc.ED2 ;LDDR
3413 db 0b8h ;
3414 dw gen.opc.ED2 ;LDI
3415 db 0a0h ;
3416 dw gen.opc.ED2 ;LDIR
3417 db 0b0h ;
3418 dw gen.opc.ED2 ;NEG
3419 db 044h ;
3420 dw as.opc.noarg ;NOP
3421 db 000h ;
3422 dw as.AND_CP_OR_SUB_XOR ;OR
3423 db 0b0h ;
3424 dw gen.opc.ED2 ;OTDR
3425 db 0bbh ;
3426 dw gen.opc.ED2 ;OTIR
3427 db 0b3h ;
3428 dw as.OUT ;OUT
3429 db 041h ;
3430 dw gen.opc.ED2 ;OUTD
3431 db 0abh ;
3432 dw gen.opc.ED2 ;OUTI
3433 db 0a3h ;
3434 dw as.POP_PUSH ;POP
3435 db 0c1h ;
3436 dw as.POP_PUSH ;PUSH
3437 db 0c5h ;
3438 dw as.BITOP ;RES
3439 db 080h ;
3440 dw as.RET ;RET
3441 db 0c0h ;
3442 dw gen.opc.ED2 ;RETI
3443 db 04dh ;
3444 dw gen.opc.ED2 ;RETN
3445 db 045h ;
3446 dw as.SHIFTOP ;RL
3447 db 010h ;
3448 dw as.opc.noarg ;RLA
3449 db 017h ;
3450 dw as.SHIFTOP ;RLC
3451 db 000h ;
3452 dw as.opc.noarg ;RLCA
3453 db 007h ;
3454 dw gen.opc.ED2 ;RLD
3455 db 06fh ;
3456 dw as.SHIFTOP ;RR
3457 db 018h ;
3458 dw as.opc.noarg ;RRA
3459 db 01fh ;
3460 dw as.SHIFTOP ;RRC
3461 db 008h ;
3462 dw as.opc.noarg ;RRCA
3463 db 00fh ;
3464 dw gen.opc.ED2 ;RRD
3465 db 067h ;
3466 dw as.RST ;RST
3467 db 0c7h ;
3468 dw as.ADC_SBC ;SBC
3469 db 098h ;
3470 dw as.opc.noarg ;SCF
3471 db 037h ;
3472 dw as.BITOP ;SET
3473 db 0c0h ;
3474 dw as.SHIFTOP ;SLA
3475 db 020h ;
3476 dw as.SHIFTOP ;SRA
3477 db 028h ;
3478 dw as.SHIFTOP ;SRL
3479 db 038h ;
3480 dw as.AND_CP_OR_SUB_XOR ;SUB
3481 db 090h ;
3482 dw as.AND_CP_OR_SUB_XOR ;XOR
3483 db 0a8h ;
3484
3485 dw as.IN0 ;IN0
3486 db 000h ;
3487 dw as.MLT ;MLT
3488 db 04ch ;
3489 dw gen.opc.ED2 ;OTDM
3490 db 08bh ;
3491 dw gen.opc.ED2 ;OTDMR
3492 db 09bh ;
3493 dw gen.opc.ED2 ;OTIM
3494 db 083h ;
3495 dw gen.opc.ED2 ;OTIMR
3496 db 093h ;
3497 dw as.OUTO ;OUT0
3498 db 001h ;
3499 dw gen.opc.ED2 ;SLP
3500 db 076h ;
3501 dw as.TST ;TST
3502 db 004h ;
3503 dw as.TSTIO ;TSTIO
3504 db 074h ;
3505
3506 as.TST:
3507 call arg.r_HL_A ;
3508 jr nc,as.tst_0
3509 rlca
3510 rlca
3511 rlca
3512 add a,b
3513 ld b,a
3514 jp gen.opc.ED2
3515 as.tst_0:
3516 ld b,064h
3517 as.TSTIO:
3518 call arg.imm_8bit ;
3519 jr as.store_io0
3520
3521 as.IN0:
3522 call arg.r_HL_A ;
3523 jr nc,error7
3524 cp 006h
3525 jr z,error7
3526 rlca
3527 rlca
3528 rlca
3529 add a,b
3530 ld b,a
3531 call assert_comma ;
3532 call arg.addr_8bit ;
3533 jr as.store_io0
3534
3535 as.OUTO:
3536 call arg.addr_8bit ;
3537 call assert_comma ;
3538 call arg.r_HL_A ;
3539 jr nc,error7
3540 cp 006h
3541 jr z,error7
3542 rlca
3543 rlca
3544 rlca
3545 add a,b
3546 ld b,a
3547
3548 as.store_io0:
3549 call assert_eol
3550 ld (iy+000h),0edh
3551 ld (iy+001h),b
3552 ld (iy+002h),l
3553 ld c,003h
3554 ret
3555
3556 as.MLT:
3557 call arg.ww ;
3558 jr nc,error7
3559 add a,b
3560 ld b,a
3561 jp gen.opc.ED2
3562
3563 error7:
3564 jp ERROR
3565
3566 as.LD:
3567 call arg.r_HL_A
3568 jr c,l13d4h
3569 call arg.IDX_displcmnt
3570 jp c,l1471h
3571 call arg.ww
3572 jp c,l149ch
3573 call arg.IX_IY
3574 jp c,l14f5h
3575 ld a,(de)
3576 cp 'I'
3577 jp z,l1511h
3578 cp 'R'
3579 jp z,l1519h
3580 cp '('
3581 jp nz,ERROR
3582 inc de
3583 call arg.ww
3584 jp c,l1528h
3585 call test_expr
3586 call test_paren_close
3587 call assert_comma
3588 call arg.ww
3589 jr c,l13c2h
3590 call arg.IX_IY
3591 jr nc,l13aah
3592 ld b,022h
3593 l1395h:
3594 call assert_eol
3595 ld a,(prefix_ixiy)
3596 l139bh:
3597 ld (iy+000h),a
3598 ld (iy+001h),b
3599 ld (iy+002h),l
3600 ld (iy+003h),h
3601 ld c,004h
3602 ret
3603 l13aah:
3604 ld a,(de)
3605 cp 'A'
3606 jp nz,ERROR
3607 inc de
3608 ld b,032h
3609 as.store_3:
3610 call assert_eol
3611 ld (iy+000h),b
3612 ld (iy+001h),l
3613 ld (iy+002h),h
3614 ld c,003h
3615 ret
3616 l13c2h:
3617 cp 020h
3618 jr z,l13d0h
3619 add a,043h
3620 ld b,a
3621 l13c9h:
3622 call assert_eol
3623 ld a,0edh
3624 jr l139bh
3625 l13d0h:
3626 ld b,022h
3627 jr as.store_3
3628 l13d4h:
3629 ld b,a
3630 call assert_comma
3631 call arg.r_HL_A
3632 jr nc,l13f0h
3633 push af
3634 ld a,b
3635 rlca
3636 rlca
3637 rlca
3638 ld b,a
3639 pop af
3640 add a,b
3641 add a,040h
3642 cp 076h
3643 jp z,ERROR
3644 l13ech:
3645 ld b,a
3646 jp as.opc.noarg
3647 l13f0h:
3648 call arg.IDX_displcmnt
3649 jr nc,l1413h
3650 ld a,b
3651 rlca
3652 rlca
3653 rlca
3654 add a,046h
3655 cp 076h
3656 jp z,ERROR
3657
3658 l1400h:
3659 ld b,a
3660 call assert_eol
3661 ld (iy+001h),b
3662 ld (iy+002h),c
3663 ld a,(prefix_ixiy)
3664 ld (iy+000h),a
3665 ld c,003h
3666 ret
3667 l1413h:
3668 ld a,(de)
3669 cp 'I'
3670 jr z,l1426h
3671 cp 'R'
3672 jr nz,l1432h
3673 ld a,b
3674 cp 007h
3675 jp nz,ERROR
3676 ld b,05fh
3677 jr l142eh
3678 l1426h:
3679 ld a,b
3680 cp 007h
3681 jp nz,ERROR
3682 ld b,057h
3683 l142eh:
3684 inc de
3685 jp gen.opc.ED2
3686 l1432h:
3687 cp '('
3688 jr z,l144ch
3689 call arg.imm_8bit
3690 ld a,b
3691 rlca
3692 rlca
3693 rlca
3694 add a,006h
3695 l143fh:
3696 ld b,a
3697 as.store_2:
3698 call assert_eol
3699 ld (iy+000h),b
3700 ld (iy+001h),l
3701 ld c,002h
3702 ret
3703 l144ch:
3704 inc de
3705 ld a,b
3706 cp 007h
3707 jp nz,ERROR
3708 call arg.ww
3709 jr nc,l1466h
3710 cp 030h
3711 jp nc,ERROR
3712 add a,00ah
3713 ld b,a
3714 call test_paren_close
3715 jp as.opc.noarg
3716 l1466h:
3717 call test_expr
3718 call test_paren_close
3719 ld b,03ah
3720 jp as.store_3
3721
3722 l1471h:
3723 call assert_comma
3724 call arg.r_HL_A
3725 jr nc,l1483h
3726 cp 006h
3727 jp z,ERROR
3728 add a,070h
3729 jp l1400h
3730
3731 l1483h:
3732 call arg.imm_8bit
3733 call assert_eol
3734 ld a,(prefix_ixiy)
3735 ld (iy+000h),a
3736 ld (iy+001h),036h
3737 ld (iy+002h),c
3738 ld (iy+003h),l
3739 ld c,004h
3740 ret
3741 l149ch:
3742 ld b,a
3743 call assert_comma
3744 ld hl,t_HL.AF
3745 call sub_0318h
3746 jr c,l14c3h
3747 call arg.IX_IY
3748 jr nc,l14cch
3749 ld a,b
3750 cp 030h
3751 jr nz,error6
3752 ld b,0f9h
3753 l14b4h:
3754 call assert_eol
3755 ld a,(prefix_ixiy)
3756 ld (iy+000h),a
3757 ld (iy+001h),b
3758 ld c,002h
3759 ret
3760 l14c3h:
3761 ld a,b
3762 cp 030h
3763 jr nz,error6
3764 ld b,0f9h
3765 jr as.opc.noarg ;14ca
3766 l14cch:
3767 ld a,(de)
3768 cp '('
3769 jr nz,l14e8h
3770 inc de
3771 call test_expr
3772 call test_paren_close
3773 ld a,b
3774 cp 020h
3775 jr z,l14e3h
3776 add a,04bh
3777 ld b,a
3778 jp l13c9h
3779 l14e3h:
3780 ld b,02ah
3781 jp as.store_3
3782 l14e8h:
3783 call test_expr
3784 call assert_eol
3785 ld a,001h
3786 add a,b
3787 ld b,a
3788 jp as.store_3
3789 l14f5h:
3790 call assert_comma
3791 ld a,(de)
3792 cp '('
3793 jr nz,l1509h
3794 inc de
3795 call test_expr
3796 call test_paren_close
3797 ld b,02ah
3798 jp l1395h
3799 l1509h:
3800 call test_expr
3801 ld b,021h
3802 jp l1395h
3803 l1511h:
3804 inc de
3805 call assert_comma
3806 ld b,047h
3807 jr l151fh
3808 l1519h:
3809 inc de
3810 call assert_comma
3811 ld b,04fh
3812 l151fh:
3813 ld a,(de)
3814 inc de
3815 cp 'A'
3816 jr z,gen.opc.ED2
3817 error6:
3818 jp ERROR
3819
3820 l1528h:
3821 cp 020h
3822 jr nc,error6
3823 add a,002h
3824 ld b,a
3825 call test_paren_close
3826 call assert_comma
3827 ld a,(de)
3828 cp 'A'
3829 jr nz,error6
3830 inc de
3831 as.opc.noarg:
3832 call assert_eol
3833 ld (iy+000h),b
3834 ld c,001h
3835 ret
3836
3837 gen.opc.ED2:
3838 call assert_eol
3839 ld (iy+000h),0edh
3840 ld (iy+001h),b
3841 ld c,002h
3842 ret
3843
3844 as.ADC_SBC:
3845 ld hl,t_HL.AF
3846 call sub_0318h
3847 jr nc,as.AND_CP_OR_SUB_XOR
3848 call assert_comma
3849 call arg.ww
3850 jp nc,ERROR
3851 push af
3852 ld a,b
3853 cp 088h
3854 ld b,04ah
3855 jr z,l156ch
3856 ld b,042h
3857 l156ch:
3858 pop af
3859 add a,b
3860 l156eh:
3861 ld b,a
3862 jr gen.opc.ED2
3863 as.ADD:
3864 ld hl,t_HL.AF
3865 call sub_0318h
3866 jr c,l159ah
3867 call arg.IX_IY
3868 jr nc,as.AND_CP_OR_SUB_XOR
3869 call assert_comma
3870 ld hl,t_BC.DE.IX.SP
3871 ld a,(prefix_ixiy)
3872 cp 0fdh
3873 jr nz,l158eh
3874 ld hl,t_BC.DE.IY.SP
3875 l158eh:
3876 call arg.reg_16bit
3877 jp nc,ERROR
3878 add a,009h
3879 l1596h:
3880 ld b,a
3881 jp l14b4h
3882 l159ah:
3883 call assert_comma
3884 call arg.ww
3885 jp nc,ERROR
3886 add a,009h
3887 jp l13ech
3888 as.AND_CP_OR_SUB_XOR:
3889 ld a,(de)
3890 cp 'A'
3891 jr nz,l15b8h
3892 push de
3893 inc de
3894 call next_arg
3895 jr z,l15b7h
3896 pop de
3897 jr l15b8h
3898 l15b7h:
3899 pop af
3900 l15b8h:
3901 call arg.r_HL_A
3902 jr c,l15cbh
3903 call arg.IDX_displcmnt
3904 jr c,l15cfh
3905 call arg.imm_8bit
3906 ld a,b
3907 add a,046h
3908 jp l143fh
3909 l15cbh:
3910 add a,b
3911 jp l13ech
3912 l15cfh:
3913 ld a,b
3914 add a,006h
3915 jp l1400h
3916
3917 as.SHIFTOP:
3918 call arg.r_HL_A
3919 jr c,l15fah
3920 call arg.IDX_displcmnt
3921 jp nc,ERROR
3922 ld a,b
3923 add a,006h
3924 ld b,a
3925 l15e4h:
3926 call assert_eol
3927 ld a,(prefix_ixiy)
3928 ld (iy+000h),a
3929 ld (iy+001h),0cbh
3930 ld (iy+002h),c
3931 ld (iy+003h),b
3932 ld c,004h
3933 ret
3934
3935 l15fah:
3936 add a,b
3937 l15fbh:
3938 ld b,a
3939 call assert_eol
3940 ld (iy+001h),b
3941 ld (iy+000h),0cbh
3942 ld c,002h
3943 ret
3944
3945 as.BITOP:
3946 call arg.bit
3947 call assert_comma
3948 call arg.r_HL_A
3949 jr c,l1624h
3950 call arg.IDX_displcmnt
3951 jp nc,ERROR
3952 ld a,l
3953 rlca
3954 rlca
3955 rlca
3956 add a,006h
3957 add a,b
3958 ld b,a
3959 jr l15e4h
3960 l1624h:
3961 add a,b
3962 ld b,a
3963 ld a,l
3964 rlca
3965 rlca
3966 rlca
3967 add a,b
3968 jr l15fbh
3969
3970 as.CALL:
3971 push de
3972 call arg.cc_ZCPS
3973 jr nc,l163ch
3974 add a,b
3975 ld b,a
3976 call next_arg
3977 jr z,l163eh
3978 pop de
3979 push de
3980 l163ch:
3981 ld b,0cdh
3982 l163eh:
3983 pop af
3984 call test_expr
3985 jp as.store_3
3986
3987 as.RET:
3988 call arg.cc_ZCPS
3989 jr nc,l164eh
3990 add a,b
3991 ld b,a
3992 jr l1650h
3993 l164eh:
3994 ld b,0c9h
3995 l1650h:
3996 jp as.opc.noarg
3997
3998 as.JP:
3999 push de
4000 call arg.cc_ZCPS
4001 jr c,l1666h
4002 l1659h:
4003 pop de
4004 ld hl,l168ch
4005 call sub_030ah
4006 jr c,l1674h
4007 ld b,0c3h
4008 jr l166eh
4009
4010 l1666h:
4011 add a,b
4012 ld b,a
4013 call next_arg
4014 jr nz,l1659h
4015 pop af
4016 l166eh:
4017 call test_expr
4018 jp as.store_3
4019 l1674h:
4020 call assert_eol
4021 ld a,b
4022 and a
4023 jr nz,l1680h
4024 ld b,0e9h
4025 jp as.opc.noarg
4026 l1680h:
4027 ld b,0ddh
4028 dec a
4029 jr z,l1687h
4030 ld b,0fdh
4031 l1687h:
4032 ld l,0e9h
4033 jp as.store_2
4034
4035 l168ch:
4036 DC '(HL)'
4037 DC '(IX)'
4038 DC '(IY)'
4039 DB 0
4040
4041 as.DJNZ:
4042 call next_arg
4043 ld b,010h
4044 jr l16aeh
4045 as.JR:
4046 call arg.cc_ZC
4047 jr c,l16a9h
4048 ld b,018h
4049 jr l16aeh
4050 l16a9h:
4051 add a,b
4052 ld b,a
4053 call assert_comma
4054 l16aeh:
4055 call arg.j_displ
4056 jp as.store_2
4057
4058 as.IM:
4059 call arg.imm_8bit
4060 ld a,l
4061 cp 003h
4062 jr nc,error2
4063 and a
4064 jr z,l16c7h
4065 ld b,056h
4066 cp 001h
4067 jr z,l16c7h
4068 ld b,05eh
4069 l16c7h:
4070 jp gen.opc.ED2
4071
4072 as.RST:
4073 call arg.imm_8bit
4074 ld a,l
4075 push af
4076 add a,b
4077 ld b,a
4078 pop af
4079 and 0c7h
4080 jr nz,error2
4081 jp as.opc.noarg
4082
4083 as.POP_PUSH:
4084 call arg.IX_IY
4085 jr c,l16e7h
4086 call arg.zz
4087 jr nc,error2
4088 add a,b
4089 jp l13ech
4090 l16e7h:
4091 ld a,b
4092 add a,020h
4093 jp l1596h
4094
4095 as.IN:
4096 call arg.r_HL_A
4097 jr nc,error2
4098 cp 006h
4099 jr z,error2
4100 rlca
4101 rlca
4102 rlca
4103 add a,b
4104 ld b,a
4105 cp 078h
4106 jr nz,l170fh
4107 call assert_comma
4108 call sub_171bh
4109 jr c,l1715h
4110 call arg.addr_8bit
4111 ld b,0dbh
4112 jp as.store_2
4113 l170fh:
4114 call assert_comma
4115 call sub_171bh
4116 l1715h:
4117 jp c,gen.opc.ED2
4118 error2:
4119 jp ERROR
4120
4121 sub_171bh:
4122 ld hl,t__C_
4123 jp sub_0318h
4124
4125 as.OUT:
4126 call sub_171bh
4127 jr nc,l1739h
4128 call assert_comma
4129 call arg.r_HL_A
4130 jr nc,error2
4131 cp 006h
4132 jr z,error2
4133 rlca
4134 rlca
4135 rlca
4136 add a,b
4137 jp l156eh
4138
4139 l1739h:
4140 call arg.addr_8bit
4141 call assert_comma
4142 cp 'A'
4143 jr nz,error2
4144 inc de
4145 ld b,0d3h
4146 jp as.store_2
4147
4148 as.EX:
4149 ld hl,b_176d_start
4150 call sub_030ah
4151 jp nc,ERROR
4152 ld c,b
4153 call assert_eol
4154 ld b,000h
4155 ld hl,l178eh
4156 add hl,bc
4157 add hl,bc
4158 ld a,(hl)
4159 ld (iy+000h),a
4160 ld c,001h
4161 inc hl
4162 ld a,(hl)
4163 and a
4164 ret z
4165 ld (iy+001h),a
4166 ld c,002h
4167 ret
4168
4169 b_176d_start:
4170 DC 'AF,AF'''
4171 l1773h:
4172 DC 'DE,HL'
4173 DC '(SP),HL'
4174 DC '(SP),IX'
4175 DC '(SP),IY'
4176 db 0
4177 l178eh:
4178 db 008h,000h
4179 db 0ebh,000h
4180 db 0e3h,000h
4181 db 0ddh,0e3h
4182 db 0fdh,0e3h
4183
4184 as.DEC_INC:
4185 call arg.IX_IY
4186 jr c,l17b3h
4187 call arg.ww
4188 jr c,l17bfh
4189 call arg.r_HL_A
4190 jr c,l17cch
4191 call arg.IDX_displcmnt
4192 jp nc,ERROR
4193 ld a,b
4194 add a,030h
4195 jp l1400h
4196 l17b3h:
4197 ld a,b
4198 ld b,023h
4199 cp 004h
4200 jr z,l17bch
4201 ld b,02bh
4202 l17bch:
4203 jp l14b4h
4204 l17bfh:
4205 push af
4206 ld a,b
4207 ld b,003h
4208 cp 004h
4209 jr z,l17c9h
4210 ld b,00bh
4211 l17c9h:
4212 pop af
4213 jr l17cfh
4214 l17cch:
4215 rlca
4216 rlca
4217 rlca
4218 l17cfh:
4219 add a,b
4220 jp l13ech
4221
4222 arg.bit:
4223 call arg.imm_8bit
4224 ld a,l
4225 cp 008h
4226 jr nc,error3
4227 ret
4228
4229 arg.j_displ:
4230 call test_expr
4231 push bc
4232 push iy
4233 pop bc
4234 and a
4235 sbc hl,bc
4236 dec hl
4237 dec hl
4238 pop bc
4239 call sub_1802h
4240 ld a,h
4241 xor l
4242 bit 7,a
4243 jr nz,error3
4244 ret
4245
4246 arg.addr_8bit:
4247 ld a,(de)
4248 cp '('
4249 jr nz,arg.imm_8bit
4250 inc de
4251 call arg.imm_8bit
4252 jp test_paren_close
4253
4254 arg.imm_8bit:
4255 call test_expr
4256 sub_1802h:
4257 ld a,h
4258 and a
4259 ret z
4260 inc a
4261 ret z
4262 jr error3
4263
4264 test_expr:
4265 push bc
4266 call expr
4267 pop bc
4268 ret nc
4269 error3:
4270 jp ERROR
4271
4272 arg.zz:
4273 push hl
4274 ld hl,t_BC.DE.HL.AF
4275 jr l181fh
4276
4277 arg.reg_16bit:
4278 push hl
4279 jr l181fh
4280
4281 arg.ww:
4282 push hl
4283 ld hl,t_BC.DE.HL.SP
4284 l181fh:
4285 push bc
4286 call sub_030ah
4287 jr nc,l182bh
4288 ld a,b
4289 rlca
4290 rlca
4291 rlca
4292 rlca
4293 scf
4294 l182bh:
4295 pop bc
4296 pop hl
4297 ret
4298
4299 arg.r_HL_A:
4300 call skipbl
4301 push bc
4302 push hl
4303 ld hl,t_BCDEHL_HL_A
4304 call sub_030ah
4305 ld a,b
4306 pop hl
4307 pop bc
4308 ret
4309
4310 arg.IX_IY:
4311 push hl
4312 push bc
4313 ld hl,t_IX.IY
4314 call sub_030ah
4315 jr nc,l1852h
4316 ld a,0ddh
4317 dec b
4318 jr nz,l184eh
4319 ld a,0fdh
4320 l184eh:
4321 ld (prefix_ixiy),a
4322 scf
4323 l1852h:
4324 pop bc
4325 pop hl
4326 ret
4327
4328 arg.IDX_displcmnt:
4329 push hl
4330 push bc
4331 ld a,(de)
4332 cp '('
4333 jr nz,l18a1h
4334 push de
4335 inc de
4336 ld hl,t_IX.IY
4337 call sub_030ah
4338 jr nc,l18a0h
4339 pop af
4340 ld a,0ddh
4341 dec b
4342 jr nz,l186eh
4343 ld a,0fdh
4344 l186eh:
4345 ld (prefix_ixiy),a
4346 ld a,(de)
4347 cp '+'
4348 jr z,l1882h
4349 cp ')'
4350 ld hl,0
4351 jr z,l189ah
4352 cp '-'
4353 jp nz,ERROR
4354 l1882h:
4355 push af
4356 inc de
4357 call arg.imm_8bit
4358 pop af
4359 cp '+'
4360 jr z,l1894h
4361 ld b,h
4362 ld c,l
4363 ld hl,0
4364 and a
4365 sbc hl,bc
4366 l1894h:
4367 ld a,(de)
4368 cp ')'
4369 jp nz,ERROR
4370 l189ah:
4371 inc de
4372 pop bc
4373 ld c,l
4374 pop hl
4375 scf
4376 ret
4377 l18a0h:
4378 pop de
4379 l18a1h:
4380 pop bc
4381 pop hl
4382 and a
4383 ret
4384
4385 arg.cc_ZCPS:
4386 ld hl,t_tstfl_ZCPS
4387 ld c,007h
4388 jr l18b1h
4389
4390 arg.cc_ZC:
4391 ld hl,t_tstfl_ZC
4392 ld c,003h
4393 l18b1h:
4394 push bc
4395 call sub_030ah
4396 ld a,b
4397 pop bc
4398 ret nc
4399 and c
4400 rlca
4401 rlca
4402 rlca
4403 scf
4404 ret
4405
4406 assert_comma:
4407 call next_arg
4408 ret z
4409 l18c2h:
4410 jp ERROR
4411
4412 test_paren_close:
4413 ld a,(de)
4414 cp ')'
4415 jr nz,l18c2h
4416 inc de
4417 ret
4418
4419 cmd_L:
4420 ld hl,cmd_L
4421 ld (cmd_rpt),hl
4422 call expr
4423 jr nc,l18dbh
4424 ld hl,(last_L)
4425 l18dbh:
4426 push hl
4427 pop iy
4428 call next_arg
4429 call get_range
4430 jr nc,l1905h
4431 call assert_eol
4432 ld b,16
4433 l18ebh:
4434 push bc
4435 push iy
4436 pop hl
4437 push hl
4438 call p_disas_line
4439 call crlf
4440 pop iy
4441 ld c,b
4442 ld b,0
4443 add iy,bc
4444 ld (last_L),iy
4445 pop bc
4446 djnz l18ebh
4447 ret
4448 l1905h:
4449 call assert_eol
4450 ld h,b
4451 ld l,c
4452 ld a,b
4453 or c
4454 jr nz,l190fh
4455 dec hl
4456 l190fh:
4457 push hl
4458 push iy
4459 pop hl
4460 push hl
4461 call p_disas_line
4462 call crlf
4463 pop iy
4464 ld e,b
4465 ld d,000h
4466 add iy,de
4467 ld (last_L),iy
4468 pop hl
4469 and a
4470 sbc hl,de
4471 ret z
4472 ret c
4473 jr l190fh
4474
4475 p_disas_line:
4476 call p_label
4477 call outbl2
4478 call out.hl.@
4479 call z,outbl
4480 call outbl
4481 sub a
4482 ld (con_col),a
4483 call p_disas_instr
4484 and a
4485 ret z
4486 l193fh:
4487 call outbl
4488 ld a,(con_col)
4489 cp 16
4490 jr c,l193fh
4491
4492 p_offset:
4493 ld de,(var.@)
4494 ld a,d
4495 or e
4496 ret z
4497 call p_char_lparen
4498 ld a,'@'
4499 call outchar
4500 and a
4501 sbc hl,de
4502 call out_hl
4503 jp out_rparen
4504
4505 p_disas_instr:
4506 sub a
4507 ld (l1ffdh),a
4508 call disas_get_instrlen
4509 jr nc,l197fh
4510 push bc
4511 call p_mnemonic
4512 ex de,hl
4513 call call_hl
4514 pop bc
4515 ld a,(l1ffdh)
4516 ld hl,(l1ffbh)
4517 scf
4518 ret
4519
4520 l197fh:
4521 call pstr_inl
4522 DC '???'
4523 ld b,001h
4524 sub a
4525 ret
4526
4527 disas_get_instrlen:
4528 sub a
4529 ld (isprefix_ixiy),a
4530 ld a,(iy+000h)
4531 cp 0edh
4532 jp z,disas_pfx.ED
4533 cp 0ddh
4534 jr z,l19abh
4535 cp 0fdh
4536 jr z,l19afh
4537 sub_19a0h:
4538 ld a,(iy+000h)
4539 cp 0cbh
4540 jp z,disas_pfx.CB
4541 jp disas_nopfx
4542 l19abh:
4543 ld a,1
4544 jr l19b1h
4545 l19afh:
4546 ld a,2
4547 l19b1h:
4548 ld (isprefix_ixiy),a
4549 call disas_pfx.DDFD
4550 ret nc
4551 push bc
4552 call sub_19a0h
4553 pop af
4554 add a,b
4555 ld b,a
4556 scf
4557 ret
4558
4559 disas_pfx.DDFD:
4560 inc iy
4561 ld hl,b_19ef_start
4562 call test_DDFD
4563 ld b,002h
4564 ret c
4565 ld hl,l1a0ah
4566 call test_DDFD
4567 ld b,001h
4568 ret c
4569 ld a,(iy+000h)
4570 cp 0cbh
4571 jr nz,l19edh
4572 ld a,(iy+002h)
4573 cp 036h
4574 ret z
4575 and 007h
4576 cp 006h
4577 jr nz,l19edh
4578 ld b,002h
4579 scf
4580 ret
4581 l19edh:
4582 and a
4583 ret
4584
4585 ; DD/FD 3 byte (ix+d)/(iy+d)
4586 b_19ef_start:
4587 db 034h
4588 db 035h
4589 db 036h
4590 db 046h
4591 db 04eh
4592 db 056h
4593 db 05eh
4594 db 066h
4595 db 06eh
4596 db 070h
4597 db 071h
4598 db 072h
4599 db 073h
4600 db 074h
4601 db 075h
4602 db 077h
4603 db 07eh
4604 db 086h
4605 db 08eh
4606 db 096h
4607 db 09eh
4608 db 0a6h
4609 db 0aeh
4610 db 0b6h
4611 db 0beh
4612 db 0
4613
4614 ; DD/FD 2 byte
4615 l1a0ah:
4616 db 009h
4617 db 019h
4618 db 021h
4619 db 022h
4620 db 023h
4621 db 029h
4622 db 02ah
4623 db 02bh
4624 db 039h
4625 db 0e1h
4626 db 0e3h
4627 db 0e5h
4628 db 0e9h
4629 db 0f9h
4630 db 0
4631
4632 disas_pfx.ED:
4633 inc iy
4634 ld hl,b_1bc9_start
4635 call sub_1a72h
4636 ld b,2
4637 ret c
4638 ld hl,b_1bf4_start
4639 call lookup_opc
4640 ld b,2
4641 ret c
4642
4643 ld hl,l228bh
4644 call lookup_opc
4645 ld b,3
4646 ret c
4647 ld hl,b_1c40_start
4648 call lookup_opc
4649 ld b,4
4650 ret
4651
4652 disas_pfx.CB:
4653 push iy
4654 inc iy
4655 ld a,(isprefix_ixiy)
4656 and a
4657 jr z,l1a42h
4658 inc iy
4659 l1a42h:
4660 ld hl,b_1c55_start
4661 call lookup_opc
4662 pop iy
4663 ld b,2
4664 ret
4665
4666 disas_nopfx:
4667 ld hl,b_1b54_start
4668 call lookup_opc
4669 ld b,2
4670 ret c
4671 ld hl,b_1ab6_start
4672 call sub_1a72h
4673 ld b,1
4674 ret c
4675 ld hl,b_1ad1_start
4676 call lookup_opc
4677 ld b,1
4678 ret c
4679 ld hl,b_1b9b_start
4680 call lookup_opc
4681 ret nc
4682 ld b,3
4683 ret
4684
4685 sub_1a72h:
4686 ld a,(hl)
4687 cp 0ffh
4688 ret z
4689 cp (iy+000h)
4690 jr z,l1a7fh
4691 inc hl
4692 inc hl
4693 jr sub_1a72h
4694 l1a7fh:
4695 inc hl
4696 ld c,(hl)
4697 ld hl,t_MNEMONICS
4698 ld b,0
4699 add hl,bc
4700 ld de,l1c97h
4701 scf
4702 ret
4703
4704 test_DDFD:
4705 ld a,(hl)
4706 and a
4707 ret z
4708 inc hl
4709 cp (iy+000h)
4710 jr nz,test_DDFD
4711 scf
4712 ret
4713
4714 lookup_opc:
4715 ld a,(iy+000h)
4716 and (hl)
4717 inc hl
4718 cp (hl)
4719 jr z,l1aa8h
4720 inc hl
4721 inc hl
4722 inc hl
4723 inc hl
4724 ld a,(hl)
4725 and a
4726 jr nz,lookup_opc
4727 ret
4728 l1aa8h:
4729 inc hl
4730 ld c,(hl)
4731 inc hl
4732 ld e,(hl)
4733 inc hl
4734 ld d,(hl)
4735 ld hl,t_MNEMONICS
4736 ld b,000h
4737 add hl,bc
4738 scf
4739 ret
4740
4741 ; 1 byte opcodes (no parameters)
4742 ; Format: db opcode, t_MNEMONICS-index
4743 b_1ab6_start:
4744 db 076h,039h ;halt
4745 db 0d9h,036h ;exx
4746 db 0f3h,02ch ;di
4747 db 0fbh,032h ;ei
4748 db 000h,069h ;nop
4749 db 007h,09eh ;rlca
4750 db 00fh,0adh ;rrca
4751 db 017h,098h ;rla
4752 db 01fh,0a7h ;rra
4753 db 027h,026h ;daa
4754 db 02fh,023h ;cpl
4755 db 037h,0bah ;scf
4756 db 03fh,010h ;ccf
4757 db 0ffh
4758
4759
4760 ; 1 byte opcodes
4761 ; Format: db mask, match, t_MNEMONICS-index
4762 ; dw argument formating fuction
4763 b_1ad1_start:
4764 db 0c0h,040h,056h ;ld r,r
4765 dw p_arg_r_r
4766 db 0f8h,080h,003h ;add a,r
4767 dw p_arg_a_r
4768 db 0f8h,088h,000h ;adc a,r
4769 dw p_arg_a_r
4770 db 0f8h,090h,0c9h ;sub r
4771 dw p_arg_rs
4772 db 0f8h,098h,0b7h ;sbc a,r
4773 dw p_arg_a_r
4774 db 0f8h,0a0h,006h ;and r
4775 dw p_arg_rs
4776 db 0f8h,0a8h,0cch ;xor r
4777 dw p_arg_rs
4778 db 0f8h,0b0h,06ch ;or r
4779 dw p_arg_rs
4780 db 0f8h,0b8h,013h ;cp r
4781 dw p_arg_rs
4782 db 0c7h,0c0h,08bh ;ret cc
4783 dw p_arg_cc
4784 db 0c7h,0c7h,0b4h ;rst
4785 dw l1c98h
4786 db 0ffh,0c9h,08bh ;ret
4787 dw l1c97h
4788 db 0cfh,0c1h,081h ;pop rr
4789 dw p_arg_zz
4790 db 0cfh,0c5h,084h ;push rr
4791 dw p_arg_zz
4792 db 0ffh,0e3h,034h ;ex (sp),hl
4793 dw l1ca0h
4794 db 0ffh,0e9h,052h ;jp (hl)
4795 dw l1caeh
4796 db 0ffh,0ebh,034h ;ex de,hl
4797 dw p_arg_ex_dehl
4798 db 0ffh,0f9h,056h ;ld sp,hl
4799 dw l1cc1h
4800 db 0cfh,003h,041h ;inc rr
4801 dw p_arg_ww
4802 db 0cfh,00bh,029h ;dec rr
4803 dw p_arg_ww
4804 db 0c7h,004h,041h ;inc r
4805 dw p_arg_r
4806 db 0c7h,005h,029h ;dec r
4807 dw p_arg_r
4808 db 0ffh,008h,034h ;ex af,af'
4809 dw p_arg_ex_afaf
4810 db 0cfh,009h,003h ;add hl,rr
4811 dw l1cd3h
4812 db 0efh,002h,056h ;ld (rr),a ;rr=bc,de
4813 dw l1cdch
4814 db 0efh,00ah,056h ;ld a,(rr) ;rr=bc,de
4815 dw l1ce5h
4816 db 0
4817
4818 ; 2 byte opdodes
4819 b_1b54_start:
4820 db 0c7h,006h,056h ;ld r,nn
4821 dw l1cfah
4822 db 0ffh,0c6h,003h ;add a,nn
4823 dw l1cf5h
4824 db 0ffh,0ceh,000h ;adc a,nn
4825 dw l1cf5h
4826 db 0ffh,0d6h,0c9h ;sub a,nn
4827 dw l1d09h
4828 db 0ffh,0deh,0b7h ;sbc a,nn
4829 dw l1cf5h
4830 db 0ffh,0e6h,006h ;and a,nn
4831 dw l1d09h
4832 db 0ffh,0eeh,0cch ;xor nn
4833 dw l1d09h
4834 db 0ffh,0f6h,06ch ;or nn
4835 dw l1d09h
4836 db 0ffh,0feh,013h ;cp a,nn
4837 dw l1d09h
4838 db 0ffh,010h,02eh ;djnz
4839 dw l1d1ah
4840 db 0ffh,018h,054h ;jr
4841 dw l1d1ah
4842 db 0e7h,020h,054h ;jr,cc
4843 dw l1d0fh
4844 db 0ffh,0d3h,076h ;out (nn),a
4845 dw l1d37h
4846 db 0ffh,0dbh,03fh ;in a,(nn)
4847 dw l1d29h
4848 db 0
4849
4850 ; 3 byte opcodes
4851 b_1b9b_start:
4852 db 0c7h,0c2h,052h ;jp cc,mn
4853 dw p_arg_cc_mn
4854 db 0c7h,0c4h,00ch ;call cc,mn
4855 dw p_arg_cc_mn
4856 db 0cfh,001h,056h ;ld ww,mn
4857 dw p_arg_ww_mn
4858 db 0ffh,0c3h,052h ;jp mn
4859 dw p_arg_mn
4860 db 0ffh,0cdh,00ch ;call mn
4861 dw p_arg_mn
4862 db 0ffh,022h,056h ;ld (mn),hl
4863 dw p_arg_addr_hl
4864 db 0ffh,02ah,056h ;ld hl,(mn)
4865 dw p_arg_hl_addr
4866 db 0ffh,032h,056h ;ld (mn),a
4867 dw p_arg_addr_a
4868 db 0ffh,03ah,056h ;ld a,(mn)
4869 dw p_arg_a_addr
4870 db 0
4871
4872 ; Prefix ED + 1 byte opcode, no arguments
4873 ; Format: opcode, t_MNEMONICS index
4874 b_1bc9_start:
4875 db 044h,066h ;neg
4876 db 045h,092h ;retn
4877 db 04dh,08eh ;reti
4878 db 067h,0b1h ;rrd
4879 db 06fh,0a2h ;rld
4880 db 0a0h,05fh ;ldi
4881 db 0a1h,01ch ;cpi
4882 db 0a2h,04bh ;ini
4883 db 0a3h,07dh ;outi
4884 db 0a8h,058h ;ldd
4885 db 0a9h,015h ;cpd
4886 db 0aah,044h ;ind
4887 db 0abh,079h ;outd
4888 db 0b0h,062h ;ldir
4889 db 0b1h,01fh ;cpir
4890 db 0b2h,04eh ;inir
4891 db 0b3h,072h ;otir
4892 db 0b8h,05bh ;lddr
4893 db 0b9h,018h ;cpdr
4894 db 0bah,047h ;indr
4895 db 0bbh,06eh ;otdr
4896 db 08bh,0d5h ;otdm
4897 db 09bh,0d9h ;otdmr
4898 db 083h,0deh ;otim
4899 db 093h,0e2h ;otimr
4900 db 076h,0ebh ;slp
4901 db 0ffh ;<end mark>
4902
4903 b_1bf4_start:
4904 db 0e7h,040h,03fh ;in r,(c) ;r=b,c,d,e
4905 dw p_arg_in_c ;
4906 db 0f7h,060h,03fh ;in r,(c) ;r=h,l
4907 dw p_arg_in_c ;
4908 db 0ffh,078h,03fh ;in r,(c) ;r=a
4909 dw p_arg_in_c ;
4910 db 0e7h,041h,076h ;out (c),r ;r=b,c,d,e
4911 dw p_arg_out_c ;
4912 db 0f7h,061h,076h ;out (c),r ;r=h,l
4913 dw p_arg_out_c ;
4914 db 0ffh,079h,076h ;out (c),r ;r=a
4915 dw p_arg_out_c ;
4916 db 0cfh,042h,0b7h ;sbc hl,rr
4917 dw l1dcah ;
4918 db 0cfh,04ah,000h ;adc hl,rr
4919 dw l1dcah ;
4920 db 0ffh,046h,03dh ;im 0
4921 dw l1d85h ;
4922 db 0ffh,056h,03dh ;im 1
4923 dw l1d89h ;
4924 db 0ffh,05eh,03dh ;im 2
4925 dw l1d8dh ;
4926 db 0ffh,047h,056h ;ld i,a
4927 dw l1d92h ;
4928 db 0ffh,057h,056h ;ld a,i
4929 dw l1d97h ;
4930 db 0ffh,04fh,056h ;ld r,a
4931 dw l1d9ch ;
4932 db 0ffh,05fh,056h ;ld a,r
4933 dw l1da1h
4934 db 0cfh,04ch,0d2h ;mlt rr
4935 dw p_arg_ww
4936 db 0c7h,004h,0eeh ;tst r
4937 dw p_arg_r
4938 db 0
4939
4940 l228bh:
4941 db 0e7h,000h,0cfh ;in0 r,(m) ;r=b,c,d,e
4942 dw p_arg_r_m
4943 db 0f7h,020h,0cfh ;in0 r,(m) ;r=h,l
4944 dw p_arg_r_m
4945 db 0ffh,038h,0cfh ;in0 a,(m)
4946 dw p_arg_r_m
4947 db 0e7h,001h,0e7h ;out0 (m),r ;r=b,c,d,e
4948 dw p_arg_m_r
4949 db 0f7h,021h,0e7h ;out0 (m),r ;r=h,l
4950 dw p_arg_m_r
4951 db 0ffh,039h,0e7h ;out0 (m),a
4952 dw p_arg_m_r
4953 db 0ffh,064h,0eeh ;tst m
4954 dw l1d09h
4955 db 0ffh,074h,0f1h ;tstio m
4956 dw l1d09h
4957 db 0
4958
4959 b_1c40_start:
4960 db 0efh,043h,056h ;ld (mn),ww ;ww=bc,de
4961 dw p_arg_addr_ww
4962 db 0ffh,073h,056h ;ld (mn),sp
4963 dw p_arg_addr_ww
4964 db 0efh,04bh,056h ;ld ww,(mn) ;ww=bc,de
4965 dw p_arg_ww_addr
4966 db 0ffh,07bh,056h ;ld sp,(mn)
4967 dw p_arg_ww_addr
4968 db 0
4969
4970 ; CB
4971 b_1c55_start:
4972 db 0f8h,000h,09bh ;rlc g
4973 dw l1e03h
4974 db 0f8h,008h,0aah ;rrc g
4975 dw l1e03h
4976 db 0f8h,010h,096h ;rl g
4977 dw l1e03h
4978 db 0f8h,018h,0a5h ;rr g
4979 dw l1e03h
4980 db 0f8h,020h,0c0h ;sla g
4981 dw l1e03h
4982 db 0f8h,028h,0c3h ;sra g
4983 dw l1e03h
4984 db 0f8h,038h,0c6h ;srl g
4985 dw l1e03h
4986 db 0c0h,040h,009h ;bit b,g
4987 dw p_arg_bitop
4988 db 0c0h,080h,088h ;res b,g
4989 dw p_arg_bitop
4990 db 0c0h,0c0h,0bdh ;set b,g
4991 dw p_arg_bitop
4992 db 0
4993
4994 p_arg_r_r:
4995 call p_arg_r
4996 call p_char_comma
4997 jp p_arg_rs
4998 p_arg_a_r:
4999 call p_A_comma
5000 jp p_arg_rs
5001 l1c97h:
5002 ret
5003
5004 p_arg_r_m:
5005 call p_arg_r
5006 call p_char_comma
5007 jp sub_1d2ch
5008
5009 p_arg_m_r:
5010 call sub_1d2ch
5011 call p_char_comma
5012 jp p_arg_r
5013
5014 l1c98h:
5015 ld a,(iy+000h)
5016 and 038h
5017 jp out_hex
5018
5019 l1ca0h:
5020 call pstr_inl
5021 DC '(SP),'
5022 jp p_arg_hlixiy
5023
5024 l1caeh:
5025 call p_char_lparen
5026 call p_arg_hlixiy
5027 jr out_rparen
5028
5029 p_arg_ex_dehl:
5030 ld hl,l1773h
5031 jp pstr
5032
5033 l1cc1h:
5034 call pstr_inl
5035 DC 'SP,'
5036 jp p_arg_hlixiy
5037
5038 p_arg_ex_afaf:
5039 ld hl,b_176d_start
5040 jp pstr
5041
5042 l1cd3h:
5043 call p_arg_hlixiy
5044 call p_char_comma
5045 jp p_arg_ww
5046 l1cdch:
5047 call sub_1ce8h
5048 call p_char_comma
5049 jp p_char_A
5050
5051 l1ce5h:
5052 call p_A_comma
5053 sub_1ce8h:
5054 call p_char_lparen
5055 call p_arg_ww
5056 out_rparen:
5057 jp p_char_rparen
5058
5059 l1cf5h:
5060 call p_A_comma
5061 jr l1d09h
5062 l1cfah:
5063 call p_arg_r
5064 call p_char_comma
5065 ld a,(isprefix_ixiy)
5066 and a
5067 ld a,(iy+002h)
5068 jr nz,l1d0ch
5069 l1d09h:
5070 ld a,(iy+001h)
5071 l1d0ch:
5072 jp out_hex
5073
5074 l1d0fh:
5075 ld a,(iy+000h)
5076 and 018h
5077 call p_arg_cc0
5078 call p_char_comma
5079 l1d1ah:
5080 ld c,(iy+001h)
5081 ld a,c
5082 rla
5083 sbc a,a
5084 ld b,a
5085 push iy
5086 pop hl
5087 add hl,bc
5088 inc hl
5089 inc hl
5090 jr l1d4eh
5091 l1d29h:
5092 call p_A_comma
5093 sub_1d2ch:
5094 call p_char_lparen
5095 ld a,(iy+001h)
5096 jp l1e6bh
5097 l1d37h:
5098 call sub_1d2ch
5099 jr p_char_comma_A
5100
5101 p_arg_cc_mn:
5102 call p_arg_cc
5103 call p_char_comma
5104 p_arg_mn:
5105 ld l,(iy+001h)
5106 ld h,(iy+002h)
5107 l1d4eh:
5108 ld a,002h
5109 sub_1d50h:
5110 ld (l1ffdh),a
5111 ld (l1ffbh),hl
5112 call out_hl
5113 ret
5114 p_arg_ww_mn:
5115 call p_arg_ww
5116 call p_char_comma
5117 jr p_arg_mn
5118
5119 p_arg_addr_hl:
5120 call sub_1e13h
5121 call p_char_comma
5122 jp p_arg_hlixiy
5123 p_arg_hl_addr:
5124 call p_arg_hlixiy
5125 call p_char_comma
5126 jp sub_1e13h
5127
5128 p_arg_addr_a:
5129 call sub_1e13h
5130 p_char_comma_A:
5131 call p_char_comma
5132 p_char_A:
5133 ld a,'A'
5134 jr outchar1
5135 p_arg_a_addr:
5136 call p_A_comma
5137 jp sub_1e13h
5138 l1d85h:
5139 ld a,'0'
5140 jr outchar1
5141 l1d89h:
5142 ld a,'1'
5143 jr outchar1
5144 l1d8dh:
5145 ld a,'2'
5146 jr outchar1
5147
5148 p_A_comma:
5149 call p_char_A
5150 p_char_comma:
5151 ld a,','
5152 outchar1:
5153 jp outchar
5154
5155 l1d92h:
5156 ld hl,b_1da7_start
5157 jr l1da4h
5158 l1d97h:
5159 ld hl,l1daah
5160 jr l1da4h
5161 l1d9ch:
5162 ld hl,l1dadh
5163 jr l1da4h
5164 l1da1h:
5165 ld hl,l1db0h
5166 l1da4h:
5167 jp pstr
5168
5169 b_1da7_start:
5170 DC 'I,A'
5171 l1daah:
5172 DC 'A,I'
5173 l1dadh:
5174 DC 'R,A'
5175 l1db0h:
5176 DC 'A,R'
5177
5178 p_arg_in_c:
5179 call p_arg_r
5180 call p_char_comma
5181 ld hl,t__C_
5182 jp pstr
5183
5184 p_arg_out_c:
5185 ld hl,t__C_
5186 call pstr
5187 call p_char_comma
5188 jr p_arg_r
5189
5190 l1dcah:
5191 call p_arg_hlixiy
5192 call p_char_comma
5193 jp p_arg_ww
5194
5195 p_arg_addr_ww:
5196 call sub_1e13h
5197 call p_char_comma
5198 jp p_arg_ww
5199
5200 p_arg_ww_addr:
5201 call p_arg_ww
5202 call p_char_comma
5203 jr sub_1e13h
5204
5205 p_arg_bitop:
5206 ld a,(isprefix_ixiy)
5207 and a
5208 jr nz,l1defh
5209 ld a,(iy+001h)
5210 jr l1df2h
5211 l1defh:
5212 ld a,(iy+002h)
5213 l1df2h:
5214 push af
5215 rra
5216 rra
5217 rra
5218 and 007h
5219 add a,'0'
5220 call outchar
5221 call p_char_comma
5222 pop af
5223 jr p_arg_r0
5224
5225 l1e03h:
5226 ld a,(isprefix_ixiy)
5227 and a
5228 jr nz,l1e0eh
5229 ld a,(iy+001h)
5230 jr l1e11h
5231 l1e0eh:
5232 ld a,(iy+002h)
5233 l1e11h:
5234 jr p_arg_r0
5235
5236 sub_1e13h:
5237 call p_char_lparen
5238 ld l,(iy+001h)
5239 ld h,(iy+002h)
5240 ld a,001h
5241 call sub_1d50h
5242
5243 p_char_rparen:
5244 ld a,')'
5245 jp outchar
5246
5247 p_arg_r:
5248 ld a,(iy+000h)
5249 rra
5250 rra
5251 rra
5252 jr p_arg_r0
5253 p_arg_rs:
5254 ld a,(iy+000h)
5255 p_arg_r0:
5256 and 007h
5257 cp 006h
5258 jr nz,p_arg_r1
5259 ld a,(isprefix_ixiy)
5260 and a
5261 ld a,006h
5262 jr z,p_arg_r1
5263 ld hl,b_1e78_start
5264 ld a,(isprefix_ixiy)
5265 dec a
5266 jr z,l1e4dh
5267 ld hl,l1e7bh
5268 l1e4dh:
5269 call pstr
5270 ld a,(iy+001h)
5271 and a
5272 jp m,l1e61h
5273 ld a,'+'
5274 call outchar
5275 ld a,(iy+001h)
5276 jr l1e6bh
5277 l1e61h:
5278 ld a,'-'
5279 call outchar
5280 ld a,(iy+001h)
5281 neg
5282 l1e6bh:
5283 call out_hex
5284 jr p_char_rparen
5285
5286 p_arg_r1:
5287 ld hl,t_BCDEHL_HL_A
5288 jr p_arg
5289
5290 b_1e78_start:
5291 DC '(IX'
5292 l1e7bh:
5293 DC '(IY'
5294
5295 p_arg_hlixiy:
5296 ld a,(isprefix_ixiy)
5297 ld hl,t_HL.IX.IY
5298 jr p_arg
5299 p_arg_zz:
5300 ld hl,t_BC.DE.HL.AF
5301 jr l1e8eh
5302 p_arg_ww:
5303 ld hl,t_BC.DE.HL.SP
5304 l1e8eh:
5305 ld a,(iy+000h)
5306 rra
5307 rra
5308 rra
5309 rra
5310 and 003h
5311 cp 002h
5312 jr z,p_arg_hlixiy
5313 jr p_arg
5314
5315 p_arg_cc:
5316 ld a,(iy+000h)
5317 p_arg_cc0:
5318 rra
5319 rra
5320 rra
5321 and 007h
5322 ld hl,t_tstfl_ZCPS
5323 p_arg:
5324 ld b,a
5325 call sel_dc_string
5326 jp pstr
5327
5328 p_mnemonic:
5329 call pstr
5330 l1ebch:
5331 call outbl
5332 inc c
5333 ld a,c
5334 cp 5
5335 jr c,l1ebch
5336 ret
5337
5338 t_MNEMONICS:
5339 DC 'ADC'
5340 DC 'ADD'
5341 DC 'AND'
5342 DC 'BIT'
5343 DC 'CALL'
5344 DC 'CCF'
5345 DC 'CP'
5346 DC 'CPD'
5347 DC 'CPDR'
5348 DC 'CPI'
5349 DC 'CPIR'
5350 DC 'CPL'
5351 DC 'DAA'
5352 DC 'DEC'
5353 DC 'DI'
5354 DC 'DJNZ'
5355 DC 'EI'
5356 DC 'EX'
5357 DC 'EXX'
5358 DC 'HALT'
5359 DC 'IM'
5360 DC 'IN'
5361 DC 'INC'
5362 DC 'IND'
5363 DC 'INDR'
5364 DC 'INI'
5365 DC 'INIR'
5366 DC 'JP'
5367 DC 'JR'
5368 DC 'LD'
5369 DC 'LDD'
5370 DC 'LDDR'
5371 DC 'LDI'
5372 DC 'LDIR'
5373 DC 'NEG'
5374 DC 'NOP'
5375 DC 'OR'
5376 DC 'OTDR'
5377 DC 'OTIR'
5378 DC 'OUT'
5379 DC 'OUTD'
5380 DC 'OUTI'
5381 DC 'POP'
5382 DC 'PUSH'
5383 DC 'RES'
5384 DC 'RET'
5385 DC 'RETI'
5386 DC 'RETN'
5387 DC 'RL'
5388 DC 'RLA'
5389 DC 'RLC'
5390 DC 'RLCA'
5391 DC 'RLD'
5392 DC 'RR'
5393 DC 'RRA'
5394 DC 'RRC'
5395 DC 'RRCA'
5396 DC 'RRD'
5397 DC 'RST'
5398 DC 'SBC'
5399 DC 'SCF'
5400 DC 'SET'
5401 DC 'SLA'
5402 DC 'SRA'
5403 DC 'SRL'
5404 DC 'SUB'
5405 DC 'XOR'
5406 DC 'IN0'
5407 DC 'MLT'
5408 DC 'OTDM'
5409 DC 'OTDMR'
5410 DC 'OTIM'
5411 DC 'OTIMR'
5412 DC 'OUT0'
5413 DC 'SLP'
5414 DC 'TST'
5415 DC 'TSTIO'
5416 DB 0
5417
5418 t_BCDEHL_HL_A:
5419 DC 'B'
5420 DC 'C'
5421 DC 'D'
5422 DC 'E'
5423 DC 'H'
5424 DC 'L'
5425 DC '(HL)'
5426 DC 'A'
5427 DB 0
5428 t_BC.DE.HL.SP:
5429 DC 'BC'
5430 DC 'DE'
5431 DC 'HL'
5432 DC 'SP'
5433 DB 0
5434 t_BC.DE.HL.AF:
5435 DC 'BC'
5436 DC 'DE'
5437 t_HL.AF:
5438 DC 'HL'
5439 DC 'AF'
5440 DB 0
5441 t_BC.DE.IY.SP:
5442 DC 'BC'
5443 DC 'DE'
5444 DC 'IY'
5445 DC 'SP'
5446 DB 0
5447 t_BC.DE.IX.SP:
5448 DC 'BC'
5449 DC 'DE'
5450 DC 'IX'
5451 DC 'SP'
5452 DB 0
5453 t_HL.IX.IY:
5454 DC 'HL'
5455 t_IX.IY:
5456 DC 'IX'
5457 DC 'IY'
5458 DB 0
5459 t_tstfl_ZC:
5460 DC 'NZ'
5461 DC 'Z'
5462 DC 'NC'
5463 DC 'C'
5464 DC 'NE'
5465 DC 'EQ'
5466 DC 'GE'
5467 DC 'LT'
5468 DB 0
5469 t_tstfl_ZCPS:
5470 DC 'NZ'
5471 DC 'Z'
5472 DC 'NC'
5473 DC 'C'
5474 DC 'PO'
5475 DC 'PE'
5476 DC 'P'
5477 DC 'M'
5478 DC 'NE'
5479 DC 'EQ'
5480 DC 'GE'
5481 DC 'LT'
5482 DC 'NV'
5483 DC 'V'
5484 DB 0
5485 t__C_:
5486 DC '(C)'
5487 DB 0
5488
5489 sub_1ffeh:
5490 ld hl,(reg.pc)
5491 ld a,h
5492 or l
5493 jr z,l2037h
5494 ld de,BDOS
5495 and a
5496 sbc hl,de
5497 ld hl,l20edh
5498 jr z,l2031h
5499 ld iy,(reg.pc)
5500 call disas_get_instrlen
5501 jp nc,ERROR
5502 ld c,b
5503 ld b,000h
5504 ld hl,(reg.pc)
5505 add hl,bc
5506 call sub_09cah
5507 ld iy,(reg.pc)
5508 ld hl,b_2039_start
5509 call lookup_opc
5510 ccf
5511 ret c
5512 ex de,hl
5513 l2031h:
5514 call CALL_HL
5515 call c,sub_09cah
5516 l2037h:
5517 scf
5518 ret
5519
5520 b_2039_start:
5521 db 0ffh,0ddh,000h ;Prefix DD
5522 dw l20a7h
5523 db 0ffh,0fdh,000h ;Prefix FD
5524 dw l20ach
5525 db 0ffh,0edh,000h ;Prefix ED
5526 dw l20b8h
5527
5528 b_2048_start:
5529 db 0ffh,0cdh,000h ;call mn
5530 dw l2080h
5531 db 0ffh,0c3h,000h ;jp mn
5532 dw l208bh
5533 db 0ffh,0e9h,000h ;jp ()
5534 dw l20a2h
5535 db 0ffh,0c9h,000h ;ret
5536 dw l20dch
5537 db 0ffh,0cfh,000h ;rst 8
5538 dw l2115h
5539 db 0c7h,0c7h,000h ;
5540 dw l20f9h
5541 db 0c7h,0c4h,000h ;
5542 dw l2080h
5543 db 0f7h,010h,000h ;
5544 dw l2093h
5545 db 0e7h,020h,000h ;
5546 dw l2093h
5547 db 0c7h,0c2h,000h ;
5548 dw l208bh
5549 db 0c7h,0c0h,000h ;
5550 dw l20c5h
5551 db 0
5552
5553 l2080h:
5554 ld a,(b_21e2_start)
5555 and a
5556 jr nz,l208bh
5557 ld a,(trace_call_flag)
5558 and a
5559 ret nz
5560 l208bh:
5561 ld l,(iy+001h)
5562 ld h,(iy+002h)
5563 scf
5564 ret
5565 l2093h:
5566 ld c,(iy+001h)
5567 ld a,c
5568 rla
5569 sbc a,a
5570 ld b,a
5571 ld hl,(reg.pc)
5572 add hl,bc
5573 inc hl
5574 inc hl
5575 scf
5576 ret
5577 l20a2h:
5578 ld hl,(reg.l)
5579 scf
5580 ret
5581 l20a7h:
5582 ld hl,(reg.ix)
5583 jr l20afh
5584 l20ach:
5585 ld hl,(reg.iy)
5586 l20afh:
5587 ld a,(iy+001h)
5588 cp 0e9h
5589 scf
5590 ret z
5591 and a
5592 ret
5593 l20b8h:
5594 ld a,(iy+001h)
5595 cp 04dh
5596 jr z,l20dch
5597 cp 045h
5598 jr z,l20dch
5599 and a
5600 ret
5601 l20c5h:
5602 ld a,(iy+000h)
5603 ld (l20d7h),a
5604 ld hl,(reg.f)
5605 push hl
5606 pop af
5607 call l20d7h
5608 scf
5609 jr c,l20dch
5610 ret
5611 l20d7h:
5612 nop
5613 and a
5614 pop hl
5615 inc hl
5616 jp (hl)
5617
5618 l20dch:
5619 ld a,(b_21e2_start)
5620 and a
5621 jr nz,l20edh
5622 ld a,(trace_call_flag)
5623 and a
5624 jr z,l20edh
5625 call l20edh
5626 pop hl
5627 ret
5628 l20edh:
5629 ld hl,(reg_sp)
5630 ld e,(hl)
5631 inc hl
5632 ld d,(hl)
5633 ex de,hl
5634 call sub_09cah
5635 and a
5636 ret
5637
5638 l20f9h:
5639 ld a,(l0003h)
5640 cp (iy+000h)
5641 ret z
5642 ld a,(iy+000h)
5643 and 038h
5644 ld l,a
5645 ld h,000h
5646 ld a,(b_21e2_start)
5647 and a
5648 jr nz,l2113h
5649 ld a,(trace_call_flag)
5650 and a
5651 ret nz
5652 l2113h:
5653 scf
5654 ret
5655 l2115h:
5656 and a
5657 ret
5658 cmd_C:
5659 ld hl,cmd_C
5660 ld a,001h
5661 jr l2122h
5662 cmd_T:
5663 xor a
5664 ld hl,cmd_T
5665 l2122h:
5666 ld (cmd_rpt),hl
5667 ld (trace_call_flag),a
5668 ld a,(de)
5669 sub 'N'
5670 jr nz,l212eh
5671 inc de
5672 l212eh:
5673 ld (trace_N_flag),a
5674 ld a,(de)
5675 sub 'J'
5676 jr nz,l2137h
5677 inc de
5678 l2137h:
5679 ld (trace_J_flag),a
5680 call sub_21a6h
5681 jr z,l2145h
5682 ld hl,1
5683 call get_lastarg_def
5684 l2145h:
5685 ld (trace_count),hl
5686 sub a
5687 ld (l0941h),a
5688 l214ch:
5689 call sub_1ffeh
5690 jr l21a3h
5691
5692 l2151h:
5693 call bp_clr_temporary
5694 ld a,(trace_J_flag)
5695 and a
5696 jr nz,l216bh
5697 ld iy,(reg.pc)
5698 call sub_21c8h
5699 jr z,l216bh
5700 ld hl,b_2048_start
5701 call lookup_opc
5702 jr nc,l214ch
5703 l216bh:
5704 ld a,(trace_UW_flag)
5705 and a
5706 jr z,l2188h
5707 ld de,(trace_count)
5708 call expr
5709 ld a,h
5710 or l
5711 add a,0ffh
5712 sbc a,a
5713 ld hl,trace_UW_flag
5714 xor (hl)
5715 bit 1,a
5716 jr z,l2193h
5717 l2185h:
5718 jp l0902h
5719 l2188h:
5720 ld hl,(trace_count)
5721 dec hl
5722 ld (trace_count),hl
5723 ld a,h
5724 or l
5725 jr z,l2185h
5726 l2193h:
5727 call sub_1ffeh
5728 jr nc,l2185h
5729 ld a,(trace_N_flag)
5730 ld b,a
5731 ld a,(l0941h)
5732 or b
5733 ld (l0941h),a
5734 l21a3h:
5735 jp user_go
5736
5737 sub_21a6h:
5738 call skipbl
5739 xor a
5740 ld (trace_UW_flag),a
5741 ld a,(de)
5742 cp 'U'
5743 jr z,l21b5h
5744 cp 'W'
5745 ret nz
5746 l21b5h:
5747 inc de
5748 push af
5749 push de
5750 call expr
5751 jp c,ERROR
5752 call assert_eol
5753 pop hl
5754 pop af
5755 ld (trace_UW_flag),a
5756 sub a
5757 ret
5758
5759 sub_21c8h:
5760 ld a,(iy+000h)
5761 cp 0edh
5762 jr z,l21dah
5763 and 0dfh
5764 cp 0ddh
5765 ret nz
5766 ld a,(iy+001h)
5767 cp 0e9h
5768 ret
5769 l21dah:
5770 ld a,(iy+001h)
5771 and 0f7h
5772 cp 045h
5773 ret
5774
5775 b_21e2_start:
5776 db 0
5777 trace_call_flag:
5778 db 0 ;1=call, 0=trace
5779 trace_UW_flag:
5780 db 0 ;0 or 'U' or 'W'
5781 trace_count:
5782 dw 0
5783 trace_N_flag:
5784 db 0 ;0 if 'N'
5785 trace_J_flag:
5786 db 0 ;0 if 'J'
5787
5788 ;-------------------------------------------------------------------------------
5789
5790 con_col:
5791 db 0
5792
5793 l0941h:
5794 db 0
5795
5796 bp_tab:
5797 rept BP_CNT
5798 rept BP_SIZE
5799 db 0
5800 endm
5801 endm
5802
5803 expr_p1:
5804 dw expr_buf
5805 expr_p2:
5806 dw expr_buf
5807
5808 expr_buf:
5809 current_cseg defl $ - current_cseg
5810 .phase current_phase + current_cseg
5811
5812 start:
5813 LD SP,ldr_end+(stack-ddtz_base)
5814 LD DE,signon ;ldr_end+(expr_buf-ddtz_base)
5815 LD C,BDOS_PSTR
5816 CALL BDOS
5817
5818 xor a
5819 dec a
5820 jp po,reloc
5821 ld de,msgz80
5822 LD C,BDOS_PSTR
5823 CALL BDOS
5824 jp 0
5825
5826 reloc:
5827 LD HL,ldr_end+ddtz_size ;start of reloc bitmap
5828 ld bc,0108h ;init bit counter
5829
5830 EXX
5831 LD HL,(BDOS+1)
5832 LD (ldr_end+(ddtz_bdos+1-ddtz_base)),HL
5833 LD BC,ddtz_size-1
5834 LD D,B
5835 LD E,0FFH
5836 INC DE ;size rounded up to next page boundary
5837 INC BC ;ddtz_size
5838 OR A
5839 SBC HL,DE ;BDOS - size
5840 LD (BDOS+1),HL ;-> new BDOS entry
5841
5842 push hl
5843 PUSH BC
5844 ld de,ldr_end
5845 sbc hl,de
5846 EX DE,HL ;-> DE
5847 LD HL,ldr_size
5848 add hl,bc
5849 ld b,h
5850 ld c,l
5851 LD HL,TPA
5852 reloc_lp:
5853 EXX
5854 djnz reloc_nl
5855 ld b,c ;reload bit counter
5856 LD e,(HL) ;get next 8 relocation bits
5857 INC HL
5858 reloc_nl:
5859 sla e
5860 EXX
5861 JR NC,reloc_next
5862 DEC HL
5863 LD A,(HL)
5864 ADD A,E
5865 LD (HL),A
5866 INC HL
5867 LD A,(HL)
5868 ADC A,D
5869 LD (HL),A
5870 reloc_next:
5871 cpi
5872 jp pe,reloc_lp
5873 dec hl
5874
5875 POP BC
5876 pop de
5877 EX DE,HL
5878 ADD HL,BC
5879 EX DE,HL
5880 DEC DE
5881 LDDR
5882 LD HL,conbuf+2-ddtz_base
5883 ADD HL,DE
5884 JP (HL)
5885
5886 current_phase defl $
5887 .dephase
5888 current_cseg defl $
5889
5890 ds EXPR_BUF_SIZE - ($ - expr_buf)
5891 expr_bufe:
5892
5893 msg_Y:
5894 dc 'Yn'
5895 reg_Y:
5896 rept YREG_CNT
5897 dw 0
5898 endm
5899
5900 last_S:
5901 dw TPA
5902
5903 last_I:
5904 dw 0
5905
5906 last_O_addr:
5907 dw 0
5908 last_O_val:
5909 db 0
5910
5911 cmd_Q_jopt:
5912 db -1
5913
5914 last_D:
5915 dw TPA
5916
5917 cmdR_rindex:
5918 db 0
5919
5920 high_load:
5921 dw TPA
5922 max_load:
5923 dw TPA
5924
5925 l1262h:
5926 dw 0
5927 last_A:
5928 dw TPA
5929 cmd_A_prev:
5930 dw TPA
5931
5932 prefix_ixiy:
5933 db 0
5934
5935 isprefix_ixiy:
5936 db 0
5937 last_L:
5938 dw TPA
5939 l1ffbh:
5940 dw 0
5941 l1ffdh:
5942 db 0
5943
5944 symlen_max: ;max length of symbols read so far
5945 db 0
5946 cur_fcb:
5947 dw 0
5948 fcbsym:
5949 ds 33
5950
5951 ddtz_size equ $-ddtz_base
5952 ddtz_end:
5953
5954 ;-------------------------------------------------------------------------------
5955
5956 end