-   
- ;LAST UPDATE: 03.05.2019 savelij 
-   
- ;[СОХРАНЕНИЕ КУСКА ЭКРАНА] 
- SAVE2X2         LD HL,(ADR_REST) 
-                 LD DE,MOUSE_BUFF 
-                 LD B,8 
- SAVE2X21        LD A,(HL) 
-                 LD (DE),A 
-                 INC DE 
-                 INC L 
-                 LD A,(HL) 
-                 LD (DE),A 
-                 INC DE 
-                 DEC L 
-                 CALL INC_H 
-                 DJNZ SAVE2X21 
-                 RET 
-   
- ;[ВОССТАНОВЛЕНИЕ КУСКА ЭКРАНА] 
- REST2X2         LD HL,0 
- ADR_REST        EQU $-2 
-                 LD DE,MOUSE_BUFF 
-                 LD B,8 
- REST2X21        LD A,(DE) 
-                 LD (HL),A 
-                 INC DE 
-                 INC L 
-                 LD A,(DE) 
-                 LD (HL),A 
-                 INC DE 
-                 DEC L 
-                 CALL INC_H 
-                 DJNZ REST2X21 
-                 RET 
-   
- ;[ДЕТЕКТ НАЛИЧИЯ МЫШИ] 
- DETECTMOUSE     LD HL,ERS_FLAGS 
-                 LD BC,MOUSE_X 
-                 LD E,0X20 
-                 EI 
-                 HALT 
-                 IN D,(C)                ;1.СТАБИЛЬНОСТЬ X 
- SETMOU1         IN A,(C) 
-                 CP D 
-                 JR NZ,SETMOU2 
-                 DEC E 
-                 JR NZ,SETMOU1           ;2.KEYS<>X 
-                 LD B,HIGH (MOUSE_KEYS);DEC B 
-                 IN A,(C) 
-                 CP D 
-                 JR Z,SETMOU2            ;3.KEYS&7=7(LION17) 
-                 CPL 
-                 AND 7 
-                 SET B_MOUSE_ON,(HL) 
-                 RET Z 
- SETMOU2         RES B_MOUSE_ON,(HL) 
-                 SCF 
-                 RET 
-   
- ;[ОПРОС ПЕРЕМЕЩЕНИЯ МЫШИ] 
- MOUSE           LD HL,(ARXY) 
-                 LD DE,0                 ;D=Y КООДИНАТА, E=X КООРДИНАТА 
- MOUPOS          EQU $-2 
-                 LD BC,MOUSE_X 
-                 IN A,(C)                ;ЧТЕНИЕ КООРДИНАТЫ X 
-                 LD (MOUPOS),A 
-                 SUB E 
-                 JR Z,MOUNX 
-                 JP P,MOUPX 
-                 ADD A,L 
-                 JR C,$+3 
-                 XOR A 
-                 LD L,A 
-                 JR MOUNX 
-   
- MOUPX           ADD A,L 
-                 JR C,$+6 
-                 CP 0XF9 
-                 JR C,$+4 
-                 LD A,0XF9 
-                 LD L,A 
- MOUNX           LD BC,MOUSE_Y           ;ЧТЕНИЕ КООРДИНАТЫ Y 
-                 IN A,(C) 
-                 LD (MOUPOS+1),A 
-                 SUB D 
-                 JR Z,MOUNY 
-                 NEG 
-                 JP P,MOUPY 
-                 ADD A,H 
-                 JR C,$+3 
-                 XOR A 
-                 LD H,A 
-                 JR MOUNY 
-   
- MOUPY           ADD A,H 
-                 JR C,$+6 
-                 CP 0XB8 
-                 JR C,$+4 
-                 LD A,0XB8 
-                 LD H,A 
- MOUNY           LD (ARXY),HL 
-                 RET 
-   
- MOUOPT          LD H,(IX+_Y_COORD) 
-                 LD L,(IX+_X_COORD) 
-                 LD DE,(ARXY) 
-                 LD B,3 
-                 SRL D 
-                 SRL E 
-                 DJNZ $-4 
-                 LD A,E 
-                 CP L 
-                 RET C                   ;КУРСОР ЛЕВЕЕ ОКНА 
-                 LD A,L 
-                 ADD A,(IX+_H_SIZE) 
-                 DEC A 
-                 CP E 
-                 RET C                   ;КУРСОР ПРАВЕЕ ОКНА 
-                 LD A,D 
-                 INC H 
-                 CP H 
-                 RET C                   ;КУРСОР ВЫШЕ ОКНА ИЛИ НА ВЕРХНЕЙ ПОЛОСКЕ 
-                 LD A,H 
-                 ADD A,(IX+_V_SIZE) 
-                 SUB 3 
-                 CP D 
-                 RET C                   ;КУРСОР НИЖЕ ОКНА ИЛИ НА ПОСЛЕДНЕЙ ПОЛОСКЕ 
- ;КУРСОР В ПРЕДЕЛАХ РАБОЧЕЙ ОБЛАСТИ 
-                 LD A,(IX+_NUM_KOL_H) 
-                 AND A 
-                 JR NZ,.L1                
-                 OR (IX+_NUM_KOL_L) 
-                 JR Z,.L1 
- ;ПРОВЕРКА ДЛЯ КОЛИЧЕСТВА ПУНКТОВ МЕНЬШЕ ВЫСОТЫ ОКНА - 2 
-                 PUSH HL 
-                 LD L,A 
-                 LD H,(IX+_NUM_KOL_H) 
-                 LD A,D 
-                 SUB (IX+_Y_COORD) 
-                 LD C,A 
-                 LD B,0 
-                 AND A 
-                 SBC HL,BC 
-                 POP HL 
-                 RET C 
-   
- .L1             LD A,D 
-                 SUB H 
-                 LD C,A 
-                 LD L,(IX+_TEK_PKT_L) 
-                 LD H,(IX+_TEK_PKT_H) 
-                 LD B,0 
-                 LD D,B 
-                 LD E,(IX+_NUM_PKT) 
-                 SBC HL,DE 
-                 ADD HL,BC 
-                 LD (IX+_TEK_PKT_L),L 
-                 LD (IX+_TEK_PKT_H),H 
-                 LD (IX+_NUM_PKT),C 
-                 JP COLOR_CURSOR 
-   
- ;[РИСОВАНИЕ КУРСОРА МЫШИ] 
- DRAW_MOUSE      LD BC,0 
- ARXY            EQU $-2 
-                 LD A,B 
-                 CALL 8881 
-                 LD (REST2X2+1),HL 
-                 PUSH HL 
-                 CALL SAVE2X2 
-                 LD A,6 
- _MORG           EQU $-1 
-                 INC A 
-                 LD HL,ERS_FLAGS 
-                 CP 0X0C 
-                 JR NZ,_MORG3 
-                 LD A,M_NUM_CURSOR 
-                 XOR (HL) 
-                 LD (HL),A 
-                 XOR A 
- _MORG3          LD (_MORG),A 
-                 LD A,(ARXY) 
-                 AND 7 
-                 CPL 
-                 ADD A,9 
-                 LD C,A 
-                 LD A,(ERS_FLAGS) 
-                 AND M_NUM_CURSOR 
-                 LD HL,SPRAR 
-                 JR Z,_MORG2 
-                 LD HL,SPRAR2 
- _MORG2          LD B,8 
-                 POP DE 
- PRAR0           PUSH BC 
-                 LD B,C 
-                 LD C,(HL) 
-                 INC HL 
-                 PUSH HL 
-                 LD L,(HL) 
-                 EX DE,HL 
-                 LD A,0XFF 
-                 LD D,0 
- PRAR1           SCF 
-                 RL C 
-                 RLA 
-                 SLA E 
-                 RL D 
-                 DJNZ PRAR1 
-                 AND (HL) 
-                 OR D 
-                 LD (HL),A 
-                 INC L 
-                 LD A,(HL) 
-                 AND C 
-                 OR E 
-                 LD (HL),A 
-                 DEC L 
-                 CALL INC_H 
-                 EX DE,HL 
-                 POP HL 
-                 INC HL 
-                 POP BC 
-                 DJNZ PRAR0 
-                 RET 
-   
- ;[МЕСТОПОЛОЖЕНИЕ КУРСОРА] 
- OPMSPL          LD E,(IX+_ADR_MOUSE_L) 
-                 LD D,(IX+_ADR_MOUSE_H) 
-                 LD A,D 
-                 OR E 
-                 RET Z                   ;АДРЕС ОПИСАТЕЛЕЙ НЕ ЗАДАН 
-                 PUSH IX 
-                 PUSH DE 
-                 POP IX 
-                 LD HL,(ARXY)            ;H=Y, L=X 
-                 SRL H 
-                 SRL H 
-                 SRL H 
-                 SRL L 
-                 SRL L 
-                 SRL L                   ;HL=HL/8 
- .NXTPOS2        LD A,(IX+0) 
-                 INC A 
-                 JR Z,.ENDWI             ;КОНЕЦ СПИСКА 
-                 LD A,L 
-                 CP (IX+1) 
-                 JR C,.NXTPOS1           ;КУРСОР ЛЕВЕЕ 
-                 LD A,(IX+1) 
-                 ADD A,(IX+4) 
-                 DEC A 
-                 CP L 
-                 JR C,.NXTPOS1           ;КУРСОР ПРАВЕЕ 
-                 LD A,H 
-                 CP (IX+2) 
-                 JR C,.NXTPOS1           ;КУРСОР ВЫШЕ 
-                 LD A,(IX+2) 
-                 ADD A,(IX+3) 
-                 DEC A 
-                 CP H 
-                 JR C,.NXTPOS1           ;КУРСОР НИЖЕ 
-                 LD A,(IX+5)             ;ПОЛУЧИЛИ КОД КНОПКИ   
- .ENDWI          POP IX                  ;ПОПАЛИ В ЗАДАННУЮ ЗОНУ 
-                 RET                     ;ВЫХОДИМ 
-   
- .NXTPOS1        LD DE,6                 ;ПОКА НИКУДА НЕ ПОПАЛИ 
-                 ADD IX,DE               ;ПЕРЕХОДИМ К ПРОВЕРКЕ СЛЕДУЩЕГО 
-                 JR .NXTPOS2 
-