-   
- ;LAST UPDATE: 10.03.2020 savelij 
-   
-                 TITLE "menu_execute.a80" 
-   
- ;[ЗАГРУЗКА С ЛЕНТЫ] 
- TAPELOAD        LD H,CMOS_BYTE_00 
-                 CALL READCMOS 
-                 AND M_EMUL_TAPE 
-                 JP NZ,EMULTAPLOAD 
-                 LD IX,TAPE_LDT 
-                 RST8 _WINW 
- TAPELOAD1       CALL MEMSET                     ;ВЫСТАВИЛИ РЕЖИМЫ ПАМЯТИ И ТУРБЫ 
-                 LD HL,BAS4TAPE 
-                 LD DE,0X5C3A 
-                 LD BC,EBAS4TAPE-BAS4TAPE 
-                 LDIR                            ;ПЕРЕМЕННЫЕ БАСИКА СДЕЛАЛИ FOR ONLY TAPE 
-                 LD HL,ERROR_TAPE 
-                 PUSH HL 
-                 LD (0X5C3D),SP                  ;ПЕРЕХВАТ ОШИБКИ ЕСЛИ ЕСТЬ ЖЕЛАНИЕ ВЕРНУТЬСЯ 
-                 LD HL,0XFF58 
-                 LD SP,HL                        ;ВЫСТАВИЛИ СТЕК А ЛЯ БЕЙСИК 48 
-                 LD DE,0X3E08 
-                 LD BC,0XA8 
-                 EX DE,HL 
-                 LDIR                            ;ПОЛОЖИЛИ ШРИФТ UDG 
-                 LD HL,0X3E00 
-                 PUSH HL 
-                 LD HL,0X1303 
-                 PUSH HL 
-                 LD HL,0X1B76 
-                 PUSH HL                         ;ЗАПОЛНИЛИ ДНО ПЕРЕСТАВЛЕННОГО СТЕКА 
-                 LD IX,0X5CD1                    ;УСТАНОВИЛИ ДЛЯ ЗАГРУЗКИ С ЛЕНТЫ 
-                 JP 0X073E                       ;ПЕРЕХОД НА ЗАГРУЗКУ С ЛЕНТЫ 
-   
- ;[ПЕРЕХВАТ ОШИБКИ ИЛИ БРЕКА ДЛЯ ВОЗВРАТА] 
- ERROR_TAPE      LD HL,BAS_VAR 
-                 LD DE,0X5C00 
-                 LD BC,EBAS_VAR-BAS_VAR 
-                 LDIR                            ;ВЕРНУЛИ ТЫРДОСНЫЕ ПЕРЕМЕННЫЕ НА МЕСТО 
-                 XOR A 
-                 LD (0X5C3D),BC                  ;СНЯЛИ ПЕРЕХВАТЧИК ОШИБОК 
-                 OUT (0XFE),A 
-                 DEC A 
-                 LD (gFenv),A 
-                 CALL GLUDIN                     ;ПОГУДЕЛИ В АУ ЧТО БЫЛА ОШИБКА 
-                 LD A,1 
-                 LD (gFenv),A 
-                 JP RESTART                      ;ПЕРЕЗАПУСК HE GLUK 
-   
- ;[СОЗДАНИЕ РАМ ДИСКА НА 640К] 
- RAM_640         LD HL,RESTART 
-                 PUSH HL 
- CREATE_TRDRAM   LD HL,636*4                     ;RAM DISK НА 640 КИЛОБАЙТ 
- ;               JR KILRAMd 
-   
- ;СОЗДАНИЕ РАМ ДИСКА НА 896 КИЛ 
- ;RAM_892                LD HL,RESTART 
- ;               PUSH HL 
- ;               LD HL,892*4                     ;RAM DISK НА 896 КИЛОБАЙТ 
- KILRAMd         LD (SECFREE),HL                 ;ВЫСТАВИЛИ ПЕРЕМЕННУЮ КОЛИЧЕСТВА СЕКТОРОВ НА RAM DISK 
-                 DI 
-                 PEC_ON M_SHADOW_BF 
-                 LD A,RAM_RAMDISK+1 
-                 LD BC,WIN_P2 
-                 OUT (C),A 
-                 LD HL,0X8000 
-                 LD D,H 
-                 LD E,L 
-                 INC DE 
-                 LD BC,0X0FFF 
-                 LD (HL),L 
-                 LDIR                            ;ОЧИСТИЛИ СТРАНИЦУ TR-DOS ДИРЕКТОРИИ 
-                 LD HL,DSKINFO 
-                 LD DE,0X88E1 
-                 LD C,DSK_END-DSKINFO 
-                 LDIR                            ;ПЕРЕНЕСЛИ ШАБЛОН ДЛЯ 9 СЕКТОРА ДИРЫ 
-                 LD A,ZXSTD_CPU2;0XFD 
-                 LD BC,WIN_P2 
-                 OUT (C),A 
-                 PEC_OFF M_SHADOW_BF 
-                 JP CREATE_TRD640 
-   
- ;[СБРОС NEOGS] 
- RESETNGS        LD A,0X80 
-                 OUT (0X33),A 
-                 JP RESTART 
-   
- ;[FILE NOT FOUND] 
- FILE_NONE       LD IX,FILENONE 
-                 RST8 _WINW 
-                 JP STUPID1 
-   
- ;[ПРОВЕРКА ВИРТУАЛЬНОГО ПРИВОДА] 
- CMP_VIRTUAL     LD H,VIRT_REAL_DRIVE 
-                 CALL READCMOS 
-                 LD A,(DRV_SYM) 
-                 LD D,A                          ;НОМЕР ТЕКУЩЕГО РЕАЛЬНОГО ДИСКОВОДА 
-                 LD A,L 
-                 RRCA 
-                 RRCA 
-                 AND 3                           ;НОМЕР РЕАЛЬНОГО ДИСКОВОДА ИЗ CMOS 
-                 CP D 
-                 JR NZ,PRT_NONETRDOS 
-                 LD IX,ERR_VIRTUAL 
-                 JR PRT_NONETRDOS1 
-   
- PRT_NONETRDOS   LD IX,NONETRDOS 
- PRT_NONETRDOS1  RST8 _WINW 
-                 JR STUPID1 
-   
- ;[ВЫВОД ПОМОЩИ] 
- VIEW_HELP       LD IX,WIN_HELP 
-                 RST8 _WINW 
- VIEWHELP1       CALL PRINTTIME 
-                 EI 
-                 HALT 
-                 BIT 5,(IY+1) 
-                 CALL Z,CP_TIME_KOSHAK 
-                 JR Z,VIEWHELP1 
-                 RES 5,(IY+1) 
-                 JR STUPID1 
-   
- LDFDI_ERROR     LD IX,LDFDIERROR 
-                 RST8 _WINW 
-                 JR STUPID1 
-   
- _STUPID         LD IX,MSTUPID 
-                 CALL DRAWWIN 
-                 LD HL,_STUPID 
-                 LD (DSTUPID),HL 
- STUPID1         LD SP,0 
- TEK_SP          EQU $-2 
-                 CALL SET_7FFD_0 
-                 EI 
-                 CALL RESET_VG 
-                 CALL EXIT4ERROR 
- ;               LD A,0XFF 
- ;               LD (gFenv),A 
- ;               CALL GLUDIN                     ;HL 
- ;               LD A,1 
- ;               LD (gFenv),A 
-                 JP RESTART 
-   
- ;[ПЕРЕХОДИЛКА В БАСИК128] 
- BAS128          CALL SYSTEM 
-                 CALL MEMSET 
-                 DI 
-                 CALL INIT_LOADTAPE 
-                 XOR A 
-                 CALL SET_7FFD 
-                 RST 0 
-   
- ;[СБРОС УКАЗАТЕЛЯ ЗАГРУЗЧИКА TAPE] 
- INIT_LOADTAPE   PEC_ON M_SHADOW_BF 
-                 LD BC,WIN_P2 
-                 XOR A 
-                 OUT (C),A 
-                 LD HL,0X8000 
-                 LD (HL),A 
-                 INC L 
-                 LD (HL),A 
-                 INC L 
-                 LD (HL),A 
-                 LD B,HIGH (WIN_A2) 
-                 LD A,0X7D 
-                 OUT (C),A 
-                 PEC_OFF M_SHADOW_BF 
-                 RET 
-   
- ;[ПЕРЕХОДИЛКА В БАСИК48] 
- BAS48           CALL SYSTEM 
-                 CALL MEMSET 
-                 CALL INIT_LOADTAPE 
-                 LD A,0X30 
-                 CALL SET_7FFD 
-                 RST 0 
-   
- ;[ПЕРЕХОДИЛКА В ТЫРДОС] 
- DOS128          CALL SYSTEM 
-                 CALL MEMSET 
-                 LD IX,0 
-                 JP DOSIX 
-   
- ;МЕНЮХА ЗАЧИСТКИ СТРАНИЦ, ФОРМАТИРОВАНИЯ РАМДИСКА И ДИСКЕТНЫЙ КОПИР 
- _KILLS          LD IX,MKILLS 
-                 RST8 _WINW 
-                 JP _RULILKA 
-   
- ;[СБРОС В BASIC 48 СО СТАНДАРТНОЙ ПРОШИВКОЙ ПРИ ВЫКЛЮЧЕННОМ ТУРБО РЕЖИМЕ] 
- BAS48STD        DI 
-                 CALL SET_EMU_TAPE 
-                 LD BC,PENT_CONF 
-                 LD A,0X14 
-                 OUT (C),A 
-                 LD BC,CONF_128 
-                 LD A,0X30 
-                 OUT (C),A 
-                 PEC_ON M_SHADOW_BF 
-                 ATMPORT WIN_A0,0X3F 
-                 EVOPORT WIN_P0,0 
-                 LD HL,0 
-                 LD (HL),H 
-                 INC L 
-                 LD (HL),H 
-                 INC L 
-                 LD (HL),H 
-                 ATMPORT WIN_A0,ROM_BAS48_STD 
-                 PEC_OFF M_SHADOW_BF 
-                 JP 0 
-   
- ;[СБРОС В BASIC 128 СО СТАНДАРТНОЙ ПРОШИВКОЙ ПРИ ВЫКЛЮЧЕННОМ ТУРБО РЕЖИМЕ] 
- BAS128STD       DI 
-                 CALL SET_EMU_TAPE 
-                 LD BC,PENT_CONF 
-                 LD A,0X14 
-                 OUT (C),A 
-                 PEC_ON M_SHADOW_BF 
-                 ATMPORT WIN_A0,0X3F 
-                 EVOPORT WIN_P0,0 
-                 LD HL,0 
-                 LD (HL),H 
-                 INC L 
-                 LD (HL),H 
-                 INC L 
-                 LD (HL),H 
-                 ATMPORT WIN_A0,ROM_BAS48_128 
-                 LD BC,CONF_128 
-                 XOR A 
-                 OUT (C),A 
-                 ATMPORT WIN_A0,ROM_BAS128_STD 
-                 PEC_OFF M_SHADOW_BF 
-                 JP 0 
-   
- ;[HDD BOOT] 
- HDD_BOOT        LD HL,ADR_CAT 
-                 PUSH HL 
-                 RST8 _COM_DEV,_COMHDDN,_DEV_INIT 
-                 LD A,H 
-                 POP HL 
-                 AND A 
-                 JR NZ,HDDBOOT1 
- HDDBOOT4        PUSH HL 
-                 CALL MEMSET 
-                 POP DE 
-                 PUSH DE 
-                 LD HL,HDDBOOT2 
-                 LD BC,EHDDBOOT2-HDDBOOT2 
-                 LDIR 
-                 RET 
-   
- HDDBOOT1        LD IX,HDDBOOT_ERROR 
-                 RST8 _WINW 
-                 JP STUPID1 
-   
- HDDBOOT2        LD HL,0X6000                    ;ГРУЗИТЬ БУДЕМ КАК И БЫЛ АДРЕС 
-                 PUSH HL                         ;ПОСЛЕ ЗАГРУЗКИ ЗАПУСКАЕМ ЗАГРУЖЕННОЕ 
-                 LD BC,0 
-                 LD DE,2 
-                 LD A,0X30 
-                 RST8 _COM_DEV,_COMHDDN,_DEV_READ 
-                 RET 
-   
-                 LD DE,2                         ;ГРУЗИМ НАЧИНАЯ С СЕКТОРА 2 ИБО LBA 
-                 LD BC,0XFF00+PN_1F6 
-                 LD A,0XE0                       ;ВЫБРАЛИ МАСТЕР И LBA РЕЖИМ 
-                 OUT (C),A 
-                 LD C,PN_1F5 
-                 OUT (C),D 
-                 LD C,PN_1F4 
-                 OUT (C),D 
-                 LD C,PN_1F3 
-                 OUT (C),E 
-                 LD C,PN_1F2 
-                 LD A,0X30                       ;ГРУЗИМ СЕКТОРОВ КАК И БЫЛО  
-                 OUT (C),A 
-                 EX AF,AF'                       ;СПРЯТАЛИ КОЛИЧЕСТВО СЕКТОРОВ ЗАГРУЗКИ 
-                 LD C,PN_1F7 
-                 LD A,0X20 
-                 OUT (C),A                       ;КОМАНДА ЧТЕНИЯ 
-                 LD C,PN_1F7 
- HDDRD1_         IN A,(C) 
-                 AND 0X88 
-                 CP 8 
-                 JR NZ,HDDRD1_ 
-                 EX AF,AF' 
- HDDRD2_         EX AF,AF' 
-                 XOR A 
-                 LD C,PN_1F0 
- READSC1_        IN E,(C) 
-                 INC C 
-                 IN D,(C) 
-                 DEC C 
-                 LD (HL),E 
-                 INC HL 
-                 LD (HL),D 
-                 INC HL 
-                 DEC A 
-                 JR NZ,READSC1_ 
-                 LD C,PN_1F7 
- HDDRD3_         IN A,(C) 
-                 AND 0X80 
-                 JR NZ,HDDRD3_ 
-                 EX AF,AF' 
-                 DEC A 
-                 JR NZ,HDDRD2_ 
-                 RET 
- EHDDBOOT2 
-   
-                 include "hdd_cd_boot.a80" 
-   
- HDDRDLN EQU $-HDDREAD 
-   
- ;[CD BOOT] 
- CDBOOT  XOR A 
-         CALL CLS 
-         CALL MEMSET 
-         CALL HDDBINI 
-         EI 
-         JP CDBOOTGO 
-   
- UMOUNTIMAGE     RST8 _MOUNTER,_GET_VIRT_BITS 
-                 AND 0X0F 
-                 JP Z,RESTART 
-                 LD IX,WDISMOUNT 
-                 RST8 _WINW 
-                 JP _RULILKA                     ;ВОЗВРАЩАЕМСЯ К ОБЩЕМУ УПРАВЛЕНИЮ 
-   
- DISMOUNT_A      XOR A 
- DISMOUNT_DRV    RST8 _MOUNTER,_CLOSEMOUNT 
-                 JP RESTART 
-   
- DISMOUNT_B      LD A,1 
-                 JR DISMOUNT_DRV 
-   
- DISMOUNT_C      LD A,2 
-                 JR DISMOUNT_DRV 
-   
- DISMOUNT_D      LD A,3 
-                 JR DISMOUNT_DRV 
-   
- ;[СБРОС CMOS] 
- RESET_CMOS      RST8 _CMOS_RW,_CLEAR_CMOS 
-                 CALL SET_MODES 
-                 JP RESTART 
-   
- ;[УСТАНОВКА ЗАДЕРЖКИ ДО ОПРЕДЕЛЕНИЯ HDD] 
- HDDTIMEOUT      LD H,HDD_TIMEOUT 
-                 CALL READCMOS 
-                 LD E,A 
-                 AND 0X0F 
-                 INC A 
-                 CP 10 
-                 JR C,HDDTIMEOUT1 
-                 XOR A 
- HDDTIMEOUT1     LD D,A 
-                 LD A,E 
-                 AND 0XF0 
-                 OR D 
-                 LD L,A 
-                 CALL WRITECMOS 
-                 AND 0X0F 
-                 ADD A,'0' 
-                 LD (TXT_HDDTIMEOUT),A 
-                 JR REPRINT_MENU 
-   
-         IF 0 
- ;[УСТАНОВКА ЗАДЕРЖКИ ЗАПУСКА SCREENSAVER] 
- SCRSAVTIMEOUT   LD H,HDD_TIMEOUT 
-                 CALL READCMOS 
-                 LD E,A 
-                 AND 0XF0 
-                 ADD A,0X10 
-                 CP 0XA0 
-                 JR C,.L0 
-                 XOR A 
- .L0             LD D,A 
-                 LD A,E 
-                 AND 0X0F 
-                 OR D 
-                 LD L,A 
-                 CALL WRITECMOS 
-                 AND 0XF0 
-                 RRCA 
-                 RRCA 
-                 RRCA 
-                 RRCA 
-                 LD (TIMEOUTSCRSAV),A 
-                 ADD A,'0' 
-                 LD (TXT_SCRSAVDELAY),A 
-                 JR REPRINT_MENU 
-         ENDIF 
-   
- ;[УСТАНОВКА РАЗРЕШЕНИЯ/ЗАПРЕЩЕНИЯ ОЗВУЧКИ КЛАВИАТУРЫ] 
- SOUND_KEYS      LD C,M_SOUNDKEYS 
-                 LD HL,SNDKEYS_STAT 
- SET_MENU        PUSH HL 
-                 LD H,CMOS_BYTE_01 
- SET_MENU1       CALL READCMOS 
-                 XOR C 
-                 LD L,A 
-                 CALL WRITECMOS 
-                 AND C 
-                 POP HL 
-                 CALL SET_ONOFF 
- REPRINT_MENU    LD HL,SETUPERTXT 
-                 RST8 _PRINT_MESSAGE 
-                 CALL REST_COLCURS 
-                 RST8 _COM_DEV,_CONTROL_SD 
-                 JP _RULILKA 
-   
- ;[УСТАНОВКА РАЗРЕШЕНИЯ/ЗАПРЕЩЕНИЯ ДОСТУПА К SD КАРТЕ NEOGS] 
- ACS_SDNGS       LD C,M_ACCESSSDG 
-                 LD HL,ACCSSDG_STAT 
-                 JR SET_MENU 
-   
- ;[УСТАНОВКА ВЫБОРА ДРАЙВЕРА ПРИНТЕРА] 
- AYPRN_SETUP     LD C,M_TYPE_FONT 
-                 LD HL,ETXT_AYPRINTER 
-                 JR SET_MENU 
-   
- ;[ВКЛЮЧЕНИЕ/ВЫКЛЮЧЕНИЕ АВТОСТАРТА TAP ФАЙЛА ПРИ ВЫБОРЕ В FILE BROWSER] 
- AUTO_TAPE       LD C,M_AUTO_TAPE 
-                 LD HL,TXT_AUTOTAPE 
-                 PUSH HL 
-                 LD H,CMOS_BYTE_00 
-                 JR SET_MENU1 
-   
- ;для резидента HONEY COMANDER 
-         IFDEF REZIDENT 
- ;включение/выключение резидента 
- REZID_SETUP     LD C,M_REZIDENT 
-                 LD HL,TXT_REZIDENT 
-                 JR SET_MENU 
-   
- ;включение/выключения порчи резидента при запуске 
- KILL_REZID      LD C,M_KILL_REZIDENT 
-                 LD HL,TXT_KILLREZID 
-                 PUSH HL 
-                 LD H,CMOS_BYTE_03 
-                 JR SET_MENU1 
-         ENDIF;REZIDENT 
-   
- ;[УСТАНОВКА ПЕРЕД ВЫВОДОМ МЕНЮ SETUP] 
- SETUPM          LD IX,SETUPER 
-                 LD H,CMOS_BYTE_01 
-                 CALL READCMOS 
-                 LD B,A 
-                 AND M_SOUNDKEYS 
-                 LD HL,SNDKEYS_STAT 
-                 CALL SET_ONOFF 
-                 LD A,B 
-                 AND M_ACCESSSDG 
-                 LD HL,ACCSSDG_STAT 
-                 CALL SET_ONOFF 
-                 LD H,CMOS_BYTE_00 
-                 CALL READCMOS 
-                 AND M_AUTO_TAPE 
-                 LD HL,TXT_AUTOTAPE 
-                 CALL SET_ONOFF 
-                 LD H,HDD_TIMEOUT 
-                 CALL READCMOS 
-                 LD D,A 
-                 AND 0X0F 
-                 ADD A,'0' 
-                 LD (TXT_HDDTIMEOUT),A 
-                 LD A,D 
-                 AND 0XF0 
-                 RRCA 
-                 RRCA 
-                 RRCA 
-                 RRCA 
-                 ADD A,'0' 
- ;               LD (TXT_SCRSAVDELAY),A 
-                 RST8 _WINW 
-                 JP _RULILKA 
-   
- ;[ATM CP/M] 
- ATM_CPM         EI 
-                 HALT 
-                 DI 
-                 PEC_ON M_SHADOW_BF 
-                 LD HL,CPM_PAGES 
-                 LD DE,0X3F 
- ATM_CPM1        LD BC,CONF_128 
-                 OUT (C),D 
-                 LD BC,LOW (WIN_A3) 
- ATM_CPM2        OUTI 
-                 LD A,B 
-                 SUB E 
-                 LD B,A 
-                 JR NZ,ATM_CPM2 
-                 LD A,D 
-                 XOR 0X10 
-                 LD D,A 
-                 JR NZ,ATM_CPM1 
-                 LD SP,0X8000 
-                 LD BC,0X177 
-                 LD A,6 
-                 OUT (C),A 
-                 PEC_OFF M_SHADOW_BF 
-                 JP 0X000C 
-   
- CPM_PAGES       DB 3!0X7F,2!0X7F,4!0X7F,0!0X7F 
-                 DB 3!0X7F,2!0X7F,5!0X7F,ROM_ATMCPM 
-   
- ;[УСТАНОВКА РАЗРЕШЕНИЯ/ЗАПРЕЩЕНИЯ ЭМУЛЯЦИИ ЛЕНТЫ] 
- SET_EMU_TAPE    LD H,CMOS_BYTE_00 
-                 CALL READCMOS 
-                 AND M_EMUL_TAPE 
-                 RET Z 
-                 LD BC,BREAK_LOW_WR 
-                 LD A,LOW (ADRBRK_EMUTAP) 
-                 OUT (C),A 
-                 LD B,HIGH (BREAK_HIGH_WR) 
-                 LD A,HIGH (ADRBRK_EMUTAP) 
-                 OUT (C),A 
-                 PEC_ON M_BREAK_BF 
-                 RET 
-   
-                 include sdcardboot.a80 
-   
- SONGLN          CALL START_SONGLN 
-                 JP RESTART 
-   
- START_SONGLN    DI 
-                 PUSH IX 
-                 PUSH IY 
-                 LD A,0X11 
-                 CALL SET_7FFD 
-                 LD A,0X10 
-                 CALL SET_EFF7 
-                 LD HL,0X4000 
-                 LD DE,0XE000 
-                 LD BC,0X1B00 
-                 LDIR 
-                 LD HL,0XD000 
-                 LD DE,0XD001 
-                 LD BC,0X1000 
-                 LD (HL),0 
-                 LDIR 
- SONGLN1         XOR A 
-                 IN A,(0XFE) 
-                 CPL 
-                 AND 0X1F 
-                 JR NZ,SONGLN1 
-                 PEC_ON M_SHADOW_BF 
-                 EVOPORT WIN_A0,ROM_RST82 
-                 CALL UNP_SONGLN 
-                 EVOPORT WIN_A0,ROM_BAS48|0X80 
-                 PEC_OFF M_SHADOW_BF 
-                 CALL 0XC000 
-                 LD HL,0XE000 
-                 LD DE,0X4000 
-                 LD BC,0X1B00 
-                 LDIR 
-                 LD HL,0XC000 
-                 LD DE,0XC001 
-                 LD BC,0X3FFF 
-                 LD (HL),0 
-                 LDIR 
-                 LD A,0X10 
-                 CALL SET_7FFD 
-                 XOR A 
-                 CALL SET_EFF7 
-                 POP IY 
-                 POP IX 
-                 RET 
-