MODULE star;

FROM BSCTermIO IMPORT FindSC,
                      SuspendSC,
                      NOTRANS;


FROM Arguments IMPORT ArgCount, GetArg;

FROM BStreams  IMPORT SelectInput,
                      Rdch,
                      Wrch,
                      SysIn,
                      STREAM;

VAR
   I, Len :CARDINAL;
   Param  :ARRAY [0..200] OF CHAR;
   TT     :STREAM;
   
PROCEDURE NoEcho;
BEGIN
   TT := FindSC (NOTRANS);
   SelectInput (TT)
END NoEcho;

PROCEDURE ResetEcho;
BEGIN
   SuspendSC;
   SelectInput (SysIn)
END ResetEcho;

PROCEDURE WriteS (String :ARRAY OF CHAR);
VAR I:CARDINAL;
BEGIN
   I := 0;
   WHILE (I <= HIGH (String)) AND (ORD (String [I]) >= 32) DO
      Wrch (String [I]);
      I := I + 1
   END (* while *);
END WriteS;

PROCEDURE WriteLn;
BEGIN
   Wrch (CHR (13))
END WriteLn;

VAR
   C :CHAR;
   
BEGIN
   Wrch (CHR(27));
   Wrch ("*");
   I := 1;
   LOOP
      IF I=ArgCount THEN EXIT END;
      GetArg (I, Param, Len);
      IF I<>1 THEN Wrch (" ") END;
      WriteS (Param);
      I := I+1;
   END;
   WriteLn ();
   NoEcho ();
   REPEAT
      C := Rdch ();
   UNTIL C = CHR(27);
   ResetEcho ();
END star.
