Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
105 | savelij | 1 | |
112 | savelij | 2 | ;LAST UPDATE 17.06.2013 savelij |
105 | savelij | 3 | |
4 | ;SD & MP3
|
||
112 | savelij | 5 | Sd_init EQU 0 ; SD |
6 | Sd__off EQU 1 ; |
||
7 | Rdsingl EQU 2 ; 1 |
||
8 | Rdmulti EQU 3 ; "A" |
||
9 | Wrsingl EQU 4 ; 1 - |
||
10 | Wrmulti EQU 5 ; "A" - |
||
11 | Avtodet EQU 6 ; GS/NeoGS |
||
12 | Freqnc EQU 7 ; |
||
13 | Hardmp3 EQU 8 ; MP3 |
||
14 | Ldi_mp3 EQU 9 ; SD>MP3 |
||
105 | savelij | 15 | Com_mp3 EQU 0X0A ;RD/WR MP3 |
16 | Softmp3 EQU 0X0B ;SOFT MP3 |
||
17 | Dat2mp3 EQU 0X0C ; . GSDAT>MP3 |
||
18 | Zer2mp3 EQU 0X0D ; 2048 >MP3 |
||
19 | |||
20 | ;
SD-CARD NGS |
||
21 | ;+
MP3-
|
||
22 | |||
23 | ;ๅฎคญ๋ฅ ฏ เ ฌฅโเ๋ ฎก้จฅ: |
||
24 | ;HL- คเฅแ ง ฃเใงชจ ข ฏ ฌ๏โ์ |
||
25 | ;BCDE-32-ๅ กจโญ๋ฉ ญฎฌฅเ แฅชโฎเ |
||
26 | ;A-ชฎซจ็ฅแโขฎ กซฎชฎข (กซฎช=512 ก ฉโ) |
||
27 | ;โฎซ์ชฎ คซ๏ ฌญฎฃฎกซฎ็ญฎฉ ง ฏจแจ/็โฅญจจ |
||
28 | |||
29 | ;่จกชจ ข๋ค ข ฅฌ๋ฅ ญ ข๋ๅฎคฅ: |
||
30 | ;A=0-จญจๆจ ซจง ๆจ๏ ฏเฎ่ซ ใแฏฅ่ญฎ |
||
31 | ;A=1-ช เโ ญฅ ญ ฉคฅญ จซจ ญฅ ฎโขฅโจซ |
||
32 | ;A=2-ช เโ ง ้จ้ฅญ ฎโ ง ฏจแจ |
||
33 | ;A=3-ฏฎฏ๋โช ง ฏจแจ ข แฅชโฎเ 0 ช เโ๋ |
||
34 | ;A=0X80-ช เโ ฏฅเฅแโ ซ ฎโขฅ็ โ์ |
||
35 | |||
112 | savelij | 36 | ; SD |
37 | CALL CMP_INT |
||
105 | savelij | 38 | DI |
39 | EXX |
||
40 | PUSH HL ; HL' |
||
41 | PUSH DE ; DE' |
||
42 | LD HL,OK_SD |
||
43 | PUSH HL ; OK |
||
44 | LD HL,0 |
||
45 | ADD HL,SP ; |
||
46 | EX DE,HL |
||
47 | LD HL,ERR_SD ; |
||
48 | EXX |
||
49 | PUSH HL |
||
50 | PUSH DE |
||
51 | ADD A,A |
||
52 | LD L,A |
||
53 | LD H,0 |
||
54 | LD DE,TABL_SD |
||
55 | ADD HL,DE |
||
56 | EX AF,AF' |
||
57 | LD E,(HL) |
||
58 | INC HL |
||
59 | LD D,(HL) |
||
60 | EX DE,HL |
||
61 | POP DE |
||
62 | EX (SP),HL |
||
63 | RET |
||
64 | |||
65 | OK_SD EXX |
||
66 | ERR_SD EX DE,HL |
||
67 | LD SP,HL |
||
68 | POP DE |
||
69 | POP DE |
||
70 | POP HL |
||
71 | EXX |
||
112 | savelij | 72 | PUSH AF |
73 | LD A,(INT_MODE) |
||
74 | AND A |
||
75 | JR Z,ERR_SD1 |
||
76 | EI |
||
77 | ERR_SD1 POP AF |
||
105 | savelij | 78 | RET |
79 | |||
80 | TABL_SD DW SD_INIT ;0 ฏ เ ฌฅโเฎข ญฅ โเฅกใฅโ, ญ ข๋ๅฎคฅ A แฌฎโเจ ข๋่ฅ ฏฅเข๋ฅ 2 งญ ็ฅญจ๏ |
||
81 | DW SD__OFF ;1 ฏเฎแโฎ แญ๏โจฅ ข๋กฎเ SD ช เโ๋ |
||
82 | DW RDSINGL ;2 1
|
||
83 | DW RDMULTI ;3 "A"
|
||
84 | DW EMPTY ;4 1
|
||
85 | DW EMPTY ;5 "A"
|
||
86 | DW AVTODET ;6-
|
||
87 | DW FREQNC ;7- |
||
88 | DW HARDMP3 ;8 INIT MP3-
|
||
89 | DW LDI_MP3 ;9 SD MP3 |
||
90 | DW COM_MP3 ;0XA RD&WR MP3-
|
||
91 | DW SOFTMP3 ;0XB SOFT RESET MP3CHIP |
||
92 | DW DAT2MP3 ;0XC GSDAT2MP3 |
||
93 | DW ZER2MP3 ;0XD 2048
MP3 |
||
94 | |||
95 | EMPTY RET |
||
96 | |||
97 | ZAW003 CALL SD__OFF |
||
98 | LD A,1 |
||
99 | RET |
||
100 | |||
101 | SD_INIT CALL CS_HIGH |
||
102 | LD BC,SD_SEND |
||
103 | LD DE,0X20FF |
||
104 | OUT (C),E |
||
105 | DEC D |
||
106 | JR NZ,$-3 |
||
107 | LD BC,SD_RSTR |
||
108 | XOR A |
||
109 | EX AF,AF' |
||
110 | ZAW001 LD HL,CMD00 |
||
111 | CALL OUTCOM |
||
112 | CALL IN_OOUT |
||
113 | EX AF,AF' |
||
114 | DEC A |
||
115 | JR Z,ZAW003 |
||
116 | EX AF,AF' |
||
117 | DEC A |
||
118 | JR NZ,ZAW001 |
||
119 | LD HL,CMD08 |
||
120 | CALL OUTCOM |
||
121 | CALL IN_OOUT |
||
122 | IN H,(C) |
||
123 | NOP |
||
124 | IN H,(C) |
||
125 | NOP |
||
126 | IN H,(C) |
||
127 | NOP |
||
128 | IN H,(C) |
||
129 | LD HL,0 |
||
130 | BIT 2,A |
||
131 | JR NZ,ZAW006 |
||
132 | LD H,0X40 |
||
133 | ZAW006 LD A,CMD_55 |
||
134 | CALL OUT_COM |
||
135 | CALL IN_OOUT |
||
136 | LD BC,SD_SEND |
||
137 | LD A,ACMD_41 |
||
138 | OUT (C),A |
||
139 | NOP |
||
140 | OUT (C),H |
||
141 | NOP |
||
142 | OUT (C),L |
||
143 | NOP |
||
144 | OUT (C),L |
||
145 | NOP |
||
146 | OUT (C),L |
||
147 | LD A,0XFF |
||
148 | OUT (C),A |
||
149 | CALL IN_OOUT |
||
150 | AND A |
||
151 | JR NZ,ZAW006 |
||
152 | ZAW004 LD A,CMD_59 |
||
153 | CALL OUT_COM |
||
154 | CALL IN_OOUT |
||
155 | AND A |
||
156 | JR NZ,ZAW004 |
||
157 | ZAW005 LD HL,CMD16 |
||
158 | CALL OUTCOM |
||
159 | CALL IN_OOUT |
||
160 | AND A |
||
161 | JR NZ,ZAW005 |
||
162 | |||
163 | SD__OFF |
||
164 | CS_HIGH PUSH AF |
||
165 | LD A,M_SDNCS+M_SNCLR ;0X81 |
||
166 | OUT (SCTRL),A |
||
167 | POP AF |
||
168 | RET |
||
169 | |||
170 | CS__LOW PUSH AF |
||
171 | LD A,M_SDNCS ;1 |
||
172 | OUT (SCTRL),A |
||
173 | POP AF |
||
174 | RET |
||
175 | |||
176 | OUTCOM CALL CS__LOW |
||
177 | PUSH BC |
||
178 | LD BC,0X0600+SD_SEND |
||
179 | OTIR |
||
180 | POP BC |
||
181 | RET |
||
182 | |||
183 | OUT_COM PUSH BC |
||
184 | CALL CS__LOW |
||
185 | LD BC,SD_SEND |
||
186 | OUT (C),A |
||
187 | XOR A |
||
188 | OUT (C),A |
||
189 | NOP |
||
190 | OUT (C),A |
||
191 | NOP |
||
192 | OUT (C),A |
||
193 | NOP |
||
194 | OUT (C),A |
||
195 | DEC A |
||
196 | OUT (C),A |
||
197 | POP BC |
||
198 | RET |
||
199 | |||
200 | SECM200 PUSH HL |
||
201 | PUSH DE |
||
202 | PUSH BC |
||
203 | PUSH AF |
||
204 | PUSH BC |
||
205 | LD A,CMD_58 |
||
206 | LD BC,SD_RSTR |
||
207 | CALL OUT_COM |
||
208 | CALL IN_OOUT |
||
209 | INC A |
||
210 | JR NZ,SCM200 |
||
211 | EXX |
||
212 | LD A,0X80 |
||
213 | JP (HL) |
||
214 | |||
215 | SCM200 IN A,(C) |
||
216 | NOP |
||
217 | IN H,(C) |
||
218 | NOP |
||
219 | IN H,(C) |
||
220 | NOP |
||
221 | IN H,(C) |
||
222 | BIT 6,A |
||
223 | POP HL |
||
224 | JR NZ,SECN200 |
||
225 | EX DE,HL |
||
226 | ADD HL,HL |
||
227 | EX DE,HL |
||
228 | ADC HL,HL |
||
229 | LD H,L |
||
230 | LD L,D |
||
231 | LD D,E |
||
232 | LD E,0 |
||
233 | SECN200 POP AF |
||
234 | LD BC,SD_SEND |
||
235 | OUT (C),A |
||
236 | NOP |
||
237 | OUT (C),H |
||
238 | NOP |
||
239 | OUT (C),L |
||
240 | NOP |
||
241 | OUT (C),D |
||
242 | NOP |
||
243 | OUT (C),E |
||
244 | LD A,0XFF |
||
245 | OUT (C),A |
||
246 | POP BC |
||
247 | POP DE |
||
248 | POP HL |
||
249 | RET |
||
250 | |||
251 | IN_OOUT PUSH DE |
||
252 | LD DE,0X20FF |
||
253 | IN_WAIT IN A,(SD_RSTR) |
||
254 | CP E |
||
255 | JR NZ,IN_EXIT |
||
256 | DEC D |
||
257 | JR NZ,IN_WAIT |
||
258 | IN_EXIT POP DE |
||
259 | RET |
||
260 | |||
261 | CMD00 DB 0X40,0X00,0X00,0X00,0X00,0X95 ;GO_IDLE_STATE |
||
262 | CMD08 DB 0X48,0X00,0X00,0X01,0XAA,0X87 ;SEND_IF_COND |
||
263 | CMD16 DB 0X50,0X00,0X00,0X02,0X00,0XFF ;SET_BLOCKEN |
||
264 | |||
265 | ;
|
||
266 | RD_SECT PUSH BC |
||
267 | PUSH DE |
||
268 | LD BC,SD_RSTR |
||
269 | INIR |
||
270 | INIR |
||
271 | JR RDSECT3 |
||
272 | |||
273 | ;
MP3 |
||
274 | RON_MP3 PUSH BC |
||
275 | PUSH DE |
||
276 | LD BC,SD_RSTR |
||
277 | LD D,0X10 |
||
278 | RDSECT2 IN A,(SSTAT) |
||
279 | RRA |
||
280 | JR NC,$-3 |
||
281 | LD E,0X20 |
||
282 | RDSECT1 IN A,(C) |
||
283 | NOP |
||
284 | OUT (MD_SEND),A |
||
285 | DEC E |
||
286 | JR NZ,RDSECT1 |
||
287 | DEC D |
||
288 | JR NZ,RDSECT2 |
||
289 | RDSECT3 IN A,(C) ; CRC16 |
||
290 | NOP |
||
291 | IN A,(C) |
||
292 | POP DE |
||
293 | POP BC |
||
294 | RET |
||
295 | |||
296 | ;
MP3 |
||
297 | LDI_MP3 LD A,CMD_17 |
||
298 | CALL SECM200 |
||
299 | CALL IN_OOUT |
||
300 | CP 0XFE |
||
301 | JR NZ,$-5 |
||
302 | CALL RON_MP3 |
||
303 | CALL IN_OOUT |
||
304 | INC A |
||
305 | JR NZ,$-4 |
||
306 | JP CS_HIGH |
||
307 | |||
308 | ;
|
||
309 | RDSINGL LD A,CMD_17 |
||
310 | CALL SECM200 |
||
311 | CALL IN_OOUT |
||
312 | CP 0XFE |
||
313 | JR NZ,$-5 |
||
314 | CALL RD_SECT |
||
315 | CALL IN_OOUT |
||
316 | INC A |
||
317 | JR NZ,$-4 |
||
318 | JP CS_HIGH |
||
319 | |||
320 | RDMULTI EX AF,AF' |
||
321 | LD A,CMD_18 |
||
322 | CALL SECM200 |
||
323 | EX AF,AF' |
||
324 | RDMULT1 EX AF,AF' |
||
325 | CALL IN_OOUT |
||
326 | CP 0XFE |
||
327 | JR NZ,$-5 |
||
328 | CALL RD_SECT |
||
329 | EX AF,AF' |
||
330 | DEC A |
||
331 | JR NZ,RDMULT1 |
||
332 | LD A,CMD_12 |
||
333 | CALL OUT_COM |
||
334 | CALL IN_OOUT |
||
335 | INC A |
||
336 | JR NZ,$-4 |
||
337 | JP CS_HIGH |
||
338 | |||
339 | ;
SPI MP3 |
||
340 | NOPER REPT 18 |
||
341 | NOP |
||
342 | ENDM |
||
343 | RET |
||
344 | |||
345 | ; PUSH AF |
||
346 | ;NOPER1 IN A,(SSTAT) |
||
347 | ; AND M_MCRDY |
||
348 | ; JR Z,NOPER1 |
||
349 | ; POP AF |
||
350 | ; RET |
||
351 | |||
352 | AVTODET IN A,(GSCFG0) |
||
353 | AND 0XCF |
||
354 | OUT (GSCFG0),A |
||
355 | LD D,A |
||
356 | CALL NOPER |
||
357 | IN A,(GSCFG0) |
||
358 | CP D |
||
359 | LD A,0 |
||
360 | RET Z |
||
361 | NO_MP3 LD A,0XFF |
||
362 | RET |
||
363 | |||
112 | savelij | 364 | FREQNC LD A,E |
365 | LD D,C_10MHZ ;0X30 |
||
105 | savelij | 366 | AND 3 |
367 | JR Z,FREQNCS |
||
368 | LD D,C_12MHZ ;0X10 |
||
369 | DEC A |
||
370 | JR Z,FREQNCS |
||
371 | LD D,C_20MHZ ;0X20 |
||
372 | DEC A |
||
373 | JR Z,FREQNCS |
||
374 | LD D,C_24MHZ ;0 |
||
375 | FREQNCS IN A,(GSCFG0) |
||
376 | AND %11001111 |
||
377 | OR D |
||
378 | OUT (GSCFG0),A |
||
379 | RET |
||
380 | |||
381 | ;
2048
|
||
382 | ZER2MP3 LD D,0X40 |
||
383 | ZR2MP31 IN A,(SSTAT) |
||
384 | RRA |
||
385 | JR NC,$-3 |
||
386 | LD E,0X20 |
||
387 | XOR A |
||
388 | OUT (MD_SEND),A |
||
389 | DEC E |
||
390 | JR NZ,$-4 |
||
391 | DEC D |
||
392 | JR NZ,ZR2MP31 |
||
393 | RET |
||
394 | |||
395 | ; |
||
396 | HARDMP3 XOR A |
||
397 | CALL VOL_MOD ; GS |
||
398 | LD BC,MC_SEND |
||
399 | LD A,%10011100 ;0X9C |
||
400 | OUT (SCTRL),A |
||
112 | savelij | 401 | LD E,0 |
105 | savelij | 402 | CALL FREQNC ; NGS 10 ๆ |
403 | LD HL,0X0301 |
||
404 | CALL COM_MP3 |
||
405 | LD A,E |
||
406 | AND %01110000 |
||
407 | PUSH AF |
||
408 | LD A,M_MPXRS |
||
409 | OUT (SCTRL),A |
||
410 | CALL NOPER |
||
411 | LD A,M_MPXRS+M_SNCLR ;0X84 |
||
412 | OUT (SCTRL),A ; |
||
413 | IN A,(SSTAT) |
||
414 | RRA |
||
415 | JR NC,$-3 ; |
||
416 | LD HL,0X0203 |
||
417 | LD DE,0X9B58 |
||
418 | CALL COM_MP3 ; 14 ๆ |
||
419 | POP AF ; VS1001 |
||
420 | LD HL,0X0202 |
||
421 | LD DE,0X8008 |
||
422 | CALL Z,COM_MP3 ; |
||
423 | ;
,
|
||
424 | ; 6-4
|
||
112 | savelij | 425 | LD E,1 |
105 | savelij | 426 | JP FREQNC ; NGS 12 ๆ |
427 | |||
428 | ; MP3
,
,
|
||
429 | ;
|
||
430 | SOFTMP3 LD BC,MC_SEND |
||
431 | LD HL,0X030B |
||
432 | CALL COM_MP3 ; |
||
433 | PUSH DE |
||
434 | LD DE,0XFEFE ; |
||
435 | LD HL,0X020B |
||
436 | CALL COM_MP3 ; |
||
437 | LD HL,0X0301 |
||
438 | CALL COM_MP3 |
||
439 | LD A,E |
||
440 | AND %01110000 |
||
441 | PUSH AF |
||
442 | LD HL,0X0300 |
||
443 | CALL COM_MP3 ; MODE |
||
444 | LD A,4 |
||
445 | XOR E |
||
446 | LD E,A |
||
447 | LD HL,0X0200 |
||
448 | CALL COM_MP3 |
||
449 | LD A,4 |
||
450 | XOR E |
||
451 | LD E,A |
||
452 | LD HL,0X0200 |
||
453 | CALL COM_MP3 ; - |
||
454 | IN A,(SSTAT) |
||
455 | RRA |
||
456 | JR NC,$-3 ; |
||
457 | LD HL,0X0203 |
||
458 | LD DE,0X9B58 |
||
459 | CALL COM_MP3 ; MP3 |
||
460 | POP AF |
||
461 | LD HL,0X0202 |
||
462 | LD DE,0X8008 |
||
463 | CALL Z,COM_MP3 ; MP3 |
||
464 | POP DE |
||
465 | LD HL,0X020B |
||
466 | JR COM_MP3 ; |
||
467 | |||
468 | ; MOD |
||
469 | VOL_MOD OUT (VOL1),A |
||
470 | OUT (VOL2),A |
||
471 | OUT (VOL3),A |
||
472 | OUT (VOL4),A |
||
473 | OUT (VOL5),A |
||
474 | OUT (VOL6),A |
||
475 | OUT (VOL7),A |
||
476 | OUT (VOL8),A |
||
477 | RET |
||
478 | |||
479 | ;
/
MP3
|
||
480 | ;H-
3-READ 2-WRITE |
||
481 | ;L-
|
||
482 | ;D- |
||
483 | ;E- |
||
484 | ;DE |
||
485 | ;
|
||
486 | COM_MP3 IN A,(SSTAT) |
||
487 | RRA |
||
488 | JR NC,$-3 ; |
||
489 | LD A,M_MCNCS |
||
490 | OUT (SCTRL),A ; , |
||
491 | CALL NOPER |
||
492 | LD BC,MC_SEND |
||
493 | LD A,H |
||
494 | OUT (C),H |
||
495 | CALL NOPER |
||
496 | OUT (C),L |
||
497 | CALL NOPER |
||
498 | CP 3 |
||
499 | JR Z,MP3READ ; ( ) |
||
500 | OUT (C),D |
||
501 | CALL NOPER |
||
502 | OUT (C),E ; |
||
503 | MP3_END CALL NOPER |
||
504 | LD A,M_MCNCS+M_SNCLR ;0X82 |
||
505 | OUT (SCTRL),A |
||
506 | RET |
||
507 | |||
508 | ;
|
||
509 | MP3READ LD BC,MC_READ |
||
510 | LD A,0XFF |
||
511 | OUT (MC_SEND),A |
||
512 | CALL NOPER |
||
513 | IN D,(C) |
||
514 | CALL NOPER |
||
515 | OUT (MC_SEND),A |
||
516 | CALL NOPER |
||
517 | IN E,(C) |
||
518 | JR MP3_END |
||
519 | |||
520 | ;
MP3
|
||
521 | ;
512 |
||
522 | DAT2MP3 LD D,0X10 ; 16 |
||
523 | DAT2M03 IN A,(SSTAT) |
||
524 | RRA |
||
525 | JR NC,$-3 ; ? |
||
526 | LD B,0X20 ; 32 |
||
527 | DAT2M13 IN A,(ZXSTAT) |
||
528 | RLA |
||
529 | JR NC,$-3 ; |
||
530 | IN A,(ZXDATRD) ; |
||
531 | OUT (MD_SEND),A ; |
||
532 | NOP ; |
||
533 | DJNZ DAT2M13 ; |
||
534 | DEC D |
||
535 | JR NZ,DAT2M03 |
||
536 | RET ;512 !!! |