#include <perms.h>
// Edinburgh IMP77 Compiler - Version 8.4
//
// 1 %recordformatspec STACKFM
// 2 %recordformat BOUNDFM(%c
struct BOUNDFM {
union {
struct {
int LOWER;
int UPPER;
int MULT;
};
};
};
// 3+ %integer LOWER,
// 4+ %integer UPPER,
// 5+ %integer MULT %C
// 6+ )
// 7 %recordformat AFM(%c
struct AFM {
union {
struct {
int DIMENSION;
int TOTALSIZE;
int ZERODISPLACEMENT;
int DV;
int LOCALFRAME;
int BASE;
struct BOUNDFM BOUND[7];
};
};
};
// 8+ %integer DIMENSION,
// 9+ %integer TOTALSIZE,
// 10+ %integer ZERODISPLACEMENT,
// 11+ %integer DV,
// 12+ %integer LOCALFRAME,
// 13+ %integer BASE,
// 14+ %record (BOUNDFM) %array BOUND (1:7) %C
// 15+ )
// 16 %constant %record (AFM) %name ATYPE == 0
const struct AFM *ATYPE = 0;
// 17 %recordformat VARFM(%c
struct VARFM {
union {
struct {
int FLAGS;
unsigned char BASE;
unsigned char PRIM;
unsigned char TYPE;
unsigned char FORM;
union {
struct {
double RVAR;
};
struct {
int DISP;
union {
struct {
int EXTRA;
};
struct {
struct AFM *ADATA;
};
};
};
};
union {
struct {
int FORMAT;
};
struct {
int SCALE;
};
};
int AREA;
};
};
};
// 18+ %integer FLAGS,
// 19+ %byte %integer BASE,
// 20+ %byte %integer PRIM,
// 21+ %byte %integer TYPE,
// 22+ %byte %integer FORM,
// 23+ ( %c
// 24+ %long %real RVAR %C
// 25+ %or %c
// 26+ %integer DISP,
// 27+ ( %c
// 28+ %integer EXTRA %C
// 29+ %or %c
// 30+ %record (AFM) %name ADATA %C
// 31+ ) %c
// 32+ ),
// 33+ ( %c
// 34+ %integer FORMAT %C
// 35+ %or %c
// 36+ %integer SCALE %C
// 37+ ),
// 38+ %integer AREA %C
// 39+ )
// 40 %recordformat OLFM(%c
struct OLFM {
union {
struct {
int OPER;
struct STACKFM *LINK;
};
};
};
// 41+ %integer OPER,
// 42+ %record (STACKFM) %name LINK %C
// 43+ )
// 44 %recordformat XFM(%c
struct XFM {
union {
struct {
int XSIZE;
struct STACKFM *INDEX;
};
};
};
// 45+ %integer XSIZE,
// 46+ %record (STACKFM) %name INDEX %C
// 47+ )
// 48 %recordformat DATAFM(%c
struct DATAFM {
union {
struct {
struct VARFM V;
int VARNO;
struct VARFM *FV;
union {
struct {
int BIAS;
};
struct {
unsigned char REG;
unsigned char LABEL;
};
};
struct STACKFM *PARAMS;
struct STACKFM *RECORD;
union {
struct {
int OPER;
struct STACKFM *LINK;
};
struct {
struct OLFM OPLINK;
};
};
union {
struct {
int XSIZE;
struct STACKFM *INDEX;
};
struct {
struct XFM X;
};
};
};
};
};
// 49+ %record (VARFM) V,
// 50+ %integer VARNO,
// 51+ %record (VARFM) %name FV,
// 52+ ( %c
// 53+ %integer BIAS %C
// 54+ %or %c
// 55+ %byte %integer REG,
// 56+ %byte %integer LABEL %C
// 57+ ),
// 58+ %record (STACKFM) %name PARAMS,
// 59+ %record (STACKFM) %name RECORD,
// 60+ ( %c
// 61+ %integer OPER,
// 62+ %record (STACKFM) %name LINK %C
// 63+ %or %c
// 64+ %record (OLFM) OPLINK %C
// 65+ ),
// 66+ ( %c
// 67+ %integer XSIZE,
// 68+ %record (STACKFM) %name INDEX %C
// 69+ %or %c
// 70+ %record (XFM) X %C
// 71+ ) %c
// 72+ )
// 73 %recordformat MEMBERFM(%c
struct MEMBERFM {
union {
struct {
int CONST;
int ITEMS;
struct STACKFM *A;
struct STACKFM *B;
struct MEMBERFM *LINK;
};
};
};
// 74+ %integer CONST,
// 75+ %integer ITEMS,
// 76+ %record (STACKFM) %name A,
// 77+ %record (STACKFM) %name B,
// 78+ %record (MEMBERFM) %name LINK %C
// 79+ )
// 80 %constant %record (MEMBERFM) %name MEMBERFMTYPE == 0
const struct MEMBERFM *MEMBERFMTYPE = 0;
// 81 %recordformat STACKFM(%c
struct STACKFM {
union {
struct {
struct VARFM V;
};
struct {
struct DATAFM DATA;
};
struct {
int FLAGS;
unsigned char BASE;
unsigned char PRIM;
unsigned char TYPE;
unsigned char FORM;
union {
struct {
double RVAL;
};
struct {
int RHIGH;
int RLOW;
};
struct {
union {
struct {
int DISP;
union {
struct {
int EXTRA;
};
struct {
struct AFM *ADATA;
};
};
};
};
union {
struct {
int FORMAT;
};
struct {
int SCALE;
};
};
int AREA;
int VARNO;
union {
struct {
struct VARFM *FV;
};
struct {
struct MEMBERFM *MEMBERS;
};
};
union {
struct {
int BIAS;
};
struct {
unsigned char REG;
unsigned char LABEL;
};
};
struct STACKFM *PARAMS;
struct STACKFM *RECORD;
union {
struct {
int OPER;
struct STACKFM *LINK;
};
struct {
struct OLFM OPLINK;
};
};
union {
struct {
int XSIZE;
struct STACKFM *INDEX;
};
struct {
struct XFM X;
};
};
};
};
struct STACKFM *USING;
struct STACKFM *STACK;
};
};
};
// 82+ %record (VARFM) V %C
// 83+ %or %c
// 84+ %record (DATAFM) DATA %C
// 85+ %or %c
// 86+ %integer FLAGS,
// 87+ %byte %integer BASE,
// 88+ %byte %integer PRIM,
// 89+ %byte %integer TYPE,
// 90+ %byte %integer FORM,
// 91+ ( %c
// 92+ %long %real RVAL %C
// 93+ %or %c
// 94+ %integer RHIGH,
// 95+ %integer RLOW %C
// 96+ %or %c
// 97+ ( %c
// 98+ %integer DISP,
// 99+ ( %c
// 100+ %integer EXTRA %C
// 101+ %or %c
// 102+ %record (AFM) %name ADATA %C
// 103+ ) %c
// 104+ ),
// 105+ ( %c
// 106+ %integer FORMAT %C
// 107+ %or %c
// 108+ %integer SCALE %C
// 109+ ),
// 110+ %integer AREA,
// 111+ %integer VARNO,
// 112+ ( %c
// 113+ %record (VARFM) %name FV %C
// 114+ %or %c
// 115+ %record (MEMBERFM) %name MEMBERS %C
// 116+ ),
// 117+ ( %c
// 118+ %integer BIAS %C
// 119+ %or %c
// 120+ %byte %integer REG,
// 121+ %byte %integer LABEL %C
// 122+ ),
// 123+ %record (STACKFM) %name PARAMS,
// 124+ %record (STACKFM) %name RECORD,
// 125+ ( %c
// 126+ %integer OPER,
// 127+ %record (STACKFM) %name LINK %C
// 128+ %or %c
// 129+ %record (OLFM) OPLINK %C
// 130+ ),
// 131+ ( %c
// 132+ %integer XSIZE,
// 133+ %record (STACKFM) %name INDEX %C
// 134+ %or %c
// 135+ %record (XFM) X %C
// 136+ ) %c
// 137+ ),
// 138+ %record (STACKFM) %name USING,
// 139+ %record (STACKFM) %name STACK %C
// 140+ )
// 141 %constant %record (STACKFM) %name STACKFMTYPE == 0
const struct STACKFM *STACKFMTYPE = 0;
// 142 %recordformat WITHFM(%c
struct WITHFM {
union {
struct {
int KEY;
struct DATAFM DATA;
struct WITHFM *LINK;
};
};
};
// 143+ %integer KEY,
// 144+ %record (DATAFM) DATA,
// 145+ %record (WITHFM) %name LINK %C
// 146+ )
// 147 %constant %record (WITHFM) %name WITHFMTYPE == 0
const struct WITHFM *WITHFMTYPE = 0;
// 148 %recordformat WORKFM(%c
struct WORKFM {
union {
struct {
int SIZE;
int DISPLACEMENT;
int VALIDITY;
};
};
};
// 149+ %integer SIZE,
// 150+ %integer DISPLACEMENT,
// 151+ %integer VALIDITY %C
// 152+ )
// 153 %endoffile