;LAST UPDATE: 05.08.2019 savelij
 
 
 
                TITLE "call_trdos.a80"
 
 
 
SEL_FILES_WIN   LD HL,ERS_FLAGS
 
                BIT B_VIEW_IMG,(HL)
 
                JP Z,RESTART
 
                JP FILES_BROWSE
 
 
 
VIEW_IMAGE      DI
 
                LD BC,ADR_CAT_FAT
 
                LD L,(IX+_TEK_PKT_L)
 
                LD H,(IX+_TEK_PKT_H)
 
                ADD HL,HL
 
                ADD HL,BC
 
                LD C,(HL)
 
                INC HL
 
                LD B,(HL)                       ;ПОЛУЧИЛИ ТЕКУЩИЙ ВЫБРАННЫЙ НОМЕР
 
                LD A,6
 
                RST8 _COM_FAT,_POS_FILES        ;УСТАНОВКА ВНУТРЕННЕГО УКАЗАТЕЛЯ FAT ДРАЙВЕРА
 
                LD HL,BUF_FILEITEM
 
                RST8 _COM_FAT,_READ_DIR         ;ПОЛУЧИЛИ ОПИСАТЕЛЬ ПО УСТАНОВЛЕННОМУ НОМЕРУ
 
                LD DE,0X0B
 
                ADD HL,DE
 
                LD A,(HL)
 
                SBC HL,DE
 
                AND 0X10
 
                JP NZ,_RULILKA                  ;ПОПЫТКА ПРОСМОТРА ДИРЕКТОРИИ
 
                PUSH HL
 
                CALL REST_COLCURS               ;СТИРАНИЕ ЦВЕТНОГО КУРСОРА
 
                CALL REST2X2                    ;ВОССТАНОВЛЕНИЕ ЭКРАНА ПОД КУРСОРОМ МЫШИ
 
                POP HL
 
                CALL CPETR3                     ;ПРОВЕРКА РАСШИРЕНИЯ
 
                JP Z,_RULILKA                   ;ПОПЫТКА ПРОСМОТРА НЕ ПОДДЕРЖИВАЕМОГО РАСШИРЕНИЯ (SCL, TRD ONLY)
 
 
 
                LD (TYPE_FILE),A
 
                PUSH AF
 
                RST8 _COM_FAT,_OPEN_FILE
 
                POP AF
 
                DEC A
 
                LD HL,ADR_CAT                   ;TYPE_FILE=1-TRD
 
                JR Z,VIEWIMG1
 
                LD HL,ADR_CAT+0X200             ;TYPE_FILE=2-SCL
 
VIEWIMG1        PUSH AF
 
                LD A,5
 
                RST8 _COM_FAT,_READ_FILE
 
                POP AF
 
                JR Z,VIEWIMG3
 
                LD DE,ADR_CAT
 
                LD HL,ADR_CAT+0X200+8
 
                LD A,(HL)
 
                PUSH AF
 
                INC HL
 
VIEWIMG2        LD BC,0X0E
 
                LDIR
 
                INC DE
 
                INC DE
 
                DEC A
 
                JR NZ,VIEWIMG2
 
                LD HL,ADR_CAT+0X0A00
 
                SCF
 
                SBC HL,DE
 
                LD B,H
 
                LD C,L
 
                LD H,D
 
                LD L,E
 
                INC DE
 
                LD (HL),0
 
                LDIR
 
                LD HL,DSKINFO
 
                LD DE,ADR_CAT+0X8E1
 
                LD BC,DSK_END-DSKINFO
 
                LDIR
 
                POP AF
 
                LD (ADR_CAT+0X8E4),A
 
VIEWIMG3        LD HL,ERS_FLAGS
 
                RES B_RUN_FAT,(HL)              ;ВЫВОД ОКНА ДЛЯ TR-DOS
 
                SET B_VIEW_IMG,(HL)             ;ПРОСМОТР ОБРАЗА TR-DOS
 
 
 
                JP VIEW_ALL
 
 
 
