Subversion Repositories pentevo

Rev

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

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