perm filename EXTERN.PAS[EAL,HE]3 blob sn#710491 filedate 1983-05-05 generic text, type C, neo UTF8
COMMENT āŠ—   VALID 00008 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	(* Definitions of all externally available routines *)
C00005 00003	(* Interpreter Routines *)
C00016 00004	(* Editor routines *)
C00045 00005	(* Arithmetic Routines *)
C00048 00006	(* Message-passing Routines *)
C00049 00007	(* Display-related Routines *)
C00052 00008	(* CALLER routines for inter-overlay calling *)
C00058 ENDMK
CāŠ—;
(* Definitions of all externally available routines *)

	(* From ALLOC *)
procedure initAlloc;						external;
function newVector: vectorp;					external;
procedure relVector(v: vectorp);				external;
function newTrans: transp;					external;
procedure relTrans(t: transp);					external;
function newNode: nodep;					external;
procedure relNode(n: nodep);					external;
function newEvent: eventp;					external;
procedure relEvent(n: eventp);					external;
function newEentry: enventryp;					external;
procedure relEentry(n: enventryp);				external;
function newToken: tokenp;					external;
procedure relToken(n: tokenp);					external;
function newIdent: identp;					external;
procedure relIdent(n: identp);					external;
function newStrng: strngp;					external;
procedure relStrng(n: strngp);					external;
function newCmoncb: cmoncbp;					external;
procedure relCmoncb(n: cmoncbp);				external;
function newVaridef: varidefp;					external;
procedure relVaridef(n: varidefp);				external;
function newFrame: framep;					external;
procedure relFrame(n: framep);					external;
function newEheader: envheaderp; 				external;
procedure relEheader(n: envheaderp);				external;
function newStatement: statementp;				external;
procedure relStatement(n: statementp);				external;
function newPdb: pdbp;						external;
procedure relPdb(n: pdbp);					external;
function newEnvironment: environp;				external;
procedure relEnvironment(n: environp);				external;

	(* From FREE *)
procedure freStrng(st: strngp);					external;
procedure freeNode(n: nodep);					external;
procedure freeIds;						external;
procedure freeStatement(s: statementp);				external;

(* Interpreter Routines *)

-------------------- Level 1 ------------------------------

	(* From IAUX1A *)
procedure iAux1aGet; 						external;
procedure push (n: nodep);					external;
function pop: nodep;						external;
procedure upTrans (var t: transp; tp: transp);			external;
function envLookup (offset: integer; envhdr: envheaderp): enventryp;	external;
function getELev(hdr: envheaderp): integer;			external;
function getEntry (level, offset: byte): enventryp; 		external;
function getVar (level, offset: byte): enventryp;		external;
function gtVarn (n: nodep): enventryp;				external;
function getNval(n: nodep; var b: boolean): nodep;		external;
function getPdb: pdbp;						external;
procedure freePdb(p: pdbp);					external;
function getEvent: eventp;					external;
procedure freeEvent(e: eventp);					external;
function enterEntry (var i,j: integer; var env: environp;
		 envhdr: envheaderp; v: varidefp): enventryp;	external;
procedure makeCmon(e: enventryp; vari: varidefp);		external;
procedure makeVar(e: enventryp; vari: varidefp; tbits: integer);external;
procedure killNode(n: nodep);					external;
procedure killStack;						external;
procedure sendCmd;						external;
procedure sendTrans(tr: transp);				external;

	(* From IAUX1B *)
procedure iAux1bGet; 						external;
procedure prntSval(s: real);					external;
procedure prntVec(v: vectorp);					external;
procedure prntTrans(t: transp);					external;
procedure prntStrng(length: integer; s: strngp);		external;
procedure prntPlist(n: nodep);					external;
procedure onum(s: integer);					external;
procedure prntVar(v: nodep);					external;
procedure badJoints(angle: integer);				external;
procedure ppArmError (err: errortypes; angle: integer);		external;
procedure addPdb(var plist: pdbp; pn: pdbp);			external;
procedure sleep(whenV: integer);				external;
procedure deClkQueue(po: pdbp);					external;
procedure msgDispatch;						external;
procedure swap(newp: pdbp);					external;

	(* From IAUX1C.MAC *)
