01 февраля 2001

МУЛЬТИКОЛОР И ЧАНКИ НА БОРДЮРЕ 
                                         
(С) Николай Витенко (VNN)                
(С) Денис Токарчук (DWT)                 
    К.С.SoftWare                         
-----------------------------------------
        Начало истории         
                                         
   Как-то светлым зимним вечером 1999 го-
да, когда на  земле лежал белый снежок, я
(DWT) сидел в ZASM`е и готовил  очередные
коды для несостоявшегося проекта под наз-
ванием "ZX-Press #2". (Брось ты ZASM! Пе-
реходи на ALASM, раз уж память наростил в
компе. Прим. ред.) Очередной раз зевнув и
продрав глаза, я заметил, как замигал мо-
дем светодиодом - это значило, что кто-то
на другом конце провода меня вызывает. Не
долго думая загружаю терминалку MMD v2.20
и наблюдаю несколько интересных явлений в
процессе  стыкования и чтения каталога. В
очередной раз порадовавшись за нас, "про-
двинутых" компьютерщиков  родного  Карло-
Марксово (у нас телефонные линии ужасные,
поэтому счастья общаться в режиме realti-
ме-terminal имеют далеко не все, а у нас,
спектрумистов, специальная линия, которую
мы сами (!!!!) провели), я набрал следую-
щее:                                     
   "Кто там?"                            
   На что мне ответили:                  
   "Это VNN. Провет, Денис! Я тут кое-что
смастерил, если хочешь - скину. Удивишься
сильно - обещаю."                        
   "Очередной мультиколор на бордюре?", -
ещё раз зевнув, набрал я на клавиатуре.  
   "Почти, но это нечто новое!"          
   Я насторожился - если VNN говорит, что
новое, значит это действительно НОВОЕ! На
это стОит посмотреть.  Короче, VNN скинул
мне MASM`овский исходник...              
                                         
            К делу             
                                         
   После небольшого лирического отступле-
ния приступим к рассмотрению ИДЕИ эффекта
в деталях. А она не так уж и сложна - как
говорится: "не так страшен чёрт...".     
                                         
   Всё сводится к тому, что разные цвето-
