{...}
begin
   if not InitMouse then begin
      writeln(?Для работы программы необходима мышь?);
      halt;
   end;
   GetPal(p[0],0,256);
   FadeOut(p);
   randomize;
   for i := 1 to NumSprites do
      CreateSprite(NameSprt[(i mod 2)+1],
                   random(320-Xsize),random(200-Ysize),
                   1,1,Sprt[i]);
   r.ax := $13;        { устанавливаем режим }
   intr($10,r);        {  320х200х256 цветов }
   SetMouseRange(0,0,299,179);      {для спрайта 20х20}
   SetMouse(150,90);     {помещаем мышь в центр экрана}
   BlackPal;
   CreateScreenBuffer;                  {создаем буфер}
   CreateBackBuffer;           {создаем буфер для фона}
   PutBackGround;                          {рисуем фон}
   FadeIn(p);
   for i := 1 to NumSprites do begin
      PutSprite(Sprt[i]);{и рисуем на его месте спрайт}
   end;
   SetTextParm(15,0,1);
   repeat   {теперь спрайт будет двигаться по экрану}
           {до тех пор, пока мы не нажмем на клавишу}
      BackBufferToScreen;
      for i := 1 to NumSprites do begin
         CalcSpritePosition(Sprt[i]);
         if i = 1 then begin {переопределяем координаты}
                            {спрайта, управляемого мышью}
            MouseStatus := GetMouse(Sprt[i].x,Sprt[i].y);
            

Sprt[i].x := Sprt[i].x * 64;
            Sprt[i].y := Sprt[i].y * 64;
         end;
         PutSprite(Sprt[i]);  {          выводим спрайт}
      end;
      if (MouseStatus and 1) = 1 then
         PutText(56,16,?Левая кнопка мыши нажата?);
      if (MouseStatus and 2) = 2 then
         PutText(56,24,?Правая кнопка мыши нажата?);
      if (MouseStatus and 4) = 4 then
         PutText(56,32,?Средняя кнопка мыши нажата?);
      FPS := GetFPS;
      str(FPS:0:1,s);
      PutText(120,184,? ?+s+? fps ?);
      if FPS > 1 then              {изменяем приращение}
         for i := 1 to NumSprites do begin
            Sprt[i].dx := sign(Sprt[i].dx)
                                    *round(64*70/FPS);
            Sprt[i].dy := sign(Sprt[i].dy)
                                    *round(64*70/FPS);
         end;
      WaitVerticalRetrace;
         {ожидаем обратный ход луча кадровой развертки}
      ScreenBufferToScreen;          {буфер - на экран}
   until keypressed;
   readkey;                   {чистим буфер клавиатуры}
   DestroyBackBuffer;           {уничтожаем буфер фона}
   DestroyScreenBuffer;              {уничтожаем буфер}
   FadeOut(p);
   r.ax := $3;
   intr($10,r);        {возвращаемся в текстовый режим}
   for i := NumSprites downto 1 do
      DestroySprite(Sprt[i]);
end.
406