Rev 165 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 165 | Rev 181 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | 1 | ||
2 | ; LAST UPDATE 15.01.2024 savelij |
2 | ; LAST UPDATE: 17.05.2025 savelij |
3 | 3 | ||
4 | ; код для нгс |
4 | ; код для нгс |
5 | 5 | ||
6 | include macros.a80 |
6 | include macros.a80 |
7 | include ports_ngs.a80 |
7 | include ports_ngs.a80 |
Line 37... | Line 37... | ||
37 | FXB01 EQU 0xD2B2 |
37 | FXB01 EQU 0xD2B2 |
38 | 38 | ||
39 | BITMASK MOD_STOP_PLAY, 7 ; 1-MOD STOP, 0-PLAY |
39 | BITMASK MOD_STOP_PLAY, 7 ; 1-MOD STOP, 0-PLAY |
40 | 40 | ||
41 | INIT_VAR 0x4168 |
41 | INIT_VAR 0x4168 |
42 | SETVAR FLAGS, BYTE |
42 | SETVAR VAR_FLAGS, BYTE |
43 | SETVAR STATUS, BYTE ; 1 статус плеера |
43 | SETVAR VAR_STATUS, BYTE ; 1 статус плеера |
44 | SETVAR GETVTSL, BYTE ; 1 громкость MP3 чипа |
44 | SETVAR VAR_GETVTSL, BYTE ; 1 громкость MP3 чипа |
45 | SETVAR GETVTSH, BYTE ; 1 биты режимов |
45 | SETVAR VAR_GETVTSH, BYTE ; 1 биты режимов |
46 | SETVAR VSTBL, WORD ; 2 текущие настройки тембров |
46 | SETVAR VAR_VSTBL, WORD ; 2 текущие настройки тембров |
47 | SETVAR COUNT_MP3, WORD ; 2 количество MP3 |
47 | SETVAR VAR_COUNT_MP3, WORD ; 2 количество MP3 |
48 | SETVAR NUMFILE, WORD ; 2 номер текущего файла |
48 | SETVAR VAR_NUMFILE, WORD ; 2 номер текущего файла |
49 | SETVAR TYPE_RESET, BYTE ; 1 тип сброса |
49 | SETVAR VAR_TYPE_RESET, BYTE ; 1 тип сброса |
50 | SETVAR TYPE_FAT, BYTE ; 1 калибр FAT |
50 | SETVAR VAR_TYPE_FAT, BYTE ; 1 калибр FAT |
51 | SETVAR BUF_TEXT, 8 ; 8 буфер для текста |
51 | SETVAR VAR_BUF_TEXT, 8 ; 8 буфер для текста |
52 | SETVAR SIZE_PATTERN_MOD, BYTE ; 1 кол-во патернов в загруженном MOD |
52 | SETVAR VAR_SIZE_PATTERN_MOD, BYTE ; 1 кол-во патернов в загруженном MOD |
53 | SETVAR SIZE_PAGES_MOD, BYTE ; 1 кол-во страниц MOD |
53 | SETVAR VAR_SIZE_PAGES_MOD, BYTE ; 1 кол-во страниц MOD |
54 | SETVAR TIMEOUT, WORD ; 2 TIMEOUT на работу с новым файлом |
54 | SETVAR VAR_TIMEOUT, WORD ; 2 TIMEOUT на работу с новым файлом |
55 | SETVAR KUDAXOR, WORD ; 2 адрес перехода на XOR BIT 7 |
55 | SETVAR VAR_KUDAXOR, WORD ; 2 адрес перехода на XOR BIT 7 |
56 | SETVAR PAGE_PLAYER, BYTE ; 1 номер страницы расположения плеера |
56 | SETVAR VAR_PAGE_PLAYER, BYTE ; 1 номер страницы расположения плеера |
57 | SETVAR INT_MODE, BYTE ; 1 флаг разрешенности прерываний |
57 | SETVAR VAR_INT_MODE, BYTE ; 1 флаг разрешенности прерываний |
58 | SETVAR CHIP_TYPE, BYTE ; 1 тип чина на плате |
58 | SETVAR VAR_CHIP_TYPE, BYTE ; 1 тип чина на плате |
59 | SETVAR FILE_TYPE, BYTE ; 1 тип файла |
59 | SETVAR VAR_FILE_TYPE, BYTE ; 1 тип файла |
60 | SETVAR SIZE_VARS, 0 ; количество переменных |
60 | SETVAR VAR_SIZE_VARS, 0 ; количество переменных |
61 | 61 | ||
62 | ; маски изменения тембров (требует проверки, на VS1011 работает только BASS |
62 | ; маски изменения тембров (требует проверки, на VS1011 работает только BASS |
63 | BITMASK UBASS_DIR, 7 ; направление изменения UBASS |
63 | BITMASK UBASS_DIR, 7 ; направление изменения UBASS |
64 | BITMASK UBASS, 6 ; UBASS |
64 | BITMASK UBASS, 6 ; UBASS |
65 | BITMASK FBASS_DIR, 5 ; направление изменения FBASS |
65 | BITMASK FBASS_DIR, 5 ; направление изменения FBASS |
Line 84... | Line 84... | ||
84 | LD (PlMode),A |
84 | LD (PlMode),A |
85 | LD HL,0x0200 |
85 | LD HL,0x0200 |
86 | LD (MODLLEN),HL |
86 | LD (MODLLEN),HL |
87 | JP CONTINUE_MOD |
87 | JP CONTINUE_MOD |
88 | 88 | ||
- | 89 | F_EXT_VS1001 |
|
- | 90 | F_EXT_VS1011 DZ "MODMP3" |
|
- | 91 | F_EXT_VS1003 DZ "MODMP3WAVWMAMID" |
|
- | 92 | F_EXT_VS1053 DZ "MODMP3WAVWMAMIDOGG" |
|
- | 93 | F_EXT_VS1063 DZ "MODMP3" |
|
- | 94 | ||
89 | TABFUNC DW INIT_SD ; 00 перезапуск SD |
95 | TABFUNC DW INIT_SD ; 00 перезапуск SD |
90 | DW PREV_TRACK ; 01 предыдущий трек |
96 | DW PREV_TRACK ; 01 предыдущий трек |
91 | DW PLAY ; 02 плей |
97 | DW PLAY ; 02 плей |
92 | DW PAUSE ; 03 пауза |
98 | DW PAUSE ; 03 пауза |
93 | DW STOP ; 04 стоп |
99 | DW STOP ; 04 стоп |
Line 118... | Line 124... | ||
118 | DW TEST_MODE ; 1D тест режима |
124 | DW TEST_MODE ; 1D тест режима |
119 | DW GET_CHIP_TYPE ; 1E номер чипа MP3 |
125 | DW GET_CHIP_TYPE ; 1E номер чипа MP3 |
120 | END_TAB |
126 | END_TAB |
121 | 127 | ||
122 | ALLRES CALL PATCH ; патч основной прошивки |
128 | ALLRES CALL PATCH ; патч основной прошивки |
123 | LD HL,FLAGS |
129 | LD HL,VAR_FLAGS |
124 | LD D,H |
130 | LD D,H |
125 | LD E,L |
131 | LD E,L |
126 | LD BC,SIZE_PAGES_MOD - FLAGS ; количество переменных для зануления |
132 | LD BC,VAR_SIZE_PAGES_MOD - VAR_FLAGS ; количество переменных для зануления |
127 | INC DE |
133 | INC DE |
128 | LD (HL),0 |
134 | LD (HL),0 |
129 | LDIR ; зачистка области переменных |
135 | LDIR ; зачистка области переменных |
130 | LD A,Softmp3 |
136 | LD A,Softmp3 |
131 | LD (TYPE_RESET),A ; установка сброса MP3 чипа |
137 | LD (VAR_TYPE_RESET),A ; установка сброса MP3 чипа |
132 | LD A,Avtodet |
138 | LD A,Avtodet |
133 | CALL COM__SD |
139 | CALL COM__SD |
134 | AND A ; определяем GS/NeoGS |
140 | AND A ; определяем GS/NeoGS |
135 | JR Z,INI_MP3 |
141 | JR Z,INI_MP3 |
136 | LD A,NEOGS_ERROR |
142 | LD A,NEOGS_ERROR |
Line 140... | Line 146... | ||
140 | CALL COM__SD ; полная инициализация MP3 чипа |
146 | CALL COM__SD ; полная инициализация MP3 чипа |
141 | 147 | ||
142 | ;----FUNC00---- |
148 | ;----FUNC00---- |
143 | INIT_SD CALL RTYPEVS ; получение номера чипа MP3 |
149 | INIT_SD CALL RTYPEVS ; получение номера чипа MP3 |
144 | LD HL,0 |
150 | LD HL,0 |
145 | LD (NUMFILE),HL |
151 | LD (VAR_NUMFILE),HL |
146 | LD A,Sd_init |
152 | LD A,Sd_init |
147 | CALL COM__SD |
153 | CALL COM__SD |
148 | AND A ; инициализация SD карты |
154 | AND A ; инициализация SD карты |
149 | JR Z,.L1 |
155 | JR Z,.L1 |
150 | LD A,SD_NOT_FOUND |
156 | LD A,SD_NOT_FOUND |
151 | LD (TYPE_FAT),A |
157 | LD (VAR_TYPE_FAT),A |
152 | JR .L4 ; код ошибки =SD карта не найдена |
158 | JR .L4 ; код ошибки =SD карта не найдена |
153 | 159 | ||
154 | .L1 LD HL,FLAGS |
160 | .L1 LD HL,VAR_FLAGS |
155 | RES B_SD_LOST,(HL) |
161 | RES B_SD_LOST,(HL) |
156 | LD A,Init_Fatvars |
162 | LD A,Init_Fatvars |
157 | CALL COM_FAT ; инициализация FAT |
163 | CALL COM_FAT ; инициализация FAT |
158 | CP 0x80 |
164 | CP 0x80 |
159 | JR Z,.L11 |
165 | JR Z,.L11 |
160 | LD (TYPE_FAT),A |
166 | LD (VAR_TYPE_FAT),A |
161 | INC A |
167 | INC A |
162 | JR NZ,.L3 |
168 | JR NZ,.L3 |
163 | .L11 LD A,FAT_NOT_FOUND |
169 | .L11 LD A,FAT_NOT_FOUND |
164 | JR .L4 ; код ошибки =FAT не найден |
170 | JR .L4 ; код ошибки =FAT не найден |
165 | 171 | ||
Line 170... | Line 176... | ||
170 | JR Z,.L11 |
176 | JR Z,.L11 |
171 | LD A,Findfil |
177 | LD A,Findfil |
172 | CALL COM_FAT ; поиск всех файлов по маске |
178 | CALL COM_FAT ; поиск всех файлов по маске |
173 | CP 0x80 |
179 | CP 0x80 |
174 | JR Z,.L11 |
180 | JR Z,.L11 |
175 | LD (COUNT_MP3),HL |
181 | LD (VAR_COUNT_MP3),HL |
176 | OUT (CLRCBIT),A |
182 | OUT (CLRCBIT),A |
177 | CALL PAUSE ; постановка на паузу |
183 | CALL PAUSE ; постановка на паузу |
178 | LD A,H |
184 | LD A,H |
179 | OR L |
185 | OR L |
180 | LD A,FILES_NOT_FOUND |
186 | LD A,FILES_NOT_FOUND |
181 | JR Z,.L4 ; код ошибки =файлов не найдено |
187 | JR Z,.L4 ; код ошибки =файлов не найдено |
182 | LD BC,0 |
188 | LD BC,0 |
183 | CALL INIPLAY |
189 | CALL INIPLAY |
184 | LD A,PLAYER_OK ; код ошибки =все замечательно |
190 | LD A,PLAYER_OK ; код ошибки =все замечательно |
185 | .L4 LD (STATUS),A |
191 | .L4 LD (VAR_STATUS),A |
186 | RET |
192 | RET |
187 | 193 | ||
188 | ;----FUNC1C---- |
194 | ;----FUNC1C---- |
189 | ; конверсия HDAT1,HDAT0 |
195 | ; конверсия HDAT1,HDAT0 |
190 | ; после чтения BC=HDAT1, DE=HDAT0 |
196 | ; после чтения BC=HDAT1, DE=HDAT0 |
Line 233... | Line 239... | ||
233 | ; изменение тембров |
239 | ; изменение тембров |
234 | SET_TEMBR OUT (CLRCBIT),A |
240 | SET_TEMBR OUT (CLRCBIT),A |
235 | CALL WDY |
241 | CALL WDY |
236 | IN A,(ZXDATRD) ; чтение параметра |
242 | IN A,(ZXDATRD) ; чтение параметра |
237 | LD B,A ; сохраняем |
243 | LD B,A ; сохраняем |
238 | LD A,(CHIP_TYPE) |
244 | LD A,(VAR_CHIP_TYPE) |
239 | CP VS1001 ; проверяем тип чипа |
245 | CP VS1001 ; проверяем тип чипа |
240 | RET Z ; для VS1001 выходим |
246 | RET Z ; для VS1001 выходим |
241 | ; для VS1011 продолжаем |
247 | ; для VS1011 продолжаем |
242 | LD A,(GETVTSH) |
248 | LD A,(VAR_GETVTSH) |
243 | BIT B_ENABLE_TEMBR,A ; проверяем можно ли |
249 | BIT B_ENABLE_TEMBR,A ; проверяем можно ли |
244 | RET Z ; крутить тембры |
250 | RET Z ; крутить тембры |
245 | PUSH BC ; сохраняем "B" |
251 | PUSH BC ; сохраняем "B" |
246 | LD HL,VS10XX_READ << 8 + SCI_BASS;0x0302 |
252 | LD HL,VS10XX_READ << 8 + SCI_BASS;0x0302 |
247 | LD A,Com_mp3 ; читаем текущее значение |
253 | LD A,Com_mp3 ; читаем текущее значение |
Line 338... | Line 344... | ||
338 | LD A,Com_mp3 |
344 | LD A,Com_mp3 |
339 | JP COM__SD ; записали установки взад |
345 | JP COM__SD ; записали установки взад |
340 | 346 | ||
341 | ;----FUNC10---- |
347 | ;----FUNC10---- |
342 | ; отдача байта типа FAT |
348 | ; отдача байта типа FAT |
343 | FAT_TYPE LD A,(TYPE_FAT) |
349 | FAT_TYPE LD A,(VAR_TYPE_FAT) |
344 | JP GET_BYT |
350 | JP GET_BYT |
345 | 351 | ||
346 | ; определение установленного чипа |
352 | ; определение установленного чипа |
347 | RTYPEVS LD HL,VS10XX_READ << 8 + SCI_STATUS;0x0301 |
353 | RTYPEVS LD HL,VS10XX_READ << 8 + SCI_STATUS;0x0301 |
348 | LD A,Com_mp3 |
354 | LD A,Com_mp3 |
349 | CALL COM__SD |
355 | CALL COM__SD |
350 | LD A,E ; нас интересуют биты 7-4 из регистра статуса |
356 | LD A,E ; нас интересуют биты 7-4 из регистра статуса |
- | 357 | AND SCISTATUS.M_SS_VER |
|
351 | RRCA |
358 | RRCA |
352 | RRCA |
359 | RRCA |
353 | RRCA |
360 | RRCA |
354 | RRCA |
361 | RRCA |
355 | AND %00001111 ; сдвинули в младшие биты |
- | |
356 | LD (CHIP_TYPE),A ; тип установленного MP3 чипа |
362 | .L1 LD (VAR_CHIP_TYPE),A ; тип установленного MP3 чипа |
357 | RET |
363 | RET |
358 | 364 | ||
359 | ;----FUNC1D---- |
365 | ;----FUNC1D---- |
360 | ; ответ на запрос какой код работает |
366 | ; ответ на запрос какой код работает |
361 | TEST_MODE IN A,(ZXDATRD) |
367 | TEST_MODE IN A,(ZXDATRD) |
362 | OUT (CLRCBIT),A |
368 | OUT (CLRCBIT),A |
363 | LD A,(STATUS) |
369 | LD A,(VAR_STATUS) |
364 | OUT (ZXDATWR),A |
370 | OUT (ZXDATWR),A |
365 | RET |
371 | RET |
366 | 372 | ||
367 | ;----FUNC1E----- |
373 | ;----FUNC1E----- |
368 | ; получение номера чипа MP3 |
374 | ; получение номера чипа MP3 |
369 | GET_CHIP_TYPE IN A,(ZXDATRD) |
375 | GET_CHIP_TYPE IN A,(ZXDATRD) |
370 | OUT (CLRCBIT),A |
376 | OUT (CLRCBIT),A |
371 | LD A,(CHIP_TYPE) |
377 | LD A,(VAR_CHIP_TYPE) |
372 | OUT (ZXDATWR),A |
378 | OUT (ZXDATWR),A |
373 | RET |
379 | RET |
374 | 380 | ||
375 | ;----FUNC17---- |
381 | ;----FUNC17---- |
376 | ; переключение типа сброса |
382 | ; переключение типа сброса |
377 | XOR_RESET LD HL,GETVTSH |
383 | XOR_RESET LD HL,VAR_GETVTSH |
378 | LD A,M_TYPE_RESET |
384 | LD A,M_TYPE_RESET |
379 | XOR (HL) |
385 | XOR (HL) |
380 | LD (HL),A |
386 | LD (HL),A |
381 | LD A,Hardmp3 |
387 | LD A,Hardmp3 |
382 | BIT B_TYPE_RESET,(HL) |
388 | BIT B_TYPE_RESET,(HL) |
383 | JR NZ,.L1 |
389 | JR NZ,.L1 |
384 | LD A,Softmp3 |
390 | LD A,Softmp3 |
385 | .L1 LD (TYPE_RESET),A |
391 | .L1 LD (VAR_TYPE_RESET),A |
386 | RET |
392 | RET |
387 | 393 | ||
388 | ;----FUNC0F---- |
394 | ;----FUNC0F---- |
389 | ; сброс MP3 чипа |
395 | ; сброс MP3 чипа |
390 | RESET_MP3 LD A,(TYPE_RESET) |
396 | RESET_MP3 LD A,(VAR_TYPE_RESET) |
391 | JP COM__SD |
397 | JP COM__SD |
392 | 398 | ||
393 | ;----FUNC04---- |
399 | ;----FUNC04---- |
394 | ; остановка проигрывания |
400 | ; остановка проигрывания |
395 | STOP CALL PAUSE |
401 | STOP CALL PAUSE |
396 | LD BC,(NUMFILE) |
402 | LD BC,(VAR_NUMFILE) |
397 | JP INIPLAY |
403 | JP INIPLAY |
398 | 404 | ||
399 | ;----FUNC03---- |
405 | ;----FUNC03---- |
400 | ; пауза воспроизведения |
406 | ; пауза воспроизведения |
401 | PAUSE LD HL,MTSTAT |
407 | PAUSE LD HL,MTSTAT |
402 | SET B_MOD_STOP_PLAY,(HL) |
408 | SET B_MOD_STOP_PLAY,(HL) |
403 | LD HL,FLAGS |
409 | LD HL,VAR_FLAGS |
404 | RES B_PLAY_STOP,(HL) |
410 | RES B_PLAY_STOP,(HL) |
405 | RET |
411 | RET |
406 | 412 | ||
407 | ;----FUNC02---- |
413 | ;----FUNC02---- |
408 | ; запуск воспроизведения |
414 | ; запуск воспроизведения |
409 | PLAY LD HL,(COUNT_MP3) |
415 | PLAY LD HL,(VAR_COUNT_MP3) |
410 | LD A,H |
416 | LD A,H |
411 | OR L |
417 | OR L |
412 | RET Z |
418 | RET Z |
413 | LD HL,MTSTAT |
419 | LD HL,MTSTAT |
414 | RES B_MOD_STOP_PLAY,(HL) |
420 | RES B_MOD_STOP_PLAY,(HL) |
415 | LD HL,FLAGS |
421 | LD HL,VAR_FLAGS |
416 | SET B_PLAY_STOP,(HL) |
422 | SET B_PLAY_STOP,(HL) |
417 | RET |
423 | RET |
418 | 424 | ||
419 | ;----FUNC05---- |
425 | ;----FUNC05---- |
420 | ; переход на следущий песняк |
426 | ; переход на следущий песняк |
421 | NEXT_TRACK LD BC,(NUMFILE) |
427 | NEXT_TRACK LD BC,(VAR_NUMFILE) |
422 | INC BC |
428 | INC BC |
423 | LD HL,(COUNT_MP3) |
429 | LD HL,(VAR_COUNT_MP3) |
424 | LD A,H |
430 | LD A,H |
425 | OR L |
431 | OR L |
426 | RET Z |
432 | RET Z |
427 | AND A |
433 | AND A |
428 | SBC HL,BC |
434 | SBC HL,BC |
429 | JR NZ,.L1 |
435 | JR NZ,.L1 |
430 | LD BC,0 |
436 | LD BC,0 |
431 | 437 | ||
432 | ; общее для переходов по файлам |
438 | ; общее для переходов по файлам |
433 | .L1 LD (NUMFILE),BC |
439 | .L1 LD (VAR_NUMFILE),BC |
434 | JP INIPLAY |
440 | JP INIPLAY |
435 | 441 | ||
436 | ;----FUNC01---- |
442 | ;----FUNC01---- |
437 | ; переход на предыдущий песняк |
443 | ; переход на предыдущий песняк |
438 | PREV_TRACK LD BC,(NUMFILE) |
444 | PREV_TRACK LD BC,(VAR_NUMFILE) |
439 | LD A,B |
445 | LD A,B |
440 | OR C |
446 | OR C |
441 | JR NZ,.L1 |
447 | JR NZ,.L1 |
442 | LD BC,(COUNT_MP3) |
448 | LD BC,(VAR_COUNT_MP3) |
443 | LD A,B |
449 | LD A,B |
444 | OR C |
450 | OR C |
445 | RET Z |
451 | RET Z |
446 | .L1 DEC BC |
452 | .L1 DEC BC |
447 | JR NEXT_TRACK.L1 |
453 | JR NEXT_TRACK.L1 |
Line 452... | Line 458... | ||
452 | JR P_DIR |
458 | JR P_DIR |
453 | 459 | ||
454 | ;----FUNC18---- |
460 | ;----FUNC18---- |
455 | ; переход на первый файл предыдущей DIR |
461 | ; переход на первый файл предыдущей DIR |
456 | PREV_DIR LD A,Prvdir |
462 | PREV_DIR LD A,Prvdir |
457 | P_DIR LD BC,(NUMFILE) |
463 | P_DIR LD BC,(VAR_NUMFILE) |
458 | PUSH BC |
464 | PUSH BC |
459 | CALL COM_FAT |
465 | CALL COM_FAT |
460 | POP HL |
466 | POP HL |
461 | CP 0x80 |
467 | CP 0x80 |
462 | JP Z,SD_LOST |
468 | JP Z,SD_LOST |
Line 473... | Line 479... | ||
473 | ;----FUNC11---- |
479 | ;----FUNC11---- |
474 | ; отдать спеку длинное имя |
480 | ; отдать спеку длинное имя |
475 | GET_LNG CALL RDINBC |
481 | GET_LNG CALL RDINBC |
476 | BIT 7,B |
482 | BIT 7,B |
477 | JR Z,.L1 |
483 | JR Z,.L1 |
478 | LD BC,(NUMFILE) |
484 | LD BC,(VAR_NUMFILE) |
479 | .L1 LD HL,GETVTSH |
485 | .L1 LD HL,VAR_GETVTSH |
480 | RES B_NEW_FILE,(HL) |
486 | RES B_NEW_FILE,(HL) |
481 | LD HL,BUF_LNG |
487 | LD HL,BUF_LNG |
482 | ; LD A,Getlong |
488 | ; LD A,Getlong |
483 | ; CALL COM_FAT |
489 | ; CALL COM_FAT |
484 | ; CP 0x80 |
490 | ; CP 0x80 |
Line 493... | Line 499... | ||
493 | CALL COM__SD |
499 | CALL COM__SD |
494 | LD A,E |
500 | LD A,E |
495 | CP 0xFE |
501 | CP 0xFE |
496 | JR NC,MUTEOFF |
502 | JR NC,MUTEOFF |
497 | LD (MUTEOFF.L1),A |
503 | LD (MUTEOFF.L1),A |
498 | LD HL,GETVTSH |
504 | LD HL,VAR_GETVTSH |
499 | SET B_MUTE,(HL) |
505 | SET B_MUTE,(HL) |
500 | LD E,0xFE |
506 | LD E,0xFE |
501 | JR VOL_ALL |
507 | JR VOL_ALL |
502 | 508 | ||
503 | MUTEOFF LD E,0 |
509 | MUTEOFF LD E,0 |
504 | .L1 EQU $-1 |
510 | .L1 EQU $-1 |
505 | LD HL,GETVTSH |
511 | LD HL,VAR_GETVTSH |
506 | RES B_MUTE,(HL) |
512 | RES B_MUTE,(HL) |
507 | JR VOL_ALL |
513 | JR VOL_ALL |
508 | 514 | ||
509 | ;----FUNC08---- |
515 | ;----FUNC08---- |
510 | ; увеличение громкости на единицу |
516 | ; увеличение громкости на единицу |
Line 529... | Line 535... | ||
529 | RET NC |
535 | RET NC |
530 | INC E |
536 | INC E |
531 | VOL_ALL LD D,E |
537 | VOL_ALL LD D,E |
532 | LD HL,VS10XX_WRITE << 8 + SCI_VOL;0x020B |
538 | LD HL,VS10XX_WRITE << 8 + SCI_VOL;0x020B |
533 | LD A,E |
539 | LD A,E |
534 | LD (GETVTSL),A |
540 | LD (VAR_GETVTSL),A |
535 | JR XOR_ALL.L1 |
541 | JR XOR_ALL.L1 |
536 | 542 | ||
537 | ;----FUNC07---- |
543 | ;----FUNC07---- |
538 | ; переключение VIRTUAL SURROUND |
544 | ; переключение VIRTUAL SURROUND |
539 | XORSURR LD B,M_SURROUND |
545 | XORSURR LD B,M_SURROUND |
Line 543... | Line 549... | ||
543 | CALL COM__SD |
549 | CALL COM__SD |
544 | POP BC |
550 | POP BC |
545 | LD A,E |
551 | LD A,E |
546 | XOR B |
552 | XOR B |
547 | LD E,A |
553 | LD E,A |
548 | LD A,(GETVTSH) |
554 | LD A,(VAR_GETVTSH) |
549 | XOR B |
555 | XOR B |
550 | LD (GETVTSH),A |
556 | LD (VAR_GETVTSH),A |
551 | LD A,(CHIP_TYPE) |
557 | LD A,(VAR_CHIP_TYPE) |
552 | CP VS1001 |
558 | CP VS1001 |
553 | JR Z,.L2 |
559 | JR Z,.L2 |
554 | RES 7,E |
560 | RES 7,E |
555 | .L2 LD HL,VS10XX_WRITE << 8 + SCI_MODE;0x0200 |
561 | .L2 LD HL,VS10XX_WRITE << 8 + SCI_MODE;0x0200 |
556 | .L1 LD A,Com_mp3 |
562 | .L1 LD A,Com_mp3 |
557 | JP COM__SD |
563 | JP COM__SD |
558 | 564 | ||
559 | ;----FUNC06---- |
565 | ;----FUNC06---- |
560 | ; переключение тембров |
566 | ; переключение тембров |
561 | XORBASS LD A,(CHIP_TYPE) |
567 | XORBASS LD A,(VAR_CHIP_TYPE) |
562 | CP VS1001 |
568 | CP VS1001 |
563 | JR Z,.L1 |
569 | JR Z,.L1 |
564 | LD B,M_ENABLE_TEMBR |
570 | LD B,M_ENABLE_TEMBR |
565 | JR XOR_ALL |
571 | JR XOR_ALL |
566 | 572 | ||
567 | .L1 LD A,(GETVTSH) |
573 | .L1 LD A,(VAR_GETVTSH) |
568 | XOR M_ENABLE_TEMBR |
574 | XOR M_ENABLE_TEMBR |
569 | LD (GETVTSH),A |
575 | LD (VAR_GETVTSH),A |
570 | .L2 LD A,(GETVTSH) |
576 | .L2 LD A,(VAR_GETVTSH) |
571 | BIT B_ENABLE_TEMBR,A |
577 | BIT B_ENABLE_TEMBR,A |
572 | JR Z,.L4 |
578 | JR Z,.L4 |
573 | LD DE,(VSTBL) |
579 | LD DE,(VAR_VSTBL) |
574 | .L3 LD HL,VS10XX_WRITE << 8 + SCI_BASS;0x0202 |
580 | .L3 LD HL,VS10XX_WRITE << 8 + SCI_BASS;0x0202 |
575 | JR XOR_ALL.L1 |
581 | JR XOR_ALL.L1 |
576 | 582 | ||
577 | .L4 LD HL,VS10XX_READ << 8 + SCI_BASS;0x0302 |
583 | .L4 LD HL,VS10XX_READ << 8 + SCI_BASS;0x0302 |
578 | LD A,Com_mp3 |
584 | LD A,Com_mp3 |
579 | CALL COM__SD |
585 | CALL COM__SD |
580 | LD (VSTBL),DE |
586 | LD (VAR_VSTBL),DE |
581 | LD DE,0 |
587 | LD DE,0 |
582 | JR .L3 |
588 | JR .L3 |
583 | 589 | ||
584 | ;----FUNC0B---- |
590 | ;----FUNC0B---- |
585 | ; получить время проигрывания |
591 | ; получить время проигрывания |
586 | GET_TIME LD HL,VS10XX_READ << 8 + SCI_DECODE_TIME;0x0304 |
592 | GET_TIME LD HL,VS10XX_READ << 8 + SCI_DECODE_TIME;0x0304 |
587 | LD A,Com_mp3 |
593 | LD A,Com_mp3 |
588 | CALL COM__SD |
594 | CALL COM__SD |
589 | EX DE,HL |
595 | EX DE,HL |
590 | LD DE,BUF_TEXT |
596 | LD DE,VAR_BUF_TEXT |
591 | PUSH DE |
597 | PUSH DE |
592 | LD BC,36000 |
598 | LD BC,36000 |
593 | CALL SUB_BC |
599 | CALL SUB_BC |
594 | LD BC,3600 |
600 | LD BC,3600 |
595 | CALL SUB_BC |
601 | CALL SUB_BC |
Line 607... | Line 613... | ||
607 | JP OUTDATA |
613 | JP OUTDATA |
608 | 614 | ||
609 | ;----FUNC1B---- |
615 | ;----FUNC1B---- |
610 | ; сброс на спек состояние тембров в текстовом виде |
616 | ; сброс на спек состояние тембров в текстовом виде |
611 | TXT_TEMBR_STATUS |
617 | TXT_TEMBR_STATUS |
612 | LD A,(CHIP_TYPE) |
618 | LD A,(VAR_CHIP_TYPE) |
613 | CP VS1001 |
619 | CP VS1001 |
614 | RET Z |
620 | RET Z |
615 | LD HL,VS10XX_READ << 8 + SCI_BASS;0x0302 |
621 | LD HL,VS10XX_READ << 8 + SCI_BASS;0x0302 |
616 | LD A,Com_mp3 |
622 | LD A,Com_mp3 |
617 | CALL COM__SD |
623 | CALL COM__SD |
618 | LD A,D |
624 | LD A,D |
619 | EXX |
625 | EXX |
620 | LD DE,BUF_TEXT |
626 | LD DE,VAR_BUF_TEXT |
621 | AND 0x0F |
627 | AND 0x0F |
622 | LD L,A |
628 | LD L,A |
623 | LD H,0 |
629 | LD H,0 |
624 | LD BC,10 |
630 | LD BC,10 |
625 | CALL SUB_BC |
631 | CALL SUB_BC |
Line 672... | Line 678... | ||
672 | LD A,'0' |
678 | LD A,'0' |
673 | ADD A,L |
679 | ADD A,L |
674 | LD (DE),A ; положили уровень BASS |
680 | LD (DE),A ; положили уровень BASS |
675 | EXX |
681 | EXX |
676 | LD E,8 |
682 | LD E,8 |
677 | LD HL,BUF_TEXT |
683 | LD HL,VAR_BUF_TEXT |
678 | LD A,'0' |
684 | LD A,'0' |
679 | CP (HL) |
685 | CP (HL) |
680 | JR NZ,.L1 |
686 | JR NZ,.L1 |
681 | LD (HL),0x20 |
687 | LD (HL),0x20 |
682 | .L1 JP OUTDATA |
688 | .L1 JP OUTDATA |
Line 692... | Line 698... | ||
692 | INC DE |
698 | INC DE |
693 | RET |
699 | RET |
694 | 700 | ||
695 | ;----FUNC15---- |
701 | ;----FUNC15---- |
696 | ; сброс на спек количество найденных файлов |
702 | ; сброс на спек количество найденных файлов |
697 | TXT_COUNT_FILES LD HL,(COUNT_MP3) |
703 | TXT_COUNT_FILES LD HL,(VAR_COUNT_MP3) |
698 | 704 | ||
699 | ; перегоняем HL в TXT и сбрасываем |
705 | ; перегоняем HL в TXT и сбрасываем |
700 | GETDCHR LD DE,BUF_TEXT |
706 | GETDCHR LD DE,VAR_BUF_TEXT |
701 | PUSH DE |
707 | PUSH DE |
702 | LD BC,10000 |
708 | LD BC,10000 |
703 | CALL SUB_BC |
709 | CALL SUB_BC |
704 | LD BC,1000 |
710 | LD BC,1000 |
705 | CALL SUB_BC |
711 | CALL SUB_BC |
Line 725... | Line 731... | ||
725 | 731 | ||
726 | ;----FUNC16---- |
732 | ;----FUNC16---- |
727 | ; сброс на спек номера играемого файла + 1 |
733 | ; сброс на спек номера играемого файла + 1 |
728 | ; с перегонкой в текстовый вид |
734 | ; с перегонкой в текстовый вид |
729 | TXT_CURRENT_FILE |
735 | TXT_CURRENT_FILE |
730 | LD HL,(NUMFILE) |
736 | LD HL,(VAR_NUMFILE) |
731 | INC HL |
737 | INC HL |
732 | JR GETDCHR |
738 | JR GETDCHR |
733 | 739 | ||
734 | ;----FUNC12---- |
740 | ;----FUNC12---- |
735 | ; отдать спеку 33 байта описателя файла |
741 | ; отдать спеку 33 байта описателя файла |
736 | GET_FILE_DESCR CALL RDINBC |
742 | GET_FILE_DESCR CALL RDINBC |
737 | BIT 7,B |
743 | BIT 7,B |
738 | JR Z,.L1 |
744 | JR Z,.L1 |
739 | LD BC,(NUMFILE) |
745 | LD BC,(VAR_NUMFILE) |
740 | .L1 LD A,Getfzap |
746 | .L1 LD A,Getfzap |
741 | CALL COM_FAT |
747 | CALL COM_FAT |
742 | CP 0x80 |
748 | CP 0x80 |
743 | JP Z,SD_LOST |
749 | JP Z,SD_LOST |
744 | LD BC,0x20 |
750 | LD BC,0x20 |
Line 758... | Line 764... | ||
758 | 764 | ||
759 | ;----FUNC0E---- |
765 | ;----FUNC0E---- |
760 | ; установка номера файла для играния |
766 | ; установка номера файла для играния |
761 | ; если не превышает количество найденного - 1 |
767 | ; если не превышает количество найденного - 1 |
762 | SET_NUM CALL RDINBC |
768 | SET_NUM CALL RDINBC |
763 | LD HL,(COUNT_MP3) |
769 | LD HL,(VAR_COUNT_MP3) |
764 | AND A |
770 | AND A |
765 | SBC HL,BC |
771 | SBC HL,BC |
766 | RET C |
772 | RET C |
767 | LD (NUMFILE),BC |
773 | LD (VAR_NUMFILE),BC |
768 | RET |
774 | RET |
769 | 775 | ||
770 | ; читаем в BC |
776 | ; читаем в BC |
771 | RDINBC CALL WDY |
777 | RDINBC CALL WDY |
772 | IN A,(ZXDATRD) |
778 | IN A,(ZXDATRD) |
Line 776... | Line 782... | ||
776 | LD C,A |
782 | LD C,A |
777 | RET |
783 | RET |
778 | 784 | ||
779 | ;----FUNC13---- |
785 | ;----FUNC13---- |
780 | ; отдать спеку количество найденного |
786 | ; отдать спеку количество найденного |
781 | GET_COUNT_FILES LD HL,(COUNT_MP3) |
787 | GET_COUNT_FILES LD HL,(VAR_COUNT_MP3) |
782 | JR GET_RZN |
788 | JR GET_RZN |
783 | 789 | ||
784 | ;----FUNC0D---- |
790 | ;----FUNC0D---- |
785 | ; отдать спеку номер текущего файла |
791 | ; отдать спеку номер текущего файла |
786 | GET_CURRENT LD HL,(NUMFILE) |
792 | GET_CURRENT LD HL,(VAR_NUMFILE) |
787 | JR GET_RZN |
793 | JR GET_RZN |
788 | 794 | ||
789 | ;----FUNC0C---- |
795 | ;----FUNC0C---- |
790 | ; в HL содержимое битов установок |
796 | ; в HL содержимое битов установок |
791 | GET_VTS LD HL,(GETVTSL) |
797 | GET_VTS LD HL,(VAR_GETVTSL) |
792 | 798 | ||
793 | ; сбрасываем содержимое HL на спек |
799 | ; сбрасываем содержимое HL на спек |
794 | GET_RZN LD A,H |
800 | GET_RZN LD A,H |
795 | OUT (ZXDATWR),A |
801 | OUT (ZXDATWR),A |
796 | CALL WDN |
802 | CALL WDN |
Line 813... | Line 819... | ||
813 | RLA |
819 | RLA |
814 | JR NC,WDY |
820 | JR NC,WDY |
815 | RET |
821 | RET |
816 | 822 | ||
817 | ; играть на MP3-декодер 1 сектор |
823 | ; играть на MP3-декодер 1 сектор |
818 | PLAYMP3 LD A,(FLAGS) |
824 | PLAYMP3 LD A,(VAR_FLAGS) |
819 | BIT B_PLAY_STOP,A |
825 | BIT B_PLAY_STOP,A |
820 | RET Z |
826 | RET Z |
821 | LD A,(FILE_TYPE) |
827 | LD A,(VAR_FILE_TYPE) |
822 | CP FILE_MP3 |
828 | CP FILE_MP3 |
823 | RET NZ |
829 | RET NZ |
824 | ; ⮫쪮 MP3 |
830 | ; ⮫쪮 MP3 |
825 | LD A,Nextsec |
831 | LD A,Nextsec |
826 | CALL COM_FAT |
832 | CALL COM_FAT |
Line 838... | Line 844... | ||
838 | 844 | ||
839 | ; открытие файла и инит декодера |
845 | ; открытие файла и инит декодера |
840 | INIPLAY PUSH BC |
846 | INIPLAY PUSH BC |
841 | CALL MOD_OFF |
847 | CALL MOD_OFF |
842 | CALL RESET_MP3 ; сброс чипа в зависимости от установок |
848 | CALL RESET_MP3 ; сброс чипа в зависимости от установок |
843 | LD HL,(GETVTSL) |
849 | LD HL,(VAR_GETVTSL) |
844 | BIT B_TYPE_RESET,H ; если сброс =HARD, то обнуляем все |
850 | BIT B_TYPE_RESET,H ; если сброс =HARD, то обнуляем все |
845 | ; кроме типа сброса этого чипа |
851 | ; кроме типа сброса этого чипа |
846 | JR Z,.L1 |
852 | JR Z,.L1 |
847 | LD L,0 |
853 | LD L,0 |
848 | LD A,H |
854 | LD A,H |
Line 855... | Line 861... | ||
855 | LD A,Openfil |
861 | LD A,Openfil |
856 | CALL COM_FAT ; открываем новый файл |
862 | CALL COM_FAT ; открываем новый файл |
857 | CP 0x80 |
863 | CP 0x80 |
858 | JP Z,SD_LOST |
864 | JP Z,SD_LOST |
859 | POP HL |
865 | POP HL |
860 | LD (GETVTSL),HL |
866 | LD (VAR_GETVTSL),HL |
861 | LD (FILE_TYPE),A |
867 | LD (VAR_FILE_TYPE),A |
862 | CP FILE_MP3 |
868 | CP FILE_MP3 |
863 | LD E,FREQ20 ; 20 Мгц для играния MOD |
869 | LD E,FREQ20 ; 20 Мгц для играния MOD |
864 | JR NZ,.L2 |
870 | JR NZ,.L2 |
865 | LD E,FREQ12 ; 12 Мгц для играния MP3 |
871 | LD E,FREQ12 ; 12 Мгц для играния MP3 |
866 | .L2 LD A,Freqnc |
872 | .L2 LD A,Freqnc |
867 | CALL COM__SD |
873 | CALL COM__SD |
868 | LD HL,FLAGS |
874 | LD HL,VAR_FLAGS |
869 | RES B_FILE_LOAD,(HL) |
875 | RES B_FILE_LOAD,(HL) |
870 | LD HL,0x0400 |
876 | LD HL,0x0400 |
871 | LD (TIMEOUT),HL |
877 | LD (VAR_TIMEOUT),HL |
872 | POP BC |
878 | POP BC |
873 | LD HL,BUF_LNG |
879 | LD HL,BUF_LNG |
874 | LD A,Getlong |
880 | LD A,Getlong |
875 | CALL COM_FAT ; чтение в буфер длинного имени файла |
881 | CALL COM_FAT ; чтение в буфер длинного имени файла |
876 | MOD_OFF XOR A |
882 | MOD_OFF XOR A |
Line 884... | Line 890... | ||
884 | OUT (VOL8),A |
890 | OUT (VOL8),A |
885 | OUT (VOL8),A |
891 | OUT (VOL8),A |
886 | RET |
892 | RET |
887 | 893 | ||
888 | SD_LOST LD SP,ISTACK |
894 | SD_LOST LD SP,ISTACK |
889 | LD HL,FLAGS |
895 | LD HL,VAR_FLAGS |
890 | SET B_SD_LOST,(HL) |
896 | SET B_SD_LOST,(HL) |
891 | CALL PAUSE |
897 | CALL PAUSE |
892 | JP CONTINUE_MOD |
898 | JP CONTINUE_MOD |
893 | 899 | ||
894 | CMP_INT PUSH AF |
900 | CMP_INT PUSH AF |
Line 896... | Line 902... | ||
896 | JP PE,CMP_INT1 |
902 | JP PE,CMP_INT1 |
897 | LD A,R |
903 | LD A,R |
898 | CMP_INT1 LD A,0 |
904 | CMP_INT1 LD A,0 |
899 | JP PO,CMP_INT2 |
905 | JP PO,CMP_INT2 |
900 | LD A,1 |
906 | LD A,1 |
901 | CMP_INT2 LD (INT_MODE),A |
907 | CMP_INT2 LD (VAR_INT_MODE),A |
902 | POP AF |
908 | POP AF |
903 | RET |
909 | RET |
904 | 910 | ||
905 | COM__SD include "sd_on_ngs.a80" ; драйвер SD карты |
911 | COM__SD include "sd_on_ngs.a80" ; драйвер SD карты |
906 | COM_FAT include "fat_on_ngs.a80" ; драйвер FAT |
912 | COM_FAT include "fat_on_ngs.a80" ; драйвер FAT |
Line 933... | Line 939... | ||
933 | LD H,0 |
939 | LD H,0 |
934 | LD BC,0x7B00 |
940 | LD BC,0x7B00 |
935 | ADD HL,HL |
941 | ADD HL,HL |
936 | ADD HL,HL |
942 | ADD HL,HL |
937 | ADD HL,BC |
943 | ADD HL,BC |
938 | LD (KUDAXOR),HL |
944 | LD (VAR_KUDAXOR),HL |
939 | EXX |
945 | EXX |
940 | LD A,(SIZE_PAGES_MOD) |
946 | LD A,(VAR_SIZE_PAGES_MOD) |
941 | LD B,A |
947 | LD B,A |
942 | LD C,0x80 |
948 | LD C,0x80 |
943 | RET |
949 | RET |
944 | 950 | ||
945 | SPEDI2 INC H |
951 | SPEDI2 INC H |
Line 948... | Line 954... | ||
948 | LD A,(DE) |
954 | LD A,(DE) |
949 | LD H,0x80 |
955 | LD H,0x80 |
950 | OUT (MPAG),A |
956 | OUT (MPAG),A |
951 | DEC B |
957 | DEC B |
952 | JP NZ,0x7B00 |
958 | JP NZ,0x7B00 |
953 | LD A,(PAGE_PLAYER) |
959 | LD A,(VAR_PAGE_PLAYER) |
954 | OUT (MPAG),A |
960 | OUT (MPAG),A |
955 | JP END7XOR |
961 | JP END7XOR |
956 | ESPEDI2 |
962 | ESPEDI2 |
957 | 963 | ||
958 | SPEDI3 LD A,(PAGE_PLAYER) |
964 | SPEDI3 LD A,(VAR_PAGE_PLAYER) |
959 | OUT (MPAG),A |
965 | OUT (MPAG),A |
960 | CALL SET7XOR |
966 | CALL SET7XOR |
961 | LD A,(DE) |
967 | LD A,(DE) |
962 | PUSH HL |
968 | PUSH HL |
963 | OUT (MPAG),A |
969 | OUT (MPAG),A |
964 | LD HL,(KUDAXOR) |
970 | LD HL,(VAR_KUDAXOR) |
965 | EX (SP),HL |
971 | EX (SP),HL |
966 | RET |
972 | RET |
967 | 973 | ||
968 | END7XOR EXX |
974 | END7XOR EXX |
969 | LD HL,0 |
975 | LD HL,0 |
Line 980... | Line 986... | ||
980 | EXX |
986 | EXX |
981 | JP ESPEED |
987 | JP ESPEED |
982 | 988 | ||
983 | PATCH LD A,(NUMPG) |
989 | PATCH LD A,(NUMPG) |
984 | OR %00111111 |
990 | OR %00111111 |
985 | LD (PAGE_PLAYER),A ; страница расположения плеера |
991 | LD (VAR_PAGE_PLAYER),A ; страница расположения плеера |
986 | IN A,(GSCFG0) |
992 | IN A,(GSCFG0) |
987 | RES B_RAMRO,A |
993 | RES B_RAMRO,A |
988 | SET B_EXPAG,A |
994 | SET B_EXPAG,A |
989 | OUT (GSCFG0),A |
995 | OUT (GSCFG0),A |
990 | LD A,0x80 |
996 | LD A,0x80 |
Line 1006... | Line 1012... | ||
1006 | INC HL |
1012 | INC HL |
1007 | LD (HL),HIGH (NXTMODR) |
1013 | LD (HL),HIGH (NXTMODR) |
1008 | INC HL |
1014 | INC HL |
1009 | EX DE,HL |
1015 | EX DE,HL |
1010 | LD HL,0x11E3 |
1016 | LD HL,0x11E3 |
1011 | AND A |
1017 | XOR A |
1012 | SBC HL,DE |
1018 | SBC HL,DE |
1013 | LD B,H |
1019 | LD B,H |
1014 | LD C,L |
1020 | LD C,L |
1015 | LD H,D |
1021 | LD H,D |
1016 | LD L,E |
1022 | LD L,E |
1017 | LD (HL),B |
1023 | LD (HL),A |
1018 | INC DE |
1024 | INC DE |
1019 | LDIR ; зачистка хвостов в ПЗУ |
1025 | LDIR ; зачистка хвостов в ПЗУ |
1020 | LD HL,TEKADR1 |
1026 | LD HL,TEKADR1 |
1021 | LD DE,EMPTY2 |
1027 | LD DE,EMPTY2 |
1022 | LD BC,P_END - LD_MOD |
1028 | LD BC,P_END - LD_MOD |
Line 1038... | Line 1044... | ||
1038 | LD HL,P_00 |
1044 | LD HL,P_00 |
1039 | LD (0x0300 + (0x1F * 2)),HL ; патч команды 1F |
1045 | LD (0x0300 + (0x1F * 2)),HL ; патч команды 1F |
1040 | LD HL,COMMFF |
1046 | LD HL,COMMFF |
1041 | LD (0x0300 + (0x2F * 2)),HL ; патч команды FF |
1047 | LD (0x0300 + (0x2F * 2)),HL ; патч команды FF |
1042 | IN A,(GSCFG0) |
1048 | IN A,(GSCFG0) |
1043 | SET B_RAMRO,A |
1049 | SET B_RAMRO,A ; запрет записи в прошивку |
1044 | RES B_EXPAG,A |
1050 | RES B_EXPAG,A |
1045 | OUT (GSCFG0),A |
1051 | OUT (GSCFG0),A |
1046 | LD A,(PAGE_PLAYER) |
1052 | LD A,(VAR_PAGE_PLAYER) |
1047 | OUT (MPAG),A |
1053 | OUT (MPAG),A |
1048 | 1054 | ||
1049 | ; создание списка малых страниц для загрузчика файла в память |
1055 | ; создание списка малых страниц для загрузчика файла в память |
1050 | LISTPAG LD HL,0x4000 |
1056 | LISTPAG LD HL,0x4000 |
1051 | LD DE,BUF_PAG |
1057 | LD DE,BUF_PAG |
Line 1070... | Line 1076... | ||
1070 | 1076 | ||
1071 | ; грузилка файла в память NEOGS |
1077 | ; грузилка файла в память NEOGS |
1072 | LD_MOD IN A,(GSCFG0) |
1078 | LD_MOD IN A,(GSCFG0) |
1073 | AND %11001111 |
1079 | AND %11001111 |
1074 | OUT (GSCFG0),A |
1080 | OUT (GSCFG0),A |
1075 | LD HL,FLAGS |
1081 | LD HL,VAR_FLAGS |
1076 | SET B_FILE_LOAD,(HL) |
1082 | SET B_FILE_LOAD,(HL) |
1077 | CALL MOD_OFF |
1083 | CALL MOD_OFF |
1078 | LD A,Loadfil |
1084 | LD A,Loadfil |
1079 | CALL COM_FAT |
1085 | CALL COM_FAT |
1080 | CP 0x80 |
1086 | CP 0x80 |
1081 | JP Z,SD_LOST |
1087 | JP Z,SD_LOST |
1082 | LD (SIZE_PAGES_MOD),A |
1088 | LD (VAR_SIZE_PAGES_MOD),A |
1083 | LD A,(CPAGE) |
1089 | LD A,(CPAGE) |
1084 | OUT (MPAG),A |
1090 | OUT (MPAG),A |
1085 | LD A,1 |
1091 | LD A,1 |
1086 | LD (CNTMOD),A |
1092 | LD (CNTMOD),A |
1087 | LD (CURMOD),A |
1093 | LD (CURMOD),A |
1088 | CALL LDMOD |
1094 | CALL LDMOD |
1089 | LD A,(MTSNGSZ) |
1095 | LD A,(MTSNGSZ) |
1090 | LD (SIZE_PATTERN_MOD),A |
1096 | LD (VAR_SIZE_PATTERN_MOD),A |
1091 | LD BC,0x0100 |
1097 | LD BC,0x0100 |
1092 | CALL PLAYMOD |
1098 | CALL PLAYMOD |
1093 | IN A,(GSCFG0) |
1099 | IN A,(GSCFG0) |
1094 | OR %00010000 |
1100 | OR %00010000 |
1095 | OUT (GSCFG0),A |
1101 | OUT (GSCFG0),A |
Line 1105... | Line 1111... | ||
1105 | CP (HL) |
1111 | CP (HL) |
1106 | JP C,NXTMOD1 |
1112 | JP C,NXTMOD1 |
1107 | LD (MTSNGPS),A |
1113 | LD (MTSNGPS),A |
1108 | RET |
1114 | RET |
1109 | 1115 | ||
1110 | NXTMODR LD A,(PAGE_PLAYER) |
1116 | NXTMODR LD A,(VAR_PAGE_PLAYER) |
1111 | OUT (MPAG),A |
1117 | OUT (MPAG),A |
1112 | CALL NEXT_TRACK |
1118 | CALL NEXT_TRACK |
1113 | LD A,(FILE_TYPE) |
1119 | LD A,(VAR_FILE_TYPE) |
1114 | CP FILE_MP3 |
1120 | CP FILE_MP3 |
1115 | JP NZ,LD_MOD |
1121 | JP NZ,LD_MOD |
1116 | POP HL |
1122 | POP HL |
1117 | JP OPROS |
1123 | JP OPROS |
1118 | 1124 | ||
1119 | COMMFF IN A,(ZXDATRD) |
1125 | COMMFF IN A,(ZXDATRD) |
1120 | OUT (CLRCBIT),A |
1126 | OUT (CLRCBIT),A |
1121 | ADD A,LOW (FLAGS) |
1127 | ADD A,LOW (VAR_FLAGS) |
1122 | LD IYL,A |
1128 | LD IYL,A |
1123 | LD A,HIGH (FLAGS) |
1129 | LD A,HIGH (VAR_FLAGS) |
1124 | ADC A,0 |
1130 | ADC A,0 |
1125 | LD IYH,A |
1131 | LD IYH,A |
1126 | LD A,(IY+0) |
1132 | LD A,(IY+0) |
1127 | OUT (ZXDATWR),A |
1133 | OUT (ZXDATWR),A |
1128 | JP COMINT_ |
1134 | JP COMINT_ |
Line 1132... | Line 1138... | ||
1132 | PHASE EMPTY1 |
1138 | PHASE EMPTY1 |
1133 | 1139 | ||
1134 | ; основной цикл общения со спеком |
1140 | ; основной цикл общения со спеком |
1135 | P_00 JP OPROS.L3 |
1141 | P_00 JP OPROS.L3 |
1136 | 1142 | ||
1137 | NXTMOD1 LD A,(PAGE_PLAYER) |
1143 | NXTMOD1 LD A,(VAR_PAGE_PLAYER) |
1138 | OUT (MPAG),A |
1144 | OUT (MPAG),A |
1139 | CALL NEXT_TRACK |
1145 | CALL NEXT_TRACK |
1140 | ; продолжить играть MOD |
1146 | ; продолжить играть MOD |
1141 | CONTINUE_MOD LD A,(FILE_TYPE) |
1147 | CONTINUE_MOD LD A,(VAR_FILE_TYPE) |
1142 | CP FILE_MP3 |
1148 | CP FILE_MP3 |
1143 | JR Z,OPROS |
1149 | JR Z,OPROS |
1144 | LD A,(FLAGS) |
1150 | LD A,(VAR_FLAGS) |
1145 | BIT B_PLAY_STOP,A |
1151 | BIT B_PLAY_STOP,A |
1146 | JR Z,CONROM |
1152 | JR Z,CONROM |
1147 | BIT B_FILE_LOAD,A |
1153 | BIT B_FILE_LOAD,A |
1148 | CALL Z,LD_MOD |
1154 | CALL Z,LD_MOD |
1149 | CONROM LD A,(CPAGE) |
1155 | CONROM LD A,(CPAGE) |
Line 1162... | Line 1168... | ||
1162 | .L3 IN A,(ZXDATRD) |
1168 | .L3 IN A,(ZXDATRD) |
1163 | OUT (CLRCBIT),A |
1169 | OUT (CLRCBIT),A |
1164 | AND A |
1170 | AND A |
1165 | JR Z,.L2 |
1171 | JR Z,.L2 |
1166 | LD H,A |
1172 | LD H,A |
1167 | LD A,(STATUS) |
1173 | LD A,(VAR_STATUS) |
1168 | CP 0x78 |
1174 | CP 0x78 |
1169 | JR NC,OPROS |
1175 | JR NC,OPROS |
1170 | LD A,H |
1176 | LD A,H |
1171 | .L2 CP LOW (END_TAB-TABFUNC) / 2 + 1 |
1177 | .L2 CP LOW (END_TAB-TABFUNC) / 2 + 1 |
1172 | JR NC,OPROS |
1178 | JR NC,OPROS |
Line 1176... | Line 1182... | ||
1176 | ADD A,LOW (TABFUNC) |
1182 | ADD A,LOW (TABFUNC) |
1177 | LD L,A |
1183 | LD L,A |
1178 | LD A,HIGH (TABFUNC) |
1184 | LD A,HIGH (TABFUNC) |
1179 | ADC A,0 |
1185 | ADC A,0 |
1180 | LD H,A |
1186 | LD H,A |
1181 | LD A,(PAGE_PLAYER) |
1187 | LD A,(VAR_PAGE_PLAYER) |
1182 | OUT (MPAG),A |
1188 | OUT (MPAG),A |
1183 | LD A,(HL) |
1189 | LD A,(HL) |
1184 | INC HL |
1190 | INC HL |
1185 | LD H,(HL) |
1191 | LD H,(HL) |
1186 | LD L,A |
1192 | LD L,A |