with Pages[ActivePage] do begin

P := Ptr(VMemory,VMW[ActivePage*2]+ (Pred(Y)*MaxChar+Pred(X))*2) ;

X2 := PagePar[7]-X+2;

for X := 1 to X2 do

Buf[X] := 32+Attrib shi 8;

MoveToScreen(Buf,P^,X*2) end end; {CIrEOLf f—— _____————__——————;

Procedure CIrScr;

{Очищает текущее окно (страницу)} begin

with Pages[ActivePage],Reg do begin

AH := 6; 1 С помощью прокрутки}

AL := 0; {очищаем все окно}

ВН := Attrib;

CL := Lo(WBondUp) ;

СН := Hi(WBondUp);

DL :» Lo(HBondDown);

DH := Hi(HBondDown) ;

Intr($10,Reg) ;

AH :•= 2; f Устанавливаем курсор}

ВН := ActivePage; /'в левый верхний угол}

DX WBondUp;

Intr($10,Reg) end

end; {CIrScr} /—————————————————^

Procedure DelLine;

(Удаляет строку в активной странице) var k,

S, {Длина строки окна} У: Byte; (Номер строки с курсором} С: Word; {Смещение в памяти для левой границы окна} Buf: array [1..80,1..2] of Char; {Буфер строк) P: Pointer;

begin

{Стираем строку прокруткой окна вверх} with Pages[ActivePage] do begin

{Определяем положение в видеопамяти левой верхней границы окна) С := VMW[ActivePage*2]+PagePar[5]*2;

Y := PagePar[6]+Pred(HhereY);

S := (PagePar[7]-PagePar[5]+l)*2;

{Переносим по строкам} for К := 1+1 to PagePar[8] do begin

P := Ptr(VMemory,C+K*MaxChar*2);

MoveFromScreen (P",Q\if, a) •i P := Ptr(VMemory,C+(K-l)*MaxChar*2);

MoveToScreen(Buf,P",s) end;

{Готовим пустую строку} for К := 1 to 80 do begin

Buf[k,l] :" ' ';

Buf[k,2] := chr(Attrib)