1  /*
2   * UAE - The Un*x Amiga Emulator
3   *
4   * DOS Sound Blaster interface.
5   *
6   * (c) 1996 Peter Remmers
7   */
8 
9 /* internally used types */
10 typedef UWORD          BOOL;
11 
12 typedef enum
13 {
14   SB_Type_StdSB,
15   SB_Type_SbPro,
16   SB_Type_SB16
17 }
18 tSBType;
19 
20 extern tSBType SB_Type;
21 
22 extern volatile int IsPlaying;
23 extern int CurrentBuffer;
24 
25 BOOL SB_Reset (void);
26 inline void SB_WriteDSP (UBYTE value);
27 inline UBYTE SB_ReadDSP (void);
28 inline void SB_WriteMixer (UBYTE reg, UBYTE data);
29 inline UBYTE SB_ReadMixer (UBYTE reg);
30 BOOL SB_DetectMixer (void);
31 void SB_Play_8Bit_Std (UWORD bytes);
32 void SB_Play_8Bit_SbPro (UWORD bytes);
33 void SB_Play_8Bit_SB16 (UWORD bytes);
34 void SB_Play_16Bit (UWORD bytes);
35 void SB_IntHandler (void);
36 void SB_SetRate_LoSpeed (UWORD rate);
37 void SB_SetRate_HiSpeed (UWORD rate);
38 void SB_SetRate_SB16 (UWORD rate);
39 int SB_SetRate (unsigned short rate);
40 int SB_SetBits (unsigned char bits);
41 int SB_SetChannels (unsigned char channels);
42 int SB_SetSigned (int sign);
43 void SB_SpeakerOff(void);
44 void SB_SpeakerOn(void);
45 void SB_SetVolume(UBYTE vol);
46 void irq2 (void);
47 void irq5 (void);
48 void irq7 (void);
49 void irq10 (void);
50 int SB_Detect (unsigned short *base, unsigned short *irq, unsigned short *dmalo, unsigned short *dmahi);
51 int SB_InitBuffers(int bufsize);
52 int SB_Init (unsigned short base, unsigned short irq, unsigned short dmalo, unsigned short dmahi);
53 void SB_Done (void);
54 void SB_DirectWrite(unsigned int size, int freq);
55 void SB_GetVersion (unsigned char *Maj, unsigned char *Min);
56 int SB_DetectInitSound(int *dspbits, int *dsprate, int *sndbufsize, unsigned int *direct_buffers, int *stereo_sound);
57