;LAST UPDATE: 24.05.2013 savelij
;version 06.03.2009
;КОД ДЛЯ НГС
include macros.a80
include ports_ngs.a80 ;INCL "PORTSNGS"
BUF_LNG EQU 0X4000
;БУФЕР ДЛЯ ПЕРЕКОД. ДЛИННОГО ИМЕНИ
GSSTEK EQU 0X41DF
;ВЕРШИНА СТЕКА
;НЕКОТОРЫЕ ПЕРЕМЕННЫЕ
REJIMGS EQU 0X41E0
;1 КОД ОТВЕТА
KOLWMP3 EQU REJIMGS+1
;2 КОЛИЧЕСТВО MP3
CALBFAT EQU KOLWMP3+2
;1 КАЛИБР FAT
BUFTIME EQU CALBFAT+1
;8 БУФЕР ДЛЯ ТЕКСТА
;АДРЕС УКЛАДКИ ТАБЛИЦ (DIR&MP3)
FORFILE EQU 0X8000
;СТРАНИЦЫ ДОЛЖНЫ БЫТЬ ТОЛЬКО НЕЧЕТНЫМИ
PG4MP3 EQU 3
;СТРАНИЦА УКЛАДКИ ОПИСАТЕЛЕЙ ФАЙЛОВ
;ДЕФОЛТНАЯ СТРАНИЧКА
PG4DIR EQU 5
;СТРАНИЦА УКЛАДКИ ОПИСАТЕЛЕЙ DIR
;ВРЕМЕННАЯ СТРАНИЧКА
ORG 0X4600;,0X8000
;КОМПИЛЯЦИЯ ПОД АДРЕС ДЛЯ NeoGS 0X4600
;ОТКОМПИЛЕННОЕ УКЛАДАЕМ С АДРЕСА 0X8000
START DI
LD A,PG4MP3
OUT (MPAG),A
;ВКЛЮЧИЛИ ДЕФОЛТНУЮ СТРАНИЦУ
LD A,6
CALL COM__SD
AND A
;ОПРЕДЕЛЯЕМ GS/NeoGS
JR Z,INI_MP3
LD A,0XCC
JR START4
;КОД ОШИБКИ =GS
INI_MP3 LD A,8
CALL COM__SD
;ИНИЦИАЛИЗАЦИЯ MP3 ЧИПА
INI__SD LD SP,GSSTEK
IN A,(DPORT1)
START2 XOR A
CALL COM__SD
AND A
;ИНИЦИАЛИЗАЦИЯ SD КАРТЫ
JR Z,START1
LD A,0XEE
LD (CALBFAT),A
JR START4
;КОД ОШИБКИ =SD КАРТА НЕ НАЙДЕНА
START1 XOR A
CALL COM_FAT
;ИНИЦИАЛИЗАЦИЯ FAT
LD (CALBFAT),A
INC A
JR NZ,START3
LD A,0XDD
JR START4
;КОД ОШИБКИ =FAT НЕ НАЙДЕН
START3 CALL CP_XB
CALL RTYPEVS
LD A,3
CALL COM_FAT
;ПОИСК ВСЕХ ДИРЕКТОРИЙ
LD A,4
CALL COM_FAT
;ПОИСК ВСЕХ ФАЙЛОВ ПО МАСКЕ
LD (KOLWMP3),HL
IN A,(CLRCBIT)
LD BC,0
LD (STOP_PL+1),BC
CALL PAUSEPL
;ПОСТАНОВКА НА ПАУЗУ
LD A,H
OR L
LD A,0XBB
JR Z,START4
;КОД ОШИБКИ =ФАЙЛОВ НЕ НАЙДЕНО
CALL INIPLAY
LD A,0X77
;КОД ОШИБКИ =ВСЕ ЗАМЕЧАТЕЛЬНО
START4 LD (REJIMGS),A
OUT (ZXDATWR),A
;СООБЩИЛИ СПЕКУ О РЕЗУЛЬТАТАХ ИНИТА
IN A,(DPORT1)
;ОСНОВМОЙ ЦИКЛ ОБЩЕНИЯ СО СПЕКОМ
OPROS IN A,(ZXSTAT)
RRA
JR C,OPROS1
CALL PLAYMP3
JR OPROS
OPROS1 IN A,(CLRCBIT)
IN A,(ZXCMD)
LD L,A
AND A
JR Z,OPROS2
LD A,(REJIMGS)
CP 0X78
JR NC,OPROS
LD A,L
OPROS2 CP LOW ((END_TAB-TABFUNC)/2)+1
JR NC,OPROS
ADD A,A
LD L,A
LD H,0
LD DE,TABFUNC
ADD HL,DE
LD E,(HL)
INC HL
LD D,(HL)
LD HL,OPROS
PUSH HL
EX DE,HL
JP (HL)
TABFUNC DW INI__SD ;00 ПЕРЕЗАПУСК SD
DW PREVPL ;01 ПРЕДЫДУЩИЙ ТРЕК
DW PLAY ;02 ПЛЕЙ
DW PAUSEPL ;03 ПАУЗА
DW STOP_PL ;04 СТОП
DW NEXTPL ;05 СЛЕДУЮЩИЙ ТРЕК
DW XORBASS ;06 XOR TREBLE/BASS
DW XORSURR ;07 XOR SURROUND
DW VOL_UP ;08 ГРОМКОСТЬ +
DW VOL_DN ;09 ГРОМКОСТЬ -
DW MUTE ;0A ВКЛ/ВЫКЛ ГРОМКОСТИ
DW GETTIME ;0B ОТДАТЬ ВРЕМЯ
DW GET_VTS ;0C ОТДАТЬ ПАРАМ 6-10
DW GET_TEK ;0D ОТДАТЬ ТЕК НОМЕР
DW SET_NUM ;0E ПОЛУЧИТЬ ТЕК НОМЕР
DW SRESMP3 ;0F СБРОС MP3 ДЕКОДЕРА
DW FATTYPE ;10 ТИП FAT
DW GET_LNG ;11 ОТДАТЬ ИМЯ ФАЙЛА
DW GETOPIS ;12 ОТДАТЬ ОПИСАТЕЛЬ
DW GETKMP3 ;13 ОТДАТЬ КОЛВО *.EXT
DW GON2MP3 ;14 ПРД НА MP3
DW GETDMP3 ;15 DEC ЧИСЛО ФАЙЛОВ
DW GETDTEK ;16 DEC ЧИСЛО ТЕКУЩ+1
DW SFT_HRD ;17 ПЕРЕКЛЮЧ СБРОСА
DW PREVDIR ;18 СЛЕДУЮЩИЙ DIR
DW NEXTDIR ;19 ПРЕДЫДУЩИЙ DIR
DW SETTMBR ;1A УСТ. ТЕМБРОВ
DW RUSTTBL ;1B ЧТЕНИЕ ТЕМБРОВ
DW BITRATE ;1C RD БИТРЕЙТ И ПРОЧ
DW TESTREJ ;1D ТЕСТ РЕЖИМА
END_TAB
;КОНВЕРСИЯ HDAT1,HDAT0
;ПОСЛЕ ЧТЕНИЯ BC=HDAT1, DE=HDAT0
BITRATE LD HL,0X0309
LD A,0X0A
CALL COM__SD
PUSH DE
LD HL,0X0308
LD A,0X0A
CALL COM__SD
POP BC
LD A,C
AND A
LD HL,0XA000
JP Z,GET_RZN
AND %00011000
RRCA
RRCA
RRCA
;БИТЫ ID
LD L,A
LD A,D
AND %00001100
;БИТЫ SAMPLE RATE
OR L
LD L,A
LD A,C
AND %00000110
;БИТЫ LAYER
RLCA
RLCA
RLCA
OR L
LD L,A
LD A,E
AND %11000000
;БИТЫ MODE
OR L
LD L,A
LD A,D
AND %11110000
;БИТЫ BITRATE
RRCA
RRCA
RRCA
RRCA
LD H,A
JP GET_RZN
;СБРОС НА СПЕК СОДЕРЖИМОГО HL
;ИЗМЕНЕНИЕ ТЕМБРОВ
SETTMBR CALL WDY
IN A,(ZXDATRD);ЧТЕНИЕ ПАРАМЕТРА
LD B,A;СОХРАНЯЕМ
LD A,(GET_VTS+2)
BIT 3,A;ПРОВЕРЯЕМ ТИП ЧИПА
RET Z;ДЛЯ VS1001 ВЫХОДИМ
;ДЛЯ VS1011 ПРОДОЛЖАЕМ
BIT 7,A;ПРОВЕРЯЕМ МОЖНО ЛИ
RET Z;КРУТИТЬ ТЕМБРЫ
PUSH BC;СОХРАНЯЕМ "B"
LD HL,0X0302
LD A,0X0A;ЧИТАЕМ ТЕКУЩЕЕ ЗНАЧЕНИЕ
CALL COM__SD;ТЕМБРОВ
POP BC;ВОССТАНАВЛИВАЕМ "B"
LD C,0X10;ШАГ ИЗМЕНЕНИЯ
BIT 6,B;КРУТИМ UBASS?
JR Z,STTMBR1
;МЕНЯЕМ УРОВЕНЬ BASS, БИТЫ 7-4
LD A,E
AND 0X0F
LD L,A;СОХРАНЯЕМ БИТЫ 3-0
LD A,E
AND 0XF0
BIT 7,B;КУДА КРУТИМ?
JR Z,STMB01
;УВЕЛИЧЕНИЕ
ADD A,C;УВЕЛИЧИВАЕМ НА 1
JR C,STTMBR1;МАКСИМУМ!
JR STMB02
;УМЕНЬШЕНИЕ
STMB01 SUB C;УМЕНЬШАЕМ НА 1
JR C,STTMBR1;МИНИМУМ!
STMB02 ADD A,L
LD E,A;ВЕРНУЛИ БИТЫ 3-0
STTMBR1 BIT 2,B;КРУТИМ UTREBLE?
JR Z,STTMBR2
;МЕНЯЕМ УРОВЕНЬ TREBLE, БИТЫ 7-4
LD A,D
AND 0X0F
LD L,A;СОХРАНЯЕМ БИТЫ 3-0
LD A,D
AND 0XF0
BIT 3,B;КУДА КРУТИМ?
JR Z,STMB03
;УВЕЛИЧЕНИЕ
ADD A,C
JR C,STTMBR2;МАКСИМУМ!
JR STMB04
;УМЕНЬШЕНИЕ
STMB03 SUB C
JR C,STTMBR3;МИНИМУМ!
STMB04 ADD A,L
LD D,A;ВЕРНУЛИ БИТЫ 3-0
STTMBR2 BIT 4,B;КРУТИМ FBASS?
JR Z,STTMBR3
;ИЗМЕНЕНИЕ ЧАСТОТЫ BASS, БИТЫ 3-0
LD A,E
AND 0XF0
LD L,A;СОХРАНЯЕМ БИТЫ 7-4
LD A,E
AND 0X0F
BIT 5,B;КУДА КРУТИМ?
JR Z,STMB05
;УВЕЛИЧЕНИЕ
INC A
CP 0X10
JR NC,STTMBR3;МАКСИМУМ!
JR STMB06
STMB05 AND A
JR Z,STTMBR3;МИНИМУМ!
DEC A
STMB06 ADD A,L
LD E,A;ВЕРНУЛИ БИТЫ 7-4
STTMBR3 BIT 0,B;КРУТИМ FTREBLE?
JR Z,WRTMBR
;ИЗМЕНЕНИЕ ЧАСТОТЫ TREBLE, БИТЫ 3-0
LD A,D
AND 0XF0
LD L,A;СОХРАНЯЕМ БИТЫ 7-4
LD A,D
AND 0X0F
BIT 1,B;КУДА КРУТИМ?
JR Z,STBM07
;УВЕЛИЧЕНИЕ
INC A
CP 0X10
JR NC,WRTMBR;МАКСИМУМ!
JR STBM08
;УМЕНЬШЕНИЕ
STBM07 AND A
JR Z,$+3;МИНИМУМ!
DEC A
STBM08 ADD A,L
LD D,A;ВЕРНУЛИ БИТЫ 7-4
WRTMBR LD HL,0X0202
LD A,0X0A
JP COM__SD
;ЗАПИСАЛИ УСТАНОВКИ ВЗАД
;ОТДАЧА БАЙТА ТИПА FAT
FATTYPE LD A,(CALBFAT)
JP GET_BYT
;ОПРЕДЕЛЕНИЕ УСТАНОВЛЕННОГО ЧИПА
RTYPEVS LD A,0X0A
LD HL,0X0301
CALL COM__SD
LD A,E
RRCA
AND 8
LD E,A
LD A,(GET_VTS+2)
AND 0XF7
OR E
LD (GET_VTS+2),A
RET
;ОТВЕТ НА ЗАПРОС КАКОЙ КОД РАБОТАЕТ
TESTREJ IN A,(CLRCBIT)
LD A,(ZXDATRD)
LD A,(REJIMGS)
OUT (ZXDATWR),A
RET
;ПЕРЕКЛЮЧЕНИЕ ТИПА СБРОСА
SFT_HRD LD HL,GET_VTS+2
LD A,0X10
XOR (HL)
LD (HL),A
LD A,8
BIT 4,(HL)
JR NZ,$+4
LD A,0X0B
LD (SRESMP3+1),A
RET
;СБРОС MP3 ЧИПА
SRESMP3 LD A,0X0B
JP COM__SD
;ОСТАНОВКА ПРОИГРЫВАНИЯ
STOP_PL LD BC,0
CALL PAUSEPL
JP INIPLAY
;ПАУЗА ВОСПРОИЗВЕДЕНИЯ
PAUSEPL LD A,0XC9
LD (PLAYMP3),A
RET
;ЗАПУСК ВОСПРОИЗВЕДЕНИЯ
PLAY LD HL,(KOLWMP3)
LD A,H
OR L
RET Z
XOR A
JR PAUSEPL+2
;ПЕРЕХОД НА СЛЕДУЩИЙ ПЕСНЯК
NEXTPL LD BC,(STOP_PL+1)
INC BC
LD HL,(KOLWMP3)
LD A,H
OR L
RET Z
AND A
SBC HL,BC
JR NZ,$+5
LD BC,0
LD (STOP_PL+1),BC
JP INIPLAY
;ПЕРЕХОД НА ПРЕДЫДУЩИЙ ПЕСНЯК
PREVPL LD BC,(STOP_PL+1)
LD A,B
OR C
JR NZ,PREVPL1
LD BC,(KOLWMP3)
LD A,B
OR C
RET Z
PREVPL1 DEC BC
LD (STOP_PL+1),BC
JP INIPLAY
;ПЕРЕХОД НА ПЕРВЫЙ ФАЙЛ СЛЕДУЩЕЙ DIR
NEXTDIR LD BC,(STOP_PL+1)
LD A,9
PUSH BC
CALL COM_FAT
POP HL
AND A
SBC HL,BC
RET Z
LD (STOP_PL+1),BC
JP INIPLAY
;ПЕРЕХОД НА ПЕРВЫЙ ФАЙЛ ПРЕДЫДУЩЕЙ DIR
PREVDIR LD BC,(STOP_PL+1)
LD A,8
PUSH BC
CALL COM_FAT
POP HL
AND A
SBC HL,BC
RET Z
LD (STOP_PL+1),BC
JP INIPLAY
;ПЕРЕГОНКА 512 БАЙТ СНАРУЖИ НА MP3
GON2MP3 LD HL,BUF_512
LD DE,0X0200
LD A,0X0C
JP COM__SD
;ОТДАТЬ СПЕКУ ДЛИННОЕ ИМЯ
GET_LNG CALL RDINBC
BIT 7,B
JR Z,$+6
LD BC,(STOP_PL+1)
LD HL,GET_VTS+2
RES 5,(HL)
LD HL,BUF_LNG
LD A,2
CALL COM_FAT
LD E,0
JP OUTDATA
;ВЫКЛ/ВКЛ ЗВУКА
MUTE LD HL,0X030B
LD A,0X0A
CALL COM__SD
LD A,E
CP 0XFE
JR NC,MUTEOFF
LD (MUTEOFF+1),A
LD HL,GET_VTS+2
SET 6,(HL)
LD E,0XFE
JR VOL_ALL
MUTEOFF LD E,0
LD HL,GET_VTS+2
RES 6,(HL)
JR VOL_ALL
;УВЕЛИЧЕНИЕ ГРОМКОСТИ НА ЕДИНИЦУ
VOL_UP LD HL,0X030B
LD A,0X0A
CALL COM__SD
LD A,E
AND A
RET Z
CP 0X80
RET NC
DEC E
JR VOL_ALL
;УМЕНЬШЕНИЕ ГРОМКОСТИ НА ЕДИНИЦУ
VOL_DN LD HL,0X030B
LD A,0X0A
CALL COM__SD
LD A,E
CP 0X7F
RET NC
INC E
VOL_ALL LD D,E
LD HL,0X020B
LD A,E
LD (GET_VTS+1),A
LD A,0X0A
JP COM__SD
;ПЕРЕКЛЮЧЕНИЕ VIRTUAL SURROUND
XORSURR LD B,1
XOR_ALL PUSH BC
LD HL,0X0300
LD A,0X0A
CALL COM__SD
POP BC
LD A,E
XOR B
LD E,A
LD A,(GET_VTS+2)
XOR B
LD (GET_VTS+2),A
BIT 3,A
JR Z,$+4
RES 7,E
LD HL,0X0200
LD A,0X0A
JP COM__SD
;ПЕРЕКЛЮЧЕНИЕ ТЕМБРОВ
XORBASS LD A,(GET_VTS+2)
BIT 3,A
JR NZ,XB
LD B,0X80
JR XOR_ALL
XB LD A,(GET_VTS+2)
XOR 0X80
LD (GET_VTS+2),A
CP_XB LD A,(GET_VTS+2)
BIT 7,A
JR Z,XB1
VS_TBL LD DE,0
XB2 LD HL,0X0202
LD A,0X0A
JP COM__SD
XB1 LD HL,0X0302
LD A,0X0A
CALL COM__SD
LD (VS_TBL+1),DE
LD DE,0
JR XB2
;ПОЛУЧИТЬ ВРЕМЯ ПРОИГРЫВАНИЯ
GETTIME LD HL,0X0304
LD A,0X0A
CALL COM__SD
EX DE,HL
LD DE,BUFTIME
PUSH DE
LD BC,36000
CALL SUB_BC
LD BC,3600
CALL SUB_BC
LD BC,600
CALL SUB_BC
LD BC,60
CALL SUB_BC
LD BC,10
CALL SUB_BC
LD A,0X30
ADD A,L
LD (DE),A
LD E,6
POP HL
JP OUTDATA
;СБРОС НА СПЕК СОСТОЯНИЕ ТЕМБРОВ
;В ТЕКСТОВОМ ВИДЕ
RUSTTBL LD A,(GET_VTS+2)
BIT 3,A
RET Z
LD HL,0X0302
LD A,0X0A
CALL COM__SD
LD A,D
EXX
LD DE,BUFTIME
AND 0X0F
LD L,A
LD H,0
LD BC,10
CALL SUB_BC
LD A,0X30
ADD A,L
LD (DE),A
;ПОЛОЖИЛИ ЧАСТОТУ TREBLE
INC DE
EXX
LD A,D
EXX
AND 0XF0
RRCA
RRCA
RRCA
RRCA
LD L,A
BIT 3,A
LD A,0X2B
JR Z,$+4
LD A,0X2D
LD (DE),A
INC DE
LD A,L
AND 7
ADD A,0X30
LD (DE),A
;ПОЛОЖИЛИ УРОВЕНЬ TREBLE
INC DE
EXX
LD A,E
EXX
AND 0X0F
LD L,A
LD BC,10
CALL SUB_BC
LD A,0X30
ADD A,L
LD (DE),A
;ПОЛОЖИЛИ ЧАСТОТУ BASS
INC DE
EXX
LD A,E
EXX
AND 0XF0
RRCA
RRCA
RRCA
RRCA
LD L,A
LD BC,10
CALL SUB_BC
LD A,0X30
ADD A,L
LD (DE),A
;ПОЛОЖИЛИ УРОВЕНЬ BASS
EXX
LD E,8
LD HL,BUFTIME
LD A,0X30
CP (HL)
JR NZ,$+4
LD (HL),0X20
JP OUTDATA
SUB_BC LD A,0XFF
AND A
INC A
SBC HL,BC
JR NC,$-3
ADD HL,BC
ADD A,0X30
LD (DE),A
INC DE
RET
;СБРОС НА СПЕК КОЛ-ВО НАЙДЕННЫХ ФАЙЛОВ
GETDMP3 LD HL,(KOLWMP3)
;ПЕРЕГОНЯЕМ HL В TXT И СБРАСЫВАЕМ
GETDCHR LD DE,BUFTIME
PUSH DE
LD BC,10000
CALL SUB_BC
LD BC,1000
CALL SUB_BC
LD BC,100
CALL SUB_BC
LD BC,10
CALL SUB_BC
LD A,0X30
ADD A,L
LD (DE),A
POP HL
PUSH HL
LD BC,0X0420
LD A,(HL)
CP 0X30
JR NZ,GO_OUTD
LD (HL),C
INC HL
DJNZ $-7
GO_OUTD POP HL
LD E,5
JR OUTDATA
;СБРОС НА СПЕК НОМЕРА ИГРАЕМОГО ФАЙЛА+1
;С ПЕРЕГОНКОЙ В ТЕКСТОВЫЙ ВИД
GETDTEK LD HL,(STOP_PL+1)
INC HL
JR GETDCHR
;ОТДАТЬ СПЕКУ 33 БАЙТА ОПИСАТЕЛЯ ФАЙЛА
GETOPIS CALL RDINBC
BIT 7,B
JR Z,$+6
LD BC,(STOP_PL+1)
LD A,1
CALL COM_FAT
LD BC,0X20
ADD HL,BC
LD (HL),E
SBC HL,BC
LD E,0X21
;ОТДАЕМ БАЙТИКИ, СЧЕТЧИК БАЙТА В E
OUTDATA LD A,(HL)
INC HL
OUT (ZXDATWR),A
CALL WDN
DEC E
JR NZ,OUTDATA
RET
;УСТАНОВКА НОМЕРА ФАЙЛА ДЛЯ ИГРАНИЯ
;ЕСЛИ НЕ ПРЕВЫШАЕТ КОЛ-ВО НАЙДЕННОГО-1
SET_NUM CALL RDINBC
LD HL,(KOLWMP3)
AND A
SBC HL,BC
RET C
LD (STOP_PL+1),BC
RET
;ЧИТАЕМ В BC
RDINBC CALL WDY
IN A,(ZXDATRD)
LD B,A
CALL WDY
IN A,(ZXDATRD)
LD C,A
RET
;ОТДАТЬ СПЕКУ КОЛ-ВО НАЙДЕННОГО
GETKMP3 LD HL,(KOLWMP3)
JR GET_RZN
;ОТДАТЬ СПЕКУ НОМЕР ТЕКУЩЕГО ФАЙЛА
GET_TEK LD HL,(STOP_PL+1)
JR GET_RZN
;В HL СОДЕРЖИМОЕ БИТОВ УСТАНОВОК
GET_VTS LD HL,0
;СБРАСЫВАЕМ СОДЕРЖИМОЕ HL НА СПЕК
GET_RZN LD A,H
OUT (ZXDATWR),A
CALL WDN
LD A,L
;СБРОСИТЬ НА СПЕК 2 БАЙТА HL
GET_BYT OUT (ZXDATWR),A
;ЖДЕМ ПОКА СПЕК ЗАБЕРЕТ БАЙТ ИЗ ПОРТА
WDN IN A,(ZXSTAT)
RLA
JR C,$-3
RET
;ЖДЕМ ПОКА СПЕК ДАСТ БАЙТ В ПОРТ
WDY IN A,(ZXSTAT)
RLA
JR NC,$-3
RET
;ИГРАТЬ НА MP3-ДЕКОДЕР 1 СЕКТОР
PLAYMP3 RET
LD A,6
CALL COM_FAT
RET NZ
;ФАЙЛО НЕ КОНЧИЛОСЬ, ВЫХОДИМ
LD A,0X0D
CALL COM__SD
JP NEXTPL
;ФАЙЛ КОНЧИЛСЯ, ЗАВЕРШАЕМ НУЛЯМИ
;И ПЕРЕХОДИМ НА СЛЕДУЮЩИЙ ФАЙЛ
;ОТКРЫТИЕ ФАЙЛА И ИНИТ ДЕКОДЕРА
INIPLAY PUSH BC
CALL SRESMP3
;СБРОС ЧИПА В ЗАВИСИМОСТИ ОТ УСТАНОВОК
LD HL,(GET_VTS+1)
BIT 4,H
;ЕСЛИ СБРОС =HARD, ТО ОБНУЛЯЕМ ВСЕ
;КРОМЕ БИТА УСТАНОВЛЕННОГО MP3 ЧИПА
;И ТИПА СБРОСА ЭТОГО ЧИПА
JR Z,INIPLA1
LD L,0
LD A,H
AND %00011000
LD H,A
INIPLA1 SET 5,H
LD (GET_VTS+1),HL
;ВКЛЮЧАЕМ БИТ 5, ПОШОЛ НОВЫЙ ФАЙЛ
POP BC
LD A,7
JP COM_FAT
;ОТКРЫВАЕМ НОВЫЙ ФАЙЛ
COM__SD include sd4ngs.a80 ; INCL "SD4NGS";ДРАЙВЕР SD КАРТЫ
COM_FAT include fat4ngs.a80 ; INCL "FAT4NGS";ДРАЙВЕР FAT