регистры). В этом режиме используются лишь четыре младших разряда байта данных.

Следующая программа вычерчивает горизонтальную линию в середине экрана, затем ожидает ввода любого целого числа в диапазоне О... 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. Как Вы, очевидно, заметили,