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;