//Noise_gen.c Pseudo-random sequence generation

#include "noise_gen.h"		     //header file for noise sequence
int fb;
shift_reg sreg;			     //shift reg structure
 
interrupt void c_int11()           //interrupt service routine
{
 int prnseq;                       //for pseudo-random sequence
 
 if(sreg.bt.b0)                    //sequence{1,-1}based on bit b0
	prnseq = -8000; 	           //scaled negative noise level
 else
	prnseq = 8000;	           //scaled positive noise level
 fb  =(sreg.bt.b0)^(sreg.bt.b1);   //XOR bits 0,1
 fb ^=(sreg.bt.b11)^(sreg.bt.b13); //with bits 11,13 ->fb
 sreg.regval<<=1;                  //shift register 1 bit to left
 sreg.bt.b0 = fb;	     	           //close feedback path
                          
 output_sample(prnseq);	           //output scaled sequence
 return;				     //return from interrupt
}

void main()
{
 sreg.regval = 0xFFFF;             //set shift register 
 fb = 1;                           //initial feedback value
 comm_intr();                      //init DSK, codec, McBSP
 while (1);                        //infinite loop
}