summaryrefslogtreecommitdiff
path: root/ddt180.z80
diff options
context:
space:
mode:
Diffstat (limited to 'ddt180.z80')
-rw-r--r--ddt180.z8051
1 files 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: