Trailing-Edge
-
PDP-10 Archives
-
decuslib10-12
-
43,50547/pltlib/cmisc1/range.mac
There is 1 other file named range.mac in the archive. Click here to see a list.
TITLE RANGE - Returns argument within the range of +/- PI/2
SUBTTL Dissassembled from OLD:FORLIB.REL by Joe Smith, 8-Sep-83
;ANG=RANGE(ANGLE) ! ANG has been reduced to be within -1.57 to +1.57
ENTRY RANGE ;REAL FUNCTION RANGE (ARG)
SIXBIT /RANGE/
RANGE: MOVE 0,@(16) ;Get argument
MOVE 1,PI%2 ;Get PI/2 for rounding
CAIGE 0,0 ;Positive?
MOVNS 1 ;No, use -PI/2
FADR 1,0 ;Add in rounding factor
FDVR 1,PI ;Divide by PI
MOVEM 1,TEMP ;Save quotient for later testing
MOVMS 1 ;Absolute value of quotient
FAD 1,BIG ;Shift fractional part into oblivion
FSB 1,BIG ;Number in AC1 has no fraction
SKIPGE TEMP ;If was negative,
MOVNS 1 ; change quotient to be negative
FMPR 1,PI ;Get multiple of PI
FSBR 0,1 ;Return number between -PI/2 and +PI/2
POPJ 17, ;Return from RANGE
PI: EXP 202622077325 ;3.141592653 (MACRO is off in the LSB)
PI%2: EXP 201622077325 ;PI/2 (1.5707963)
BIG: EXP 233400000000 ;Number to drop any fractional part (67108864.0)
TEMP: EXP 0
END