Раз пошла такая пьянка, выложу свои старые мысли по поводу расширения ULA. Если сочтёте нужным, доведите их до разработчиков Next.
Основная идея - задавать программно свою пару цветов INK/PAPER для каждого значения байта атрибута (0..255). Таким образом:
1) одновременно на экране может отображаться уже не 64 цвета максимум, как в ULA+, а целых 512 (256 возможных атрибутов по 2 цвета в каждом)!
2) так можно увеличить количество отображаемых цветов в уже написанных играх
3) соответственно, разрабатывая новые игры, можно делать их гораздо более цветными, при этом сохраняя обратную совместимость с оригинальными машинами, что в варианте ULA+ невозможно, т.к. использование битов FLash/bright приведёт к цветовой какофонии.
Но это не всё. Мы можем не ограничиваться одной палитрой на 256 атрибутов, а сделать N палитр, в каждой из которых определены свои цвета для каждого атрибута. И сделать возможным их переключение не только программно, но и автоматически, переходя на следующую палитру после вывода строки экрана. Таким образом, мы получаем аппаратный мультиколор в новой ULA, и отображаем уже не 512, а 512*N цветов, где N - количество палитр. Восьми палитр уже достаточно, чтобы делать мультиколорные спрайты и тайлы, а больше может понадобиться только для особо навороченных спецэффектов.
При этом мы имеем на экране для 8 палитр, автоматически сменяющих друг друга построчно, до 4096 цветов, программно работая всё с тем же 6144 + 768 экраном.
Для такого режима управления цветами надо предусмотреть возможность пакетного задания цветов для атрибутов (номер определяемого атрибута автоматически инкрементируется после задания цветов).
Глубина цвета для данного режима обсуждаема, в принципе, можно сделать её программно переключаемой - 12/16/24 бита на цвет, или остановиться на одной.
- - - Добавлено - - -
Также обсуждаема и программная модель задания и переключения палитр.
Если кто ещё не понял, в чем суть предлагаемого мной режима.
Задание пары цветов текущей палитры для некоторого атрибута:
LD A, значение атрибута (0..255)
OUT (ПортНомераАтрибута),A
LD A, цвет INK
OUT (ПортЗаданияЦвета),A
LD A, цвет PAPER
OUT (ПортЗаданияЦвета),A
Это для глубины цвета в 8 бит, для большей количество выводов в порт задания цвета соответственно увеличивается. Вывод в порт задания цвета автоматически инкрементирует указатель байта в палитре атрибутов, соответственно, можно использовать команды блочного вывода в порт для задания палитры.