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.