Subversion Repositories pentevo

Rev

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

  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 H,A
  480.                 AND 3
  481.                 LD B,A
  482.                 INC B
  483.                 ADD A,'A'
  484.                 LD C,A
  485.                 LD A,%00001000
  486. .L1             RLCA
  487.                 DJNZ .L1
  488.                 AND H
  489.                 LD HL,VIRT_DRIVE
  490.                 JR NZ,PRTVIRTDRV2
  491.                 LD (HL)," "
  492.                 INC HL
  493.                 LD (HL),C
  494.                 INC HL
  495.                 LD (HL)," "
  496.                 JR PRTVIRTDRV1
  497.  
  498. PRTVIRTDRV2     LD (HL),"o"
  499.                 INC HL
  500.                 LD (HL),"f"
  501.                 INC HL
  502.                 LD (HL),"f"
  503. PRTVIRTDRV1     LD HL,VIRTUAL_DRV
  504.                 RST8 _PRINT_MESSAGE
  505.                 LD HL,ADR_CAT
  506.                 RST8  _MOUNTER,_GET_MOUNTED
  507.                 LD HL,ADR_CAT
  508.                 LD DE,MNT_DRV_A
  509.                 CALL COPY_MNTNAME
  510.                 LD L,0X40
  511.                 LD DE,MNT_DRV_B
  512.                 CALL COPY_MNTNAME
  513.                 LD L,0X80
  514.                 LD DE,MNT_DRV_C
  515.                 CALL COPY_MNTNAME
  516.                 LD L,0XC0
  517.                 LD DE,MNT_DRV_D
  518.                 CALL COPY_MNTNAME
  519.                 CALL GET_RAMD_NAME
  520.                 LD HL,MOUNTED_DRV
  521.                 RST8 _PRINT_MESSAGE
  522.                 RET
  523.  
  524. COPY_MNTNAME    PUSH HL
  525.                 LD A,(HL)
  526.                 AND A
  527.                 JR NZ,COPY_MNTNAME1
  528.                 LD HL,TXT_NONE
  529.                 LD BC,0X0C
  530.                 JR COPY_MNTNAME3
  531.  
  532. COPY_MNTNAME1   LD BC,8
  533.                 LDIR
  534.                 LD A,"."
  535.                 LD (DE),A
  536.                 INC DE
  537.                 LD C,3
  538. COPY_MNTNAME3   LDIR
  539.                 POP HL
  540.                 RET
  541.  
  542. ;ПОЛУЧЕНИЕ ИМЕНИ ФАЙЛА ЗАГРУЖЕННОГО В РАМДИСК
  543. GET_RAMD_NAME   PEC_ON M_SHADOW_BF
  544.                 LD BC,WIN_P2
  545.                 LD A,RAM_RAMDISK
  546.                 OUT (C),A
  547.                 LD DE,CPU2+0X3DFF
  548.                 LD A,(DE)
  549.                 AND A
  550.                 JR Z,GRN1
  551.                 LD HL,GRN1
  552.                 PUSH HL
  553.                 LD HL,IN_RAMDISK
  554.                 LD B,8
  555.                 CALL GRN2
  556.                 LD B,3
  557.                 LD (HL),"."
  558.                 INC HL
  559. GRN2            LD A,(DE)
  560.                 LD (HL),A
  561.                 DEC D
  562.                 INC HL
  563.                 DJNZ GRN2
  564.                 RET
  565.  
  566. GRN1            LD BC,WIN_P2
  567.                 LD A,ZXSTD_CPU2;0XFD
  568.                 OUT (C),A
  569.                 PEC_OFF M_SHADOW_BF
  570.                 RET
  571.  
  572. ;ВЫВОД ОСНОВНОГО МЕНЮ И НАДПИСЕЙ
  573. S_FACE          LD A,7
  574.                 CALL CLS
  575.                 LD HL,TXTFULLSCR
  576.                 RST8 _PRINT_MESSAGE
  577.                 CALL PRT_DRV_SYM                ;ПЕЧАТЬ ТЕКУЩЕГО ДИСКОВОДА
  578.                 CALL PRT_MODES                  ;ПЕЧАТЬ ТЕКУЩЕГО РЕЖИМА
  579.                 CALL PRT_VIRTDRV                ;ПЕЧАТЬ ТЕКУЩЕГО ВИРТУАЛЬНОГО ДИСКОВОДА
  580.                 XOR A
  581.                 JP DRAW_KOSHAK                  ;ВЫВОД 0 ФАЗЫ КОШАКА
  582.  
  583. SET_EFF7_A_     LD A,(SYSREG1)
  584. SET_EFF7        LD BC,PENT_CONF
  585.                 OUT (C),A
  586.                 RET
  587.  
  588. SET_7FFD_0      LD A,0X10
  589. SET_7FFD        PUSH BC
  590.                 LD BC,CONF_128
  591.                 OUT (C),A
  592.                 POP BC
  593.                 RET
  594.  
  595. MEMSET          CALL CLEAR_128K
  596.                 LD A,(TURBO_NUM)                ;УСТАНОВКА TURBO РЕЖИМА
  597.                 AND A
  598.                 LD DE,0X10A3                    ;3,5MHZ PORTS EFF7 BIT4=1 XX77 BIT3=0
  599.                 JR Z,MEMSET01
  600.                 DEC A
  601.                 LD DE,0XA3                      ;7MHZ PORTS EFF7 BIT4=0 XX77 BIT3=0
  602.                 JR Z,MEMSET01
  603.                 LD DE,0X10AB                    ;14MHZ PORTS EFF7 BIT4=1 XX77 BIT3=1
  604. MEMSET01        LD BC,0XFF77
  605.                 PEC_ON M_SHADOW_BF
  606.                 OUT (C),E
  607.                 PEC_OFF M_SHADOW_BF
  608.                 LD A,D
  609.                 CALL SET_EFF7
  610.                 LD A,(MEMMODE)
  611.                 AND A
  612.                 RET Z                           ;РЕЖИМ ПОЛНОЙ ПАМЯТИ
  613. MEMSET1         DEC A
  614.                 JR Z,MEMORY48
  615. ;ВКЛЮЧЕНИЕ РЕЖИМА BASIC128
  616. ON_BIT128       LD A,(SYSREG1)
  617.                 AND 0X10
  618.                 ADD A,4
  619.                 CALL SET_EFF7
  620.                 JR SET_7FFD_0
  621.  
  622. ;ВКЛЮЧЕНИЕ РЕЖИМА BASI48
  623. MEMORY48        CALL ON_BIT128
  624.                 LD A,0X30
  625.                 JR SET_7FFD
  626.  
  627. ;ЧТЕНИЕ CMOS И ИЗМЕНЕНИЕ СООБЩЕНИЙ ДЛЯ ВЫВОДА НА ЭКРАН ОБ УСТАНОВЛЕННЫХ РЕЖИМАХ
  628. SET_MODES       LD H,0X0B                       ;ЧИТАТЬ РЕЖИМ СЧЕТА ЧАСОВ
  629.                 CALL READCMOS
  630.                 RES 2,L                         ;ПРИНУДИТЕЛЬНО ВКЛЮЧАЕМ БИНАРНЫЙ СЧЕТ
  631.                 CALL WRITECMOS                  ;СОХРАНЯЕМ ИЗМЕНЕНИЯ
  632.                 LD H,CMOS_BYTE_01               ;ЧИТАЕМ УСТАНОВКИ ТУРБО И ПАМЯТИ
  633.                 CALL READCMOS
  634.                 AND M_TURBO357
  635.                 RRCA
  636.                 RRCA
  637.                 RRCA
  638.                 LD (SYSREG1),A                  ;СОДЕРЖИМОЕ ДЛЯ ЗАПИСИ В ПОРТ EFF7
  639.                 LD B,A
  640.                 LD A,L
  641.                 AND _128K | _48K | _1MB
  642.                 LD (MEMMODE),A                  ;ВЫБРАННЫЙ РЕЖИМ ПАМЯТИ
  643.                 LD H,CMOS_BYTE_00
  644.                 CALL READCMOS                   ;ЧИТАЕМ ОСНОВНЫЕ УСТАНОВКИ
  645.                 LD C,A
  646.                 AND M_TURBO14
  647.                 LD HL,TURBO_NUM                 ;НОМЕР ТУРБО РЕЖИМА
  648.                 LD (HL),2                       ;РЕЖИМ 14МГЦ
  649.                 JR NZ,SETMODES04
  650.                 LD A,B
  651.                 DEC (HL)                        ;РЕЖИМ 7МГЦ
  652.                 AND 0X10
  653.                 JR Z,SETMODES04
  654.                 DEC (HL)                        ;РЕЖИМ 3,5МГЦ
  655. SETMODES04      LD A,(HL)                       ;ВЗЯЛИ ТЕКУЩИЙ ТУРБО РЕЖИМ
  656.                 ADD A,A
  657.                 ADD A,A
  658.                 LD E,A
  659.                 LD D,0
  660.                 LD HL,TXTTURBOMODE              ;ТЕКСТ ТУРБО РЕЖИМОВ
  661.                 ADD HL,DE                       ;ПЕРЕШЛИ НА НУЖНЫЙ ТЕКСТ
  662.                 LD DE,TXT_SPEED
  663.                 LD A,C
  664.                 LDI
  665.                 LDI
  666.                 LDI
  667.                 LDI                             ;ПЕРЕНЕСЛИ ДЛЯ ВЫВОДА ЭКРАН
  668.                 LD C,A
  669.                 AND M_EMUL_TAPE
  670.                 LD HL,EMTAPLOAD
  671.                 CALL SET_ONOFF                  ;ПЕРЕНОС СИМВОЛОВ ДЛЯ ВЫВОДА НА ЭКРАН, ON ИЛИ OFF
  672.                 LD A,C
  673.                 AND M_RELOAD_FONT
  674.                 XOR M_RELOAD_FONT
  675.                 LD HL,EROMLOADFONT
  676.                 CALL SET_ONOFF                  ;ПЕРЕНОС СИМВОЛОВ ДЛЯ ВЫВОДА НА ЭКРАН, ON ИЛИ OFF
  677.                 LD A,C
  678.                 AND M_TYPE_FONT
  679.                 PUSH BC
  680.                 LD HL,TXTMODTYPE
  681.                 LD BC,5
  682.                 JR Z,SET_FONT2
  683.                 ADD HL,BC
  684. SET_FONT2       LD DE,ETYPESFONT
  685.                 LDIR
  686.                 POP BC
  687.                 LD A,C
  688.                 AND MKOL_MODES
  689.                 CP KOL_MODES
  690.                 JR C,SETMODES03
  691.                 XOR A
  692. SETMODES03      LD L,A
  693.                 ADD A,A
  694.                 ADD A,L
  695.                 ADD A,A
  696.                 ADD A,A
  697.                 LD H,0
  698.                 LD L,A
  699.                 LD DE,TXT_RESETTO
  700.                 ADD HL,DE
  701.                 LD DE,TXT_RESET
  702.                 LD A,C
  703.                 LD BC,0X0C
  704.                 LDIR
  705.                 LD C,A
  706.                 AND M_PRINTER_AY
  707.                 LD HL,ETXT_AYPRINTER
  708.                 CALL SET_ONOFF                  ;ПЕРЕНОС СИМВОЛОВ ДЛЯ ВЫВОДА НА ЭКРАН, ON ИЛИ OFF
  709. SETMODES02      LD A,(MEMMODE)
  710.                 AND A
  711.                 LD HL,T_ALL
  712.                 JR Z,SETMODES01                 ;ALL MEMORY
  713.                 LD HL,T_48
  714.                 DEC A
  715.                 JR Z,SETMODES01                 ;48K
  716.                 LD HL,T_128                     ;128K
  717. SETMODES01      LD DE,TXT_MEM                   ;РЕЖИМ ПАМЯТИ
  718.                 LD A,C
  719.                 LD BC,3
  720.                 LDIR
  721.                 LD H,CMOS_BYTE_01
  722.                 CALL READCMOS
  723.                 PUSH AF
  724.                 AND M_AUTOMOUNT
  725.                 LD HL,ETXT_AUTOMOUNT
  726.                 CALL SET_ONOFF
  727.                 POP AF
  728. ;ДЛЯ РЕЗИДЕНТА HONEY COMANDER
  729.         IFDEF REZIDENT
  730.                 AND M_REZIDENT
  731.                 LD HL,TXT_REZIDENT
  732.                 CALL SET_ONOFF
  733.                 LD H,CMOS_BYTE_03
  734.                 CALL READCMOS
  735.                 AND M_KILL_REZIDENT
  736.                 LD HL,TXT_KILLREZID
  737.                 CALL SET_ONOFF
  738.         ENDIF;REZIDENT
  739.                 LD A,(ERS_FLAGS)
  740.                 AND M_CLOCK_ON
  741.                 RET Z
  742.                 LD DE,VERS_CONF
  743.                 LD L,0
  744.                 CALL GET_VERS_EVO               ;ВЕРСИЯ БАЗОВОЙ КОНФИГУРАЦИИ
  745.                 LD DE,VERS_BOOT
  746.                 LD L,1
  747.                 JP GET_VERS_EVO                 ;ВЕРСИЯ AVRBOOT
  748.  
  749. ;ПЕРЕНОС СИМВОЛОВ ДЛЯ ВЫВОДА НА ЭКРАН, ON ИЛИ OFF
  750. SET_ONOFF       LD DE,"n "
  751.                 JR NZ,SET_ONOFF1
  752.                 LD DE,"ff"
  753. SET_ONOFF1      LD (HL),D
  754.                 INC HL
  755.                 LD (HL),E
  756.                 RET
  757.  
  758. TURBO_7MHZ      LD E,0XA3
  759.                 LD BC,0XFF77
  760.                 PEC_ON M_SHADOW_BF
  761.                 OUT (C),E
  762.                 PEC_OFF M_SHADOW_BF
  763.                 XOR A
  764.                 JP SET_EFF7
  765.  
  766.                 include menu_data.a80
  767.                 include menu_execute.a80
  768.                 include mouse.a80
  769.                 include window.a80
  770.                 include call_cmos.a80
  771.                 include call_trdos.a80
  772.                 include koshak.a80
  773.                 include pc_keys_test.a80
  774.                 include flasher.a80
  775.                 include fat_boot.a80
  776.                 include bmp_view.a80
  777.  
  778. CLEAR_128K      DI
  779.                 LD HL,0
  780.                 LD A,0X17
  781.                 CALL CLEAR128K0
  782.                 LD A,0X16
  783.                 CALL CLEAR128K0
  784.                 LD A,0X14
  785.                 CALL CLEAR128K0
  786.                 LD A,0X13
  787.                 CALL CLEAR128K0
  788.                 LD A,0X11
  789.                 CALL CLEAR128K0
  790.                 LD A,0X10
  791. CLEAR128K0      LD (TEMP_SAVE_SP),SP
  792.                 LD BC,CONF_128
  793.                 OUT (C),A
  794.                 LD SP,0
  795.                 LD B,0X80
  796. CLEAR128K1      REPT 64
  797.                 PUSH HL
  798.                 ENDM
  799.                 DJNZ CLEAR128K1
  800.                 LD SP,0
  801. TEMP_SAVE_SP    EQU $-2
  802.                 RET
  803.  
  804. ;УСТАНОВКА ПЕРЕМЕННЫХ БАСИКА И ТЫРДОСА, УСТАНОВКА ВЫБРАННОГО ДИСКОВОДА
  805. SYSTEM          LD HL,BAS_VAR
  806.                 LD DE,KSTATE0
  807.                 LD BC,EBAS_VAR-BAS_VAR
  808.                 LDIR                            ;УСТАНОВКА СТАНДАРТНЫХ ПЕРЕМЕННЫХ BASIC И TR-DOS
  809. GET_DRV_SYM     LD A,(ERS_FLAGS)                ;ПРОВЕРЯЕМ НАЛИЧИЕ КМОСА
  810.                 AND M_CLOCK_ON
  811.                 JR Z,SET_DRIVE
  812.                 LD H,VIRT_REAL_DRIVE
  813.                 CALL READCMOS
  814.                 RRCA
  815.                 RRCA
  816.                 AND 3
  817.                 LD (DRV_SYM),A                  ;УСТАНОВКА ВЫБРАННОГО РЕАЛЬНОГО ДИСКОВОДА
  818. SET_DRIVE       LD A,(DRV_SYM)                  ;ИЗМЕНЕНИЕ СИСТЕМНЫХ ПЕРЕМЕННЫХ ДЛЯ ДИСКА
  819.                 LD (TRD_5D19),A
  820.                 LD (TRD_5CF6),A
  821.                 LD L,A
  822.                 LD H,A
  823.                 LD (TRD_5CF8),HL
  824.                 OR 0X3C
  825.                 LD (TRD_5D16),A
  826.                 RET
  827.  
  828. GLUDIN          LD H,CMOS_BYTE_01
  829.                 CALL READCMOS
  830.                 AND M_SOUNDKEYS
  831.                 RET Z
  832.                 LD HL,DIN+0X0D
  833.                 LD A,0X0D
  834. GLUDIN1         LD BC,0XFFFD
  835.                 OUT (C),A
  836.                 LD B,0XBF
  837.                 OUTD
  838.                 SUB 1
  839.                 JR NC,GLUDIN1
  840.                 RET
  841.  
  842. SHUT2AY         LD H,CMOS_BYTE_01
  843.                 CALL READCMOS
  844.                 AND M_SOUNDKEYS
  845.                 RET Z
  846.                 LD DE,0X0E00
  847. SHUT2AY1        DEC D
  848.                 LD H,D
  849.                 LD L,E
  850.                 CALL SHUT2AY2
  851.                 JR NZ,SHUT2AY1                  ;для первых никронов
  852.                 LD HL,0X073F
  853. SHUT2AY2        LD BC,0XFFFD
  854.                 OUT (C),H
  855.                 LD B,0XBF
  856.                 OUT (C),L
  857.                 RET
  858.  
  859. TIMELP          CALL PRINTTIME
  860.                 LD A,HIGH (MOUSE_KEYS)
  861.                 IN A,(LOW (MOUSE_KEYS)) ;КНОПКИ МЫШИ
  862.                 CPL
  863.                 AND 7
  864.                 JR NZ,TIMELP                    ;ПОКА НЕ ОТПУСТЯТ
  865.                 RET
  866.  
  867. ;ЗАПУСК PERFECT COMMANDER
  868. PERFECT         DI
  869.                 LD SP,0XC000
  870.                 PEC_ON M_SHADOW_BF
  871.                 LD BC,WIN_A0
  872.                 LD A,ROM_RST81
  873.                 OUT (C),A
  874.                 LD HL,(ADR_PERFECT)
  875.                 LD DE,0X5B00
  876.                 CALL UNPACK
  877.                 LD BC,WIN_A0
  878.                 LD A,0X83
  879.                 OUT (C),A
  880.                 PEC_OFF M_SHADOW_BF
  881.                 LD A,0XC9
  882.                 LD (0X66D2),A
  883.                 LD SP,0X5FE4
  884.                 JP 0X8A1D
  885.  
  886. ISDOS_BOOT      LD HL,ISDOS_BOOT1
  887.                 LD DE,0X5E00
  888.                 LD BC,ISDOS_BOOT2-ISDOS_BOOT1
  889.                 LDIR
  890.                 JP 0X5E00
  891.  
  892.                 include hdd_detect.a80
  893.  
  894. ISDOS_BOOT1     include isdos_boot.a80
  895. ISDOS_BOOT2
  896.  
  897. SEL_FAT_DRV     ;АДРЕС СОЗДАНИЯ ТЕКСТА, АДРЕСОВ ВЫЗЫВОВ И СПИСКА ГОРЯЧИХ КЛАВИШ МЕНЮ ВЫБОРА РАЗДЕЛОВ FAT
  898.