Subversion Repositories pentevo

Rev

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

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