регистры). В этом режиме используются лишь четыре младших разряда байта данных.
Следующая программа вычерчивает горизонтальную линию в середине экрана, затем ожидает ввода любого целого числа в диапазоне О... 15. Это число трактуется как код требуемого цвета, и линия вычерчивается этим цветом еще раз. Ввод и вычерчивание продолжается до тех пор, пока не будет введено любое число больше 15.
Uses Graph;
var
d,r,e: Integer;
y,x: Word;
b: Byte;
const
Col: Byte = White;
begin
d := Detect;
InitGraph(d,r,''); {Инициируем графику} e := GraphResult;
if eOgrOk then
WriteLn(GraphErrorMsg(e)) (Ошибка инициации} else begin
Y := succ(GetMaxY) div 2;
Port[$3CE] := 5; {Регистр режима} Port[$3CF] := 2; {Режим записи 2} Port[$3CE] := 8; {Регистр маски} Port[$3CF] := $FF; {Разрешаем все биты} repeat {Цикл вывода линии/ввода цвета} for X:=0 to GetMaxX div 8 do {По байтам}
Mem[$AOOO:Y*80+X] := Col; {Задаем цвет} ReadLn(Col) {Вводим код цвета} until Col>15; {Повторяем для разрешенных цветов} CloseGraph end end.
Хотя в описываемом ниже модуле F_GrText и не используется чтение графического экрана, наш обзор возможностей адаптеров EGA/VGA был бы не полным, если бы мы не рассмотрели эту возможность.
Существуют два режима чтения. В режиме 0 читается байт из выбранной битовой плоскости. Чтобы с помощью этого режима получить цвет восьми пиксел, нужно последовательно прочитать все четыре битовые плоскости, а затем поразрядно объединить прочитанные данные. Замечу, что четырехкратное чтение необходимо и для получения цвета единственного пиксела, поэтому в целях ускорения работы программы следует по возможности обращаться к группе смежных пиксел. Для использования режима чтения 0 нужно выбрать регистр режимов, послав 5 в порт $ЗСЕ, а затем послать код режима 0 в порт $3CF. Как Вы, очевидно, заметили,