GLUBOOT         LD HL,ERS_FLAGS
 
                RES B_RUN_FAT,(HL)              ;ЗАПУСК С ДИСКЕТЫ
 
                RES B_VIEW_IMG,(HL)             ;РАБОТА С РЕАЛЬНЫМ КАТАЛОГОМ TR-DOS
 
                LD HL,ADR_CAT
 
                LD DE,8
 
                LD BC,0X0105
 
                CALL TO_DOS4BAS                 ;ЗАГРУЗИЛИ 9 СЕКТОР
 
                LD A,(ADR_CAT+0XE7)
 
                CP 0X10                         ;ПРОВЕРКА НА ПРИЗНАК TR_DOS
 
                JP NZ,CMP_VIRTUAL               ;ОШИБКА, ДИСК НЕ TR-DOS
 
                LD HL,ADR_CAT
 
                LD DE,0
 
                LD BC,0X0905
 
                CALL TO_DOS4BAS                 ;ЗАГРУЗКА TR-DOS ДИРЫ
 
                LD A,(ADR_CAT+0X8E7)
 
                CP 0X10                         ;ПРОВЕРКА НА ПРИЗНАК TR_DOS
 
                JP NZ,_STUPID
 
VIEW_ALL        LD IX,ADR_CAT
 
                LD DE,0X10
 
                LD A,(ADR_CAT+0X8E4)
 
                AND A
 
                JP Z,NO_BAS
 
                LD B,A                          ;СКОЛЬКО ФАЙЛОВ НАДО ПРОСМОТРЕТЬ
 
                LD C,0                          ;ОБНУЛЕНИЕ СЧЕТЧИКА НАЙДЕННОГО
 
                EXX
 
                PUSH IX
 
                POP DE
 
                EXX
 
FIND_BASIC      LD A,(IX+8)
 
                CP "B"                          ;ИЩЕМ ТОЛЬКО БАСИК ФАЙЛЫ
 
                JR NZ,FINDBAS1
 
                LD A,(IX+0)
 
                DEC A                           ;ПРОВЕРКА НА УДАЛЕННЫЙ ФАЙЛ
 
                JR Z,FINDBAS1
 
                EXX
 
                PUSH IX
 
                POP HL                          ;ОТКУДА ПЕРЕНОСИТЬ ОПИСАТЕЛЬ
 
                LD BC,0X10
 
                LDIR
 
                EXX
 
                INC C
 
FINDBAS1        ADD IX,DE
 
                DJNZ FIND_BASIC
 
                LD IX,WIN_FILES                 ;ОКНО ДЛЯ ВЫВОДА БАСИК ФАЙЛОВ
 
OUT_HOB         LD (IX+_NUM_PKT),0
 
                LD (IX+_NUM_KOL_L),C
 
                LD (IX+_NUM_KOL_H),B            ;ПОЛНОЕ КОЛИЧЕСТВО НАЙДЕННОГО
 
                LD (IX+_TEK_PKT_L),0
 
                LD (IX+_TEK_PKT_H),0            ;ОБНУЛЯЕМ ПОЗИЦИЮ ФАЙЛОВ И КУРСОРА
 
REOUT_HOB       LD A,B
 
                OR C                            ;ПРОВЕРКА КОЛИЧЕСТВА НАЙДЕННОГО
 
                JP Z,NO_BAS                     ;ЕСЛИ 0, ТО НЕТ БАСИКОВ
 
                LD HL,ERS_FLAGS
 
                RES 2,(IY+55)                   ;ПРЕДПОЛОЖИТЕЛЬНО ФАЙЛОВ МЕНЕЕ ВЫСОТЫ ОКНА
 
                LD A,B
 
                AND A
 
                LD A,V_FILE-2
 
                JR NZ,FINDBAS2                  ;ЕСЛИ БОЛЕЕ 256 ФАЙЛОВ, ТО ПОЛНАЯ ВЫСОТА ОКНА
 
                LD A,C
 
                CP V_FILE-1
 
                JR C,FINDBAS2
 
                SET 2,(IY+55)                   ;ФАЙЛОВ БОЛЬШЕ ВЫСОТЫ ОКНА
 
                LD A,V_FILE-2
 
