Subversion Repositories ngs

Rev

Rev 165 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

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