13f3 /* Defines for Soundblaster and Soundblaster Pro IO address */ #define SB_BASE sb_addr /* Use these values as offsets */ #define LEFT_FM_STATUS SB_BASE+0x00 /* Pro only */ #define LEFT_FM_ADDRESS SB_BASE+0x00 /* Pro only */ #define LEFT_FM_DATA SB_BASE+0x01 /* Pro only */ #define RIGHT_FM_STATUS SB_BASE+0x02 /* Pro only */ #define RIGHT_FM_ADDRESS SB_BASE+0x02 /* Pro only */ #define RIGHT_FM_DATA SB_BASE+0x03 /* Pro only */ #define MIXER_ADDRESS SB_BASE+0x04 /* Pro only */ #define MIXER_DATA SB_BASE+0x05 /* Pro only */ #define DSP_RESET SB_BASE+0x06 #define FM_STATUS SB_BASE+0x08 #define FM_ADDRESS SB_BASE+0x08 #define FM_DATA SB_BASE+0x09 #define DSP_READ_DATA SB_BASE+0x0A #define DSP_WRITE_DATA SB_BASE+0x0C #define DSP_WRITE_STATUS SB_BASE+0x0C #define DSP_DATA_AVAIL SB_BASE+0x0E #define CD_ROM_DATA SB_BASE+0x10 /* Pro only */ #define CD_ROM_STATUS SB_BASE+0x11 /* Pro only */ #define CD_ROM_RESET SB_BASE+0x12 /* Pro only */ #define CD_ROM_ENABLE SB_BASE+0x13 /* Pro only */ #define ADLIB_FM_STATUS 0x388 #define ADLIB_FM_ADDRESS 0x388 #define ADLIB_FM_DATA 0x389 /* Defines for 8237 DMA Controller IO addresses */ #define DMA 0x00 #define CH0_BASE DMA+0 #define CH0_COUNT DMA+1 #define CH1_BASE DMA+2 #define CH1_COUNT DMA+3 #define CH2_BASE DMA+4 #define CH2_COUNT DMA+5 #define CH3_BASE DMA+6 #define CH3_COUNT DMA+7 #define DMA_STATUS DMA+8 #define DMA_CMD DMA+8 #define DMA_REQUEST DMA+9 #define DMA_MASK DMA+10 #define DMA_MODE DMA+11 #define DMA_FF DMA+12 #define DMA_TMP DMA+13 #define DMA_CLEAR DMA+13 #define DMA_CLRMSK DMA+14 #define DMA_WRMSK DMA+15 #define DMAPAGE 0x80 /* SB16 flags */ #define SB16_FIFO 0x01 #define SB16_AI 0x02 #define SB16_SIGNED 0x04 #define SB16_STEREO 0x08 /* Mixer input/output source definitions by me */ #define MIXER_MASTER 1 #define MIXER_VOICE 2 #define MIXER_FM 4 #define MIXER_CD 8 #define MIXER_LINE 16 #define MIXER_MIC 32 #define ANFI_OFF 0x20 #define ANFI_LOW 0x00 #define ANFI_HIGH 0x08 #define DNFI_OFF 0x20 #define DNFI_ON 0 #define NOAUTOINIT 0 #define AUTOINIT 1 #define NORMALSPEED 0 #define HIGHSPEED 1 #define FROM_CARD 0 #define TO_CARD 1 #define BUFFERS 2 struct WAVhdr { char RIFF_tag[4]; long length; char WAVE_tag[4]; char fmt_tag[4]; long chunk_len; int format; int num_channels; long sample_rate; long avg_sample_rate; int align; int bits_per_sample; char data_tag[4]; long data_length; }; extern int sb_addr, sb_dma, sb_irq; extern int block_done; /* * External function references */ extern int dma_setup(int Channel, char far *Buffer, unsigned Length, int Dir, int AutoInit); extern void dma_reset(int Channel); extern int dma_done(int Channel); extern int dma_errno; extern char *dma_errlist[]; extern void set_SB_address(int base); extern void dsp_voice(int); extern int dsp_reset(void); extern void dsp_time(int); extern void dsp_dma_prepare(int Dir, int Length, int AutoInit, int HighSpeed); extern void dsp_dma_halt(void); extern void dsp_dma_continue(void); extern void dsp_dma_exit_autoinit(void); extern void dsp16_samprate(int iomode, unsigned int rate); extern void dsp16_dma_prepare(int Dir, int Length, int flags); extern void dsp16_dma_halt(void); extern void dsp16_dma_continue(void); extern void dsp16_dma_exit_autoinit(void); extern void far *aligned_malloc(long len); extern void aligned_free(void far *ptr); /* High-level stuff in sb_user.c */ extern int sb_addr, sb_dma, sb_irq; extern int block_done; extern int sb_init(int sb_addr, int sb_irq, int sb_dma); extern void sb_exit(void); extern void sb_set_samprate(long sampfreq); extern void sb_record(void far *buffer, unsigned int buf_size, unsigned int block_size, int autoinit); extern void sb_play(void far *buffer, unsigned int buf_size, unsigned int block_size, int autoinit); extern void sb_stop(void); extern void sb_set_volume(int source, int level); extern int sb_get_volume(int source); extern void sb_set_input_source(int source); extern void sb_set_input_filter(int state); extern void sb_set_output_filter(int state); extern int sb16_init(int sb_addr, int sb_irq, int sb_dma); extern void sb16_exit(void); extern void sb16_set_samprate(int iomode, unsigned int sampfreq); extern void sb16_record(void far *buffer, unsigned int buf_size, unsigned int block_size, int flags); extern void sb16_play(void far *buffer, unsigned int buf_size, unsigned int block_size, int flags); extern void sb16_stop(void); extern void sb16_set_volume(int source, int level); extern int sb16_get_volume(int source); extern void sb16_set_input_source(int source); extern void sb16_set_input_filter(int state); extern void sb16_set_output_filter(int state); . 0