Digitized Sound I/O Programming
3-13
8-bit Mono Single-cycle Transfer
The following are the steps needed to perform 8-bit mono PCM and ADPCM single-
cycle DMA mode transfer:
1.
Set up the DSP interrupt service routine.
2.
Enable the interrupt used.
3.
Turn on the DAC speaker for digitized output. Otherwise, turn it off.
outp(wSBCB0xC, 0xD3)
to turn off the DAC speaker
outp(wSBCB0xC, 0xD1)
to turn on the DAC speaker
4.
Program the DMA controller for 8-bit single-cycle DMA mode transfer.
5.
Set the DSP transfer Time Constant.
outp(wSBCB0xC, 0x40)
outp(wSBCB0xC, bTimeConstant)
6.
Send an I/O command followed by data transfer count.
outp(wSBCB0xC, bCommand)
outp(wSBCB0xC, wLength.LowByte)
outp(wSBCB0xC, wLength.HighByte)
bCommand
is one of the following:
bCommand
Description
24h
8-bit PCM input
14h
8-bit PCM output
75h
8-bit to 4-bit ADPCM output with reference byte
77h
8-bit to 3-bit ADPCM output with reference byte
17h
8-bit to 2-bit ADPCM output with reference byte
wLength
is one less than the actual number of bytes to be transferred.
For example, to transfer 8KB of 8-bit PCM data,
wLength = 2000h - 1 = 1FFFh
Hence,
wLength.LowByte = 0FFh and
wLength.HighByte = 1Fh
.
The transfer begins here. The DSP will generate an interrupt after transferring the
programmed number of bytes.