ReadLn;
for k := 0 to 3 do {Читаем 4 плоскости} begin
Port[$3CE] := 4; {Регистр карты} Port[$3CF] := k; {Номер плоскости} a[k] := Mem[$AOOO:0]{Читаем байт} end;
CloseGraph;
{Преобразуем 4 прочитанных байта в коды цветов 8 пиксел} for j := 0 to 7 do {Цикл по пикселам} begin
с :== 0; {Начальный цвет} for k := 0 to 3 do {Цикл по плоскостям} с := c+(a[k] shr (7-j) and 1) shi k;
Write(c:3) {Выводим код цвета} end;
WriteLn end end.
Режим чтения 1 задается посылкой кода 8 в регистр режимов (сначала 5 — в порт $ЗСЕ, затем 8 — в порт $3CF). В этом режиме осуществляется сканирование 8 пиксел экрана и выбор тех из них, которые имеют нужный цвет. Перед чтением байта нужно в регистр сравнения послать код цвета (2 в порт $ЗСЕ и код цвета в порт $3CF). Получаемый байт будет содержать единицы в тех разрядах, для которых битовые плоскости определяют тестируемый цвет, и нули — во всех остальных разрядах. Этот результат можно изменить, если настроить регистр игнорирования цвета:
по умолчанию этот регистр (он выбирается посылкой 7 в порт $ЗСЕ и устанавливается посылкой байта в порт $3CF) содержит цепочку бит 1111, что блокирует его вмешательство в процедуру сравнения; если установить другое значение регистра, битовые плоскости, для которых разряды регистра имеют значение 0, будут игнорироваться. Пусть, например, самый первый байт верхней строки имеет цвет 3 (бирюзовый), что соответствует такой цепочке бит для первого разряда битовых плоскостей: ООН; пусть также мы установили цвет 2 (зеленый) в регистр сравнения (код 0010);
поскольку при сравнении будет выявлено различие в младшем разряде обоих кодов, чтение по адресу $АООО:ОООО в режиме 1 вернет байт со значением 0 в старшем разряде, если регистр безразличия содержит 1111, и 1 — если 1110.
1.2. СТРУКТУРА CHR-ФАЙЛОВ ДЛЯ ВЕКТОРНЫХ ШРИФТОВ
В этом параграфе мы рассмотрим структуру CHR— файлов, т.е. файлов с расширением CHR, в которых поставляются векторные BGI— шрифты. Такие шрифты широко используются в различных программных продуктах фирмы Borland, в том числе — в компиляторах Турбо Паскаль, Турбо С,