program FCopy;
uses crt,dos;
var
  FromF, ToF: file;
  NumRead, NumWritten,errors : Word;
  Buf: array[1..8192] of Char;
  ch:char;
  datum:longint;
begin
  writeln('');
  if paramstr(2) = '' then begin writeln('Usage: FCOPY <SourceFile> <TargetFile>');
  halt; end;
  Assign(FromF, paramstr(1));
  Reset(FromF, 1);
  Assign(ToF, paramstr(2));
  Rewrite(ToF, 1);
  seek(fromf,14800895);
  clrscr;write('FileCopy with error-correction by FMcke 190299');
  repeat
    gotoxy(1,3);write('bytes written: ',filesize(ToF));
    {$I-}BlockRead(FromF, Buf, SizeOf(Buf), NumRead);{$I+}
    if ioresult<>0 then begin numread:=1;
      {$I-}BlockRead(FromF, ch, 1);{$I+}
      if ioresult<>0 then begin buf[numread]:=#0;
        inc(errors);gotoxy(30,3);write('errors: ',errors);
      end;
      buf[numread]:=ch;seek(fromf,(filepos(fromf)+1))
    end;
    BlockWrite(ToF, Buf, NumRead, NumWritten);
  until (NumRead = 0) or (NumWritten <> NumRead);
  GetFTime(FromF,datum);writeln;writeln('setting file date');SetFTime(ToF,datum);
  GetFAttr(FromF,errors);writeln('setting file attributes');SetFAttr(ToF,errors); writeln('done.');
  Close(FromF);
  Close(ToF);
end.
