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.

назад

421