Add original unix v6
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
ldfps = 170100^tst
|
||||
stfps = 170200^tst
|
||||
/
|
||||
/ sqrt replaces the f.p. number in fr0 by its
|
||||
/ square root. newton's method
|
||||
/
|
||||
.globl sqrt, _sqrt
|
||||
/
|
||||
/
|
||||
_sqrt:
|
||||
mov r5,-(sp)
|
||||
mov sp,r5
|
||||
movf 4(r5),fr0
|
||||
jsr pc,sqrt
|
||||
mov (sp)+,r5
|
||||
rts pc
|
||||
|
||||
sqrt:
|
||||
tstf fr0
|
||||
cfcc
|
||||
bne 1f
|
||||
clc
|
||||
rts pc /sqrt(0)
|
||||
1:
|
||||
bgt 1f
|
||||
clrf fr0
|
||||
sec
|
||||
rts pc / sqrt(-a)
|
||||
1:
|
||||
mov r0,-(sp)
|
||||
stfps -(sp)
|
||||
mov (sp),r0
|
||||
bic $!200,r0 / retain mode
|
||||
ldfps r0
|
||||
movf fr1,-(sp)
|
||||
movf fr2,-(sp)
|
||||
/
|
||||
movf fr0,fr1
|
||||
movf fr0,-(sp)
|
||||
asr (sp)
|
||||
add $20100,(sp)
|
||||
movf (sp)+,fr0 /initial guess
|
||||
mov $4,r0
|
||||
1:
|
||||
movf fr1,fr2
|
||||
divf fr0,fr2
|
||||
addf fr2,fr0
|
||||
mulf $half,fr0 / x = (x+a/x)/2
|
||||
sob r0,1b
|
||||
2:
|
||||
movf (sp)+,fr2
|
||||
movf (sp)+,fr1
|
||||
ldfps (sp)+
|
||||
mov (sp)+,r0
|
||||
clc
|
||||
rts pc
|
||||
/
|
||||
half = 40000
|
||||
Reference in New Issue
Block a user