Program FileStripper;

Uses Crt,DOS;

{$I style.inc}
{$I upstr.inc}

Const
  VNM='1.00';
  VDT='25-Mar-94';

Var
  IFS,OFS:Text;
  RCH:Char;
  SRC,TRG:String[80];
  CTR,WTH:Integer;

Procedure Usage;
Begin
  Style(0,1);
  Style(1,1);
  Style(3,1);
  WriteLn('File Stripper v',VNM,' by Zebedee ',#$a9,'1994 Carnage (',VDT,')');
  Style(0,1);
  WriteLn;
  WriteLn('Usage: FSTRIP <filename> <output> <width>');
  Halt(10);
  WriteLn('$VER: Change v1.00 (25-Mar-94) ');
End;

Procedure GetParams;
Begin
  If ParamCount<>3 Then Usage;
  SRC:=UpStr(ParamStr(1));
  TRG:=UpStr(ParamStr(2));
  Val(Copy(ParamStr(3),1,Length(ParamStr(3))),WTH,CTR);
  If SRC=TRG Then
  Begin
    WriteLn(ParamStr(0),': Filename and output cannot match');
    Halt(20);
  End;
End;

Procedure StripFile;
Begin
  CTR:=0;
  Assign(IFS,SRC);
  Reset(IFS);
  Assign(OFS,TRG);
  ReWrite(OFS);
  WriteLn(OFS,'FileStripper v',VNM,' ',#$a9,'1994 Carnage (',VDT,')');
  WriteLn(OFS,'');
  WriteLn(OFS,'Stripped file: ',SRC);
  WriteLn(OFS,'Output file  : ',TRG);
  WriteLn(OFS,'Width        : ',WTH);
  While not Eof(IFS) Do
  Begin
    Read(IFS,RCH);
    If (Ord(RCH)>31) and (Ord(RCH)<127) Then
    Begin
      Write(OFS,RCH);
      Inc(CTR);
    End;
    If CTR=WTH Then
    Begin
      WriteLn(OFS,'');
      CTR:=0;
    End;
  End;
  Close(OFS);
  Close(IFS);
End;

Begin
  GetParams;
  StripFile;
End.