8 / VERSION 5A 4-27-77 PT
12 0 /THE MANTISSA ND EXPOENT DIDDLE AREAS.
18 13 /PHONEY EXPONENT PATCH.
37 SQRTS1, 0 /IF BETWEEN 1/4 & 1/2
44 SQRTS2, 7777 /IF BETWEEN 1/4 & 1/2
47 7777 /IF BETWEEN 1/2 & 1
60 FLDA% BPSQRT,1 /ADDR OF X
64 JEQ SQTRTN /IF =0 JUST RTN
65 JLT SQRTM1 /IF <0 THEN ERROR
66 FSTA SQRTEX+1 /SAVE NUMBER AWAY FOR A SECOND.
67 FLDA SQRT13 /GET A RIGHT ADJUSTED 13 IN THE FAC.
68 FSTA SQRTEX-2 /STORE AWAY RIGHT AHEAD OF THE EXPONENT.
69 FLDA SQRTEX /NOW RETREIVE THE EXPONENT AS HIGH ORDER WORD.
71 JEQ SQRTSC /IS IT EXACTLY ZERO? IF SO, SPECIAL CASE.
73 FSUB F1SQRT /NOW SUBTRACT ONE FROM IT.
74 FDIV F2SQRT /CHOP IT IN HALF NOW.
75 FSTA SQRT1 /AND SAVE 1/2 EXP IN A TEMP.
76 ALN 0 /NOW FIX THE EXPONENT.
77 FNORM /AND NORMALIZE IT TO REMOVE UNDESIRABLE BITS.
78 FSUB SQRT1 /NOW SUBTRACT OFF EXTRANEOUS BITS.
79 FMUL F2SQRT /EXPAND IT AGAIN [FAC =0 OR -1], OR 0 TO +1
80 JGE .+3 /MAKE SURE ITS POSITIVE.
81 FNEG /NOW MAKE IT 0 IF NO BIT OR +1 IF BIT
82 SQRTBK, ATX 1 /SAVE IN AN INDEX.
83 FSUB F1SQRT /SUBTRACT ONE TO MAKE IT -1 IF NO BIT OR 0 IF BIT.
84 ALN 0 /AND NOW SHIFT IT RIGHT.
85 FSTA SQRTEX-1 /AND SAVE IT OVER THE OLD EXPONENT.
86 FLDA SQRT1 /RECALL OLD PART
87 ALN 0 /FIX IT UP, NOW.
88 FSTA SQRT1 /AND STORE IT BACK FOR LATER USE
90 / SQRTEX IS NOW 1/4 <X< 1
92 FLDA SQRTEX+1 /RECALL NUMBER.
93 FSTA SQRT2 /SAVE IN A TEMP.
95 FMUL SQRTS1,1 /MULTIPLY BY CORRECT CONSTANT.
96 FADD SQRTS2,1 /AND NOW ADD IN CORRECT CONSTANT.
98 / NOTE: INITIAL APPROXIMATION DEPENDS ON WHETHER X IS 1/4<X<1/2 OR
101 FSTA SQRT3 /SAVE IN A SECOND TEMP.
102 FLDA SQRT2 /RECALL INITIAL.
103 FDIV SQRT3 /CALCULATE X(0)/X(1)
104 FADD SQRT3 /X(1)+X(0)/X(1)
105 FDIV F2SQRT /1/2(X(1)+X(0)/X(1))
106 FSTA SQRT3 /SAVE AGAIN. NOW X(2)
107 FLDA SQRT2 /RECALL ORIGINAL.
108 FDIV SQRT3 /X(0)/X(2)
109 FADD SQRT3 /X(2)+X(0)/X(2)
110 FSTA SQRTEX+1 /NOW STORE AWAY FOR FINAL EXPONENT DIDDLING.
114 FCLA /ZERO HIGH ORDER EXPONENT PART.
116 FLDA SQRT1 /RECALL MODIFIED EXPONENT.
117 FADDM SQRTEX /UPDATE FRACTIONAL EXPONENT.
119 STARTF /RETRUN TO FLOATING MODE.
121 FLDA SQRTEX+1 /PICK UP THE ANSWER.
124 SQRTSC, FSUB F1SQRT /SPECIAL CASE FUDGE.
125 FSTA SQRT1 /SET EXPONENT ADD ON TO -1.
126 FNEG /AND SET ODD BIT ON.
127 JA SQRTBK /AND GO BACK UP.