! Utility routines for EDWIN on APM.

!%include "EDWIN.DD"

%const %integer DEL = 127

%external %routine SET DEVICE %alias "EDWIN_SET_DEVICE" (%string(15) TERM)
   ! Ignored at present
%end

%external %routine TTMODE %alias "EDWIN_TTMODE" (%integer I)
   ! Ignored at present
%end

%own %string (255) BUFF=""

%external %routine FLUSH OUTPUT %alias "EDWIN_FLUSH"
   %integer A, L
   %if VIEWING>=0 %start
       A = OUT STREAM
       SELECT OUTPUT (VIEWING)
       PRINT STRING (BUFF)
       SELECT OUTPUT (A)
   %finish
   BUFF=""
%end

%external %routine TTPUT %alias "EDWIN_TTPUT" (%integer SYM)
   LENGTH(BUFF) = LENGTH(BUFF) + 1
   CHARNO (BUFF,LENGTH(BUFF)) = SYM
   FLUSH OUTPUT %if LENGTH(BUFF)>245
%end

%external %integer %fn TTGET %alias "EDWIN_TTGET"
   %integer ST, SYM
   set terminal mode (no echo + single)
   ST = IN STREAM
   SELECT INPUT (0)
!   PROMPT (TO STRING (DEL))
   PROMPT ("")
   READ SYMBOL (SYM)
   PROMPT ("Data: ")
   SELECT INPUT (ST)
   set terminal mode (0)
   %result = SYM
%end

%external %integer %fn TTREAD %alias "EDWIN_TTREAD"
   %integer ST, SYM
   set terminal mode (no echo + single)
   ST = IN STREAM
   SELECT INPUT (0)
!   PROMPT (TO STRING (DEL))
   PROMpt ("")
   READ SYMBOL (SYM)
   PROMPT ("Data: ")
   SELECT INPUT (ST)
   set terminal mode (0)
   %result = SYM
%end

!%external %routine TEK INPUT (%integer %name A, B, C, D, E, %integer cursor)
!   %integer st, f
!   %string (255) old prompt
!   flush output
!   ST = in stream
!   select input (0)
!   old prompt = "Data: "
!   prompt (to string(27).to string (cursor))
!   read symbol (a) %until a>=' '
!   read symbol (b);   read symbol (c);   read symbol (d);   read symbol (e)
!   read symbol (f) %until f<' '
!   prompt (old prompt)
!   select input (st)
!%end

%external %routine OPER MESSAGE %alias "EDWIN_OPER_MESSAGE" (%string (255) S)
   %integer OS
   OS = Out Stream
   Select output (0)
   Print string (S)
   Newline
   Select output (OS)
%end

%external %routine OPER INTERACT %alias "EDWIN_OPER_INTERACT" (%string (255) S)
   %string (127) OLD PROMPT
   %integer IS, REPLY
   %on 9 %start
       Prompt (OLD PROMPT)
       %signal 9
   %finish
   IS = In Stream
   Select input (0)
   OLD PROMPT = ":" {CURRENT PROMPT}
   Prompt (S)
   Read symbol (REPLY) %until REPLY&95='Y'
   Read symbol (REPLY) %until REPLY=NL
   Select input (IS)
   Prompt (OLD PROMPT)
%end


%end %of %file
