Вариант палитры для ZX-Spectrum, Pentagon1024SL22, (ATM)Turbo2+
Вариант палитры

Предлагается для обсуждения вариант палитры совместимый с палитрой АТМ2 (Turbo2+), но расширенный до четырёх бит на компоненту (всего 4096 комбинаций/цветов).
В первую очередь это ориентированно на компьютеры имеющие режим "цвет на точку"(16C) (Pentagon1024SL22), но может использоваться и в других компьютерах в обычном ZX-режиме.


Как происходит программирование цвета в АТМ2?

Порт палитры "висит" на том же адресе, что и системный регистр BetaDiskInterface (#FF). Запись в его разрешается одним из битов системного порта АТМ (сигнал PEN2 порта #77).
Номер цвета, предназначенного для программирования, выставляется на бордюр. АТМ2 имеет 16 цветов бордюра. "Четвертый" бит - это инверсный сигнал A3. Т.о. для установки номеров 0..7 записываем это число в порт #FE, а для записи номеров 8..15 записываем номер-8 в порт #F6.
Пока на экране отображается бордюр, программируем через порт #FF значения компонент для выставленного номера цвета (удобно/логично это делать сразу после прерывания).
Значение битов порта #FF для АТМ2:
 D7 D6 D5 D4 D3 D2 D1 D0
 g r b G 1 1 R B

b r g и B R G соответственно младшие и старшие биты значений для компонент (2 бита на компоненту и 64 возможных комбинаций трёх компонент) (Значения инверсны!)
(так же см. это стр.19-20)


Больше цветов!

Идея расширения палитры состоит в использовании старших битов адреса порта #xxFF для дополнительных бит компонент.
Это будет выглядеть так:
A15A14A13A12A11A10 A9 A8
 G0 R0 B0 G1 1 1 R1 B1
     
 D7 D6 D5 D4 D3 D2 D1 D0
 G2 R2 B2 G3 1 1 R3 B3

Т.е. например, G0 - самый младший бит зелёной компоненты, а G3 - самый старший. (Значения инверсны!)


Пример.

Был доработан Pentagon1024SL2.2 по следующей схеме:
схема
(Штатные R42..R47 и VD17..VD19 удалены)
ЛА2 - выборка порта #FF (пока сделано так, что порт палитры находится в области открытых портов)
ТМ2 - "четвёртый" бит бордюра (BRIGHT на бордюре в Z-состоянии)
Одна из проблем - как добыть сигнал гашения (BLANK) из ПЛИС. Предлагается два варианта:
1) Если нет проблем при работе TR-DOS в режиме турбо, то для BLANK можно задействовать вывод 15 DD3.
2) Если использовать внешний генератор(делитель) для тактовой частоты AY/YM (сигнал X2), то для BLANK можно задействовать вывод 45 DD3.

Прошивка EPM7128 с сигналом BLANK на выводе 15
Прошивка EPM7128 с сигналом BLANK на выводе 45
Модифицированная прошивка GLUK 6.4 с установкой палитры (использовать вместе с TR-DOS 6.10E)

SETPAL.asm Пример установки готовой палитры из таблицы
BRGtoPAL.asm Пример вычисления и установки палитры из отдельных компонент
SHOWPAL.scl палитры переключаются клавишами 1..5
RADIAL.scl "вращение" палитры
PALCLC.scl "калькулятор" палитры (ZX версия)
PALCLC_w32.zip "калькулятор" палитры (Win32 версия) (~150Kb)
GIRL.scl картинка для ZX-экрана с палитрой (программный multicolor 8x2, Q_A_O_P)
ART.scl картинки для режима 16C с палитрой (~620Kb)


Как это выглядит?

Изображения захвачены с реального компьютера.
02, 04, 08, 10, 12, 21, 27, 38, 39, girl JPG (~50..100Kb)
02, 04, 08, 10, 12, 21, 27, 38, 39, girl BMP (~300..460Kb)
PALCLC.avi (H264, ~70Kb)
SHOWPAL.avi (H264, ~370Kb)
RADIAL.avi (XviD, ~190Kb)

Осциллограмма серой шкалы


Планы.

Данная схема для Pentagon1024SL2.2 собрана по временному варианту.
Над чем стоит подумать:
1) На сколько оставлять совместимой эту схему с АТМ2? Т.е. убрать порт в область TR-DOS или нет?
2) "Разрешитель" (PEN2) на порту #77 сделать на рассыпухе будет сложно. Может спрятать палитру за Глюковскими часами? (7 бит #EFF7) (половинка ТМ2 свободна, сигнал выбора EFF7 на плате есть;)


Плюсы/минусы.

+ Применение одного из существующих стандартов, совместимость(полная/частичная) с АТМ2. Софт будет использовать одни и теже куски кода для разных клонов.
+ При апгрейде самого АТМ2 (всего две микросхемы + новые ЦАПы), полная совместимость с оригинальной палитрой 64 цвета.

- относительная сложность апгрейда на 155РУ2 и их труднодоставаемость.


DDp, 2009.03
72 65 61 6C 64 64 70 40 79 61 6E 64 65 78 2E 72 75