Subversion Repositories pentevo

Rev

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

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