Metropoli BBS
VIEWER: sndscape.h MODE: TEXT (ASCII)
/*
  This file includes all the internal equates and prototypes for the
  Soundscape digital audio driver.
*/

#include "driver.h"


/* Ensoniq gate-array chip defines ... */
#define ODIE            0       /* ODIE gate array */
#define OPUS            1       /* OPUS gate array */
#define MMIC            2       /* MiMIC gate array */    

/* relevant direct register defines - offsets from base address */
#define GA_HOSTCTL_OFF  2       /* host port ctrl/stat reg */
#define GA_ADDR_OFF     4       /* indirect address reg */
#define GA_DATA_OFF     5       /* indirect data reg */
#define GA_CODEC_OFF    8       /* for some boards CoDec is fixed from base */

/* relevant indirect register defines */
#define GA_DMAB_REG     3       /* DMA chan B assign reg */
#define GA_INTCFG_REG   4       /* interrupt configuration reg */
#define GA_DMACFG_REG   5       /* DMA configuration reg */
#define GA_CDCFG_REG    6       /* CD-ROM/CoDec config reg */
#define GA_HMCTL_REG	9	/* host master control reg */


/* AD-1848 or compatible CoDec defines ... */
/* relevant direct register defines - offsets from base */
#define CD_ADDR_OFF     0       /* indirect address reg */
#define CD_DATA_OFF     1       /* indirect data reg */
#define CD_STATUS_OFF   2       /* status register */

/* relevant indirect register defines */
#define CD_ADCL_REG	0	/* left DAC input control reg */
#define CD_ADCR_REG	1	/* right DAC input control reg */
#define CD_CDAUXL_REG   2       /* left DAC output control reg */
#define CD_CDAUXR_REG   3       /* right DAC output control reg */
#define CD_DACL_REG     6       /* left DAC output control reg */
#define CD_DACR_REG     7       /* right DAC output control reg */
#define CD_FORMAT_REG   8       /* clock and data format reg */
#define CD_CONFIG_REG   9       /* interface config register */
#define CD_PINCTL_REG   10      /* external pin control reg */
#define CD_UCOUNT_REG   14      /* upper count reg */
#define CD_LCOUNT_REG   15      /* lower count reg */

#define CD_MODE_CHANGE	0x40	/* mode change mask for addr reg */


/* some miscellaneous defines ... */
#define DMAC_SINGLE_OUT	0x48    /* DMA controller mode - single buffer, out */
#define DMAC_AUTO_OUT	0x58    /* DMA controller mode - auto-restart, out */
#define DMAC_SINGLE_IN	0x44    /* DMA controller mode - single buffer, in */
#define DMAC_AUTO_IN	0x54    /* DMA controller mode - auto-restart, in */

/* Some TypeDefs ... */
typedef struct {		/* DMA controller registers ... */
        int     addr;		/* address register, lower/upper */
        int     count;		/* address register, lower/upper */
        int     status;		/* status register */
        int     mask;		/* single channel mask register */
        int     mode;		/* mode register */
        int     clrff;		/* clear flip-flop register */
        int     page;		/* fixed page register */
} DMAC_REGS;


/* prototypes for internal driver functions */

int	 GaRead(WORD);
void	 GaWrite(WORD, int);

int	 CdRead(WORD);
void	 CdWrite(WORD, int);

int	 SetFormat(WORD, int, int);

int	 GetConfigEntry(char *, char *, FILE *);

void interrupt far WaveIsr();
[ RETURN TO DIRECTORY ]