FINDBAS2        LD C,A
 
                ADD A,2
 
                LD (IX+_V_SIZE),A               ;УСТАНОВКА ВЫЧИСЛЕННОЙ ВЫСОТЫ ОКНА
 
                LD (IX+_H_SIZE),H_FILE          ;УСТАНОВКА ШИРИНЫ ОКНА
 
FINDBAS6        BIT B_RUN_FAT,(HL)
 
                JR Z,FINDBAS5                   ;ЕСЛИ РАБОТА С TR-DOS, ТО ПЕРЕХОДИМ НА ВЫВОД ОКНА
 
                LD A,C
 
                CP FH_FILE-1
 
                JR C,FINDBAS9
 
                LD C,FH_FILE-2
 
FINDBAS9        LD A,C
 
                LD (KOL4OUT),A
 
                LD (IX+_V_SIZE),FH_FILE
 
                LD (IX+_H_SIZE),FV_FILE
 
                RST8 _WINW
 
                JR FINDBAS7
 
 
 
FINDBAS5        LD A,(ERS_FLAGS)
 
                AND M_RUN_FAT
 
                JR NZ,FINDBAS8
 
                LD (IX+_H_SIZE),H_FILE-4
 
FINDBAS8        RST8 _WINW
 
FINDBAS7        CALL OUT_TEK_DIR                ;ВЫВОДИМ КУСОЧЕК ДИРЕКТОРИИ
 
                JP _RULILKA
 
 
 
;ВЫВОД ЧАСТИ ДИРЕКТОРИИ С УКАЗАННОЙ ПОЗИЦИИ
 
OUT_TEK_DIR     LD L,(IX+_TEK_PKT_L)            ;ВЫВОД ДИРЫ TR-DOS ДИСКА
 
                LD H,(IX+_TEK_PKT_H)            ;ПОЛУЧИЛИ НОМЕР ТЕКУЩЕЙ ПОЗИЦИИ
 
                LD E,(IX+_NUM_PKT)              ;ПОЛУЧИЛИ ПОЗИЦИЮ КУРСОРА В ОКНЕ
 
                XOR A
 
                LD D,A
 
                SBC HL,DE                       ;ВЫЧИСЛИЛИ ПОЗИЦИЮ ФАЙЛА С КОТОРОГО БУДЕМ ВЫВОДИТЬ
 
                ADD HL,HL
 
                LD A,(ERS_FLAGS)
 
                AND M_RUN_FAT
 
                JR NZ,OUT_TEK_FAT               ;ПЕРЕХОД ЕСЛИ ДЛЯ FAT
 
;ВЫВОД ДЛЯ TR-DOS ФАЙЛОВ
 
                LD DE,ADR_CAT
 
                ADD HL,HL
 
                ADD HL,HL
 
                ADD HL,HL                       ;УМНОЖИЛИ НА РАЗМЕР ОПИСАТЕЛЯ
 
                ADD HL,DE                       ;ВЫЧИСЛИЛИ АДРЕС ОПИСАТЕЛЯ С КОТОРОГО БУДЕМ ВЫВОДИТЬ
 
                LD C,(IX+_V_SIZE)
 
                DEC C
 
                DEC C                           ;ВЫЧИСЛИЛИ СКОЛЬКО ВЫВОДИТЬ
 
                LD D,(IX+_X_COORD)
 
                LD E,(IX+_Y_COORD)
 
                INC D
 
                INC D
 
                INC E                           ;ВЫЧИСЛИЛИ ПОЗИЦИЮ ВЫВОДА НА ЭКРАН
 
FINDBAS3        LD B,8                          ;ПЕЧАТАЕМ ТОЛЬКО ИМЯ
 
                PUSH DE
 