procedure getTime;						external;
procedure clrTimeQueue;						external;


-------------------- Level 2 ------------------------------

	(* From IAUX2A *)
procedure getReply;						external;
function whereArm (mech: integer): transp;			external;
procedure nextTime;						external;
procedure eval (f: framep);					external;
function feval (f: framep): transp;				external;
function invalidate (f: framep): boolean;			external;
procedure stvals (f: framep);					external;
procedure change (f: framep; res: nodep);			external;
procedure getDevice (f: framep; r: nodep);			external;
procedure getFrame (f: framep; r: nodep);			external;
procedure getVal (level, offset: byte);				external;
procedure setVal (level, offset: byte);				external;
procedure affixaux (f, d: framep; cnt: integer);		external;
function unfixaux (f: framep; cnt: integer): boolean;		external;
procedure unfix (f1,f2: framep);				external;
procedure killVar(e: enventryp);				external;
procedure killEnv;						external;

	(* From IAUX2B *)
procedure iAux2bGet;						external;
procedure cmonDisable(c: cmoncbp);				external;
function cmonCheck: boolean;					external;
procedure cmonEnable(e: enventryp);				external;

-------------------- Level 3 ------------------------------

	(* From IINIT *)
procedure initArms;						external;
procedure killarms;						external;
procedure calibrate;						external;
procedure consDef;						external;
procedure initWorld;						external;

	(* From IFLUSH *)
procedure flushLevel(dLev: integer);				external;
procedure flushAll(p: pdbp; dLev: integer);			external;
procedure unwind(p: pdbp; eLev: integer);			external;
procedure flushPdb(p: pdbp);					external;
procedure flushKids(p: pdbp; zapit: boolean);			external;

	(* From IEXPR *)
procedure evalExp;						external;

	(* From IOV1 *)
procedure doProg;						external;
procedure doBlock;						external;
procedure doCoblock;						external;
procedure doEnd;						external;
procedure doFor;						external;
procedure doIf;							external;
procedure doWhile;						external;
procedure doUntil;						external;

	(* From IOV2 *)
procedure iOv2Get; 						external;
procedure doCase;						external;
procedure doCall;						external;
procedure doReturn;						external;
procedure doAssign;						external;
procedure doPrompt;						external;
procedure doSignal;						external;
procedure doWait;						external;

	(* From IOV3 *)
procedure doEnable;						external;
procedure doDisable;						external;
procedure doAffix;						external;
procedure doUnfix;						external;

	(* From IOV4 *)
procedure doPrint;						external;
procedure doPause;						external;
procedure doAbort;						external;
procedure doSetbase;						external;
procedure doWrist;						external;
procedure doRetry;						external;

	(* Fro IOV5 *)
procedure doSay;						external;
procedure doFloat;						external;

	(* From IMOVRT *)
function forcebits(fn: nodep; var negv: boolean): integer;	external;
function getMechbits: integer;					external;
procedure moveStart;						external;
procedure moveEnd;						external;
procedure moveRetry;						external;

	(* From IMOVE1 *)
procedure iMove1Get; 						external;
procedure doMove;						external;

	(* From IMOVE2 *)
procedure iMove2Get; 						external;
procedure doCmon;						external;
procedure doOperate;						external;
procedure doOpen; (* & doClose *)				external;
procedure doCenter;						external;
procedure doStop;						external;
procedure doArmmagic;						external;

-------------------- Level 4 ------------------------------

	(* From IMAIN *)
procedure interp(dLev: integer);				external;

-------------------- Level 5 ------------------------------

	(* From IROOT *)
