begin
if (Page<-MaxPage) and (PagaoActivePage) then begin
SwapPage(Page,ActivePage);
Move(Pages[Page],Pages[ActivePage],SiaeOf(PageType));
GetCursor(Page,X,Y,U,D) ;
PutCursor(ActivePage,X,Y);
SetCursorLine(ActivePage,U,D);
SetActivePage(ActivePage) end end {GetSfindow};
^-.___—————————————;
Procedure PutHindow(Xl,Yl,X2,Y2,Text,Back,Bord,Page: Byte;
Header: String; Clip,Build,Play: Boolean);
{Сохраняет текущий экран в текстовой странице PAGE и организует окно с заданными атрибутами и рамкой} var
X,Y,U,D: Byte;
begin
if not ((Page>MaxPage) or (XK1) or (X2<-X1) or (Y1<1) or (Y2<=Y1) or (X2>MaxChar) or (Y2>MaxI»ine) or (Bord>2)> then begin
SwapPage(ActivePage,Page);
Move(Pages[ActivePage],Pages[Page),SizeOf(PageType));
GetCursor(ActivePage,X,Y,U,D);
PutCursor(Page,X,Y) ;
SetCursorLine(Page,U,D);
Colors(Text,Back);
SetWindow(XI,XI,X2,Y2,Bord,Header,Clip,Build,Play) end;
end {PutWindo»);
_-.——————————————;
Procedure SaveWind(Page: Byte; var Buf; var LX,LY: Byte);
{Сохраняет копию окна в буфере BUF} var
X1,Y1,X2,Y2: Byte;
В: array [O-.MaxInt] of pyte absolute Buf;
k: Byte;
begin
if Page<=-MaxPage then with Pages [Page] do begin
XI » Lo(WBondUp) ;
Yl = Hi(WBondUp) ;
X2 = Lo(WBondDown)+2;
Y2 ° Hi(WBondDown)+2;
LX = X2-X1+1;
LY = Y2-Y1+1;
for k :== Yl to Y2 do
MoveFromScreen (Mein[VMemory:Page*VSi2e+
(pred(k)*MaxChar+Xl-l)*2],B[(k-Yl)*LX*2],LX*2) end end; {SaveWind) ^_———————————————;
Procedure SetPageWindow (Page,XI,Y1,X2,Y2,Bord: Byte;
Header: String;Clip: Boolean);
(Создает окно в странице PAGE и обводит его рамкой} var
buf: array [1..80,1..2] of Byte;
X,Y,Size,k: Byte;