|
|
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.