1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50 #define GUS_IOH4_OFFSET 0x100
51 #define GUS_NPORT4 2
52
53 #define GUS_MIDI_CONTROL (0x100-GUS_IOH4_OFFSET)
54 #define GUS_MIDI_STATUS (0x100-GUS_IOH4_OFFSET)
55 #define GUS_MIDI_READ (0x101-GUS_IOH4_OFFSET)
56 #define GUS_MIDI_WRITE (0x101-GUS_IOH4_OFFSET)
57
58
59
60
61
62
63 #define GUS_JOYSTICK 0x201
64
65
66
67
68
69 #define GUS_MIX_CONTROL 0x000
70 #define GUS_IRQ_STATUS 0x006
71 #define GUS_TIMER_CONTROL 0x008
72 #define GUS_TIMER_DATA 0x009
73 #define GUS_REG_CONTROL 0x00f
74
75 #define GUS_REG_NORMAL 0x00
76 #define GUS_REG_IRQCTL 0x05
77 #define GUS_REG_JUMPER 0x06
78 #define GUS_JUMPER_MIDIEN 0x02
79 #define GUS_JUMPER_JOYEN 0x04
80
81 #define GUS_IRQ_CONTROL 0x00b
82 #define GUS_DMA_CONTROL 0x00b
83 #define GUS_IRQCTL_CONTROL 0x00b
84 #define GUS_JUMPER_CONTROL 0x00b
85
86 #define GUS_NPORT1 16
87
88 #define GUS_IOH2_OFFSET 0x102
89 #define GUS_VOICE_SELECT (0x102-GUS_IOH2_OFFSET)
90 #define GUS_REG_SELECT (0x103-GUS_IOH2_OFFSET)
91 #define GUS_DATA_LOW (0x104-GUS_IOH2_OFFSET)
92 #define GUS_DATA_HIGH (0x105-GUS_IOH2_OFFSET)
93
94 #define GUS_DRAM_DATA (0x107-GUS_IOH2_OFFSET)
95
96 #define GUS_NPORT2 6
97
98
99
100
101
102 #define GUSREG_DMA_CONTROL 0x41
103 #define GUSREG_DMA_START 0x42
104 #define GUSREG_DRAM_ADDR_LOW 0x43
105 #define GUSREG_DRAM_ADDR_HIGH 0x44
106 #define GUSREG_TIMER_CONTROL 0x45
107 #define GUSREG_TIMER1_COUNT 0x46
108 #define GUSREG_TIMER2_COUNT 0x47
109 #define GUSREG_SAMPLE_FREQ 0x48
110 #define GUSREG_SAMPLE_CONTROL 0x49
111 #define GUSREG_JOYSTICK_TRIM 0x4b
112 #define GUSREG_RESET 0x4c
113
114
115
116
117
118
119 #define GUSREG_READ 0x80
120 #define GUSREG_VOICE_CNTL 0x00
121 #define GUSREG_FREQ_CONTROL 0x01
122 #define GUSREG_START_ADDR_HIGH 0x02
123 #define GUSREG_START_ADDR_LOW 0x03
124 #define GUSREG_END_ADDR_HIGH 0x04
125 #define GUSREG_END_ADDR_LOW 0x05
126 #define GUSREG_VOLUME_RATE 0x06
127 #define GUSREG_START_VOLUME 0x07
128 #define GUSREG_END_VOLUME 0x08
129 #define GUSREG_CUR_VOLUME 0x09
130 #define GUSREG_CUR_ADDR_HIGH 0x0a
131 #define GUSREG_CUR_ADDR_LOW 0x0b
132 #define GUSREG_PAN_POS 0x0c
133 #define GUSREG_VOLUME_CONTROL 0x0d
134 #define GUSREG_ACTIVE_VOICES 0x0e
135 #define GUSREG_IRQ_STATUS 0x8f
136
137 #define GUS_PAN_FULL_LEFT 0x0
138 #define GUS_PAN_FULL_RIGHT 0xf
139
140
141
142
143
144 #define GUSMASK_MASTER_RESET 0x01
145 #define GUSMASK_DAC_ENABLE 0x02
146 #define GUSMASK_IRQ_ENABLE 0x04
147
148
149
150
151
152 #define GUSMASK_IRQ_MIDIXMIT 0x01
153 #define GUSMASK_IRQ_MIDIRCVR 0x02
154 #define GUSMASK_IRQ_TIMER1 0x04
155 #define GUSMASK_IRQ_TIMER2 0x08
156 #define GUSMASK_IRQ_RESERVED 0x10
157 #define GUSMASK_IRQ_VOICE 0x20
158 #define GUSMASK_IRQ_VOLUME 0x40
159 #define GUSMASK_IRQ_DMATC 0x80
160
161
162
163
164 #define GUSMASK_SAMPLE_START 0x01
165 #define GUSMASK_SAMPLE_STEREO 0x02
166 #define GUSMASK_SAMPLE_DATA16 0x04
167 #define GUSMASK_SAMPLE_IRQ 0x20
168 #define GUSMASK_SAMPLE_DMATC 0x40
169 #define GUSMASK_SAMPLE_INVBIT 0x80
170
171
172
173
174
175
176 #define GUSMASK_WIRQ_VOLUME 0x40
177 #define GUSMASK_WIRQ_VOICE 0x80
178 #define GUSMASK_WIRQ_VOICEMASK 0x1f
179
180
181
182
183
184 #define GUSMASK_LINE_IN 0x01
185 #define GUSMASK_LINE_OUT 0x02
186 #define GUSMASK_MIC_IN 0x04
187 #define GUSMASK_LATCHES 0x08
188 #define GUSMASK_COMBINE 0x10
189 #define GUSMASK_MIDI_LOOPBACK 0x20
190 #define GUSMASK_CONTROL_SEL 0x40
191
192 #define GUSMASK_BOTH_RQ 0x40
193
194
195
196
197
198 #define GUSMASK_DMA_ENABLE 0x01
199 #define GUSMASK_DMA_READ 0x02
200 #define GUSMASK_DMA_WRITE 0x00
201 #define GUSMASK_DMA_WIDTH 0x04
202 #define GUSMASK_DMA_R0 0x00
203 #define GUSMASK_DMA_R1 0x08
204 #define GUSMASK_DMA_R2 0x10
205 #define GUSMASK_DMA_R3 0x18
206 #define GUSMASK_DMA_IRQ 0x20
207 #define GUSMASK_DMA_IRQPEND 0x40
208 #define GUSMASK_DMA_DATA_SIZE 0x40
209 #define GUSMASK_DMA_INVBIT 0x80
210
211
212
213
214
215 #define GUSMASK_VOICE_STOPPED 0x01
216 #define GUSMASK_STOP_VOICE 0x02
217 #define GUSMASK_DATA_SIZE16 0x04
218 #define GUSMASK_LOOP_ENABLE 0x08
219 #define GUSMASK_VOICE_BIDIR 0x10
220 #define GUSMASK_VOICE_IRQ 0x20
221 #define GUSMASK_INCR_DIR 0x40
222 #define GUSMASK_VOICE_IRQPEND 0x80
223
224
225
226
227
228 #define GUSMASK_VOLUME_STOPPED 0x01
229 #define GUSMASK_STOP_VOLUME 0x02
230 #define GUSMASK_VOICE_ROLL 0x04
231 #define GUSMASK_VOLUME_LOOP 0x08
232 #define GUSMASK_VOLUME_BIDIR 0x10
233 #define GUSMASK_VOLUME_IRQ 0x20
234 #define GUSMASK_VOLUME_DIR 0x40
235 #define GUSMASK_VOLUME_IRQPEND 0x80
236 #define MIDI_RESET 0x03
237
238
239
240
241
242 #define GUS_IOH3_OFFSET 0x506
243 #define GUS_NPORT3 1
244
245 #define GUS_MIXER_SELECT (0x506-GUS_IOH3_OFFSET)
246 #define GUS_BOARD_REV (0x506-GUS_IOH3_OFFSET)
247 #define GUS_MIXER_DATA (0x106-GUS_IOH2_OFFSET)
248
249 #define GUSMIX_CHAN_MIC ICSMIX_CHAN_0
250 #define GUSMIX_CHAN_LINE ICSMIX_CHAN_1
251 #define GUSMIX_CHAN_CD ICSMIX_CHAN_2
252 #define GUSMIX_CHAN_DAC ICSMIX_CHAN_3
253 #define GUSMIX_CHAN_MASTER ICSMIX_CHAN_5
254
255
256
257
258
259 #define GUS_MAX_CODEC_BASE 0x10C
260 #define GUS_DAUGHTER_CODEC_BASE 0x530
261 #define GUS_DAUGHTER_CODEC_BASE2 0x604
262 #define GUS_DAUGHTER_CODEC_BASE3 0xE80
263 #define GUS_DAUGHTER_CODEC_BASE4 0xF40
264
265 #define GUS_CODEC_SELECT 0
266 #define GUS_CODEC_DATA 1
267 #define GUS_CODEC_STATUS 2
268 #define GUS_CODEC_PIO 3
269
270 #define GUS_MAX_CTRL 0x106
271 #define GUS_MAX_BASEBITS 0xf
272 #define GUS_MAX_RECCHAN16 0x10
273 #define GUS_MAX_PLAYCHAN16 0x20
274 #define GUS_MAX_CODEC_ENABLE 0x40