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 ——...—.——————————— •