beautypg.com

Motorola DSP96002 User Manual

Page 712

background image

MOTOROLA

DSP96002 USER’S MANUAL

B-193

eor d7,d1 d6.l,x:(r0) ;new sign, save exp

move d1.l,x:(r0+sign) ;save sign

jmp echeck ;go check for errors

page

;

; Check for overflow and underflow and saturate or flush to zero

;

echeck move x:(r0),d0.l ;get exponent

jset #31,d0.l,uflow ;bit 31 indicates underflow

jset #30,d0.l,oflow ;bit 30 indicates overflow

rts ;no errors

oflow move #$3fffffff,d0.l ;max exponent

move d0.l,x:(r0)

move #$ffffffff,d0.l ;max significand

move d0.l,x:(r0+ms)

move d0.l,x:(r0+ls)

rts

uflow clr d0 ;min exponent and significand

move d0.l,x:(r0)

move d0.l,x:(r0+sign)

move d0.l,x:(r0+ms)

move d0.l,x:(r0+ls)

rts

page

;

; MOTOROLA DSP96002 DPLIB - VERSION 1.0
;
; DP_NEG - Negate the double precision number pointed to by r0.

;

; Entry point: dp_neg: c(r0) = -c(r0)

;

; Inputs: r0 contains the lowest address of a 4-word internal

; extended precision number

;

; Outputs: r0 contains the lowest address of a 4-word internal

; extended precision number

;

; Alters: D0.L,D1.L

;

dp_neg move x:(r0+ms),d0.l ;get mantissa ms

move x:(r0+ls),d1.l ;get mantissa ls

or d1,d0 ;check to see if zero

jeq negzero ;can’t have negative zero

move x:(r0+sign),d0.l ;get sign

neg d0 ;negate

inc d0 ;correct

move d0.l,x:(r0+sign) ;save sign

negzero rts ;and return

;

; MOTOROLA DSP96002 DPLIB - VERSION 1.0
;
; DP_SCALE: scale the double precision number

;