        XDEF _mul_and_div
        XDEF _dot_product
        XDEF _rotate
        XDEF _copy
        section text,code

       
_mul_and_div:
       fmove.l d0,fp0
       fmove.l d1,fp1
       fmul.x fp0,fp1 ; .x und NICHT .l
       fdiv.l d2,fp1 ; .l und NICHT .x
       fmove.l fp1,d0
       rts

_dot_product:
       fmove.l d0,fp0
       fmove.l d1,fp1
       fmove.l d2,fp2
       fmove.l d3,fp3
       fmul.x fp0,fp2
       fmul.x fp1,fp3
       fadd.x fp2,fp3
       fdiv.l #65536,fp3
       fmove.l fp3,d0
       rts

_rotate:
       move.l d2,-(sp)
       fmove.l d0,fp0
       fmove.l d1,fp1
       move.l (a1),d2
       fmove.l (a0),fp2
       fmove.l (a1),fp3
       fmul.x fp0,fp2
       fmul.x fp1,fp3
       fadd.x fp2,fp3
       fdiv.l #65536,fp3
       fmove.l fp3,(a1)
       move.l d1,d4
       sub.l d1,d1
       sub.l d0,d1
       move.l d4,d0
       fmove.l d0,fp0
       fmove.l d1,fp1
       fmove.l (a0),fp2
       fmove.l d2,fp3
       fmul.x fp0,fp2
       fmul.x fp1,fp3
       fadd.x fp2,fp3
       fdiv.l #65536,fp3
       fmove.l fp3,(a0)
       move.l (sp)+,d2
       rts

_copy:
       movem.l a2/d2-d4,-(sp)
       move.l #copyl,a2
       add.l d0,a2
       move.l (a2),a2
       jmp (a2)
copy0:
       move.l #3999,d0
loop:
       move.l (a0)+,d1
       move.l (a0)+,d2
       move.l (a0)+,d3
       move.l (a0)+,d4
       move.l d1,(a1)+
       move.l d2,(a1)+
       move.l d3,(a1)+
       move.l d4,(a1)+
       dbra d0,loop
       movem.l (sp)+,a2/d2-d4
       rts
copyl:
       dc.l copy0
       END
