МУЛЬТИКОЛОР И ЧАНКИ НА БОРДЮРЕ
(С) Николай Витенко (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: