perm filename EEDIT.HDI[EAL,HE] blob sn#704682 filedate 1983-03-30 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00009 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00003 00002	  1) EEDIT.HDR[EAL,HE] and 2) ALHDR.2[EAL,HE]	3-30-83 12:01	pages 1,1
C00007 00003
C00010 00004
C00012 00005
C00018 00006
C00022 00007
C00025 00008
C00029 00009
C00031 ENDMK
C⊗;
  1) EEDIT.HDR[EAL,HE] and 2) ALHDR.2[EAL,HE]	3-30-83 12:01	pages 1,1

**** File 1) EEDIT.HDR[EAL,HE]/1P/1L
1)	const
1)		(* Constants from EDIT *)
**** File 2) ALHDR.2[EAL,HE]/1P/1L
2)	(* The following bits are used during calls to the ARM servo *)
2)	const
2)		YARMDEV   = 1;		(* device numbers *)
2)		YHANDDEV  = 2;
2)		BARMDEV   = 3;
2)		BHANDDEV  = 4;
2)		VISEDEV   = 5;
2)		DRIVERDEV = 6;
2)		GARMDEV   = 7;
2)		GHANDDEV  = 8;
2)		RARMDEV   = 9;
2)		RHANDDEV  = 10;
2)		YELARM = 1B;		(* Yellow arm *)
2)		BLUARM = 4B;		(* Blue arm *)
2)		FTABLE = 400B;		(* Force trans (C) in table coordinates *)
2)		FHAND  = 0B;		(*   "	 "    "   " hand coordinate system *)
2)		XFORCE = 0B;		(* Force along X direction of C *)
2)		YFORCE = 1000B;		(*   "	  "   Y	    "	  "  " *)
2)		ZFORCE = 2000B;		(*   "	  "   Z	    "	  "  " *)
2)		XMOMENT = 3000B;	(* Moment about X direction of C *)
2)		YMOMENT = 4000B;	(*   "	   "   Y     "	   "  " *)
2)		ZMOMENT = 5000B;	(*   "	   "   Z     "	   "  " *)
2)		FSTOP  = 10000B;	(* In addition to starting cmon, stop arm *)
2)		SIGMAG = 20000B;	(* Test only magnitude of forces *)
2)		SIGGE = 100000B;	(* Start cmon if force ≥ specified value *)
2)		SIGLT = 0B;		(*   "	  "  "	  "   <	    "	    " *)
2)		barmpower = 1B;		(* bit defs - used in response to initarmscmd *)
2)		yarmpower = 2B;
2)		garmpower = 4B;
2)		rarmpower = 10B;
2)		garmcal = 400B;
2)		rarmcal = 1000B;
2)		nullingcb = 1B;		(* control bits for trajectory specs *)
2)		wobblecb = 2B;
2)		durlbcb = 20B;		(* Duration: lower, upper & exact bounds *)
2)		durubcb = 40B;
2)		dureqcb = 60B;
2)		veloccb = 100B;
2)		codecb = 200B;
2)		viaptcb = 400B;
2)		deprptcb = 1000B;
2)		apprptcb = 2000B;
2)		destptcb = 10000B;
2)		(* Constants from EDIT *)
***************


**** File 1) EEDIT.HDR[EAL,HE]/2P/20L
1)	strngp = ↑strng;
1)	statementp = ↑statement;
**** File 2) ALHDR.2[EAL,HE]/3P/11L
2)	vectorp = ↑vector;
2)	transp = ↑trans;
2)	strngp = ↑strng;
2)	eventp = ↑event;
2)	framep = ↑frame;
2)	statementp = ↑statement;
***************



**** File 1) EEDIT.HDR[EAL,HE]/2P/27L
1)	envheaderp = ↑envheader;
**** File 2) ALHDR.2[EAL,HE]/3P/22L
2)	pdbp = ↑pdb;
2)	envheaderp = ↑envheader;
***************


**** File 1) EEDIT.HDR[EAL,HE]/2P/31L
1)	linerecp = ↑linerec;
1)	cursorpp = ↑cursorp;	{Ron's style, not mine}
1)	(* This one is used whenever a pointer is needed for which the 	*)
1)	(* definition is missing from this file; naturally, all 	*)
1)	(* pointers use the same space 					*)
1)	dump = ↑integer;
1)	(* datatype definitions *)
**** File 2) ALHDR.2[EAL,HE]/3P/27L
2)	messagep = ↑message;
2)	linerecp = ↑linerec;
2)	cursorpp = ↑cursorp;	{Ron's style, not mine}
2)	(* the following get used for misc record types - i.e. we fake out Pascal's type
2)		checking mechanism *)
2)	     s4p = ↑s4;
2)	     s4 = record next: s4p; filler: array [1..3] of integer; end;
2)	     s8p = ↑s8;
2)	     s8 = record next: s8p; filler: array [1..7] of integer; end;
2)	     s11p = ↑s11;
2)	     s11 = record next: s11p; filler: array [1..10] of integer; end;
2)	(* datatype definitions *)
***************


