X-Git-Url: http://cloudbase.mooo.com/gitweb/z180-stamp.git/blobdiff_plain/4caee1ec599c6d78f5234b218e2ccf5e23eb4bf0..8506d791786eea8ee55db5418a8f646bb2dd3a6d:/z180/ddtz.180?ds=sidebyside diff --git a/z180/ddtz.180 b/z180/ddtz.180 index 77da910..10fecf8 100644 --- a/z180/ddtz.180 +++ b/z180/ddtz.180 @@ -1,7 +1,7 @@ page 255 .z80 - external $ci, $co, $cists + extrn ?const,?conin,?cono global ddtz,bpent global $stack @@ -27,7 +27,7 @@ BP_CNT equ 12 ;number of breakbpoints ;-------------------------------------------------- -; +; ; copy code to common memory and execute it there comst macro @@ -103,17 +103,17 @@ ddtz: ld hl,sysramc ld de,topcodbeg ld bc,topcodend-topcodbeg - ldir - + ldir + ld hl,vartab ld de,ddtram ld bc,vartabe-vartab - ldir + ldir exx ld a,e ld (ubbr),a - + ddtz_w: ld hl,MSG ;073c call PSTR ;073f @@ -203,203 +203,227 @@ CMD.?: call PSTR ret +$ci: + push hl + push de + push bc + call ?conin + pop bc + pop de + pop hl + ret + +$co: + push hl + push de + push bc + ld c,a + call ?cono + pop bc + pop de + pop hl + ret + DELC: - ld a,b ;07f2 - or a ;07f3 - ret z ;07f4 - ld a,BS ;07f5 - call $co ;07f7 - ld a,' ' ;07fa - call $co ;07fc - ld a,BS ;07ff - call $co ;0801 - dec hl ;0804 - dec b ;0805 - inc c ;0806 - ld a,(hl) ;0807 - cp ' ' ;0808 - ret nc ;080a - ld a,BS ;080b - call $co ;080d - ld a,' ' ;0810 - call $co ;0812 - ld a,BS ;0815 - call $co ;0817 - ret ;081a + ld a,b + or a + ret z + call DELC1 + dec hl + dec b + inc c + ld a,(hl) + cp ' ' + ret nc +DELC1: + push de + push hl + push bc + ld c,BS + call ?cono + ld c,' ' + call ?cono + ld c,BS + call ?cono + pop bc + pop hl + pop de + ret + DELL: - ld a,b ;081b - or a ;081c - ret z ;081d - call DELC ;081e - jr DELL ;0821 + ld a,b ; + or a ; + ret z ; + call DELC ; + jr DELL ; INLINE: - push hl ;0823 - ld hl,CI.BUF ;0824 - ld c,(hl) ;0827 - inc hl ;0828 - ld b,000h ;0829 - inc hl ;082b + push hl ; + ld hl,CI.BUF ; + ld c,(hl) ; + inc hl ; + ld b,000h ; + inc hl ; inlnxtch: - ld a,c ;082c - or a ;082d - jr z,inl_e ;082e - call $ci ;0830 - cp CR ;0833 - jr z,inl_e ;0835 - cp LF ;0837 - jr z,inl_e ;0839 - cp BS ;083b - jr nz,l0844h ;083d - call DELC ;083f - jr inlnxtch ;0842 + ld a,c ; + or a ; + jr z,inl_e ; + call $ci ; + cp CR ; + jr z,inl_e ;Accept line + cp LF ; + jr z,inl_e ;Accept line + cp BS ; + jr nz,l0844h ; + call DELC ;Delete Char + jr inlnxtch ; l0844h: - cp DEL ;0844 - jr nz,l084dh ;0846 - call DELC ;0848 - jr inlnxtch ;084b + cp DEL ; + jr nz,l084dh ; + call DELC ;Delete Char + jr inlnxtch ; l084dh: - cp CNTRX ;084d - jr nz,l0856h ;084f - call DELL ;0851 - jr inlnxtch ;0854 + cp CNTRX ; + jr nz,l0856h ; + call DELL ;Delete Line + jr inlnxtch ; l0856h: - cp TAB ;0856 - jr nz,l085ch ;0858 - ld a,' ' ;085a + cp TAB ; + jr nz,l085ch ; + ld a,' ' ; l085ch: - ld (hl),a ;085c - cp ' ' ;085d - jr nc,l0869h ;085f - ld a,'^' ;0861 - call $co ;0863 - ld a,(hl) ;0866 - add a,'@' ;0867 + ld (hl),a ; + cp ' ' ; + jr nc,l0869h ; + ld a,'^' ;Controle characters + call $co ; + ld a,(hl) ; + add a,'@' ; l0869h: - call $co ;0869 - inc hl ;086c - inc b ;086d - dec c ;086e - jr inlnxtch ;086f + call $co ; + inc hl ; + inc b ; + dec c ; + jr inlnxtch ; inl_e: - ld hl,ci.buf+1 ;0871 - ld (hl),b ;0874 - call CRLF ;0875 - ld de,ci.buf+1 ;0878 - ld a,(de) ;087b - ld b,a ;087c - ld c,000h ;087d - inc b ;087f + ld hl,ci.buf+1 ; + ld (hl),b ; + call CRLF ; + ld de,ci.buf+1 ; + ld a,(de) ; + ld b,a ; + ld c,000h ; + inc b ; l0880h: - inc de ;0880 - dec b ;0881 - jr z,l08b2h ;0882 - ld a,(de) ;0884 - bit 0,c ;0885 - call z,UPCASE ;0887 - ld (de),a ;088a - cp '''' ;088b - jr nz,l0880h ;088d - push de ;088f - dec de ;0890 - ld a,(de) ;0891 - cp '''' ;0892 - jr z,l08aeh ;0894 - dec de ;0896 - ld a,(de) ;0897 - cp '^' ;0898 - jr z,l08a2h ;089a - dec de ;089c - ld a,(de) ;089d - cp '^' ;089e - jr nz,l08aeh ;08a0 + inc de ; + dec b ; + jr z,l08b2h ; + ld a,(de) ; + bit 0,c ; + call z,UPCASE ; + ld (de),a ; + cp '''' ; + jr nz,l0880h ; + push de ; + dec de ; + ld a,(de) ; + cp '''' ; + jr z,l08aeh ; + dec de ; + ld a,(de) ; + cp '^' ; + jr z,l08a2h ; + dec de ; + ld a,(de) ; + cp '^' ; + jr nz,l08aeh ; l08a2h: - inc de ;08a2 - push bc ;08a3 - call sub_0a0eh ;08a4 - pop bc ;08a7 - dec de ;08a8 - ld a,(de) ;08a9 - cp '''' ;08aa - jr z,l08afh ;08ac + inc de ; + push bc ; + call sub_0a0eh ; + pop bc ; + dec de ; + ld a,(de) ; + cp '''' ; + jr z,l08afh ; l08aeh: - inc c ;08ae + inc c ; l08afh: - pop de ;08af - jr l0880h ;08b0 + pop de ; + jr l0880h ; l08b2h: - xor a ;08b2 - ld (de),a ;08b3 - ld de,ci.buf+2 ;08b4 - pop hl ;08b7 - ret ;08b8 + xor a ; + ld (de),a ; + ld de,ci.buf+2 ; + pop hl ; + ret ; UPCASE: - cp 'a' ;08b9 - ret c ;08bb - cp 'z'+1 ;08bc - ret nc ;08be - and 05fh ;08bf - ret ;08c1 + cp 'a' ; + ret c ; + cp 'z'+1 ; + ret nc ; + and 05fh ; + ret ; out.hl.@: - call out.hl ;08c2 - push de ;08c5 - push hl ;08c6 - ld de,(offs.@) ;08c7 - ld a,d ;08cb - or e ;08cc - jr z,l08ddh ;08cd - call OUTBL ;08cf - ld a,'@' ;08d2 - call OUTCHAR ;08d4 - and a ;08d7 - sbc hl,de ;08d8 - call out.hl ;08da + call out.hl ; + push de ; + push hl ; + ld de,(offs.@) ; + ld a,d ; + or e ; + jr z,l08ddh ; + call OUTBL ; + ld a,'@' ; + call OUTCHAR ; + and a ; + sbc hl,de ; + call out.hl ; l08ddh: - pop hl ;08dd - pop de ;08de - ret ;08df + pop hl ; + pop de ; + ret ; out.bin.w: - ld a,h ;08e0 - call out.bin.b ;08e1 - ld a,l ;08e4 + ld a,h ; + call out.bin.b ; + ld a,l ; out.bin.b: - ld b,008h ;08e5 + ld b,008h ; l08e7h: - add a,a ;08e7 - push af ;08e8 - ld a,0 ;08e9 - adc a,a ;08eb - call out.digit ;08ec - pop af ;08ef - djnz l08e7h ;08f0 - ld a,'"' ;08f2 - jp OUTCHAR ;08f4 + add a,a ; + push af ; + ld a,0 ; + adc a,a ; + call out.digit ; + pop af ; + djnz l08e7h ; + ld a,'"' ; + jp OUTCHAR ; sub_08f7h: - ld a,'-' ;08f7 - call OUTCHAR ;08f9 - dec hl ;08fc - jp cpl.hl ;08fd + ld a,'-' ; + call OUTCHAR ; + dec hl ; + jp cpl.hl ; out.hl.decm: - push hl ;0900 - call sub_08f7h ;0901 - db 3eh ;0904 ld a,0E5h + push hl ; + call sub_08f7h ; + db 3eh ; ld a,0E5h out.hl.dec: push hl - ld b,6 ;0906 - call sub_0917h ;0908 - pop hl ;090b - ld a,'.' ;090c - call OUTCHAR ;090e + ld b,6 ; + call sub_0917h ; + pop hl ; + ld a,'.' ; + call OUTCHAR ; l0911h: - call OUTBL ;0911 - djnz l0911h ;0914 - ret ;0916 + call OUTBL ; + djnz l0911h ; + ret ; sub_0917h: @@ -472,22 +496,34 @@ l0960h: outquote: ld a,'''' ;0979 OUTCHAR: - push hl ;097b - push af ;097c - and 07fh ;097d - call $co ;097f - ld hl,CON.COL ;0982 - inc (hl) ;0985 - pop af ;0986 - pop hl ;0987 + push hl + push de + push bc + push af + and 07fh + ld c,a + call ?cono + ld hl,CON.COL + inc (hl) + pop af + pop bc + pop de + pop hl ret ;0988 inchar: - call $cists ;0989 - and a ;098c - ret z ;098d - call $ci ;098e + push hl + push de + push bc + call ?const + and a + jr z,inch1 + call ?conin scf ;0991 +inch1: + pop bc + pop de + pop hl ret ;0992 PSTR: @@ -1816,7 +1852,7 @@ l1144h: inc hl ;1176 ld a,d ;1177 comrep ;1178 - + else ld a,(ddtrst) ;115c @@ -2688,10 +2724,9 @@ l1698h: ret ;169a ; Read Intel Hex File from console. - CMD.R: ld hl,0 ;169b - call get_lastarg_def ;169e + call get_lastarg_def ;169e get offset from command line push hl ;16a1 ld hl,0 ;16a2 ld (HILOD),hl ;16a5 @@ -2713,15 +2748,15 @@ w_recstart: jr z,l16deh ;16c4 l16c6h: call i.gethexbyte ;16c6 - pop de ;16c9 + pop de ;16c9 offset push de ;16ca push hl ;16cb add hl,de ;16cc call i.storebyte ;16cd pop hl ;16d0 inc hl ;16d1 - djnz l16c6h ;16d2 - call i.gethexbyte ;16d4 + djnz l16c6h ;16d2 repeat for record len + call i.gethexbyte ;16d4 checksum ld a,c ;16d7 and a ;16d8 jp nz,ERROR ;16d9 exit if checksum error @@ -2762,10 +2797,10 @@ i.getchar: i.storebyte: push af ;1708 push de ;1709 - ld de,TPA ;170a + ld de,TPA ;170a lowest allowed load address call CP.HL.DE ;170d jp c,ERROR ;1710 - ld de,$stcka ;1713 + ld de,$stcka ;1713 highest allowed load address call CP.HL.DE ;1716 jp nc,ERROR ;1719 ld de,(HILOD) ;171c @@ -2781,7 +2816,7 @@ l1734h: pop de ;1734 pop af ;1735 comst ;1736 - ld (hl),a ;173a + ld (hl),a ;173a store byte comend ret ;173b @@ -4649,7 +4684,7 @@ b_0x2108_start: ; 1 byte opcodes defb 08bh ;2137 defw l2561h ;2138 - defb 0c7h ;213a rst + defb 0c7h ;213a rst defb 0c7h ;213b defb 0b4h ;213c defw l231eh ;213d