diff options
Diffstat (limited to 'firmware/target/arm/tms320dm320')
-rw-r--r-- | firmware/target/arm/tms320dm320/dsp-dm320.c | 6 | ||||
-rw-r--r-- | firmware/target/arm/tms320dm320/dsp/arm.c | 24 | ||||
-rw-r--r-- | firmware/target/arm/tms320dm320/dsp/arm.h | 3 | ||||
-rw-r--r-- | firmware/target/arm/tms320dm320/dsp/dma.c | 267 | ||||
-rw-r--r-- | firmware/target/arm/tms320dm320/dsp/dma.h | 5 | ||||
-rw-r--r-- | firmware/target/arm/tms320dm320/dsp/dsp-image.h | 106 | ||||
-rw-r--r-- | firmware/target/arm/tms320dm320/dsp/ipc.h | 6 | ||||
-rw-r--r-- | firmware/target/arm/tms320dm320/dsp/linker.cmd | 36 | ||||
-rw-r--r-- | firmware/target/arm/tms320dm320/dsp/main.c | 10 | ||||
-rw-r--r-- | firmware/target/arm/tms320dm320/dsp/tsc2100.c | 10 | ||||
-rw-r--r-- | firmware/target/arm/tms320dm320/dsp/vectors.asm | 8 | ||||
-rw-r--r-- | firmware/target/arm/tms320dm320/mrobe-500/pcm-mr500.c | 2 |
12 files changed, 241 insertions, 242 deletions
diff --git a/firmware/target/arm/tms320dm320/dsp-dm320.c b/firmware/target/arm/tms320dm320/dsp-dm320.c index f729cc4e90..5f0c997bd2 100644 --- a/firmware/target/arm/tms320dm320/dsp-dm320.c +++ b/firmware/target/arm/tms320dm320/dsp-dm320.c | |||
@@ -37,10 +37,8 @@ static void dsp_status(void) | |||
37 | DEBUGF("dsp_status(): clkc_hpib=%u clkc_dsp=%u", | 37 | DEBUGF("dsp_status(): clkc_hpib=%u clkc_dsp=%u", |
38 | !!(IO_CLK_MOD0 & (1 << 11)), !!(IO_CLK_MOD0 & (1 << 10))); | 38 | !!(IO_CLK_MOD0 & (1 << 11)), !!(IO_CLK_MOD0 & (1 << 10))); |
39 | 39 | ||
40 | DEBUGF("dsp_status(): irq_dsphint=%u 7fff=%04x scratch_status=%04x" | 40 | DEBUGF("dsp_status(): irq_dsphint=%u 7fff=%04x scratch_status=%04x", |
41 | " acked=%04x", | 41 | (IO_INTC_IRQ0 >> IRQ_DSPHINT) & 1, DSP_(0x7fff), DSP_(_status)); |
42 | (IO_INTC_IRQ0 >> IRQ_DSPHINT) & 1, DSP_(0x7fff), DSP_(_status), | ||
43 | DSP_(_acked)); | ||
44 | #define B(f,w,b,m) if ((w & (1 << b)) == 0) \ | 42 | #define B(f,w,b,m) if ((w & (1 << b)) == 0) \ |
45 | strcat(f, "!"); \ | 43 | strcat(f, "!"); \ |
46 | strcat(f, #m "|"); | 44 | strcat(f, #m "|"); |
diff --git a/firmware/target/arm/tms320dm320/dsp/arm.c b/firmware/target/arm/tms320dm320/dsp/arm.c index a2c19c7f62..e0df31c7a1 100644 --- a/firmware/target/arm/tms320dm320/dsp/arm.c +++ b/firmware/target/arm/tms320dm320/dsp/arm.c | |||
@@ -28,17 +28,27 @@ | |||
28 | 28 | ||
29 | volatile struct ipc_message status; | 29 | volatile struct ipc_message status; |
30 | 30 | ||
31 | extern int waiting; | 31 | #if defined(HAVE_DEBUG) |
32 | volatile int acked; | 32 | static int acked; |
33 | #endif | ||
34 | |||
33 | interrupt void handle_int0(void) { | 35 | interrupt void handle_int0(void) { |
34 | IFR = 1; | 36 | IFR = 1; |
37 | |||
38 | #if defined(HAVE_DEBUG) | ||
35 | acked = 1; | 39 | acked = 1; |
40 | #endif | ||
41 | |||
36 | waiting = 0; | 42 | waiting = 0; |
37 | 43 | ||
38 | if(dma0_stopped==0) | 44 | if(dma0_stopped==0) |
39 | { | 45 | { |
40 | if(!(DMPREC&0x01)) | 46 | if(!(DMPREC&0x01)) |
41 | { | 47 | { |
48 | /* Give the HPIB access to refill first */ | ||
49 | rebuffer(); | ||
50 | |||
51 | /* Start the MCBSP DMA */ | ||
42 | DMPREC |= 1; | 52 | DMPREC |= 1; |
43 | audiohw_start(); | 53 | audiohw_start(); |
44 | } | 54 | } |
@@ -47,15 +57,20 @@ interrupt void handle_int0(void) { | |||
47 | rebuffer(); | 57 | rebuffer(); |
48 | } | 58 | } |
49 | } | 59 | } |
60 | else | ||
61 | { | ||
62 | rebuffer(); | ||
63 | } | ||
50 | } | 64 | } |
51 | 65 | ||
52 | void startack(void) | 66 | #if defined(HAVE_DEBUG) |
67 | static void startack(void) | ||
53 | { | 68 | { |
54 | acked = 0; | 69 | acked = 0; |
55 | int_arm(); | 70 | int_arm(); |
56 | } | 71 | } |
57 | 72 | ||
58 | void waitack(void) | 73 | static void waitack(void) |
59 | { | 74 | { |
60 | /* Wait until ARM has picked up data. */ | 75 | /* Wait until ARM has picked up data. */ |
61 | while (!acked) | 76 | while (!acked) |
@@ -78,3 +93,4 @@ void debugf(const char *fmt, ...) { | |||
78 | 93 | ||
79 | acked = 2; | 94 | acked = 2; |
80 | } | 95 | } |
96 | #endif | ||
diff --git a/firmware/target/arm/tms320dm320/dsp/arm.h b/firmware/target/arm/tms320dm320/dsp/arm.h index 88b552c2ef..ff4a9a1c51 100644 --- a/firmware/target/arm/tms320dm320/dsp/arm.h +++ b/firmware/target/arm/tms320dm320/dsp/arm.h | |||
@@ -26,9 +26,6 @@ | |||
26 | 26 | ||
27 | extern volatile struct ipc_message status; | 27 | extern volatile struct ipc_message status; |
28 | 28 | ||
29 | void startack(void); | ||
30 | void waitack(void); | ||
31 | |||
32 | void debugf(const char *fmt, ...); | 29 | void debugf(const char *fmt, ...); |
33 | 30 | ||
34 | inline void int_arm(void) { | 31 | inline void int_arm(void) { |
diff --git a/firmware/target/arm/tms320dm320/dsp/dma.c b/firmware/target/arm/tms320dm320/dsp/dma.c index 430cc909f7..590b35de80 100644 --- a/firmware/target/arm/tms320dm320/dsp/dma.c +++ b/firmware/target/arm/tms320dm320/dsp/dma.c | |||
@@ -23,185 +23,208 @@ | |||
23 | 23 | ||
24 | #include "registers.h" | 24 | #include "registers.h" |
25 | #include "arm.h" | 25 | #include "arm.h" |
26 | #include "dma.h" | 26 | #include "ipc.h" |
27 | |||
28 | /* Size of data buffer in words (16 bit) */ | ||
29 | #define DSP_BUFFER_SIZE (0x1000) | ||
27 | 30 | ||
28 | /* This is placed at the right (aligned) address using linker.cmd. */ | 31 | /* Put the "data" buffer in it's own .dma section so that it can |
32 | * be handled in the linker.cmd. */ | ||
29 | #pragma DATA_SECTION (data, ".dma") | 33 | #pragma DATA_SECTION (data, ".dma") |
30 | 34 | ||
31 | #define DSP_BUFFER_SIZE PCM_SIZE/2 | 35 | /* This is the "data" buffer on the DSP side used for SARAM to McBSP (IIS) */ |
32 | 36 | static signed short data[DSP_BUFFER_SIZE]; | |
33 | /* This is the buffer on the DSP side used for SARAM to McBSP (IIS) */ | ||
34 | signed short data[DSP_BUFFER_SIZE]; | ||
35 | 37 | ||
36 | /* These two describe the location of the buffer on the ARM (set in DSPHINT | 38 | /* These two describe the location of the buffer on the ARM (set in DSPHINT) */ |
37 | * and dspinit) | ||
38 | */ | ||
39 | volatile unsigned short sdem_addrh; | 39 | volatile unsigned short sdem_addrh; |
40 | volatile unsigned short sdem_addrl; | 40 | volatile unsigned short sdem_addrl; |
41 | 41 | ||
42 | /* This is the size of the ARM buffer (set in DSPHINT and dspinit) */ | 42 | /* This is the size of the ARM buffer (set in DSPHINT) */ |
43 | volatile unsigned short sdem_dsp_size; | 43 | volatile unsigned short sdem_dsp_size; |
44 | 44 | ||
45 | /* These two variables keep track of the buffer level in the DSP, dsp_level, | 45 | /* These two variables keep track of the buffer level in the DSP, dsp_level, |
46 | * (SARAM to McBSP) and the level on the ARM buffer (sdem_level). | 46 | * (SARAM to McBSP) and the level on the ARM buffer (sdem_level). |
47 | */ | 47 | * sdem_level is used in the main firmware to keep track of the current |
48 | unsigned short dsp_level=0; | 48 | * playback status. dsp_level is only used in this function. */ |
49 | unsigned short sdem_level=0; | 49 | static unsigned short dsp_level; |
50 | volatile unsigned short sdem_level; | ||
50 | 51 | ||
51 | /* This is used to keep track of the last SDRAM to SARAM transfer */ | 52 | /* This is used to keep track of the last SDRAM to SARAM transfer */ |
52 | unsigned short last_size; | 53 | static unsigned short last_size; |
53 | 54 | ||
54 | /* This tells us which half of the DSP buffer (data) is free */ | 55 | /* This tells us which half of the DSP buffer (data) is free */ |
55 | unsigned short dma0_unlocked; | 56 | static unsigned short dma0_unlocked; |
56 | 57 | ||
57 | volatile unsigned short dma0_stopped=1; | 58 | /* This is used by the ARM to flag playback status and start/stop the DMA |
59 | * transfers. */ | ||
60 | volatile unsigned short dma0_stopped; | ||
58 | 61 | ||
59 | short waiting=0; | 62 | /* This is used to effectively flag whether the ARM has new data ready or not */ |
60 | /* rebuffer sets up the next SDRAM to SARAM transfer and tells the ARM when it | 63 | short waiting; |
61 | * is done with a buffer. | 64 | |
62 | */ | 65 | |
63 | 66 | /* rebuffer sets up the next SDRAM to SARAM transfer and tells the ARM when DMA | |
64 | /* Notes: The upper limit on larger buffers is the size of a short. If larger | 67 | * needs a new buffer. |
68 | * | ||
69 | * Note: The upper limit on larger buffers is the size of a short. If larger | ||
65 | * buffer sizes are needed the code on the ARM side needs to be changed to | 70 | * buffer sizes are needed the code on the ARM side needs to be changed to |
66 | * update a full long. | 71 | * update a full long. |
67 | */ | 72 | */ |
68 | void rebuffer(void) | 73 | void rebuffer(void) |
69 | { | 74 | { |
70 | unsigned long sdem_addr; | 75 | unsigned long sdem_addr; |
71 | 76 | ||
72 | if(dma0_stopped==1) /* Stop */ | 77 | if(dma0_stopped==1 || dma0_stopped==2) /* Stop / Pause */ |
73 | { | 78 | { |
74 | DMPREC&=0xFFFE; /* Stop MCBSP DMA0 */ | 79 | /* Stop MCBSP DMA0 */ |
75 | audiohw_stop(); | 80 | DMPREC &= 0xFFFE; |
76 | DMSFC0 = 2 << 12 | 1 << 11; | 81 | /* Shut the transmitter down */ |
77 | sdem_level=0; | 82 | audiohw_stop(); |
78 | return; | 83 | |
79 | } | 84 | /* Stop the HPIB transfer if it is running */ |
80 | 85 | DMA_TRG = 0; | |
81 | if(dsp_level==DSP_BUFFER_SIZE || sdem_level==sdem_dsp_size) | 86 | |
82 | { | 87 | /* Reset the following variables for DMA restart */ |
83 | if(dma0_stopped==2) /* Pause */ | 88 | sdem_level = 0; |
84 | { | 89 | dsp_level = 0; |
85 | DMPREC&=0xFFFE; /* Stop MCBSP DMA0 */ | 90 | last_size = 0; |
86 | audiohw_stop(); | 91 | |
87 | return; | 92 | return; |
88 | } | 93 | } |
89 | } | ||
90 | |||
91 | /* If the sdem_level is equal to the buffer size the ARM code gave | ||
92 | * (sdem_dsp_size) then reset the size and ask the arm for another buffer | ||
93 | */ | ||
94 | if(sdem_level==sdem_dsp_size) | ||
95 | { | ||
96 | sdem_level=0; | ||
97 | |||
98 | /* Get a new buffer (location and size) from ARM */ | ||
99 | status.msg = MSG_REFILL; | ||
100 | waiting=1; | ||
101 | |||
102 | startack(); | ||
103 | } | ||
104 | |||
105 | if(!waiting) | ||
106 | { | ||
107 | /* Size is in bytes (but forced 32 bit transfers */ | ||
108 | if( (dsp_level + (sdem_dsp_size - sdem_level) ) > DSP_BUFFER_SIZE) | ||
109 | { | ||
110 | last_size = DSP_BUFFER_SIZE-dsp_level; | ||
111 | } | ||
112 | else | ||
113 | { | ||
114 | last_size = sdem_dsp_size-sdem_level; | ||
115 | } | ||
116 | |||
117 | /* DSP addresses are 16 bit (word) */ | ||
118 | DSP_ADDRL = (unsigned short)data + (dma0_unlocked >> 1) + (dsp_level>>1); | ||
119 | DSP_ADDRH = 0; | ||
120 | |||
121 | /* SDRAM addresses are 8 bit (byte) | ||
122 | * Warning: These addresses are forced to 32 bit alignment! | ||
123 | */ | ||
124 | sdem_addr = ((unsigned long)sdem_addrh << 16 | sdem_addrl) + sdem_level; | ||
125 | SDEM_ADDRL = sdem_addr & 0xffff; | ||
126 | SDEM_ADDRH = sdem_addr >> 16; | ||
127 | 94 | ||
128 | /* Set the size of the SDRAM to SARAM transfer (demac transfer) */ | 95 | /* If the sdem_level is equal to the buffer size the ARM code gave |
129 | DMA_SIZE = last_size; | 96 | * (sdem_dsp_size) then reset the size and ask the arm for another buffer |
97 | */ | ||
98 | if(sdem_level == sdem_dsp_size) | ||
99 | { | ||
100 | sdem_level=0; | ||
101 | |||
102 | /* Get a new buffer (location and size) from ARM */ | ||
103 | status.msg = MSG_REFILL; | ||
104 | waiting=1; | ||
105 | |||
106 | /* trigger DSPHINT on the ARM */ | ||
107 | int_arm(); | ||
108 | } | ||
109 | |||
110 | if(!waiting) | ||
111 | { | ||
112 | /* Size is in bytes (but forced 32 bit transfers). Comparison is | ||
113 | * against DSP_BUFFER_SIZE because it is in words and this needs to | ||
114 | * compare against half the total size in bytes. */ | ||
115 | if( dsp_level + sdem_dsp_size - sdem_level > DSP_BUFFER_SIZE) | ||
116 | { | ||
117 | last_size = DSP_BUFFER_SIZE - dsp_level; | ||
118 | } | ||
119 | else | ||
120 | { | ||
121 | last_size = sdem_dsp_size - sdem_level; | ||
122 | } | ||
123 | |||
124 | /* DSP addresses are 16 bit (word). dsp_level is in bytes so it needs to | ||
125 | * be converted to words. */ | ||
126 | DSP_ADDRL = (unsigned short)data + dma0_unlocked + (dsp_level >> 1); | ||
127 | DSP_ADDRH = 0; | ||
128 | |||
129 | /* SDRAM addresses are 8 bit (byte) | ||
130 | * Warning: These addresses are forced to 32 bit alignment! | ||
131 | */ | ||
132 | sdem_addr = ((unsigned long)sdem_addrh << 16 | sdem_addrl) + sdem_level; | ||
133 | SDEM_ADDRL = sdem_addr & 0xffff; | ||
134 | SDEM_ADDRH = sdem_addr >> 16; | ||
135 | |||
136 | /* Set the size of the SDRAM to SARAM transfer (demac transfer) */ | ||
137 | DMA_SIZE = last_size; | ||
130 | 138 | ||
131 | DMA_CTRL = 0; | 139 | DMA_CTRL = 0; |
132 | 140 | ||
133 | /* These are just debug signals that are not used/needed right now */ | 141 | /* These are just debug signals that are not used/needed right now */ |
134 | status.payload.refill._DMA_TRG = DMA_TRG; | 142 | status.payload.refill._DMA_TRG = DMA_TRG; |
135 | status.payload.refill._SDEM_ADDRH = SDEM_ADDRH; | 143 | status.payload.refill._SDEM_ADDRH = SDEM_ADDRH; |
136 | status.payload.refill._SDEM_ADDRL = SDEM_ADDRL; | 144 | status.payload.refill._SDEM_ADDRL = SDEM_ADDRL; |
137 | status.payload.refill._DSP_ADDRH = DSP_ADDRH; | 145 | status.payload.refill._DSP_ADDRH = DSP_ADDRH; |
138 | status.payload.refill._DSP_ADDRL = DSP_ADDRL; | 146 | status.payload.refill._DSP_ADDRL = DSP_ADDRL; |
139 | 147 | ||
140 | /* Start the demac transfer */ | 148 | /* Start the demac transfer */ |
141 | DMA_TRG = 1; | 149 | DMA_TRG = 1; |
142 | } | 150 | } |
143 | } | 151 | } |
144 | 152 | ||
145 | /* This interupt handler is for the SARAM (on DSP) to McBSP IIS DMA transfer. | 153 | /* This interupt handler is for the SARAM (on DSP) to McBSP IIS DMA transfer. |
146 | * It interupts at 1/2 empty and empty so that we can start filling a new buffer | 154 | * It interupts at 1/2 empty and empty so that we can start filling a new buffer |
147 | * from SDRAM when a half is free. dsp_level should always be full when this | 155 | * from SDRAM when a half is free. dsp_level should always be full when this |
148 | * interupt occurs except for the initial start. | 156 | * interupt occurs except for the initial start. */ |
149 | */ | ||
150 | interrupt void handle_dma0(void) | 157 | interrupt void handle_dma0(void) |
151 | { | 158 | { |
152 | /* Byte offset to half-buffer locked by DMA0. | 159 | /* Byte offset to half-buffer locked by DMA0. |
153 | 0 for top, PCM_SIZE/2 for bottom */ | 160 | 0 for top, DSP_BUFFER_SIZE/2 for bottom */ |
154 | unsigned short dma0_locked; | 161 | unsigned short dma0_locked; |
155 | 162 | ||
156 | IFR = 1 << 6; | 163 | IFR = 1 << 6; |
157 | 164 | ||
158 | /* DMSRC0 is the beginning of the DMA0-locked SARAM half-buffer. */ | 165 | /* DMSRC0 is the beginning of the DMA0-locked SARAM half-buffer. */ |
159 | DMSA = 0x00 /* DMSRC0 */; | 166 | DMSA = 0x00 /* DMSRC0 (banked register, see page 133 of SPRU302B */; |
160 | dma0_locked = (DMSDN << 1) & (DSP_BUFFER_SIZE); | ||
161 | dma0_unlocked = dma0_locked ^ (DSP_BUFFER_SIZE); | ||
162 | 167 | ||
163 | dsp_level = 0; | 168 | /* Note that these address offsets (dma0_locked and dma0_unlocked are in |
169 | * words. */ | ||
170 | dma0_locked = DMSDN & (DSP_BUFFER_SIZE>>1); | ||
171 | dma0_unlocked = dma0_locked ^ (DSP_BUFFER_SIZE>>1); | ||
172 | |||
173 | dsp_level = 0; | ||
164 | 174 | ||
165 | /* Start the SDRAM to SARAM copy */ | 175 | /* Start the SDRAM to SARAM copy */ |
166 | rebuffer(); | 176 | rebuffer(); |
167 | } | 177 | } |
168 | 178 | ||
169 | /* This interupt handler runs every time a DMA transfer is complete from SDRAM | 179 | /* This interupt handler runs every time a DMA transfer is complete from SDRAM |
170 | * to the SARAM buffer. It is used to update the SARAM buffer level | 180 | * to the SARAM buffer. It is used to update the SARAM buffer level |
171 | * (dsp_level), the SDRAM buffer level (sdem_level) and to rebuffer if the dsp | 181 | * (dsp_level), the SDRAM buffer level (sdem_level) and to rebuffer if the dsp |
172 | * buffer is not full. | 182 | * buffer is not full. */ |
173 | */ | ||
174 | interrupt void handle_dmac(void) { | 183 | interrupt void handle_dmac(void) { |
175 | IFR = 1 << 11; | 184 | IFR = 1 << 11; /* Clear interrupt */ |
176 | 185 | ||
177 | dsp_level+=last_size; | 186 | /* dsp_level and sdem_level are in bytes */ |
178 | sdem_level+=last_size; | 187 | dsp_level += last_size; |
179 | 188 | sdem_level += last_size; | |
180 | if(dsp_level<DSP_BUFFER_SIZE) | 189 | |
190 | /* compare to DSP_BUFFER_SIZE without a divide because it is in words and | ||
191 | * we want half the total size in bytes. */ | ||
192 | if(dsp_level < DSP_BUFFER_SIZE) | ||
181 | { | 193 | { |
182 | rebuffer(); | 194 | rebuffer(); |
183 | } | 195 | } |
184 | } | 196 | } |
185 | 197 | ||
186 | void dma_init(void) { | 198 | void dma_init(void) { |
187 | /* Configure SARAM to McBSP DMA */ | 199 | /* Initialize some of the global variables to known values avoiding the |
200 | * .cinit section. */ | ||
201 | dsp_level = 0; | ||
202 | sdem_level = 0; | ||
203 | |||
204 | last_size = 0; | ||
205 | dma0_unlocked = 0; | ||
206 | dma0_stopped = 1; | ||
188 | 207 | ||
208 | waiting = 0; | ||
209 | |||
210 | /* Configure SARAM to McBSP DMA */ | ||
211 | |||
189 | /* Event XEVT0, 32-bit transfers, 0 frame count */ | 212 | /* Event XEVT0, 32-bit transfers, 0 frame count */ |
190 | DMSFC0 = 2 << 12 | 1 << 11; | 213 | DMSFC0 = 2 << 12 | 1 << 11; |
191 | 214 | ||
192 | /* Interrupts generated, Half and full buffer. | 215 | /* Interrupts generated, Half and full buffer. |
193 | * ABU mode, From data space with postincrement, to data space with no | 216 | * ABU mode, From data space with postincrement, to data space with no |
194 | * change | 217 | * change |
195 | */ | 218 | */ |
196 | DMMCR0 = 1 << 14 | 1 << 13 | | 219 | DMMCR0 = 1 << 14 | 1 << 13 | |
197 | 1 << 12 | 1 << 8 | 1 << 6 | 1; | 220 | 1 << 12 | 1 << 8 | 1 << 6 | 1; |
198 | 221 | ||
199 | /* Set the source (incrementing) location */ | 222 | /* Set the source (incrementing) location */ |
200 | DMSRC0 = (unsigned short)&data; | 223 | DMSRC0 = (unsigned short)&data; |
201 | 224 | ||
202 | /* Set the destination (static) location to the McBSP IIS interface */ | 225 | /* Set the destination (static) location to the McBSP IIS interface */ |
203 | DMDST0 = (unsigned short)&DXR20; | 226 | DMDST0 = (unsigned short)&DXR20; |
204 | 227 | ||
205 | /* Set the size of the buffer */ | 228 | /* Set the size of the buffer */ |
206 | DMCTR0 = sizeof(data); | 229 | DMCTR0 = sizeof(data); |
207 | 230 | ||
diff --git a/firmware/target/arm/tms320dm320/dsp/dma.h b/firmware/target/arm/tms320dm320/dsp/dma.h index 5c483a503e..c55fc1507b 100644 --- a/firmware/target/arm/tms320dm320/dsp/dma.h +++ b/firmware/target/arm/tms320dm320/dsp/dma.h | |||
@@ -22,9 +22,10 @@ | |||
22 | #ifndef DMA_H | 22 | #ifndef DMA_H |
23 | #define DMA_H | 23 | #define DMA_H |
24 | 24 | ||
25 | #include "ipc.h" | ||
26 | |||
27 | void dma_init(void); | 25 | void dma_init(void); |
26 | void rebuffer(void); | ||
27 | |||
28 | extern int waiting; | ||
28 | 29 | ||
29 | extern volatile unsigned short dma0_stopped; | 30 | extern volatile unsigned short dma0_stopped; |
30 | 31 | ||
diff --git a/firmware/target/arm/tms320dm320/dsp/dsp-image.h b/firmware/target/arm/tms320dm320/dsp/dsp-image.h index 80f582d238..f7ec449a33 100644 --- a/firmware/target/arm/tms320dm320/dsp/dsp-image.h +++ b/firmware/target/arm/tms320dm320/dsp/dsp-image.h | |||
@@ -20,94 +20,46 @@ | |||
20 | * | 20 | * |
21 | */ | 21 | */ |
22 | static const unsigned short _section_text[] = { | 22 | static const unsigned short _section_text[] = { |
23 | 0xe808, 0x75f8, 0x0008, 0x0280, 0xfc00, 0xf495, 0x4a08, 0x4a09, 0x4a0a, 0x4a0b, 0x4a0c, 0x4a0d, 0x4a10, 0x4a11, 0x4a12, 0x4a13, 0x4a14, 0x4a15, 0x4a16, 0x4a17, 0x4a17, 0x4a19, 0x4a0e, 0x4a06, 0x4a07, 0x4a1a, 0x4a1d, 0x4a1b, 0x4a1c, 0x68f8, 0x0007, 0x7d3f, 0x69f8, 0x0007, 0x4000, 0x68f8, 0x001d, 0xfffc, 0x4818, 0x68f8, 0x0018, 0xfffe, 0x7711, 0x0001, 0x4a08, 0x7681, 0x0001, 0x76f8, 0x28de, 0x0001, 0x10f8, 0x28e6, 0x76f8, 0x28e7, 0x0000, 0xfa44, 0x00ca, 0xf495, 0xeeff, 0x7712, 0x0054, 0x960f, 0xf830, 0x00c8, 0x7711, 0x0054, 0x6981, 0x0001, 0xf074, 0x02e4, 0xf073, 0x00ca, 0xf074, 0x0130, 0xee01, 0x8a18, 0xf495, 0x8a1c, 0x8a1b, 0x8a1d, 0x8a1a, 0x8a07, 0x8a06, 0x8a0e, 0x8a19, 0x8a17, 0x8a17, 0x8a16, 0x8a15, 0x8a14, 0x8a13, 0x8a12, 0x8a11, 0x8a10, 0x8a0d, 0x8a0c, 0x8a0b, 0x8a0a, 0x8a09, 0x8a08, 0xf4eb, 0xeeff, 0x76f8, 0x28de, 0x0000, 0xf074, 0x0080, 0xee01, 0xfc00, 0x10f8, 0x28de, 0xf844, 0x00f7, 0xf4e1, 0xf495, 0x10f8, 0x28de, 0xf845, 0x00f1, 0xfc00, 0xeefb, 0x4818, 0xf000, 0x0006, 0x76f8, 0x288d, 0x0002, 0x8004, 0x7600, 0x0051, 0x1006, 0x8001, 0x1004, 0x8002, 0xf274, 0x0396, 0xf020, 0x288e, 0xf074, 0x00e5, 0xf074, 0x00ed, 0xee05, 0x76f8, 0x28de, 0x0002, 0xfc00, 0x4a11, 0x7711, 0x0026, 0x7712, 0x0001, 0x7681, 0x0010, 0x7713, 0x0001, 0x7711, 0x0000, 0xeefe, 0x7681, 0xffff, 0xe501, 0xf495, 0xf6bb, 0xf074, 0x02b9, 0xf074, 0x028a, 0x7600, 0x2cad, 0xf074, 0x00f8, 0xf4e1, 0xf495, 0xf073, 0x012c, 0x4a11, 0x60f8, 0x28e2, 0x4000, 0xfa30, 0x013e, 0xf495, 0xeefe, 0x10f8, 0x28e3, 0x08f8, 0x28e1, 0xf844, 0x014b, 0x60f8, 0x28e6, 0x0002, 0xf820, 0x014b, 0x7711, 0x0054, 0x6881, 0xfffe, 0xf074, 0x02ef, 0xf073, 0x01b9, 0x10f8, 0x28e3, 0x08f8, 0x28e1, 0xf844, 0x015c, 0x76f8, 0x28e3, 0x0000, 0x76f8, 0x288d, 0x0003, 0x76f8, 0x28e7, 0x0001, 0xf074, 0x00e5, 0x10f8, 0x28e7, 0xf844, 0x01b9, 0x10f8, 0x28e1, 0x00f8, 0x28e2, 0x08f8, 0x28e3, 0x8811, 0xf495, 0x7710, 0x4000, 0xf6a9, 0xf820, 0x0173, 0xf020, 0x4000, 0xf273, 0x0177, 0x08f8, 0x28e2, 0x10f8, 0x28e1, 0x08f8, 0x28e3, 0x80f8, 0x28e4, 0xf6b8, 0xf020, 0x8000, 0x6ff8, 0x28e5, 0x0c1f, 0x6ff8, 0x28e2, 0x0c1f, 0x75f8, 0x0008, 0x8002, 0xe800, 0x75f8, 0x0008, 0x8003, 0x10f8, 0x28df, 0xf1ef, 0xf3e1, 0x10f8, 0x28e0, 0xf2a0, 0x00f8, 0x28e3, 0x4e00, 0xf020, 0xffff, 0x5700, 0xf280, 0x75f8, 0x0008, 0x8000, 0x5600, 0xf0f0, 0x75f8, 0x0008, 0x8001, 0xe800, 0x75f8, 0x28e4, 0x8004, 0x75f8, 0x0008, 0x8005, 0x74f8, 0x288f, 0x8006, 0x74f8, 0x2890, 0x8001, 0x74f8, 0x2891, 0x8000, 0x74f8, 0x2892, 0x8003, 0xe801, 0x74f8, 0x2893, 0x8002, 0x75f8, 0x0008, 0x8006, 0xee02, 0x8a11, 0xfc00, 0xf495, 0x4a08, 0x4a09, 0x4a0a, 0x4a0b, 0x4a0c, 0x4a0d, 0x4a10, 0x4a11, 0x4a12, 0x4a13, 0x4a14, 0x4a15, 0x4a16, 0x4a17, 0x4a17, 0x4a19, 0x4a0e, 0x4a06, 0x4a07, 0x4a1a, 0x4a1d, 0x4a1b, 0x4a1c, 0x68f8, 0x0007, 0x7d3f, 0x69f8, 0x0007, 0x4000, 0x68f8, 0x001d, 0xfffc, 0x4818, 0x68f8, 0x0018, 0xfffe, 0x7711, 0x0001, 0x4a08, 0x7681, 0x0040, 0x7711, 0x0055, 0x7681, 0x0000, 0x7711, 0x0057, 0x6f81, 0x0c41, 0xeeff, 0xf030, 0x4000, 0x8000, 0xf020, 0x4000, 0x60f8, 0x28e6, 0x0001, 0x1c00, 0x76f8, 0x28e2, 0x0000, 0xfa20, 0x0212, 0x80f8, 0x28e5, 0x7711, 0x0054, 0x6881, 0xfffe, 0xf074, 0x02ef, 0x7711, 0x0055, 0x7681, 0x0003, 0x7711, 0x0057, 0x7681, 0x2800, 0x76f8, 0x28e3, 0x0000, 0xf073, 0x0214, 0xf074, 0x0130, 0xee01, 0x8a18, 0xf495, 0x8a1c, 0x8a1b, 0x8a1d, 0x8a1a, 0x8a07, 0x8a06, 0x8a0e, 0x8a19, 0x8a17, 0x8a17, 0x8a16, 0x8a15, 0x8a14, 0x8a13, 0x8a12, 0x8a11, 0x8a10, 0x8a0d, 0x8a0c, 0x8a0b, 0x8a0a, 0x8a09, 0x8a08, 0xf4eb, 0xf495, 0x4a08, 0x4a09, 0x4a0a, 0x4a0b, 0x4a0c, 0x4a0d, 0x4a10, 0x4a11, 0x4a12, 0x4a13, 0x4a14, 0x4a15, 0x4a16, 0x4a17, 0x4a17, 0x4a19, 0x4a0e, 0x4a06, 0x4a07, 0x4a1a, 0x4a1d, 0x4a1b, 0x4a1c, 0x68f8, 0x0007, 0x7d3f, 0x69f8, 0x0007, 0x4000, 0x68f8, 0x001d, 0xfffc, 0x4818, 0x68f8, 0x0018, 0xfffe, 0x7711, 0x0001, 0x4a08, 0x7681, 0x0800, 0x10f8, 0x28e4, 0x00f8, 0x28e2, 0x80f8, 0x28e2, 0x7710, 0x4000, 0x7211, 0x28e2, 0x10f8, 0x28e4, 0xf5a9, 0xeeff, 0x00f8, 0x28e3, 0xfa20, 0x026f, 0x80f8, 0x28e3, 0xf074, 0x0130, 0xee01, 0x8a18, 0xf495, 0x8a1c, 0x8a1b, 0x8a1d, 0x8a1a, 0x8a07, 0x8a06, 0x8a0e, 0x8a19, 0x8a17, 0x8a17, 0x8a16, 0x8a15, 0x8a14, 0x8a13, 0x8a12, 0x8a11, 0x8a10, 0x8a0d, 0x8a0c, 0x8a0b, 0x8a0a, 0x8a09, 0x8a08, 0xf4eb, 0x4a11, 0x7711, 0x0055, 0x7681, 0x0003, 0x7711, 0x0057, 0x7681, 0x2800, 0x7711, 0x0055, 0x7681, 0x0004, 0x7711, 0x0057, 0x7681, 0x7141, 0x7711, 0x0055, 0x7681, 0x0000, 0x7711, 0x0057, 0x7681, 0x8000, 0x7711, 0x0055, 0x7681, 0x0001, 0x7711, 0x0057, 0x7681, 0x0022, 0x7711, 0x0055, 0x7681, 0x0002, 0x7711, 0x0057, 0x7681, 0x4000, 0x7711, 0x0054, 0x7681, 0x0080, 0x8a11, 0xfc00, 0x4a11, 0x7711, 0x0038, 0x7681, 0x0000, 0x7711, 0x0039, 0x7681, 0x0000, 0x7711, 0x0038, 0x7681, 0x0001, 0x7711, 0x0039, 0x7681, 0x0030, 0x7711, 0x0038, 0x7681, 0x000e, 0x7711, 0x0039, 0x7681, 0x0002, 0x7711, 0x0038, 0x7681, 0x0004, 0x7711, 0x0039, 0x7681, 0x00a0, 0x7711, 0x0038, 0x7681, 0x0005, 0x7711, 0x0039, 0x7681, 0x0000, 0x8a11, 0xfc00, 0x4a11, 0x7711, 0x0038, 0x7681, 0x0001, 0x7711, 0x0039, 0x6981, 0x0001, 0x8a11, 0xfc00, 0x4a11, 0x7711, 0x0038, 0x7681, 0x0001, 0x7711, 0x0039, 0x6881, 0xfffe, 0x8a11, 0xfc00, 0xf7be, 0xf6b9, 0xf4a0, 0xf6b7, 0xf6b5, 0xf6b6, 0xf7b8, 0x7718, 0x188d, 0x6bf8, 0x0018, 0x0fff, 0x68f8, 0x0018, 0xfffe, 0xf020, 0x2dbb, 0xf100, 0x0001, 0xf84d, 0x0326, 0xf6b8, 0xf495, 0xf020, 0x2dbb, 0xf073, 0x0320, 0x7ef8, 0x0012, 0xf000, 0x0001, 0x47f8, 0x0011, 0x7e92, 0x00f8, 0x0011, 0xf000, 0x0001, 0x7ef8, 0x0011, 0xf000, 0x0001, 0x6c89, 0x0315, 0xf7b8, 0xeefc, 0xf020, 0xffff, 0xf100, 0x0001, 0xf84d, 0x033e, 0xf6b8, 0xf495, 0xf020, 0xffff, 0xf273, 0x0338, 0x4e02, 0xf495, 0xf5e3, 0x5602, 0x7e00, 0x1100, 0xfa4c, 0x0336, 0x6b03, 0x0001, 0xf6b8, 0xee04, 0xf074, 0x0f88, 0xf074, 0x0344, 0x4a11, 0x4a16, 0xeeff, 0x10f8, 0x290b, 0xf4e3, 0x7211, 0x28e8, 0x10f8, 0x0011, 0xf845, 0x035c, 0x4811, 0xf000, 0x28e9, 0x8816, 0xf495, 0xf495, 0x10ee, 0xffff, 0xf4e3, 0x6ce9, 0xffff, 0x0356, 0x10f8, 0x290a, 0xf845, 0x0363, 0x10f8, 0x290a, 0xf4e3, 0x10f8, 0x2909, 0xf845, 0x036a, 0x10f8, 0x2909, 0xf4e3, 0x10f8, 0x290c, 0xf4e3, 0xf074, 0x0393, 0xf073, 0x036f, 0x4a11, 0x8811, 0x10f8, 0x290b, 0xf4e3, 0xf7b8, 0x10f8, 0x28e8, 0xf468, 0xf478, 0xf010, 0x0020, 0xf843, 0x0385, 0x10f8, 0x290c, 0xf4e3, 0xe801, 0xf073, 0x0391, 0x7212, 0x28e8, 0x10f8, 0x290c, 0x6bf8, 0x28e8, 0x0001, 0x70e2, 0x28e9, 0x0011, 0xf4e3, 0xe800, 0x8a11, 0xfc00, 0xf495, 0xf073, 0x0394, 0x4a11, 0xeef8, 0xf495, 0x710b, 0x0012, 0x110c, 0x710a, 0x0011, 0x7004, 0x0012, 0x8005, 0x7006, 0x0011, 0x4818, 0x7607, 0x0000, 0xf000, 0x0005, 0x8100, 0x8001, 0x7602, 0x03bd, 0x4818, 0x7603, 0x03d4, 0xf274, 0x0419, 0xf000, 0x0004, 0x4911, 0xf84d, 0x03ba, 0x7105, 0x0011, 0x7681, 0x0000, 0xee08, 0x8a11, 0xfc00, 0x4a11, 0xf495, 0x7102, 0x0011, 0x71e1, 0x0001, 0x0010, 0x71e1, 0x0002, 0x0012, 0xf5aa, 0xf820, 0x03cf, 0x7181, 0x0012, 0x8082, 0x6b81, 0x0001, 0x6be1, 0x0002, 0x0001, 0x8a11, 0xfc00, 0x4a11, 0xf110, 0x0001, 0x4a16, 0x8812, 0x4a17, 0x8913, 0xeefe, 0x7716, 0xffff, 0x7106, 0x0011, 0x11eb, 0x0001, 0xfa4c, 0x03e0, 0xf495, 0x6d96, 0x11e1, 0x0001, 0x8910, 0xf495, 0x71e1, 0x0002, 0x0013, 0xf5ab, 0xf820, 0x0407, 0x4813, 0xf520, 0x8910, 0xf495, 0xf495, 0xf6ae, 0xf820, 0x03fc, 0xf273, 0x03fd, 0xf495, 0x8917, 0xe767, 0x7000, 0x0012, 0x7001, 0x0017, 0x1081, 0xf074, 0x152d, 0x4817, 0x0081, 0x8081, 0x4816, 0x00e1, 0x0002, 0xee02, 0x80e1, 0x0002, 0x8a17, 0x4816, 0x8a16, 0x8a11, 0xfc00, 0xfc00, 0x80f8, 0x290b, 0xfc00, 0x80f8, 0x290c, 0xfc00, 0x4a11, 0x4a16, 0x4a17, 0xeef4, 0x8816, 0x1013, 0x8009, 0x1186, 0xf210, 0x0001, 0x8813, 0xf495, 0x7712, 0xffff, 0x7111, 0x0017, 0x7112, 0x0011, 0x10eb, 0x0001, 0xfa44, 0x042b, 0xf495, 0x6d92, 0x6ff8, 0x0012, 0x0e00, 0x800a, 0x4812, 0xfa45, 0x0513, 0x7604, 0x0000, 0x7605, 0x0000, 0x7606, 0x0000, 0x7607, 0xffff, 0xe925, 0x7608, 0x0000, 0x7186, 0x0012, 0x7182, 0x0012, 0x10f8, 0x0012, 0x08f8, 0x000b, 0xf845, 0x0465, 0x10f8, 0x0012, 0xf845, 0x0513, 0x1086, 0xf000, 0x0001, 0x4911, 0x8086, 0x8812, 0x7000, 0x0017, 0x10e2, 0xffff, 0xf5e3, 0x6b04, 0x0001, 0x7186, 0x0012, 0x7182, 0x0012, 0x6ce2, 0xffdb, 0x044d, 0x6b86, 0x0001, 0x4818, 0x7000, 0x0016, 0xf274, 0x0519, 0xf000, 0x0005, 0x4818, 0x7000, 0x0016, 0xf000, 0x0010, 0x8001, 0x4818, 0xf274, 0x056b, 0xf000, 0x0005, 0x7186, 0x0012, 0x1182, 0x7713, 0x004c, 0x10f8, 0x000b, 0x08f8, 0x0013, 0xf845, 0x04aa, 0x7713, 0x0068, 0x10f8, 0x000b, 0x08f8, 0x0013, 0xf845, 0x04a6, 0x7713, 0x006c, 0x10f8, 0x000b, 0x08f8, 0x0013, 0xf844, 0x04b3, 0x4812, 0xf000, 0x0001, 0x8812, 0x7086, 0x0012, 0x6082, 0x006c, 0xf830, 0x04a2, 0xf273, 0x04b2, 0x6905, 0x0040, 0xf273, 0x04ac, 0x6905, 0x0100, 0xf273, 0x04ac, 0x6905, 0x0020, 0x6905, 0x0080, 0x1086, 0xf000, 0x0001, 0x8812, 0xf495, 0x8086, 0x1182, 0x7712, 0x006e, 0x10f8, 0x000b, 0x8108, 0x08f8, 0x0012, 0xfa45, 0x04f0, 0x6b86, 0x0001, 0x7712, 0x0073, 0x10f8, 0x000b, 0x08f8, 0x0012, 0xf845, 0x04dd, 0x10f8, 0x290b, 0xf4e3, 0x4818, 0xf000, 0x0010, 0x8000, 0x4818, 0xf274, 0x073a, 0xf000, 0x0005, 0x7000, 0x0017, 0x1109, 0xf5e3, 0x0004, 0x8004, 0x10f8, 0x290c, 0xf4e3, 0xf073, 0x050c, 0x4818, 0x7000, 0x0017, 0xf000, 0x0010, 0x8001, 0x4818, 0xf000, 0x0004, 0x8002, 0x1009, 0x8003, 0x4818, 0xf274, 0x0632, 0xf000, 0x0005, 0xf073, 0x050c, 0xf020, 0x0160, 0x1805, 0x8812, 0xf495, 0xf495, 0x6ce2, 0xffc0, 0x0504, 0x6b10, 0x0001, 0x7110, 0x0012, 0xf7b8, 0x7182, 0x0012, 0xf273, 0x050c, 0x1004, 0x4e82, 0x6b10, 0x0001, 0x7110, 0x0012, 0x1004, 0x7182, 0x0012, 0x8082, 0x710a, 0x0010, 0x7186, 0x0012, 0xf5aa, 0xf830, 0x043a, 0x1004, 0xee0c, 0x8a17, 0x8a16, 0x8a11, 0xfc00, 0x4a11, 0x8812, 0xf273, 0x0533, 0x7102, 0x0011, 0xf273, 0x0531, 0x6982, 0x0010, 0xf273, 0x0531, 0x6982, 0x0001, 0xf273, 0x0531, 0x6982, 0x0002, 0xf273, 0x0531, 0x6982, 0x0008, 0x6982, 0x0004, 0x6b81, 0x0001, 0x7181, 0x0013, 0xf7b8, 0x1183, 0x10f8, 0x000b, 0xf468, 0xf478, 0xf010, 0x002b, 0xf846, 0x0559, 0x7713, 0x002b, 0x10f8, 0x000b, 0x08f8, 0x0013, 0xf845, 0x0527, 0x7713, 0x0020, 0x10f8, 0x000b, 0x08f8, 0x0013, 0xf845, 0x052f, 0x7713, 0x0023, 0x10f8, 0x000b, 0x08f8, 0x0013, 0xf845, 0x052b, 0xf073, 0x0569, 0x7713, 0x002d, 0x10f8, 0x000b, 0x08f8, 0x0013, 0xf845, 0x0523, 0x7713, 0x0030, 0x10f8, 0x000b, 0x08f8, 0x0013, 0xf845, 0x051f, 0x8a11, 0xfc00, 0x4a11, 0x4a16, 0x4a17, 0xeef6, 0xf495, 0x710e, 0x0011, 0x7181, 0x0012, 0x8816, 0x6082, 0x002a, 0xfa20, 0x0599, 0x710f, 0x0017, 0x1087, 0xf000, 0x0001, 0x8812, 0xf7b8, 0x8087, 0x1082, 0x80e6, 0x0001, 0x10e6, 0x0001, 0xf842, 0x058d, 0xf484, 0x80e6, 0x0001, 0x6986, 0x0001, 0x1081, 0xf000, 0x0001, 0x8812, 0xf495, 0x8081, 0x6082, 0x002e, 0xf830, 0x05de, 0xf073, 0x062d, 0xe782, 0x4812, 0xf010, 0x0001, 0x8813, 0xf495, 0xec09, 0x769b, 0x0000, 0x7181, 0x0013, 0xf7b8, 0x1183, 0x10f8, 0x000b, 0xf468, 0xf478, 0xf010, 0x0030, 0xf843, 0x05c6, 0x10f8, 0x000b, 0xf468, 0xf478, 0xf010, 0x003a, 0xf842, 0x05c6, 0x8192, 0x1081, 0xf000, 0x0001, 0x8813, 0xf495, 0x8081, 0x1183, 0x10f8, 0x000b, 0xf468, 0xf478, 0xf010, 0x0030, 0xf842, 0x05ae, 0x1000, 0xf844, 0x05d3, 0x7712, 0x002e, 0x10f8, 0x000b, 0x08f8, 0x0012, 0xf845, 0x05de, 0xf073, 0x062d, 0x4818, 0xf074, 0x0f9f, 0x80e6, 0x0001, 0x7181, 0x0012, 0x6082, 0x002e, 0xf820, 0x062d, 0x1081, 0xf000, 0x0001, 0x8812, 0xf495, 0x8081, 0x6082, 0x002a, 0xf830, 0x0622, 0xe782, 0x4812, 0xf010, 0x0001, 0x8813, 0xf495, 0xec09, 0x769b, 0x0000, 0x7181, 0x0013, 0xf7b8, 0x1183, 0x10f8, 0x000b, 0xf468, 0xf478, 0xf010, 0x0030, 0xf843, 0x0615, 0x10f8, 0x000b, 0xf468, 0xf478, 0xf010, 0x003a, 0xf842, 0x0615, 0x8192, 0x1081, 0xf000, 0x0001, 0x8813, 0xf495, 0x8081, 0x1183, 0x10f8, 0x000b, 0xf468, 0xf478, 0xf010, 0x0030, 0xf842, 0x05fd, 0x1000, 0xf845, 0x061d, 0x4818, 0xf074, 0x0f9f, 0xf073, 0x061e, 0xe800, 0xf273, 0x062d, 0x80e6, 0x0002, 0x1087, 0xf000, 0x0001, 0x8812, 0xf495, 0x8087, 0x1082, 0x80e6, 0x0002, 0x6b81, 0x0001, 0xee0a, 0x8a17, 0x8a16, 0x8a11, 0xfc00, 0x4a11, 0x4a16, 0x4a17, 0xeefa, 0xf495, 0x8002, 0x100d, 0x710b, 0x0011, 0x8003, 0x710c, 0x0012, 0x1081, 0x710a, 0x0017, 0xf000, 0x0001, 0x8081, 0x8811, 0xf495, 0xf495, 0x1281, 0x8004, 0xf845, 0x072f, 0x7102, 0x0011, 0xf7b8, 0x71e1, 0x0002, 0x0011, 0x10f8, 0x0011, 0xf843, 0x0677, 0x1004, 0xf010, 0x0001, 0x8813, 0xf495, 0x7710, 0xffff, 0x10eb, 0x0001, 0xfa44, 0x065c, 0xf495, 0x6d90, 0xf5a9, 0xf820, 0x0677, 0x7005, 0x0011, 0x7102, 0x0011, 0x11e1, 0x0001, 0x10f8, 0x000b, 0xf468, 0x7105, 0x0011, 0xf478, 0x08f8, 0x0011, 0xf847, 0x0692, 0xf073, 0x0696, 0x1004, 0xf010, 0x0001, 0x8811, 0xf495, 0x7713, 0xffff, 0x10e9, 0x0001, 0xfa44, 0x067e, 0xf495, 0x6d93, 0x7102, 0x0011, 0x7005, 0x0013, 0x11e1, 0x0001, 0x10f8, 0x000b, 0xf468, 0xf478, 0x08f8, 0x0013, 0xf846, 0x0696, 0xf273, 0x0698, 0x7105, 0x0011, 0x8911, 0xf495, 0x4811, 0x0082, 0x8082, 0x4811, 0xf274, 0x15cd, 0xf000, 0x0001, 0x8816, 0x4808, 0xf845, 0x0735, 0xf7b8, 0xf495, 0x1105, 0xf768, 0xf778, 0x09f8, 0x0011, 0xe762, 0xf84a, 0x06cb, 0x7102, 0x0013, 0x961f, 0xf830, 0x06cb, 0x7105, 0x0010, 0x4916, 0xf4a9, 0xf310, 0x0001, 0x8913, 0xf830, 0x06c6, 0x4911, 0x0905, 0xf310, 0x0001, 0x891a, 0xf495, 0xf072, 0x06c5, 0x769b, 0x0020, 0x4911, 0x4812, 0x0905, 0xf600, 0x8812, 0x1105, 0xf640, 0x10f8, 0x0008, 0xf845, 0x06fa, 0x4812, 0xf010, 0x0001, 0x8813, 0x1004, 0xf010, 0x0001, 0x8814, 0xf640, 0xf010, 0x0001, 0x881a, 0xf495, 0xf072, 0x06e8, 0x10ec, 0x0001, 0x809b, 0x10f8, 0x0008, 0xf845, 0x06e9, 0xf310, 0x0001, 0x8914, 0xf495, 0x7710, 0x0001, 0xf6ac, 0xfa20, 0x06fa, 0xf310, 0x0001, 0xf310, 0x0001, 0x891a, 0xf495, 0xf072, 0x06f9, 0x769b, 0x0000, 0x1105, 0x4812, 0xf600, 0xf768, 0xf778, 0x09f8, 0x0011, 0xf84a, 0x071b, 0x7102, 0x0013, 0x961f, 0xf820, 0x071b, 0x7105, 0x0010, 0xf4a9, 0xf010, 0x0001, 0x8812, 0xf830, 0x071b, 0x4910, 0x4811, 0xf620, 0xf010, 0x0001, 0x881a, 0xf495, 0xf072, 0x071a, 0x769a, 0x0020, 0x4911, 0x4816, 0xf600, 0x8811, 0xf495, 0xf495, 0x7681, 0x0000, 0x7000, 0x0017, 0x1103, 0xf7e3, 0xf495, 0x4816, 0xf274, 0x1728, 0xf495, 0x4816, 0xf073, 0x0735, 0x7000, 0x0017, 0x1103, 0xf7e3, 0xf020, 0x2b68, 0xee06, 0x8a17, 0x8a16, 0x8a11, 0xfc00, 0x4a11, 0xf120, 0x290d, 0x8811, 0x4a16, 0x4a17, 0x6fe1, 0x0001, 0x0e00, 0xeef6, 0x8817, 0xf495, 0x710e, 0x0013, 0xf200, 0x018f, 0x8004, 0xf210, 0x0001, 0x8812, 0x7605, 0x0000, 0x8006, 0xf070, 0x018f, 0x769a, 0x0020, 0x7104, 0x0012, 0x7682, 0x0000, 0xf120, 0x290d, 0x1004, 0xf7b8, 0xf010, 0x0001, 0x8107, 0x8004, 0x71e1, 0x0003, 0x0014, 0x11f8, 0x0014, 0xf768, 0xf778, 0xf310, 0x0064, 0x8812, 0xf84e, 0x07a7, 0xf495, 0x7715, 0x0064, 0x11f8, 0x0014, 0x09f8, 0x0015, 0xf84d, 0x07ea, 0x11f8, 0x0014, 0xf768, 0xf778, 0xf310, 0x0047, 0xf84e, 0x0795, 0xe947, 0x10f8, 0x0014, 0x08f8, 0x000b, 0xf845, 0x07fa, 0xe925, 0x10f8, 0x0014, 0x08f8, 0x000b, 0xf845, 0x07d8, 0xe945, 0x10f8, 0x0014, 0x08f8, 0x000b, 0xf845, 0x07fa, 0xf073, 0x0815, 0x7715, 0x0058, 0x11f8, 0x0014, 0x09f8, 0x0015, 0xf84d, 0x07ea, 0x7715, 0x0063, 0x11f8, 0x0014, 0x09f8, 0x0015, 0xf84d, 0x080a, 0xf073, 0x0815, 0x10f8, 0x0014, 0xf468, 0xf478, 0xf010, 0x0070, 0xf846, 0x07c8, 0x10f8, 0x0014, 0xf468, 0xf478, 0xf010, 0x006f, 0xf842, 0x07ea, 0xe742, 0x7710, 0x0002, 0x6dea, 0xff9b, 0xf6aa, 0xf820, 0x07fa, 0xe969, 0x10f8, 0x0014, 0x08f8, 0x000b, 0xf845, 0x07ea, 0xf073, 0x0815, 0xe975, 0x10f8, 0x0014, 0x08f8, 0x000b, 0xf845, 0x07ea, 0xe978, 0x10f8, 0x0014, 0x08f8, 0x000b, 0xf845, 0x07ea, 0xf073, 0x0815, 0x7713, 0x2b6f, 0x7107, 0x0012, 0xe510, 0x1183, 0x4812, 0xf84d, 0x08f2, 0x71eb, 0x0001, 0x0011, 0x6e81, 0x07e1, 0x709a, 0x0011, 0xf073, 0x08f2, 0x4818, 0xf000, 0x0005, 0x8000, 0x4818, 0xf000, 0x0004, 0x8001, 0x7002, 0x0013, 0xf274, 0x0d3e, 0xf495, 0x4811, 0xf073, 0x0815, 0x4818, 0xf000, 0x0005, 0x8000, 0x4818, 0xf000, 0x0004, 0x8001, 0x7002, 0x0013, 0xf274, 0x08f7, 0xf495, 0x4811, 0xf073, 0x0815, 0x1183, 0xf300, 0x0001, 0x8183, 0x8913, 0xf010, 0x0001, 0xe510, 0x8004, 0x6881, 0xfffd, 0x7181, 0x0012, 0x61f8, 0x0012, 0x0002, 0xfa20, 0x0842, 0x7716, 0x0000, 0x10e1, 0x0003, 0x7713, 0x0075, 0x11f8, 0x0008, 0x09f8, 0x0013, 0xf84d, 0x0842, 0x7713, 0x006f, 0x11f8, 0x0008, 0x09f8, 0x0013, 0xf84d, 0x0842, 0x7713, 0x0078, 0x11f8, 0x0008, 0x09f8, 0x0013, 0xf84d, 0x0842, 0x7713, 0x0058, 0x11f8, 0x0008, 0x09f8, 0x0013, 0xf84d, 0x0842, 0x7716, 0x0001, 0x1005, 0xf844, 0x0853, 0x10f8, 0x0016, 0xf845, 0x085b, 0x7104, 0x0012, 0x7682, 0x002b, 0x6b04, 0xffff, 0xf273, 0x085e, 0x7181, 0x0012, 0x7104, 0x0012, 0x7682, 0x002d, 0x6b04, 0xffff, 0x7181, 0x0012, 0x1005, 0xf844, 0x086d, 0x6c86, 0x086d, 0x61f8, 0x0012, 0x0004, 0xf820, 0x086d, 0x7104, 0x0012, 0x7682, 0x0020, 0x6b04, 0xffff, 0x7181, 0x0012, 0x61f8, 0x0012, 0x0001, 0xf830, 0x0885, 0x1007, 0x0804, 0xf7b8, 0xf000, 0x018f, 0x11f8, 0x0008, 0xf768, 0xf778, 0x09e1, 0x0001, 0xf84e, 0x0885, 0x4917, 0xf520, 0xf273, 0x0886, 0xf200, 0x0001, 0x1007, 0x8008, 0x1004, 0xf000, 0x0001, 0x8000, 0x7601, 0x0000, 0x7602, 0x0190, 0x1008, 0xf074, 0x150d, 0x8812, 0xf495, 0xe770, 0xf6aa, 0x8004, 0xf830, 0x08ad, 0xf010, 0x0002, 0x8812, 0x4817, 0x0804, 0xf000, 0x0001, 0x4808, 0xf845, 0x08ab, 0xf010, 0x0001, 0x881a, 0xf495, 0xf072, 0x08aa, 0x769a, 0x0020, 0x7687, 0x0000, 0xe712, 0x960b, 0xf830, 0x08c7, 0x1107, 0x1008, 0xf620, 0xf010, 0x0001, 0x8812, 0xf495, 0x7710, 0xffff, 0xf4aa, 0xfa30, 0x08f1, 0x7106, 0x0011, 0x7312, 0x001a, 0xf072, 0x08c4, 0x7699, 0x0020, 0xf073, 0x08f1, 0x7107, 0x0010, 0x7108, 0x0013, 0xf4ab, 0xfa30, 0x08db, 0x7106, 0x0012, 0x4910, 0x4813, 0xf620, 0xf010, 0x0001, 0x881a, 0xf495, 0xf072, 0x08da, 0x769a, 0x0030, 0x4816, 0x1a05, 0x8816, 0xf495, 0xf495, 0x6c86, 0x08e6, 0xe712, 0x960d, 0xf820, 0x08f1, 0xe731, 0xf4a9, 0xf830, 0x08f1, 0x7712, 0x290d, 0xe510, 0x7681, 0x0030, 0x7007, 0x0012, 0x1007, 0xee0a, 0x8a17, 0x8a16, 0x8a11, 0xfc00, 0x4a11, 0x8812, 0xeefe, 0xf495, 0x7106, 0x0014, 0x1184, 0xf693, 0xf030, 0x0001, 0x7105, 0x0015, 0xf600, 0x7104, 0x0013, 0xf000, 0x0001, 0x8811, 0x7084, 0x0011, 0xf000, 0x0001, 0x5781, 0x8084, 0x56f8, 0x2b92, 0x4e00, 0xf274, 0x110b, 0xf495, 0xf640, 0xf7b8, 0x10f8, 0x0008, 0xfa42, 0x091f, 0x7711, 0x0000, 0x7711, 0x0001, 0x10f8, 0x0011, 0xfa45, 0x092a, 0x7083, 0x0011, 0xf274, 0x12ea, 0xf495, 0xf640, 0xf540, 0xf7b8, 0x71e2, 0x0003, 0x0011, 0x10f8, 0x0011, 0xf468, 0xf478, 0xf010, 0x0065, 0xf846, 0x0950, 0x7713, 0x0065, 0x10f8, 0x0011, 0x08f8, 0x0013, 0xf845, 0x0974, 0x7713, 0x0045, 0x10f8, 0x0011, 0x08f8, 0x0013, 0xf845, 0x0974, 0x7713, 0x0047, 0x10f8, 0x0011, 0x08f8, 0x0013, 0xf845, 0x0960, 0xf073, 0x097c, 0x7713, 0x0066, 0x10f8, 0x0011, 0x08f8, 0x0013, 0xf845, 0x096a, 0x7713, 0x0067, 0x10f8, 0x0011, 0x08f8, 0x0013, 0xf844, 0x097c, 0x7000, 0x0012, 0x7001, 0x0015, 0xf274, 0x0ae5, 0xf495, 0xf640, 0xf073, 0x097c, 0x7000, 0x0012, 0x7001, 0x0015, 0xf274, 0x097f, 0xf495, 0xf640, 0xf073, 0x097c, 0x7000, 0x0012, 0x7001, 0x0015, 0xf274, 0x09e7, 0xf495, 0xf640, 0xee02, 0x8a11, 0xfc00, 0x4a11, 0x4a16, 0x4a17, 0x6bf8, 0x0018, 0xfe68, 0xf495, 0xf7b8, 0xe787, 0x11e7, 0x019c, 0x8912, 0x81e7, 0x0196, 0x11e2, 0x0002, 0x71e7, 0x019d, 0x0011, 0xf84a, 0x0998, 0x76e2, 0x0002, 0x0006, 0xe906, 0x8100, 0x4918, 0xf300, 0x0004, 0x8101, 0x4918, 0xf300, 0x0005, 0x8102, 0xf074, 0x12f8, 0xe783, 0x8814, 0x6deb, 0x0006, 0x1084, 0x8083, 0x10f8, 0x0008, 0xf845, 0x09b4, 0x71ec, 0x0001, 0x0012, 0x6e82, 0x09ad, 0x709b, 0x0012, 0x1004, 0x7181, 0x0016, 0x8000, 0x7601, 0x0001, 0x71e7, 0x0196, 0x0012, 0x10e2, 0x0002, 0x8002, 0x4818, 0x7003, 0x0011, 0xf274, 0x0b96, 0xf000, 0x0006, 0x7181, 0x0010, 0xf7ae, 0xe801, 0xf830, 0x09d4, 0x71e7, 0x0196, 0x0012, 0x960c, 0xf830, 0x09d4, 0xe800, 0x1104, 0x8100, 0x8001, 0x4818, 0x7002, 0x0011, 0xf274, 0x0cc3, 0xf000, 0x0006, 0x6bf8, 0x0018, 0x0198, 0xf495, 0xf495, 0x8a17, 0x8a16, 0x8a11, 0xfc00, 0x4a11, 0x4a16, 0xf7b8, 0x4a17, 0xee96, 0xf540, 0x716e, 0x0011, 0x71e1, 0x0002, 0x0012, 0x10f8, 0x0012, 0xfa42, 0x09fd, 0x716f, 0x0017, 0x7712, 0x0006, 0x76e1, 0x0002, 0x0006, 0x56f8, 0x2b94, 0x7716, 0x0000, 0x4e00, 0xf274, 0x110b, 0xf495, 0xf640, 0xf7b8, 0x10f8, 0x0008, 0xf842, 0x0a55, 0x56f8, 0x2b96, 0x4e00, 0xf274, 0x110b, 0xf495, 0xf640, 0xf7b8, 0x10f8, 0x0008, 0xf847, 0x0a31, 0x56f8, 0x2b92, 0x4e00, 0xf274, 0x110b, 0xf495, 0xf640, 0xf7b8, 0x10f8, 0x0008, 0xf845, 0x0a6b, 0x56f8, 0x2b98, 0x4e00, 0xf274, 0x110b, 0xf495, 0xf640, 0xf7b8, 0x10f8, 0x0008, 0xf843, 0x0a33, 0xf073, 0x0a47, 0x57f8, 0x2b96, 0x56f8, 0x2b9a, 0x4e00, 0xf274, 0x1277, 0x6d8e, 0xf640, 0xf540, 0x56f8, 0x2b98, 0x4e00, 0xf274, 0x110b, 0xf495, 0xf640, 0xf7b8, 0x10f8, 0x0008, 0xf843, 0x0a33, 0x56f8, 0x2b9a, 0x4e00, 0xf274, 0x110b, 0xf495, 0xf640, 0xf7b8, 0x10f8, 0x0008, 0xf842, 0x0a57, 0xf073, 0x0a6b, 0x57f8, 0x2b94, 0x56f8, 0x2b9a, 0x4e00, 0xf274, 0x112b, 0x6d96, 0xf640, 0xf540, 0x56f8, 0x2b9a, 0x4e00, 0xf274, 0x110b, 0xf495, 0xf640, 0xf7b8, 0x10f8, 0x0008, 0xf842, 0x0a57, 0x4818, 0x7000, 0x0012, 0xf000, 0x0004, 0x8001, 0x4818, 0xf000, 0x0005, 0x8002, 0xf274, 0x12f8, 0xf495, 0xf640, 0xe783, 0x8814, 0x6deb, 0x0006, 0x1084, 0x8083, 0x10f8, 0x0008, 0xf845, 0x0a8a, 0x71ec, 0x0001, 0x0012, 0x6e82, 0x0a83, 0x709b, 0x0012, 0x6004, 0x0002, 0xf820, 0x0aa5, 0xe782, 0xf6b8, 0x6b04, 0xffff, 0x6dea, 0x0005, 0xf120, 0xffff, 0x10ea, 0x0001, 0xfa44, 0x0a96, 0xf300, 0x0001, 0x4818, 0xf000, 0x0005, 0xf600, 0x8812, 0xf495, 0x6d96, 0x7682, 0x0000, 0x10e1, 0x0003, 0x8000, 0x7001, 0x0017, 0xf274, 0x0c6f, 0xf495, 0x4816, 0x1004, 0x8000, 0x7601, 0x0001, 0x10e1, 0x0002, 0x8002, 0x4818, 0x7003, 0x0017, 0xf274, 0x0b96, 0xf000, 0x0006, 0xe782, 0xf6b8, 0x6dea, 0x0005, 0xf120, 0xffff, 0x10ea, 0x0001, 0xfa44, 0x0ac2, 0xf300, 0x0001, 0x1004, 0x08f8, 0x000b, 0xfa44, 0x0ad5, 0x7713, 0x0001, 0xe712, 0x960c, 0xf830, 0x0ad5, 0x7713, 0x0000, 0x1004, 0x8000, 0x7001, 0x0013, 0x4818, 0x7002, 0x0017, 0xf274, 0x0cc3, 0xf000, 0x0006, 0xee6a, 0x8a17, 0x8a16, 0x8a11, 0xfc00, 0x4a11, 0x4a16, 0x4a17, 0xee96, 0x7711, 0x0000, 0x716e, 0x0016, 0x71e6, 0x0002, 0x0012, 0x11f8, 0x0012, 0xfa4d, 0x0b02, 0x716f, 0x0017, 0xf7b8, 0x11f8, 0x0012, 0xf84a, 0x0b07, 0x76e6, 0x0002, 0x0006, 0xf273, 0x0b07, 0x7712, 0x0006, 0x7712, 0x0001, 0x76e6, 0x0002, 0x0001, 0x4918, 0x7000, 0x0012, 0xf300, 0x0005, 0x8101, 0x4918, 0xf300, 0x0004, 0x8102, 0xf074, 0x0ff6, 0xe783, 0x8814, 0x6deb, 0x0006, 0x1084, 0x8083, 0x10f8, 0x0008, 0xf845, 0x0b24, 0x71ec, 0x0001, 0x0012, 0x6e82, 0x0b1d, 0x709b, 0x0012, 0xf7b8, 0xf495, 0x1005, 0xf468, 0xf478, 0xf010, 0xfffd, 0xf843, 0x0b4a, 0x11e6, 0x0002, 0x10f8, 0x000b, 0xf468, 0xf478, 0x0805, 0xf842, 0x0b63, 0x1005, 0xf468, 0xf478, 0xf010, 0x0002, 0xf843, 0x0b4a, 0x1005, 0xf010, 0x0001, 0x8005, 0x10f8, 0x0008, 0xf468, 0xf478, 0xf010, 0x0002, 0x6d91, 0xf842, 0x0b3d, 0x1005, 0xf846, 0x0b56, 0x1005, 0xf000, 0x0001, 0x8005, 0x10f8, 0x0008, 0x6d89, 0xf847, 0x0b4d, 0x10e6, 0x0003, 0xf000, 0xfffe, 0x8000, 0x7001, 0x0017, 0xf274, 0x0c6f, 0xf495, 0x4811, 0x11e6, 0x0002, 0x1005, 0x7187, 0x0011, 0x8000, 0x1286, 0xf47d, 0xf030, 0x0001, 0x8001, 0x8102, 0x4818, 0x7003, 0x0017, 0xf274, 0x0b96, 0xf000, 0x0006, 0x1005, 0x8000, 0x7187, 0x0010, 0xf4a9, 0x7712, 0x0000, 0xe900, 0xf830, 0x0b7f, 0xe901, 0xe808, 0x1886, 0xf2a0, 0x10f8, 0x0008, 0xf845, 0x0b88, 0x7712, 0x0001, 0x7001, 0x0012, 0x4818, 0x7002, 0x0017, 0xf274, 0x0cc3, 0xf000, 0x0006, 0xee6a, 0x8a17, 0x8a16, 0x8a11, 0xfc00, 0x4a11, 0xeeff, 0xf495, 0x1103, 0x8100, 0xf110, 0x0001, 0x8913, 0xf495, 0x7711, 0xffff, 0x7104, 0x0015, 0x7105, 0x0014, 0x7106, 0x0010, 0xe732, 0x11ea, 0x0001, 0xfa4c, 0x0ba8, 0xf495, 0x6d91, 0x4911, 0xf500, 0xf7b8, 0xf210, 0x0001, 0x8812, 0x4814, 0x10f8, 0x0008, 0xf847, 0x0bdd, 0x4814, 0xf010, 0x0001, 0x881a, 0xf495, 0xf072, 0x0bdc, 0xf6b8, 0xe731, 0xf120, 0xffff, 0x10e9, 0x0001, 0xfa44, 0x0bc4, 0xf300, 0x0001, 0xf7b8, 0xf495, 0x1000, 0xf468, 0xf478, 0x08f8, 0x000b, 0xf847, 0x0bdd, 0x10f8, 0x0015, 0xf845, 0x0bdd, 0x7180, 0x0011, 0x7681, 0x0030, 0x6b80, 0xffff, 0xf6b8, 0xe731, 0xf120, 0xffff, 0x10e9, 0x0001, 0xfa44, 0x0be1, 0xf300, 0x0001, 0xf7b8, 0xf495, 0x1000, 0xf468, 0xf478, 0x08f8, 0x000b, 0xf842, 0x0c25, 0x1000, 0xf843, 0x0c25, 0xf6b8, 0xe731, 0xf020, 0xffff, 0x11e9, 0x0001, 0xfa4c, 0x0bf7, 0xf000, 0x0001, 0x6e85, 0x0c15, 0xf495, 0x0800, 0xf7b8, 0x10f8, 0x0008, 0xf847, 0x0c15, 0x6082, 0x0030, 0xf820, 0x0c15, 0xf010, 0x0001, 0x10f8, 0x0008, 0x6d8a, 0xf847, 0x0c25, 0x6082, 0x0030, 0xf830, 0x0c0a, 0xf7b8, 0x10f8, 0x0008, 0xf847, 0x0c25, 0xf010, 0x0001, 0x881a, 0xf495, 0xf072, 0x0c24, 0x7180, 0x0015, 0xe543, 0x6b80, 0xffff, 0x1000, 0xf842, 0x0c6a, 0x1000, 0xf484, 0x8811, 0x10f8, 0x0008, 0xf468, 0xf478, 0x08f8, 0x0014, 0xf842, 0x0c4d, 0xf6b8, 0xf495, 0xf020, 0xffff, 0x11eb, 0x0001, 0xfa4c, 0x0c37, 0xf000, 0x0001, 0xf7b8, 0x10f8, 0x0008, 0xf847, 0x0c4d, 0xf010, 0x0001, 0x881a, 0xf495, 0xf072, 0x0c4c, 0x7180, 0x0013, 0xe541, 0x6b80, 0xffff, 0x4811, 0x10f8, 0x0008, 0xf468, 0xf478, 0x08f8, 0x0014, 0xf847, 0x0c5a, 0x4814, 0xe741, 0xf484, 0x8000, 0x1000, 0xf842, 0x0c6a, 0x4811, 0xf010, 0x0001, 0x881a, 0xf495, 0xf072, 0x0c69, 0x7180, 0x0011, 0x7681, 0x0030, 0x6b80, 0xffff, 0xee01, 0x8a11, 0xfe00, 0xf495, 0x1080, 0x4a11, 0xf7b8, 0x4a16, 0x4a17, 0x8816, 0xeefc, 0x10f8, 0x0008, 0x7108, 0x0017, 0xfa47, 0x0c81, 0x7109, 0x0011, 0xf273, 0x0c83, 0xf495, 0x4816, 0x4816, 0xf484, 0x7600, 0x000a, 0x7601, 0x0064, 0x7002, 0x0011, 0xf274, 0x0f04, 0x10f8, 0x0008, 0xf7b8, 0x4816, 0x10f8, 0x0008, 0xf468, 0xf478, 0xf010, 0x000a, 0xf842, 0x0caf, 0x4816, 0x10f8, 0x0008, 0xf468, 0xf478, 0xf010, 0xfff6, 0xf847, 0x0ca6, 0x7181, 0x0012, 0x7682, 0x0030, 0x6b81, 0xffff, 0x4816, 0x10f8, 0x0008, 0xf842, 0x0caf, 0xf273, 0x0cb0, 0xf495, 0xe82d, 0xe82b, 0x7181, 0x0012, 0x8082, 0x1081, 0xee04, 0xf010, 0x0001, 0x8812, 0x8081, 0x7082, 0x0017, 0x1081, 0xf010, 0x0001, 0x8081, 0x8a17, 0x8a16, 0x8a11, 0xfc00, 0x4a11, 0xf7b8, 0x4a16, 0x7714, 0x0000, 0x7103, 0x0013, 0x11f8, 0x0013, 0x3004, 0xfa4f, 0x0cea, 0x7105, 0x0016, 0xf110, 0x0001, 0x8912, 0xf495, 0x7711, 0xffff, 0x11ea, 0x0001, 0xfa4c, 0x0cd7, 0xf495, 0x6d91, 0x11f8, 0x0013, 0xf768, 0xf778, 0x09f8, 0x0011, 0xf84e, 0x0cea, 0x4913, 0xf500, 0xf310, 0x0001, 0x8914, 0xf110, 0x0001, 0x8915, 0x11f8, 0x000e, 0xf84d, 0x0cf7, 0x7186, 0x0011, 0x7681, 0x002e, 0x6b86, 0xffff, 0x7712, 0xffff, 0xe751, 0x11e9, 0x0001, 0xfa4c, 0x0cfa, 0xf495, 0x6d92, 0x11f8, 0x0013, 0xf768, 0xf778, 0x09f8, 0x0012, 0xf84f, 0x0d20, 0x7186, 0x0011, 0x7681, 0x0030, 0xe752, 0x7711, 0xffff, 0x6b86, 0xffff, 0x11ea, 0x0001, 0xfa4c, 0x0d11, 0xf495, 0x6d91, 0x11f8, 0x0011, 0x6d8b, 0xf768, 0xf778, 0x09f8, 0x0013, 0xf84b, 0x0d08, 0x11f8, 0x0013, 0xf84f, 0x0d34, 0x8810, 0xf495, 0xf495, 0xf5ac, 0xf830, 0x0d3a, 0x7186, 0x0012, 0xe560, 0xf5ac, 0xfa20, 0x0d2a, 0x6b86, 0xffff, 0xf073, 0x0d3a, 0x7186, 0x0011, 0x7681, 0x0030, 0x6b86, 0xffff, 0x1086, 0x8a16, 0x8a11, 0xfc00, 0x4a11, 0x4a16, 0x8812, 0x4a17, 0xeefa, 0xf7b8, 0x8004, 0x10e2, 0x0002, 0x110c, 0x710a, 0x0017, 0xfa43, 0x0d52, 0x710b, 0x0011, 0xf273, 0x0d55, 0x6882, 0xffef, 0x76e2, 0x0002, 0x0001, 0x71e2, 0x0003, 0x0012, 0x7713, 0x0058, 0x10f8, 0x0012, 0x08f8, 0x0013, 0xf845, 0x0d7c, 0x7713, 0x006f, 0x10f8, 0x0012, 0x08f8, 0x0013, 0xf845, 0x0d80, 0x7713, 0x0070, 0x10f8, 0x0012, 0x08f8, 0x0013, 0xf845, 0x0d7c, 0x7713, 0x0078, 0x10f8, 0x0012, 0x08f8, 0x0013, 0xf845, 0x0d7c, 0xf273, 0x0d82, 0x7716, 0x000a, 0xf273, 0x0d82, 0x7716, 0x0010, 0x7716, 0x0008, 0x8100, 0x1004, 0xf074, 0x0e0c, 0x7104, 0x0012, 0x11e2, 0x0002, 0xf84c, 0x0d94, 0xf540, 0xf3e0, 0xf84c, 0x0d94, 0xf273, 0x0e07, 0xf495, 0xe801, 0x71e2, 0x0003, 0x0012, 0x7713, 0x0064, 0x11f8, 0x0012, 0x09f8, 0x0013, 0xf84d, 0x0da2, 0x6ce2, 0xff97, 0x0db0, 0xf540, 0xf7b8, 0xf768, 0xf778, 0xf84a, 0x0db0, 0x7687, 0x0001, 0x7104, 0x0012, 0xf484, 0x71e2, 0x0003, 0x0012, 0x7000, 0x0016, 0x7001, 0x0012, 0x7002, 0x0011, 0xf074, 0x0f04, 0xf7b8, 0xf000, 0x0001, 0x11f8, 0x0008, 0xf768, 0x7104, 0x0012, 0xf778, 0x09e2, 0x0002, 0xf84e, 0x0dd7, 0x7181, 0x0012, 0xf000, 0x0001, 0x7682, 0x0030, 0x11f8, 0x0008, 0x6b81, 0xffff, 0xf768, 0x7104, 0x0012, 0xf778, 0x09e2, 0x0002, 0xf84f, 0x0dc5, 0x71e2, 0x0003, 0x0013, 0xe978, 0x10f8, 0x0013, 0x08f8, 0x000b, 0xf845, 0x0de4, 0x6ce3, 0xffa8, 0x0dfa, 0x960c, 0xf820, 0x0dfa, 0x7181, 0x0012, 0x7082, 0x0013, 0x1081, 0xf010, 0x0001, 0x8812, 0xf495, 0x8081, 0x7682, 0x0030, 0x6b81, 0xffff, 0x7104, 0x0012, 0x71e2, 0x0003, 0x0013, 0x6ce3, 0xff91, 0x0e06, 0x960c, 0xf820, 0x0e06, 0x7181, 0x0012, 0x7682, 0x0030, 0x6b81, 0xffff, 0xe800, 0xee06, 0x8a17, 0x8a16, 0x8a11, 0xfc00, 0x8813, 0x4a11, 0xe970, 0x71e3, 0x0003, 0x0011, 0x10f8, 0x0011, 0x08f8, 0x000b, 0xfa45, 0x0efb, 0x7102, 0x0012, 0x1183, 0xf330, 0x0160, 0x8913, 0xf495, 0x7710, 0x0020, 0xf4ab, 0xe800, 0xf830, 0x0eb6, 0x7710, 0x0040, 0xf4ab, 0xf830, 0x0e67, 0xf7b8, 0x11f8, 0x0011, 0xf768, 0xf778, 0xf310, 0x006f, 0xf84e, 0x0e55, 0x7713, 0x006f, 0x11f8, 0x0011, 0x09f8, 0x0013, 0xf84d, 0x0efb, 0x7713, 0x0058, 0x11f8, 0x0011, 0x09f8, 0x0013, 0xf84d, 0x0efb, 0x7713, 0x0064, 0x11f8, 0x0011, 0x09f8, 0x0013, 0xf84d, 0x0ef3, 0x7713, 0x0069, 0x11f8, 0x0011, 0x09f8, 0x0013, 0xf84d, 0x0ef3, 0xf073, 0x0f02, 0x7713, 0x0075, 0x11f8, 0x0011, 0x09f8, 0x0013, 0xf84d, 0x0efb, 0x7713, 0x0078, 0x11f8, 0x0011, 0x09f8, 0x0013, 0xf84d, 0x0efb, 0xf073, 0x0f02, 0xf7b8, 0x11f8, 0x0011, 0xf768, 0xf778, 0xf310, 0x006f, 0xf84e, 0x0e92, 0x7713, 0x006f, 0x11f8, 0x0011, 0x09f8, 0x0013, 0xf84d, 0x0ea4, 0x7713, 0x0058, 0x11f8, 0x0011, 0x09f8, 0x0013, 0xf84d, 0x0ea4, 0x7713, 0x0064, 0x11f8, 0x0011, 0x09f8, 0x0013, 0xf84d, 0x0ea4, 0x7713, 0x0069, 0x11f8, 0x0011, 0x09f8, 0x0013, 0xf84d, 0x0ea4, 0xf073, 0x0f02, 0x7713, 0x0075, 0x11f8, 0x0011, 0x09f8, 0x0013, 0xf84d, 0x0ea4, 0x7713, 0x0078, 0x11f8, 0x0011, 0x09f8, 0x0013, 0xf84d, 0x0ea4, 0xf073, 0x0f02, 0x1182, 0xf693, 0xf030, 0x0001, 0xf600, 0xf000, 0x0001, 0x8811, 0xf495, 0x4911, 0x7082, 0x0011, 0xf300, 0x0001, 0xf273, 0x0f02, 0x5681, 0x8182, 0xf7b8, 0x11f8, 0x0011, 0xf768, 0xf778, 0xf310, 0x006f, 0xf84e, 0x0ee1, 0x7713, 0x006f, 0x11f8, 0x0011, 0x09f8, 0x0013, 0xf84d, 0x0efb, 0x7713, 0x0058, 0x11f8, 0x0011, 0x09f8, 0x0013, 0xf84d, 0x0efb, 0x7713, 0x0064, 0x11f8, 0x0011, 0x09f8, 0x0013, 0xf84d, 0x0ef3, 0x7713, 0x0069, 0x11f8, 0x0011, 0x09f8, 0x0013, 0xf84d, 0x0ef3, 0xf073, 0x0f02, 0x7713, 0x0075, 0x11f8, 0x0011, 0x09f8, 0x0013, 0xf84d, 0x0efb, 0x7713, 0x0078, 0x11f8, 0x0011, 0x09f8, 0x0013, 0xf84d, 0x0efb, 0xf073, 0x0f02, 0x1082, 0xf000, 0x0001, 0x8811, 0xf273, 0x0f02, 0x8082, 0x1081, 0x1082, 0xf000, 0x0001, 0x8811, 0xf495, 0x8082, 0x1281, 0x8a11, 0xfc00, 0x4a11, 0x4a16, 0x4a17, 0xeefa, 0xf495, 0x4e02, 0xf0e0, 0x710a, 0x0016, 0x710b, 0x0017, 0xfa44, 0x0f1b, 0x710c, 0x0011, 0x7181, 0x0012, 0x7682, 0x0030, 0xf273, 0x0f3e, 0x6b81, 0xffff, 0xf7b8, 0x7000, 0x0016, 0x5602, 0xf074, 0x0f52, 0x4e04, 0x4e00, 0xf7b8, 0xf274, 0x14ab, 0x10f8, 0x0016, 0xf7b8, 0x6ee7, 0xffa8, 0x0f30, 0x5702, 0xf520, 0xf300, 0x0010, 0x8912, 0xf495, 0x7181, 0x0013, 0xf6b8, 0x6dea, 0x2b71, 0xe501, 0x6b81, 0xffff, 0x5604, 0x4e02, 0xf844, 0x0f1b, 0x1081, 0xf6b8, 0xf010, 0x0001, 0x8811, 0xf020, 0xffff, 0x11e9, 0x0001, 0xfa4c, 0x0f45, 0xf000, 0x0001, 0xee06, 0x8a17, 0x8a16, 0x8a11, 0xfe00, 0xf010, 0x0001, 0x4a11, 0xeefe, 0x7712, 0x0008, 0x7104, 0x0011, 0x11f8, 0x0011, 0x09f8, 0x0012, 0xf84d, 0x0f68, 0x7712, 0x0010, 0x11f8, 0x0011, 0x09f8, 0x0012, 0xf84d, 0x0f6c, 0xf073, 0x0f70, 0xf273, 0x0f85, 0xf495, 0xf0fd, 0xf273, 0x0f85, 0xf495, 0xf0fc, 0xf540, 0xf6b8, 0xf3e0, 0xf310, 0xffff, 0xf84a, 0x0f7f, 0x7000, 0x0011, 0xf074, 0x17b8, 0xf273, 0x0f85, 0xf495, 0x4808, 0xf7b8, 0x11f8, 0x0011, 0x4f00, 0xf074, 0x1456, 0xee02, 0x8a11, 0xfc00, 0x4a11, 0x7711, 0xffff, 0xeefe, 0x6ce1, 0x0001, 0x0f93, 0xf273, 0x0f99, 0xe800, 0xe900, 0xf120, 0xffff, 0x10f8, 0xffff, 0xf300, 0x0001, 0x8100, 0xf074, 0x0113, 0xee02, 0x8a11, 0xfc00, 0x8813, 0x4a11, 0xf020, 0x2bac, 0xeefe, 0x1183, 0x8000, 0xf600, 0x8812, 0xf495, 0xf495, 0x6d92, 0x960c, 0xf820, 0x0fb9, 0x11eb, 0x0001, 0x1000, 0xf600, 0x8812, 0xf495, 0xf495, 0x6d92, 0x960c, 0xf830, 0x0fae, 0x8911, 0xf495, 0x7712, 0x002d, 0x11f8, 0x0011, 0x09f8, 0x0012, 0xe800, 0xf84d, 0x0fcb, 0x6ee1, 0xffd5, 0x0fd0, 0x7714, 0x0000, 0xf073, 0x0fcd, 0x7714, 0x0001, 0x71eb, 0x0001, 0x0011, 0x4911, 0x0100, 0x8912, 0xf495, 0xf495, 0x6d92, 0x960d, 0xf820, 0x0fee, 0x4911, 0x880e, 0x71eb, 0x0001, 0x0011, 0xf066, 0x000a, 0xf600, 0x7001, 0x0011, 0x1100, 0x0101, 0x8912, 0xf495, 0xf495, 0x6d92, 0x960d, 0xfa30, 0x0fd9, 0xf010, 0x0030, 0x11f8, 0x0014, 0xf84d, 0x0ff3, 0xf484, 0xee02, 0x8a11, 0xfc00, 0x4a11, 0x4a16, 0x4a17, 0xeef8, 0xf7b8, 0x4e02, 0x710e, 0x0011, 0x710d, 0x0017, 0x710c, 0x0016, 0x56f8, 0x2b9c, 0x76f8, 0x2a9d, 0x0030, 0x4e00, 0x5602, 0xf074, 0x110b, 0xf7b8, 0x10f8, 0x0008, 0xe900, 0xf842, 0x1012, 0xe901, 0x56f8, 0x2b9c, 0x8181, 0x4e00, 0x5602, 0xf074, 0x110b, 0xf7b8, 0x10f8, 0x0008, 0xf842, 0x1022, 0x5602, 0xf074, 0x12ea, 0x4e02, 0x56f8, 0x2b9e, 0xf7b8, 0x4e00, 0x5602, 0xf074, 0x110b, 0xf7b8, 0x10f8, 0x0008, 0xfa47, 0x1042, 0x7711, 0x0000, 0x56f8, 0x2ba0, 0x4e00, 0x5602, 0xf074, 0x112b, 0x57f8, 0x2b9e, 0x4e02, 0x4f00, 0xf074, 0x110b, 0xf7b8, 0x10f8, 0x0008, 0x6d91, 0xf846, 0x1030, 0xf020, 0x2a9d, 0x8004, 0x56f8, 0x2b9c, 0x4e00, 0x5602, 0xf274, 0x110b, 0xf495, 0x6d96, 0xf7b8, 0x10f8, 0x0008, 0xf845, 0x107c, 0x56f8, 0x2ba2, 0x4e00, 0x5602, 0xf074, 0x110b, 0xf7b8, 0x10f8, 0x0008, 0xf842, 0x107c, 0x56f8, 0x2ba0, 0x4e00, 0x5602, 0xf074, 0x1277, 0x4e02, 0xf7b8, 0x56f8, 0x2b9c, 0x4e00, 0x5602, 0xf074, 0x110b, 0xf7b8, 0x10f8, 0x0008, 0x6d89, 0xf845, 0x107c, 0x56f8, 0x2ba2, 0x4e00, 0x5602, 0xf074, 0x110b, 0xf7b8, 0x10f8, 0x0008, 0xf843, 0x105d, 0x1004, 0xf000, 0x0001, 0x8005, 0x5602, 0xf074, 0x1202, 0x1105, 0x8100, 0xf074, 0x14bf, 0xf540, 0x8006, 0x1004, 0xf500, 0xf300, 0x0001, 0x8912, 0x4811, 0x1106, 0xf500, 0xf7b8, 0x8187, 0x1106, 0xf768, 0xf778, 0x09f8, 0x0016, 0xf84a, 0x10c6, 0x4916, 0x0906, 0x8916, 0xf495, 0x4816, 0x10f8, 0x0008, 0xf847, 0x10cd, 0x4816, 0xf010, 0x0001, 0x881a, 0xf495, 0xf072, 0x10c3, 0xf7b8, 0xf495, 0x5602, 0xf074, 0x1202, 0xf074, 0x124d, 0xf7b8, 0x4e00, 0x5602, 0xf074, 0x12ef, 0x4e02, 0x56f8, 0x2ba0, 0xf7b8, 0x4e00, 0x5602, 0xf074, 0x1277, 0x4e02, 0xf074, 0x11c6, 0xf000, 0x0030, 0x8092, 0xf073, 0x10cd, 0x1104, 0x4816, 0xf600, 0xf000, 0x0001, 0x8812, 0xf495, 0xf7b8, 0x10ea, 0xffff, 0xf468, 0xf478, 0xf010, 0x0035, 0xf843, 0x1103, 0x4812, 0xf010, 0x0001, 0x8811, 0xf495, 0xf495, 0x1081, 0xf000, 0x0001, 0x8081, 0x10f8, 0x0008, 0xf468, 0xf478, 0xf010, 0x003a, 0xf843, 0x10f6, 0x7689, 0x0030, 0x1081, 0xf000, 0x0001, 0x8081, 0x10f8, 0x0008, 0xf468, 0xf478, 0xf010, 0x003a, 0xf842, 0x10e8, 0x7104, 0x0010, 0xf7a9, 0xf830, 0x1103, 0x76ea, 0xffff, 0x0000, 0x4810, 0xf273, 0x1106, 0x6b87, 0x0001, 0x7682, 0x0000, 0x1005, 0xee08, 0x8a17, 0x8a16, 0x8a11, 0xfc00, 0xf495, 0x4a0b, 0x4a0c, 0x4a0d, 0xf7b8, 0xf468, 0xf478, 0x5704, 0xf842, 0x1118, 0xff4b, 0xf484, 0xf784, 0xf586, 0xf808, 0x1123, 0xf587, 0xf808, 0x1127, 0xf420, 0x8a0d, 0x8a0c, 0x8a0b, 0xfc00, 0xf273, 0x111f, 0xe801, 0xf495, 0xf273, 0x111f, 0xf020, 0xffff, 0xf495, 0x4a0b, 0x4a0c, 0x4a0d, 0x4a0e, 0xf6b7, 0xeef3, 0xf7b8, 0xf468, 0xf478, 0xf845, 0x1198, 0x6f05, 0x0c79, 0x800b, 0xf063, 0x007f, 0xf060, 0x0080, 0x820a, 0x5612, 0xf845, 0x11b6, 0x6f06, 0x0c79, 0x8009, 0xf063, 0x007f, 0xf060, 0x0080, 0x8208, 0x1005, 0x1c06, 0xf030, 0x0100, 0x8004, 0x1005, 0xf030, 0x00ff, 0x1106, 0xf330, 0x00ff, 0xf000, 0x007f, 0xf620, 0x8001, 0xf843, 0x11ae, 0xf010, 0x00ff, 0xf846, 0x119e, 0x560a, 0xf0e6, 0x5708, 0xf3e7, 0x4f08, 0xec0e, 0x1e08, 0x8002, 0x0a02, 0xec0a, 0x1e08, 0x6f03, 0x0c85, 0x3002, 0x2409, 0xf0ff, 0xec0b, 0x1e08, 0xf0e4, 0xf030, 0xffff, 0xf0e1, 0xf484, 0x0203, 0x3c02, 0x1101, 0xf48e, 0xf495, 0xf48f, 0x8c01, 0x0901, 0xf0ff, 0xf300, 0x0001, 0xf000, 0x0020, 0xf48e, 0xf495, 0xf48f, 0x8c01, 0x0901, 0x8101, 0xf84f, 0x11ae, 0xf310, 0x00ff, 0xf84a, 0x119e, 0xf0f9, 0x8003, 0xf038, 0x7f00, 0x8202, 0x4404, 0x3c01, 0xf0e7, 0x5002, 0xee0d, 0x8a0e, 0x8a0d, 0x8a0c, 0x8a0b, 0xfc00, 0x7600, 0x0002, 0xf074, 0x11c5, 0xf483, 0xf061, 0x0081, 0x4504, 0xf84c, 0x1198, 0xf162, 0x8000, 0xf273, 0x1198, 0xf2c0, 0xf495, 0x7600, 0x0001, 0xf074, 0x11c5, 0xf273, 0x1198, 0xf420, 0xf495, 0x7600, 0x0003, 0xf074, 0x11c5, 0x4505, 0xf363, 0x0100, 0xf061, 0x0081, 0xf065, 0x8000, 0xf273, 0x1198, 0xf2a7, 0xf495, 0xfc00, 0xf495, 0x4a0b, 0x4a0c, 0x4a0d, 0x4a0e, 0xf6b8, 0xeefd, 0xf845, 0x11e8, 0x6f01, 0x0c79, 0xf0e9, 0xf0f7, 0xf060, 0x0080, 0x6f02, 0x0c67, 0x1101, 0xf330, 0x00ff, 0xf310, 0x007f, 0xf84b, 0x11ee, 0xf310, 0x000e, 0xf84e, 0x11f2, 0x890e, 0x6101, 0x0100, 0x1402, 0xfd30, 0xf484, 0xee03, 0x8a0e, 0x8a0d, 0x8a0c, 0x8a0b, 0xfc00, 0xf273, 0x11e8, 0xf420, 0xf495, 0x7600, 0x0002, 0xf074, 0x11c5, 0x6101, 0x0100, 0xf020, 0x7fff, 0xf820, 0x11e8, 0xf000, 0x0001, 0xf273, 0x11e8, 0xf484, 0xf495, 0xf845, 0x1235, 0x4a0e, 0x4a0d, 0x4a0b, 0x4a0c, 0xf6b8, 0xeefd, 0x6f01, 0x0c79, 0xf0e9, 0xf0f7, 0xf060, 0x0080, 0xf447, 0x1101, 0xf330, 0x00ff, 0xf310, 0x007f, 0xf84b, 0x1236, 0xf310, 0x001e, 0xf84e, 0x123a, 0xf84d, 0x122b, 0xf300, 0x0010, 0xf84a, 0x1226, 0xf273, 0x1228, 0xf0f0, 0xf495, 0xf310, 0x0010, 0x890e, 0xf495, 0xf48f, 0x6101, 0x0100, 0xf495, 0xfd30, 0xf484, 0xee03, 0x8a0c, 0x8a0b, 0x8a0d, 0x8a0e, 0xfc00, 0xf273, 0x1230, 0xf420, 0xf495, 0x7600, 0x0002, 0xf074, 0x11c5, 0x6101, 0x0100, 0xf062, 0x7fff, 0xf040, 0xffff, 0xf483, 0xf820, 0x1230, 0xf000, 0x0001, 0xf273, 0x1230, 0xf484, 0xf495, 0xf495, 0x4a0b, 0x4a0c, 0x4a0d, 0x4a0e, 0xf7b8, 0xeefd, 0xf468, 0xf478, 0xf845, 0x126d, 0x8201, 0xf4ba, 0xf485, 0xf870, 0x1273, 0xf48e, 0xe99d, 0x8c00, 0x0900, 0xf48f, 0xf0e2, 0xf0fe, 0xf459, 0x6101, 0x8000, 0xf3ef, 0xf2a8, 0xf820, 0x126d, 0xf064, 0x8000, 0xee03, 0x8a0e, 0x8a0d, 0x8a0c, 0x8a0b, 0xfc00, 0xf273, 0x126d, 0xf062, 0xcf00, 0xf495, 0x4a0b, 0x4a0c, 0x4a0d, 0x4a0e, 0xf6b7, 0xeef3, 0xf7b8, 0xf468, 0xf478, 0xf845, 0x12d0, 0x6f05, 0x0c79, 0x800b, 0xf063, 0x007f, 0xf060, 0x0080, 0x820a, 0x5612, 0xf845, 0x12d0, 0x6f06, 0x0c79, 0x8009, 0xf063, 0x007f, 0xf060, 0x0080, 0x8208, 0x1005, 0x1c06, 0xf030, 0x0100, 0x8004, 0x1005, 0xf030, 0x00ff, 0x1106, 0xf330, 0x00ff, 0xf310, 0x007f, 0xf600, 0x8001, 0xf843, 0x12e2, 0xf010, 0x00ff, 0xf846, 0x12d6, 0x300b, 0x2409, 0x2508, 0xf510, 0x300a, 0x2409, 0xf600, 0x2508, 0x8102, 0x3c02, 0xf000, 0x0040, 0xf468, 0xf478, 0xf6b8, 0x1101, 0xf842, 0x12c1, 0xf0ff, 0xf300, 0x0001, 0x8101, 0xf84f, 0x12e2, 0xf310, 0x00ff, 0xf84a, 0x12d6, 0xf0f9, 0x8003, 0xf038, 0x7f00, 0x8202, 0x4404, 0x3c01, 0xf0e7, 0x5002, 0xee0d, 0x8a0e, 0x8a0d, 0x8a0c, 0x8a0b, 0xfc00, 0x7600, 0x0002, 0xf074, 0x11c5, 0x4504, 0xf020, 0xffff, 0xf2a7, 0xf273, 0x12d0, 0xf060, 0x7f7f, 0x7600, 0x0001, 0xf074, 0x11c5, 0xf273, 0x12d0, 0xf420, 0xf495, 0xf495, 0xff44, 0xf065, 0x8000, 0xfc00, 0xf495, 0x6001, 0x0000, 0xf495, 0xff20, 0x6a01, 0x8000, 0xf073, 0x17c4, 0x4a11, 0x4a16, 0x4a17, 0xeefa, 0xf7b8, 0x4e02, 0x710c, 0x0011, 0x710b, 0x0017, 0x710a, 0x0016, 0x56f8, 0x2ba4, 0x76f8, 0x2b01, 0x0030, 0x4e00, 0x5602, 0xf074, 0x110b, 0xf7b8, 0x10f8, 0x0008, 0xe900, 0xf842, 0x1314, 0xe901, 0x56f8, 0x2ba4, 0x8181, 0x4e00, 0x5602, 0xf074, 0x110b, 0xf7b8, 0x10f8, 0x0008, 0xf842, 0x1324, 0x5602, 0xf074, 0x12ea, 0x4e02, 0x56f8, 0x2ba6, 0xf7b8, 0x4e00, 0x5602, 0xf074, 0x110b, 0xf7b8, 0x10f8, 0x0008, 0xfa47, 0x1344, 0x7711, 0x0000, 0x56f8, 0x2ba8, 0x4e00, 0x5602, 0xf074, 0x112b, 0x57f8, 0x2ba6, 0x4e02, 0x4f00, 0xf074, 0x110b, 0xf7b8, 0x10f8, 0x0008, 0x6d91, 0xf846, 0x1332, 0xf020, 0x2b01, 0x8004, 0x56f8, 0x2ba4, 0x4e00, 0x5602, 0xf274, 0x110b, 0xf495, 0x6d96, 0xf7b8, 0x10f8, 0x0008, 0xf845, 0x137e, 0x56f8, 0x2baa, 0x4e00, 0x5602, 0xf074, 0x110b, 0xf7b8, 0x10f8, 0x0008, 0xf842, 0x137e, 0x56f8, 0x2ba8, 0x4e00, 0x5602, 0xf074, 0x1277, 0x4e02, 0xf7b8, 0x56f8, 0x2ba4, 0x4e00, 0x5602, 0xf074, 0x110b, 0xf7b8, 0x10f8, 0x0008, 0x6d89, 0xf845, 0x137e, 0x56f8, 0x2baa, 0x4e00, 0x5602, 0xf074, 0x110b, 0xf7b8, 0x10f8, 0x0008, 0xf843, 0x135f, 0x1004, 0xf000, 0x0001, 0x8005, 0x5602, 0xf074, 0x1202, 0x1105, 0x8100, 0xf074, 0x14bf, 0x8812, 0x1104, 0xf600, 0xf100, 0x0001, 0x8913, 0x4911, 0x4812, 0xf600, 0x8087, 0x4816, 0xf600, 0xf7b8, 0x8816, 0x10f8, 0x0008, 0xf847, 0x13bc, 0x4816, 0xf010, 0x0001, 0x881a, 0xf495, 0xf072, 0x13bb, 0xf7b8, 0xf495, 0x5602, 0xf074, 0x1202, 0xf074, 0x124d, 0xf7b8, 0x4e00, 0x5602, 0xf074, 0x12ef, 0x4e02, 0x56f8, 0x2ba8, 0xf7b8, 0x4e00, 0x5602, 0xf074, 0x1277, 0x4e02, 0xf074, 0x11c6, 0xf000, 0x0030, 0x8093, 0xf7b8, 0x10eb, 0xffff, 0xf468, 0xf478, 0xf010, 0x0035, 0xf843, 0x13ea, 0x4813, 0xf010, 0x0001, 0x8811, 0xf495, 0xf495, 0x1081, 0xf000, 0x0001, 0x8081, 0x10f8, 0x0008, 0xf468, 0xf478, 0xf010, 0x003a, 0xf843, 0x13e5, 0x7689, 0x0030, 0x1081, 0xf000, 0x0001, 0x8081, 0x10f8, 0x0008, 0xf468, 0xf478, 0xf010, 0x003a, 0xf842, 0x13d7, 0x7104, 0x0010, 0xf4a9, 0xf830, 0x13f0, 0x7683, 0x0000, 0xf273, 0x1401, 0xf495, 0x1005, 0xf6ab, 0xf830, 0x13fc, 0x7711, 0x2b01, 0x76e1, 0x0001, 0x0000, 0xf273, 0x13fe, 0x7004, 0x0011, 0x7683, 0x0000, 0x6b87, 0x0001, 0x1004, 0xee06, 0x8a17, 0x8a16, 0x8a11, 0xfc00, 0xf495, 0x4a0b, 0x4a0c, 0x4a0d, 0xeefe, 0xf7b8, 0xf468, 0xf478, 0x4506, 0xf1c0, 0x8300, 0xf485, 0x5706, 0xf785, 0x4f06, 0xf520, 0xf84d, 0x1426, 0xf84e, 0x142a, 0xf074, 0x148b, 0x6100, 0x8000, 0xf820, 0x1421, 0xf484, 0xee02, 0x8a0d, 0x8a0c, 0x8a0b, 0xfc00, 0xf273, 0x141c, 0xe801, 0xf495, 0xf273, 0x1421, 0xf420, 0xf495, 0xf495, 0x4a0b, 0x4a0c, 0x4a0d, 0xeefe, 0xf7b8, 0x8200, 0xf468, 0xf478, 0xf485, 0x5706, 0xf785, 0x4f06, 0xf520, 0xf84d, 0x144e, 0xf84e, 0x1452, 0xf074, 0x148b, 0x6100, 0x8000, 0xfa20, 0x1449, 0xf640, 0xf495, 0xf484, 0xee02, 0x8a0d, 0x8a0c, 0x8a0b, 0xfc00, 0xf273, 0x1449, 0xf420, 0xf495, 0xf273, 0x1442, 0xf540, 0xf495, 0xf495, 0x4a0b, 0x4a0c, 0x4a0d, 0xeefe, 0xf6b8, 0xf0e0, 0x5706, 0xf520, 0xf84d, 0x146a, 0xf84e, 0x146e, 0xf074, 0x148b, 0xee02, 0x8a0d, 0x8a0c, 0x8a0b, 0xfc00, 0xf273, 0x1465, 0xe801, 0xf495, 0xf273, 0x1465, 0xf420, 0xf495, 0xf495, 0x4a0b, 0x4a0c, 0x4a0d, 0xeefe, 0xf6b8, 0xf0e0, 0x5706, 0xf520, 0xf84d, 0x1487, 0xf84e, 0x1482, 0xf074, 0x148b, 0xf640, 0xee02, 0x8a0d, 0x8a0c, 0x8a0b, 0xfc00, 0xf273, 0x1482, 0xf420, 0xf495, 0xf495, 0x4a11, 0xf6b8, 0xf273, 0x1493, 0x7711, 0x001f, 0x6d89, 0xf0e1, 0xf808, 0x1492, 0xe901, 0x5508, 0xf84b, 0x149e, 0xf273, 0x149f, 0xf040, 0x0001, 0x5308, 0x6c89, 0x14a3, 0x8a11, 0xfc00, 0xf3e1, 0xf0e1, 0xf808, 0x1497, 0xf273, 0x1497, 0xf340, 0x0001, 0xf495, 0x4a0b, 0x4a0c, 0x4a0d, 0x4a0e, 0xeefd, 0xf495, 0x4e00, 0x3109, 0x4408, 0x3501, 0x2409, 0xf76f, 0xf601, 0xee03, 0x8a0e, 0x8a0d, 0x8a0c, 0x8a0b, 0xfc00, 0xf540, 0x4a11, 0xf7b8, 0xf768, 0x7711, 0x0000, 0xeee8, 0xf778, 0xfa4a, 0x14cd, 0x711a, 0x0013, 0x7711, 0x0001, 0xe782, 0x6dea, 0x0015, 0xf540, 0x7682, 0x0000, 0xe80a, 0x4e00, 0xf274, 0x142e, 0xf495, 0xf640, 0xf7b8, 0x10f8, 0x0008, 0xf485, 0xf000, 0x0030, 0x80ea, 0xffff, 0xe80a, 0x4e00, 0xf274, 0x1406, 0xf495, 0xf640, 0xf7b8, 0xf540, 0xf468, 0xf478, 0xf844, 0x14d3, 0x10f8, 0x0011, 0xf845, 0x14f4, 0x76ea, 0xffff, 0x002d, 0x4818, 0x4912, 0xf000, 0x0002, 0xf620, 0x7000, 0x0012, 0xf000, 0x0014, 0x10f8, 0x0008, 0x4e16, 0x8001, 0xf274, 0x152d, 0xf495, 0x4813, 0xf7b8, 0xf495, 0x5616, 0xee18, 0x8a11, 0xfe00, 0xf010, 0x0001, 0xf7b8, 0x4a11, 0x8812, 0x1004, 0x1103, 0xfa47, 0x152a, 0x7102, 0x0011, 0xf010, 0x0001, 0x881a, 0x6d89, 0xf072, 0x1529, 0x10e9, 0x0001, 0x8092, 0x10f8, 0x0008, 0x08f8, 0x000b, 0xf844, 0x1529, 0xf273, 0x152b, 0xf495, 0x4812, 0xf495, 0xe800, 0x8a11, 0xfc00, 0x1302, 0x7101, 0x0012, 0x8813, 0xf84d, 0x153a, 0xf310, 0x0001, 0x891a, 0xf495, 0xf072, 0x1539, 0xe589, 0xfc00, 0x4a11, 0x7211, 0x2b65, 0xf495, 0x8813, 0x6c81, 0x1546, 0xf273, 0x1571, 0x7313, 0x2b65, 0xf495, 0x7712, 0x0000, 0x1183, 0xf7b8, 0x10f8, 0x000b, 0xf468, 0xf478, 0x0881, 0xf842, 0x155a, 0xe712, 0x71e2, 0x0001, 0x0011, 0x6c81, 0x154a, 0xf073, 0x156e, 0x4811, 0xf845, 0x156e, 0x6c82, 0x1566, 0x70e3, 0x0001, 0x2b65, 0xf273, 0x1574, 0x7313, 0x2b65, 0x70e3, 0x0001, 0x0011, 0x70e2, 0x0001, 0x0013, 0xf073, 0x1574, 0x70e2, 0x0001, 0x0013, 0x76e3, 0x0001, 0x0000, 0x8a11, 0xfc00, 0x4a11, 0x8813, 0x7211, 0x2b65, 0x4811, 0xf845, 0x1599, 0xe730, 0xf4a9, 0xf830, 0x1594, 0xe712, 0x71e2, 0x0001, 0x0011, 0x4811, 0xf845, 0x1599, 0xf7a9, 0xf830, 0x1581, 0x4812, 0xf845, 0x1594, 0x10e3, 0x0001, 0xf273, 0x159c, 0x80e2, 0x0001, 0x71e3, 0x0001, 0x2b65, 0xf073, 0x159c, 0x76f8, 0x2b65, 0x0000, 0x8a11, 0xfc00, 0x4a11, 0x10f8, 0x290b, 0xf4e3, 0x7711, 0x2cbb, 0x61f8, 0x0011, 0x0001, 0xf830, 0x15b9, 0x4811, 0x7681, 0x0000, 0xf000, 0x0001, 0x80f8, 0x2b65, 0xf020, 0x00fe, 0x80f8, 0x2b66, 0xf484, 0xf273, 0x15c2, 0x80e1, 0x0001, 0xf020, 0x00ff, 0x80f8, 0x2b66, 0x7311, 0x2b65, 0xf484, 0x80f8, 0x2cbb, 0x7211, 0x2b65, 0xf495, 0x76e1, 0x0001, 0x0000, 0x10f8, 0x290c, 0xf4e3, 0x8a11, 0xfc00, 0x4a11, 0x8811, 0x4a16, 0xeeff, 0x10f8, 0x290b, 0xf4e3, 0x10f8, 0x2b67, 0xf845, 0x15dd, 0xf074, 0x159e, 0x76f8, 0x2b67, 0x0000, 0xf7b8, 0x4811, 0x10f8, 0x0008, 0xfa43, 0x15ff, 0x7216, 0x2b65, 0x61f8, 0x0011, 0x0001, 0xf830, 0x15eb, 0x6d91, 0x4811, 0xf484, 0x8811, 0x4816, 0xf845, 0x15ff, 0x1186, 0x10f8, 0x000b, 0xf468, 0xf478, 0x08f8, 0x0011, 0xf847, 0x160e, 0x71e6, 0x0001, 0x0016, 0x6c86, 0x1605, 0x10f8, 0x290c, 0xf4e3, 0xe800, 0xf073, 0x163a, 0x1186, 0x10f8, 0x000b, 0xf468, 0xf478, 0x08f8, 0x0011, 0xf846, 0x15fa, 0x8100, 0xf274, 0x1576, 0xf495, 0x4816, 0xf7b8, 0x4811, 0x0800, 0x10f8, 0x0008, 0xf468, 0xf478, 0xf010, 0x0002, 0xf842, 0x1622, 0xf273, 0x1632, 0xf495, 0xf640, 0x4911, 0x4816, 0xf620, 0xf000, 0x0001, 0x8812, 0x1000, 0xf620, 0xf000, 0x0001, 0x8082, 0xf274, 0x153b, 0xf495, 0x4812, 0x4811, 0xf484, 0x8086, 0x10f8, 0x290c, 0xf4e3, 0x4816, 0xf000, 0x0001, 0xee01, 0x8a16, 0x8a11, 0xfc00, 0x4a11, 0xf495, 0x3002, 0x20f8, 0x0008, 0xf274, 0x15cd, 0x8811, 0xf495, 0x8812, 0xf495, 0xf495, 0x6c82, 0x1650, 0xf273, 0x165e, 0xf495, 0xe800, 0x4911, 0xf495, 0x490b, 0xf84d, 0x165e, 0x4911, 0xf310, 0x0001, 0x891a, 0xf495, 0xf072, 0x165d, 0x7692, 0x0000, 0x8a11, 0xfc00, 0x4a11, 0x4a16, 0xf7b8, 0x4a17, 0x8817, 0xf010, 0x0001, 0xeefa, 0x8816, 0x110a, 0x10f8, 0x000b, 0x76f8, 0x2b66, 0x0100, 0x8911, 0xf843, 0x16db, 0x6c87, 0x167a, 0xf274, 0x15cd, 0xf495, 0xf640, 0xf073, 0x1723, 0x6c81, 0x1682, 0xf274, 0x1728, 0xf495, 0x4817, 0xf073, 0x16db, 0x1086, 0xfa47, 0x16db, 0xf495, 0x8002, 0x61f8, 0x0011, 0x0001, 0xf830, 0x168d, 0x6d91, 0x10f8, 0x0011, 0x1102, 0xf468, 0xf478, 0x08f8, 0x000b, 0xf847, 0x1706, 0xf640, 0x4916, 0xf600, 0xf000, 0x0001, 0x8003, 0x8004, 0x10f8, 0x290b, 0xf4e3, 0x6bf8, 0x2b66, 0xfffe, 0x7210, 0x2b66, 0x7103, 0x0012, 0x6de8, 0x2cbb, 0xf5aa, 0xf820, 0x16bb, 0xf7b8, 0xf495, 0x1182, 0xf84a, 0x16bb, 0x1002, 0xf620, 0x4911, 0xf620, 0xf100, 0x0001, 0x11f8, 0x000b, 0xf84a, 0x16df, 0xf274, 0x15cd, 0xf495, 0x4811, 0x8811, 0xf495, 0x4811, 0xf845, 0x16d8, 0x4816, 0xf000, 0x0001, 0x8000, 0x1002, 0x8001, 0xf274, 0x1863, 0xf495, 0x4811, 0xf274, 0x1728, 0xf495, 0x4817, 0x10f8, 0x290c, 0xf4e3, 0x4811, 0xf073, 0x1723, 0x10f8, 0x290c, 0xf4e3, 0xf273, 0x1723, 0xf495, 0xe800, 0xf274, 0x1576, 0xf495, 0x4812, 0xf7b8, 0x10f8, 0x000b, 0xf468, 0xf478, 0xf010, 0x0002, 0xf842, 0x16f1, 0x4811, 0xf273, 0x1701, 0xf500, 0x8186, 0x7086, 0x0011, 0x4816, 0x7002, 0x0011, 0x0002, 0xf000, 0x0001, 0x8816, 0xe801, 0xf620, 0x8086, 0xf274, 0x153b, 0xf495, 0x4816, 0x10f8, 0x290c, 0xf4e3, 0xf073, 0x1722, 0xf640, 0x4911, 0xf620, 0x8812, 0x10f8, 0x0008, 0xf468, 0xf478, 0xf010, 0x0002, 0xf843, 0x1722, 0x4816, 0xf600, 0x7086, 0x0011, 0xf000, 0x0001, 0x8816, 0x4812, 0xf010, 0x0001, 0x8086, 0x4816, 0xf274, 0x1728, 0xf000, 0x0001, 0x4817, 0xee06, 0x8a17, 0x8a16, 0x8a11, 0xfc00, 0x4a11, 0x4a16, 0x8816, 0x4808, 0xeeff, 0xf845, 0x17b4, 0x10f8, 0x290b, 0xf4e3, 0xf020, 0x0100, 0x6d8e, 0x80f8, 0x2b66, 0x8000, 0x4816, 0x8810, 0xf495, 0x7712, 0x2cbb, 0xe721, 0xf5a9, 0xf830, 0x1748, 0xf7a9, 0xf830, 0x17b1, 0xf273, 0x175c, 0x7714, 0x0000, 0xf7b8, 0xf495, 0x1081, 0xe714, 0xf842, 0x174f, 0xf484, 0x4911, 0xf600, 0xf000, 0x0001, 0x8811, 0xf495, 0xf495, 0xf5a9, 0xf830, 0x1748, 0xf7a9, 0xf830, 0x17b1, 0xf7b8, 0xf495, 0x1081, 0xf843, 0x17b1, 0xf484, 0x8081, 0x4811, 0x0881, 0xf000, 0x0001, 0x8815, 0x1000, 0xf010, 0x0001, 0x80f8, 0x2b66, 0x4812, 0x0000, 0x8810, 0xf495, 0xf495, 0x6d88, 0xf6ad, 0xf820, 0x1778, 0x7715, 0x0000, 0x4814, 0xf845, 0x179f, 0x1084, 0xf842, 0x179f, 0x4815, 0xf845, 0x1795, 0x1085, 0xf842, 0x1795, 0xf274, 0x1576, 0xf495, 0x4814, 0xf274, 0x1576, 0xf495, 0x4815, 0x1085, 0x0084, 0x0081, 0xf010, 0x0002, 0xf273, 0x17af, 0x8084, 0x4814, 0xf274, 0x1576, 0xf495, 0x4814, 0x1081, 0x0084, 0xf273, 0x1791, 0xf010, 0x0001, 0x4815, 0xf845, 0x17ae, 0x1085, 0xf842, 0x17ae, 0xf274, 0x1576, 0xf495, 0x4815, 0x1085, 0x0081, 0xf010, 0x0001, 0x8081, 0x4811, 0xf074, 0x153b, 0x10f8, 0x290c, 0xf4e3, 0xee01, 0x8a16, 0x8a11, 0xfc00, 0xf6b8, 0x4808, 0xec0f, 0x1e01, 0xfc00, 0xf6b8, 0x4808, 0xec0f, 0x1e01, 0xfe00, 0xf0f0, 0xf495, 0xf495, 0x4a0e, 0x4a0b, 0x4a0c, 0x4a0d, 0xf6b7, 0xeef3, 0xf7b8, 0xf468, 0xf478, 0xf845, 0x183d, 0xf540, 0xf6b8, 0xf0e1, 0x6f05, 0x0c78, 0xf0e8, 0xf0f7, 0xf060, 0x0080, 0xfd4b, 0xf484, 0xf7b8, 0x4e0a, 0x5612, 0xf845, 0x1841, 0xf540, 0xf0e1, 0x6f06, 0x0c78, 0xf6b8, 0xf0e8, 0xf0f7, 0xf060, 0x0080, 0xfd4b, 0xf484, 0xf7b8, 0x4e08, 0x1005, 0x1106, 0xf520, 0xf84b, 0x181c, 0xf84e, 0x182d, 0x560a, 0x5008, 0xf845, 0x185f, 0x1105, 0x8204, 0xf485, 0xf0e6, 0xf48e, 0xf495, 0xf48f, 0x8c01, 0xf300, 0x0001, 0x0901, 0x8101, 0xf84f, 0x185b, 0xf310, 0x00ff, 0xf84a, 0x184e, 0xf0f9, 0x8003, 0xf038, 0x7f00, 0x8202, 0x6f04, 0x0c49, 0xf063, 0x0100, 0x3c01, 0xf0e7, 0x5002, 0xee0d, 0x8a0d, 0x8a0c, 0x8a0b, 0x8a0e, 0xfc00, 0xf785, 0xf310, 0x0018, 0xf84a, 0x1841, 0xf300, 0x0017, 0x8104, 0x5608, 0x4704, 0xf47f, 0x1105, 0x500a, 0xf844, 0x17f9, 0xf073, 0x1816, 0xf310, 0x0018, 0xf84a, 0x183d, 0xf300, 0x0017, 0x8104, 0x560a, 0x4704, 0xf47f, 0x1106, 0x5008, 0xf844, 0x17f9, 0xf073, 0x1816, 0xf273, 0x1816, 0x5612, 0xf495, 0x560a, 0xf846, 0x1847, 0xf484, 0x6b05, 0x0100, 0xf061, 0x0080, 0x4505, 0xf273, 0x1816, 0xf3e7, 0xf600, 0x7600, 0x0002, 0xf074, 0x11c5, 0x4404, 0xf063, 0x1f40, 0xf040, 0xffff, 0xf273, 0x1816, 0xf060, 0x7f7f, 0x7600, 0x0001, 0xf074, 0x11c5, 0xf273, 0x1816, 0xf420, 0xf495, 0x4a11, 0x8811, 0xf495, 0xeefe, 0xe710, 0x7104, 0x0012, 0xf6aa, 0x1105, 0xf820, 0x1875, 0x7000, 0x0012, 0x8101, 0xf074, 0x152d, 0xf073, 0x188a, 0x00f8, 0x000b, 0x8813, 0x4812, 0x00f8, 0x000b, 0x490b, 0x8812, 0xf84d, 0x1889, 0xf310, 0x0001, 0x891a, 0xf495, 0xf072, 0x1888, 0x10ea, 0xffff, 0x80eb, 0xffff, 0x4811, 0xee02, 0x8a11, 0xfc00, | 23 | 0xf495, 0x4a08, 0x4a09, 0x4a0a, 0x4a0b, 0x4a0c, 0x4a0d, 0x4a10, 0x4a11, 0x4a12, 0x4a13, 0x4a14, 0x4a15, 0x4a16, 0x4a17, 0x4a17, 0x4a19, 0x4a0e, 0x4a06, 0x4a07, 0x4a1a, 0x4a1d, 0x4a1b, 0x4a1c, 0x68f8, 0x0007, 0x7d3f, 0x69f8, 0x0007, 0x4000, 0x68f8, 0x001d, 0xfffc, 0x4818, 0x68f8, 0x0018, 0xfffe, 0x7711, 0x0001, 0x4a08, 0x7681, 0x0001, 0x10f8, 0x031d, 0x76f8, 0x031e, 0x0000, 0xfa44, 0x00c2, 0xf495, 0xeeff, 0x7712, 0x0054, 0x960f, 0xf830, 0x00c2, 0xf074, 0x00fc, 0x7711, 0x0054, 0x6981, 0x0001, 0xf074, 0x02af, 0xf073, 0x00c4, 0xf074, 0x00fc, 0xee01, 0x8a18, 0xf495, 0x8a1c, 0x8a1b, 0x8a1d, 0x8a1a, 0x8a07, 0x8a06, 0x8a0e, 0x8a19, 0x8a17, 0x8a17, 0x8a16, 0x8a15, 0x8a14, 0x8a13, 0x8a12, 0x8a11, 0x8a10, 0x8a0d, 0x8a0c, 0x8a0b, 0x8a0a, 0x8a09, 0x8a08, 0xf4eb, 0x4a11, 0x7711, 0x0026, 0x7712, 0x0001, 0x7713, 0x0001, 0x7681, 0x0010, 0x7711, 0x0000, 0x7681, 0xffff, 0xe501, 0xf495, 0xf6bb, 0xf074, 0x0284, 0xf074, 0x0243, 0xf4e1, 0xf495, 0xf073, 0x00f3, 0xe808, 0x75f8, 0x0008, 0x0280, 0xfc00, 0x4a11, 0x60f8, 0x031d, 0x0001, 0xfa30, 0x0109, 0xf495, 0xeefe, 0x60f8, 0x031d, 0x0002, 0xf820, 0x011e, 0x7711, 0x0054, 0x6881, 0xfffe, 0xf074, 0x02ba, 0xe800, 0x75f8, 0x0008, 0x8006, 0x76f8, 0x031b, 0x0000, 0x76f8, 0x0319, 0x0000, 0x76f8, 0x031a, 0x0000, 0xf073, 0x018b, 0x10f8, 0x031a, 0x08f8, 0x0318, 0xf844, 0x012f, 0x76f8, 0x031a, 0x0000, 0x76f8, 0x031e, 0x0001, 0x76f8, 0x02c5, 0x0003, 0xf074, 0x00f7, 0x10f8, 0x031e, 0xf844, 0x018b, 0x10f8, 0x0318, 0x00f8, 0x0319, 0x08f8, 0x031a, 0x8811, 0xf495, 0x7710, 0x1000, 0xf6a9, 0xf820, 0x0146, 0xf020, 0x1000, 0xf273, 0x014a, 0x08f8, 0x0319, 0x10f8, 0x0318, 0x08f8, 0x031a, 0x80f8, 0x031b, 0x10f8, 0x031c, 0xf6b8, 0xf000, 0x8000, 0x6ff8, 0x0319, 0x0c1f, 0x75f8, 0x0008, 0x8002, 0xe800, 0x75f8, 0x0008, 0x8003, 0x10f8, 0x0316, 0xf1ef, 0xf3e1, 0x10f8, 0x0317, 0xf2a0, 0x00f8, 0x031a, 0x4e00, 0xf020, 0xffff, 0x5700, 0xf280, 0x75f8, 0x0008, 0x8000, 0x5600, 0xf0f0, 0x75f8, 0x0008, 0x8001, 0xe800, 0x75f8, 0x031b, 0x8004, 0x75f8, 0x0008, 0x8005, 0x74f8, 0x02c7, 0x8006, 0x74f8, 0x02c8, 0x8001, 0x74f8, 0x02c9, 0x8000, 0x74f8, 0x02ca, 0x8003, 0xe801, 0x74f8, 0x02cb, 0x8002, 0x75f8, 0x0008, 0x8006, 0xee02, 0x8a11, 0xfc00, 0xf495, 0x4a08, 0x4a09, 0x4a0a, 0x4a0b, 0x4a0c, 0x4a0d, 0x4a10, 0x4a11, 0x4a12, 0x4a13, 0x4a14, 0x4a15, 0x4a16, 0x4a17, 0x4a17, 0x4a19, 0x4a0e, 0x4a06, 0x4a07, 0x4a1a, 0x4a1d, 0x4a1b, 0x4a1c, 0x68f8, 0x0007, 0x7d3f, 0x69f8, 0x0007, 0x4000, 0x68f8, 0x001d, 0xfffc, 0x4818, 0x68f8, 0x0018, 0xfffe, 0x7711, 0x0001, 0x4a08, 0x7681, 0x0040, 0x7711, 0x0055, 0x7681, 0x0000, 0xf020, 0x0800, 0x7711, 0x0057, 0xeeff, 0x1881, 0x8000, 0xf020, 0x0800, 0x1c00, 0x76f8, 0x0319, 0x0000, 0x80f8, 0x031c, 0xf074, 0x00fc, 0xee01, 0x8a18, 0xf495, 0x8a1c, 0x8a1b, 0x8a1d, 0x8a1a, 0x8a07, 0x8a06, 0x8a0e, 0x8a19, 0x8a17, 0x8a17, 0x8a16, 0x8a15, 0x8a14, 0x8a13, 0x8a12, 0x8a11, 0x8a10, 0x8a0d, 0x8a0c, 0x8a0b, 0x8a0a, 0x8a09, 0x8a08, 0xf4eb, 0xf495, 0x4a08, 0x4a09, 0x4a0a, 0x4a0b, 0x4a0c, 0x4a0d, 0x4a10, 0x4a11, 0x4a12, 0x4a13, 0x4a14, 0x4a15, 0x4a16, 0x4a17, 0x4a17, 0x4a19, 0x4a0e, 0x4a06, 0x4a07, 0x4a1a, 0x4a1d, 0x4a1b, 0x4a1c, 0x68f8, 0x0007, 0x7d3f, 0x69f8, 0x0007, 0x4000, 0x68f8, 0x001d, 0xfffc, 0x4818, 0x68f8, 0x0018, 0xfffe, 0x7711, 0x0001, 0x4a08, 0x7681, 0x0800, 0x10f8, 0x031b, 0x00f8, 0x0319, 0x80f8, 0x0319, 0x7710, 0x1000, 0x7211, 0x0319, 0x10f8, 0x031b, 0xf5a9, 0xeeff, 0x00f8, 0x031a, 0xfa20, 0x0228, 0x80f8, 0x031a, 0xf074, 0x00fc, 0xee01, 0x8a18, 0xf495, 0x8a1c, 0x8a1b, 0x8a1d, 0x8a1a, 0x8a07, 0x8a06, 0x8a0e, 0x8a19, 0x8a17, 0x8a17, 0x8a16, 0x8a15, 0x8a14, 0x8a13, 0x8a12, 0x8a11, 0x8a10, 0x8a0d, 0x8a0c, 0x8a0b, 0x8a0a, 0x8a09, 0x8a08, 0xf4eb, 0x4a11, 0x7711, 0x0055, 0x76f8, 0x031a, 0x0000, 0x76f8, 0x0319, 0x0000, 0x76f8, 0x031b, 0x0000, 0x76f8, 0x031c, 0x0000, 0x76f8, 0x031e, 0x0000, 0x76f8, 0x031d, 0x0001, 0x7681, 0x0003, 0x7711, 0x0057, 0x7681, 0x2800, 0x7711, 0x0055, 0x7681, 0x0004, 0x7711, 0x0057, 0x7681, 0x7141, 0x7711, 0x0055, 0x7681, 0x0000, 0x7711, 0x0057, 0x7681, 0x8000, 0x7711, 0x0055, 0x7681, 0x0001, 0x7711, 0x0057, 0x7681, 0x0022, 0x7711, 0x0055, 0x7681, 0x0002, 0x7711, 0x0057, 0x7681, 0x1000, 0x7711, 0x0054, 0x7681, 0x0080, 0x8a11, 0xfc00, 0x4a11, 0x7711, 0x0038, 0x7681, 0x0000, 0x7711, 0x0039, 0x7681, 0x0000, 0x7711, 0x0038, 0x7681, 0x0001, 0x7711, 0x0039, 0x7681, 0x0030, 0x7711, 0x0038, 0x7681, 0x000e, 0x7711, 0x0039, 0x7681, 0x0002, 0x7711, 0x0038, 0x7681, 0x0004, 0x7711, 0x0039, 0x7681, 0x00a0, 0x7711, 0x0038, 0x7681, 0x0005, 0x7711, 0x0039, 0x7681, 0x0000, 0x8a11, 0xfc00, 0x4a11, 0x7711, 0x0038, 0x7681, 0x0001, 0x7711, 0x0039, 0x6981, 0x0001, 0x8a11, 0xfc00, 0x4a11, 0x7711, 0x0038, 0x7681, 0x0001, 0x7711, 0x0039, 0x6881, 0xfffe, 0x8a11, 0xfc00, |
24 | }; | ||
25 | static const unsigned short _section_cinit[] = { | ||
26 | 0x0001, 0x28e2, 0x0000, 0x0001, 0x28e3, 0x0000, 0x0001, 0x28e6, 0x0001, 0x0001, 0x28e7, 0x0000, 0x0001, 0x28e8, 0x0000, 0x0001, 0x2909, 0x0000, 0x0001, 0x290a, 0x0000, 0x0001, 0x290b, 0x0412, 0x0001, 0x290c, 0x0412, 0x0001, 0x2b67, 0x0001, 0x0000, | ||
27 | }; | ||
28 | static const unsigned short _section_const[] = { | ||
29 | 0x0028, 0x006e, 0x0075, 0x006c, 0x006c, 0x0029, 0x0000, 0x0025, 0x0000, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0000, 0x0000, 0x0000, 0x7f7f, 0xffff, 0xff7f, 0xffff, 0x3f80, 0x0000, 0x4120, 0x0000, 0x0000, 0x0000, 0x4f00, 0x0000, 0x4120, 0x0000, 0x3f80, 0x0000, 0x0000, 0x0000, 0x4f00, 0x0000, 0x4120, 0x0000, 0x3f80, 0x0000, 0x0000, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0088, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0010, 0x0010, 0x0010, 0x0010, 0x0020, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0044, 0x0053, 0x0050, 0x0020, 0x0069, 0x006e, 0x0069, 0x0074, 0x0065, 0x0064, 0x002e, 0x002e, 0x002e, 0x0000, | ||
30 | }; | 24 | }; |
31 | static const unsigned short _section_vectors[] = { | 25 | static const unsigned short _section_vectors[] = { |
32 | 0xf273, 0x02fa, 0xf495, 0xf495, 0xf4eb, 0xf495, 0xf495, 0xf495, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf273, 0x0085, 0xf495, 0xf495, 0xf4eb, 0xf495, 0xf495, 0xf495, 0xf4eb, 0xf495, 0xf495, 0xf495, 0xf4eb, 0xf495, 0xf495, 0xf495, 0xf4eb, 0xf495, 0xf495, 0xf495, 0xf4eb, 0xf495, 0xf495, 0xf495, 0xf273, 0x01bc, 0xf495, 0xf495, 0xf4eb, 0xf495, 0xf495, 0xf495, 0xf4eb, 0xf495, 0xf495, 0xf495, 0xf4eb, 0xf495, 0xf495, 0xf495, 0xf4eb, 0xf495, 0xf495, 0xf495, 0xf4eb, 0xf495, 0xf495, 0xf495, 0xf4eb, 0xf495, 0xf495, 0xf495, 0xf4eb, 0xf495, 0xf495, 0xf495, 0xf273, 0x022f, 0xf495, 0xf495, 0xf4eb, 0xf495, 0xf495, 0xf495, | 26 | 0xf273, 0x00df, 0xf495, 0xf495, 0xf4eb, 0xf495, 0xf495, 0xf495, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf273, 0x0080, 0xf495, 0xf495, 0xf4eb, 0xf495, 0xf495, 0xf495, 0xf4eb, 0xf495, 0xf495, 0xf495, 0xf4eb, 0xf495, 0xf495, 0xf495, 0xf4eb, 0xf495, 0xf495, 0xf495, 0xf4eb, 0xf495, 0xf495, 0xf495, 0xf273, 0x018e, 0xf495, 0xf495, 0xf4eb, 0xf495, 0xf495, 0xf495, 0xf4eb, 0xf495, 0xf495, 0xf495, 0xf4eb, 0xf495, 0xf495, 0xf495, 0xf4eb, 0xf495, 0xf495, 0xf495, 0xf4eb, 0xf495, 0xf495, 0xf495, 0xf4eb, 0xf495, 0xf495, 0xf495, 0xf4eb, 0xf495, 0xf495, 0xf495, 0xf273, 0x01e8, 0xf495, 0xf495, 0xf4eb, 0xf495, 0xf495, 0xf495, |
33 | }; | 27 | }; |
34 | 28 | ||
35 | 29 | ||
36 | static const struct dsp_section dsp_image[] = { | 30 | static const struct dsp_section dsp_image[] = { |
37 | {_section_text, 0x0080, 0x180d}, | 31 | {_section_text, 0x0080, 0x0245}, |
38 | {_section_cinit, 0x2dbb, 0x001f}, | 32 | {NULL /* .bss */, 0x02c5, 0x005a}, |
39 | {NULL /* .bss */, 0x288d, 0x02db}, | ||
40 | {_section_const, 0x2b68, 0x0153}, | ||
41 | {NULL /* .sysmem */, 0x2cbb, 0x0100}, | ||
42 | {NULL /* .stack */, 0x188d, 0x1000}, | ||
43 | {_section_vectors, 0x7f80, 0x0080}, | 33 | {_section_vectors, 0x7f80, 0x0080}, |
44 | {NULL /* .dma */, 0x8000, 0x4000}, | 34 | {NULL /* .dma */, 0x8000, 0x1000}, |
45 | {NULL, 0, 0} | 35 | {NULL, 0, 0} |
46 | }; | 36 | }; |
47 | 37 | ||
48 | /* Symbol table, usable with the DSP_() macro (see dsp-target.h). */ | 38 | /* Symbol table, usable with the DSP_() macro (see dsp-target.h). */ |
49 | #define _waitack 0x00ed | 39 | #define _handle_int0 0x0080 |
50 | #define _acked 0x28de | 40 | #define _status 0x02c5 |
51 | #define _startack 0x00e5 | 41 | #define _audiohw_start 0x02af |
52 | #define _debugf 0x00f8 | 42 | #define _dma0_stopped 0x031d |
53 | #define _handle_int0 0x0085 | 43 | #define _waiting 0x031e |
54 | #define _status 0x288d | 44 | #define _rebuffer 0x00fc |
55 | #define _audiohw_start 0x02e4 | 45 | #define _main 0x00df |
56 | #define _dma0_stopped 0x28e6 | 46 | #define _dma_init 0x0243 |
57 | #define _waiting 0x28e7 | 47 | #define _audiohw_init 0x0284 |
58 | #define _vsnprintf 0x0396 | 48 | #define _handle_dma0 0x018e |
59 | #define _rebuffer 0x0130 | 49 | #define _handle_dmac 0x01e8 |
60 | #define _main 0x0113 | 50 | #define _sdem_addrh 0x0316 |
61 | #define _dma_init 0x028a | 51 | #define _sdem_addrl 0x0317 |
62 | #define _audiohw_init 0x02b9 | 52 | #define _sdem_level 0x031a |
63 | #define _c_int00 0x02fa | 53 | #define _sdem_dsp_size 0x0318 |
64 | #define _handle_dma0 0x01bc | 54 | #define _audiohw_stop 0x02ba |
65 | #define _handle_dmac 0x022f | ||
66 | #define _last_size 0x28e4 | ||
67 | #define _dsp_level 0x28e2 | ||
68 | #define _dma0_unlocked 0x28e5 | ||
69 | #define _data 0x8000 | ||
70 | #define _sdem_addrh 0x28df | ||
71 | #define _sdem_addrl 0x28e0 | ||
72 | #define _sdem_level 0x28e3 | ||
73 | #define _sdem_dsp_size 0x28e1 | ||
74 | #define _audiohw_stop 0x02ef | ||
75 | #define cinit 0x2dbb | ||
76 | #define __args_main 0x0f88 | ||
77 | #define _exit 0x0344 | ||
78 | #define _atexit 0x0371 | ||
79 | #define __dtors_ptr 0x290a | ||
80 | #define __cleanup_ptr 0x2909 | ||
81 | #define _abort 0x0393 | ||
82 | #define __lock 0x290b | ||
83 | #define __unlock 0x290c | ||
84 | #define __printfi 0x0419 | ||
85 | #define _memcpy 0x152d | ||
86 | #define __register_lock 0x0413 | ||
87 | #define __register_unlock 0x0416 | ||
88 | #define __nop 0x0412 | ||
89 | #define _malloc 0x15cd | ||
90 | #define _memccpy 0x150d | ||
91 | #define _ecvt 0x0ff6 | ||
92 | #define _fcvt 0x12f8 | ||
93 | #define _atoi 0x0f9f | ||
94 | #define _free 0x1728 | ||
95 | #define __ctypes_ 0x2bac | ||
96 | #define _ltoa 0x14bf | ||
97 | #define __sys_memory 0x2cbb | ||
98 | #define _minit 0x159e | ||
99 | #define _realloc 0x1660 | ||
100 | #define _calloc 0x163e | ||
101 | #define _memmove 0x1863 | ||
102 | #define ___text__ 0x0080 | 55 | #define ___text__ 0x0080 |
103 | #define etext 0x188d | 56 | #define etext 0x02c5 |
104 | #define ___etext__ 0x188d | 57 | #define ___etext__ 0x02c5 |
105 | #define ___cinit__ 0x2dbb | 58 | #define ___data__ 0x0080 |
106 | #define ___bss__ 0x288d | 59 | #define edata 0x0080 |
107 | #define end 0x2b68 | 60 | #define ___edata__ 0x0080 |
108 | #define ___end__ 0x2b68 | 61 | #define ___bss__ 0x02c5 |
109 | #define ___data__ 0x0000 | 62 | #define end 0x031f |
110 | #define edata 0x0000 | 63 | #define ___end__ 0x031f |
111 | #define ___edata__ 0x0000 | ||
112 | 64 | ||
113 | #endif | 65 | #endif |
diff --git a/firmware/target/arm/tms320dm320/dsp/ipc.h b/firmware/target/arm/tms320dm320/dsp/ipc.h index b307753c0f..030febd021 100644 --- a/firmware/target/arm/tms320dm320/dsp/ipc.h +++ b/firmware/target/arm/tms320dm320/dsp/ipc.h | |||
@@ -34,15 +34,15 @@ | |||
34 | #define PACKED | 34 | #define PACKED |
35 | #endif | 35 | #endif |
36 | 36 | ||
37 | #define PCM_SIZE 0x8000 /* bytes */ | 37 | /* Define this if you want to use debugf on the DSP. This consumes quite a bit |
38 | * of space so it is disabled by default. */ | ||
39 | /* #define HAVE_DEBUG */ | ||
38 | 40 | ||
39 | struct sdram_buffer { | 41 | struct sdram_buffer { |
40 | unsigned long addr; | 42 | unsigned long addr; |
41 | unsigned short bytes; | 43 | unsigned short bytes; |
42 | } PACKED; | 44 | } PACKED; |
43 | 45 | ||
44 | #define SDRAM_BUFFERS 4 | ||
45 | |||
46 | struct ipc_message { | 46 | struct ipc_message { |
47 | unsigned short msg; | 47 | unsigned short msg; |
48 | union { | 48 | union { |
diff --git a/firmware/target/arm/tms320dm320/dsp/linker.cmd b/firmware/target/arm/tms320dm320/dsp/linker.cmd index 844fe25903..c2ae5f0c6b 100644 --- a/firmware/target/arm/tms320dm320/dsp/linker.cmd +++ b/firmware/target/arm/tms320dm320/dsp/linker.cmd | |||
@@ -1,29 +1,39 @@ | |||
1 | -c | 1 | -c |
2 | -x | 2 | -x |
3 | -stack 0x1000 | 3 | -stack 0x1000 |
4 | -heap 0x100 | 4 | -heap 0x100 |
5 | -l rts500.lib | 5 | |
6 | /* The rtx500.lib should be included if you want proper initialization, | ||
7 | * currently the program is setup so that it is not necessary to save space. | ||
8 | * reset vector should jump to _c_int00 if initialization is needed. | ||
9 | * | ||
10 | * -l rts500.lib*/ | ||
6 | 11 | ||
7 | MEMORY | 12 | MEMORY |
8 | { | 13 | { |
9 | PAGE 0: | 14 | PAGE 0: |
10 | DARAM: origin = 80h, length = 7F80h | 15 | DARAM (RWIX): origin = 80h, length = 7F00h |
11 | SARAM: origin = 8000h, length = 4000h | 16 | VECS (RIX) : origin = 7F80h, length = 80h |
17 | |||
18 | /* SARAM can be read and written to, but it cannot execute and does not need | ||
19 | * to be initialized. */ | ||
20 | SARAM (RW) : origin = 8000h, length = 4000h | ||
12 | } | 21 | } |
13 | 22 | ||
14 | SECTIONS | 23 | SECTIONS |
15 | { | 24 | { |
16 | .text PAGE 0 | 25 | .text > DARAM PAGE 0 |
17 | .cinit PAGE 0 | 26 | .cinit > DARAM PAGE 0 |
18 | .switch PAGE 0 | 27 | .switch > DARAM PAGE 0 |
28 | .data > DARAM PAGE 0 | ||
19 | 29 | ||
20 | .bss PAGE 0 | 30 | .bss > DARAM PAGE 0 |
21 | .const PAGE 0 | 31 | .const > DARAM PAGE 0 |
22 | .sysmem PAGE 0 | 32 | .sysmem > DARAM PAGE 0 |
23 | .stack PAGE 0 | 33 | .stack > DARAM PAGE 0 |
24 | 34 | ||
25 | .vectors : PAGE 0 load = 7F80h | 35 | .vectors > VECS PAGE 0 |
26 | 36 | ||
27 | /* DMA buffers for ABU mode must start on a 2*size boundary. */ | 37 | /* DMA buffers for ABU mode must start on a 2*size boundary. */ |
28 | .dma : PAGE 0 load = 0x8000 | 38 | .dma > SARAM PAGE 0 |
29 | } | 39 | } |
diff --git a/firmware/target/arm/tms320dm320/dsp/main.c b/firmware/target/arm/tms320dm320/dsp/main.c index 8c36e6a88b..a62bb50ba2 100644 --- a/firmware/target/arm/tms320dm320/dsp/main.c +++ b/firmware/target/arm/tms320dm320/dsp/main.c | |||
@@ -24,7 +24,6 @@ | |||
24 | #include "ipc.h" | 24 | #include "ipc.h" |
25 | #include "dma.h" | 25 | #include "dma.h" |
26 | #include "audio.h" | 26 | #include "audio.h" |
27 | #include <math.h> | ||
28 | 27 | ||
29 | void main(void) { | 28 | void main(void) { |
30 | TCR = 1 << 4; /* Stop the timer. */ | 29 | TCR = 1 << 4; /* Stop the timer. */ |
@@ -36,7 +35,9 @@ void main(void) { | |||
36 | 35 | ||
37 | dma_init(); | 36 | dma_init(); |
38 | 37 | ||
38 | #if defined(HAVE_DEBUG) | ||
39 | debugf("DSP inited..."); | 39 | debugf("DSP inited..."); |
40 | #endif | ||
40 | 41 | ||
41 | for (;;) { | 42 | for (;;) { |
42 | asm(" IDLE 1"); | 43 | asm(" IDLE 1"); |
@@ -45,13 +46,6 @@ void main(void) { | |||
45 | } | 46 | } |
46 | 47 | ||
47 | /* Obsoleted/testing snippets: */ | 48 | /* Obsoleted/testing snippets: */ |
48 | #ifdef REMAP_VECTORS | ||
49 | /* Remap vectors to 0x3F80 (set in linker.cmd). */ | ||
50 | PMST = (PMST & 0x7f) | 0x3F80; | ||
51 | |||
52 | /* Make sure working interrupts aren't a fluke. */ | ||
53 | memset((unsigned short *)0x7f80, 0, 0x80); | ||
54 | #endif | ||
55 | 49 | ||
56 | #ifdef DATA_32_SINE | 50 | #ifdef DATA_32_SINE |
57 | for (i = 0; i < 32; i++) { | 51 | for (i = 0; i < 32; i++) { |
diff --git a/firmware/target/arm/tms320dm320/dsp/tsc2100.c b/firmware/target/arm/tms320dm320/dsp/tsc2100.c index 5127681269..3a02eb92b4 100644 --- a/firmware/target/arm/tms320dm320/dsp/tsc2100.c +++ b/firmware/target/arm/tms320dm320/dsp/tsc2100.c | |||
@@ -39,9 +39,11 @@ void audiohw_start(void) | |||
39 | { | 39 | { |
40 | /* Trigger first XEVT0 */ | 40 | /* Trigger first XEVT0 */ |
41 | SPCR20 |= 1; | 41 | SPCR20 |= 1; |
42 | } | 42 | } |
43 | audiohw_stop(void) | 43 | |
44 | void audiohw_stop(void) | ||
44 | { | 45 | { |
45 | /* Reset the transmitter */ | 46 | /* Reset the transmitter */ |
46 | SPCR20&=0xFFFE; | 47 | SPCR20&=0xFFFE; |
47 | } | 48 | } |
49 | |||
diff --git a/firmware/target/arm/tms320dm320/dsp/vectors.asm b/firmware/target/arm/tms320dm320/dsp/vectors.asm index 1551d996fc..98d1409cb3 100644 --- a/firmware/target/arm/tms320dm320/dsp/vectors.asm +++ b/firmware/target/arm/tms320dm320/dsp/vectors.asm | |||
@@ -27,13 +27,17 @@ | |||
27 | 27 | ||
28 | ; External Functions | 28 | ; External Functions |
29 | .global _handle_int0 | 29 | .global _handle_int0 |
30 | .global _c_int00 | 30 | .global _main |
31 | .global _handle_dma0 | 31 | .global _handle_dma0 |
32 | .global _handle_dmac | 32 | .global _handle_dmac |
33 | 33 | ||
34 | .sect ".vectors" | 34 | .sect ".vectors" |
35 | ; Reset Interrupt | 35 | ; Reset Interrupt |
36 | RS_V: BD _c_int00 | 36 | ; The rtx500.lib should be included if you want proper initialization, |
37 | ; currently the program is setup so that it is not necessary to save space. | ||
38 | ; reset vector should jump to _c_int00 instead of main if initialization is | ||
39 | ; needed. | ||
40 | RS_V: BD _main | ||
37 | NOP | 41 | NOP |
38 | NOP | 42 | NOP |
39 | 43 | ||
diff --git a/firmware/target/arm/tms320dm320/mrobe-500/pcm-mr500.c b/firmware/target/arm/tms320dm320/mrobe-500/pcm-mr500.c index 3f15bd6dd0..cdec2ab77c 100644 --- a/firmware/target/arm/tms320dm320/mrobe-500/pcm-mr500.c +++ b/firmware/target/arm/tms320dm320/mrobe-500/pcm-mr500.c | |||
@@ -91,6 +91,7 @@ void pcm_play_dma_start(const void *addr, size_t size) | |||
91 | void pcm_play_dma_stop(void) | 91 | void pcm_play_dma_stop(void) |
92 | { | 92 | { |
93 | DSP_(_dma0_stopped)=1; | 93 | DSP_(_dma0_stopped)=1; |
94 | dsp_wake(); | ||
94 | } | 95 | } |
95 | 96 | ||
96 | void pcm_play_lock(void) | 97 | void pcm_play_lock(void) |
@@ -108,6 +109,7 @@ void pcm_play_dma_pause(bool pause) | |||
108 | if (pause) | 109 | if (pause) |
109 | { | 110 | { |
110 | DSP_(_dma0_stopped)=2; | 111 | DSP_(_dma0_stopped)=2; |
112 | dsp_wake(); | ||
111 | } | 113 | } |
112 | else | 114 | else |
113 | { | 115 | { |