**** File 1) EEDIT.HDR[EAL,HE]/2P/49L
1)	cstring = packed array [1..10] of ascii;
**** File 2) ALHDR.2[EAL,HE]/4P/10L
2)	u = (used,free);
2)	vector = record case u of
2)		   used: (refcnt: integer; val: array [1..3] of real);
2)		   free: (next: vectorp);
2)		 end;
2)	trans = record case u of
2)		   used: (refcnt: integer; val: array [1..3,1..4] of real);
2)		   free: (next: transp);
2)		end;
2)	cstring = packed array [1..10] of ascii;
***************



**** File 1) EEDIT.HDR[EAL,HE]/2P/61L
1)	(* statement definitions *)
**** File 2) ALHDR.2[EAL,HE]/4P/33L
2)	event = record
2)		  next: eventp;		(* all events are on one big list *)
2)		  count: integer;
2)		  waitlist: pdbp;
2)		end;
2)	frame = record
2)		  vari: varidefp;	(* back pointer to variable name & info *)
2)		  calcs: nodep;		(* affixment info *)
2)		  case ftype: boolean of	(* frame = true, device = false *)
2)	  true:	    (valid: integer; val, fdepr: transp; dcntr: integer; dev: framep);
2)	  false:    (mech: integer; case sdev: boolean of
2)			true: (sdest: real); false: (tdest,appr,depr: transp));
2)			(* sdev = true for scalar devices, false for frames *)
2)		end;
2)	(* statement definitions *)
***************


**** File 1) EEDIT.HDR[EAL,HE]/2P/192L
1)		vectype:   (v: dump);
1)		transtype: (t: dump);
1)		strngtype: (length: integer; str: strngp) ); (* also used by commentnodes *)
**** File 2) ALHDR.2[EAL,HE]/7P/46L
2)		vectype:   (v: vectorp);
2)		transtype: (t: transp);
2)		strngtype: (length: integer; str: strngp) ); (* also used by commentnodes *)
***************



**** File 1) EEDIT.HDR[EAL,HE]/2P/198L
1)	    errornode:	(eexpr: nodep);
1)	    forvalnode:	(fvar: enventryp; fstep: scalar);
1)	    destnode:	(loc: nodep; code: statementp);
1)	    viaptnode:	(vlist: boolean; via,duration,velocity: nodep; vcode: statementp);
1)	    cmonnode:	(cmon: statementp; errhandlerp: boolean);
1)	    procdefnode:(ptype: datatypes; level: 0..255;
1)			    pname, paramlist: varidefp; body: statementp);
1)		end;
**** File 2) ALHDR.2[EAL,HE]/7P/52L
2)	    forvalnode:	(fvar: enventryp; fstep: scalar);
2)	    arrivalnode:(evar: varidefp);
2)	    deprnode,
2)	    apprnode,
2)	    destnode:	(loc: nodep; code: statementp);
2)	    viaptnode:	(vlist: boolean; via,duration,velocity: nodep; vcode: statementp);
2)	    durnode:	(durrel: reltypes; durval: nodep);
2)	    sfacnode,
2)	    wobblenode,
2)	    swtnode:	(clval: nodep);
2)	    nullingnode,
2)	    wristnode,
2)	    cwnode:	(notp: boolean); (* true = nonulling/don't zero wrist/counter_clockwise *)
2)	    ffnode:	(ff: nodep; csys, pdef: boolean); (* true = world, false = hand *)
2)	    forcenode:	(ftype: forcetypes; frel: reltypes; fval, fvec, fframe: nodep);
2)	    stiffnode:	(fv, mv, coc: nodep);
2)	    gathernode:	(gbits: integer);
2)	    cmonnode:	(cmon: statementp; errhandlerp: boolean);
2)	    errornode:	(eexpr: nodep);
2)	    calcnode: 	(rigid, frame1: boolean; other: framep; case tvarp: boolean of 
2)			    false: (tval: transp); true: (tvar: enventryp) );
2)	    arraydefnode: (numdims: 1..10; bounds: nodep; combnds: boolean);
2)	    bnddefnode:	(lower, upper: nodep);
2)	    bndvalnode:	(lb, ub, mult: integer);
2)	    waitlistnode: (who: pdbp; when: integer);
2)	    procdefnode:(ptype: datatypes; level: 0..255;
2)			    pname, paramlist: varidefp; body: statementp);
2)	    tlistnode:	(tok: tokenp);
2)	    dimnode:	(time, distance, angle, dforce: integer);
2)		end;
***************


