diff options
author | Leo C | 2018-11-29 20:10:02 +0100 |
---|---|---|
committer | Leo C | 2018-11-29 20:10:02 +0100 |
commit | f33961b549672c23d768bdfe2c2880db9a58ff6e (patch) | |
tree | 24cdc682b32a8cab102a36cd29fa69e3bd2a0a4f | |
parent | 81c1eadbced80bf070a9828ae70e818a8de7cd22 (diff) | |
download | ddt180-f33961b549672c23d768bdfe2c2880db9a58ff6e.zip |
Improved div_hl_de
-rw-r--r-- | ddt180.z80 | 51 |
1 files changed, 22 insertions, 29 deletions
@@ -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:
|