function sign(a:single):integer;
begin
if a = 0 then
sign := 0
else
if a > 0 then
sign := 1
else
sign := -1;
end;
begin
GetPal(p[0],0,256);
FadeOut(p);
CreateSprite(?sprt01.bmp?,0,0,1,1);
r.ax := $13; { устанавливаем режим }
intr($10,r); { 320х200х256 цветов }
scr := ptr(SegA000,0);
BlackPal;
PutBackGround; {рисуем фон}
FadeIn(p);
GetBuffer; {сохраняем фон под спрайтом}
PutSprite; {и рисуем на его месте спрайт}
repeat {теперь спрайт будет двигаться по экрану}
{до тех пор, пока мы не нажмем на клавишу}
PutBuffer; {восстанавливаем фон}
FPS := GetFPS;
if FPS > 1 then begin {изменяем приращение}
Sprt.dx := sign(Sprt.dx)*round(70/FPS);
Sprt.dy := sign(Sprt.dy)*round(70/FPS);
end;
CalcSpritePosition;
GetBuffer; {сохраняем фон}
PutSprite; {рисуем спрайт}
inc(TextColor);
SetTextParm(TextColor div 16,
(TextColor + 48) div 16,1);
PutText(56,16,?Демонстрационная?);
SetTextParm(TextColor and $F,0,0);
PutText(192,16,?программа?);
SetTextParm(1,14,1);
str(Clock:3,s);
PutText(128,172,?Time:?+s);
SetTextParm(15,0,1);
str(FPS:0:1,s);
PutText(120,184,? ?+s+? fps ?);
delay(100); {для регулирования частоты кадров}
WaitVerticalRetrace;
{ожидаем обратный ход луча кадровой развертки}
until keypressed;
readkey; {чистим буфер клавиатуры}
FadeOut(p);
r.ax := $3;
intr($10,r); {возвращаемся в текстовый режим}
DestroySprite;
end.