function i1bTaxis (t: transp): vectorp;				external;
function i1bTmagn (t: transp): scalar;				external;
procedure i1bSetVal (level, offset: byte); 			external;
function i1bGetVar (level, offset: byte): enventryp; 		external;
function i2bWhereArm (mech: integer): transp;			external;
procedure ov2FlushKids(p: pdbp; zapit: boolean);		external;
function m1Forcebits(fn: nodep; var negv: boolean): integer;	external;
function m1GetMechbits: integer;				external;
procedure m1MvStart;						external;
procedure m1MvEnd;						external;
procedure m1MvRetry;						external;
function m2Forcebits(fn: nodep; var negv: boolean): integer;	external;
function m2GetMechbits: integer;				external;
procedure m2MvStart;						external;
procedure m2MvEnd;						external;
procedure m2MvRetry;						external;

(* Editor routines *)

-------------------- Level 1 ------------------------------

	(* From EAUX1A *)
function getAChar: ascii;					external;
procedure out1Line(line,start,length: integer);			external;
procedure clearLine(i: integer);				external;
function upperCase(c: ascii): ascii;				external;
function eqStrng(s1: strngp; s2,len: integer): boolean;	external;
function hash(ch: ascii): integer;				external;
function resLookup(str,len: integer): reswordp;		external;
function idLookup(str,len: integer): identp;			external;
function makeNVar(vartype: datatypes; vid: identp): varidefp;	external;
function makeUVar(vartype: datatypes; vid: identp): varidefp;	external;
function varLookup(id: identp): varidefp;			external;
procedure pushStmnt(s: statementp; indent: integer);		external;
procedure pushNode(n: nodep);					external;
procedure bannerLine(ch: ascii; l: integer);			external;
procedure borderLines;						external;
procedure adjustDisplay;					external;

	(* From EAUX1B *)
procedure eAux1bGet;						external;
procedure appendEnd(s,so: statementp);				external;
function defNode(d: datatypes): nodep;				external;
function getDtype(n: nodep): datatypes;				external;
function checkArg(n: nodep; d: datatypes): nodep;		external;
function copyExpr(n: nodep; lcp: boolean): nodep;		external;

	(* From EAUX1C *)
procedure errprnt;						external;
procedure relExpr(n: nodep);					external;
function evalOrder(what,last: nodep; pcons: boolean): nodep;	external;
function matchdim(d1,d2: nodep; exactp: boolean): boolean;	external;
function getdim(n: nodep; var d: nodep): nodep;			external;
procedure ppFlush;						external;

	(* From EPUT *)
procedure ePutGet;						external;
procedure putChar(ch: ascii);					external;
procedure put5(ch: c5str; length: integer);			external;
procedure put10(ch: cstring; length: integer);			external;
procedure putLine;						external;
procedure putReal(s: real);					external;
procedure putInt(r: real);					external;
procedure putVec(v: vectorp);					external;
procedure putTrans(t: transp);					external;
procedure putStrng(length: integer; s: strngp);			external;
procedure putTlist(t: tokenp);					external;
function getExprLength(n: nodep): integer;			external;
procedure putexpr(n: nodep; opp: integer);			external;

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

-------------------- Level 2 ------------------------------

	(* From EAUX2A *)
procedure eAux2aGet;						external;
procedure flushVar(oldvar: varidefp);				external;
procedure makeNewVar(newvar: varidefp);				external;
procedure initEditor;						external;

	(* From EAUX2B *)
procedure nextStmnt(i: integer; downp: boolean);		external;
procedure lastStmnt(i: integer; downp: boolean);		external;
procedure parentStmnt(n: integer);				external;

	(* From EAUX2C *)
procedure eAux2cGet;						external;
procedure setECurInt;						external;
procedure displayLines(var pfrom: integer);			external;
procedure deleteLines(start,number,coff: integer);		external;
procedure insertLines(start,number,coff: integer);		external;

	(* From EAUX2D *)
procedure readPPLine(off: integer);				external;
procedure readline;						external;

	(* From ETOKEN *)
