[A83] Re: help for a routine - ASM Multiplying and dividing shortcut


[Prev][Next][Index][Thread]

[A83] Re: help for a routine - ASM Multiplying and dividing shortcut




> I think I'll use divHLbyA for the moment, but i'm sure 
finding the 
> ratio of two numbers ( a fortiori with a precision of 2 
units) can be 
> done with a trick....
> 
And the trick is called division. :) DivHLbyA is really the 
best of the compact solutions. If you need more speed but 
don't want to use tables, you can still unroll it:

; this routine does HL=HL/D
; D must be less than 128, otherwise the result might be 
incorrect

#define DIVMACRO add hl,hl \ rla \ cp d \ jp c,$+5 \ sub d 
\ inc l

DivHLbyD:
 xor a
 DIVMACRO \ DIVMACRO \ DIVMACRO \ DIVMACRO
 DIVMACRO \ DIVMACRO \ DIVMACRO \ DIVMACRO
 DIVMACRO \ DIVMACRO \ DIVMACRO \ DIVMACRO
 DIVMACRO \ DIVMACRO \ DIVMACRO
 add hl,hl
 rla
 cp d
 ret c
 inc l
 ret

I hope I didn't screw up... It's a bit long, but it does 
the job.

PG





References: