Code: Select all
На Специалистах (правда, не на моем "Лике", там этого не
было) можно выводить данные в цвете. При этом атрибуты, идея, как
на Спектруме, только круче - атрибуты у каждого байта в памяти!
(8 пикселей, если помнишь). В пределах одного байта как было, так
и осталось 2 цвета, причем фон (биты "0") - всегда черный,
единицы - один из четырёх возможных: белый/R/G/B, этот-то цвет и
задается атрибутом. Всего 5 цветов. Есть режим 9 цветов (8+1),
Пыхонин собирался его реализовать, но больше я про этот режим не
знаю. Поэтому говорю про 5 цветов (он реализован у Пыхонина,
потому-то игры на "Специалист" там цветные).
Итак, поскольку запись на экран идет кусками по 8 бит, а
атрибуты тоже бывают у каждого кусочка по 8 бит, то достаточно
установить цвет фона-цвет пера и писать в экранное ОЗУ. Каждого
записанный в память любой командой процессора байт на экране
будет выводиться с черным цветом фона и заданным цветом пера.
Чтобы писать другим цветом пера, надо послать другое значение
цвета в порт.
Иным способом обратиться к атрибутам невозможно - только
установив нужный цвет пера и записывая в экранное ОЗУ, атрибуты
автоматически будут устанавливаться для обрабатываемых командой
записи байт экрана. Сменить, как на Спектруме, цвет уже
выведенных пикселей невозможно - их надо будет вывести заново.
А теперь как установить цвета: просто записать в порт 2
ВВ-шки (по адресу 1111 1XXX XXXX XX10 b, например, FF02, FFFE или
F802) число, 2 старших бита определят цвет пера. Поскольку
остальные биты не нужны и всегда пишется целый байт, я приведу
значения и для целого байта:
Чтобы получить БЕЛЫЙ цвет пера (на черном фоне), надо
по адресу FF02 записать 00 h
КРАСНЫЙ (R) - 40 h
ЗЕЛЕНЫЙ (G) - 80 h
СИНИЙ (B) - C0 h
============
(10 наверное всё-таки "жёлт", а не "зел")vinxru wrote:В мониторе у тебя должны быть белые буквы на черном фоне. То есть каждый канал RGB будет дублировать Y.Barbosa75 wrote:НА RGB выходе сигнал у меня появляется только в тесте рюмика, в мониторе ничего нет на RGB.
на сколько я понимаю без софтовой поддержки и не должно.
Монитор при старте заносит в регистр цвета 000, что соответствует белому цвету.
В мониторе поменять цвет можно командой
MFFFE
90
Будут зеленые буквы
Коды цветов вот:
10 - зел
40 - фиол
50 - красн
80 - гол
90 - зел
С0 - син
D0 - черн
Ещё можно сделать девятицвет когда при D0 будет не чёрный по чёрному, а серый по чёрному...