Contributor: IAN LIN                  

{
There's a problem here. You can append the binary data but that won't make
code from both EXE files work. Either the first one will work, ignoring
the code from the second one, or the whole thing will turn into trash.

However, if you still want to try it, go ahead. Here are 3 untested by
compiling file copying programs that will only append IT2.EXE to the end of
IT.EXE. You'll be required to make or copy files called IT.EXE and IT2.EXE
for the use of this simple demonstration program.
}

Program BCopy1;
uses objects;
var
 f,f2:tdosstream;
begin
 f.init ('IT.EXE',stopen);
 f.seek (f.getsize);
 f2.init ('IT2.EXE',stopen);
 f.copyfrom(f2,f2.getsize);
 f.done;
 f2.done;
end.

Program BCopy2;
var
 f,f2:file;
 blocks:longint;
 bytes:word;
 buffer:array [1..2048] of byte;
begin
 assign(f,'IT.EXE');
 assign(f2,'IT2.EXE');
 reset(f,1);
 reset(f2,1);
 seek(f,filesize(f));
 bytes:=filesize(f2);
 blocks:=bytes div 2048;
 bytes:=bytes mod 2048;
 while blocks>0 do begin
  blockread(f2,buffer,sizeof(buffer));
  blockwrite(f,buffer,sizeof(buffer));
  dec(blocks);
 end;
 if bytes>0 then begin
  blockread(f2,buffer,bytes);
  blockwrite(f,buffer,bytes);
 end;
 close(f);
 close(f2);
end.

Program BCopy3;
uses dos;
begin
 swapvectors;
 exec(getenv('comspec'),'/c copy /b it.exe+it2.exe it.exe');
 swapvectors;
end.