Function PageSaveSize: Word;

{Возвращает размер буфера, необходимый для сохранения текущего состояния видеостраницы} begin

PageSaveSize :« PageSize+SizeOf(PageType) end; {PageSaveSize} /————————————————;

Procedure PutPage (var Source; Page: Byte);

{Пересылает содержимое оперативной памяти в страницу видеопамяти! begin

if Page<=MaxPage then

MoveToScreen(Source,Mem[VMemory:VSize*Page],MaxChar*MaxLine*2) end {PutPage};

;-———————————————;

Procedure RestorePage(Page: Byte; var Buf);

{Восстанавливает текущее состояние страницы PAGE по содержимому буфера BUF} var

В: array [O.-MaxInt] of Byte absolute Buf;

begin

if Page>MaxPage then Exit;

MoveToScreen(B,VMP[Page]",PageSize) ;

Move(B[PageSize],Pages[Page],SizeOf(PageType));

if Page=ActivePage then

SetActivePage(ActivePage) end; {RestorePage} {.....—————————————}

Procedure SavePage(Page: Byte; var Buf);

{Сохраняет текущее состояние страницы PAGE в буфере BUF} var

В: array [O.-MaxInt] of Byte absolute Buf;

begin

if Page>MaxPage then Exit;

MoveFromScreen (VHP [Page] ",B, PageSize);

Move(Pages[Page],В[PageSize],SizeOf(PageType)) end; {SavePage} _•——__———————— ..,-——}

Procedure SetActivePage (Page : Byte);

(Активизирует заданную текстовую страницу} begin

if Page<-MaxPage then with Reg,Pages[Page] do begin

AH := 5; {Установить страницу} AL := Page; {Номер страницы} ActivePage :=' Page; lКорректируем ActivePage} Intr ($10,Reg);

if CVisible then {Включаем/отключаем}

CursorOn {курсор} else

CursorOff;

TextAttr :== Attrib; {Устанавливаем атрибут} WindMin := WBondUp; {Текущее окно} WindMax := WBondDown end;

end {SetActivePage};

/————————————————;

Procedure SwapPage (Source, Destin: Byte);

{ Копирует одну текстовую страницу в другую } var

buf : array [1..2, 1..80] of Byte;