;; Originally from GBDK by Pascal Felber.
.area _CODE
-__divschar::
- push bc
+__divschar_rr_s::
+ ld hl,#2+1
+ add hl,sp
+
+ ld e,(hl)
+ dec hl
+ ld l,(hl)
+
+ ;; Fall through
+__divschar_rr_hds::
ld c,l
call .div8
ld l,c
ld h,b
- pop bc
ret
-__modschar::
- push bc
+__modschar_rr_s::
+ ld hl,#2+1
+ add hl,sp
+
+ ld e,(hl)
+ dec hl
+ ld l,(hl)
+
+ ;; Fall through
+__modschar_rr_hds::
ld c,l
call .div8
ld l,e
ld h,d
- pop bc
ret
-__divsint::
- push bc
+__divsint_rr_s::
+ ld hl,#2+3
+ add hl,sp
+
+ ld d,(hl)
+ dec hl
+ ld e,(hl)
+ dec hl
+ ld a,(hl)
+ dec hl
+ ld l,(hl)
+ ld h,a
+
+ ;; Fall through
+__divsint_rr_hds::
ld b,h
ld c,l
ld l,c
ld h,b
- pop bc
ret
-__modsint::
- push bc
+__modsint_rr_s::
+ ld hl,#2+3
+ add hl,sp
+
+ ld d,(hl)
+ dec hl
+ ld e,(hl)
+ dec hl
+ ld a,(hl)
+ dec hl
+ ld l,(hl)
+ ld h,a
+
+ ;; Fall through
+__modsint_rr_hds::
ld b,h
ld c,l
ld l,e
ld h,d
- pop bc
ret
;; Unsigned
-__divuchar::
- push de
- push bc
+__divuchar_rr_s::
+ ld hl,#2+1
+ add hl,sp
+
+ ld e,(hl)
+ dec hl
+ ld l,(hl)
+
+ ;; Fall through
+__divuchar_rr_hds::
push ix
ld ix,#0
add ix,sp
ld h,b
pop ix
- pop bc
- pop de
ret
-__moduchar::
- push de
- push bc
+__moduchar_rr_s::
+ ld hl,#2+1
+ add hl,sp
+
+ ld e,(hl)
+ dec hl
+ ld l,(hl)
+
+ ;; Fall through
+__moduchar_rr_hds::
push ix
ld ix,#0
add ix,sp
ld h,d
pop ix
- pop bc
- pop de
ret
-__divuint::
- push bc
+__divuint_rr_s::
+ ld hl,#2+3
+ add hl,sp
+
+ ld d,(hl)
+ dec hl
+ ld e,(hl)
+ dec hl
+ ld a,(hl)
+ dec hl
+ ld l,(hl)
+ ld h,a
+
+ ;; Fall through
+__divuint_rr_hds::
ld b,h
ld c,l
call .divu16
ld l,c
ld h,b
- pop bc
ret
-__moduint::
- push bc
+__moduint_rr_s::
+ ld hl,#2+3
+ add hl,sp
+
+ ld d,(hl)
+ dec hl
+ ld e,(hl)
+ dec hl
+ ld a,(hl)
+ dec hl
+ ld l,(hl)
+ ld h,a
+ ;; Fall through
+
+__moduint_rr_hds::
ld b,h
ld c,l
ld l,e
ld h,d
- pop bc
ret
.div8::