NoSound;

Exit end;

#8: if X>Lo(WBondOp)+2 then (Back Space}

dec(X,2)

else if Y>Hi(WBondUp)+2 then begin

X := Lo(WBondDown);

dec(Y) end;

#10: inc(X,80); {LF}

#13: X :» Lo(WBondUp); {CR} else

MoveToScreen(VW,Pл,2);

end;

Inc(X); {Сдвигаема строке) if X-l>Lo(WBondDown) then {Достигнута правая граница окна} begin

X := Lo(WBondOp)+1; (Возвращаем к левой} inc(Y); {границе на новой строке} if Y-l>Hi(WBondDown) then

begin {Достигли нижнюю границу} {Делаем прокрутку с помощью прямого обращениях видеопамяти, т.к. функцич б работает только с активной страницей) dec (Y) ;

XI := Lo(WBondOp);

Yl Hi<WBondUp) ;

X2 := Lo(WBondDown);

Y2 := Hi(WBondDown);

Size := 2*(X2-X1+1);

for k :- Yl+1 to Y2 do begin MoveFromScreen(Mem[VMemory:Page*

VSize+(k*MaxChar+Xl)*2],But,Size) ;

MoveToScreen(Buf,Mem[VMemory:Page*

VSize+((k-l)*MaxChar+Xl)*2],Size) end;

for k := 1 to 1+X2-X1 do Buf[k,l] := ' •;

MoveToScreen(Buf,Mem[VMemory:Page*

VSize+(Y2*MaxChar+Xl)*2],Size) end end;

PutCursor(Page,X,Y) end end; {WriteChac} ^————.———————————————————————————*

I Многостраничные варианты подпрограмм модуля CRT I *———————————————————————————————*;

Procedure CIrEOL;

{Удаляет остаток строки справа от курсора в активной странице} var

XI,X2: Byte;

Р: Pointer;

X,Y: Byte;

Buf: array [1..80] of Word;

begin

GetCursor(ActivePage,X,Y,Xl,X2);