
          2. "Плазма"

   Это целый ряд красивых эффек-
тов. Вот  первый  из  них, самый
простой:
140.
;--------------------------;
3; (c) Иван Рощин, 1997     ;
; ЭФФЕКТ "PLASMA"          ;
;--------------------------;

        LD      HL,#4000  ;CLS
        LD      (HL),L
        LD      DE,#4001
        LD      BC,#1AFF
        LDIR

;Переносим содержимое верхней строки
;вниз и наоборот, т.е. экран как бы
;замкнут по вертикали:

M2      LD      HL,#5820
        LD      DE,#5AE0
        LD      BC,32
        LDIR
        LD      HL,#5AC0
        LD      DE,#5800
        LD      BC,32
        LDIR

;В цикле обновляем атрибуты #5820-#5AE0:

        LD      IX,#5820
M1      LD      A,(IX+1)
        ADD     A,(IX-1)
        ADD     A,(IX+32)
        ADD     A,(IX-32)

        DEC     A      ;!
        SRL     A      ;!
        SRL     A      ;!

        LD      (IX),A
        INC     IX
        LD      A,XL
        CP      #E0
        JR      NZ,M1
        LD      A,XH
        CP      #5A
        JR      NZ,M1

        XOR     A
        IN      A,(254)
        CPL
        AND     31
        JR      Z,M2
        RET
2
   Вы можете  экспериментировать
с этой  программой,  изменяя  ее
участок, помеченный "!".  Попро-
буйте такие варианты:

а) DEC A    б) SRL A    в) SRL A
   SRL A       DEC A       SRL A
   SRL A       SRL A       DEC A

г) SRL A    д) ADD A,8
   SRL A       SRL A
   INC A       SRL A
               DEC A

   После этого участка можно до-
бавить команду AND #3F  или  AND
#7F - это тоже влияет на вид эф-
фекта.

   Можно изменить и другой фраг-
мент программы:

        LD      A,(IX+1)
        ADD     A,(IX-1)
        ADD     A,(IX+32)
        ADD     A,(IX-32)

Он определяет, что значение  те-
кущего атрибута зависит от  зна-
чений  атрибутов  слева, справа,
снизу и сверху от него:

   ┌───┐
   │ ▒ │  █ - текущий атрибут
   │▒█▒│
   │ ▒ │  ▒ - влияющие на него атрибуты
   └───┘

   Интересные  результаты  полу-
чаются при определении таких за-
висимостей:

┌───┐ LD  A,(IX+1)     ┌───┐ LD  A,(IX)
│ ▒ │ ADD A,(IX)       │   │ ADD A,(IX)
│ ▓▒│ ADD A,(IX+32)    │ ▓ │ ADD A,(IX+31)
│ ▒ │ ADD A,(IX-32)    │▒▒ │ ADD A,(IX+32)
└───┘                  └───┘

┌───┐ LD  A,(IX-33)    ┌───┐ LD  A,(IX)
│▒ ▒│ ADD A,(IX-31)    │   │ ADD A,(IX)
│ █ │ ADD A,(IX+31)    │ ▓ │ ADD A,(IX+32)
│▒ ▒│ ADD A,(IX+33)    │ ▒▒│ ADD A,(IX+33)
└───┘                  └───┘

