Информационный сервер для программистов: Исходники со всего света. Паскальные исходники со всего света
  Powered by Поисковый сервер Яndex: Найдется ВСЁ!
На Главную Pascal Форум Информер Страны мира
   ЧАВО - Частые Вопросы и Ответы    >>    smscroll
   
 
 CRT. Плавный попиксельный Scroll-инг   Sergey Andrianov 26.12.1997

Программа для попиксельного скроллинга экрана в текстовом режиме.


 
 

{> 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.