procedure getToken;						external;
function copyToken: tokenp;					external;
procedure dimCheck(n,d: nodep);					external;
procedure getDelim(char: ascii);				external;

	(* From EPUTST *)
procedure putstmnt(s: statementp; indent, plevel: integer);	external;
procedure newline(indent: integer);				external;
procedure outExpr(n: nodep);					external;

	(* From EPUTS1 *)
procedure ePs1Get;						external;
procedure putst1(s: statementp; indent, plevel: integer;
	var l: integer);					external;

	(* From EPUTS2 *)
procedure ePs2Get;						external;
procedure putst2(s: statementp; indent, plevel: integer;
	var l: integer);					external;

	(* From EPUTS3 *)
procedure ePs3Get;						external;
procedure putst3(s: statementp; indent, plevel: integer;
	var l: integer);					external;

	(* From EMOVEO *)
procedure moveOrder(st: statementp);				external;

	(* From EINIT1 *)
procedure initReswords;						external;

	(* From EINIT2 *)
procedure init1Idents;						external;

	(* From EINIT3 *)
procedure init2Idents;						external;

-------------------- Level 3 ------------------------------

	(* From EEXPAR *)
function exprParse: nodep;					external;
procedure getArgs(opn: nodep);					external;

	(* From EPAR3A *)
procedure ePar3aGet;						external;
procedure assignParse(st: statementp; np: nodep);		external;
procedure forParse(st: statementp);				external;
procedure affixParse(st: statementp);				external;
procedure unfixParse(st: statementp);				external;
procedure enableParse(st: statementp);				external;

	(* From EPAR3B *)
procedure ePar3bGet;						external;
function idGet(st: statementp; indent,l: integer): ascii;	external;
function plistParse(st: statementp;
	e0,indent,l,ocur: integer): ascii;			external;
procedure labelParse;						external;
procedure clabelParse(n: nodep);				external;
procedure reFormatStmnt(st: statementp; indent,ocur: integer);	external;

	(* From EPAR3C *)
procedure ePar3cGet;						external;
function declarationp: boolean;					external;
function getEDeclarations(pdef: boolean; lev: integer;
	var vo: varidefp; var numvars: integer): varidefp;	external;
function varParse(st: statementp; indent,l: integer): ascii;	external;
function procParse(n: nodep; indent,l: integer): ascii;		external;

	(* From EPAR3D *)
procedure ePar3dGet;						external;
function addNewDeclarations: integer;				external;
procedure reParse(st: statementp);				external;
procedure delStmnt(arg: integer);				external;

	(* From EPAR3E *)
procedure ePar3eGet;						external;
function clauseParse(n: nodep; absSeen: boolean): nodep;	external;
procedure cmonParse(st: statementp; getStart: boolean);	external;
procedure mClauseParse(n: nodep);				external;

	(* From EPAR3F *)
procedure ePar3fGet;						external;
procedure moveParse(st: statementp; bp: boolean);		external;
procedure stopParse(st: statementp);				external;
procedure returnParse(st: statementp);				external;
procedure wristParse(st: statementp);				external;

	(* From EPAR3G *)
function thenCode(evp: boolean; s: statementp): statementp;	external;
procedure waitParse(sp: statementp);				external;
procedure armMagicParse(sp: statementp);			external;

	(* From EAUX3A *)
procedure eAux3aGet;						external;
procedure setPPSize(arg: integer);				external;
procedure flushOldEnvironments(dLev: integer);			external;
procedure saveOutermostEnv;					external;
procedure fileParse(var fname: c20str); 			external;
procedure writeProg;						external;
procedure initOuterBlock (which:integer);			external;
procedure setUpStmnt(which: integer);				external;
procedure getEcmd;						external;
procedure doSetcmd;						external;
procedure makeOuterBlock;					external;
procedure openTalk; 						external;

	(* From EAUX3B *)
