program kopiowanie;
uses crt,graph;
var pic:pointer;
    x,y,x0,y0,r,karta,tryb:integer;
BEGIN
r:=31;
detectgraph(karta,tryb);
initgraph(karta,tryb,' ');
x0:=getmaxx div 2; y0:=50;
x:=x0+(r div 2); y:=y0-r+1;
settextstyle(0,0,1);
setfillstyle(1,15);
circle(x0,y0,r-1);
floodfill(x0,y0,15);
getmem(pic,imagesize(x0-r,y0-r,x0+r,y0+r));
getimage(x0-r,y0-r,x0+r,y0+r,pic^);
putimage(x,y,pic^,copyput);
outtextxy(150,y0,'CopyPut');
readkey;
freemem(pic,imagesize(x0-r,y0-r,x0+r,y0+r));


y0:=y0+95;
circle(x0,y0,r-1);
floodfill(x0,y0,15);
getmem(pic,imagesize(x0-r,y0-r,x0+r,y0+r));
getimage(x0-r,y0-r,x0+r,y0+r,pic^);
y:=y0-r+1;
putimage(x,y,pic^,xorput);
outtextxy(150,y0,'XorPut');
readkey;
freemem(pic,imagesize(x0-r,y0-r,x0+r,y0+r));


y0:=y0+95;
circle(x0,y0,r-1);
floodfill(x0,y0,15);
getmem(pic,imagesize(x0-r,y0-r,x0+r,y0+r));
getimage(x0-r,y0-r,x0+r,y0+r,pic^);
y:=y0-r+1;
putimage(x,y,pic^,andput);
outtextxy(150,y0,'AndPut');
readkey;
freemem(pic,imagesize(x0-r,y0-r,x0+r,y0+r));


y0:=y0+95;
circle(x0,y0,r-1);
floodfill(x0,y0,15);
getmem(pic,imagesize(x0-r,y0-r,x0+r,y0+r));
getimage(x0-r,y0-r,x0+r,y0+r,pic^);
y:=y0-r+1;
putimage(x,y,pic^,orput);
outtextxy(150,y0,'OrPut');
readkey;
freemem(pic,imagesize(x0-r,y0-r,x0+r,y0+r));


y0:=y0+95;
circle(x0,y0,r-1);
floodfill(x0,y0,15);
getmem(pic,imagesize(x0-r,y0-r,x0+r,y0+r));
getimage(x0-r,y0-r,x0+r,y0+r,pic^);
y:=y0-r+1;
putimage(x,y,pic^,notput);
outtextxy(150,y0,'NotPut');
readkey;

cleardevice;
putimage(x,y,pic^,copyput);
readkey;
freemem(pic,imagesize(x0-r,y0-r,x0+r,y0+r));

closegraph;
END.