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