Программа для попиксельного скроллинга экрана в текстовом режиме.
{> Cut here. FileName= SMSCROLL.MSG }
- 4INT ----------------------------------------------------- It's interesting -
Msg : 107 of 139 Addr Date
From : Sergey Andrianov 2:50/430.40 26.12.97
Subj : Scroll
-------------------------------------------------------------------------------
Здравствyй, yважаемый Armen!
Hедавно, Чет Дек 25 1997 в 23:02, некто Armen Ambartsumian
писал All по поводy Scroll :
AA> Hужны сырцы или лучше алгоритмы _плавного_ скроллинга текста.
AA> ( Как в некоторых демках, по клавишам "стрелка вниз" и "вверх", очень
AA> красиво скроллится текст ;) )
Люди, есть FAQ в этой эхе?
А то я вместо ФАКа буду текстовый скроллинг каждый месяц постить. :)
Hе прощаюсь
Sergey
--- --- Да будет свет ! ---
* Origin: Сергиев Посад <Ферма> (Sergey Andrianov 2:50/430.40)
{> Cut here. FileName= SMSCROLL.PAS }
{ From : Sergey Andrianov 2:50/430.40 }
uses crt;
function clock:longint; {чтение количества тиков}
begin
clock:=MemL[Seg0040:$6c];
end;
const
CrtP = $3d4; { Базовый номер порта контроллера ЭЛТ }
Procedure SetVgaReg(P:word;New_V,Mask,Number:byte);
{Устанавливает один из регистров VGA:
P - Базовый адрес регистра
New_v - новое значение,которое нужно записать в регистр,
Mask - маска,
Number - индекс регистра}
Begin
Inline($0FA);{ Cli - запрещает прерывания}
Port[P] := Number;
Port[P+1] := (Port[P+1] and (not Mask))or (New_V and Mask);
Inline($0FB);{ Sti - разрешает прерывания}
End;
var
b : byte;
l : longint;
begin
for b := 1 to 24 do writeln('Строка текста номер ',b);
write('Строка текста номер 25');
repeat
l := clock;
for b := 0 to 15 do begin
while clock < l + 1 do; {задержка на 1/18 сек.}
setvgareg(crtp,b,$1f,8);
l := clock;
end;
for b := 15 downto 0 do begin
while clock < l + 1 do; {задержка на 1/18 сек.}
setvgareg(crtp,b,$1f,8);
l := clock;
end;
until keypressed;
While keypressed do readkey;
end.