Программистам - обмен опытом: программирование мультиколорных эффектов.

ZX Format #06
  Изготовление мультиколоров

music by DNK
(C) MIK. VIRT GROUP.
_______________________________

 Эта  статья  является  прямым логическим
продолжением предыдущей, посвящённой бор-
дюрным  эффектам.  Поэтому для наилучшего
понимания   нижеизложеного,  советую  вам
  прочитать предыдущую статью.

 Часть первая и единственная.

 Мультиколор можно  определить, как такое
представление графической информации, при
котором  с  помощью  программных  средств
достигается  получение в одном знакоместе
более, чем двух цветов. Примечание :
Обратите  внимание  на  то, что получение
более  чем  двух цветов в пределах байта,
принадлежащего   знакоместу,   невозможмо
посредством нижеизложенной технологии.

 Теперь пора перейти к описанию техничес-
кой стороны мультиколора. Как я уже отме-
чал, принципы работы бордюрных эффектов и
мультиколора  схожи. Самым проблематичным
представляется  фиксация  их  по времени.
Само  существование мультиколора основано
на  том,  что при построении каждой линии
основного  экрана  ULA ( группа микросхем
ответственных  за  вывод графики ) заново
читает  информацию из области атрибутов и
если  после  построения фрагмента экрана,
до  начала  построения  следующей строки,
подменить  данные описывающие эти строки,
то следующая строка будет построена в со-
ответствии с новыми данными об атрибутах.
Итак,  для того, чтобы получить мультико-
лор,  вам необходимо произвести следующие
действия :

 1. Дождаться сигнала  INT.
 2.  Выдержать  паузу  до  момента начала
построения  интересующей  нас области (На
самом  деле меньшую на время, которое вам
необходимо для передачи нужной информации
в область атрибутов).
, 3.  Подождать пока заменяемые вами атри-
буты будут построены.
 4. Кинуть на их место новые данные.
 5.  Если  необходимо,  выдержать паузу =
время  построения  одной  строки  - время
потраченое на пункты 3 и 4.
  6. Бодро перейти к пункту 3.
 7. Сделать что-нибудь полезное.

 По традиции  не буду забивать вам голову
пустой  писаниной, а сразу перейду к при-
меру.

 Устроим мультиколор в нулевой строке,0-5
знакоместа.

  ORG #8000
       DI   
       LD HL, #BE00 
       LD DE, #BE01 
       LD BC, 256  
       LD A, H  
       LD (HL), #BF 
       LDIR 
       LD I, A  
       LD A, #C9     ;Обработчик
        LD (#BFBF), A ;прерывания
       IM 2         ;команда RET
MAIN   EI  
       HALT 
       DI   
       LD A, 63 ; !
LOOP1  DS 52, 0 ; !
       DEC A
       JR NZ, LOOP1 
;Цикл ожидания построения
;бордюра,  время зависит
;от типа компьютера

  LD HL, DATA  
       LD A, 8      
LOOP2  LD DE, #5800 
       LDI         ;16  
       LDI         ;16  
       LDI         ;16  
       LDI         ;16  
       LDI         ;16  
       LDI         ;16  
 ;переброска атрибутов

  LD DE, 0 
 ;Не значимая команда,
 ;необходима, что-бы потратить
 ;время

  DS 23, 0 ; !
   ;Ожидании до 224 тактов (за
 ;столько большинство комперов
 ;строят строку.

  DEC A
       JR NZ, LOOP2  

  LD A, #7F
       IN A, #FE
       RRA  
       JP C, MAIN  

  IM 1 
       RET  

DATA   DB...... 
;Данные об атрибутах.

 Все  временные  задержки  в этом примере
сделаны под Scorpion. Если вы располагае-
те  другим типом компьютера, вам надо са-
мим  подобрать  числа  в строках, отмече-
ных (!) .

 Фактически это все, что можно сказать по
данному вопросу и я надеюсь, что вы суме-
ете применить полученные знания.
_______________________________