procedure varDefine;						external;
procedure setBpt(st: statementp);				external;
procedure clrBpt(st: statementp);				external;
procedure clrAllBpts;						external;
procedure setTBpt(st: statementp);				external;
procedure stepStmnt(bpttype: integer);				external;
procedure clrTBpts;						external;
procedure tracePdb(p: pdbp);					external;
procedure trace(all: boolean);					external;
procedure redrawDisplay;					external;
procedure collectStmnt(s: statementp);				external;

	(* From EAUX3C - addStmnt aux routines *)
function getEmptyStmnt(sp:statementp): statementp;		external;
function getBlkId: identp;					external;
procedure flushSemi(slabel: varidefp);				external;
procedure addNSt(sty: stmntypes; nextLinep: cursorpp; 
	var sp: statementp; slabel: varidefp; 
	emptyp,stok: boolean; var nogood: boolean);		external;
function addNode(nextLinep: cursorpp; slabel:varidefp): nodep;	external;
procedure addNEnv;						external;
procedure descend(st: statementp);				external;
function elseTest(emptyp): boolean;				external;
procedure restoreCursor;					external;
procedure setUpNewStmnt(sp: statementp; ind: integer);		external;
procedure viaOk(i: integer; clOk: boolean; var viaCl: nodep;
		 var nextLinep: cursorpp); external;		external;

	(* From EAUX3D *)
procedure bracketStmnt;						external;
procedure mark;							external;
procedure unmark(all: boolean);					external;
procedure gotoMark(n: integer);					external;
function atStmnt: boolean;					external;

	(* From EDEBUG *)
procedure eDbgGet;						external;
function dGetPdb(st: statementp): pdbp;				external;
procedure dfreePdb(p: pdbp);					external;
function getPCline(st: statementp): integer;			external;
procedure runStmnt(which: integer);				external;
procedure executeStmnt(st: statementp; which: integer);		external;
procedure pevalExpr(n: nodep; which: integer);			external;
procedure goStmnt(which: integer);				external;

-------------------- Level 4 ------------------------------

	(* From EMAIN *)
procedure edit;							external;

	(* From EMAIN1 *)
procedure em1Get;						external;
procedure editInit;						external;
procedure eMain1Aux(oc: integer); external;

	(* From EMAIN2 *)
procedure eDo1Cmd (ch: ascii; iCh: integer; 
	var done, minus, okp: boolean; 
	oldline, oldcline, arg: integer);			external;

	(* From EMAIN3 *)
procedure em3Get;						external;
procedure readProg;						external;
procedure doAtCmd;						external;
procedure eDoECmd (var okp: boolean);				external;

	(* From EMAIN4 *)
procedure em4Get;						external;
procedure eDoStmnt;						external;
procedure eDoOtherCmd;						external;

	(* From EMAIN5 *)
procedure eGetCommand (ch: ascii);				external;

	(* From EMAIN6 *)
procedure em6Get;						external;
procedure eDo2Cmd (ch: ascii; iCh: integer; var okp: boolean; 
	arg: integer);						external;

	(* From EADDST *)
procedure addStmnt(firstTime: boolean);				external;

	(* From EADD1 *)
procedure addst1(sp: statementp);				external;

	(* From EADD2 *)
procedure addst2 (nextLinep: cursorpp; sp: statementp);		external;

	(* From EADD3 *)
procedure addSetup(nextLinep: cursorpp; 
	var emptyp,stok,clok: boolean; 	var l,elen: integer; 
	firstTime: boolean; var echar: ascii);			external;

	(* From EADD4 *)
procedure add1Aux (var l,lcur: integer; nextLinep: cursorpp; 
	var sp: statementp; var slabel: varidefp; 
	var emptyp,stok,clok,nogood,labp: boolean);		external;

	(* From EADD5 *)
procedure addEndStmnt (nextLinep: cursorpp; 
	var nogood,emptyp: boolean; var l,ocur: integer);	external;
