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