home *** CD-ROM | disk | FTP | other *** search
- ; Various tests for output filter and DAC. I used a Nippon Precision Circuits
- ; SM5813AP dual-channel 8-times oversampling digital filter into a Burr Brown
- ; PCM1700P dual-channel 18-bit DAC. The code is very specific to my hardware.
- ;
- ; available signals:
- ; impulse
- ; square
- ; triangle
- ; sine (uses twin-integrator harmonic oscillator)
- ;
- ; This code is not interrupt driven but simple spins waiting for transmitter
- ; ready on each sample.
- ;
- ;
- ; written by Quinn Jensen
- ; work: jensenq@npd.novell.com
- ; home: jensenq@qcj.icon.com
- ;
- include 'ioequ.inc'
-
- org p:$0000
- jmp <start
-
- org p:$000C
- ;ssi jsr ssi_int ;go handle SSI interrupt
-
- ; data areas
-
- org x:$0
- i_left dc 0 ;left channel in
- i_right dc 0 ;right channel in
-
- org p:$40
- start
-
- ; assign mode
-
- movec #$0300,sr ;go to IPL 3
-
- ; set up interrupts
-
- ; movep #0<<13|3<<12|0<<10,x:m_ipr ;put SSI at lev 3, others off
-
- ; set system sample rate
-
- bclr #6,x:<<m_pbd ;32.55 kHz
- bset #5,x:<<m_pbd ;
- bclr #4,x:<<m_pbd ;
-
- ; set up SSI
-
- movep #2<<13|1<<8,x:m_cra ;16-bit word, 2 time slots
- movep #0<<15|3<<12|1<<11|1<<9,x:m_crb ;sync,network,enable
-
- movep #0,x:m_pcddr ;port C is SSI/SCI
- movep #$1FF,x:m_pcc ;port C is SSI/SCI
-
- ; enable interrupts
-
- ; movec #0,sr ;lower IPL
-
- jmp <impulse ;jump to the desired signal
-
- ; impulse
-
- impulse
- move #>-.5,a
-
- im1
- do #400,im0
- jsr <imp
- im0
- neg a
- jsr <imp
- neg a
- jmp <im1
-
- imp
- jclr #6,x:m_sr,* ;wait for transmitter ready
- movep a,x:m_tx
- jclr #6,x:m_sr,* ;wait for transmitter ready
- movep a,x:m_tx
- rts
-
- ; square wave
-
- square
- move #>-.1,a
-
- sq1
- do #200,sq0
- jclr #6,x:m_sr,* ;wait for transmitter ready
- movep a,x:m_tx
- jclr #6,x:m_sr,* ;wait for transmitter ready
- movep a,x:m_tx
- sq0
- neg a
- jmp <sq1
-
-
- ; triangle wave
-
- triangle
- move #>.010,x0
- move #>-.9,a
-
- l0
- do #90*2,l1
- add x0,a
- jclr #6,x:m_sr,* ;wait for transmitter ready
- movep a,x:m_tx
- jclr #6,x:m_sr,* ;wait for transmitter ready
- movep a,x:m_tx
- l1
- move x0,b
- neg b
- move b,x0
- jmp <l0
-
-
- ; sine wave
-
- sine
- move #>.050,x0 ;oscillator freq
- move #>-.209,a ;initial conditions
- move #>.2090,b ;
-
- loop
- mac x0,y0,a
- move a,y0
- jclr #6,x:m_sr,* ;wait for transmitter ready
- movep a,x:m_tx
- mac -x0,y0,b
- move b,y0
- jclr #6,x:m_sr,* ;wait for transmitter ready
- movep b,x:m_tx
-
- jmp <loop
-
- end
-