typedef int Boolean;

typedef unsigned char univ;
typedef unsigned short int Uint16;
typedef unsigned char Uint8;
typedef int Sint32;
typedef void *hdlno;
typedef Sint32 fontno;
typedef short int Sint16;

struct save_restore_link {
  struct hdl *next;  /* next modified handle */
  struct hdl *prev;  /* previous modified handle */
};

/*
** The first five entries entries must match "bakhdl" below.
*/
typedef struct hdl {
    univ *raw;		/* composite object value */
    Uint16 dim;		/* # items in composite object (formerly "cnt") */
    char cat;		/* object category (a.k.a. type) + non-gc status bits */
    char acc_lev;	/* object attributes, save level modified or created */
    struct save_restore_link svlink;
    Uint8 coded_depth;	/*   0 ==> at some depth > 253;
			     1 ==> not on stack;
			     2 ==> at dictstak[0];
			     3 ==> at dictstak[1];
			   255 ==> at dictstack[253]
			   (see macros below)
			*/
    char stat_rootlev;	/* status bits + object creation savelevel */
    Uint8 handlev;      /* VM level of this handle; used to maintain freelist */
    Uint8 fastlev;	/* coded save level for faster OBsave() logic:
			 *   0 ==> (acc_lev == 0x10)  PreScript,    ROM
			 *   1 ==> (acc_lev == 0x00)  savelevel  0, RAM
			 *   2 ==> (acc_lev == 0x01)  savelevel  1
			 *  16 ==> (acc_lev == 0x0F)  savelevel 15 (last)
			 *  17 ==>		      global level 1
			 */
    union {
      /*
      ** In a string, array, or packedarray subinterval handle,
      ** "superset" points to the parent string handle.
      **/
      struct hdl *superset;  /* see above */
      struct hdl *gclink;    /* next composite to be scanned */
      struct hdl *nextfree;  /* next handle on freelist */
    } u;
} HDL;

#define INI_HDLCNT	742

struct hdl localhand[INI_HDLCNT];

#define QUADINIT(tp,at) \
    ((((unsigned long)(at)<<8)&0x0000ff00) | \
     ((unsigned long)(tp)&0x000000ff))

#define 	COMPOSGROUP		0x10
#define		CT_PAKARRY	0x0D
#define		PAKARRYTYPE		(COMPOSGROUP| CT_PAKARRY)

#define 	EXECATTR	01
#define 	READONLY	04

#define LCL_i(hnum) ((unsigned long)&localhand[hnum])
#define JOBXHDL 117

struct compositeOB {
	unsigned long   type_attr_pos;    /* force .ALIGN 4 */
	unsigned long   hdl;
};

static const struct compositeOB
  do_jobx_i = {QUADINIT (PAKARRYTYPE, EXECATTR | READONLY), LCL_i(JOBXHDL)};

#define 	OPERGROUP		0x20
#define		ABORTTYPE		(OPERGROUP | 0x0C)
#define		MACHCALLTYPE	(OPERGROUP | 0x0D)

#define STOP_CALL	1	/* --stop-- operator */


struct filerep {
    Sint16 des;
    Sint16 assoc;
} ;

struct stoprep {
    Uint16 userjob;	/* True if in user job at "stopped" operator */
    Uint16 saverr;	/* If true, any error is saved for machcall return */
} ;

struct dhdr1rep {
    Uint16 entmax;	/* Maximum entry count    */
    Uint16 entcnt;	/* Current entry count */
} ;

struct dhdr2rep {
    Uint16 sorted;	/* Total sorted entries   */
    Uint16 sortable;	/* Total sortable entries */
} ;

typedef struct ob {
    Uint8 type;
    Uint8 attr;
    Uint16 pos;
    union {
	Sint32        boolrepr;
	Sint32        intrepr;
	float         realrepr;
	hdlno         hdl;
	struct stoprep stoprepr;
	struct filerep filrepr;
	struct tok   *namrepr;
	const struct par *oprrepr;
	fontno        fontrepr;
	Sint16        savrepr;
	void          (*machcallhandler)(int, int);
	void          (*aborthandler)(int);
	void         *voidprepr;
	struct dhdr1rep dhdr1repr;
	struct dhdr2rep dhdr2repr;
    } un;
} OB;

/* get type field from object */
#define OBtype(obp) ((obp)->type)

/* get hdl entry from object */
#define OBhdl(obp) ((obp)->un.hdl)

/* get pos field from object */
#define OBpos(obp) ((obp)->pos)

OB *execptr;

/*
* Clean the execution stack back to the outermost user job level
* or until the stack is completely empty.
*/
int clean_exec_stack (Boolean early_end)
{
    OB  *pobr;
    hdlno jobhdl;

    jobhdl  = OBhdl((OB *)&do_jobx_i);

    pobr = execptr - 1;

    if (OBhdl(pobr) == jobhdl)
	{
	    return 1;

	}

    return (0);

}

int main()
{
}