Subversion Repositories pentevo

Rev

Rev 835 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed | ?url?

  1.  
  2. ;LAST UPDATE: 05.08.2019 savelij
  3.  
  4.                 TITLE "call_trdos.a80"
  5.  
  6. SEL_FILES_WIN   LD HL,ERS_FLAGS
  7.                 BIT B_VIEW_IMG,(HL)
  8.                 JP Z,RESTART
  9.                 JP FILES_BROWSE
  10.  
  11. VIEW_IMAGE      DI
  12.                 LD BC,ADR_CAT_FAT
  13.                 LD L,(IX+_TEK_PKT_L)
  14.                 LD H,(IX+_TEK_PKT_H)
  15.                 ADD HL,HL
  16.                 ADD HL,BC
  17.                 LD C,(HL)
  18.                 INC HL
  19.                 LD B,(HL)                       ;ПОЛУЧИЛИ ТЕКУЩИЙ ВЫБРАННЫЙ НОМЕР
  20.                 LD A,6
  21.                 RST8 _COM_FAT,_POS_FILES        ;УСТАНОВКА ВНУТРЕННЕГО УКАЗАТЕЛЯ FAT ДРАЙВЕРА
  22.                 LD HL,BUF_FILEITEM
  23.                 RST8 _COM_FAT,_READ_DIR         ;ПОЛУЧИЛИ ОПИСАТЕЛЬ ПО УСТАНОВЛЕННОМУ НОМЕРУ
  24.                 LD DE,0X0B
  25.                 ADD HL,DE
  26.                 LD A,(HL)
  27.                 SBC HL,DE
  28.                 AND 0X10
  29.                 JP NZ,_RULILKA                  ;ПОПЫТКА ПРОСМОТРА ДИРЕКТОРИИ
  30.                 PUSH HL
  31.                 CALL REST_COLCURS               ;СТИРАНИЕ ЦВЕТНОГО КУРСОРА
  32.                 CALL REST2X2                    ;ВОССТАНОВЛЕНИЕ ЭКРАНА ПОД КУРСОРОМ МЫШИ
  33.                 POP HL
  34.                 CALL CPETR3                     ;ПРОВЕРКА РАСШИРЕНИЯ
  35.                 JP Z,_RULILKA                   ;ПОПЫТКА ПРОСМОТРА НЕ ПОДДЕРЖИВАЕМОГО РАСШИРЕНИЯ (SCL, TRD ONLY)
  36.  
  37.                 LD (TYPE_FILE),A
  38.                 PUSH AF
  39.                 RST8 _COM_FAT,_OPEN_FILE
  40.                 POP AF
  41.                 DEC A
  42.                 LD HL,ADR_CAT                   ;TYPE_FILE=1-TRD
  43.                 JR Z,VIEWIMG1
  44.                 LD HL,ADR_CAT+0X200             ;TYPE_FILE=2-SCL
  45. VIEWIMG1        PUSH AF
  46.                 LD A,5
  47.                 RST8 _COM_FAT,_READ_FILE
  48.                 POP AF
  49.                 JR Z,VIEWIMG3
  50.                 LD DE,ADR_CAT
  51.                 LD HL,ADR_CAT+0X200+8
  52.                 LD A,(HL)
  53.                 PUSH AF
  54.                 INC HL
  55. VIEWIMG2        LD BC,0X0E
  56.                 LDIR
  57.                 INC DE
  58.                 INC DE
  59.                 DEC A
  60.                 JR NZ,VIEWIMG2
  61.                 LD HL,ADR_CAT+0X0A00
  62.                 SCF
  63.                 SBC HL,DE
  64.                 LD B,H
  65.                 LD C,L
  66.                 LD H,D
  67.                 LD L,E
  68.                 INC DE
  69.                 LD (HL),0
  70.                 LDIR
  71.                 LD HL,DSKINFO
  72.                 LD DE,ADR_CAT+0X8E1
  73.                 LD BC,DSK_END-DSKINFO
  74.                 LDIR
  75.                 POP AF
  76.                 LD (ADR_CAT+0X8E4),A
  77. VIEWIMG3        LD HL,ERS_FLAGS
  78.                 RES B_RUN_FAT,(HL)              ;ВЫВОД ОКНА ДЛЯ TR-DOS
  79.                 SET B_VIEW_IMG,(HL)             ;ПРОСМОТР ОБРАЗА TR-DOS
  80.  
  81.                 JP VIEW_ALL
  82.  
  83. GLUBOOT         LD HL,ERS_FLAGS
  84.                 RES B_RUN_FAT,(HL)              ;ЗАПУСК С ДИСКЕТЫ
  85.                 RES B_VIEW_IMG,(HL)             ;РАБОТА С РЕАЛЬНЫМ КАТАЛОГОМ TR-DOS
  86.                 LD HL,ADR_CAT
  87.                 LD DE,8
  88.                 LD BC,0X0105
  89.                 CALL TO_DOS4BAS                 ;ЗАГРУЗИЛИ 9 СЕКТОР
  90.                 LD A,(ADR_CAT+0XE7)
  91.                 CP 0X10                         ;ПРОВЕРКА НА ПРИЗНАК TR_DOS
  92.                 JP NZ,CMP_VIRTUAL               ;ОШИБКА, ДИСК НЕ TR-DOS
  93.                 LD HL,ADR_CAT
  94.                 LD DE,0
  95.                 LD BC,0X0905
  96.                 CALL TO_DOS4BAS                 ;ЗАГРУЗКА TR-DOS ДИРЫ
  97.                 LD A,(ADR_CAT+0X8E7)
  98.                 CP 0X10                         ;ПРОВЕРКА НА ПРИЗНАК TR_DOS
  99.                 JP NZ,_STUPID
  100. VIEW_ALL        LD IX,ADR_CAT
  101.                 LD DE,0X10
  102.                 LD A,(ADR_CAT+0X8E4)
  103.                 AND A
  104.                 JP Z,NO_BAS
  105.                 LD B,A                          ;СКОЛЬКО ФАЙЛОВ НАДО ПРОСМОТРЕТЬ
  106.                 LD C,0                          ;ОБНУЛЕНИЕ СЧЕТЧИКА НАЙДЕННОГО
  107.                 EXX
  108.                 PUSH IX
  109.                 POP DE
  110.                 EXX
  111. FIND_BASIC      LD A,(IX+8)
  112.                 CP "B"                          ;ИЩЕМ ТОЛЬКО БАСИК ФАЙЛЫ
  113.                 JR NZ,FINDBAS1
  114.                 LD A,(IX+0)
  115.                 DEC A                           ;ПРОВЕРКА НА УДАЛЕННЫЙ ФАЙЛ
  116.                 JR Z,FINDBAS1
  117.                 EXX
  118.                 PUSH IX
  119.                 POP HL                          ;ОТКУДА ПЕРЕНОСИТЬ ОПИСАТЕЛЬ
  120.                 LD BC,0X10
  121.                 LDIR
  122.                 EXX
  123.                 INC C
  124. FINDBAS1        ADD IX,DE
  125.                 DJNZ FIND_BASIC
  126.                 LD IX,WIN_FILES                 ;ОКНО ДЛЯ ВЫВОДА БАСИК ФАЙЛОВ
  127. OUT_HOB         LD (IX+_NUM_PKT),0
  128.                 LD (IX+_NUM_KOL_L),C
  129.                 LD (IX+_NUM_KOL_H),B            ;ПОЛНОЕ КОЛИЧЕСТВО НАЙДЕННОГО
  130.                 LD (IX+_TEK_PKT_L),0
  131.                 LD (IX+_TEK_PKT_H),0            ;ОБНУЛЯЕМ ПОЗИЦИЮ ФАЙЛОВ И КУРСОРА
  132. REOUT_HOB       LD A,B
  133.                 OR C                            ;ПРОВЕРКА КОЛИЧЕСТВА НАЙДЕННОГО
  134.                 JP Z,NO_BAS                     ;ЕСЛИ 0, ТО НЕТ БАСИКОВ
  135.                 LD HL,ERS_FLAGS
  136.                 RES 2,(IY+55)                   ;ПРЕДПОЛОЖИТЕЛЬНО ФАЙЛОВ МЕНЕЕ ВЫСОТЫ ОКНА
  137.                 LD A,B
  138.                 AND A
  139.                 LD A,V_FILE-2
  140.                 JR NZ,FINDBAS2                  ;ЕСЛИ БОЛЕЕ 256 ФАЙЛОВ, ТО ПОЛНАЯ ВЫСОТА ОКНА
  141.                 LD A,C
  142.                 CP V_FILE-1
  143.                 JR C,FINDBAS2
  144.                 SET 2,(IY+55)                   ;ФАЙЛОВ БОЛЬШЕ ВЫСОТЫ ОКНА
  145.                 LD A,V_FILE-2
  146. FINDBAS2        LD C,A
  147.                 ADD A,2
  148.                 LD (IX+_V_SIZE),A               ;УСТАНОВКА ВЫЧИСЛЕННОЙ ВЫСОТЫ ОКНА
  149.                 LD (IX+_H_SIZE),H_FILE          ;УСТАНОВКА ШИРИНЫ ОКНА
  150. FINDBAS6        BIT B_RUN_FAT,(HL)
  151.                 JR Z,FINDBAS5                   ;ЕСЛИ РАБОТА С TR-DOS, ТО ПЕРЕХОДИМ НА ВЫВОД ОКНА
  152.                 LD A,C
  153.                 CP FH_FILE-1
  154.                 JR C,FINDBAS9
  155.                 LD C,FH_FILE-2
  156. FINDBAS9        LD A,C
  157.                 LD (KOL4OUT),A
  158.                 LD (IX+_V_SIZE),FH_FILE
  159.                 LD (IX+_H_SIZE),FV_FILE
  160.                 RST8 _WINW
  161.                 JR FINDBAS7
  162.  
  163. FINDBAS5        LD A,(ERS_FLAGS)
  164.                 AND M_RUN_FAT
  165.                 JR NZ,FINDBAS8
  166.                 LD (IX+_H_SIZE),H_FILE-4
  167. FINDBAS8        RST8 _WINW
  168. FINDBAS7        CALL OUT_TEK_DIR                ;ВЫВОДИМ КУСОЧЕК ДИРЕКТОРИИ
  169.                 JP _RULILKA
  170.  
  171. ;ВЫВОД ЧАСТИ ДИРЕКТОРИИ С УКАЗАННОЙ ПОЗИЦИИ
  172. OUT_TEK_DIR     LD L,(IX+_TEK_PKT_L)            ;ВЫВОД ДИРЫ TR-DOS ДИСКА
  173.                 LD H,(IX+_TEK_PKT_H)            ;ПОЛУЧИЛИ НОМЕР ТЕКУЩЕЙ ПОЗИЦИИ
  174.                 LD E,(IX+_NUM_PKT)              ;ПОЛУЧИЛИ ПОЗИЦИЮ КУРСОРА В ОКНЕ
  175.                 XOR A
  176.                 LD D,A
  177.                 SBC HL,DE                       ;ВЫЧИСЛИЛИ ПОЗИЦИЮ ФАЙЛА С КОТОРОГО БУДЕМ ВЫВОДИТЬ
  178.                 ADD HL,HL
  179.                 LD A,(ERS_FLAGS)
  180.                 AND M_RUN_FAT
  181.                 JR NZ,OUT_TEK_FAT               ;ПЕРЕХОД ЕСЛИ ДЛЯ FAT
  182. ;ВЫВОД ДЛЯ TR-DOS ФАЙЛОВ
  183.                 LD DE,ADR_CAT
  184.                 ADD HL,HL
  185.                 ADD HL,HL
  186.                 ADD HL,HL                       ;УМНОЖИЛИ НА РАЗМЕР ОПИСАТЕЛЯ
  187.                 ADD HL,DE                       ;ВЫЧИСЛИЛИ АДРЕС ОПИСАТЕЛЯ С КОТОРОГО БУДЕМ ВЫВОДИТЬ
  188.                 LD C,(IX+_V_SIZE)
  189.                 DEC C
  190.                 DEC C                           ;ВЫЧИСЛИЛИ СКОЛЬКО ВЫВОДИТЬ
  191.                 LD D,(IX+_X_COORD)
  192.                 LD E,(IX+_Y_COORD)
  193.                 INC D
  194.                 INC D
  195.                 INC E                           ;ВЫЧИСЛИЛИ ПОЗИЦИЮ ВЫВОДА НА ЭКРАН
  196. FINDBAS3        LD B,8                          ;ПЕЧАТАЕМ ТОЛЬКО ИМЯ
  197.                 PUSH DE
  198. FINDBAS4        LD A,(HL)
  199.                 INC HL
  200.                 CALL PRT_SYM
  201.                 DJNZ FINDBAS4
  202.                 LD DE,8                         ;8 СИМВОЛОВ НАПЕЧАТАЛИ, ОСТАЛЬНЫЕ 8 ПРОПУСКАЕМ
  203.                 ADD HL,DE
  204.                 POP DE
  205.                 INC E
  206.                 DEC C
  207.                 JR NZ,FINDBAS3                  ;ЕСЛИ НЕ КОНЧИЛИСЬ ПЕРЕХОДИМ НА ПЕЧАТЬ СЛЕДУЮЩЕГО ИМЕНИ
  208.                 RET
  209.  
  210. ;ВЫВОД ДИРЫ НА FAT
  211. OUT_TEK_FAT     LD DE,ADR_CAT_FAT
  212.                 ADD HL,DE
  213.                 LD D,(IX+_X_COORD)
  214.                 LD E,(IX+_Y_COORD)
  215.                 INC D
  216.                 INC E                           ;ВЫЧИСЛИЛИ ПОЗИЦИЮ ВЫВОДА НА ЭКРАН
  217.                 LD C,0
  218. KOL4OUT         EQU $-1
  219. OTF2            PUSH BC
  220.                 LD C,(HL)
  221.                 INC HL
  222.                 LD B,(HL)
  223.                 INC HL
  224.                 PUSH HL
  225.                 PUSH DE
  226.                 LD A,6
  227.                 RST8 _COM_FAT,_POS_FILES
  228.                 LD HL,BUF_FILEITEM
  229.                 RST8 _COM_FAT,_READ_DIR
  230.                 POP DE
  231.                 PUSH DE
  232.                 LD BC,0X0B
  233.                 ADD HL,BC
  234.                 LD A,(HL)
  235.                 SBC HL,BC
  236.                 AND 0X10
  237.                 LD A,0                          ;СИМВОЛ ПАПКИ
  238.                 JR NZ,OTF4
  239.                 LD A,1                          ;СИМВОЛ ФАЙЛА
  240. OTF4            CALL PRTSPECSYM
  241.                 LD HL,OUT_NAME_FILET
  242.                 RST8 _COM_FAT,_GET_LONGNAME
  243.                 LD (LONG_NAME),A
  244.                 CALL FILENAME8_3
  245.                 POP DE
  246.                 POP HL
  247.                 POP BC
  248.                 INC E
  249.                 DEC C
  250.                 JR NZ,OTF2
  251.                 RET
  252.  
  253. FILENAME8_3     LD A,(ERS_FLAGS)
  254.                 AND M_RUN_FAT
  255.                 JR NZ,OTF5
  256.                 LD B,8
  257. OTF1            LD A,(HL)
  258.                 INC HL
  259.                 CALL PRT_SYM
  260.                 DJNZ OTF1
  261.                 RET
  262.  
  263. OTF5            EX DE,HL
  264.                 LD A,H
  265.                 ADD A,A
  266.                 ADD A,A
  267.                 ADD A,A
  268.                 LD H,A
  269.                 INC H
  270.                 LD (OUT_NAME_FILE+1),HL
  271.                 LD HL,OUT_NAME_FILET
  272.                 LD BC,0
  273. LONG_NAME       EQU $-2
  274.                 LD A,FV_FILE6
  275.                 CP C
  276.                 JR Z,OTF7
  277.                 JR NC,OTF6
  278.                 EX DE,HL
  279.                 LD HL,FV_FILE6
  280.                 ADD HL,DE
  281.                 LD (HL),">"
  282.                 INC HL
  283.                 LD (HL),0
  284.                 JR OTF7
  285.  
  286. OTF6            SUB C
  287.                 ADD HL,BC
  288.                 LD C,A
  289.                 LD D,H
  290.                 LD E,L
  291.                 INC DE
  292.                 LD (HL)," "
  293.                 LDIR
  294.                 XOR A
  295.                 LD (DE),A
  296. OTF7            LD HL,OUT_NAME_FILE
  297.                 RST8 _PRINT_MESSAGE
  298.                 RET
  299.  
  300. NO_BAS          LD HL,ERS_FLAGS
  301.                 BIT B_VIEW_IMG,(HL)
  302.                 JP NZ,FILES_BROWSE
  303.                 LD IX,NOBASIC
  304.                 RST8 _WINW
  305.                 JP _RULILKA
  306.  
  307. RUNFILE         DI
  308.                 CALL SHUT2AY                    ;БУМКАЛКА В AY
  309.                 LD HL,ERS_FLAGS
  310.                 BIT B_VIEW_IMG,(HL)
  311.                 JR Z,RUNFILE2
  312.                 LD IX,FAT_FILES
  313.                 LD HL,ERS_FLAGS
  314.                 SET B_VIEW_IMG,(HL)
  315.                 JP RUN_HOB                      ;ПЕРЕХОД НА ЗАГРУЗКУ И ЗАПУСК ИЗ SCL ОБРАЗА
  316.  
  317. RUNFILE2        LD L,(IX+_TEK_PKT_L)
  318.                 LD H,(IX+_TEK_PKT_H)            ;НОМЕР ВЫБРАННОГО ФАЙЛА
  319.                 LD DE,ADR_CAT
  320.                 ADD HL,HL
  321.                 ADD HL,HL
  322.                 ADD HL,HL
  323.                 ADD HL,HL
  324.                 ADD HL,DE                       ;ОТКУДА ИМЯ ФАЙЛА ВЗЯТЬ
  325. RUNFILE1        LD DE,RUNNAM
  326.                 LD BC,8
  327.                 LDIR
  328.                 LD HL,0X3E08+0XA7
  329.                 LD DE,0XFFFF
  330.                 LD C,0XA8                       ;21 символ UDG
  331.                 LDDR
  332.                 LD HL,RUN_BASIC
  333.                 LD DE,0X5D3B
  334.                 LD BC,ERUN_BASIC-RUN_BASIC
  335.                 LDIR                            ;ПЕРЕНОС БЕЙСИК ПРОГИ ДЛЯ ЗАПУСКА
  336.                 CALL MEMSET                     ;ВЫСТАВИЛИ РЕЖИМ КОМПА
  337.                 CALL FOR_RUN
  338.                 EI
  339.                 LD BC,0XFF56
  340.                 CALL 0X1EB7
  341.                 LD HL,0X1B7D                    ;ЗАПУСК ПЕРЕНЕСЕННОЙ БЕЙСИК ПРОГИ
  342.                 PUSH HL
  343.                 LD HL,0X6000
  344.                 LD DE,0X6001
  345.                 LD BC,0XFF00-0X6000
  346.                 LD (HL),0
  347.                 JP 0X33C3
  348.  
  349. FOR_RUN         SET 3,(IY+1)
  350.                 LD IY,ERR_NR
  351.                 LD (IY),0XFF
  352.                 SET 7,(IY+1)
  353.                 RES 4,(IY+1)
  354.                 LD HL,0X2758
  355.                 EXX
  356.                 LD A,0XC9
  357.                 LD (TRD_5CC2),A
  358.                 LD HL,0
  359.                 LD (NEWPPC),HL
  360.                 XOR A
  361.                 LD (NSPPS),A
  362.                 RET
  363.  
  364. ;КРУГОВОЙ ПЕРЕБОР ИМЕНИ ДИСКОВОДА 1-4 (A-D)
  365. NEXTDRIVE       LD A,(TXT_DRIVE)                ;ВЗЯЛИ БУКВУ ТЕКУЩЕГО ДИСКОВОДА
  366.                 INC A                           ;+1, ТО ЕСТЬ ВЫБРАЛИ СЛЕДУЮЩИЙ ПО ПОРЯДКУ
  367.                 SUB 0X10                        ;ПРЕВРАТИЛИ В НОМЕР
  368.                 CP "5"                          ;ЕСЛИ ПРЕВЫСИЛИ 4
  369.                 JR C,SELDRV1
  370.                 SUB 4                           ;ТО ИЗМЕНИЛИ НА НОМЕР ПЕРВЫЙ
  371.                 JR SELDRV1
  372.  
  373. NEXTVIRT        LD HL,MAINLOP
  374.                 PUSH HL
  375.                 LD A,(ERS_FLAGS)
  376.                 AND M_CLOCK_ON
  377.                 RET Z
  378.                 LD H,VIRT_REAL_DRIVE
  379.                 CALL READCMOS
  380.                 AND 3                           ;A=СДВИНУТЫЙ НОМЕР ВИРТУАЛЬНОГО ДИСКОВОДА
  381.                 INC A
  382.                 CP 4
  383.                 JR C,NEXTVIRT1
  384.                 XOR A
  385. NEXTVIRT1       LD D,A                          ;СОХРАНИЛИ ВИРТУАЛЬНЫЙ ДИСКОВОД
  386.                 LD A,L
  387.                 AND %11111100                   ;A=СБРОСИЛИ СТАРЫЙ НОМЕР ВИРТУАЛЬНОГО ДИСКОВОДА
  388.                 OR D                            ;ДОБАВИЛИ НОВЫЙ НОМЕР ВИРТУАЛЬНОГО ДИСКОВОДА
  389.                 LD L,A
  390.                 CALL WRITECMOS                  ;СОХРАНИЛИ НОМЕР РЕАЛЬНОГО И ВИРТУАЛЬНОГО ДИСКОВОДА
  391. ;               RST8 _MOUNTER,_MOUNT_RAMDISK    ;МОНТИРОВАНИЕ РАМДИСКА
  392.                 CALL REST2X2
  393.                 CALL PRT_VIRTDRV
  394.                 LD A,(ERS_FLAGS)
  395.                 AND M_MOUSE_ON
  396.                 RET Z
  397.                 JP DRAW_MOUSE
  398.  
  399. ;ИЗМЕНЕНИЕ НОМЕРА ДИСКОВОДА И СОХРАНЕНИЕ В КМОСЕ ЕСЛИ ТАКОВОЙ ОБНАРУЖЕН
  400. SELDRV          LD A,(LAST_K)                   ;ВЗЯЛИ НОМЕР ДИСКОВОДА
  401. SELDRV1         SUB "1"                         ;ОБРАТИЛИ В БИНАРНЫЙ ВИД ДЛЯ ЗАПИСИ В ПЕРЕМЕННУЮ
  402.                 LD HL,MAINLOP                   ;АДРЕС КУДА ВЕРНУТЬСЯ ПОСЛЕ ЗАПИСИ
  403.                 PUSH HL
  404. SELDRVPP        LD (DRV_SYM),A                  ;СОХРАНИЛИ НОВЫЙ НОМЕР РЕАЛЬНОГО ДИСКОВОДА
  405.                 RLCA
  406.                 RLCA
  407.                 LD D,A                          ;СДВИНУТЫЙ НОМЕР ВИРТУАЛЬНОГО ДИСКОВОДА
  408.                 LD A,(ERS_FLAGS)
  409.                 AND M_CLOCK_ON
  410.                 RET Z                           ;ЕСЛИ КМОС НЕ НАЙДЕН, ВЫХОДИМ
  411.                 LD H,VIRT_REAL_DRIVE
  412.                 CALL READCMOS
  413.                 AND %11110011                   ;СБРОСИЛИ СТАРЫЙ НОМЕР РЕАЛЬНОГО ДИСКОВОДА
  414.                 OR D                            ;ДОБАВИЛИ НОВЫЙ НОМЕР РЕАЛЬНОГО ДИСКОВОДА
  415.                 LD L,A
  416.                 CALL WRITECMOS                  ;СОХРАНЯЕМ В КМОСЕ
  417.                 CALL SET_DRIVE                  ;УСТАНОВКА ИЗМЕНЕНИЯ
  418.                 CALL REST2X2                    ;ВОССТАНОВИЛИ ПОД КУРСОРОМ МЫШИ
  419.                 CALL PRT_DRV_SYM                ;ПЕРЕПЕЧАТАЛИ СТРОКУ О ДИСКОВОДАХ
  420.                 LD A,(ERS_FLAGS)
  421.                 AND M_MOUSE_ON
  422.                 RET Z
  423.                 JP DRAW_MOUSE                   ;НАРИСОВАЛИ МЫШЬ НА СТАРОМ МЕСТЕ
  424.  
  425. ;FIX mouse key if no mouse
  426. ONERNCLS        LD A,(ERS_FLAGS)
  427.                 AND M_MOUSE_ON
  428.                 JR Z,ONERNC1
  429.                 LD A,0XFA
  430.                 IN A,(0XDF)
  431.                 RRA
  432.                 JP NC,_STUPID
  433. ONERNC1         POP AF
  434.                 EX (SP),HL
  435.                 RET
  436.  
  437. ;ПЕРЕХВАТ ДИСКОВОЙ ОШИБКИ ДЛЯ ОБРАБОТКИ
  438. ONERR           EX (SP),HL
  439.                 PUSH AF
  440.  
  441.                 PUSH DE
  442.                 PUSH HL
  443.                 LD DE,0X1303
  444.                 AND A
  445.                 SBC HL,DE
  446.                 POP HL
  447.                 POP DE
  448.                 JR Z,ONERR1
  449.                 PUSH DE
  450.                 PUSH HL
  451.                 LD DE,0X0D6B
  452.                 AND A
  453.                 SBC HL,DE
  454.                 POP HL
  455.                 POP DE
  456.                 JR NZ,ONERNCLS
  457. ;               LD A,H
  458. ;               CP HIGH (0X0D6B)
  459. ;               JR NZ,ONERNCLS
  460. ;               LD A,L
  461. ;               CP LOW (0X0D6B)
  462. ;               JR NZ,ONERNCLS
  463.  
  464. ONERR1          POP HL
  465.                 POP HL
  466.                 POP HL
  467.                 POP HL
  468.                 POP HL
  469.                 EI
  470.                 CALL GLUDIN
  471.                 LD HL,TRD_5CF4
  472.                 LD A,(HL)                       ;ВЗЯЛИ НОМЕР СЕКТОРА
  473.                 INC A
  474.                 CALL DIV10
  475.                 LD (NUM_SEC_TXT+1),A
  476.                 LD A,D
  477.                 LD (NUM_SEC_TXT),A
  478.                 INC HL
  479.                 LD A,(HL)                       ;ВЗЯЛИ НОМЕР ТРЕКА
  480.                 SRL A
  481.                 LD E,A
  482.                 ADC A,"0"
  483.                 SUB E
  484.                 LD (SIDE_DISK),A                ;СТОРОНА ДИСКА
  485.                 LD A,E
  486.                 CALL DIV10
  487.                 LD (NUM_TRK_TXT+1),A
  488.                 LD A,D
  489.                 LD (NUM_TRK_TXT),A
  490.                 LD IX,DSK_ERR                   ;ОКНО ВЫВОДИМ ПОЛНОСТЬЮ
  491.                 RST8 _WINW
  492.                 JP _RULILKA
  493.  
  494. RESET_VG        LD C,0XFF
  495.                 XOR A
  496.                 LD IX,0X3FF0                    ;OUT (C),A
  497.                 CALL DOSIX
  498.                 LD A,(DRV_SYM)
  499.                 OR 0X3C
  500.                 LD HL,0X2A53
  501.                 CALL SET_DOS_PAGE               ;установка DOS страницы
  502.                 LD A,0X68                       ;шаг назад
  503.                 LD C,0X1F
  504.                 CALL DOSIX
  505.                 LD HL,DSTUPID
  506.                 LD (ERR_SP),HL
  507.                 LD A,0XC3
  508.                 LD (TRD_5CC2),A
  509.                 LD HL,ONERR
  510.                 LD (TRD_5CC3),HL
  511.                 RET
  512.  
  513. SET_DOS_PAGE    PUSH HL
  514. DOSIX           PUSH IX
  515.                 JP TO_DOS
  516.  
  517. ;ПРОВЕРКА НАЛИЧИЯ МАРКЕРА РАМДИСКА, ПРИ ОТСУСТВИИ СОЗДАНИЕ ДИСКА НА 640КБ
  518. DISK_NONE       PEC_ON M_SHADOW_BF
  519.                 LD A,RAM_RAMDISK
  520.                 LD BC,WIN_P1
  521.                 OUT (C),A
  522.                 LD HL,0X7FFF
  523.                 LD A,(HL)
  524.                 DEC H
  525.                 CP "R"
  526.                 JR NZ,DISK_NONE1
  527.                 LD A,(HL)
  528.                 CP "D"
  529. DISK_NONE1      EX AF,AF'
  530.                 LD A,ZXSTD_CPU1;0XFA
  531.                 OUT (C),A
  532.                 PEC_OFF M_SHADOW_BF
  533.                 EX AF,AF'
  534.                 LD HL,ERS_FLAGS
  535.                 RES B_LOAD_IMG,(HL)
  536.                 JP NZ,CREATE_TRDRAM             ;МАРКЕР НЕ ОБНАРУЖЕН, СОЗДАТЬ
  537.                 RET
  538.  
  539. DIV10   LD D,0X30-1
  540.         INC D
  541.         SUB 0X0A
  542.         JR NC,$-3
  543.         ADD A,0X0A+0X30
  544.         RET
  545.  
  546. _RETRY  LD A,"R"
  547.         JR $+4
  548.  
  549. _IGNORE LD A,"I"
  550.         LD HL,0X3F7E
  551.         EX (SP),HL
  552.         DI
  553.         JP TO_DOS
  554.