Web proxy server - 4.2.1 SINGLE-PRECISION CALCULATIONS 203 19 4H INCI 0,2

4.2.1 SINGLE-PRECISION CALCULATIONS 203 19 4H INCI 0,2 20 5H LDA FV a ENTX 0 22 SRAX 0,l 23 6H ADD FU 24 JOV N4 25 JXZ NORM 26 CMPA =O=(l:l) 27 JNE N5 28 SRC 5 29 DECX 1 30 STA TEMP 31 STA HALF(O:O) 32 LDAN TEMP ADD HALF ADD HALF SRC 4 JMP N3A CON l//2 CON 0 CON 0 JAZ ZRO CMPA =O=(l:i) JNE N5 SLAX 1 DEC2 1 JMP N2 ENTX 1 SRC 1 INC2 1 CMPA =BYTE/2=(5:5) JL N6 JG 5F JXNZ 5F STA TEMP LDX TEMP(4:4) JXO N6 STA *+l(O:O) INCA BYTE JOV N4 J2N EXPUN ENTX 0,2 SRC I DEC2 BYTE STA ACC J2N * 33 34 35 36 37 HALF 38 FU 39 FV 40 NORM 41 N2 42 43 N3 44 N3A 45 46 N4 47 48 49 N5 50 51 52 53 54 55 56 5H 57 58 59 N6 60 N7 61 62 ZRO 63 8H 64 EXITF rI1 + e, -e,. (Step A4 unnecessary.) A5 Scale rig& Clear rX. Shift right e, -e, places. A6. Add. A7. Normdize. Jump if fraction overflow. Easy case? Is f normalized? If so, round it. IrXl ++ (rA[. (rX is positive.) (Operands had opposite signs, registers must be adjusted before rounding and normalization.) Complement least significant portion. Jump into normalization routine. One half the word size (Sign varies) Fraction part fU Fraction part fv Nl. Test fL N2. Is f normalized? To N5 if leading byte nonzero. N3. Scale left. Decrease e by 1. Return to N2. N4. Scale rig& Shift right, insert 1″ with proper sign. Increase e by 1. N5. Round. Is [tail1 < ib? Is ltaill > +b? Jtaill = 4 b; round to odd. To N6 if rX is odd. Store sign of rA. Add bd4 to IfI. (Sign varies) Check for rounding overflow. N6. Check e. Underflow if e < 0. N7. Pack. rX + e. r12 + e -b. Exit, unless e 2 b. 65 EXPOV HLT 2 Exponent overflow detected 66 EXPUN HLT 1 Exponent underflow detected 67 ACC CON 0 Floating point accumulator 1

Leave a Reply