BENCHMARK PROGRAMS
MOTOROLA
BENCHMARK PROGRAMS B - 21
count set 0
dup points/4
dc @cos(@cvf(count)*freq)
ount set count+1
endm
org x:coef
count set 0
dup points/4
dc @sin(@cvf(count)*freq)
count set count+1
endm
endm ;end of bergsincos macro
bergorder macro points,bergtable,offset
bergorder ident 1,3
;bergorder generates bergland order table
move #>4,a
move #points,r4 ;points=number of points of bergtable to be
generated move #>points/4,b ;nitial pointer
move #bergtable,r0 ;table resides in
move b,n0 ;init offset
move #>0,x0
move x0,x:(r0)+n0 ;seeds
move #>2,x0
move x0,x:(r0)+n0
move #>1,x0
move x0,x:(r0)+n0
move #>3,x0
move x0,x:(r0)
move #bergtable,n0 ;location of bergtable
do #@cvi(@log(points/4)/@log(2)),_endl
move b,x0 ;x0=i+i
lsr b ;b=i
move b,r0 ;r0=i
nop
move a,x:(r0+n0) ;k-> bergtable
lsl a ;k=k*2
move a,y1 ;save A content
_star move r4,a ;r4=# of points
cmp x0,a ;x0=j, if j< points, cont
jle _loop
move x0,r0 ;r0=i+i=j,b=i
move y1,a ;recover A=k
move x:(r0+n0),y0 ;y0=bergtabl[j]