**** File 1) EEDIT.HDR[EAL,HE]/2P/277L
1)	envheader = packed record
**** File 2) ALHDR.2[EAL,HE]/9P/1L
2)	(* process descriptor blocks & environment record definitions *)
2)	queuetypes = (nullqueue,nowrunning,runqueue,inputqueue,eventqueue,sleepqueue,
2)			forcewait,devicewait,joinwait,proccall);
2)	pdb = packed record
2)		nextpdb,next: pdbp;	(* for list of all/active pdb's *)
2)		level: 0..255;		(* lexical level *)
2)		mode: 0..255;		(* expression/statement/sub-statement *)
2)		priority: 0..255;
2)		status: queuetypes;	(* what are we doing *)
2)		env: envheaderp;
2)		spc: statementp;	(* current statement *)
2)		epc: nodep;		(* current expression (if any) *)
2)		sp: nodep;		(* intermediate value stack *)
2)		cm: cmoncbp;		(* if we're a cmon point to our definition *)
2)		mech: framep;		(* current device being used *)
2)		linenum: integer;	(* used by editor/debugger *)
2)		 case procp: boolean of	(* true if we're a procedure *)
2)	true:  (opdb: pdbp;		(* pdb to restore when procedure exits *)
2)		pdef: nodep);		(* procedure definition node *)
2)	false: (evt: eventp;		(* event to signal when process goes away *)
2)		sdef: statementp);	(* first statement where process was defined *)
2)	      end;
2)	envheader = packed record
***************



**** File 1) EEDIT.HDR[EAL,HE]/2P/290L
1)	  vectype:   (v: dump);
1)	  transtype: (t: dump);
1)	  frametype: (f: dump);
1)	  eventtype: (evt: dump);
1)	  strngtype: (length: integer; str: strngp);
**** File 2) ALHDR.2[EAL,HE]/9P/40L
2)	  vectype:   (v: vectorp);
2)	  transtype: (t: transp);
2)	  frametype: (f: framep);
2)	  eventtype: (evt: eventp);
2)	  strngtype: (length: integer; str: strngp);
***************


**** File 1) EEDIT.HDR[EAL,HE]/2P/311L
1)		   pdb: dump;
1)		   evt: dump;
1)		   fbits: integer;			(* bits for force sensing *)
**** File 2) ALHDR.2[EAL,HE]/9P/61L
2)		   pdb: pdbp;
2)		   evt: eventp;
2)		   fbits: integer;			(* bits for force sensing *)
***************


**** File 1) EEDIT.HDR[EAL,HE]/2P/317L
1)	(* print related records: *)
**** File 2) ALHDR.2[EAL,HE]/10P/1L
2)	(* definition of AL-ARM messages *)
2)	msgtypes = (initarmscmd,calibcmd,killarmscmd,wherecmd,
2)		    abortcmd,stopcmd,movehdrcmd,movesegcmd,
2)		    centercmd,operatecmd,movedonecmd,signalcmd,readjtcmd,drivecmd,
2)		    setccmd,forcesigcmd,forceoffcmd,biasoncmd,biasoffcmd,setstiffcmd,
2)		    zerowristcmd,wristcmd,gathercmd,getgathercmd,readadccmd,writedaccmd,
2)		    errorcmd,floatcmd);
2)	errortypes = (noerror,noarmsol,timerr,durerr,toolong,useopr,nosuchdev,featna,
2)		      unkmess,srvdead,adcdead,nozind,exjtfc,paslim,nopower,badpot,devbusy,
2)		      baddev,timout,panicb);
2)	message = record
2)		   cmd: msgtypes;
2)		   ok: boolean;
2)		   case integer of
2)		1:   (dev, bits, n: integer;
2)	(*	     (dev, bits, n, evt: integer;	(* for arm code version *)
2)		      evt: eventp;
2)		      dur: real;
2)		      case integer of
2)			1: (v1,v2,v3: real);
2)			2: (sfac,wobble,pos: real);
2)			3: (val,angle,mag: real);
2)			4: (max,min: real);
2)			5: (error: errortypes));
2)		2:   (fv1,fv2,fv3,mv1,mv2,mv3: real);	(* may never use these... *)
2)		3:   (t: array [1..6] of real);
2)		  end;
2)	interr = record
2)	         case integer of
2)	           0: (i: integer);
2)		   1: (err,foo: errortypes);
2)		 end;
2)	(* print related records: *)
***************



