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)