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 данные от ЦП поступают в буферные регистры через регистр цвета. Для записи необходимо сначала нужным образом сформировать регистр маски битов, разрешив изменение нужного пиксела (пиксел), а затем по соответствующему адресу видеопамяти передать код нужного цвета (предварительно прочитав из видеопамяти в буферные