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);