123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- .define .dvu2
- .sect .text
- .sect .rom
- .sect .data
- .sect .bss
- .sect .text
- ! 16-bit divide
- ! parameters:
- ! bc: divisor
- ! de: dividend
- ! de: quotient (out)
- ! hl: remainder (out)
- ! no overflow detection
- .dvu2:
- or a
- ld h,d
- ld l,e
- sbc hl,bc
- jp m,3f
- jp c,3f ! bc > de?
- ld hl,0
- ld a,16
- 0:
- add hl,hl
- ex de,hl
- add hl,hl
- ex de,hl
- jr nc,1f
- inc hl
- or a
- 1:
- sbc hl,bc
- inc de
- jp p,2f
- add hl,bc
- dec de
- 2:
- dec a
- jr nz,0b
- ret
- 3:
- ld hl,0
- ex de,hl
- ret
|