913 bytes added,
22:34, 4 August 2006 '''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>