вые соединения (комбинации  цветов) через
каждое прерывание переключаются (примерно
то  же, что и с двумя экранами или трико-
лором, правда  сложнее в реализации - ри-
совать на бордюре не так уж легко, как на
обычном экране). Естественно, частота пе-
реключения  цветов влияет на частоту мер-
цания, что, конечно  же, не очень приятно
для глаза :(                             
                                         
   Теперь немного посчитаем. Т.к. на бор-
дюр  можно выводить цвета из палитры в 8,
то используя вышеописанный метод весьма и
весьма просто получить 64 цвета, применяя
накладку в две цветовые комбинации. Имен-
но это мы и рассмотрим (следует сказать о
побочных свойствах данного эффекта: сдви-
нув одну из цветовых комбинаций на 2 так-
та (на бордюре 1 такт равен 2-м пикселям)
мы  "отсекаем"  ровно 4 пикселя и получим
своебразную чанк-точку, что можно исполь-
зовать в чанк-эффектах.                  
                                         
   Теперь, собственно, об алгоритме. Све-
дём всё о общую схему:                   
                                         
     +-------------------------------+   
     |Поместить в регистровую пару NN|   
  +->+адрес блока цвет. комбинаций 1 |   
  |  +--------------+----------------+   
  |                 |                    
  |      +----------+----------+         
  |      |Вывод блока на бордюр|         
  |      +----------+----------+         
  |                 |                    
  |             +---+--+                 
  |             | HALT |                 
  |             +---+--+                 
  |                 |                    
  |  +--------------+----------------+   
  |  |Поместить в регистровую пару NN|   
  |  |адрес блока цвет. комбинаций 2 |   
  |  +--------------+----------------+   
  |                 |                    
  |      +----------+----------+         
  |      |Вывод блока на бордюр|         
  |      +----------+----------+         
  |             +---+--+                 
  |             | HALT |                 
  |             +---+--+                 
  +----<------------+                    
                                         
  Алгоритм был специально "развёрнут" для
большей наглядности. Как видно, можно по-
лучить и бОльшую  палитру цветов лишь до-
бавляя новые звенья "***"+"***"+"Halt"...
Правда, мерцание будет - ни в сказке ска-
зать...                                  
                                         
   А теперь перейдём от теории к практике
и посмотрим на реальный код. Сразу скажу,
что  процедура  подогнана под Пентагонов-
ский INT.  Переделать его под ваш комп не
составит труда, я надеюсь...             
                                         
;Multicolors border & 4х4 cHunky оп bor- 
;der. Demo version for Pentagon INT.     
;(С) Nickolas -VNN- Vitenko 1999         
;Листинг для ALASM.                      
                                         
        ORG     #8000                    
        DEFS    257,#81 ;таблица IM 2    
                        ;для нестабильной
                        ;шины данных     
        ORG     #8181                    
        RET             ;обработка IM 2  
                        ;нам не нужна!   
        ORG     #8200                    
        DI                               
        LD      A,#80                    
        LD      I,A     ;понятно, да?    
        IM      2                        
LOOP    EI                               
        HALT            ;можно убрать для
        XOR     A       ;экспериментов   
        OUT     (#FE),A                  
        LD      ВС,403  ;задержка до на- 
В1      DEC     ВС      ;чала более-менее
        LD      A,В     ;видимой части   
        OR      С       ;бордюра         
        JR      NZ,В1                    
        LD      A,7     ;белый бордюр    
        OUT     (#FE),A                  
        LD      ВС,6    ;очёркиваем белой
В2      DEC     ВС      ;линией для кра- 
        LD      A,В     ;соты. На тормоз-
        OR      С       ;ных компах ниче-
        JR      NZ,В2   ;го не видно :(  
        DEFS    6       ;расточительно,  
                        ;но 24 такта Wait
        LD      С,#FE                    
        LD      HL,DATA1;программа вывода
ADDT    EQU     $-2     ;на бордюр блока 
        DUP     32      ;данных по изме- 
        NOP             ;няемому адресу  
        NOP             ;в HL. В тактах  
        DUP     13      ;это будет 224.  
        OUTI                             
        EDUP                             
        NOP                              
        NOP                              
        EDUP                             
        XOR     A       ;чёрным бордюром 
        OUT     (#FE),A ;добиваем остав- 
        JP      EFF1    ;шееся место.    
ADEF    EQU     $-2     ;изменяющийся    
                        ;адрес гиперпере-
                        ;хода в EFF1/EFF2
EFF1    LD      HL,EFF2 ;замена адресов  
        LD      (ADEF),HL                
        LD      HL,DATA2                 
        LD      (ADDT),HL                
        JP      PROD                     
                                         
EFF2    LD      HL,EFF1                  
        LD      (ADEF),HL                
        LD      HL,DATA1                 
        LD      (ADDT),HL                
        JP      PROD                     
                                         
PROD    LD      HL,0    ;хитрый метод за-
        LD      DE,0    ;держки          
        LD      ВС,2                     
IZ      EQU     $-2                      
        LDIR                             
        LD      A,#7F                    
        IN      A,(#FE)                  
        RRA             ;пробел - выход  
        JR      NC,Stop                  
        LD      A,#DF                    
        IN      A,(#FE)                  
        RRA             ;"Р" - увеличить 
        JR      С,KL1   ;задержку        
        LD      HL,(IZ)                  
        INC     HL                       
        LD      (IZ),HL                  
KL1     RRA             ;"О" - уменьшить 
        JR      С,KL2                    
        LD      HL,(IZ)                  
        DEC     HL                       
        LD      (IZ),HL                  
KL2     JP      LOOP                     
                                         
Stop    DI                               
        LD      A,#3F   ;восстановить    
        LD      I,A     ;нормальный режим
        IM      1       ;прерываний      
        EI                               
        RET                              
                                         
;данные 1-ой цветовой комбинации         
                                         
DATA1   DUP     16                       
        DUP     4                        
        DEFB    1,5,2,7,4,3,1,7,4,6,2,5,0
        EDUP                             
        DUP     4                        
        DEFB    1,2,3,4,5,6,7,1,3,4,6,0,7
        EDUP                             
        EDUP                             
                                         
;данные 2-ой цветовой комбинации         
                                         
DATA2   DUP     16                       
        DUP     4                        
        DEFB    0,1,0,1,0,1,0,1,0,1,0,1,0
        EDUP                             
        DUP     4                        
        DEFB    2,0,6,0,3,0,5,0,1,0,4,0,6
        EDUP                             
        EDUP                             
                                         
   И примечания.  Как только вы запустите
вышеприведённую программу, то увидите об-
разовавшиеся  полоски разного цвета и от-
тенков, а также отсечённые чанки-точки. В
таком виде это не совсем красиво, поэтому
их можно убрать клавишами "О" и "Р". Фак-
тически получается ручная подгонка тактов
компа под эффект.                        
                                         
          О другом #1          
                                         
  Сначала планировалось поместить в "Чёр-
ной  Вороне" ещё два варианта данного эф-
фекта (с одной движущейся вертикально по-
лосой цветовых комбинаций, а также с дву-
мя движущимися вертикальными полосами, но
это нам показалось пока излишним, да и не
помешает  вам, читатели, самим поэкспери-
ментировать. ДЕРЗАЙТЕ!                   
                                         
  VNN уже довольно давно ведёт активную и
плодотворную работу по изобретению всяких
мультиколорных  эффектов  как на бордюре,
так  и на экране. Так, недавно он написал
для нашей новой демки, которая скоро вый-
дет (январь-февраль 2001 года), несколько
частей  с бордюрными эффектами, где в од-
ной  из  них на бордюре написано "ZX" без
всяких  "квадратиков" и мерцаний (лично я
после просмотра данного шедевра долго ис-
кал свою челюсть на столе :). Также неза-
висимое движение шести "цветовых спрайти-
ков"  по  бордюру! В "ассортименте" также
имеются множество других эффектов. Напри-
мер, плавно передвигающаяся бегущая стро-
ка  по бордюру (в ней ещё и цвет успевает
бегать).  Если  интересно, то в следующем
номере журнала мы опубликуем примеры этих
и других эффектов.                       
                                         
          О другом #2          
                                         
  Люди!!! Кто имеет в наличии лишнюю (или
лишние) раведённую печатную плату (платы)
DMA-card - откликнитесь!  Мы с удовольст-
вием  купим её (или их) за разумную цену.
Или хотя бы есть в наличии журнал "Радио-
любитель. Ваш компьютер" номера 4-7 этого
года (2000, естественно), где  была опуб-
ликована разводка печатной платы.        
                                         
            Эпилог             
                                         
   Если у вас возникли какие-либо вопросы
или вы хотите переписываться, то напишите
нам письмо по следующим адресам:         
                                         
             86486             
   Денис Васильевич Токарчук   
             а/я 1             
        г. Енакиево=19         
       Донецкая область        
            Украина            
                                         
или                                      
                                         
             86486             
  Николай Николаевич Витенко   
       дом 5 квартира 16       
         ул. Юбилейная         
        г. Енакиево=19         
       Донецкая область        
            Украина            
                                         
Р.S. Speccy rulez forever!!!             
-----------------------------------------



Other articles:


Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Similar articles:
Inferno - The authors of the magazine.
Music scene - Review active in 2007-2008, Spectrum musicians.

В этот день...   21 November