Subversion Repositories ngs

Rev

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