|
|
1.1 root 1: /*
2: * Copyright (c) 1993 NeXT Computer, Inc. All rights reserved.
3: */
4:
5: #define MASTER_ADDRESS_POINTER 0x9a01
6: #define FIRST_BOARD_ID 0xbc
7: #define DEFAULT_BASE_ADDRESS 0x0388
8:
9: #define AUDIO_MIXER 0x0B88
10: #define AUDIO_MIXER_RESET 0x17
11:
12: #define MIXER_CONTROL 0x78b
13:
14: typedef struct {
15: unsigned char selectAddress :5,
16: #define MIXER_A_MASTER 1 // Output Mixer
17: #define MIXER_B_MASTER 2 // Input Mixer
18: #define BASS_CONTROL 3
19: #define TREBLE_CONTROL 4
20: #define MASTER_MODE_CONTROL 5 // Loudness Filter
21: // Stereo Enhance
22:
23: #define FM_SYNTHESIS 16 // FM synthesis (B)
24: #define INPUT_MIXER_LOOPBACK 17 // Input Mixer Loopback (A)
25: #define EXTERNAL_LINE_IN 18 // External Line In (B)
26: #define INTERNAL_LINE_IN 19 // Internal Line In (B)
27: #define MICROPHONE 20 // Microphone (B)
28: #define PCM 21 // PCM (A)
29: #define SPEAKER 22 // record the speaker (B)
30: #define SOUNDBLASTER 23 // SoundBlaster (B)
31: selectChannel :2,
32: #define BOTH_CHANNELS 0
33: #define LEFT_CHANNEL 1
34: #define RIGHT_CHANNEL 2
35: isTransfer :1;
36: } channelSelection_t;
37:
38: typedef struct {
39: unsigned char attenuation :5,
40: #define MAXIMUM_ATTENUATION 0
41: routeChannel :1,
42: #define MIXER_A_ROUTE 0
43: #define MIXER_B_ROUTE 1
44: swapChannels :2;
45: #define NORMAL_STEREO 0
46: } channelAttenuation_t;
47:
48: typedef unsigned char masterAttenuation_t;
49: typedef unsigned char masterBassTrebleControl_t;
50:
51: typedef struct {
52: unsigned char stereoEnhance :2,
53: loudnessFilter :1,
54: reserved :5;
55: } masterModeControl_t;
56:
57: #define DEFAULT_MASTER_OUTPUT_ATTENUATION 48
58: #define DEFAULT_MASTER_INPUT_ATTENUATION 15
59: #define DEFAULT_OUTPUT_ATTENUATION 27
60: #define DEFAULT_INPUT_ATTENUATION 27
61: #define DEFAULT_MICROPHONE_ATTENUATION 30
62: #define MUTE 0
63:
64: #define DEFAULT_BASS_BOOST 0x06 // 0 dB
65: #define DEFAULT_TREBLE_BOOST 0x06 // 0 dB
66:
67: #define FILTER_CONTROL 0xb8a
68:
69: typedef struct {
70: unsigned char filter :5,
71: enableAudioOutput :1,
72: enableSampleRateTimer :1,
73: enableSampleBufferCounter :1;
74: } filterControl_t;
75:
76:
77: #define INTERRUPT_CONTROL 0xb8b
78:
79: typedef struct {
80: unsigned char enableLeftFMInterrupt :1,
81: enableRightFMInterrupt :1,
82: enableSampleRateInterrupt :1,
83: enableSampleBufferInterrupt :1,
84: enableMIDIInterrupt :1,
85: #define PAS_SIXTEEN 1
86: #define PAS_STUDIO 3
87: version :3;
88: } interruptControl_t;
89:
90:
91: #define INTERRUPT_STATUS 0xb89
92:
93: typedef struct {
94: unsigned char LeftFMInterruptPending :1,
95: RightFMInterruptPending :1,
96: sampleRateInterruptPending :1,
97: sampleBufferInterruptPending :1,
98: MIDIInterruptPending :1,
99: channelActive :1,
100: resetActive :1,
101: sampleClippingOccurred :1;
102: } interruptStatus_t;
103:
104:
105: #define CROSS_CHANNEL_CONTROL 0xf8a
106:
107: typedef struct {
108: unsigned char rightToRight :1,
109: leftToRight :1,
110: rightToLeft :1,
111: leftToLeft :1,
112: direction :1,
113: #define INPUT_DIRECTION 0
114: #define OUTPUT_DIRECTION 1
115: isMono :1,
116: enablePCM :1,
117: enableDMA :1;
118: } crossChannelControl_t;
119:
120: #define SAMPLE_RATE_TIMER 0x1388
121: typedef unsigned short sampleRateTimer_t;
122: #define SAMPLE_RATE_CONSTANT 1193180
123:
124: #define SAMPLE_BUFFER_COUNTER 0x1389
125: typedef unsigned short sampleBufferCounter_t;
126:
127: #define SAMPLE_COUNTER_CONTROL 0x138b
128:
129: typedef struct {
130: unsigned char countFormat :1,
131: #define BINARY_COUNT_FORMAT 0
132: selectMode :3,
133: #define SAMPLE_BUFFER_MODE 2
134: #define SAMPLE_RATE_MODE 3
135: latchCounter :2,
136: selectCounter :2;
137: #define SAMPLE_RATE_COUNT 0
138: #define SAMPLE_BUFFER_COUNT 1
139: } sampleCounterControl_t;
140:
141: #define SYSTEM_CONFIGURATION_1 0x8388
142:
143: typedef struct {
144: unsigned char reserved :1,
145: selectCompatibleClock :1,
146: reserved1 :6;
147: } systemConfiguration1_t;
148:
149: #define SYSTEM_CONFIGURATION_2 0x8389
150: #define SYSTEM_CONFIGURATION_2_RESET 0x0
151:
152: typedef struct {
153: unsigned char overSampling :2,
154: #define OVER_SAMPLING_1X 0
155: #define OVER_SAMPLING_2X 1
156: #define OVER_SAMPLING_4X 3
157: dataEncoding :1,
158: #define LINEAR_8 0
159: #define LINEAR_16 1
160: reserved :5;
161: } systemConfiguration2_t;
162:
163:
164: #define SYSTEM_CONFIGURATION_3 0x838a
165: #define SYSTEM_CONFIGURATION_3_RESET 0x19 // 0x18
166:
167: #define SYSTEM_CONFIGURATION_4 0x838b
168: #define SYSTEM_CONFIGURATION_4_RESET 0x68
169:
170: #define PRESCALE_DIVIDER 0xbf8a
171: #define PRESCALE_DIVIDER_RESET 0x08
172:
173: #define WAIT_STATE 0xbf88
174: #define WAIT_STATE_RESET 0x01
175:
176:
177: #define DMA_CHANNEL_CONFIGURATION 0xf389
178:
179: typedef struct {
180: unsigned char channel :3,
181: #define DMA_CHANNEL_NONE 0
182: #define DMA_CHANNEL_1 1
183: #define DMA_CHANNEL_2 2
184: #define DMA_CHANNEL_3 3
185: #define DMA_CHANNEL_0 4
186: #define DMA_CHANNEL_5 5
187: #define DMA_CHANNEL_6 6
188: #define DMA_CHANNEL_7 7
189: reserved :5;
190: } DMAChannelConfiguration_t;
191:
192:
193: #define IRQ_CONFIGURATION 0xf38A
194:
195: typedef struct {
196: unsigned char interrupt :4,
197: #define INTERRUPT_NONE 0
198: #define INTERRUPT_2 1
199: #define INTERRUPT_3 2
200: #define INTERRUPT_4 3
201: #define INTERRUPT_5 4
202: #define INTERRUPT_6 5
203: #define INTERRUPT_7 6
204: #define INTERRUPT_10 7
205: #define INTERRUPT_11 8
206: #define INTERRUPT_12 9
207: #define INTERRUPT_14 10
208: #define INTERRUPT_15 11
209: reserved :4;
210: } IRQConfiguration_t;
211:
212: #define COMPATIBILITY_ENABLE 0xf788
213:
214: #define EMULATION_CONFIGURATION 0xfb8a
215:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.