perm filename EMAIN5.2[EAL,HE]1 blob sn#674830 filedate 1982-09-27 generic text, type C, neo UTF8
COMMENT āŠ—   VALID 00003 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	{$NOMAIN	Editor:  Immediate-mode command getter }
C00005 00003	procedure eGetCommand (ch: ascii) external
C00007 ENDMK
CāŠ—;
{$NOMAIN	Editor:  Immediate-mode command getter }

%include emain.hdr;

{ Externally defined routines from elsewhere: }

	(* From EAUX1A *)
procedure out1Line(line,start,length: integer); 		external;

	(* From EEXPED *)
function exprEditor(line,lstart,llength,estart: integer;
	var elength: integer; off: integer): ascii;		external;

	(* From EAUX3A *)
procedure getEcmd;						external;

	(* From PP *)
procedure ppLine; 						external;
procedure ppOutNow; 						external;
procedure ppChar(ch: ascii); 					external;
procedure pp5(ch: c5str; length: integer); 			external;
procedure pp10(ch: cstring; length: integer); 			external;
procedure pp10L(ch: cstring; length: integer);			external;
procedure pp20(ch: c20str; length: integer); 			external;
procedure pp20L(ch: c20str; length: integer); 			external;
procedure ppDelChar; 						external;

	(* From DISP *)
procedure showCursor(line,col: integer); 			external;
procedure outLine(line,col,start,length: integer); 		external;

procedure eGetCommand (ch: ascii); external;
procedure eGetCommand ;
 var i: integer; actch: char;
 begin
 ppDelChar;
 ppLine;
 listing[1] := ch;
 if not smartTerminal then outline(dispHeight+ppOffset+1,1,1,1);
 i := 1;
 actch := exprEditor(dispHeight+ppOffset+1,1,1,1,i,1);
 if smartTerminal then			(* deboldify it *)
   out1Line(dispHeight+ppOffset+1,1,maxchar);
 for i := 1 to maxChar do ppBuf[i] := listing[i];
 ppBufp := maxChar;
 oppBufp := maxChar;
 ppLine;
 listing[1] := ppBuf[1];		(* fix things up for getToken *)
 listing[maxChar+1] := ' ';
 showCursor(cursorLine-topDline-firstDline+2,1);
 getEcmd;				(* see what we're being asked to do *)
 end;