Изготовление мультиколоров
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. Если вы располагае-
те другим типом компьютера, вам надо са-
мим подобрать числа в строках, отмече-
ных (!) .
Фактически это все, что можно сказать по
данному вопросу и я надеюсь, что вы суме-
ете применить полученные знания.
_______________________________