From f33961b549672c23d768bdfe2c2880db9a58ff6e Mon Sep 17 00:00:00 2001 From: Leo C Date: Thu, 29 Nov 2018 20:10:02 +0100 Subject: Improved div_hl_de --- ddt180.z80 | 51 ++++++++++++++++++++++----------------------------- 1 file changed, 22 insertions(+), 29 deletions(-) diff --git a/ddt180.z80 b/ddt180.z80 index 246ff90..e624c8b 100644 --- a/ddt180.z80 +++ b/ddt180.z80 @@ -999,40 +999,33 @@ doop_mod: ; de: r (x%y) div_hl_de: - push bc - ex de,hl - ld b,h - ld c,l - ld hl,0 - ld a,16 + push bc + ex de,hl ;de: x + ld b,h ;bc: y + ld c,l + ld hl,0 ;hl: r + ld a,16 ; de: x (x shifted out, q shifted in) ; bc: y ; hl: r (initially 0) -l047eh: - push af - add hl,hl - ex de,hl - xor a - add hl,hl - ex de,hl - adc a,l - sub c - ld l,a - ld a,h - sbc a,b - ld h,a - inc de - jr nc,l048fh - add hl,bc - dec de -l048fh: - pop af - dec a - jr nz,l047eh - ex de,hl - pop bc +div_lp: + ex de,hl + add hl,hl ;x <<= 1 + ex de,hl + adc hl,hl ;r <<= 1 + inc de + or a + sbc hl,bc + jr nc,div_norestore + dec de + add hl,bc +div_norestore: + dec a + jr nz,div_lp + ex de,hl + pop bc ret doop_and: -- cgit v1.2.3