PDA

Просмотр полной версии : Инициализация мультиколора 8х1



newart
15.03.2013, 14:16
Есть у кого-нибудь процедурка?

Под пентагон/реал 128к.

drbars
15.03.2013, 14:50
Полноэкранный возможен только 8х2. см. исходники IRIS'а.. часть Color movie



CODE_INS1:

LD B,24
INS_L PUSH BC
CALL SETLINE
CALL SETLINE
CALL SETLINE
CALL SETLINE
LD BC,32
LD HL,(TO+1)
ADD HL,BC
LD (TO+1),HL
LD HL,(TO2+1)
ADD HL,BC
LD (TO2+1),HL
POP BC
DJNZ INS_L
RET

SETLINE LD HL,SAMPLE1
MEMPC LD DE,COLORCODE
LD BC,EOS1-SAMPLE1
LD A,(PAGE+1)
XOR 10
LD (PAGE+1),A
AND 8
JR NZ,$+5
DEC BC
DEC BC
DEC BC
LDIR
LD (MEMPC+1),DE
RET

SAMPLE1 LD SP,0
POP HL
POP DE
POP AF
POP IX
EX AF,AF'
EXX
POP HL
POP DE
POP BC
POP AF
TO LD SP,#D810
PUSH AF
PUSH BC
PUSH DE
PUSH HL
EXX
EX AF,AF'
PUSH IX
PUSH AF
PUSH DE
PUSH HL
LD SP,0
POP HL
POP DE
POP AF
POP IX
EX AF,AF'
EXX
POP HL
POP DE
POP BC
POP AF
TO2 LD SP,#D820
PUSH AF
PUSH BC
PUSH DE
PUSH HL
EXX
EX AF,AF'
PUSH IX
PUSH AF
PUSH DE
PUSH HL
PAGE: LD A,#1D
OUT (C),A
LD HL,#FFFF
EOS1:
;----------------------------

CODE_INS2:
LD DE,INSCODE
LD B,48
CDI2 PUSH BC
LD HL,SAMPLE2
LD BC,EOS2-SAMPLE2
LDIR
LD HL,SAMPLE2+1
LD B,4
NX_ADD LD A,(HL)
ADD A,123
LD (HL),A
INC HL
JR NC,$+3
INC (HL)
INC HL
INC HL
INC HL
DJNZ NX_ADD
POP BC
DJNZ CDI2
RET