FINDBAS4        LD A,(HL)
 
                INC HL
 
                CALL PRT_SYM
 
                DJNZ FINDBAS4
 
                LD DE,8                         ;8 СИМВОЛОВ НАПЕЧАТАЛИ, ОСТАЛЬНЫЕ 8 ПРОПУСКАЕМ
 
                ADD HL,DE
 
                POP DE
 
                INC E
 
                DEC C
 
                JR NZ,FINDBAS3                  ;ЕСЛИ НЕ КОНЧИЛИСЬ ПЕРЕХОДИМ НА ПЕЧАТЬ СЛЕДУЮЩЕГО ИМЕНИ
 
                RET
 
 
 
;ВЫВОД ДИРЫ НА FAT
 
OUT_TEK_FAT     LD DE,ADR_CAT_FAT
 
                ADD HL,DE
 
                LD D,(IX+_X_COORD)
 
                LD E,(IX+_Y_COORD)
 
                INC D
 
                INC E                           ;ВЫЧИСЛИЛИ ПОЗИЦИЮ ВЫВОДА НА ЭКРАН
 
                LD C,0
 
KOL4OUT         EQU $-1
 
OTF2            PUSH BC
 
                LD C,(HL)
 
                INC HL
 
                LD B,(HL)
 
                INC HL
 
                PUSH HL
 
                PUSH DE
 
                LD A,6
 
                RST8 _COM_FAT,_POS_FILES
 
                LD HL,BUF_FILEITEM
 
                RST8 _COM_FAT,_READ_DIR
 
                POP DE
 
                PUSH DE
 
                LD BC,0X0B
 
                ADD HL,BC
 
                LD A,(HL)
 
                SBC HL,BC
 
                AND 0X10
 
                LD A,0                          ;СИМВОЛ ПАПКИ
 
                JR NZ,OTF4
 
                LD A,1                          ;СИМВОЛ ФАЙЛА
 
OTF4            CALL PRTSPECSYM
 
                LD HL,OUT_NAME_FILET
 
                RST8 _COM_FAT,_GET_LONGNAME
 
                LD (LONG_NAME),A
 
                CALL FILENAME8_3
 
                POP DE
 
                POP HL
 
                POP BC
 
                INC E
 
                DEC C
 
                JR NZ,OTF2
 
                RET
 
 
 
FILENAME8_3     LD A,(ERS_FLAGS)
 
                AND M_RUN_FAT
 
                JR NZ,OTF5
 
                LD B,8
 
OTF1            LD A,(HL)
 
                INC HL
 
                CALL PRT_SYM
 
                DJNZ OTF1
 
                RET
 
 
 
OTF5            EX DE,HL
 
                LD A,H
 
                ADD A,A
 
                ADD A,A
 
                ADD A,A
 
                LD H,A
 
                INC H
 
                LD (OUT_NAME_FILE+1),HL
 
                LD HL,OUT_NAME_FILET
 
                LD BC,0
 
LONG_NAME       EQU $-2
 
                LD A,FV_FILE6
 
                CP C
 
                JR Z,OTF7
 
                JR NC,OTF6
 
                EX DE,HL
 
                LD HL,FV_FILE6
 
                ADD HL,DE
 
                LD (HL),">"
 
                INC HL
 
                LD (HL),0
 
                JR OTF7
 
 
 
OTF6            SUB C
 
                ADD HL,BC
 
                LD C,A
 
                LD D,H
 
                LD E,L
 
                INC DE
 
                LD (HL)," "
 
                LDIR
 
                XOR A
 
                LD (DE),A
 
OTF7            LD HL,OUT_NAME_FILE
 
                RST8 _PRINT_MESSAGE
 
                RET
 
 
 
NO_BAS          LD HL,ERS_FLAGS
 
                BIT B_VIEW_IMG,(HL)
 
                JP NZ,FILES_BROWSE
 
                LD IX,NOBASIC
 
                RST8 _WINW
 
                JP _RULILKA
 
 
 
