DEFINITION MODULE TermChan;

(* Extra interfaces to the terminal channel, not included in the Standard *)

IMPORT IOChan;
FROM   IOConsts  IMPORT ReadResults;

TYPE
  ChanId = IOChan.ChanId;


PROCEDURE LookKey (    cid : ChanId;
                   VAR ok  : BOOLEAN;
		   VAR ch  : CHAR;
		   VAR res : ReadResults);
(* Performs 'no-wait' input:
   If there is a character available on TermFile channel cid, return ok TRUE
   and the results of a Look(cid/dtp, ch, res);
   otherwise return ok FALSE. *)

PROCEDURE Echo ();
(* Enable echo for all terminal channels.
   Echoing is on by default, and can be controlled by use of
   TextIO.Read (echo) cf IOChan.Look/Skip (no echo).
   However NoEcho truns off echoing globally, and this procedure
   allows it to be turned back on. *)

PROCEDURE NoEcho ();
(* Disable echoing for all terminal channels.
   LookKey disables echo when it checks for (and reads) a character;
   however a typical LookKey loop will often be outside LookKey when a key is
   pressed, and default operatijg system echo will occur.
   This procedure allows echoing to be globally suppressed, so that LookKey
   echo is entirely under user control. *)

END TermChan.