Subversion Repositories pentevo

Rev

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

  1.  
  2. ;LAST UPDATE: 03.09.2017 savelij
  3.  
  4. ;[СОХРАНЕНИЕ КУСКА ЭКРАНА]
  5. SAVE2X2         LD HL,(ADR_REST)
  6.                 LD DE,MOUSE_BUFF
  7.                 LD B,8
  8. SAVE2X21        LD A,(HL)
  9.                 LD (DE),A
  10.                 INC DE
  11.                 INC L
  12.                 LD A,(HL)
  13.                 LD (DE),A
  14.                 INC DE
  15.                 DEC L
  16.                 CALL INC_H
  17.                 DJNZ SAVE2X21
  18.                 RET
  19.  
  20. ;[ВОССТАНОВЛЕНИЕ КУСКА ЭКРАНА]
  21. REST2X2         LD HL,0
  22. ADR_REST        EQU $-2
  23.                 LD DE,MOUSE_BUFF
  24.                 LD B,8
  25. REST2X21        LD A,(DE)
  26.                 LD (HL),A
  27.                 INC DE
  28.                 INC L
  29.                 LD A,(DE)
  30.                 LD (HL),A
  31.                 INC DE
  32.                 DEC L
  33.                 CALL INC_H
  34.                 DJNZ REST2X21
  35.                 RET
  36.  
  37. ;[ДЕТЕКТ НАЛИЧИЯ МЫШИ]
  38. DETECTMOUSE     LD HL,ERS_FLAGS
  39.                 LD BC,MOUSE_X
  40.                 LD E,0X20
  41.                 EI
  42.                 HALT
  43.                 IN D,(C)                ;1.СТАБИЛЬНОСТЬ X
  44. SETMOU1         IN A,(C)
  45.                 CP D
  46.                 JR NZ,SETMOU2
  47.                 DEC E
  48.                 JR NZ,SETMOU1           ;2.KEYS<>X
  49.                 LD B,HIGH (MOUSE_KEYS);DEC B
  50.                 IN A,(C)
  51.                 CP D
  52.                 JR Z,SETMOU2            ;3.KEYS&7=7(LION17)
  53.                 CPL
  54.                 AND 7
  55.                 SET B_MOUSE_ON,(HL)
  56.                 RET Z
  57. SETMOU2         RES B_MOUSE_ON,(HL)
  58.                 SCF
  59.                 RET
  60.  
  61. ;[ОПРОС ПЕРЕМЕЩЕНИЯ МЫШИ]
  62. MOUSE           LD HL,(ARXY)
  63.                 LD DE,0                 ;D=Y КООДИНАТА, E=X КООРДИНАТА
  64. MOUPOS          EQU $-2
  65.                 LD BC,MOUSE_X
  66.                 IN A,(C)                ;ЧТЕНИЕ КООРДИНАТЫ X
  67.                 LD (MOUPOS),A
  68.                 SUB E
  69.                 JR Z,MOUNX
  70.                 JP P,MOUPX
  71.                 ADD A,L
  72.                 JR C,$+3
  73.                 XOR A
  74.                 LD L,A
  75.                 JR MOUNX
  76.  
  77. MOUPX           ADD A,L
  78.                 JR C,$+6
  79.                 CP 0XF9
  80.                 JR C,$+4
  81.                 LD A,0XF9
  82.                 LD L,A
  83. MOUNX           LD BC,MOUSE_Y           ;ЧТЕНИЕ КООРДИНАТЫ Y
  84.                 IN A,(C)
  85.                 LD (MOUPOS+1),A
  86.                 SUB D
  87.                 JR Z,MOUNY
  88.                 NEG
  89.                 JP P,MOUPY
  90.                 ADD A,H
  91.                 JR C,$+3
  92.                 XOR A
  93.                 LD H,A
  94.                 JR MOUNY
  95.  
  96. MOUPY           ADD A,H
  97.                 JR C,$+6
  98.                 CP 0XB8
  99.                 JR C,$+4
  100.                 LD A,0XB8
  101.                 LD H,A
  102. MOUNY           LD (ARXY),HL
  103.                 RET
  104.  
  105. MOUOPT          LD H,(IX+_Y_COORD)
  106.                 LD L,(IX+_X_COORD)
  107.                 LD DE,(ARXY)
  108.                 LD B,3
  109.                 SRL D
  110.                 SRL E
  111.                 DJNZ $-4
  112.                 LD A,E
  113.                 CP L
  114.                 RET C           ;КУРСОР ЛЕВЕЕ ОКНА
  115.                 LD A,L
  116.                 ADD A,(IX+_H_SIZE)
  117.                 DEC A
  118.                 CP E
  119.                 RET C           ;КУРСОР ПРАВЕЕ ОКНА
  120.                 LD A,D
  121.                 INC H
  122.                 CP H
  123.                 RET C           ;КУРСОР ВЫШЕ ОКНА ИЛИ НА ВЕРХНЕЙ ПОЛОСКЕ
  124.                 LD A,H
  125.                 ADD A,(IX+_V_SIZE)
  126.                 SUB 3
  127.                 CP D
  128.                 RET C           ;КУРСОР НИЖЕ ОКНА ИЛИ НА ПОСЛЕДНЕЙ ПОЛОСКЕ
  129.                 LD A,D
  130.                 SUB H
  131.                 LD C,A
  132.                 LD L,(IX+_TEK_PKT_L)
  133.                 LD H,(IX+_TEK_PKT_H)
  134.                 LD B,0
  135.                 LD D,B
  136.                 LD E,(IX+_NUM_PKT)
  137.                 SBC HL,DE
  138.                 ADD HL,BC
  139.                 LD (IX+_TEK_PKT_L),L
  140.                 LD (IX+_TEK_PKT_H),H
  141.                 LD (IX+_NUM_PKT),C
  142.                 JP COLOR_CURSOR
  143.  
  144. ;[РИСОВАНИЕ КУРСОРА МЫШИ]
  145. DRAW_MOUSE      LD BC,0
  146. ARXY            EQU $-2
  147.                 LD A,B
  148.                 CALL 8881
  149.                 LD (REST2X2+1),HL
  150.                 PUSH HL
  151.                 CALL SAVE2X2
  152.                 LD A,6
  153. _MORG           EQU $-1
  154.                 INC A
  155.                 LD HL,ERS_FLAGS
  156.                 CP 0X0C
  157.                 JR NZ,_MORG3
  158.                 LD A,M_NUM_CURSOR
  159.                 XOR (HL)
  160.                 LD (HL),A
  161.                 XOR A
  162. _MORG3          LD (_MORG),A
  163.                 LD A,(ARXY)
  164.                 AND 7
  165.                 CPL
  166.                 ADD A,9
  167.                 LD C,A
  168.                 LD A,(ERS_FLAGS)
  169.                 AND M_NUM_CURSOR
  170.                 LD HL,SPRAR
  171.                 JR Z,_MORG2
  172.                 LD HL,SPRAR2
  173. _MORG2          LD B,8
  174.                 POP DE
  175. PRAR0           PUSH BC
  176.                 LD B,C
  177.                 LD C,(HL)
  178.                 INC HL
  179.                 PUSH HL
  180.                 LD L,(HL)
  181.                 EX DE,HL
  182.                 LD A,0XFF
  183.                 LD D,0
  184. PRAR1           SCF
  185.                 RL C
  186.                 RLA
  187.                 SLA E
  188.                 RL D
  189.                 DJNZ PRAR1
  190.                 AND (HL)
  191.                 OR D
  192.                 LD (HL),A
  193.                 INC L
  194.                 LD A,(HL)
  195.                 AND C
  196.                 OR E
  197.                 LD (HL),A
  198.                 DEC L
  199.                 CALL INC_H
  200.                 EX DE,HL
  201.                 POP HL
  202.                 INC HL
  203.                 POP BC
  204.                 DJNZ PRAR0
  205.                 RET
  206.  
  207. ;[МЕСТОПОЛОЖЕНИЕ КУРСОРА]
  208. OPMSPL          LD E,(IX+_ADR_MOUSE_L)
  209.                 LD D,(IX+_ADR_MOUSE_H)
  210.                 LD A,D
  211.                 OR E
  212.                 RET Z                   ;АДРЕС ОПИСАТЕЛЕЙ НЕ ЗАДАН
  213.                 PUSH IX
  214.                 PUSH DE
  215.                 POP IX
  216.                 LD HL,(ARXY)            ;H=Y, L=X
  217.                 SRL H
  218.                 SRL H
  219.                 SRL H
  220.                 SRL L
  221.                 SRL L
  222.                 SRL L                   ;HL=HL/8
  223. NXTPOS2         LD A,(IX+0)
  224.                 INC A
  225.                 JR Z,ENDWI
  226.                 LD A,L
  227.                 CP (IX+1)
  228.                 JR C,NXTPOS1            ;КУРСОР ЛЕВЕЕ
  229.                 LD A,(IX+1)
  230.                 ADD A,(IX+4)
  231.                 DEC A
  232.                 CP L
  233.                 JR C,NXTPOS1            ;КУРСОР ПРАВЕЕ
  234.                 LD A,H
  235.                 CP (IX+2)
  236.                 JR C,NXTPOS1            ;КУРСОР ВЫШЕ
  237.                 LD A,(IX+2)
  238.                 ADD A,(IX+3)
  239.                 DEC A
  240.                 CP H
  241.                 JR C,NXTPOS1            ;КУРСОР НИЖЕ
  242.                 LD A,(IX+5)             ;ПОЛУЧИЛИ КОД КНОПКИ  
  243. ENDWI           POP IX                  ;ПОПАЛИ В ЗАДАННУЮ ЗОНУ
  244.                 RET                     ;ВЫХОДИМ
  245.  
  246. NXTPOS1         LD DE,6                 ;ПОКА НИКУДА НЕ ПОПАЛИ
  247.                 ADD IX,DE               ;ПЕРЕХОДИМ К ПРОВЕРКЕ СЛЕДУЩЕГО
  248.                 JR NXTPOS2
  249.