RUNFILE         DI
 
                CALL SHUT2AY                    ;БУМКАЛКА В AY
 
                LD HL,ERS_FLAGS
 
                BIT B_VIEW_IMG,(HL)
 
                JR Z,RUNFILE2
 
                LD IX,FAT_FILES
 
                LD HL,ERS_FLAGS
 
                SET B_VIEW_IMG,(HL)
 
                JP RUN_HOB                      ;ПЕРЕХОД НА ЗАГРУЗКУ И ЗАПУСК ИЗ SCL ОБРАЗА
 
 
 
RUNFILE2        LD L,(IX+_TEK_PKT_L)
 
                LD H,(IX+_TEK_PKT_H)            ;НОМЕР ВЫБРАННОГО ФАЙЛА 
 
                LD DE,ADR_CAT
 
                ADD HL,HL
 
                ADD HL,HL
 
                ADD HL,HL
 
                ADD HL,HL
 
                ADD HL,DE                       ;ОТКУДА ИМЯ ФАЙЛА ВЗЯТЬ
 
RUNFILE1        LD DE,RUNNAM
 
                LD BC,8
 
                LDIR
 
                LD HL,0X3E08+0XA7
 
                LD DE,0XFFFF
 
                LD C,0XA8                       ;21 символ UDG
 
                LDDR
 
                LD HL,RUN_BASIC
 
                LD DE,0X5D3B
 
                LD BC,ERUN_BASIC-RUN_BASIC
 
                LDIR                            ;ПЕРЕНОС БЕЙСИК ПРОГИ ДЛЯ ЗАПУСКА
 
                CALL MEMSET                     ;ВЫСТАВИЛИ РЕЖИМ КОМПА
 
                CALL FOR_RUN
 
                EI
 
                LD BC,0XFF56
 
                CALL 0X1EB7
 
                LD HL,0X1B7D                    ;ЗАПУСК ПЕРЕНЕСЕННОЙ БЕЙСИК ПРОГИ
 
                PUSH HL
 
                LD HL,0X6000
 
                LD DE,0X6001
 
                LD BC,0XFF00-0X6000
 
                LD (HL),0
 
                JP 0X33C3
 
 
 
FOR_RUN         SET 3,(IY+1)
 
                LD IY,ERR_NR
 
                LD (IY),0XFF
 
                SET 7,(IY+1)
 
                RES 4,(IY+1)
 
                LD HL,0X2758
 
                EXX
 
                LD A,0XC9
 
                LD (TRD_5CC2),A
 
                LD HL,0
 
                LD (NEWPPC),HL
 
                XOR A
 
                LD (NSPPS),A
 
                RET
 
 
 
;КРУГОВОЙ ПЕРЕБОР ИМЕНИ ДИСКОВОДА 1-4 (A-D)
 
NEXTDRIVE       LD A,(TXT_DRIVE)                ;ВЗЯЛИ БУКВУ ТЕКУЩЕГО ДИСКОВОДА
 
                INC A                           ;+1, ТО ЕСТЬ ВЫБРАЛИ СЛЕДУЮЩИЙ ПО ПОРЯДКУ
 
                SUB 0X10                        ;ПРЕВРАТИЛИ В НОМЕР
 
                CP "5"                          ;ЕСЛИ ПРЕВЫСИЛИ 4
 
                JR C,SELDRV1
 
                SUB 4                           ;ТО ИЗМЕНИЛИ НА НОМЕР ПЕРВЫЙ
 
                JR SELDRV1
 
 
 
NEXTVIRT        LD HL,MAINLOP
 
                PUSH HL
 
                LD A,(ERS_FLAGS)
 
                AND M_CLOCK_ON
 
                RET Z
 
                LD H,VIRT_REAL_DRIVE
 
                CALL READCMOS
 
                AND 3                           ;A=СДВИНУТЫЙ НОМЕР ВИРТУАЛЬНОГО ДИСКОВОДА
 
                INC A
 
                CP 4
 
                JR C,NEXTVIRT1
 
                XOR A
 