procedure add2Aux (nextLinep: cursorpp; 
	var l,ocur,lcur: integer; var nogood: boolean; 
	slabel: varidefp; labp: boolean);			external;
procedure add4Aux (sp: statementp; var lcur,ocur: integer; 
	slabel: varidefp; nextLinep: cursorpp; 
	nogood,emptyp: boolean; var firstTime: boolean);	external;

	(* From EADD6 *)
procedure add1Filler(nextLinep: cursorpp; var l,lcur: integer;
	var emptyp,stok,clok,nogood,flushp: boolean; 
	var sp: statementp; slabel: varidefp; viaCl: nodep);	external;

	(* From EADD7 *)
procedure addDeclSt(nextLinep: cursorpp; var sp: statementp;
    	slabel: varidefp; emptyp,stok: boolean;
    	var nogood,flushp: boolean; var lcur: integer); 	external;
procedure add3Aux (nextLinep: cursorpp; sp: statementp; 
	slabel: varidefp; var emptyp,stok,nogood,labp: boolean; 
	var lcur: integer);					external;

	(* From EADD8 *)
procedure addCmon(defer: boolean; nextLinep: cursorpp; 
	var sp: statementp; slabel: varidefp; 
	emptyp,clok,stok: boolean; var nogood,flushp: boolean);	external;

	(* From EEDITS *)
procedure echarDo (echar: ascii; var again: boolean);		external;
function editExpr(n: nodep; l,e0,elen: integer;
	echar: ascii; var again: boolean): nodep;		external;
procedure downLine (var again:boolean; var ocur: integer);	external;
procedure editStmnt;						external;

	(* From EEDIT1 *)
procedure eEdit1 (s: statementp; l,indent,e0,elen: integer;
	var echar: ascii; var again: boolean; var ocur: integer);	external;

	(* From EEDIT2 *)
procedure eEdit2 (s: statementp; l,indent,e0,elen: integer;
	var echar: ascii; var again: boolean; var ocur: integer);	external;

	(* From EEDIT3 *)
procedure eEdit3 (s: statementp; l,indent,e0,elen: integer;
	var echar: ascii; var again: boolean; var ocur: integer);	external;

	(* From EEDIT4 *)
procedure eEditOther (n: nodep; l,indent,e0,elen: integer;
	var echar: ascii; var again: boolean);			external;


-------------------- Level 5 ------------------------------

	(* From EROOT:	Inter-overlay calls *)
function eptaxis (t: transp): vectorp;				external;
function eptmagn (t: transp): scalar;				external;
procedure e2cputstmnt(s: statementp; indent, plevel: integer);	external;
procedure ep1putstmnt(s: statementp; indent, plevel: integer);	external;
procedure ep2putstmnt(s: statementp; indent, plevel: integer);	external;
procedure ep3putstmnt(s: statementp; indent, plevel: integer);	external;
function e3aExprParse: nodep;					external;
function e3bExprParse: nodep;					external;
function e3cExprParse: nodep;					external;
procedure e3cReParse(st: statementp);				external;
function e3dExprParse: nodep;					external;
function e3eExprParse: nodep;					external;
function e3fExprParse: nodep;					external;
function e3gExprParse: nodep;					external;
function ea3bExprParse: nodep;					external;
procedure e3gGetArgs(opn: nodep);				external;
procedure edbFlLevel(dLev: integer);				external;
procedure edbFlKids(p: pdbp; zapit: boolean);			external;
procedure edbUnwind(p: pdbp; eLev: integer);			external;
function edbExprParse: nodep; 					external;
function edbAddNewDeclarations: integer;			external;
procedure em3AddStmnt(firstTime: boolean);			external;

(* Arithmetic Routines *)

	(* From ARITH1 *)
