// FIR_asm_opt.c FIR C program calling ASM function FIR_asm_func_opt.asm
// hand optimized asm code
#include "DSK6713_aic23.h"
#include "LPF1500.cof"                  // LPF 1500 Hz cutoff
int yn = 0;                             // initialize filter's output
short x[N+1];                           // input samples 
Uint32 fs=DSK6713_AIC23_FREQ_8KHZ;      // NB: impulse duration N+1 samples

interrupt void c_int11()                // ISR
{       x[0] = input_sample();          // newest sample @ top of buffer
        yn = FIR_asm_func_opt(x,h,N);   // to asm func through A4,B4,A6
        output_sample((short)(yn >> 15));// scale output filter 
        return;
}

void main()
{       short i;
        for (i = 0; i<N; i++)
           x[i] = 0;                    // init buffer for delays
        comm_intr();                    // init DSK, codec, McBSP
        while(1);                       // infinite loop
}