SAMPLE2 LD (COLORCODE+1),HL
ADD HL,BC
LD (COLORCODE+#1D),HL
ADD HL,BC
LD (COLORCODE+#3D),HL
ADD HL,BC
LD (COLORCODE+#59),HL
ADD HL,BC
EOS2:

GM BIT
15.03.2013, 14:59
one_int LD BC,#6FF
DI
LD HL,IMER
LD (#BEFF),HL
LD A,#BE
LD I,A
IM 2
BACK XOR A
LD HL,LOOP
EI
LOOP DEC A
JP (HL)
IMER POP HL
LD E,(HL)
RL E
RLA
LD E,D
LD D,A
SUB E
SUB C
SBC A,A
OR 4
DEC B
AND B
JR NZ,BACK

newart
15.03.2013, 16:00
У меня 144 пикселя.

---------- Post added at 16:00 ---------- Previous post was at 15:59 ----------

GM BIT, прокоментируй, что это куда и как встявлять?

GM BIT
15.03.2013, 16:15
Запускаешь вначале, а потом кодишь кратно четырем и с одинаковым количеством тактов в каждом прерывании, вроде бы так

Работоспособность не проверял, но эту програмку много раз приводили на форуме

newart
15.03.2013, 16:18
Зачем она трогает IM2 при этом не делая табличку прерваний?

GM BIT
15.03.2013, 16:22
По смылу понятно только, что там выправляется первоначальная задержка
После последнего JR исправляешь IMER
на свой мультиколор LD HL,MULTICOLOR: LD (#BEFF),HL
и от im 2 будет работать твоя прога

---------- Post added at 15:22 ---------- Previous post was at 15:21 ----------


Зачем она трогает IM2 при этом не делая табличку прерваний?
Это для упрощения, без таблички

alone
15.03.2013, 19:39
Полноэкранный возможен только 8х2.
Как хорошо, то мой MCX viewer этого не знает :)

newart
15.03.2013, 19:45
alone, ты лучше скажи - процедура выше - адекватна?

alone
15.03.2013, 19:50
если она в ирисе работает, то адекватна.

newart
15.03.2013, 20:06
alone, я про вторую, в ирисе подозрительно много коду.

alone
15.03.2013, 20:22
newart, вторая - это моя процедура подстройки под 1 такт из ZX-Guide #3, только с отрезанными комментариями.

drbars
16.03.2013, 10:38
alone, я про вторую, в ирисе подозрительно много коду.
Ну что за лентяйство, я вырезал из ириса код для удобства понимания.

Одна процерура генерит вывод мультиколора, вторая переносит картинку в мультколор, чтобы можно было скролл сделать.
Хотя можно и оптимальнее сделать, смотря какая задача стоит :)



---------- Post added at 13:38 ---------- Previous post was at 13:27 ----------


Как хорошо, то мой MCX viewer этого не знает :)
Ага, глянул viewer.. видимо мои представления слегка устарели. LD HL,xxxx: LD (xxxx),HL... да? :)

Alex Rider
16.03.2013, 18:45
LD HL,xxxx: LD (xxxx),HL... да?
С push hl ловчее.

alone
16.03.2013, 18:56
LD (xxxx),HL гибче. Они вразнобой генерируются, в зависимости от графики.

Alex Rider
16.03.2013, 19:38
LD (xxxx),HL гибче. Они вразнобой генерируются, в зависимости от графики.

ld (xxxx),hl - 16 тактов. В строку развертки влезает 14 таких команд. А как сделать на них полноэкранный мультиколор? А с push не все так грубо, в стек можно засовывать не только hl, а в строчке остается еще 48 тактов чтобы поменять атрибуты в регистровых парах для следующей строки.

---------- Post added at 19:38 ---------- Previous post was at 19:37 ----------

Виноват, не 48, а 28

alone
16.03.2013, 20:32
А как сделать на них полноэкранный мультиколор?
НЕ ВСЕ атрибуты в строке надо менять.

Alex Rider
16.03.2013, 21:09
НЕ ВСЕ атрибуты в строке надо менять.

Тогда это либо не мультиколор 8x1, либо его ширина <32 (вернее, не все знакоместа строки мультиколорные). Так?

alone
16.03.2013, 21:17
Нет, не так. Квадратно-гнездовое мышление тут не действует. Число и расположение меняемых атрибутов зависит от структуры картинки.

Alex Rider
16.03.2013, 21:30
Число и расположение меняемых атрибутов зависит от структуры картинки.
Доперло. У картинки есть некоторые ограничения, но они не существенны для восприятия картинки. Редактор, соответственно, делает все дл того, чтобы ограничения сильно не мешали :) Соглашусь, что для вывода статичесокй картинки хоть на весь экран ld (xxxx),hl подходит лучше, чем стек. Вернее, это есть единственное, что подходит :)

drbars
17.03.2013, 01:35
А если картинка очень сложная? например я задумал сложную палитру 8х1 нарисовать, тогда никак?)

Vitamin
17.03.2013, 02:03
А если картинка очень сложная?
Теоретически- да. Из 4096 возможных комбинаций пар байт атрибутов (без яркости) в экране может присутствовать 3072. На деле же все гораздо проще. Я как-то пробовал подобный вывод экрана с помощью генерилки (а это 3072 пары из 65536 возможных) - выигрыш был даже на сканированных картинках с высокой степенью случайности.