Subversion Repositories pentevo

Rev

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

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