Turbo Vision - Pascal

I have a windowed turbo vision app to do serial I/O.  It puts all
serial input into a terminal window fine.  I would also like it
to write that same data to a "capture file" and thought it would
be as easy as adding a simple write(caturefile, data) right after
it wrote the string to the terminal window but... even though the
data is clean as a whistle in the terminal window, "my capture" to
a file is getting extra "?" sprinkled throughout the capture file.
Can someone look at the following procedure and let me know what
I am doing wrong... I'd be grateful as heck.

  procedure TSerTestApp.Idle;
      PTextBuf = ^TextBuf;
      Buf : array [1..20] of Char;
      Len : Integer;
      linein: string;
    inherited Idle;

    if COMPort.BytesInInputBuffer>0 then
      Len:=Min(COMPort.BytesInInputBuffer, SizeOf(Buf));
      COMPort.Read(Buf, Len);
      (* This is faster than writing to TermText, but is still SLOW *)
      Term^.StrWrite(PTextBuf(@Buf)^, Len);
      (* my broken "capture-to-a-file" routine *)
       if capturefile then


It almost seems like it's writing to the file too slow and picking
up the extra "?"s whenever data is flying thru the port.  ie.
If I type ATDT fast... the terminal  window shows it fine but
the capture file will show A?TDT or ATD?T.  The response from
the modem will show "NO CARRIER" in the terminal window but the
capture file will show "NO C?ARR?IER?".

Please ... go ahead, embarrass me... I can take it.