Changes

Programming:Fast Square Root

913 bytes added, 22:34, 4 August 2006
Initial page
'''Input:''' A = ''The number you want to find the square root of''

'''Output:''' A = ''Square root of the number supplied in A''

'''Destroys:''' A,B,DE

'''Call:''' CALL SqrtA

<pre>
;this routine written 10 - 28 - 2003
;ported from the 68k version (by Frank Yaul) by konrad meyer
;this routine is not as memory efficient as it could be; this is
;done to save cycles

;note: this routine is using the fastest available method
;and will come within 1 below the #
;note: this routine is inaccurate in #s below 4

SqrtA:
LD (Asqr),A
SRL A
JR DataOver
Asqr:
.DB 0
Bsqr:
.DB 0
Csqr:
.DB 0
DataOver:
LD (Bsqr),A
LD B,A
LD (Csqr),A
iterate:
LD A,(Asqr)
LD B,(Bsqr)
LD D,A
LD E,B
divideDbyEreturnA:
RL D
RLA
SUB E
JR nc,$+3
ADD A,E
LD E,A
LD A,D
CPL
LD B,(Bsqr)
ADD A,B
SRL A
LD (Bsqr),A
LD A,(Csqr)
DEC A
LD B,(Bsqr)
CP B
JR z,done
LD (Csqr),B
JR iterate
done:
LD A,(Bsqr)
RET
</pre>
1,165
edits