perm filename EROOT.2[EAL,HE]2 blob sn#704712 filedate 1983-03-27 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00007 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	{$NOMAIN	Main program part of the Editor routines }
C00004 00003	{ External routines which we help to call:				}
C00006 00004	{ Level 1, the lowest level cotree					}
C00007 00005	{ Level 2.  These are oft-used auxilliary routines.			}
C00009 00006	{ Level 3.  These are all the routines called by Edit, editStmnt,	}
C00012 00007	{ Level 4, the highest level. This is Edit, editStmnt and addStmnt.	}
C00013 ENDMK
C⊗;
{$NOMAIN	Main program part of the Editor routines }

{ This module doesn't really contain any code (yet) but is just used	}
{ to contain the inter-overlay calling routines for those overlays	}
{ which need to call overlays in the same cotree.			}

{ Note that all the pointer types are faked; this doesn't make any 	}
{ difference since they all take up the same space.			}

type

  byte = 0..255;	(* doesn't really belong here, but... *)
  ascii = char; 
  scalar = real;

{ Define all the pointer types here }

vectorp = ↑integer;
transp = ↑integer;
statementp = ↑integer;
nodep = ↑integer;
pdbp = ↑integer;

{ External routines which we help to call:				}

	(* From ARITH2 *)
function taxis (t: transp): vectorp; 				external;
function tmagn (t: transp): scalar; 				external;

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

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

	(* From EEXPAR *)
function exprParse: nodep;					external;

	(* From EPAR3D *)
procedure reParse(st: statementp);				external;

	(* Routines used to call in overlays *)
procedure ePutGet;		external;
procedure eAux2cGet;		external;
procedure ePs1Get;		external;
procedure ePs2Get;		external;
procedure ePs3Get;		external;
procedure ePar3aGet;		external;
procedure ePar3bGet;		external;
procedure ePar3cGet;		external;
procedure ePar3dGet;		external;
procedure ePar3eGet;		external;
procedure ePar3fGet;		external;
procedure eDbgGet;		external;

{ Level 1, the lowest level cotree					}

function eptaxis (t: transp): vectorp;	 external;
function eptaxis ;
  begin eptaxis := taxis(t); ePutGet; end;

function eptmagn (t: transp): scalar; external;
function eptmagn ;
  begin eptmagn := tmagn(t); ePutGet; end;

{ Level 2.  These are oft-used auxilliary routines.			}

procedure e2cputstmnt(s: statementp; indent, plevel: integer); external;
procedure e2cputstmnt;
  begin putStmnt(s,indent,plevel); eAux2cGet; end;

procedure ep1putstmnt(s: statementp; indent, plevel: integer); external;
procedure ep1putstmnt;
  begin putStmnt(s,indent,plevel); ePs1Get; end;

procedure ep2putstmnt(s: statementp; indent, plevel: integer); external;
procedure ep2putstmnt;
  begin putStmnt(s,indent,plevel); ePs2Get; end;

procedure ep3putstmnt(s: statementp; indent, plevel: integer); external;
procedure ep3putstmnt;
  begin putStmnt(s,indent,plevel); ePs3Get; end;

{ Level 3.  These are all the routines called by Edit, editStmnt,	}
{	    and addStmnt.						}

function e3aExprParse: nodep; external;
function e3aExprParse;
  begin e3aExprParse := exprParse; ePar3aGet; end;

function e3bExprParse: nodep; external;
function e3bExprParse;
  begin e3bExprParse := exprParse; ePar3bGet; end;

function e3cExprParse: nodep; external;
function e3cExprParse;
  begin e3cExprParse := exprParse; ePar3cGet; end;

procedure e3cReParse(st: statementp); external;
procedure e3cReParse;
  begin reParse(st); ePar3cGet end;

function e3dExprParse: nodep; external;
function e3dExprParse;
  begin e3dExprParse := exprParse; ePar3dGet; end;

function e3eExprParse: nodep; external;
function e3eExprParse;
  begin e3eExprParse := exprParse; ePar3eGet; end;

function e3fExprParse: nodep; external;
function e3fExprParse;
  begin e3fExprParse := exprParse; ePar3fGet; end;


procedure edbFlLevel(dLev: integer); external;	(* These should really be in CALLER *)
procedure edbFlLevel;
  begin flushLevel(dLev); eDbgGet end;

procedure edbFlKids(p: pdbp; zapit: boolean); external;
procedure edbFlKids;
  begin flushKids(p,zapit); eDbgGet end;

procedure edbUnwind(p: pdbp; eLev: integer); external;
procedure edbUnwind;
  begin unwind(p,eLev); eDbgGet end;

{ Level 4, the highest level. This is Edit, editStmnt and addStmnt.	}

{   (not much here...)	}