program APPEND;

(* Q&D 031090 Tilmann Reh *)
(* Programm zum Anhaengen von Textdateien aneinander *)

const signon  = 'APPEND V0.1  TR 031090';
      EOFC    = $1A;

var   f1,f2   : file;
      buffer  : array[0..$3FFF] of byte;
      x,y,z,i : integer;

procedure help;
begin
  end;  (* kommt wohl spaeter *)

begin
  writeln(^M^J,signon,^M^J);
  if paramcount<2 then help;
  assign(f1,paramstr(1)); {$I-} reset(f1); {$I+}
  if ioresult<>0 then begin
    writeln('Datei ',paramstr(1),' kann nicht ge|ffnet werden.'); halt; end;
  assign(f2,paramstr(2)); {$I-} reset(f2); {$I+}
  if ioresult<>0 then begin
    writeln('Datei ',paramstr(2),' kann nicht ge|ffnet werden.'); halt; end;
  i:=pred(filesize(f1));
  seek(f1,i); blockread(f1,buffer,1); seek(f1,i);
  x:=0; while (buffer[x]<>EOFC) and (x<128) do x:=succ(x);
  while not eof(f2) do begin
    blockread(f2,buffer[x],127,i);
    if eof(f2) then begin
      z:=x+i shl 7; y:=z-128;
      while (buffer[y]<>EOFC) and (y<z) do y:=succ(y);
      fillchar(buffer[y],128-(y and $7F),EOFC);
      blockwrite(f1,buffer,succ(y shr 7));
      end
    else begin
      blockwrite(f1,buffer,127);
      move(buffer[$3F80],buffer,128);
      end;
    end;
  close(f1);
  end.

