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 |