264_________________________________ __ Приложение

Procedure TextColor(Color: Byte);

(Устанавливает цвет символов s активной странице) begin

Pages[ActivePage].Attrib :=

(Pages[ActivePage].Attrib and $70) or (Color and $8F) ;

if ActivePage=O then

CRT.TextColor(Color) end; {PageTextColor} {-.- ————.—————— ————/

Function WhereX: Byte;

{Возвращает горизонтальную координату курсора в активной странице} var

X,Y,U,D: Byte;

begin

GetCursor(ActivePage,X,Y,U,D) ;

WhereX := X-Lo(Pages[ActivePage].WBondUp) end; {WhereX} ^—.——————————————;

Function WhereY: Byte;

(Возвращает вертикальную координату курсора в активной странице} var

X,Y,U,D: Byte;

begin

GetCursor(ActivePage,X,Y,П,D);

WhereY := Y-Hi(Pages[ActivePage].WBondUp;

end; (WhereY} ^——.————————.————.———;

Procedure Window(XI,Y1,X2,Y2: Byte);

{Устанавливает окно в активной странице} begin

{Проверяем параметры обращения} if (XI in [1..MaxChar]) and (X2 in [1..MaxChar])

and (X2>X1) and (Yl in [1..MaxLine]) and (Y2 in [1..MaxLine]) and (Y2>Y1)

then with Pages[ActivePage] do begin

WBondUp := pred(Xl)+pred(Yl) shi 8;

WBondDown :» pred(X2)+pred(Y2) shi 8;

PutCursor(ActivePage,XI,Yl);

if ActivePage=0 then

CRT.Window(XI,Y1,X2,Y2) end end;

/ ^_—________________----—•._»_•----------»——-----^.А-

I Подпрограммы управления страницами \

ii-----------.--.---------------------------—-----'^

Function GetActivePage: Byte;

(Возвращает номер активной текстовой страницы} begin

GetActivePage := ActivePage end (GetActivePage};

——————————————————/

Procedure GetPage (Page: Byte; var Destin);

^Копирует текстовую страницу в оперативную память} begin

if Раде<-МахРаде then

MoveFromScreen(Mem[VMemory:VSize*page],Destin,MaxChar*MaxLine*2) end (GetPage};

I ——...—.——————————— •