Motorola DSP96002 User Manual
Page 596
MOTOROLA
DSP96002 USER’S MANUAL
B-77
Program
ICycles
Words
; Calculate dx and dy
fsub.s d6,d2 d2.s,d4.s 1 1
fsub.s d7,d3 d3.s,d5.s 1 1
; Determine whether to increment x or y
fcmpm d3,d2 1 1
fjge _inc_x 2 2
; Switch endpoints if necessary
_inc_y
ftst d3 d2.s,d0.s 1 1
ftfr.s d4,d6 fflt 1 1
ftfr.s d5,d7 fflt 1 1
; Fix y0 and dy
int d7 d3.s,d1.s 1 1
int d1 1 1
neg d1 iflt 1 1
jeq _draw1_y 2 2
; Calculate dx/dy
fseedd d3,d4 1 1
fmpy.s d3,d4,d5 d9.s,d2.s 1 1
fmpy d0,d4,d0 fsub.s d5,d2 d2.s,d3.s 1 1
fmpy.s d5,d2,d5 d2.s,d4.s 1 1
fmpy d0,d4,d0 fsub.s d5,d3 1 1
fmpy.s d0,d3,d0 d6.s,d2.s 1 1
; Draw first point
int d6 1 1
jsr _draw_point application dependent
; d0 = dx/dy d1 = dy d6 = x0 d7 = y0
do d1.l,_end_y 2 3
fadd.x d0,d2 1 1
inc d7 d2.s,d6.s 1 1
int d6 1 1
jsr _draw_point application dependent
_end_y
rts 2 2
_draw1_y
int d6 1 1
jsr _draw_point application dependent
rts 2 2