NEXTVIRT1       LD D,A                          ;СОХРАНИЛИ ВИРТУАЛЬНЫЙ ДИСКОВОД
 
                LD A,L
 
                AND %11111100                   ;A=СБРОСИЛИ СТАРЫЙ НОМЕР ВИРТУАЛЬНОГО ДИСКОВОДА
 
                OR D                            ;ДОБАВИЛИ НОВЫЙ НОМЕР ВИРТУАЛЬНОГО ДИСКОВОДА
 
                LD L,A
 
                CALL WRITECMOS                  ;СОХРАНИЛИ НОМЕР РЕАЛЬНОГО И ВИРТУАЛЬНОГО ДИСКОВОДА
 
;               RST8 _MOUNTER,_MOUNT_RAMDISK    ;МОНТИРОВАНИЕ РАМДИСКА
 
                CALL REST2X2
 
                CALL PRT_VIRTDRV
 
                LD A,(ERS_FLAGS)
 
                AND M_MOUSE_ON
 
                RET Z
 
                JP DRAW_MOUSE
 
 
 
;ИЗМЕНЕНИЕ НОМЕРА ДИСКОВОДА И СОХРАНЕНИЕ В КМОСЕ ЕСЛИ ТАКОВОЙ ОБНАРУЖЕН
 
SELDRV          LD A,(LAST_K)                   ;ВЗЯЛИ НОМЕР ДИСКОВОДА
 
SELDRV1         SUB "1"                         ;ОБРАТИЛИ В БИНАРНЫЙ ВИД ДЛЯ ЗАПИСИ В ПЕРЕМЕННУЮ
 
                LD HL,MAINLOP                   ;АДРЕС КУДА ВЕРНУТЬСЯ ПОСЛЕ ЗАПИСИ
 
                PUSH HL
 
SELDRVPP        LD (DRV_SYM),A                  ;СОХРАНИЛИ НОВЫЙ НОМЕР РЕАЛЬНОГО ДИСКОВОДА
 
                RLCA
 
                RLCA
 
                LD D,A                          ;СДВИНУТЫЙ НОМЕР ВИРТУАЛЬНОГО ДИСКОВОДА
 
                LD A,(ERS_FLAGS)
 
                AND M_CLOCK_ON
 
                RET Z                           ;ЕСЛИ КМОС НЕ НАЙДЕН, ВЫХОДИМ
 
                LD H,VIRT_REAL_DRIVE
 
                CALL READCMOS
 
                AND %11110011                   ;СБРОСИЛИ СТАРЫЙ НОМЕР РЕАЛЬНОГО ДИСКОВОДА
 
                OR D                            ;ДОБАВИЛИ НОВЫЙ НОМЕР РЕАЛЬНОГО ДИСКОВОДА
 
                LD L,A
 
                CALL WRITECMOS                  ;СОХРАНЯЕМ В КМОСЕ
 
                CALL SET_DRIVE                  ;УСТАНОВКА ИЗМЕНЕНИЯ
 
                CALL REST2X2                    ;ВОССТАНОВИЛИ ПОД КУРСОРОМ МЫШИ
 
                CALL PRT_DRV_SYM                ;ПЕРЕПЕЧАТАЛИ СТРОКУ О ДИСКОВОДАХ
 
                LD A,(ERS_FLAGS)
 
                AND M_MOUSE_ON
 
                RET Z
 
                JP DRAW_MOUSE                   ;НАРИСОВАЛИ МЫШЬ НА СТАРОМ МЕСТЕ
 
 
 
;FIX mouse key if no mouse
 
ONERNCLS        LD A,(ERS_FLAGS)
 
                AND M_MOUSE_ON
 
                JR Z,ONERNC1
 
                LD A,0XFA
 
                IN A,(0XDF)
 
                RRA
 
                JP NC,_STUPID
 
ONERNC1         POP AF
 
                EX (SP),HL
 
                RET
 
 
 
;ПЕРЕХВАТ ДИСКОВОЙ ОШИБКИ ДЛЯ ОБРАБОТКИ
 
