Changes
the new fast division added
</pre>
== Fast 32bit division ==
'''Input:''' HL,DE=Value1, BC=Value2
'''Output:''' BCDE=Value1/Value2, HL=Value1 MOD Value2
'''Destroyed:''' AF
'''Not used:''' IX, IY
<pre>
div macro
local t1,t2
ADD HL, HL
EX DE, HL
ADD HL, HL
EX DE, HL
JP NC, t1
INC HL
t1
LD A, L
ADD A, C
LD A, H
ADC A, B
JP NC, t2
ADD HL, BC
INC DE
t2
endm
div32x16 proc ; BCDE = HLDE/BC, HL = HLDE%BC
local t1, DIV32_, DIV320
DEC BC
LD A, B
CPL
LD B, A
LD A, C
CPL
LD C, A
ADD A, L
LD A, B
ADC A, H
JP NC, DIV32_
PUSH DE
EX DE, HL
LD HL, 0000
CALL DIV320
EX DE, HL
EX (SP), HL
EX DE, HL
CALL DIV320
POP BC
RET
DIV32_
CALL DIV320
LD BC, 0000
RET
DIV320 ; DE = HLDE/(-BC), HL = HLDE%(-BC)
CALL t1
t1
rept 8
div
endm
RET
endp
</pre>
== Web links ==