function sind(d: real): real; 					external;			
function cosd(d: real): real; 					external;
function tand(d: real): real; 					external;
function vdot (u,v: vectorp): scalar; 				external;
function vmagn (v: vectorp): scalar; 				external;
function svmul (s: scalar; v: vectorp): vectorp; 		external;
function vsdiv (v: vectorp; s: scalar): vectorp; 		external;
function vadd (u,v: vectorp): vectorp; 				external;
function vsub (u,v: vectorp): vectorp; 				external;
function unitv (v: vectorp): vectorp; 				external;
function vcross (u,v: vectorp): vectorp; 			external;
function tvmul (t: transp; v: vectorp): vectorp; 		external;
function vsaxwr(ax: vectorp; w: real): transp; 			external;
function construct(org,vx,vxy: vectorp): transp; 		external;
function vmkfrc(v: vectorp): transp; 				external;

	(* From ARITH2 *)
function asin(x: real): real; 					external;
function acos(x: real): real; 					external;
function atan2(x,y: real): real; 				external;
function vmake (a,b,c: scalar): vectorp; 			external;
function taxis (t: transp): vectorp; 				external;
function tmagn (t: transp): scalar; 				external;
function tpos (t: transp): vectorp; 				external;
function torient (t: transp): transp; 				external;
function tmake (t: transp; v: vectorp): transp; 		external;
function tvadd (t: transp; v: vectorp): transp; 		external;
function tvsub (t: transp; v: vectorp): transp; 		external;
function ttmul (t1,t2: transp): transp; 			external;
function tinvrt (t: transp): transp; 				external;
function auxExp(s:scalar): scalar;				external;
function auxLn(s:scalar): scalar;				external;
function auxTime: real; 					external;

(* Message-passing Routines *)

	(* From RSXRUT *)
procedure initMsg(var buf: messagep; var flag: boolean);     	external;
procedure sndmsg (var res,err: integer);			external;
procedure rcvmsg (var res,err: integer);			external;
function doRqst: integer;					external;
procedure signalArm;						external;
procedure markTime(when: integer; var curTime,stime: integer);	external;

	(* From RSXMSG *)
function startArm: boolean;                                  	external;
function SendArm: boolean;                                   	external;
function GetArm: boolean;                                    	external;

(* Display-related Routines *)

	(* From PP *)
procedure ppGlitch; 						external;
function getLine(length: integer): linerecp;			external;
procedure relLine(l: linerecp);					external;
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 ppInt(i: integer); 					external;
procedure ppReal(r: real); 					external;
procedure ppStrng(length: integer; s: strngp); 			external;
procedure ppDtype(d: datatypes);				external;
procedure ppDelChar; 						external;

	(* From DISP *)
function initScreen(var l: listingarray): integer; 		external;	
procedure reInitScreen; 					external;
procedure resetScreen; 						external;
procedure clearScreen; 						external;
procedure echo(on: boolean); 					external;
procedure beep; 						external;
procedure showCursor(line,col: integer); 			external;
procedure outLine(line,col,start,length: integer); 		external;
function getChar: ascii; 					external;
procedure outChar(line,col: integer; ch: ascii; bold: boolean); external;
procedure insChar(line,col: integer; ch: ascii); 		external;
procedure delChar(line,col: integer); 				external;
procedure insLine(line,num: integer); 				external;
procedure delLine(line,num: integer); 				external;
function anyChar(var ch: ascii): boolean;			external;	
procedure escInit(var flg: boolean); 				external;

(* CALLER routines for inter-overlay calling *)

procedure i1bPpReal(r: real); 					external;
function p1eReadLine(var line: linestr): integer;		external;
procedure e2akillVar(e: enventryp);				external;
procedure e3aInterp(dLev: integer); external;
procedure e3aFlushAll(p: pdbp; dLev: integer);			external;
procedure edbInterp(dLev,which: integer);			external;
procedure em6EditStmnt;						external;
procedure emAddStmnt(firstTime: boolean; which: integer);	external;
function em4StmntParse(var cblk,newDecs: statementp; 
	cproc: varidefp): statementp;				external;
procedure ea3bXecuteStmnt(st: statementp; which: integer);	external;