ONERR           EX (SP),HL
 
                PUSH AF
 
 
 
                PUSH DE
 
                PUSH HL
 
                LD DE,0X1303
 
                AND A
 
                SBC HL,DE
 
                POP HL
 
                POP DE
 
                JR Z,ONERR1
 
                PUSH DE
 
                PUSH HL
 
                LD DE,0X0D6B
 
                AND A
 
                SBC HL,DE
 
                POP HL
 
                POP DE
 
                JR NZ,ONERNCLS
 
;               LD A,H
 
;               CP HIGH (0X0D6B)
 
;               JR NZ,ONERNCLS
 
;               LD A,L
 
;               CP LOW (0X0D6B)
 
;               JR NZ,ONERNCLS
 
 
 
ONERR1          POP HL
 
                POP HL
 
                POP HL
 
                POP HL
 
                POP HL
 
                EI
 
                CALL GLUDIN
 
                LD HL,TRD_5CF4
 
                LD A,(HL)                       ;ВЗЯЛИ НОМЕР СЕКТОРА
 
                INC A
 
                CALL DIV10
 
                LD (NUM_SEC_TXT+1),A
 
                LD A,D
 
                LD (NUM_SEC_TXT),A
 
                INC HL
 
                LD A,(HL)                       ;ВЗЯЛИ НОМЕР ТРЕКА
 
                SRL A
 
                LD E,A
 
                ADC A,"0"
 
                SUB E
 
                LD (SIDE_DISK),A                ;СТОРОНА ДИСКА
 
                LD A,E
 
                CALL DIV10
 
                LD (NUM_TRK_TXT+1),A
 
                LD A,D
 
                LD (NUM_TRK_TXT),A
 
                LD IX,DSK_ERR                   ;ОКНО ВЫВОДИМ ПОЛНОСТЬЮ
 
                RST8 _WINW
 
                JP _RULILKA
 
 
 
RESET_VG        LD C,0XFF
 
                XOR A
 
                LD IX,0X3FF0                    ;OUT (C),A
 
                CALL DOSIX
 
                LD A,(DRV_SYM)
 
                OR 0X3C
 
                LD HL,0X2A53
 
                CALL SET_DOS_PAGE               ;установка DOS страницы
 
                LD A,0X68                       ;шаг назад
 
                LD C,0X1F
 
                CALL DOSIX
 
                LD HL,DSTUPID
 
                LD (ERR_SP),HL
 
                LD A,0XC3
 
                LD (TRD_5CC2),A
 
                LD HL,ONERR
 
                LD (TRD_5CC3),HL
 
                RET
 
 
 
SET_DOS_PAGE    PUSH HL
 
DOSIX           PUSH IX
 
                JP TO_DOS
 
 
 
;ПРОВЕРКА НАЛИЧИЯ МАРКЕРА РАМДИСКА, ПРИ ОТСУСТВИИ СОЗДАНИЕ ДИСКА НА 640КБ
 
DISK_NONE       PEC_ON M_SHADOW_BF
 
                LD A,RAM_RAMDISK
 
                LD BC,WIN_P1
 
                OUT (C),A
 
                LD HL,0X7FFF
 
                LD A,(HL)
 
                DEC H
 
                CP "R"
 
                JR NZ,DISK_NONE1
 
                LD A,(HL)
 
                CP "D"
 
DISK_NONE1      EX AF,AF'
 
                LD A,ZXSTD_CPU1;0XFA
 
                OUT (C),A
 
                PEC_OFF M_SHADOW_BF
 
                EX AF,AF'
 
                LD HL,ERS_FLAGS
 
                RES B_LOAD_IMG,(HL)
 
                JP NZ,CREATE_TRDRAM             ;МАРКЕР НЕ ОБНАРУЖЕН, СОЗДАТЬ
 
                RET
 
 
 
DIV10   LD D,0X30-1
 
        INC D
 
        SUB 0X0A
 
        JR NC,$-3
 
        ADD A,0X0A+0X30
 
        RET
 
 
 
_RETRY  LD A,"R"
 
        JR $+4
 
 
 
_IGNORE LD A,"I"
 
        LD HL,0X3F7E
 
        EX (SP),HL
 
        DI
 
        JP TO_DOS