**** File 1) EEDIT.HDR[EAL,HE]/2P/354L
1)	(*  filedepth: integer;
1)	    curpage: integer;
**** File 2) ALHDR.2[EAL,HE]/12P/22L
2)	    filedepth: integer;
2)	    curpage: integer;
***************


**** File 1) EEDIT.HDR[EAL,HE]/2P/363L
1)	    curErrhandler, curCmon: statementp;	*)
1)	    d1: array[1..13] of dump;
1)	    endOfLine, backup, expandmacros, flushcomments, dimCheck: boolean;
1)	(*  semiseen, shownline: boolean;
1)	    eofError: boolean;
1)	    inMove,inCoblock: boolean;	*)
1)	    d2,d3,d4,d5,d6: boolean;
1)	    curtoken: token;
**** File 2) ALHDR.2[EAL,HE]/12P/31L
2)	    curErrhandler, curCmon: statementp;
2)	    endOfLine, backup, expandmacros, flushcomments, dimCheck: boolean;
2)	    semiseen, shownline: boolean;
2)	    eofError: boolean;
2)	    inMove,inCoblock: boolean;
2)	    curtoken: token;
***************


**** File 1) EEDIT.HDR[EAL,HE]/2P/375L
1)	(*  curInt, activeInts, readQueue, allPdbs: dump;
1)	    curEnv, sysEnv: envheaderp;
1)	    clkQueue: nodep;
1)	    allEvents: dump;
1)	    STLevel: integer;		
1)	    etime: integer;		
1)	    curtime: integer; 		
1)	    stime: integer;		
1)	    msg: dump;			
1)	    inputp: integer;		*)
1)	    d10: array[1..14] of integer;
1)	    debugLevel: integer;
**** File 2) ALHDR.2[EAL,HE]/12P/41L
2)	    curInt, activeInts, readQueue, allPdbs: pdbp;
2)	    curEnv, sysEnv: envheaderp;
2)	    clkQueue: nodep;
2)	    allEvents: eventp;
2)	    STLevel: integer;		(* set by GO *)
2)	    etime: integer;		(* used by eval *)
2)	    curtime: integer; 		(* Time of day, in ticks *)
2)	    stime: integer;		(* used for clock queue on 10 *)
2)	    msg: messagep;		(* for AL-ARM interaction *)
2)	    inputp: integer;		(* current offset into inputLine array above *)
2)	    debugLevel: integer;
***************



**** File 1) EEDIT.HDR[EAL,HE]/2P/400L
1)	    debugPdbs: array [0..10] of dump;
1)	    screenheight,dispHeight: integer;
**** File 2) ALHDR.2[EAL,HE]/12P/65L
2)	    debugPdbs: array [0..10] of pdbp;
2)	    screenheight,dispHeight: integer;
***************


**** File 1) EEDIT.HDR[EAL,HE]/2P/408L
1)	    eCurInt: dump;
1)	    dProg: statementp;	
**** File 2) ALHDR.2[EAL,HE]/12P/73L
2)	    eCurInt: pdbp;
2)	    dProg: statementp;	
***************


**** File 1) EEDIT.HDR[EAL,HE]/2P/412L
1)	    backUp: boolean;			
1)	    eSingleThreadMode: boolean;	
**** File 2) ALHDR.2[EAL,HE]/12P/77L
2)	    eBackup: boolean;			
2)	    eSingleThreadMode: boolean;	
***************


**** File 1) EEDIT.HDR[EAL,HE]/2P/418L
1)	    curToken: token;			
1)		(* Various device & variable pointers *)
1)	    speedfactor: enventryp;
1)	    barm: dump;
1)		(* Various constant pointers *)
1)	    xhat,yhat,zhat,nilvect: dump;
1)	    niltrans: dump;
1)	    bpark, ypark, gpark, rpark: dump;		(* arm park positions *)
**** File 2) ALHDR.2[EAL,HE]/12P/83L
2)	    eCurToken: token;			
2)		(* Various device & variable pointers *)
2)	    speedfactor: enventryp;
2)	    barm: framep;
2)		(* Various constant pointers *)
2)	    xhat,yhat,zhat,nilvect: vectorp;
2)	    niltrans: transp;
2)	    bpark, ypark, gpark, rpark: transp;		(* arm park positions *)
***************