Rev 164 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 164 | Rev 165 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | 1 | ||
2 | ; LAST UPDATE 24.04.2023 savelij |
2 | ; LAST UPDATE 15.01.2024 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 |
8 | include sdcomand.a80 |
8 | include sdcomand.a80 |
9 | include bootsecfat.a80 |
9 | include bootsecfat.a80 |
10 | include fat_dir.a80 |
10 | include fat_dir.a80 |
- | 11 | include define_vs10xx.a80 |
|
- | 12 | include local_define.a80 |
|
11 | 13 | ||
12 | ; патч прошивки для плеерения MOD |
14 | ; патч прошивки для плеерения MOD |
13 | ; плеерение, проверка и прочее |
15 | ; плеерение, проверка и прочее |
14 | COMINT EQU 0x026B |
16 | COMINT EQU 0x026B |
15 | COMINT_ EQU 0x026E |
17 | COMINT_ EQU 0x026E |
16 | COMINT0 EQU 0x0273 |
18 | COMINT0 EQU 0x0273 |
17 | COMINT1 EQU 0x0295 |
19 | COMINT1 EQU 0x0295 |
18 | WTDTL EQU 0x02BC |
20 | WTDTL EQU 0x02BC |
19 | EMPTY1 EQU 0x0942 |
21 | EMPTY1 EQU 0x0942 |
20 | ADDA80 EQU 0x0EF8 |
22 | ADDA80 EQU 0x0EF8 |
21 | ;IP_MOD EQU 0x11E4 |
- | |
22 | EMPTY2 EQU 0x3D5F |
23 | EMPTY2 EQU 0x3D5F |
23 | NUMPG EQU 0x4080 ;ВСЕГО СТРАНИЦ |
24 | NUMPG EQU 0x4080 ; всего страниц |
24 | CPAGE EQU 0x4081 ;PROCESS EQU 0x4084 |
25 | CPAGE EQU 0x4081 |
25 | CNTMOD EQU 0x4090 |
26 | CNTMOD EQU 0x4090 |
26 | CURMOD EQU 0x4096 |
27 | CURMOD EQU 0x4096 |
27 | CONVERT EQU 0x40B7 |
28 | CONVERT EQU 0x40B7 |
28 | MTSTAT EQU 0x4151 |
29 | MTSTAT EQU 0x4151 |
29 | MTSNGPS EQU 0x415B |
30 | MTSNGPS EQU 0x415B |
Line 33... | Line 34... | ||
33 | ISTACK EQU 0x4400 |
34 | ISTACK EQU 0x4400 |
34 | LDMOD EQU 0xC3F8 |
35 | LDMOD EQU 0xC3F8 |
35 | PLAYMOD EQU 0xC426 |
36 | PLAYMOD EQU 0xC426 |
36 | FXB01 EQU 0xD2B2 |
37 | FXB01 EQU 0xD2B2 |
37 | 38 | ||
- | 39 | BITMASK MOD_STOP_PLAY, 7 ; 1-MOD STOP, 0-PLAY |
|
- | 40 | ||
38 | INIT_VAR 0x4168 |
41 | INIT_VAR 0x4168 |
39 | SETVAR FLAGS, BYTE |
42 | SETVAR FLAGS, BYTE |
40 | ; флаги управления |
- | |
41 | ; 7- |
- | |
42 | ; 6- |
- | |
43 | ; 5- |
- | |
44 | ; 4- |
- | |
45 | ; 3- |
- | |
46 | ; 2-1-файл загружен, 0-нет |
- | |
47 | ; 1- |
- | |
48 | ; 0-1-разрешение PLAY,0-стоп/пауза |
- | |
49 | SETVAR REJIMGS, BYTE ; 1 код ответа |
43 | SETVAR STATUS, BYTE ; 1 статус плеера |
50 | SETVAR GETVTSL, BYTE ; 1 громкость MP3 чипа |
44 | SETVAR GETVTSL, BYTE ; 1 громкость MP3 чипа |
51 | SETVAR GETVTSH, BYTE ; 1 биты режимов |
45 | SETVAR GETVTSH, BYTE ; 1 биты режимов |
52 | SETVAR VSTBL, WORD ; 2 текущие настройки тембров |
46 | SETVAR VSTBL, WORD ; 2 текущие настройки тембров |
53 | SETVAR KOLWMP3, WORD ; 2 количество MP3 |
47 | SETVAR COUNT_MP3, WORD ; 2 количество MP3 |
54 | SETVAR NUMFILE, WORD ; 2 номер текущего файла |
48 | SETVAR NUMFILE, WORD ; 2 номер текущего файла |
55 | SETVAR TYPRES, BYTE ; 1 тип сброса |
49 | SETVAR TYPE_RESET, BYTE ; 1 тип сброса |
56 | SETVAR CALBFAT, BYTE ; 1 калибр FAT |
50 | SETVAR TYPE_FAT, BYTE ; 1 калибр FAT |
57 | SETVAR BUFTIME, 8 ; 8 буфер для текста |
51 | SETVAR BUF_TEXT, 8 ; 8 буфер для текста |
58 | SETVAR SIZ_PAT, BYTE ; 1 кол-во патернов в загруженном MOD |
52 | SETVAR SIZE_PATTERN_MOD, BYTE ; 1 кол-во патернов в загруженном MOD |
59 | SETVAR SIZ_MOD, BYTE ; 1 кол-во страниц MOD |
53 | SETVAR SIZE_PAGES_MOD, BYTE ; 1 кол-во страниц MOD |
60 | SETVAR TIMEOUT, WORD ; 2 TIMEOUT на работу с новым файлом |
54 | SETVAR TIMEOUT, WORD ; 2 TIMEOUT на работу с новым файлом |
61 | SETVAR KUDAXOR, WORD ; 2 адрес перехода на XOR BIT 7 |
55 | SETVAR KUDAXOR, WORD ; 2 адрес перехода на XOR BIT 7 |
62 | SETVAR PG_PLAYER, BYTE ; 1 номер страницы расположения плеера |
56 | SETVAR PAGE_PLAYER, BYTE ; 1 номер страницы расположения плеера |
63 | SETVAR INT_MODE, BYTE ; 1 флаг разрешенности прерываний |
57 | SETVAR INT_MODE, BYTE ; 1 флаг разрешенности прерываний |
- | 58 | SETVAR CHIP_TYPE, BYTE ; 1 тип чина на плате |
|
- | 59 | SETVAR FILE_TYPE, BYTE ; 1 тип файла |
|
- | 60 | SETVAR SIZE_VARS, 0 ; количество переменных |
|
64 | 61 | ||
- | 62 | ; маски изменения тембров (требует проверки, на VS1011 работает только BASS |
|
- | 63 | BITMASK UBASS_DIR, 7 ; направление изменения UBASS |
|
- | 64 | BITMASK UBASS, 6 ; UBASS |
|
- | 65 | BITMASK FBASS_DIR, 5 ; направление изменения FBASS |
|
65 | SIZEVAR EQU SIZ_PAT + 1 - FLAGS |
66 | BITMASK FBASS, 4 ; FBASS |
- | 67 | BITMASK UTREBLE_DIR, 3 ; направление изменения UTREBLE |
|
- | 68 | BITMASK UTREBLE, 2 ; UTREBLE |
|
- | 69 | BITMASK FTREBLE_DIR, 1 ; направление изменения FTREBLE |
|
- | 70 | BITMASK FTREBLE, 0 ; FTREBLE |
|
66 | 71 | ||
67 | FREQ10 EQU 0 |
72 | FREQ10 EQU 0 |
68 | FREQ12 EQU 1 |
73 | FREQ12 EQU 1 |
69 | FREQ20 EQU 2 |
74 | FREQ20 EQU 2 |
70 | FREQ24 EQU 3 |
75 | FREQ24 EQU 3 |
71 | 76 | ||
72 | ORG 0x8000 |
77 | ORG 0x8000 |
73 | START DI |
78 | START DI |
74 | LD SP,ISTACK |
79 | LD SP,ISTACK |
75 | CALL ALLRES ;СБРОС ВСЕХ НАСТРОЕК |
80 | CALL ALLRES ; сброс всех настроек |
76 | OUT (ZXDATWR),A |
81 | OUT (ZXDATWR),A |
77 | OUT (CLRCBIT),A ;СООБЩИЛИ СПЕКУ О РЕЗУЛЬТАТАХ ИНИТА |
82 | OUT (CLRCBIT),A ; сообщили спеку о результатах инита |
78 | LD A,1 |
83 | LD A,1 |
79 | LD (PlMode),A |
84 | LD (PlMode),A |
80 | LD HL,0x0200 |
85 | LD HL,0x0200 |
81 | LD (MODLLEN),HL |
86 | LD (MODLLEN),HL |
82 | JP CON_MOD |
87 | JP CONTINUE_MOD |
83 | 88 | ||
- | 89 | TABFUNC DW INIT_SD ; 00 перезапуск SD |
|
- | 90 | DW PREV_TRACK ; 01 предыдущий трек |
|
- | 91 | DW PLAY ; 02 плей |
|
- | 92 | DW PAUSE ; 03 пауза |
|
- | 93 | DW STOP ; 04 стоп |
|
- | 94 | DW NEXT_TRACK ; 05 следующий трек |
|
- | 95 | DW XORBASS ; 06 XOR TREBLE/BASS |
|
- | 96 | DW XORSURR ; 07 XOR SURROUND |
|
- | 97 | DW VOL_UP ; 08 громкость + |
|
- | 98 | DW VOL_DOWN ; 09 громкость - |
|
- | 99 | DW MUTE ; 0A вкл/выкл громкости |
|
- | 100 | DW GET_TIME ; 0B отдать время |
|
- | 101 | DW GET_VTS ; 0C отдать парам 6-10 |
|
- | 102 | DW GET_CURRENT ; 0D отдать тек номер |
|
- | 103 | DW SET_NUM ; 0E установка текущего номера |
|
- | 104 | DW RESET_MP3 ; 0F сброс MP3 декодера |
|
- | 105 | DW FAT_TYPE ; 10 ⨯ FAT |
|
- | 106 | DW GET_LNG ; 11 отдать имя файла |
|
- | 107 | DW GET_FILE_DESCR ; 12 отдать описатель |
|
- | 108 | DW GET_COUNT_FILES ; 13 отдать колво *.EXT |
|
- | 109 | DW SEND_MP3 ; 14 прд на MP3 |
|
- | 110 | DW TXT_COUNT_FILES ; 15 DEC число файлов |
|
- | 111 | DW TXT_CURRENT_FILE ; 16 DEC число текущ+1 |
|
- | 112 | DW XOR_RESET ; 17 переключения типа сброса |
|
- | 113 | DW PREV_DIR ; 18 следующий DIR |
|
- | 114 | DW NEXT_DIR ; 19 предыдущий DIR |
|
- | 115 | DW SET_TEMBR ; 1A уст. тембров |
|
- | 116 | DW TXT_TEMBR_STATUS ; 1B чтение тембров |
|
- | 117 | DW BITRATE ; 1C RD битрейт и проч |
|
- | 118 | DW TEST_MODE ; 1D тест режима |
|
- | 119 | DW GET_CHIP_TYPE ; 1E номер чипа MP3 |
|
- | 120 | END_TAB |
|
- | 121 | ||
84 | ALLRES CALL PATCH ;ПАТЧ ОСНОВНОЙ ПРОШИВКИ |
122 | ALLRES CALL PATCH ; патч основной прошивки |
85 | LD HL,FLAGS |
123 | LD HL,FLAGS |
86 | LD D,H |
124 | LD D,H |
87 | LD E,L |
125 | LD E,L |
88 | LD BC,SIZEVAR |
126 | LD BC,SIZE_PAGES_MOD - FLAGS ; количество переменных для зануления |
89 | INC DE |
127 | INC DE |
90 | LD (HL),0 |
128 | LD (HL),0 |
91 | LDIR ;ЗАЧИСТКА ОБЛАСТИ ПЕРЕМЕННЫХ |
129 | LDIR ; зачистка области переменных |
92 | LD A,Softmp3 |
130 | LD A,Softmp3 |
93 | LD (TYPRES),A ;УСТАНОВКА СБРОСА MP3 ЧИПА |
131 | LD (TYPE_RESET),A ; установка сброса MP3 чипа |
94 | LD A,Avtodet |
132 | LD A,Avtodet |
95 | CALL COM__SD |
133 | CALL COM__SD |
96 | AND A ;ОПРЕДЕЛЯЕМ GS/NeoGS |
134 | AND A ; определяем GS/NeoGS |
97 | JR Z,INI_MP3 |
135 | JR Z,INI_MP3 |
98 | LD A,0xCC |
136 | LD A,NEOGS_ERROR |
99 | JR START4 ;КОД ОШИБКИ =GS |
137 | JR INIT_SD.L4 ; код ошибки =GS |
100 | 138 | ||
101 | INI_MP3 LD A,Hardmp3 |
139 | INI_MP3 LD A,Hardmp3 |
102 | CALL COM__SD ;ПОЛНАЯ ИНИЦИАЛИЗАЦИЯ MP3 ЧИПА |
140 | CALL COM__SD ; полная инициализация MP3 чипа |
103 | 141 | ||
104 | ;----FUNC00---- |
142 | ;----FUNC00---- |
- | 143 | INIT_SD CALL RTYPEVS ; получение номера чипа MP3 |
|
105 | INI__SD LD HL,0 |
144 | LD HL,0 |
106 | LD (NUMFILE),HL |
145 | LD (NUMFILE),HL |
107 | LD A,Sd_init |
146 | LD A,Sd_init |
108 | CALL COM__SD |
147 | CALL COM__SD |
109 | AND A ;ИНИЦИАЛИЗАЦИЯ SD КАРТЫ |
148 | AND A ; инициализация SD карты |
110 | JR Z,START1 |
149 | JR Z,.L1 |
111 | LD A,0xEE |
150 | LD A,SD_NOT_FOUND |
112 | LD (CALBFAT),A |
151 | LD (TYPE_FAT),A |
113 | JR START4 ;КОД ОШИБКИ =SD КАРТА НЕ НАЙДЕНА |
152 | JR .L4 ; код ошибки =SD карта не найдена |
114 | 153 | ||
115 | START1 LD HL,FLAGS |
154 | .L1 LD HL,FLAGS |
116 | RES 7,(HL) |
155 | RES B_SD_LOST,(HL) |
117 | LD A,Init_Fatvars |
156 | LD A,Init_Fatvars |
118 | CALL COM_FAT ;ИНИЦИАЛИЗАЦИЯ FAT |
157 | CALL COM_FAT ; инициализация FAT |
119 | CP 0x80 |
158 | CP 0x80 |
120 | JR Z,START11 |
159 | JR Z,.L11 |
121 | LD (CALBFAT),A |
160 | LD (TYPE_FAT),A |
122 | INC A |
161 | INC A |
123 | JR NZ,START3 |
162 | JR NZ,.L3 |
124 | START11 LD A,0xDD |
163 | .L11 LD A,FAT_NOT_FOUND |
125 | JR START4 ;КОД ОШИБКИ =FAT НЕ НАЙДЕН |
164 | JR .L4 ; код ошибки =FAT не найден |
126 | 165 | ||
127 | START3 CALL CP_XB |
- | |
128 | CALL RTYPEVS |
166 | .L3 CALL XORBASS.L2 |
129 | LD A,Finddir |
167 | LD A,Finddir |
130 | CALL COM_FAT ;ПОИСК ВСЕХ ДИРЕКТОРИЙ |
168 | CALL COM_FAT ; поиск всех директорий |
131 | CP 0x80 |
169 | CP 0x80 |
132 | JR Z,START11 |
170 | JR Z,.L11 |
133 | LD A,Findfil |
171 | LD A,Findfil |
134 | CALL COM_FAT ;ПОИСК ВСЕХ ФАЙЛОВ ПО МАСКЕ |
172 | CALL COM_FAT ; поиск всех файлов по маске |
135 | CP 0x80 |
173 | CP 0x80 |
136 | JR Z,START11 |
174 | JR Z,.L11 |
137 | LD (KOLWMP3),HL |
175 | LD (COUNT_MP3),HL |
138 | IN A,(CLRCBIT) |
176 | OUT (CLRCBIT),A |
139 | CALL PAUSEPL ;ПОСТАНОВКА НА ПАУЗУ |
177 | CALL PAUSE ; постановка на паузу |
140 | LD A,H |
178 | LD A,H |
141 | OR L |
179 | OR L |
142 | LD A,0xBB |
180 | LD A,FILES_NOT_FOUND |
143 | JR Z,START4 ;КОД ОШИБКИ =ФАЙЛОВ НЕ НАЙДЕНО |
181 | JR Z,.L4 ; код ошибки =файлов не найдено |
144 | LD BC,0 |
182 | LD BC,0 |
145 | CALL INIPLAY |
183 | CALL INIPLAY |
146 | LD A,0x77 ;КОД ОШИБКИ =ВСЕ ЗАМЕЧАТЕЛЬНО |
184 | LD A,PLAYER_OK ; код ошибки =все замечательно |
147 | START4 LD (REJIMGS),A |
185 | .L4 LD (STATUS),A |
148 | RET |
186 | RET |
149 | 187 | ||
150 | TABFUNC DW INI__SD ;00 ПЕРЕЗАПУСК SD |
- | |
151 | DW PREVPL ;01 ПРЕДЫДУЩИЙ ТРЕК |
- | |
152 | DW PLAY ;02 ПЛЕЙ |
- | |
153 | DW PAUSEPL ;03 ПАУЗА |
- | |
154 | DW STOP_PL ;04 СТОП |
- | |
155 | DW NEXTPL ;05 СЛЕДУЮЩИЙ ТРЕК |
- | |
156 | DW XORBASS ;06 XOR TREBLE/BASS |
- | |
157 | DW XORSURR ;07 XOR SURROUND |
- | |
158 | DW VOL_UP ;08 ГРОМКОСТЬ + |
- | |
159 | DW VOL_DN ;09 ГРОМКОСТЬ - |
- | |
160 | DW MUTE ;0A ВКЛ/ВЫКЛ ГРОМКОСТИ |
- | |
161 | DW GETTIME ;0B ОТДАТЬ ВРЕМЯ |
- | |
162 | DW GET_VTS ;0C ОТДАТЬ ПАРАМ 6-10 |
- | |
163 | DW GET_TEK ;0D ОТДАТЬ ТЕК НОМЕР |
- | |
164 | DW SET_NUM ;0E ПОЛУЧИТЬ ТЕК НОМЕР |
- | |
165 | DW SRESMP3 ;0F СБРОС MP3 ДЕКОДЕРА |
- | |
166 | DW FATTYPE ;10 ТИП FAT |
- | |
167 | DW GET_LNG ;11 ОТДАТЬ ИМЯ ФАЙЛА |
- | |
168 | DW GETOPIS ;12 ОТДАТЬ ОПИСАТЕЛЬ |
- | |
169 | DW GETKMP3 ;13 ОТДАТЬ КОЛВО *.EXT |
- | |
170 | DW GON2MP3 ;14 ПРД НА MP3 |
- | |
171 | DW GETDMP3 ;15 DEC ЧИСЛО ФАЙЛОВ |
- | |
172 | DW GETDTEK ;16 DEC ЧИСЛО ТЕКУЩ+1 |
- | |
173 | DW SFT_HRD ;17 ПЕРЕКЛЮЧ СБРОСА |
- | |
174 | DW PREVDIR ;18 СЛЕДУЮЩИЙ DIR |
- | |
175 | DW NEXTDIR ;19 ПРЕДЫДУЩИЙ DIR |
- | |
176 | DW SETTMBR ;1A УСТ. ТЕМБРОВ |
- | |
177 | DW RUSTTBL ;1B ЧТЕНИЕ ТЕМБРОВ |
- | |
178 | DW BITRATE ;1C RD БИТРЕЙТ И ПРОЧ |
- | |
179 | DW TESTREJ ;1D ТЕСТ РЕЖИМА |
- | |
180 | END_TAB |
- | |
181 | - | ||
182 | ;----FUNC1C---- |
188 | ;----FUNC1C---- |
183 | ;КОНВЕРСИЯ HDAT1,HDAT0 |
189 | ; конверсия HDAT1,HDAT0 |
184 | ;ПОСЛЕ ЧТЕНИЯ BC=HDAT1, DE=HDAT0 |
190 | ; после чтения BC=HDAT1, DE=HDAT0 |
185 | BITRATE LD HL,0x0309 |
191 | BITRATE LD HL,VS10XX_READ << 8 + SCI_HDAT1;0x0309 |
186 | LD A,Com_mp3 |
192 | LD A,Com_mp3 |
187 | CALL COM__SD |
193 | CALL COM__SD |
188 | PUSH DE |
194 | PUSH DE |
189 | LD HL,0x0308 |
195 | LD HL,VS10XX_READ << 8 + SCI_HDAT0;0x0308 |
190 | LD A,Com_mp3 |
196 | LD A,Com_mp3 |
191 | CALL COM__SD |
197 | CALL COM__SD |
192 | POP BC |
198 | POP BC |
193 | LD A,C |
199 | LD A,C |
194 | AND A |
200 | AND A |
195 | LD HL,0xA000 |
201 | LD HL,0xA000 |
196 | JP Z,GET_RZN ;ПЕРЕХОД ЕСЛИ НИЧЕГО НЕ ИГРАЕТСЯ |
202 | JP Z,GET_RZN ; переход если ничего не играется |
197 | AND %00011000 |
203 | AND %00011000 |
198 | RRCA |
204 | RRCA |
199 | RRCA |
205 | RRCA |
200 | RRCA ;БИТЫ ID |
206 | RRCA ; биты ID |
201 | LD L,A |
207 | LD L,A |
202 | LD A,D |
208 | LD A,D |
203 | AND %00001100 ;БИТЫ SAMPLE RATE |
209 | AND %00001100 ; биты SAMPLE RATE |
204 | OR L |
210 | OR L |
205 | LD L,A |
211 | LD L,A |
206 | LD A,C |
212 | LD A,C |
207 | AND %00000110 ;БИТЫ LAYER |
213 | AND %00000110 ; биты LAYER |
208 | RLCA |
214 | RLCA |
209 | RLCA |
215 | RLCA |
210 | RLCA |
216 | RLCA |
211 | OR L |
217 | OR L |
212 | LD L,A |
218 | LD L,A |
213 | LD A,E |
219 | LD A,E |
214 | AND %11000000 ;БИТЫ MODE |
220 | AND %11000000 ; биты MODE |
215 | OR L |
221 | OR L |
216 | LD L,A |
222 | LD L,A |
217 | LD A,D |
223 | LD A,D |
218 | AND %11110000 ;БИТЫ BITRATE |
224 | AND %11110000 ; биты BITRATE |
219 | RRCA |
225 | RRCA |
220 | RRCA |
226 | RRCA |
221 | RRCA |
227 | RRCA |
222 | RRCA |
228 | RRCA |
223 | LD H,A |
229 | LD H,A |
224 | JP GET_RZN ;СБРОС НА СПЕК СОДЕРЖИМОГО HL |
230 | JP GET_RZN ; сброс на спек содержимого HL |
225 | 231 | ||
226 | ;----FUNC1A---- |
232 | ;----FUNC1A---- |
227 | ;ИЗМЕНЕНИЕ ТЕМБРОВ |
233 | ; изменение тембров |
228 | SETTMBR OUT (CLRCBIT),A |
234 | SET_TEMBR OUT (CLRCBIT),A |
229 | CALL WDY |
235 | CALL WDY |
230 | IN A,(ZXDATRD) ;ЧТЕНИЕ ПАРАМЕТРА |
236 | IN A,(ZXDATRD) ; чтение параметра |
231 | LD B,A ;СОХРАНЯЕМ |
237 | LD B,A ; сохраняем |
- | 238 | LD A,(CHIP_TYPE) |
|
- | 239 | CP VS1001 ; проверяем тип чипа |
|
- | 240 | RET Z ; для VS1001 выходим |
|
- | 241 | ; для VS1011 продолжаем |
|
232 | LD A,(GETVTSH) |
242 | LD A,(GETVTSH) |
233 | BIT 3,A ;ПРОВЕРЯЕМ ТИП ЧИПА |
- | |
234 | RET Z ;ДЛЯ VS1001 ВЫХОДИМ |
- | |
235 | ;ДЛЯ VS1011 ПРОДОЛЖАЕМ |
- | |
236 | BIT 7,A ;ПРОВЕРЯЕМ МОЖНО ЛИ |
243 | BIT B_ENABLE_TEMBR,A ; проверяем можно ли |
237 | RET Z ;КРУТИТЬ ТЕМБРЫ |
244 | RET Z ; крутить тембры |
238 | PUSH BC ;СОХРАНЯЕМ "B" |
245 | PUSH BC ; сохраняем "B" |
239 | LD HL,0x0302 |
246 | LD HL,VS10XX_READ << 8 + SCI_BASS;0x0302 |
240 | LD A,Com_mp3 ;ЧИТАЕМ ТЕКУЩЕЕ ЗНАЧЕНИЕ |
247 | LD A,Com_mp3 ; читаем текущее значение |
241 | CALL COM__SD ;ТЕМБРОВ |
248 | CALL COM__SD ; тембров |
242 | POP BC ;ВОССТАНАВЛИВАЕМ "B" |
249 | POP BC ; восстанавливаем "B" |
243 | LD C,0x10 ;ШАГ ИЗМЕНЕНИЯ |
250 | LD C,0x10 ; шаг изменения |
- | 251 | ; меняем уровень UBASS ? |
|
244 | BIT 6,B ;КРУТИМ UBASS? |
252 | BIT B_UBASS,B ; крутим UBASS? |
245 | JR Z,STTMBR1 |
253 | JR Z,.L1 |
246 | ;МЕНЯЕМ УРОВЕНЬ BASS, БИТЫ 7-4 |
- | |
247 | LD A,E |
254 | LD A,E |
248 | AND 0x0F |
255 | AND %00001111 |
249 | LD L,A ;СОХРАНЯЕМ БИТЫ 3-0 |
256 | LD L,A ; сохраняем биты 3-0 |
250 | LD A,E |
257 | LD A,E |
251 | AND 0xF0 |
258 | AND %11110000 |
252 | BIT 7,B ;КУДА КРУТИМ? |
259 | BIT B_UBASS_DIR,B ; куда крутим? |
253 | JR Z,STMB01 ;УВЕЛИЧЕНИЕ |
260 | JR Z,.L01 ; увеличение |
- | 261 | ; увеличение UBASS |
|
254 | ADD A,C ;УВЕЛИЧИВАЕМ НА 1 |
262 | ADD A,C ; увеличиваем на 1 |
255 | JR C,STTMBR1 ;МАКСИМУМ! |
263 | JR C,.L1 ; максимум! |
256 | JR STMB02 |
264 | JR .L02 |
257 | 265 | ||
258 | ;УМЕНЬШЕНИЕ |
266 | ; уменьшение UBASS |
259 | STMB01 SUB C ;УМЕНЬШАЕМ НА 1 |
267 | .L01 SUB C ; уменьшаем на 1 |
260 | JR C,STTMBR1 ;МИНИМУМ! |
268 | JR C,.L1 ; минимум! |
261 | STMB02 ADD A,L |
269 | .L02 ADD A,L |
262 | LD E,A ;ВЕРНУЛИ БИТЫ 3-0 |
270 | LD E,A ; вернули биты 3-0 |
- | 271 | ||
- | 272 | ; меняем уровень UTREBLE ? |
|
263 | STTMBR1 BIT 2,B ;КРУТИМ UTREBLE? |
273 | .L1 BIT B_UTREBLE,B ; крутим UTREBLE? |
264 | JR Z,STTMBR2 |
274 | JR Z,.L2 |
265 | ;МЕНЯЕМ УРОВЕНЬ TREBLE, БИТЫ 7-4 |
- | |
266 | LD A,D |
275 | LD A,D |
267 | AND 0x0F |
276 | AND %00001111 |
268 | LD L,A ;СОХРАНЯЕМ БИТЫ 3-0 |
277 | LD L,A ; сохраняем биты 3-0 |
269 | LD A,D |
278 | LD A,D |
270 | AND 0xF0 |
279 | AND %11110000 |
271 | BIT 3,B ;КУДА КРУТИМ? |
280 | BIT B_UTREBLE_DIR,B ; куда крутим? |
272 | JR Z,STMB03 |
281 | JR Z,.L03 |
273 | ;УВЕЛИЧЕНИЕ |
282 | ; увеличение UTREBLE |
274 | ADD A,C |
283 | ADD A,C |
275 | JR C,STTMBR2 ;МАКСИМУМ! |
284 | JR C,.L2 ; максимум! |
276 | JR STMB04 |
285 | JR .L04 |
277 | 286 | ||
278 | ;УМЕНЬШЕНИЕ |
287 | ; уменьшение UTREBLE |
279 | STMB03 SUB C |
288 | .L03 SUB C |
280 | JR C,STTMBR3 ;МИНИМУМ! |
289 | JR C,.L3 ; минимум! |
281 | STMB04 ADD A,L |
290 | .L04 ADD A,L |
282 | LD D,A ;ВЕРНУЛИ БИТЫ 3-0 |
291 | LD D,A ; вернули биты 3-0 |
- | 292 | ; меняем уровень FBASS ? |
|
283 | STTMBR2 BIT 4,B ;КРУТИМ FBASS? |
293 | .L2 BIT B_FBASS,B ; крутим FBASS? |
284 | JR Z,STTMBR3 |
294 | JR Z,.L3 |
285 | ;ИЗМЕНЕНИЕ ЧАСТОТЫ BASS, БИТЫ 3-0 |
- | |
286 | LD A,E |
295 | LD A,E |
287 | AND 0xF0 |
296 | AND %11110000 |
288 | LD L,A ;СОХРАНЯЕМ БИТЫ 7-4 |
297 | LD L,A ; сохраняем биты 7-4 |
289 | LD A,E |
298 | LD A,E |
290 | AND 0x0F |
299 | AND %00001111 |
291 | BIT 5,B ;КУДА КРУТИМ? |
300 | BIT B_FBASS_DIR,B ; куда крутим? |
292 | JR Z,STMB05 |
301 | JR Z,.L05 |
293 | ;УВЕЛИЧЕНИЕ |
302 | ; увеличение FBASS |
294 | INC A |
303 | INC A |
295 | CP 0x10 |
304 | CP 0x10 |
296 | JR NC,STTMBR3 ;МАКСИМУМ! |
305 | JR NC,.L3 ; максимум! |
297 | JR STMB06 |
306 | JR .L06 |
298 | 307 | ||
- | 308 | ; уменьшение FBASS |
|
299 | STMB05 AND A |
309 | .L05 AND A |
300 | JR Z,STTMBR3 ;МИНИМУМ! |
310 | JR Z,.L3 ; минимум! |
301 | DEC A |
311 | DEC A |
302 | STMB06 ADD A,L |
312 | .L06 ADD A,L |
303 | LD E,A ;ВЕРНУЛИ БИТЫ 7-4 |
313 | LD E,A ; вернули биты 7-4 |
- | 314 | ; меняем уровень FTREBLE ? |
|
304 | STTMBR3 BIT 0,B ;КРУТИМ FTREBLE? |
315 | .L3 BIT B_FTREBLE,B ; крутим FTREBLE? |
305 | JR Z,WRTMBR |
316 | JR Z,WR_TEMBR |
306 | ;ИЗМЕНЕНИЕ ЧАСТОТЫ TREBLE, БИТЫ 3-0 |
- | |
307 | LD A,D |
317 | LD A,D |
308 | AND 0xF0 |
318 | AND %11110000 |
309 | LD L,A ;СОХРАНЯЕМ БИТЫ 7-4 |
319 | LD L,A ; сохраняем биты 7-4 |
310 | LD A,D |
320 | LD A,D |
311 | AND 0x0F |
321 | AND %00001111 |
312 | BIT 1,B ;КУДА КРУТИМ? |
322 | BIT B_FTREBLE_DIR,B ; куда крутим? |
313 | JR Z,STBM07 |
323 | JR Z,.L07 |
314 | ;УВЕЛИЧЕНИЕ |
324 | ; увеличение FTREBLE |
315 | INC A |
325 | INC A |
316 | CP 0x10 |
326 | CP 0x10 |
317 | JR NC,WRTMBR ;МАКСИМУМ! |
327 | JR NC,WR_TEMBR ; максимум! |
318 | JR STBM08 |
328 | JR .L08 |
319 | 329 | ||
320 | ;УМЕНЬШЕНИЕ |
330 | ; уменьшение FTREBLE |
321 | STBM07 AND A |
331 | .L07 AND A |
322 | JR Z,$+3 ;МИНИМУМ! |
332 | JR Z,.L08 ; минимум! |
323 | DEC A |
333 | DEC A |
324 | STBM08 ADD A,L |
334 | .L08 ADD A,L |
325 | LD D,A ;ВЕРНУЛИ БИТЫ 7-4 |
335 | LD D,A ; вернули биты 7-4 |
- | 336 | ; записываем изменение в чип |
|
326 | WRTMBR LD HL,0x0202 |
337 | WR_TEMBR LD HL,VS10XX_WRITE << 8 + SCI_BASS;0x0202 |
327 | LD A,Com_mp3 |
338 | LD A,Com_mp3 |
328 | JP COM__SD ;ЗАПИСАЛИ УСТАНОВКИ ВЗАД |
339 | JP COM__SD ; записали установки взад |
329 | 340 | ||
330 | ;----FUNC10---- |
341 | ;----FUNC10---- |
331 | ;ОТДАЧА БАЙТА ТИПА FAT |
342 | ; отдача байта типа FAT |
332 | FATTYPE LD A,(CALBFAT) |
343 | FAT_TYPE LD A,(TYPE_FAT) |
333 | JP GET_BYT |
344 | JP GET_BYT |
334 | 345 | ||
335 | ;ОПРЕДЕЛЕНИЕ УСТАНОВЛЕННОГО ЧИПА |
346 | ; определение установленного чипа |
336 | RTYPEVS LD HL,0x0301 |
347 | RTYPEVS LD HL,VS10XX_READ << 8 + SCI_STATUS;0x0301 |
337 | LD A,Com_mp3 |
348 | LD A,Com_mp3 |
338 | CALL COM__SD |
349 | CALL COM__SD |
339 | LD A,E |
- | |
- | 350 | LD A,E ; нас интересуют биты 7-4 из регистра статуса |
|
340 | RRCA |
351 | RRCA |
341 | RRCA |
352 | RRCA |
342 | AND 0x0C ;НАС ИНТЕРЕСУЮТ БИТЫ 3-2 |
- | |
343 | LD E,A ;ТИПА УСТАНОВЛЕННОГО MP3 ЧИПА |
- | |
344 | LD A,(GETVTSH) |
- | |
345 | AND 0xF3 |
353 | RRCA |
346 | OR E |
354 | RRCA |
- | 355 | AND %00001111 ; сдвинули в младшие биты |
|
347 | LD (GETVTSH),A |
356 | LD (CHIP_TYPE),A ; тип установленного MP3 чипа |
348 | RET |
357 | RET |
349 | 358 | ||
350 | ;----FUNC1D---- |
359 | ;----FUNC1D---- |
351 | ;ОТВЕТ НА ЗАПРОС КАКОЙ КОД РАБОТАЕТ |
360 | ; ответ на запрос какой код работает |
352 | TESTREJ IN A,(CLRCBIT) |
361 | TEST_MODE IN A,(ZXDATRD) |
- | 362 | OUT (CLRCBIT),A |
|
353 | IN A,(ZXDATRD) |
363 | LD A,(STATUS) |
- | 364 | OUT (ZXDATWR),A |
|
- | 365 | RET |
|
- | 366 | ||
- | 367 | ;----FUNC1E----- |
|
- | 368 | ; получение номера чипа MP3 |
|
- | 369 | GET_CHIP_TYPE IN A,(ZXDATRD) |
|
- | 370 | OUT (CLRCBIT),A |
|
354 | LD A,(REJIMGS) |
371 | LD A,(CHIP_TYPE) |
355 | OUT (ZXDATWR),A |
372 | OUT (ZXDATWR),A |
356 | RET |
373 | RET |
357 | 374 | ||
358 | ;----FUNC17---- |
375 | ;----FUNC17---- |
359 | ;ПЕРЕКЛЮЧЕНИЕ ТИПА СБРОСА |
376 | ; переключение типа сброса |
360 | SFT_HRD LD HL,GETVTSH |
377 | XOR_RESET LD HL,GETVTSH |
361 | LD A,0x10 |
378 | LD A,M_TYPE_RESET |
362 | XOR (HL) |
379 | XOR (HL) |
363 | LD (HL),A |
380 | LD (HL),A |
364 | LD A,Hardmp3 |
381 | LD A,Hardmp3 |
365 | BIT 4,(HL) |
382 | BIT B_TYPE_RESET,(HL) |
366 | JR NZ,$+4 |
383 | JR NZ,.L1 |
367 | LD A,Softmp3 |
384 | LD A,Softmp3 |
368 | LD (TYPRES),A |
385 | .L1 LD (TYPE_RESET),A |
369 | RET |
386 | RET |
370 | 387 | ||
371 | ;----FUNC0F---- |
388 | ;----FUNC0F---- |
372 | ;СБРОС MP3 ЧИПА |
389 | ; сброс MP3 чипа |
373 | SRESMP3 LD A,(TYPRES) |
390 | RESET_MP3 LD A,(TYPE_RESET) |
374 | JP COM__SD |
391 | JP COM__SD |
375 | 392 | ||
376 | ;----FUNC04---- |
393 | ;----FUNC04---- |
377 | ;ОСТАНОВКА ПРОИГРЫВАНИЯ |
394 | ; остановка проигрывания |
378 | STOP_PL CALL PAUSEPL |
395 | STOP CALL PAUSE |
379 | LD BC,(NUMFILE) |
396 | LD BC,(NUMFILE) |
380 | JP INIPLAY |
397 | JP INIPLAY |
381 | 398 | ||
382 | ;----FUNC03---- |
399 | ;----FUNC03---- |
383 | ;ПАУЗА ВОСПРОИЗВЕДЕНИЯ |
400 | ; пауза воспроизведения |
384 | PAUSEPL LD HL,MTSTAT |
401 | PAUSE LD HL,MTSTAT |
385 | SET 7,(HL) |
402 | SET B_MOD_STOP_PLAY,(HL) |
386 | LD HL,FLAGS |
403 | LD HL,FLAGS |
387 | RES 0,(HL) |
404 | RES B_PLAY_STOP,(HL) |
388 | RET |
405 | RET |
389 | 406 | ||
390 | ;----FUNC02---- |
407 | ;----FUNC02---- |
391 | ;ЗАПУСК ВОСПРОИЗВЕДЕНИЯ |
408 | ; запуск воспроизведения |
392 | PLAY LD HL,(KOLWMP3) |
409 | PLAY LD HL,(COUNT_MP3) |
393 | LD A,H |
410 | LD A,H |
394 | OR L |
411 | OR L |
395 | RET Z |
412 | RET Z |
396 | LD HL,FLAGS |
- | |
397 | SET 0,(HL) |
- | |
398 | LD HL,MTSTAT |
413 | LD HL,MTSTAT |
- | 414 | RES B_MOD_STOP_PLAY,(HL) |
|
- | 415 | LD HL,FLAGS |
|
399 | RES 7,(HL) |
416 | SET B_PLAY_STOP,(HL) |
400 | RET |
417 | RET |
401 | 418 | ||
402 | ;----FUNC05---- |
419 | ;----FUNC05---- |
403 | ;ПЕРЕХОД НА СЛЕДУЩИЙ ПЕСНЯК |
420 | ; переход на следущий песняк |
404 | NEXTPL LD BC,(NUMFILE) |
421 | NEXT_TRACK LD BC,(NUMFILE) |
405 | INC BC |
422 | INC BC |
406 | LD HL,(KOLWMP3) |
423 | LD HL,(COUNT_MP3) |
407 | LD A,H |
424 | LD A,H |
408 | OR L |
425 | OR L |
409 | RET Z |
426 | RET Z |
410 | AND A |
427 | AND A |
411 | SBC HL,BC |
428 | SBC HL,BC |
412 | JR NZ,NEXTPL1 |
429 | JR NZ,.L1 |
413 | LD BC,0 |
430 | LD BC,0 |
414 | 431 | ||
415 | ;ОБЩЕЕ ДЛЯ ПЕРЕХОДОВ ПО ФАЙЛАМ |
432 | ; общее для переходов по файлам |
416 | NEXTPL1 LD (NUMFILE),BC |
433 | .L1 LD (NUMFILE),BC |
417 | JP INIPLAY |
434 | JP INIPLAY |
418 | 435 | ||
419 | ;----FUNC01---- |
436 | ;----FUNC01---- |
420 | ;ПЕРЕХОД НА ПРЕДЫДУЩИЙ ПЕСНЯК |
437 | ; переход на предыдущий песняк |
421 | PREVPL LD BC,(NUMFILE) |
438 | PREV_TRACK LD BC,(NUMFILE) |
422 | LD A,B |
439 | LD A,B |
423 | OR C |
440 | OR C |
424 | JR NZ,PREVPL1 |
441 | JR NZ,.L1 |
425 | LD BC,(KOLWMP3) |
442 | LD BC,(COUNT_MP3) |
426 | LD A,B |
443 | LD A,B |
427 | OR C |
444 | OR C |
428 | RET Z |
445 | RET Z |
429 | PREVPL1 DEC BC |
446 | .L1 DEC BC |
430 | JR NEXTPL1 |
447 | JR NEXT_TRACK.L1 |
431 | 448 | ||
432 | ;----FUNC19---- |
449 | ;----FUNC19---- |
433 | ;ПЕРЕХОД НА ПЕРВЫЙ ФАЙЛ СЛЕДУЩЕЙ DIR |
450 | ; переход на первый файл следущей DIR |
434 | NEXTDIR LD A,Nxtdir |
451 | NEXT_DIR LD A,Nxtdir |
435 | JR P_DIR |
452 | JR P_DIR |
436 | 453 | ||
437 | ;----FUNC18---- |
454 | ;----FUNC18---- |
438 | ;ПЕРЕХОД НА ПЕРВЫЙ ФАЙЛ ПРЕДЫДУЩЕЙ DIR |
455 | ; переход на первый файл предыдущей DIR |
439 | PREVDIR LD A,Prvdir |
456 | PREV_DIR LD A,Prvdir |
440 | P_DIR LD BC,(NUMFILE) |
457 | P_DIR LD BC,(NUMFILE) |
441 | PUSH BC |
458 | PUSH BC |
442 | CALL COM_FAT |
459 | CALL COM_FAT |
443 | POP HL |
460 | POP HL |
444 | CP 0x80 |
461 | CP 0x80 |
445 | JP Z,SD_LOST |
462 | JP Z,SD_LOST |
446 | AND A |
463 | AND A |
447 | SBC HL,BC |
464 | SBC HL,BC |
448 | JR NZ,NEXTPL1 |
465 | JR NZ,NEXT_TRACK.L1 |
449 | RET |
466 | RET |
450 | 467 | ||
451 | ;----FUNC15---- |
468 | ;----FUNC15---- |
452 | ;ПЕРЕГОНКА 512 БАЙТ СНАРУЖИ НА MP3 |
469 | ; перегонка 512 байт снаружи на MP3 |
453 | GON2MP3 LD A,Dat2mp3 |
470 | SEND_MP3 LD A,Dat2mp3 |
454 | JP COM__SD |
471 | JP COM__SD |
455 | 472 | ||
456 | ;----FUNC11---- |
473 | ;----FUNC11---- |
457 | ;ОТДАТЬ СПЕКУ ДЛИННОЕ ИМЯ |
474 | ; отдать спеку длинное имя |
458 | GET_LNG CALL RDINBC |
475 | GET_LNG CALL RDINBC |
459 | BIT 7,B |
476 | BIT 7,B |
460 | JR Z,$+6 |
477 | JR Z,.L1 |
461 | LD BC,(NUMFILE) |
478 | LD BC,(NUMFILE) |
462 | LD HL,GETVTSH |
479 | .L1 LD HL,GETVTSH |
463 | RES 5,(HL) |
480 | RES B_NEW_FILE,(HL) |
464 | LD HL,BUF_LNG |
481 | LD HL,BUF_LNG |
465 | ; LD A,Getlong |
482 | ; LD A,Getlong |
466 | ; CALL COM_FAT |
483 | ; CALL COM_FAT |
467 | ; CP 0x80 |
484 | ; CP 0x80 |
468 | ; JP Z,SD_LOST |
485 | ; JP Z,SD_LOST |
469 | LD E,0 |
486 | LD E,0 |
470 | JP OUTDATA |
487 | JP OUTDATA |
471 | 488 | ||
472 | ;----FUNC0A---- |
489 | ;----FUNC0A---- |
473 | ;ВЫКЛ/ВКЛ ЗВУКА |
490 | ; выкл/вкл звука |
474 | MUTE LD HL,0x030B |
491 | MUTE LD HL,VS10XX_READ << 8 + SCI_VOL;0x030B |
475 | LD A,Com_mp3 |
492 | LD A,Com_mp3 |
476 | CALL COM__SD |
493 | CALL COM__SD |
477 | LD A,E |
494 | LD A,E |
478 | CP 0xFE |
495 | CP 0xFE |
479 | JR NC,MUTEOFF |
496 | JR NC,MUTEOFF |
480 | LD (MUTEOFF+1),A |
497 | LD (MUTEOFF.L1),A |
481 | LD HL,GETVTSH |
498 | LD HL,GETVTSH |
482 | SET 6,(HL) |
499 | SET B_MUTE,(HL) |
483 | LD E,0xFE |
500 | LD E,0xFE |
484 | JR VOL_ALL |
501 | JR VOL_ALL |
485 | 502 | ||
486 | MUTEOFF LD E,0 |
503 | MUTEOFF LD E,0 |
- | 504 | .L1 EQU $-1 |
|
487 | LD HL,GETVTSH |
505 | LD HL,GETVTSH |
488 | RES 6,(HL) |
506 | RES B_MUTE,(HL) |
489 | JR VOL_ALL |
507 | JR VOL_ALL |
490 | 508 | ||
491 | ;----FUNC08---- |
509 | ;----FUNC08---- |
492 | ;УВЕЛИЧЕНИЕ ГРОМКОСТИ НА ЕДИНИЦУ |
510 | ; увеличение громкости на единицу |
493 | VOL_UP LD HL,0x030B |
511 | VOL_UP LD HL,VS10XX_READ << 8 + SCI_VOL;0x030B |
494 | LD A,Com_mp3 |
512 | LD A,Com_mp3 |
495 | CALL COM__SD |
513 | CALL COM__SD |
496 | LD A,E |
514 | LD A,E |
497 | AND A |
515 | AND A |
498 | RET Z |
516 | RET Z |
Line 500... | Line 518... | ||
500 | RET NC |
518 | RET NC |
501 | DEC E |
519 | DEC E |
502 | JR VOL_ALL |
520 | JR VOL_ALL |
503 | 521 | ||
504 | ;----FUNC09---- |
522 | ;----FUNC09---- |
505 | ;УМЕНЬШЕНИЕ ГРОМКОСТИ НА ЕДИНИЦУ |
523 | ; уменьшение громкости на единицу |
506 | VOL_DN LD HL,0x030B |
524 | VOL_DOWN LD HL,VS10XX_READ << 8 + SCI_VOL;0x030B |
507 | LD A,Com_mp3 |
525 | LD A,Com_mp3 |
508 | CALL COM__SD |
526 | CALL COM__SD |
509 | LD A,E |
527 | LD A,E |
510 | CP 0x7F |
528 | CP 0x7F |
511 | RET NC |
529 | RET NC |
512 | INC E |
530 | INC E |
513 | VOL_ALL LD D,E |
531 | VOL_ALL LD D,E |
514 | LD HL,0x020B |
532 | LD HL,VS10XX_WRITE << 8 + SCI_VOL;0x020B |
515 | LD A,E |
533 | LD A,E |
516 | LD (GETVTSL),A |
534 | LD (GETVTSL),A |
517 | JR XB3 |
535 | JR XOR_ALL.L1 |
518 | 536 | ||
519 | ;----FUNC07---- |
537 | ;----FUNC07---- |
520 | ;ПЕРЕКЛЮЧЕНИЕ VIRTUAL SURROUND |
538 | ; переключение VIRTUAL SURROUND |
521 | XORSURR LD B,1 |
539 | XORSURR LD B,M_SURROUND |
522 | XOR_ALL PUSH BC |
540 | XOR_ALL PUSH BC |
523 | LD HL,0x0300 |
541 | LD HL,VS10XX_READ << 8 + SCI_MODE;0x0300 |
524 | LD A,Com_mp3 |
542 | LD A,Com_mp3 |
525 | CALL COM__SD |
543 | CALL COM__SD |
526 | POP BC |
544 | POP BC |
527 | LD A,E |
545 | LD A,E |
528 | XOR B |
546 | XOR B |
529 | LD E,A |
547 | LD E,A |
530 | LD A,(GETVTSH) |
548 | LD A,(GETVTSH) |
531 | XOR B |
549 | XOR B |
532 | LD (GETVTSH),A |
550 | LD (GETVTSH),A |
- | 551 | LD A,(CHIP_TYPE) |
|
533 | BIT 3,A |
552 | CP VS1001 |
534 | JR Z,$+4 |
553 | JR Z,.L2 |
535 | RES 7,E |
554 | RES 7,E |
536 | LD HL,0x0200 |
555 | .L2 LD HL,VS10XX_WRITE << 8 + SCI_MODE;0x0200 |
537 | XB3 LD A,Com_mp3 |
556 | .L1 LD A,Com_mp3 |
538 | JP COM__SD |
557 | JP COM__SD |
539 | 558 | ||
540 | ;----FUNC06---- |
559 | ;----FUNC06---- |
541 | ;ПЕРЕКЛЮЧЕНИЕ ТЕМБРОВ |
560 | ; переключение тембров |
542 | XORBASS LD A,(GETVTSH) |
561 | XORBASS LD A,(CHIP_TYPE) |
543 | BIT 3,A |
562 | CP VS1001 |
544 | JR NZ,XB |
563 | JR Z,.L1 |
545 | LD B,0x80 |
564 | LD B,M_ENABLE_TEMBR |
546 | JR XOR_ALL |
565 | JR XOR_ALL |
547 | 566 | ||
548 | XB LD A,(GETVTSH) |
567 | .L1 LD A,(GETVTSH) |
549 | XOR 0x80 |
568 | XOR M_ENABLE_TEMBR |
550 | LD (GETVTSH),A |
569 | LD (GETVTSH),A |
551 | - | ||
552 | CP_XB LD A,(GETVTSH) |
570 | .L2 LD A,(GETVTSH) |
553 | BIT 7,A |
571 | BIT B_ENABLE_TEMBR,A |
554 | JR Z,XB1 |
572 | JR Z,.L4 |
555 | LD DE,(VSTBL) |
573 | LD DE,(VSTBL) |
556 | XB2 LD HL,0x0202 |
574 | .L3 LD HL,VS10XX_WRITE << 8 + SCI_BASS;0x0202 |
557 | JR XB3 |
575 | JR XOR_ALL.L1 |
558 | 576 | ||
559 | XB1 LD HL,0x0302 |
577 | .L4 LD HL,VS10XX_READ << 8 + SCI_BASS;0x0302 |
560 | LD A,Com_mp3 |
578 | LD A,Com_mp3 |
561 | CALL COM__SD |
579 | CALL COM__SD |
562 | LD (VSTBL),DE |
580 | LD (VSTBL),DE |
563 | LD DE,0 |
581 | LD DE,0 |
564 | JR XB2 |
582 | JR .L3 |
565 | 583 | ||
566 | ;----FUNC0B---- |
584 | ;----FUNC0B---- |
567 | ;ПОЛУЧИТЬ ВРЕМЯ ПРОИГРЫВАНИЯ |
585 | ; получить время проигрывания |
568 | GETTIME LD HL,0x0304 |
586 | GET_TIME LD HL,VS10XX_READ << 8 + SCI_DECODE_TIME;0x0304 |
569 | LD A,Com_mp3 |
587 | LD A,Com_mp3 |
570 | CALL COM__SD |
588 | CALL COM__SD |
571 | EX DE,HL |
589 | EX DE,HL |
572 | LD DE,BUFTIME |
590 | LD DE,BUF_TEXT |
573 | PUSH DE |
591 | PUSH DE |
574 | LD BC,36000 |
592 | LD BC,36000 |
575 | CALL SUB_BC |
593 | CALL SUB_BC |
576 | LD BC,3600 |
594 | LD BC,3600 |
577 | CALL SUB_BC |
595 | CALL SUB_BC |
Line 579... | Line 597... | ||
579 | CALL SUB_BC |
597 | CALL SUB_BC |
580 | LD BC,60 |
598 | LD BC,60 |
581 | CALL SUB_BC |
599 | CALL SUB_BC |
582 | LD BC,10 |
600 | LD BC,10 |
583 | CALL SUB_BC |
601 | CALL SUB_BC |
584 | LD A,0x30 |
602 | LD A,'0' |
585 | ADD A,L |
603 | ADD A,L |
586 | LD (DE),A |
604 | LD (DE),A |
587 | LD E,6 |
605 | LD E,6 |
588 | POP HL |
606 | POP HL |
589 | JP OUTDATA |
607 | JP OUTDATA |
590 | 608 | ||
591 | ;----FUNC1B---- |
609 | ;----FUNC1B---- |
592 | ;СБРОС НА СПЕК СОСТОЯНИЕ ТЕМБРОВ В ТЕКСТОВОМ ВИДЕ |
610 | ; сброс на спек состояние тембров в текстовом виде |
- | 611 | TXT_TEMBR_STATUS |
|
593 | RUSTTBL LD A,(GETVTSH) |
612 | LD A,(CHIP_TYPE) |
594 | BIT 3,A |
613 | CP VS1001 |
595 | RET Z |
614 | RET Z |
596 | LD HL,0x0302 |
615 | LD HL,VS10XX_READ << 8 + SCI_BASS;0x0302 |
597 | LD A,Com_mp3 |
616 | LD A,Com_mp3 |
598 | CALL COM__SD |
617 | CALL COM__SD |
599 | LD A,D |
618 | LD A,D |
600 | EXX |
619 | EXX |
601 | LD DE,BUFTIME |
620 | LD DE,BUF_TEXT |
602 | AND 0x0F |
621 | AND 0x0F |
603 | LD L,A |
622 | LD L,A |
604 | LD H,0 |
623 | LD H,0 |
605 | LD BC,10 |
624 | LD BC,10 |
606 | CALL SUB_BC |
625 | CALL SUB_BC |
607 | LD A,0x30 |
626 | LD A,'0' |
608 | ADD A,L |
627 | ADD A,L |
609 | LD (DE),A ;ПОЛОЖИЛИ ЧАСТОТУ TREBLE |
628 | LD (DE),A ; положили частоту TREBLE |
610 | INC DE |
629 | INC DE |
611 | EXX |
630 | EXX |
612 | LD A,D |
631 | LD A,D |
613 | EXX |
632 | EXX |
614 | AND 0xF0 |
633 | AND 0xF0 |
Line 616... | Line 635... | ||
616 | RRCA |
635 | RRCA |
617 | RRCA |
636 | RRCA |
618 | RRCA |
637 | RRCA |
619 | LD L,A |
638 | LD L,A |
620 | BIT 3,A |
639 | BIT 3,A |
621 | LD A,0x2B |
640 | LD A,'+' |
622 | JR Z,$+4 |
641 | JR Z,.L2 |
623 | LD A,0x2D |
642 | LD A,'-' |
624 | LD (DE),A |
643 | .L2 LD (DE),A |
625 | INC DE |
644 | INC DE |
626 | LD A,L |
645 | LD A,L |
627 | AND 7 |
646 | AND 7 |
628 | ADD A,0x30 |
647 | ADD A,'0' |
629 | LD (DE),A ;ПОЛОЖИЛИ УРОВЕНЬ TREBLE |
648 | LD (DE),A ; положили уровень TREBLE |
630 | INC DE |
649 | INC DE |
631 | EXX |
650 | EXX |
632 | LD A,E |
651 | LD A,E |
633 | EXX |
652 | EXX |
634 | AND 0x0F |
653 | AND 0x0F |
635 | LD L,A |
654 | LD L,A |
636 | LD BC,10 |
655 | LD BC,10 |
637 | CALL SUB_BC |
656 | CALL SUB_BC |
638 | LD A,0x30 |
657 | LD A,'0' |
639 | ADD A,L |
658 | ADD A,L |
640 | LD (DE),A ;ПОЛОЖИЛИ ЧАСТОТУ BASS |
659 | LD (DE),A ; положили частоту BASS |
641 | INC DE |
660 | INC DE |
642 | EXX |
661 | EXX |
643 | LD A,E |
662 | LD A,E |
644 | EXX |
663 | EXX |
645 | AND 0xF0 |
664 | AND 0xF0 |
Line 648... | Line 667... | ||
648 | RRCA |
667 | RRCA |
649 | RRCA |
668 | RRCA |
650 | LD L,A |
669 | LD L,A |
651 | LD BC,10 |
670 | LD BC,10 |
652 | CALL SUB_BC |
671 | CALL SUB_BC |
653 | LD A,0x30 |
672 | LD A,'0' |
654 | ADD A,L |
673 | ADD A,L |
655 | LD (DE),A ;ПОЛОЖИЛИ УРОВЕНЬ BASS |
674 | LD (DE),A ; положили уровень BASS |
656 | EXX |
675 | EXX |
657 | LD E,8 |
676 | LD E,8 |
658 | LD HL,BUFTIME |
677 | LD HL,BUF_TEXT |
659 | LD A,0x30 |
678 | LD A,'0' |
660 | CP (HL) |
679 | CP (HL) |
661 | JR NZ,$+4 |
680 | JR NZ,.L1 |
662 | LD (HL),0x20 |
681 | LD (HL),0x20 |
663 | JP OUTDATA |
682 | .L1 JP OUTDATA |
664 | 683 | ||
665 | SUB_BC LD A,0xFF |
684 | SUB_BC LD A,0xFF |
666 | AND A |
685 | AND A |
667 | INC A |
686 | .L1 INC A |
668 | SBC HL,BC |
687 | SBC HL,BC |
669 | JR NC,$-3 |
688 | JR NC,.L1 |
670 | ADD HL,BC |
689 | ADD HL,BC |
671 | ADD A,0x30 |
690 | ADD A,'0' |
672 | LD (DE),A |
691 | LD (DE),A |
673 | INC DE |
692 | INC DE |
674 | RET |
693 | RET |
675 | 694 | ||
676 | ;----FUNC15---- |
695 | ;----FUNC15---- |
677 | ;СБРОС НА СПЕК КОЛ-ВО НАЙДЕННЫХ ФАЙЛОВ |
696 | ; сброс на спек количество найденных файлов |
678 | GETDMP3 LD HL,(KOLWMP3) |
697 | TXT_COUNT_FILES LD HL,(COUNT_MP3) |
679 | 698 | ||
680 | ;ПЕРЕГОНЯЕМ HL В TXT И СБРАСЫВАЕМ |
699 | ; перегоняем HL в TXT и сбрасываем |
681 | GETDCHR LD DE,BUFTIME |
700 | GETDCHR LD DE,BUF_TEXT |
682 | PUSH DE |
701 | PUSH DE |
683 | LD BC,10000 |
702 | LD BC,10000 |
684 | CALL SUB_BC |
703 | CALL SUB_BC |
685 | LD BC,1000 |
704 | LD BC,1000 |
686 | CALL SUB_BC |
705 | CALL SUB_BC |
687 | LD BC,100 |
706 | LD BC,100 |
688 | CALL SUB_BC |
707 | CALL SUB_BC |
689 | LD BC,10 |
708 | LD BC,10 |
690 | CALL SUB_BC |
709 | CALL SUB_BC |
691 | LD A,0x30 |
710 | LD A,'0' |
692 | ADD A,L |
711 | ADD A,L |
693 | LD (DE),A |
712 | LD (DE),A |
694 | POP HL |
713 | POP HL |
695 | PUSH HL |
714 | PUSH HL |
696 | LD BC,0x0420 |
715 | LD BC,4 << 8 + ' ' |
697 | LD A,(HL) |
716 | .L1 LD A,(HL) |
698 | CP 0x30 |
717 | CP '0' |
699 | JR NZ,GO_OUTD |
718 | JR NZ,GO_OUTD |
700 | LD (HL),C |
719 | LD (HL),C |
701 | INC HL |
720 | INC HL |
702 | DJNZ $-7 |
721 | DJNZ .L1 |
703 | GO_OUTD POP HL |
722 | GO_OUTD POP HL |
704 | LD E,5 |
723 | LD E,5 |
705 | JR OUTDATA |
724 | JR OUTDATA |
706 | 725 | ||
707 | ;----FUNC16---- |
726 | ;----FUNC16---- |
708 | ;СБРОС НА СПЕК НОМЕРА ИГРАЕМОГО ФАЙЛА+1 |
727 | ; сброс на спек номера играемого файла + 1 |
709 | ;С ПЕРЕГОНКОЙ В ТЕКСТОВЫЙ ВИД |
728 | ; с перегонкой в текстовый вид |
- | 729 | TXT_CURRENT_FILE |
|
710 | GETDTEK LD HL,(NUMFILE) |
730 | LD HL,(NUMFILE) |
711 | INC HL |
731 | INC HL |
712 | JR GETDCHR |
732 | JR GETDCHR |
713 | 733 | ||
714 | ;----FUNC12---- |
734 | ;----FUNC12---- |
715 | ;ОТДАТЬ СПЕКУ 33 БАЙТА ОПИСАТЕЛЯ ФАЙЛА |
735 | ; отдать спеку 33 байта описателя файла |
716 | GETOPIS CALL RDINBC |
736 | GET_FILE_DESCR CALL RDINBC |
717 | BIT 7,B |
737 | BIT 7,B |
718 | JR Z,$+6 |
738 | JR Z,.L1 |
719 | LD BC,(NUMFILE) |
739 | LD BC,(NUMFILE) |
720 | LD A,Getfzap |
740 | .L1 LD A,Getfzap |
721 | CALL COM_FAT |
741 | CALL COM_FAT |
722 | CP 0x80 |
742 | CP 0x80 |
723 | JP Z,SD_LOST |
743 | JP Z,SD_LOST |
724 | LD BC,0x20 |
744 | LD BC,0x20 |
725 | ADD HL,BC |
745 | ADD HL,BC |
726 | LD (HL),E |
746 | LD (HL),E |
727 | SBC HL,BC |
747 | SBC HL,BC |
728 | LD E,0x21 |
748 | LD E,0x21 |
729 | 749 | ||
730 | ;ОТДАЕМ БАЙТИКИ, СЧЕТЧИК БАЙТА В E |
750 | ; отдаем байтики, счетчик байта в E |
731 | OUTDATA LD A,(HL) |
751 | OUTDATA LD A,(HL) |
732 | INC HL |
752 | INC HL |
733 | OUT (ZXDATWR),A |
753 | OUT (ZXDATWR),A |
734 | CALL WDN |
754 | CALL WDN |
735 | DEC E |
755 | DEC E |
736 | JR NZ,OUTDATA |
756 | JR NZ,OUTDATA |
737 | RET |
757 | RET |
738 | 758 | ||
739 | ;----FUNC0E---- |
759 | ;----FUNC0E---- |
740 | ;УСТАНОВКА НОМЕРА ФАЙЛА ДЛЯ ИГРАНИЯ |
760 | ; установка номера файла для играния |
741 | ;ЕСЛИ НЕ ПРЕВЫШАЕТ КОЛ-ВО НАЙДЕННОГО-1 |
761 | ; если не превышает количество найденного - 1 |
742 | SET_NUM CALL RDINBC |
762 | SET_NUM CALL RDINBC |
743 | LD HL,(KOLWMP3) |
763 | LD HL,(COUNT_MP3) |
744 | AND A |
764 | AND A |
745 | SBC HL,BC |
765 | SBC HL,BC |
746 | RET C |
766 | RET C |
747 | LD (NUMFILE),BC |
767 | LD (NUMFILE),BC |
748 | RET |
768 | RET |
749 | 769 | ||
750 | ;ЧИТАЕМ В BC |
770 | ; читаем в BC |
751 | RDINBC CALL WDY |
771 | RDINBC CALL WDY |
752 | IN A,(ZXDATRD) |
772 | IN A,(ZXDATRD) |
753 | LD B,A |
773 | LD B,A |
754 | CALL WDY |
774 | CALL WDY |
755 | IN A,(ZXDATRD) |
775 | IN A,(ZXDATRD) |
756 | LD C,A |
776 | LD C,A |
757 | RET |
777 | RET |
758 | 778 | ||
759 | ;----FUNC13---- |
779 | ;----FUNC13---- |
760 | ;ОТДАТЬ СПЕКУ КОЛ-ВО НАЙДЕННОГО |
780 | ; отдать спеку количество найденного |
761 | GETKMP3 LD HL,(KOLWMP3) |
781 | GET_COUNT_FILES LD HL,(COUNT_MP3) |
762 | JR GET_RZN |
782 | JR GET_RZN |
763 | 783 | ||
764 | ;----FUNC0D---- |
784 | ;----FUNC0D---- |
765 | ;ОТДАТЬ СПЕКУ НОМЕР ТЕКУЩЕГО ФАЙЛА |
785 | ; отдать спеку номер текущего файла |
766 | GET_TEK LD HL,(NUMFILE) |
786 | GET_CURRENT LD HL,(NUMFILE) |
767 | JR GET_RZN |
787 | JR GET_RZN |
768 | 788 | ||
769 | ;----FUNC0C---- |
789 | ;----FUNC0C---- |
770 | ;В HL СОДЕРЖИМОЕ БИТОВ УСТАНОВОК |
790 | ; в HL содержимое битов установок |
771 | GET_VTS LD HL,(GETVTSL) |
791 | GET_VTS LD HL,(GETVTSL) |
772 | 792 | ||
773 | ;СБРАСЫВАЕМ СОДЕРЖИМОЕ HL НА СПЕК |
793 | ; сбрасываем содержимое HL на спек |
774 | GET_RZN LD A,H |
794 | GET_RZN LD A,H |
775 | OUT (ZXDATWR),A |
795 | OUT (ZXDATWR),A |
776 | CALL WDN |
796 | CALL WDN |
777 | LD A,L |
797 | LD A,L |
778 | 798 | ||
779 | ;СБРОСИТЬ НА СПЕК БАЙТ A |
799 | ; сбросить на спек байт A |
780 | GET_BYT OUT (ZXDATWR),A |
800 | GET_BYT OUT (ZXDATWR),A |
781 | 801 | ||
782 | ;ЖДЕМ ПОКА СПЕК ЗАБЕРЕТ БАЙТ ИЗ ПОРТА |
802 | ; ждем пока спек заберет байт из порта |
783 | WDN LD B,0 |
803 | WDN LD B,0 |
784 | WDN1 DEC B |
804 | .L1 DEC B |
785 | RET Z |
805 | RET Z |
786 | IN A,(ZXSTAT) |
806 | IN A,(ZXSTAT) |
787 | RLA |
807 | RLA |
788 | JR C,WDN1 |
808 | JR C,.L1 |
789 | RET |
809 | RET |
790 | 810 | ||
791 | ;ЖДЕМ ПОКА СПЕК ДАСТ БАЙТ В ПОРТ |
811 | ; ждем пока спек даст байт в порт |
792 | WDY IN A,(ZXSTAT) |
812 | WDY IN A,(ZXSTAT) |
793 | RLA |
813 | RLA |
794 | JR NC,WDY |
814 | JR NC,WDY |
795 | RET |
815 | RET |
796 | 816 | ||
797 | ;ИГРАТЬ НА MP3-ДЕКОДЕР 1 СЕКТОР |
817 | ; играть на MP3-декодер 1 сектор |
798 | PLAYMP3 LD A,(FLAGS) |
818 | PLAYMP3 LD A,(FLAGS) |
799 | BIT 0,A |
819 | BIT B_PLAY_STOP,A |
800 | RET Z |
820 | RET Z |
801 | LD A,(GETVTSH) |
821 | LD A,(FILE_TYPE) |
802 | BIT 1,A |
822 | CP FILE_MP3 |
803 | RET NZ |
823 | RET NZ |
- | 824 | ; ⮫쪮 MP3 |
|
804 | LD A,Nextsec |
825 | LD A,Nextsec |
805 | CALL COM_FAT |
826 | CALL COM_FAT |
806 | LD H,A |
827 | LD H,A |
807 | EX AF,AF' |
828 | EX AF,AF' |
808 | LD A,H |
829 | LD A,H |
809 | CP 0x80 |
830 | CP 0x80 |
810 | JP Z,SD_LOST |
831 | JP Z,SD_LOST |
811 | EX AF,AF' |
832 | EX AF,AF' |
812 | RET NZ ;ФАЙЛО НЕ КОНЧИЛОСЬ, ВЫХОДИМ |
833 | RET NZ ; файло не кончилось, выходим |
813 | LD A,Zer2mp3 |
834 | LD A,Zer2mp3 |
814 | CALL COM__SD |
835 | CALL COM__SD |
815 | JP NEXTPL ;ФАЙЛ КОНЧИЛСЯ, ЗАВЕРШАЕМ НУЛЯМИ |
836 | JP NEXT_TRACK ; файл кончился, завершаем нулями |
816 | ;И ПЕРЕХОДИМ НА СЛЕДУЮЩИЙ ФАЙЛ |
837 | ; и переходим на следующий файл |
817 | 838 | ||
818 | ;ОТКРЫТИЕ ФАЙЛА И ИНИТ ДЕКОДЕРА |
839 | ; открытие файла и инит декодера |
819 | INIPLAY PUSH BC |
840 | INIPLAY PUSH BC |
820 | CALL MOD_OFF |
841 | CALL MOD_OFF |
821 | CALL SRESMP3 ;СБРОС ЧИПА В ЗАВИСИМОСТИ ОТ УСТАНОВОК |
842 | CALL RESET_MP3 ; сброс чипа в зависимости от установок |
822 | LD HL,(GETVTSL) |
843 | LD HL,(GETVTSL) |
823 | BIT 4,H ;ЕСЛИ СБРОС =HARD, ТО ОБНУЛЯЕМ ВСЕ |
844 | BIT B_TYPE_RESET,H ; если сброс =HARD, то обнуляем все |
824 | ;КРОМЕ БИТА УСТАНОВЛЕННОГО MP3 ЧИПА |
- | |
825 | ;И ТИПА СБРОСА ЭТОГО ЧИПА |
845 | ; кроме типа сброса этого чипа |
826 | JR Z,INIPLA1 |
846 | JR Z,.L1 |
827 | LD L,0 |
847 | LD L,0 |
828 | LD A,H |
848 | LD A,H |
829 | AND %00011000 |
849 | AND M_TYPE_RESET |
830 | LD H,A |
850 | LD H,A |
831 | INIPLA1 SET 5,H ;ВКЛЮЧАЕМ БИТ 5, ПОШОЛ НОВЫЙ ФАЙЛ |
851 | .L1 SET B_NEW_FILE,H ; включаем бит 5, пошол новый файл |
832 | POP BC |
852 | POP BC |
833 | PUSH BC |
853 | PUSH BC |
834 | PUSH HL |
854 | PUSH HL |
835 | LD A,Openfil |
855 | LD A,Openfil |
836 | CALL COM_FAT ;ОТКРЫВАЕМ НОВЫЙ ФАЙЛ |
856 | CALL COM_FAT ; открываем новый файл |
837 | CP 0x80 |
857 | CP 0x80 |
838 | JP Z,SD_LOST |
858 | JP Z,SD_LOST |
839 | AND 2 |
- | |
840 | LD E,A |
- | |
841 | POP HL |
859 | POP HL |
842 | LD A,H |
- | |
843 | AND %11111101 |
- | |
844 | OR E |
- | |
845 | LD H,A ;БИТ 1=1-MOD, =0-MP3 |
- | |
846 | LD (GETVTSL),HL |
860 | LD (GETVTSL),HL |
- | 861 | LD (FILE_TYPE),A |
|
847 | BIT 1,H |
862 | CP FILE_MP3 |
848 | LD E,FREQ20 ;20МГЦ ДЛЯ ИГРАНИЯ MOD |
863 | LD E,FREQ20 ; 20 Мгц для играния MOD |
849 | JR NZ,INIPLA2 |
864 | JR NZ,.L2 |
850 | LD E,FREQ12 ;12МГЦ ДЛЯ ИГРАНИЯ MP3 |
865 | LD E,FREQ12 ; 12 Мгц для играния MP3 |
851 | INIPLA2 LD A,Freqnc |
866 | .L2 LD A,Freqnc |
852 | CALL COM__SD |
867 | CALL COM__SD |
853 | LD HL,FLAGS |
868 | LD HL,FLAGS |
854 | RES 2,(HL) |
869 | RES B_FILE_LOAD,(HL) |
855 | SET 1,(HL) |
- | |
856 | LD HL,0x0400 |
870 | LD HL,0x0400 |
857 | LD (TIMEOUT),HL |
871 | LD (TIMEOUT),HL |
858 | POP BC |
872 | POP BC |
859 | LD HL,BUF_LNG |
873 | LD HL,BUF_LNG |
860 | LD A,Getlong |
874 | LD A,Getlong |
861 | CALL COM_FAT ;ЧТЕНИЕ В БУФЕР ДЛИННОГО ИМЕНИ ФАЙЛА |
875 | CALL COM_FAT ; чтение в буфер длинного имени файла |
862 | MOD_OFF XOR A |
876 | MOD_OFF XOR A |
863 | OUT (VOL1),A |
877 | OUT (VOL1),A |
864 | OUT (VOL2),A |
878 | OUT (VOL2),A |
865 | OUT (VOL3),A |
879 | OUT (VOL3),A |
866 | OUT (VOL4),A |
880 | OUT (VOL4),A |
Line 871... | Line 885... | ||
871 | OUT (VOL8),A |
885 | OUT (VOL8),A |
872 | RET |
886 | RET |
873 | 887 | ||
874 | SD_LOST LD SP,ISTACK |
888 | SD_LOST LD SP,ISTACK |
875 | LD HL,FLAGS |
889 | LD HL,FLAGS |
876 | SET 7,(HL) |
890 | SET B_SD_LOST,(HL) |
877 | CALL PAUSEPL |
891 | CALL PAUSE |
878 | JP CON_MOD |
892 | JP CONTINUE_MOD |
879 | 893 | ||
880 | CMP_INT PUSH AF |
894 | CMP_INT PUSH AF |
881 | LD A,R |
895 | LD A,R |
882 | JP PE,CMP_INT1 |
896 | JP PE,CMP_INT1 |
883 | LD A,R |
897 | LD A,R |
Line 886... | Line 900... | ||
886 | LD A,1 |
900 | LD A,1 |
887 | CMP_INT2 LD (INT_MODE),A |
901 | CMP_INT2 LD (INT_MODE),A |
888 | POP AF |
902 | POP AF |
889 | RET |
903 | RET |
890 | 904 | ||
891 | COM__SD include "sd4ngs.a80" ;ДРАЙВЕР SD КАРТЫ |
905 | COM__SD include "sd_on_ngs.a80" ; драйвер SD карты |
892 | COM_FAT include "fat4ngs.a80" ;ДРАЙВЕР FAT |
906 | COM_FAT include "fat_on_ngs.a80" ; драйвер FAT |
893 | 907 | ||
894 | SET7XOR PUSH HL |
908 | SET7XOR PUSH HL |
895 | LD HL,0 |
909 | LD HL,0 |
896 | ADD HL,SP |
910 | ADD HL,SP |
897 | EXX |
911 | EXX |
898 | LD A,0x10 |
912 | LD A,0x10 |
899 | LD SP,0x7F00 |
913 | LD SP,0x7F00 |
900 | LD BC,0xA97E |
914 | LD BC,0xA97E ; LD A,(HL):XOR C |
901 | LD DE,0x2C77 |
915 | LD DE,0x2C77 ; LD (HL),A:INC L |
- | 916 | SPEDI1 |
|
902 | SPEDI1 REPT 16 |
917 | REPT 16 |
903 | PUSH DE |
918 | PUSH DE |
904 | PUSH BC |
919 | PUSH BC |
905 | ENDM |
920 | ENDM |
906 | DEC A |
921 | DEC A |
907 | JP NZ,SPEDI1 |
922 | JP NZ,SPEDI1 |
Line 920... | Line 935... | ||
920 | ADD HL,HL |
935 | ADD HL,HL |
921 | ADD HL,HL |
936 | ADD HL,HL |
922 | ADD HL,BC |
937 | ADD HL,BC |
923 | LD (KUDAXOR),HL |
938 | LD (KUDAXOR),HL |
924 | EXX |
939 | EXX |
925 | LD A,(SIZ_MOD) |
940 | LD A,(SIZE_PAGES_MOD) |
926 | LD B,A |
941 | LD B,A |
927 | LD C,0x80 |
942 | LD C,0x80 |
928 | RET |
943 | RET |
929 | 944 | ||
930 | SPEDI2 INC H |
945 | SPEDI2 INC H |
Line 933... | Line 948... | ||
933 | LD A,(DE) |
948 | LD A,(DE) |
934 | LD H,0x80 |
949 | LD H,0x80 |
935 | OUT (MPAG),A |
950 | OUT (MPAG),A |
936 | DEC B |
951 | DEC B |
937 | JP NZ,0x7B00 |
952 | JP NZ,0x7B00 |
938 | LD A,(PG_PLAYER) |
953 | LD A,(PAGE_PLAYER) |
939 | OUT (MPAG),A |
954 | OUT (MPAG),A |
940 | JP END7XOR |
955 | JP END7XOR |
941 | ESPEDI2 |
956 | ESPEDI2 |
942 | 957 | ||
943 | SPEDI3 LD A,(PG_PLAYER) |
958 | SPEDI3 LD A,(PAGE_PLAYER) |
944 | OUT (MPAG),A |
959 | OUT (MPAG),A |
945 | CALL SET7XOR |
960 | CALL SET7XOR |
946 | LD A,(DE) |
961 | LD A,(DE) |
947 | PUSH HL |
962 | PUSH HL |
948 | OUT (MPAG),A |
963 | OUT (MPAG),A |
Line 954... | Line 969... | ||
954 | LD HL,0 |
969 | LD HL,0 |
955 | ADD HL,SP |
970 | ADD HL,SP |
956 | LD SP,0x8000 |
971 | LD SP,0x8000 |
957 | LD DE,0x8080 |
972 | LD DE,0x8080 |
958 | LD B,0x40 |
973 | LD B,0x40 |
- | 974 | E7X1 |
|
959 | E7X1 REPT 64 |
975 | REPT 64 |
960 | PUSH DE |
976 | PUSH DE |
961 | ENDM |
977 | ENDM |
962 | DJNZ E7X1 |
978 | DJNZ E7X1 |
963 | LD SP,HL |
979 | LD SP,HL |
964 | EXX |
980 | EXX |
965 | JP ESPEED |
981 | JP ESPEED |
966 | 982 | ||
967 | PATCH LD A,(NUMPG) |
983 | PATCH LD A,(NUMPG) |
968 | OR 0x3F |
984 | OR %00111111 |
969 | LD (PG_PLAYER),A ;СТРАНИЦА РАСПОЛОЖЕНИЯ ПЛЕЕРА |
985 | LD (PAGE_PLAYER),A ; страница расположения плеера |
970 | IN A,(GSCFG0) |
986 | IN A,(GSCFG0) |
971 | RES B_RAMRO,A |
987 | RES B_RAMRO,A |
972 | SET B_EXPAG,A |
988 | SET B_EXPAG,A |
973 | OUT (GSCFG0),A |
989 | OUT (GSCFG0),A |
974 | LD A,0x80 |
990 | LD A,0x80 |
Line 998... | Line 1014... | ||
998 | LD C,L |
1014 | LD C,L |
999 | LD H,D |
1015 | LD H,D |
1000 | LD L,E |
1016 | LD L,E |
1001 | LD (HL),B |
1017 | LD (HL),B |
1002 | INC DE |
1018 | INC DE |
1003 | LDIR ;ЗАЧИСТКА ХВОСТОВ В ПЗУ |
1019 | LDIR ; зачистка хвостов в ПЗУ |
1004 | LD HL,TEKADR1 |
1020 | LD HL,TEKADR1 |
1005 | LD DE,EMPTY2 |
1021 | LD DE,EMPTY2 |
1006 | LD BC,P_END-LD_MOD |
1022 | LD BC,P_END - LD_MOD |
1007 | LDIR ;ПЕРЕНОС ЗАГРУЗЧИКА И ОБРАБОТЧИКА |
1023 | LDIR ; перенос загрузчика и обработчика |
1008 | ;ОКОНЧАНИЯ ПРОИГРЫВАЕМОГО ФАЙЛА |
1024 | ; окончания проигрываемого файла |
1009 | LD HL,P_START |
1025 | LD HL,P_START |
1010 | LD DE,EMPTY1 |
1026 | LD DE,EMPTY1 |
1011 | LD BC,P__END-P_00 |
1027 | LD BC,P__END - P_00 |
1012 | LDIR ;ПЕРЕНОС УПРАВЛЕНИЯ MP3 ПЛЕЕРОМ В ПЗУ |
1028 | LDIR ; перенос управления MP3 плеером в ПЗУ |
1013 | LD HL,(NUMPG) |
1029 | LD HL,(NUMPG) |
1014 | LD H,0x40 |
1030 | LD H,0x40 |
1015 | DEC L |
1031 | DEC L |
1016 | LD (HL),1 |
1032 | LD (HL),1 |
1017 | INC L |
1033 | INC L |
1018 | LD (HL),0 ;ОТРУБАНИЕ ПОСЛЕДНЕЙ СТРАНИЦЫ ОЗУ |
1034 | LD (HL),0 ; отрубание последней страницы ОЗУ |
1019 | ;ОТ ОСНОВНОГО СПИСКА СТРАНИЦ |
1035 | ; от основного списка страниц |
1020 | LD HL,NUMPG |
1036 | LD HL,NUMPG |
1021 | DEC (HL) |
1037 | DEC (HL) |
1022 | LD HL,P_00 |
1038 | LD HL,P_00 |
1023 | LD (0x0300+(0x1F*2)),HL ;ПАТЧ КОМАНДЫ 1F |
1039 | LD (0x0300 + (0x1F * 2)),HL ; патч команды 1F |
1024 | LD HL,COMMFF |
1040 | LD HL,COMMFF |
1025 | LD (0x0300+(0x2F*2)),HL ;ПАТЧ КОМАНДЫ FF |
1041 | LD (0x0300 + (0x2F * 2)),HL ; патч команды FF |
1026 | IN A,(GSCFG0) |
1042 | IN A,(GSCFG0) |
1027 | SET B_RAMRO,A |
1043 | SET B_RAMRO,A |
1028 | RES B_EXPAG,A |
1044 | RES B_EXPAG,A |
1029 | OUT (GSCFG0),A |
1045 | OUT (GSCFG0),A |
1030 | LD A,(PG_PLAYER) |
1046 | LD A,(PAGE_PLAYER) |
1031 | OUT (MPAG),A |
1047 | OUT (MPAG),A |
1032 | 1048 | ||
1033 | ;СОЗДАНИЕ СПИСКА МАЛЫХ СТРАНИЦ ДЛЯ ЗАГРУЗЧИКА ФАЙЛА В ПАМЯТЬ |
1049 | ; создание списка малых страниц для загрузчика файла в память |
1034 | LISTPAG LD HL,0x4000 |
1050 | LISTPAG LD HL,0x4000 |
1035 | LD DE,BUF_PAG |
1051 | LD DE,BUF_PAG |
1036 | LSTPAG1 LD A,(HL) |
1052 | .L1 LD A,(HL) |
1037 | ADD A,A |
1053 | ADD A,A |
1038 | RRCA |
1054 | RRCA |
1039 | LD (DE),A |
1055 | LD (DE),A |
1040 | RLCA |
1056 | RLCA |
1041 | INC DE |
1057 | INC DE |
Line 1044... | Line 1060... | ||
1044 | LD (DE),A |
1060 | LD (DE),A |
1045 | INC DE |
1061 | INC DE |
1046 | INC HL |
1062 | INC HL |
1047 | LD A,(HL) |
1063 | LD A,(HL) |
1048 | DEC A |
1064 | DEC A |
1049 | JR NZ,LSTPAG1 |
1065 | JR NZ,.L1 |
1050 | RET |
1066 | RET |
1051 | 1067 | ||
1052 | TEKADR1 |
1068 | TEKADR1 |
1053 | PHASE EMPTY2 |
1069 | PHASE EMPTY2 |
1054 | 1070 | ||
1055 | ;ГРУЗИЛКА ФАЙЛА В ПАМЯТЬ NEOGS |
1071 | ; грузилка файла в память NEOGS |
1056 | LD_MOD IN A,(GSCFG0) |
1072 | LD_MOD IN A,(GSCFG0) |
1057 | AND 0xCF |
1073 | AND %11001111 |
1058 | OUT (GSCFG0),A |
1074 | OUT (GSCFG0),A |
1059 | LD HL,FLAGS |
1075 | LD HL,FLAGS |
1060 | SET 2,(HL) |
1076 | SET B_FILE_LOAD,(HL) |
1061 | CALL MOD_OFF |
1077 | CALL MOD_OFF |
1062 | LD A,Loadfil |
1078 | LD A,Loadfil |
1063 | CALL COM_FAT |
1079 | CALL COM_FAT |
1064 | CP 0x80 |
1080 | CP 0x80 |
1065 | JP Z,SD_LOST |
1081 | JP Z,SD_LOST |
1066 | LD (SIZ_MOD),A |
1082 | LD (SIZE_PAGES_MOD),A |
1067 | LD A,(CPAGE) |
1083 | LD A,(CPAGE) |
1068 | OUT (MPAG),A |
1084 | OUT (MPAG),A |
1069 | LD A,1 |
1085 | LD A,1 |
1070 | LD (CNTMOD),A |
1086 | LD (CNTMOD),A |
1071 | LD (CURMOD),A |
1087 | LD (CURMOD),A |
1072 | CALL LDMOD |
1088 | CALL LDMOD |
1073 | LD A,(MTSNGSZ) |
1089 | LD A,(MTSNGSZ) |
1074 | LD (SIZ_PAT),A |
1090 | LD (SIZE_PATTERN_MOD),A |
1075 | LD BC,0x0100 |
1091 | LD BC,0x0100 |
1076 | CALL PLAYMOD |
1092 | CALL PLAYMOD |
1077 | IN A,(GSCFG0) |
1093 | IN A,(GSCFG0) |
1078 | OR 0x10 |
1094 | OR %00010000 |
1079 | OUT (GSCFG0),A |
1095 | OUT (GSCFG0),A |
1080 | RET |
1096 | RET |
1081 | 1097 | ||
1082 | ESPEED XOR A |
1098 | ESPEED XOR A |
1083 | LD (CPAGE),A |
1099 | LD (CPAGE),A |
Line 1089... | Line 1105... | ||
1089 | CP (HL) |
1105 | CP (HL) |
1090 | JP C,NXTMOD1 |
1106 | JP C,NXTMOD1 |
1091 | LD (MTSNGPS),A |
1107 | LD (MTSNGPS),A |
1092 | RET |
1108 | RET |
1093 | 1109 | ||
1094 | NXTMODR LD A,(PG_PLAYER) |
1110 | NXTMODR LD A,(PAGE_PLAYER) |
1095 | OUT (MPAG),A |
1111 | OUT (MPAG),A |
1096 | CALL NEXTPL |
1112 | CALL NEXT_TRACK |
1097 | LD A,(GETVTSH) |
1113 | LD A,(FILE_TYPE) |
1098 | BIT 1,A |
1114 | CP FILE_MP3 |
1099 | JP NZ,LD_MOD |
1115 | JP NZ,LD_MOD |
1100 | POP HL |
1116 | POP HL |
1101 | JP OPROS |
1117 | JP OPROS |
1102 | 1118 | ||
1103 | COMMFF IN A,(ZXDATRD) |
1119 | COMMFF IN A,(ZXDATRD) |
- | 1120 | OUT (CLRCBIT),A |
|
1104 | ADD A,LOW (FLAGS) |
1121 | ADD A,LOW (FLAGS) |
1105 | LD IYL,A |
1122 | LD IYL,A |
1106 | LD A,HIGH (FLAGS) |
1123 | LD A,HIGH (FLAGS) |
1107 | ADC A,0 |
1124 | ADC A,0 |
1108 | LD IYH,A |
1125 | LD IYH,A |
1109 | LD A,(IY+0) |
1126 | LD A,(IY+0) |
1110 | OUT (ZXDATWR),A |
1127 | OUT (ZXDATWR),A |
1111 | OUT (CLRCBIT),A |
- | |
1112 | JP COMINT_ |
1128 | JP COMINT_ |
1113 | P_END |
1129 | P_END |
1114 | DEPHASE |
1130 | DEPHASE |
1115 | P_START |
1131 | P_START |
1116 | PHASE EMPTY1 |
1132 | PHASE EMPTY1 |
1117 | 1133 | ||
1118 | ;ОСНОВНОЙ ЦИКЛ ОБЩЕНИЯ СО СПЕКОМ |
1134 | ; основной цикл общения со спеком |
1119 | P_00 JP OPROS3 |
1135 | P_00 JP OPROS.L3 |
1120 | 1136 | ||
1121 | NXTMOD1 LD A,(PG_PLAYER) |
1137 | NXTMOD1 LD A,(PAGE_PLAYER) |
1122 | OUT (MPAG),A |
1138 | OUT (MPAG),A |
1123 | CALL NEXTPL |
1139 | CALL NEXT_TRACK |
1124 | ;ПРОДОЛЖИТЬ ИГРАТЬ MOD |
1140 | ; продолжить играть MOD |
1125 | CON_MOD LD A,(GETVTSH) |
1141 | CONTINUE_MOD LD A,(FILE_TYPE) |
1126 | BIT 1,A |
1142 | CP FILE_MP3 |
1127 | JR Z,OPROS |
1143 | JR Z,OPROS |
1128 | LD A,(FLAGS) |
1144 | LD A,(FLAGS) |
1129 | BIT 0,A |
1145 | BIT B_PLAY_STOP,A |
1130 | JR Z,CONROM |
1146 | JR Z,CONROM |
1131 | BIT 2,A |
1147 | BIT B_FILE_LOAD,A |
1132 | CALL Z,LD_MOD |
1148 | CALL Z,LD_MOD |
1133 | CONROM LD A,(CPAGE) |
1149 | CONROM LD A,(CPAGE) |
1134 | OUT (MPAG),A |
1150 | OUT (MPAG),A |
1135 | JP COMINT |
1151 | JP COMINT |
1136 | 1152 | ||
1137 | OPROS IN A,(ZXSTAT) |
1153 | OPROS IN A,(ZXSTAT) |
1138 | RRA |
1154 | RRA |
1139 | JR C,OPROS1 |
1155 | JR C,.L1 |
1140 | CALL PLAYMP3 |
1156 | CALL PLAYMP3 |
1141 | JR OPROS |
1157 | JR OPROS |
1142 | 1158 | ||
1143 | OPROS1 IN A,(ZXCMD) |
1159 | .L1 IN A,(ZXCMD) |
1144 | CP 0x1F |
1160 | CP 0x1F |
1145 | JR NZ,CONROM |
1161 | JR NZ,CONROM |
1146 | OPROS3 IN A,(ZXDATRD) |
1162 | .L3 IN A,(ZXDATRD) |
1147 | OUT (CLRCBIT),A |
1163 | OUT (CLRCBIT),A |
1148 | AND A |
1164 | AND A |
1149 | JR Z,OPROS2 |
1165 | JR Z,.L2 |
1150 | LD H,A |
1166 | LD H,A |
1151 | LD A,(REJIMGS) |
1167 | LD A,(STATUS) |
1152 | CP 0x78 |
1168 | CP 0x78 |
1153 | JR NC,OPROS |
1169 | JR NC,OPROS |
1154 | LD A,H |
1170 | LD A,H |
1155 | OPROS2 CP LOW (END_TAB-TABFUNC)/2+1 |
1171 | .L2 CP LOW (END_TAB-TABFUNC) / 2 + 1 |
1156 | JR NC,OPROS |
1172 | JR NC,OPROS |
1157 | LD HL,CON_MOD |
1173 | LD HL,CONTINUE_MOD |
1158 | PUSH HL |
1174 | PUSH HL |
1159 | ADD A,A |
1175 | ADD A,A |
1160 | ADD A,LOW (TABFUNC) |
1176 | ADD A,LOW (TABFUNC) |
1161 | LD L,A |
1177 | LD L,A |
1162 | LD A,HIGH (TABFUNC) |
1178 | LD A,HIGH (TABFUNC) |
1163 | ADC A,0 |
1179 | ADC A,0 |
1164 | LD H,A |
1180 | LD H,A |
1165 | LD A,(PG_PLAYER) |
1181 | LD A,(PAGE_PLAYER) |
1166 | OUT (MPAG),A |
1182 | OUT (MPAG),A |
1167 | LD A,(HL) |
1183 | LD A,(HL) |
1168 | INC HL |
1184 | INC HL |
1169 | LD H,(HL) |
1185 | LD H,(HL) |
1170 | LD L,A |
1186 | LD L,A |
Line 1172... | Line 1188... | ||
1172 | P__END |
1188 | P__END |
1173 | DEPHASE |
1189 | DEPHASE |
1174 | 1190 | ||
1175 | DUPL 0x100-LOW ($),0 |
1191 | DUPL 0x100-LOW ($),0 |
1176 | 1192 | ||
- | 1193 | INIT_VAR $ |
|
1177 | BUF_LNG EQU $ ;0x100 БУФЕР ДЛЯ ПЕРЕКОД. ДЛИННОГО ИМЕНИ |
1194 | SETVAR BUF_LNG, 0x100 ; буфер для перекод. длинного имени |
1178 | BUFTDIR EQU BUF_LNG+0x100 ;0x100 БУФЕР ИМЕНИ ТЕКУЩЕЙ DIR |
1195 | SETVAR BUFTDIR, 0x100 ; буфер имени текущей DIR |
1179 | BUF_PAG EQU BUFTDIR+0x100 ;0x80 ТАБЛИЦА РАСШИРЕННЫХ СТРАНИЦ |
1196 | SETVAR BUF_PAG, 0x100 ; таблица расширенных страниц |
1180 | B512BAS EQU BUF_PAG+0x100 |
1197 | SETVAR B512BAS, 0 |