Subversion Repositories pentevo

Rev

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

  1.  
  2. ;LAST UPDATE: 24.11.2018 savelij
  3.  
  4. PAGE
  5.                 TITLE "main.a80"
  6.  
  7.                 include ../../macros.a80
  8.                 include ../../define.a80
  9.                 include ../../global_vars.a80
  10.                 include ../../ports_ide.a80
  11.                 include ../../basic_tokens.a80
  12.                 include ../../bas_trd_vars.a80
  13.                 include ../../tmpkeys.a80
  14.                 include version.a80
  15.  
  16. ;BIT 4,(IY+55)
  17. ;BIT 3,(IY+55)-0-ЗАПРЕТ АНИМАЦИИ КОШАКА, 1-РАЗРЕШЕНИЕ
  18. ;BIT 2,(IY+55)-0-ФАЙЛОВ МЕНЕЕ ВЫСОТЫ ОКНА, 1-БОЛЬШЕ
  19. ;BIT 0,(IY+55)
  20.  
  21. TO_DOS4BAS      EQU 0X3D13
  22. TO_DOS          EQU 0X3D2F
  23.  
  24. ADR_CAT         EQU 0XC000                      ;АДРЕС БУФЕРА ДЛЯ ДИСКЕТЫ ИЛИ ОБРАЗА
  25. ADR_CAT_FAT     EQU ADR_CAT+(0X200*6)           ;АДРЕС БУФЕРА НАЙДЕННЫХ ФАЙЛОВ НА FAT
  26. ADR_CAT_SCRH    EQU ADR_CAT_FAT+(2048*2)        ;АДРЕС БУФЕРА ДЛЯ ПОИСКА ФАЙЛОВ
  27. ADRTBLDIRL      EQU 0XF5FF                      ;СТЕК СОХРАНЕНИЯ ДАННЫХ ПРИ ХОЖДЕНИИ ПО ДИРАМ
  28. BUFTSC          EQU 0XF700                      ;180 ТАБЛИЦА АДРЕСОВ СТРОК ЭКРАНА               F700
  29. MOUSE_BUFF      EQU BUFTSC+0X0180               ;10 БУФЕР СОХРАНЕНИЯ ПОД МЫШЬЮ
  30. COLBUF          EQU MOUSE_BUFF+0X10             ;20 БУФЕР СОХРАНЕНИЯ ЦВЕТА
  31. BUF_FILEITEM    EQU COLBUF+0X20                 ;20 БУФЕР ОПИСАТЕЛЯ ФАЙЛА
  32. BUF_RDSEC       EQU BUFTSC+0X200                ;200 БУФЕР СЕКТОРА ПРИ ПРОВЕРКЕ ФАЙЛОВ          F900
  33. BUF_RDPATH      EQU BUF_RDSEC+0X200             ;100 БУФЕР ТЕКУЩЕГО ПУТИ                        FB00
  34. BUF_LEVDIR      EQU BUF_RDPATH+0X100            ;400 БУФЕР УРОВНЕЙ ДИР ДЛЯ ФАЙЛОВОГО ОКНА       FC00
  35.  
  36. H_FILE          EQU 16                          ;ШИРИНА ОКНА ДЛЯ ВЫВОДА ФАЙЛОВ C TR-DOS
  37. V_FILE          EQU 24                          ;ВЫСОТА ОКНА ДЛЯ ВЫВОДА ФАЙЛОВ C TR-DOS
  38. FV_FILE         EQU 26                          ;ШИРИНА ОКНА ДЛЯ ВЫВОДА ФАЙЛОВ C FAT
  39. FV_FILE6        EQU ((FV_FILE-3)*8)/6           ;ШИРИНА ОКНА ДЛЯ ВЫВОДА ФАЙЛОВ С FAT В ЗНАКОМЕСТАХ 6Х8
  40. FH_FILE         EQU 24                          ;ВЫСОТА ОКНА ДЛЯ ВЫВОДА ФАЙЛОВ С FAT
  41. WIDE            EQU 1                           ;два пробела с боков
  42.  
  43. CMOS_ON         EQU 0X80
  44. CMOS_OFF        EQU 0
  45.  
  46.                 ORG 0X6000
  47.                 DI
  48.                 CALL CLEAR_128K
  49.                 LD A,0X10
  50.                 CALL SET_7FFD                   ;ВКЛЮЧЕНИЕ БАСИКА48 И СТРАНИЦЫ 0
  51.                 CALL ADRTSC                     ;СОЗДАНИЕ ТАБЛИЦЫ АДРЕСОВ СТРОК ЭКРАНА
  52.                 RST8 _COM_DEV,_DEVFIND
  53.                 JR C,START3
  54.                 RST8 _MOUNTER,_FIND_MOUNTED
  55. START3          RST8 _COM_DEV,_CONTROL_SD
  56.                 EI
  57.                 HALT
  58.                 DI
  59.                 LD H,0
  60.                 CALL READCMOS                   ;ЧТЕНИЕ СЕКУНД ДЛЯ ОПРЕДЕЛЕНИЯ НАЛИЧИЯ КМОС
  61.                 INC L
  62.                 LD HL,ERS_FLAGS
  63.                 JR NZ,START2                    ;ЕСЛИ ПРОЧИТАЛОСЬ 0XFF,ТО
  64.                 RES B_CLOCK_ON,(HL)             ;КМОС НЕ НАЙДЕН
  65.                 JR START1
  66.  
  67. START2          SET 2,(HL)                      ;КМОС НАЙДЕН
  68. START4          CALL SET_MODES
  69. START1          CALL DETECTMOUSE                ;ОПРЕДЕЛЕНИЕ НАЛИЧИЯ МЫШИ
  70.                 CALL GLUDIN                     ;БУМКНУЛИ В AY
  71.                 CALL MOUSE                      ;ОПРОС МЫШИ
  72.                 LD HL,0X6FCC
  73.                 LD (ARXY),HL                    ;УСТАНОВКА ДЕФОЛТНОЙ ПОЗИЦИИ МЫШИ ПРИ СТАРТЕ
  74.                 CALL DISK_NONE
  75.                 CALL RESET_VG                   ;СБРОС ВГШКИ И УСТАНОВКА ПЕРЕХВАТЧИКА ОШИБОК DOS
  76.                 CALL SYSTEM
  77.                 LD C,0
  78.                 CALL TO_DOS4BAS
  79. RESTART         DI
  80.                 LD A,0X10
  81.                 CALL SET_7FFD                   ;ВКЛЮЧИЛИ БАСИК48 И СТРАНИЧКУ 0
  82.                 CALL TURBO_7MHZ
  83.                 CALL SYSTEM
  84.                 CALL RESET_VG                   ;СБРОС ВГШКИ И УСТАНОВКА ПЕРЕХВАТЧИКА ОШИБОК DOS
  85.                 RES 3,(IY+55)
  86.                 LD SP,0X6000
  87.                 LD HL,0X3E00
  88.                 PUSH HL
  89.                 LD HL,0X1303
  90.                 PUSH HL                         ;СФОРМИРОВАЛИ ДНО СТЕКА
  91.                 LD (ERR_SP),SP                  ;ЗАНЕСЛИ ТЕКУЩИЙ АДРЕС В ПЕРЕМЕНЫЕ БАСИКА
  92.                 LD (TEK_SP),SP
  93.                 CALL S_FACE                     ;ВЫВОД НА ЭКРАН ОСНОВНОГО ВИДА
  94.                 LD IX,MAINMENU
  95.                 RST8 _WINW
  96.                 RES 5,(IY+1)                    ;НА КЛАВИАТУРЕ НИЧЕГО НЕ НАЖАТО
  97. ;ВХОД В ГЛАВНЫЙ ЦИКЛ ОПРОСА УПРАВЛЕНИЯ
  98. _RULILKA        EI     
  99.                 LD A,(ERS_FLAGS)
  100.                 AND M_MOUSE_ON                  ;ПРОВЕРКА НАЛИЧИЯ МЫШИ
  101.                 JR Z,_RULNMO
  102. ;FIX КОЛЕСО МЫШИ
  103. MKEYPR          EI
  104.                 HALT
  105.                 LD A,HIGH (MOUSE_KEYS)
  106.                 IN A,(LOW (MOUSE_KEYS))
  107.                 CPL
  108.                 AND 7
  109.                 JR NZ,MKEYPR
  110.                 CALL SAVE2X2                    ;ЕСЛИ МЕНЮ НАПЕЧАТАЛИ ПОВЕРХ СТРЕЛКИ
  111. _RULNMO         CALL SET_ADR_ATR                ;УСТАНОВКА НОВОГО АДРЕСА ДЛЯ ЦВЕТНОЙ ПОЛОСКИ
  112. ;               RES 5,(IY+1)                    ;НА КЛАВИАТУРЕ НИЧЕГО НЕ НАЖАТО
  113.                 JR MAINLOP
  114.  
  115. ;НАЖАТА СТРЕЛКА ВВЕРХ
  116. UP              CALL CURSOR_UP                  ;СМЕНИЛИ ТЕКУЩИЙ ПУНКТ НА -1
  117.                 JR SET_POS1                    
  118.  
  119. ;НАЖАТА СТРЕЛКА ВПРАВО
  120. RIGHT           BIT 1,(IX+_FLAGS)               ;ПРОВЕРКА ПРОСТО МЕНЮ ИЛИ ФАЙЛОВОЕ
  121.                 PUSH AF                         ;СОХРАНИЛИ РЕЗУЛЬТАТ ПРОВЕРКИ
  122.                 CALL NZ,PAGEDN                  ;ЕСЛИ ФАЙЛОВОЕ, ТО ЛИСТАНИЕ СТРАНИЧНОЕ
  123.                 POP AF                          ;ВОССТАНОВИЛИ РЕЗУЛЬТАТ ПРОВЕРКИ
  124.                 JR NZ,SET_POS1                  ;ЕСЛИ ФАЙЛОВОЕ ПРОДОЛЖАЕМ
  125.                 LD A,(IX+_NUM_KOL_L)
  126.                 AND A
  127.                 JR Z,SET_POS
  128.                 DEC A                           ;ИНАЧЕ ПЕРЕХОД КУРСОРА НА ПОСЛЕДНИЙ ПУНКТ
  129.                 JR SET_POS                      ;ИЗМЕНЯЕМ ПОЛОЖЕНИЕ КУРСОРА И ПРОДОЛЖАЕМ
  130.  
  131. ;НАЖАТА СТРЕЛКА ВНИЗ
  132. DOWN            CALL CURSOR_DOWN                ;СМЕНИЛИ ТЕКУЩИЙ ПУНКТ НА +1
  133.                 JR SET_POS1
  134.  
  135. ;НАЖАТА СТРЕЛКА ВЛЕВО
  136. LEFT            BIT 1,(IX+_FLAGS)               ;ПРОВЕРКА ПРОСТО МЕНЮ ИЛИ ФАЙЛОВОЕ
  137.                 PUSH AF                         ;СОХРАНИЛИ РЕЗУЛЬТАТ ПРОВЕРКИ
  138.                 CALL NZ,PAGEUP                  ;ЕСЛИ ФАЙЛОВОЕ, ТО ЛИСТАНИЕ СТРАНИЧНОЕ
  139.                 POP AF                          ;ВОССТАНОВИЛИ РЕЗУЛЬТАТ ПРОВЕРКИ
  140.                 JR NZ,SET_POS1                  ;ЕСЛИ ФАЙЛОВОЕ ПРОДОЛЖАЕМ
  141.                 XOR A                           ;ИНАЧЕ ПЕРЕХОД КУРСОРА НА ПЕРВЫЙ ПУНКТ
  142. SET_POS         LD (IX+_NUM_PKT),A              ;ИЗМЕНИЛИ ПОЗИЦИЮ КУРСОРА
  143.                 LD (IX+_TEK_PKT_L),A
  144.                 LD (IX+_TEK_PKT_H),0            ;ИЗМЕНИЛИ НОМЕР ВЫБРАННОГО ПУНКТА
  145. SET_POS1        CALL COLOR_CURSOR               ;ПЕРЕРИСОВКА ЦВЕТНОЙ ПОЛОСКИ МЕНЮ
  146. SET_POS2        CALL GLUDIN                     ;БУМКНУЛИ В AY
  147. MAINLOP
  148. ;               RES 5,(IY+1)                    ;СБРОС НАЖАТЫХ КНОПОК
  149.                 RST8 _COM_DEV,_CONTROL_SD       ;ПРОВЕРКА НАЛИЧИЯ SD КАРТ И ОБНОВЛЕНИЕ ИНДИКАТОРОВ
  150.                 LD A,(ERS_FLAGS)
  151.                 AND M_MOUSE_ON                  ;ПРОВЕРКА НАЛИЧИЯ МЫШИ
  152.                 JP Z,MAINNMO
  153.                 LD HL,(ARXY)                    ;СТАРАЯ КООРДИНАТА МЫШИ
  154.                 PUSH HL
  155.                 CALL MOUSE                      ;ОПРОС ПОРТОВ МЫШИ
  156.                 POP BC
  157.                 AND A
  158.                 SBC HL,BC
  159.                 JR Z,NO_SELECT                  ;НЕ БЫЛО ДВИЖЕНИЯ МЫШИ
  160.                 CALL RESTORE_KOSHAK             ;БЫЛО ДВИЖЕНИЕ МЫШИ, СБРОС СЧЕТЧИКОВ КОШАКА
  161.                 CALL MOUOPT                     ;ПРОВЕРКА НАВЕДЕНИЯ МЫШИ НА ЗАДАННОЕ ОКНО
  162. NO_SELECT       LD BC,MOUSE_KEYS
  163.                 IN A,(C)                        ;ОПРОС НАЖАТИЯ КНОПОК МЫШИ
  164.                 AND 7
  165.                 CP 6
  166.                 JR Z,PRESS_MOUSE                ;ЕСЛИ НАЖАТА ЛЕВАЯ КНОПКА МЫШИ
  167.                 CP 5
  168.                 JP Z,RESTART                    ;ЕСЛИ НАЖАТА ПРАВАЯ КНОПКА МЫШИ
  169.                 CALL PRINTTIME                  ;ОБНОВИЛИ ВРЕМЯ ЕСЛИ ИЗМЕНИЛОСЬ
  170.                 EI
  171.                 HALT
  172.                 CALL REST2X2                    ;ВОССТАНОВИЛИ КУСОК ЭКРАНАА ПОД МЫШЬЮ
  173.                 CALL DRAW_MOUSE                 ;НАРИСОВАЛИ КУРСОР МЫШИ
  174.                 JR MAINQMO                      ;ПРОДОЛЖЕНИЕ ОПРОСА
  175.  
  176. PRESS_MOUSE     CALL OPMSPL
  177.                 AND A
  178.                 JR Z,CP_MOUSE4
  179.                 LD (LAST_K),A
  180.                 CALL TIMELP
  181.                 JR SELECT_KEY
  182.  
  183. CP_MOUSE4       CALL MOUOPT                     ;ПРОВЕРКА ПОПАДАНИЯ МЫШИ В ПРЕДЕЛЫ ТЕКУЩЕГО ОКНА
  184.                 JR C,MAINNMO                    ;НЕ ПОПАЛИ И ЕДЕМ ДАЛЕЕ
  185.                 LD L,(IX+_ADR_HOTKEY_L)
  186.                 LD H,(IX+_ADR_HOTKEY_H)
  187.                 LD A,H
  188.                 OR L
  189.                 JR Z,ENTER                      ;СПИСКА ХОТКЕЕВ НЕТ, ПЕРЕХОДИМ ПО НОМЕРУ ПУНКТА
  190.                 LD E,(IX+_NUM_PKT)              ;ВЗЯЛИ НОМЕР ПУНКТА КУДА ПОПАЛИ МЫШЬЮ
  191.                 LD D,0
  192.                 ADD HL,DE                       ;АДРЕС ХОТКЕЯ ВЫБРАННОГО ПУНКТА
  193.                 LD DE,LAST_K
  194.                 LDI                             ;ЭМИТАЦИЯ НАЖАТИЯ ЗАДАННОЙ КНОПКИ
  195.                 JR ENTER
  196.                
  197. MAINNMO         CALL PRINTTIME                  ;ОБНОВЛЕНИЕ ВРЕМЕНИ, ЕСЛИ В ОНО ОБНОВИЛОСЬ
  198.                 EI
  199.                 HALT
  200. MAINQMO         BIT 5,(IY+1)                    ;ПРОВЕРКА НАЖАТИЯ КНОПОК КЛАВИАТУРЫ
  201.                 CALL Z,CP_TIME_KOSHAK           ;ЕСЛИ НЕ НАЖАТО НИЧЕГО, ПРОВЕРЯЕМ СЧЕТЧИК КОШАКА
  202.                 JP Z,MAINLOP                    ;ПРОДОЛЖАЕМ ОПРОС УПРАВЛЕНИЯ
  203.                 CALL 0X1F54                     ;ПРОВЕРКА НА BREAK
  204.                 JP NC,RESTART                   ;ЕСЛИ BREAK НАЖАТ ПЕРЕЗАПУСКАЕМСЯ
  205. SELECT_KEY      CALL RESTORE_KOSHAK             ;НАЖАТО НЕЧТО НА КЛАВЕ, СБРОС СЧЕТЧИКА КОШАКА
  206.                 RES 5,(IY+1)                    ;НА КЛАВИАТУРЕ НИЧЕГО НЕ НАЖАТО
  207.                 LD HL,LAST_K
  208.                 LD A,(HL)                       ;ВЗЯЛИ НАЖАТУЮ КЛАВИШУ
  209.                 LD B,0
  210.                 LD HL,MAIN_KEYS
  211.                 LD C,(HL)                       ;КОЛИЧЕСТВО ДОСТУПНЫХ КНОПОК
  212.                 LD D,C
  213.                 INC HL
  214.                 CPIR
  215.                 JR NZ,NOMAINKEYS                ;НИЧЕГО НЕ НАШЛИ, ДАЛЕЕ СМОТРИМ КНОПКИ ТЕКУЩЕГО ОКНА
  216.                                                 ;НАЖАТО ЧТО-ТО ИЗ ГЛАВНЫХ КНОПОК, ДОСТУПНЫХ ВСЕГДА
  217.                 LD HL,ADREXEKEYS
  218.                 LD A,D                          ;КОЛИЧЕСТВО КНОПОК В ТАБЛИЦЕ -1
  219.                 SUB C                           ;ПОЛУЧИЛИ ВЫБРАННЫЙ НОМЕР
  220.                 DEC A
  221.                 JR JUMP2HL
  222.  
  223. ;ПРОВЕРКА ХОТКЕЕВ В ТЕКУЩЕМ ОКНЕ
  224. NOMAINKEYS      LD L,(IX+_ADR_HOTKEY_L)
  225.                 LD H,(IX+_ADR_HOTKEY_H)
  226.                 LD C,A
  227.                 LD A,H
  228.                 OR L
  229.                 JP Z,MAINLOP                    ;ЕСЛИ СПИСКА НЕТ, ПРОДОЛЖАЕМ ОПРОС
  230.                 LD A,C
  231.                 LD C,(IX+_V_SIZE)
  232.                 LD E,(HL)
  233.                 INC HL
  234.                 DEC C                           ;КОЛИЧЕСТВО КНОПОК
  235.                 DEC C                           ;ВЫСОТА ОКНА -2
  236.                 LD D,C
  237.                 LD B,0
  238.                 CPIR                            ;СКАНИРОВАНИЕ СПИСКА ЗАДАННЫХ КЛАВИШ
  239.                 JR NZ,OSTAT_KEYS
  240.                 LD A,D                          ;ВЫСОТА ОКНА
  241.                 SUB C
  242.                 DEC A                           ;ПОЛУЧИЛИ НОМЕР НАЖАТОЙ КНОПКИ И -1
  243.                 LD (IX+_NUM_PKT),A              ;НОМЕР ПУНКТА В ОКНЕ
  244.                 LD (IX+_TEK_PKT_L),A            ;НОМЕР НАЖАТОЙ КЛАВИШИ ПО УКАЗАННОМУ СПИСКУ
  245. ENTER           LD A,(ERS_FLAGS)
  246.                 AND M_MOUSE_ON
  247.                 CALL NZ,TIMELP                  ;ОБНОВЛЕНИЕ ВРЕМЕНИ ЕСЛИ ОНО ИЗМЕНИЛОСЬ
  248.                 CALL REST2X2                    ;СТЕРЛИ КУРСОР МЫШИ
  249.                 CALL GLUDIN                     ;БУМКНУЛИ В AY
  250.                 LD A,(IX+_NUM_PKT)              ;НОМЕР ИЗ СПИСКА КОТОРЫЙ ВЫЗВАТЬ
  251. JUMP2HL1        LD L,(IX+_ADR_PRG_L)
  252.                 LD H,(IX+_ADR_PRG_H)            ;ВЗЯЛИ СПИСОК АДРЕСОВ 1 ИЗ КОТОРЫХ БУДЕМ ВЫЗЫВАТЬ
  253. JUMP2HL         ADD A,A
  254.                 ADD A,L
  255.                 LD L,A
  256.                 ADC A,H
  257.                 SUB L
  258.                 LD H,A
  259.                 LD A,(HL)
  260.                 INC HL
  261.                 LD H,(HL)
  262.                 LD L,A
  263.                 JP (HL)
  264.  
  265. OSTAT_KEYS      EX AF,AF'
  266.                 LD A,E
  267.                 SUB D
  268.                 JP Z,MAINLOP
  269.                 LD C,A
  270.                 EX AF,AF'
  271.                 CPIR
  272.                 JP NZ,MAINLOP
  273.                 LD A,E
  274.                 SUB C
  275.                 DEC A
  276.                 JR JUMP2HL1
  277.  
  278. ;ИЗМЕНЕНИЕ РЕЖИМА ПАМЯТИ
  279. CHNGMODE        LD HL,MEMMODE
  280.                 DEC (HL)                        ;СМЕНИЛИ РЕЖИМ ПАМЯТИ
  281.                 JP P,CHNGMODEY
  282.                 LD (HL),2                       ;ЕСЛИ ПЕРЕШЛИ ЧЕРЕЗ 0, ТО ВЫСТАВИЛИ РЕЖИМ 48
  283. CHNGMODEY       LD A,(ERS_FLAGS)
  284.                 AND M_CLOCK_ON                  ;ПРОВЕРКА НАЛИЧИЯ КМОСА
  285.                 RET Z
  286.                 LD A,(ERS_FLAGS)
  287.                 AND M_EMU_TAPE
  288.                 RLCA
  289.                 RLCA
  290.                 LD L,A
  291.                 LD A,(MEMMODE)
  292.                 OR L
  293.                 LD L,A
  294. CHNGMODEY1      LD A,(SYSREG1)
  295.                 AND 0X10
  296.                 RLCA
  297.                 RLCA
  298.                 RLCA
  299.                 OR L
  300.                 LD C,A
  301.                 LD H,CMOS_BYTE_01
  302.                 CALL READCMOS
  303.                 AND %01111100
  304.                 OR C
  305. CHANGE_MODES    LD L,A
  306.                 CALL WRITECMOS                  ;СОХРАНИЛИ В КМОС ИЗМЕНЕНЫЙ РЕЖИМ
  307.                 CALL REST2X2
  308.                 CALL SET_MODES
  309.                 CALL PRT_MODES
  310.                 LD A,(ERS_FLAGS)
  311.                 AND M_MOUSE_ON
  312.                 JP Z,MAINLOP
  313.                 CALL DRAW_MOUSE
  314.                 CALL TIMELP
  315.                 JP MAINLOP
  316.  
  317. ;ИЗМЕНЕНИЕ РЕЖИМА ТУРБО 0=3,5MHZ, 1=7MHZ, 2-14MHZ
  318. CHNGTURBO       LD HL,TURBO_NUM
  319.                 INC (HL)                        ;СМЕНИЛИ TURBO РЕЖИМ
  320.                 LD A,(HL)
  321.                 CP 3
  322.                 JR C,CHNGTURBO1
  323.                 LD (HL),0                       ;ЕСЛИ ПЕРЕШЛИ ЧЕРЕЗ 0, ТО ВЫСТАВИЛИ РЕЖИМ 14MHZ
  324. CHNGTURBO1      LD A,(HL)
  325.                 AND A
  326.                 LD DE,0X1000
  327.                 JR Z,CHNGTURBO2
  328.                 DEC A
  329.                 LD DE,0
  330.                 JR Z,CHNGTURBO2
  331.                 LD DE,0X10*0X100+M_TURBO14
  332. CHNGTURBO2      LD A,D
  333.                 LD HL,SYSREG1
  334.                 LD A,(HL)
  335.                 AND %11101111                   ;ИНВЕРСИЯ БИТА ТУРБОРЕЖИМА
  336.                 OR D
  337.                 LD (HL),A
  338.                 LD H,CMOS_BYTE_00
  339.                 CALL READCMOS
  340.                 AND M_TURBO14!0XFF
  341.                 OR E
  342.                 LD L,A
  343.                 LD H,CMOS_BYTE_00
  344.                 CALL WRITECMOS
  345.                 JP CHNGMODEY
  346.  
  347. CHNGTAPMODE     LD H,CMOS_BYTE_00
  348.                 CALL READCMOS
  349.                 XOR M_EMUL_TAPE
  350.                 JR CHANGE_MODES
  351.  
  352. CHNGGLUKMOD     LD H,CMOS_BYTE_00
  353.                 CALL READCMOS
  354.                 AND MKOL_MODES!0XFF
  355.                 LD C,A
  356.                 LD A,L
  357.                 AND MKOL_MODES
  358.                 INC A
  359.                 CP KOL_MODES
  360.                 JR C,CHNGGLUKMOD1
  361.                 XOR A
  362. CHNGGLUKMOD1    OR C
  363.                 LD L,A
  364.                 JR CHANGE_MODES
  365.  
  366. EN_AUTOMNT      LD H,CMOS_BYTE_01
  367.                 CALL READCMOS
  368.                 XOR M_AUTOMOUNT
  369.                 JP CHANGE_MODES
  370.  
  371. EN_LOADFONT     LD H,CMOS_BYTE_00
  372.                 CALL READCMOS
  373.                 XOR M_RELOAD_FONT
  374.                 JP CHANGE_MODES
  375.  
  376. SET_TYPEFONT    LD H,CMOS_BYTE_00
  377.                 CALL READCMOS
  378.                 XOR M_TYPE_FONT
  379.                 PUSH AF
  380.                 PUSH HL
  381.                 AND M_TYPE_FONT
  382.                 JR Z,SETTYPEFONT
  383.                 LD A,1
  384. SETTYPEFONT     RST8 _SETUP_FONT
  385.                 POP HL
  386.                 POP AF
  387.                 JP CHANGE_MODES
  388.  
  389. ;ВКЛЮЧЕНИЕ/ВЫКЛЮЧЕНИE ОТОБРАЖЕНИЯ ЧАСОВ
  390. CMOS_ONOFF      LD A,(ERS_FLAGS)
  391.                 AND M_CLOCK_ON                  ;ПРОВЕРКА НАЛИЧИЯ КМОСА
  392.                 JP Z,MAINLOP
  393.                 LD H,CMOS_BYTE_01
  394.                 CALL READCMOS
  395.                 XOR M_CLOCK_VIEW
  396.                 LD L,A
  397.                 PUSH AF
  398.                 LD H,CMOS_BYTE_01
  399.                 CALL WRITECMOS
  400.                 POP AF
  401.                 AND M_CLOCK_VIEW
  402.                 JP Z,MAINLOP
  403.                 LD HL,TIME_OFF
  404.                 RST8 _PRINT_MESSAGE
  405.                 JP MAINLOP
  406.  
  407. ;ВКЛЮЧЕНИЕ/ВЫКЛЮЧЕНИЕ КУРСОРА МЫШИ
  408. MOUSE_ONOFF     LD HL,ERS_FLAGS
  409.                 LD A,(HL)
  410.                 XOR M_MOUSE_ON                  ;ИНВЕРСИЯ ОТОБРАЖЕНИЯ МЫШИ
  411.                 LD (HL),A
  412.                 AND M_MOUSE_ON
  413.                 CALL NZ,DETECTMOUSE             ;ЕСЛИ ВКЛЮЧИЛИ, ПРОВЕРЯЕМ НАЛИЧИЕ
  414.                 CALL NC,REST2X2                 ;ЕСЛИ МЫШЬ НЕ НАЙДЕНА, ТО ВЫКЛЮЧАЕМ ОТОБРАЖЕНИЕ
  415.                 JP MAINLOP
  416.  
  417. ;ОЖИДАНИЕ НАЖАТИЯ ЧЕГО-НИБУДЬ ПОСЛЕ ОШИБКИ
  418. EXIT4ERROR      RES 5,(IY+1)                    ;НА КЛАВИАТУРЕ НИЧЕГО НЕ НАЖАТО
  419.                 LD BC,MOUSE_KEYS
  420.                 IN D,(C)
  421. E4E1            CALL PRINTTIME
  422.                 EI
  423.                 HALT
  424.                 BIT 5,(IY+1)
  425.                 JR NZ,E4E3
  426.                 LD A,(ERS_FLAGS)
  427.                 AND M_MOUSE_ON
  428.                 JR NZ,E4E1
  429.                 LD A,HIGH (MOUSE_KEYS)
  430.                 IN A,(LOW (MOUSE_KEYS))
  431.                 CP D
  432.                 JR Z,E4E1
  433. E4E2            EX AF,AF'
  434.                 CALL TIMELP
  435.                 EX AF,AF'
  436.                 RRA
  437.                 RET
  438.  
  439. E4E3            XOR A
  440.                 IN A,(0XFE)
  441.                 CPL
  442.                 AND 0X1F
  443.                 JR NZ,E4E3
  444.                 LD (LAST_K),A
  445.                 RES 5,(IY+1)                    ;НА КЛАВИАТУРЕ НИЧЕГО НЕ НАЖАТО
  446.                 RET
  447.  
  448. ;ПЕЧАТЬ ТЕКУЩЕГО ВЫБРАННОГО ДИСКОВОДА
  449. PRT_DRV_SYM     LD A,(TRD_5CF8)
  450.                 ADD A,"A"
  451.                 LD (TXT_DRIVE),A
  452.                 LD HL,TRDDRV_MODE
  453.                 RST8 _PRINT_MESSAGE
  454.                 RET
  455.  
  456. ;РАСПЕЧАТКА ТЕКУЩЕГО РЕЖИМА
  457. PRT_MODES       LD HL,SPEED_MODE
  458.                 RST8 _PRINT_MESSAGE
  459.                 LD HL,MEM_MODE
  460.                 RST8 _PRINT_MESSAGE
  461.                 LD HL,EMUTAPLOAD
  462.                 RST8 _PRINT_MESSAGE
  463.                 LD HL,SET_RESET
  464.                 RST8 _PRINT_MESSAGE
  465.                 LD HL,ROMLOADFONT
  466.                 RST8 _PRINT_MESSAGE
  467.                 LD HL,TYPESFONT
  468.                 RST8 _PRINT_MESSAGE
  469.                 LD HL,TXT_AUTOMOUNT
  470.                 RST8 _PRINT_MESSAGE
  471.                 RET
  472.  
  473. ;РАСПЕЧАТКА ТЕКУЩЕГО ВИРТУАЛЬНОГО ДИСКОВОДА
  474. PRT_VIRTDRV     LD H,VIRT_REAL_DRIVE
  475.                 CALL READCMOS
  476.                 AND 3
  477.                 ADD A,"A"
  478.                 LD C,A                          ;БУКВА ВИРТУАЛЬНОГО ДИСКОВОДА
  479.                 RST8 _MOUNTER,_GET_VIRT_BITS
  480.                 LD H,A
  481.                 AND 0X0F
  482.                 LD L,A
  483.                 LD A,H
  484.                 REPT 4
  485.                 RLCA
  486.                 ENDM
  487.                 AND H
  488.                 LD HL,VIRT_DRIVE
  489.                 JR NZ,PRTVIRTDRV2
  490.                 LD (HL)," "
  491.                 INC HL
  492.                 LD (HL),C
  493.                 INC HL
  494.                 LD (HL)," "
  495.                 JR PRTVIRTDRV1
  496.  
  497. PRTVIRTDRV2     LD (HL),"o"
  498.                 INC HL
  499.                 LD (HL),"f"
  500.                 INC HL
  501.                 LD (HL),"f"
  502. PRTVIRTDRV1     LD HL,VIRTUAL_DRV
  503.                 RST8 _PRINT_MESSAGE
  504.                 LD HL,ADR_CAT
  505.                 RST8  _MOUNTER,_GET_MOUNTED
  506.                 LD HL,ADR_CAT
  507.                 LD DE,MNT_DRV_A
  508.                 CALL COPY_MNTNAME
  509.                 LD L,0X40
  510.                 LD DE,MNT_DRV_B
  511.                 CALL COPY_MNTNAME
  512.                 LD L,0X80
  513.                 LD DE,MNT_DRV_C
  514.                 CALL COPY_MNTNAME
  515.                 LD L,0XC0
  516.                 LD DE,MNT_DRV_D
  517.                 CALL COPY_MNTNAME
  518.                 CALL GET_RAMD_NAME
  519.                 LD HL,MOUNTED_DRV
  520.                 RST8 _PRINT_MESSAGE
  521.                 RET
  522.  
  523. COPY_MNTNAME    PUSH HL
  524.                 LD A,(HL)
  525.                 AND A
  526.                 JR NZ,COPY_MNTNAME1
  527.                 LD HL,TXT_NONE
  528.                 LD BC,0X0C
  529.                 JR COPY_MNTNAME3
  530.  
  531. COPY_MNTNAME1   LD BC,8
  532.                 LDIR
  533.                 LD A,"."
  534.                 LD (DE),A
  535.                 INC DE
  536.                 LD C,3
  537. COPY_MNTNAME3   LDIR
  538.                 POP HL
  539.                 RET
  540.  
  541. ;ПОЛУЧЕНИЕ ИМЕНИ ФАЙЛА ЗАГРУЖЕННОГО В РАМДИСК
  542. GET_RAMD_NAME   PEC_ON M_SHADOW_BF
  543.                 LD BC,WIN_P2
  544.                 LD A,RAM_RAMDISK
  545.                 OUT (C),A
  546.                 LD DE,CPU2+0X3DFF
  547.                 LD A,(DE)
  548.                 AND A
  549.                 JR Z,GRN1
  550.                 LD HL,GRN1
  551.                 PUSH HL
  552.                 LD HL,IN_RAMDISK
  553.                 LD B,8
  554.                 CALL GRN2
  555.                 LD B,3
  556.                 LD (HL),"."
  557.                 INC HL
  558. GRN2            LD A,(DE)
  559.                 LD (HL),A
  560.                 DEC D
  561.                 INC HL
  562.                 DJNZ GRN2
  563.                 RET
  564.  
  565. GRN1            LD BC,WIN_P2
  566.                 LD A,0XFD
  567.                 OUT (C),A
  568.                 PEC_OFF M_SHADOW_BF
  569.                 RET
  570.  
  571. ;ВЫВОД ОСНОВНОГО МЕНЮ И НАДПИСЕЙ
  572. S_FACE          LD A,7
  573.                 CALL CLS
  574.                 LD HL,TXTFULLSCR
  575.                 RST8 _PRINT_MESSAGE
  576.                 CALL PRT_DRV_SYM                ;ПЕЧАТЬ ТЕКУЩЕГО ДИСКОВОДА
  577.                 CALL PRT_MODES                  ;ПЕЧАТЬ ТЕКУЩЕГО РЕЖИМА
  578.                 CALL PRT_VIRTDRV                ;ПЕЧАТЬ ТЕКУЩЕГО ВИРТУАЛЬНОГО ДИСКОВОДА
  579.                 XOR A
  580.                 JP DRAW_KOSHAK                  ;ВЫВОД 0 ФАЗЫ КОШАКА
  581.  
  582. SET_EFF7_A_     LD A,(SYSREG1)
  583. SET_EFF7        LD BC,PENT_CONF
  584.                 OUT (C),A
  585.                 RET
  586.  
  587. SET_7FFD_0      LD A,0X10
  588. SET_7FFD        PUSH BC
  589.                 LD BC,CONF_128
  590.                 OUT (C),A
  591.                 POP BC
  592.                 RET
  593.  
  594. MEMSET          CALL CLEAR_128K
  595.                 LD A,(TURBO_NUM)                ;УСТАНОВКА TURBO РЕЖИМА
  596.                 AND A
  597.                 LD DE,0X10A3                    ;3,5MHZ PORTS EFF7 BIT4=1 XX77 BIT3=0
  598.                 JR Z,MEMSET01
  599.                 DEC A
  600.                 LD DE,0XA3                      ;7MHZ PORTS EFF7 BIT4=0 XX77 BIT3=0
  601.                 JR Z,MEMSET01
  602.                 LD DE,0X10AB                    ;14MHZ PORTS EFF7 BIT4=1 XX77 BIT3=1
  603. MEMSET01        LD BC,0XFF77
  604.                 PEC_ON M_SHADOW_BF
  605.                 OUT (C),E
  606.                 PEC_OFF M_SHADOW_BF
  607.                 LD A,D
  608.                 CALL SET_EFF7
  609.                 LD A,(MEMMODE)
  610.                 AND A
  611.                 RET Z                           ;РЕЖИМ ПОЛНОЙ ПАМЯТИ
  612. MEMSET1         DEC A
  613.                 JR Z,MEMORY48
  614. ;ВКЛЮЧЕНИЕ РЕЖИМА BASIC128
  615. ON_BIT128       LD A,(SYSREG1)
  616.                 AND 0X10
  617.                 ADD A,4
  618.                 CALL SET_EFF7
  619.                 JR SET_7FFD_0
  620.  
  621. ;ВКЛЮЧЕНИЕ РЕЖИМА BASI48
  622. MEMORY48        CALL ON_BIT128
  623.                 LD A,0X30
  624.                 JR SET_7FFD
  625.  
  626. ;ЧТЕНИЕ CMOS И ИЗМЕНЕНИЕ СООБЩЕНИЙ ДЛЯ ВЫВОДА НА ЭКРАН ОБ УСТАНОВЛЕННЫХ РЕЖИМАХ
  627. SET_MODES       LD H,0X0B                       ;ЧИТАТЬ РЕЖИМ СЧЕТА ЧАСОВ
  628.                 CALL READCMOS
  629.                 RES 2,L                         ;ПРИНУДИТЕЛЬНО ВКЛЮЧАЕМ БИНАРНЫЙ СЧЕТ
  630.                 CALL WRITECMOS                  ;СОХРАНЯЕМ ИЗМЕНЕНИЯ
  631.                 LD H,CMOS_BYTE_01               ;ЧИТАЕМ УСТАНОВКИ ТУРБО И ПАМЯТИ
  632.                 CALL READCMOS
  633.                 AND M_TURBO357
  634.                 RRCA
  635.                 RRCA
  636.                 RRCA
  637.                 LD (SYSREG1),A                  ;СОДЕРЖИМОЕ ДЛЯ ЗАПИСИ В ПОРТ EFF7
  638.                 LD B,A
  639.                 LD A,L
  640.                 AND _128K | _48K | _1MB
  641.                 LD (MEMMODE),A                  ;ВЫБРАННЫЙ РЕЖИМ ПАМЯТИ
  642.                 LD H,CMOS_BYTE_00
  643.                 CALL READCMOS                   ;ЧИТАЕМ ОСНОВНЫЕ УСТАНОВКИ
  644.                 LD C,A
  645.                 AND M_TURBO14
  646.                 LD HL,TURBO_NUM                 ;НОМЕР ТУРБО РЕЖИМА
  647.                 LD (HL),2                       ;РЕЖИМ 14МГЦ
  648.                 JR NZ,SETMODES04
  649.                 LD A,B
  650.                 DEC (HL)                        ;РЕЖИМ 7МГЦ
  651.                 AND 0X10
  652.                 JR Z,SETMODES04
  653.                 DEC (HL)                        ;РЕЖИМ 3,5МГЦ
  654. SETMODES04      LD A,(HL)                       ;ВЗЯЛИ ТЕКУЩИЙ ТУРБО РЕЖИМ
  655.                 ADD A,A
  656.                 ADD A,A
  657.                 LD E,A
  658.                 LD D,0
  659.                 LD HL,TXTTURBOMODE              ;ТЕКСТ ТУРБО РЕЖИМОВ
  660.                 ADD HL,DE                       ;ПЕРЕШЛИ НА НУЖНЫЙ ТЕКСТ
  661.                 LD DE,TXT_SPEED
  662.                 LD A,C
  663.                 LDI
  664.                 LDI
  665.                 LDI
  666.                 LDI                             ;ПЕРЕНЕСЛИ ДЛЯ ВЫВОДА ЭКРАН
  667.                 LD C,A
  668.                 AND M_EMUL_TAPE
  669.                 LD HL,EMTAPLOAD
  670.                 CALL SET_ONOFF                  ;ПЕРЕНОС СИМВОЛОВ ДЛЯ ВЫВОДА НА ЭКРАН, ON ИЛИ OFF
  671.                 LD A,C
  672.                 AND M_RELOAD_FONT
  673.                 XOR M_RELOAD_FONT
  674.                 LD HL,EROMLOADFONT
  675.                 CALL SET_ONOFF                  ;ПЕРЕНОС СИМВОЛОВ ДЛЯ ВЫВОДА НА ЭКРАН, ON ИЛИ OFF
  676.                 LD A,C
  677.                 AND M_TYPE_FONT
  678.                 PUSH BC
  679.                 LD HL,TXTMODTYPE
  680.                 LD BC,5
  681.                 JR Z,SET_FONT2
  682.                 ADD HL,BC
  683. SET_FONT2       LD DE,ETYPESFONT
  684.                 LDIR
  685.                 POP BC
  686.                 LD A,C
  687.                 AND MKOL_MODES
  688.                 CP KOL_MODES
  689.                 JR C,SETMODES03
  690.                 XOR A
  691. SETMODES03      LD L,A
  692.                 ADD A,A
  693.                 ADD A,L
  694.                 ADD A,A
  695.                 ADD A,A
  696.                 LD H,0
  697.                 LD L,A
  698.                 LD DE,TXT_RESETTO
  699.                 ADD HL,DE
  700.                 LD DE,TXT_RESET
  701.                 LD A,C
  702.                 LD BC,0X0C
  703.                 LDIR
  704.                 LD C,A
  705.                 AND M_PRINTER_AY
  706.                 LD HL,ETXT_AYPRINTER
  707.                 CALL SET_ONOFF                  ;ПЕРЕНОС СИМВОЛОВ ДЛЯ ВЫВОДА НА ЭКРАН, ON ИЛИ OFF
  708. SETMODES02      LD A,(MEMMODE)
  709.                 AND A
  710.                 LD HL,T_ALL
  711.                 JR Z,SETMODES01                 ;ALL MEMORY
  712.                 LD HL,T_48
  713.                 DEC A
  714.                 JR Z,SETMODES01                 ;48K
  715.                 LD HL,T_128                     ;128K
  716. SETMODES01      LD DE,TXT_MEM                   ;РЕЖИМ ПАМЯТИ
  717.                 LD A,C
  718.                 LD BC,3
  719.                 LDIR
  720.                 LD H,CMOS_BYTE_01
  721.                 CALL READCMOS
  722.                 PUSH AF
  723.                 AND M_AUTOMOUNT
  724.                 LD HL,ETXT_AUTOMOUNT
  725.                 CALL SET_ONOFF
  726.                 POP AF
  727. ;ДЛЯ РЕЗИДЕНТА HONEY COMANDER
  728.         IFDEF REZIDENT
  729.                 AND M_REZIDENT
  730.                 LD HL,TXT_REZIDENT
  731.                 CALL SET_ONOFF
  732.         ENDIF;REZIDENT
  733.                 LD A,(ERS_FLAGS)
  734.                 AND M_CLOCK_ON
  735.                 RET Z
  736.                 LD DE,VERS_CONF
  737.                 LD L,0
  738.                 CALL GET_VERS_EVO               ;ВЕРСИЯ БАЗОВОЙ КОНФИГУРАЦИИ
  739.                 LD DE,VERS_BOOT
  740.                 LD L,1
  741.                 JP GET_VERS_EVO                 ;ВЕРСИЯ AVRBOOT
  742.  
  743. ;ПЕРЕНОС СИМВОЛОВ ДЛЯ ВЫВОДА НА ЭКРАН, ON ИЛИ OFF
  744. SET_ONOFF       LD DE,"n "
  745.                 JR NZ,SET_ONOFF1
  746.                 LD DE,"ff"
  747. SET_ONOFF1      LD (HL),D
  748.                 INC HL
  749.                 LD (HL),E
  750.                 RET
  751.  
  752. TURBO_7MHZ      LD E,0XA3
  753.                 LD BC,0XFF77
  754.                 PEC_ON M_SHADOW_BF
  755.                 OUT (C),E
  756.                 PEC_OFF M_SHADOW_BF
  757.                 XOR A
  758.                 JP SET_EFF7
  759.  
  760.                 include menu_data.a80
  761.                 include menu_execute.a80
  762.                 include mouse.a80
  763.                 include window.a80
  764.                 include call_cmos.a80
  765.                 include call_trdos.a80
  766.                 include koshak.a80
  767.                 include pc_keys_test.a80
  768.                 include flasher.a80
  769.                 include fat_boot.a80
  770.                 include bmp_view.a80
  771.  
  772. CLEAR_128K      DI
  773.                 LD HL,0
  774.                 LD A,0X17
  775.                 CALL CLEAR128K0
  776.                 LD A,0X16
  777.                 CALL CLEAR128K0
  778.                 LD A,0X14
  779.                 CALL CLEAR128K0
  780.                 LD A,0X13
  781.                 CALL CLEAR128K0
  782.                 LD A,0X11
  783.                 CALL CLEAR128K0
  784.                 LD A,0X10
  785. CLEAR128K0      LD (TEMP_SAVE_SP),SP
  786.                 LD BC,CONF_128
  787.                 OUT (C),A
  788.                 LD SP,0
  789.                 LD B,0X80
  790. CLEAR128K1      REPT 64
  791.                 PUSH HL
  792.                 ENDM
  793.                 DJNZ CLEAR128K1
  794.                 LD SP,0
  795. TEMP_SAVE_SP    EQU $-2
  796.                 RET
  797.  
  798. ;УСТАНОВКА ПЕРЕМЕННЫХ БАСИКА И ТЫРДОСА, УСТАНОВКА ВЫБРАННОГО ДИСКОВОДА
  799. SYSTEM          LD HL,BAS_VAR
  800.                 LD DE,KSTATE0
  801.                 LD BC,EBAS_VAR-BAS_VAR
  802.                 LDIR                            ;УСТАНОВКА СТАНДАРТНЫХ ПЕРЕМЕННЫХ BASIC И TR-DOS
  803. GET_DRV_SYM     LD A,(ERS_FLAGS)                ;ПРОВЕРЯЕМ НАЛИЧИЕ КМОСА
  804.                 AND M_CLOCK_ON
  805.                 JR Z,SET_DRIVE
  806.                 LD H,VIRT_REAL_DRIVE
  807.                 CALL READCMOS
  808.                 RRCA
  809.                 RRCA
  810.                 AND 3
  811.                 LD (DRV_SYM),A                  ;УСТАНОВКА ВЫБРАННОГО РЕАЛЬНОГО ДИСКОВОДА
  812. SET_DRIVE       LD A,(DRV_SYM)                  ;ИЗМЕНЕНИЕ СИСТЕМНЫХ ПЕРЕМЕННЫХ ДЛЯ ДИСКА
  813.                 LD (TRD_5D19),A
  814.                 LD (TRD_5CF6),A
  815.                 LD L,A
  816.                 LD H,A
  817.                 LD (TRD_5CF8),HL
  818.                 OR 0X3C
  819.                 LD (TRD_5D16),A
  820.                 RET
  821.  
  822. GLUDIN          LD H,CMOS_BYTE_01
  823.                 CALL READCMOS
  824.                 AND M_SOUNDKEYS
  825.                 RET Z
  826.                 LD HL,DIN+0X0D
  827.                 LD A,0X0D
  828. GLUDIN1         LD BC,0XFFFD
  829.                 OUT (C),A
  830.                 LD B,0XBF
  831.                 OUTD
  832.                 SUB 1
  833.                 JR NC,GLUDIN1
  834.                 RET
  835.  
  836. SHUT2AY         LD H,CMOS_BYTE_01
  837.                 CALL READCMOS
  838.                 AND M_SOUNDKEYS
  839.                 RET Z
  840.                 LD DE,0X0E00
  841. SHUT2AY1        DEC D
  842.                 LD H,D
  843.                 LD L,E
  844.                 CALL SHUT2AY2
  845.                 JR NZ,SHUT2AY1                  ;для первых никронов
  846.                 LD HL,0X073F
  847. SHUT2AY2        LD BC,0XFFFD
  848.                 OUT (C),H
  849.                 LD B,0XBF
  850.                 OUT (C),L
  851.                 RET
  852.  
  853. TIMELP          CALL PRINTTIME
  854.                 LD A,HIGH (MOUSE_KEYS)
  855.                 IN A,(LOW (MOUSE_KEYS)) ;КНОПКИ МЫШИ
  856.                 CPL
  857.                 AND 7
  858.                 JR NZ,TIMELP                    ;ПОКА НЕ ОТПУСТЯТ
  859.                 RET
  860.  
  861. ;ЗАПУСК PERFECT COMMANDER
  862. PERFECT         DI
  863.                 LD SP,0XC000
  864.                 PEC_ON M_SHADOW_BF
  865.                 LD BC,WIN_A0
  866.                 LD A,ROM_RST81
  867.                 OUT (C),A
  868.                 LD HL,(ADR_PERFECT)
  869.                 LD DE,0X5B00
  870.                 CALL UNPACK
  871.                 LD BC,WIN_A0
  872.                 LD A,0X83
  873.                 OUT (C),A
  874.                 PEC_OFF M_SHADOW_BF
  875.                 LD A,0XC9
  876.                 LD (0X66D2),A
  877.                 LD SP,0X5FE4
  878.                 JP 0X8A1D
  879.  
  880. ISDOS_BOOT      LD HL,ISDOS_BOOT1
  881.                 LD DE,0X5E00
  882.                 LD BC,ISDOS_BOOT2-ISDOS_BOOT1
  883.                 LDIR
  884.                 JP 0X5E00
  885.  
  886.                 include hdd_detect.a80
  887.  
  888. ISDOS_BOOT1     include isdos_boot.a80
  889. ISDOS_BOOT2
  890.  
  891. SEL_FAT_DRV     ;АДРЕС СОЗДАНИЯ ТЕКСТА, АДРЕСОВ ВЫЗЫВОВ И СПИСКА ГОРЯЧИХ КЛАВИШ МЕНЮ ВЫБОРА РАЗДЕЛОВ FAT
  892.