Составить программу, рисующую график заданной какой-либо формулой (например синусоида) линии. На экран вывести оси координат с масштабом и подписями и линию графика — Pascal(Паскаль)

uses graph;
const
x1=-2*pi;{начало и конец графика в реальных значениях}
x2=2*pi;
function F(x:real):real;
begin
F:=cos(x);
end;
var
mx,my,a,x,dx,y:real;
x0,y0,grD,px,py,grM,i,k:integer;
s,s1:string;
begin
grD:=detect;
initgraph(grD,grM,'');
X0:=getmaxX div 2;{начало координат в центре экрана}
Y0:=getmaxY div 2;
{коэффициенты по осям для перевода реальных координат в экранные}
mx:=600/(x2-x1);{длина в пикселах по оси Х/реальная длина}
my:=420/(2*F(0));{длина оси по У/(максимум функции(с небольшим запасом))}
SetBkColor(7); {цвет фона}
setlinestyle(0,0,1);{сплошная линия}
SetColor(1);{цвет линий осей}
line(0,y0,getmaxX,y0); {ось Х}
line(x0,getmaxy,x0,0); {ось У}
setlinestyle(1,0,0);  {пунктирная линия}
Setcolor(9);  {цвет сетки}
for i:=1 to round(2*pi*mx) do   {максимальное количество засечек в одну сторону}
   begin
    line(10,y0-round(i*my/10),630,y0-round(i*my/10)); {засечки на оси У через 0.1}
    line(10,y0+round(i*my/10),630,y0+round(i*my/10));
    line(x0+round(i*mx),0,x0+round(i*mx),getmaxY); {засечки на оси Х}
    line(x0-round(i*mx),0,x0-round(i*mx),getmaxY);
    {подпись оси У}
    str(i/10:3:1,s);
    outtextXY(x0-35,y0-round(i*my/10),s);{соответственно засечкам}
    outtextXY(x0-40,y0+round(i*my/10),'-'+s);
    {подпись оси Х}
    str(i,s);
    outtextXY(x0+round(i*mx),y0+10,s);
    outtextXY(x0-round(i*mx),y0+10,'-'+s);
  end;
{центр}
outtextXY(x0+5,y0+10,'0');
{подписи концов осей}
outtextXY(getmaxX-10,y0-10,'X');
outtextXY(x0-10,10, 'Y');
dx:=0.001;
{график}
x:=x1;
while x<=x2 do
   begin
     px:=x0+round(x*mx); {изменение по оси Х}
     y:=F(x); {график в реальных координатах}
     py:=y0-round(y*my);{в экранных}
     putpixel(px,py,12);
     x:=x+dx; {наращиваем х}
   end;
outtextXY(50,10,'Grafik functii Y=cosx');
outtextXY(50,20,'na intervale [-2pi,2pi]');
readln;
end.