interface
{...}
procedure CreateBackBuffer;
{создание экранного буфера}
procedure DestroyBackBuffer;
{уничтожение экранного буфера}
procedure BackBufferToScreen;
{отображение буфера на экран}
implementation
var
IsBuffer : boolean; {признак существования буфера}
IsBackBuffer : boolean; {признак буфера фона}
BackBuffer : ^ScreenType; {адрес буфера фона}
{...}
procedure PutBackground; {создание фона на экране}
var
i,j : word; {переменные цикла}
begin
if IsBackBuffer then
for j := 0 to 199 do
for i := 0 to 319 do
BackBuffer^[j,i] := lo(i+j*8)
else
for j := 0 to 199 do
for i := 0 to 319 do
Scr^[j,i] := lo(i+j*8);
end;
{...}
procedure CreateBackBuffer;
begin {создание экранного буфера}
if not IsBackBuffer then begin
IsBackBuffer := TRUE;
getmem(BackBuffer,64000);
end;
end;
procedure DestroyBackBuffer;
begin {уничтожение экранного буфера}
if IsBackBuffer then begin
IsBackBuffer := FALSE;
freemem(BackBuffer,64000);
end;
end;
procedure BackBufferToScreen;
begin {отображение буфера на экран}
if IsBackBuffer then
move(BackBuffer^,scr^,64000);
end;
begin
scr := ptr(SegA000,0);
IsBuffer := FALSE;
IsBackBuffer := FALSE;
end.
назад