d,r,e,x: Integer;

у: Word;

b: Byte;

c: Char;

begin

d := Detect;

InitGraph(d,r,''); (Инициируем графику} e := GraphResult;

if eogrdk then

WriteLn(GraphErrorMsg(e)) {Ошибка инициации} else begin

{Создаем окно и обводим его рамкой} Rectangle(20*8,GetMaxY div 3,60*8,2*GetMaxY div 3) ;

SetViewPort(20*8+1,GetMaxY div 3+1,

60*8-1,2*GetMaxY div 3-l,ClipOn);

{Заполняем окно случайными прямыми} while not KeyPressed do {Ждем нажатия клавиши} begin

SetColor(Random(16)); {Случайный цвет} Line(Random(GetMaxX), (и координаты} Random(GetMaxY), {линии} Random(GetMaxX),Random(GetMdxY)) end;

{Сбрасываем буфер клавиатуры и устанавливаем режим записи 1} while KeyPressed do с := Readkey;

Port[$3CE] := 5; {Выбираем регистр режима} Port[$3CF] := 1; {Режим записи 1} {Переносим окно вверх и вправо)

for Y := GetMaxY div 3 to 2*GetMaxY div 3 do{По строкам} for X := 20 to 60 do {По байтам} begin

b :=Mem[$AOOO:Y*8O+X];

Mem[$AOOO:(Y-40)*8O+X+15] := b end;

{Ждем нажатия любой клавиши} if ReadKey=#O then с := ReadKey;

CloseGraph end end.

В режиме записи 2 данные от ЦП поступают в буферные регистры через регистр цвета. Для записи необходимо сначала нужным образом сформировать регистр маски битов, разрешив изменение нужного пиксела (пиксел), а затем по соответствующему адресу видеопамяти передать код нужного цвета (предварительно прочитав из видеопамяти в буферные