MANIFEST $(
// Size of a block of heap storage
   heap.block.size =  200

// Structure of a heap mark
   mk.vector = 0; mk.block = 1; mk.ptr = 2; mk.used = 3
   mk.size = 4

// storage management
   StoreBlockSize = 64;   // (words)
   StoreBlockShift = 8;
   StoreBlockMask = 255;
   StoreBlockVSize = 256;

   free.max = 10;

// ocode buffer layout
   oc.next = 0; oc.lastbyte = 1;
   oc.firstbyte = 2*BytesPerWord;
   oc.size = 100;
   oc.bytes = oc.size*BytesPerWord $)

MANIFEST $(
// Selectors
   h1=0; h2=1; h3=2; h4=3; h5=4; h6=5 $)

MANIFEST $(
// AE tree operators
   s.number = 1; s.name = 2; s.string = 3
   s.valof = 6
   s.lv = 7
   s.vecap = 9; s.byteap = 28
   s.cond = 37
   s.comma = 38
   s.table = 39
   s.and = 40
   s.valdef = 41; s.vecdef = 42
   s.commalist = 43
   s.fndef = 44; s.rtdef = 45
   s.opab = 46
   s.ass = 50
   s.resultis = 53
   s.colon = 54
   s.test = 55
   s.for = 56
   s.if = 57; s.unless = 58
   s.while = 59; s.until = 60
   s.repeat = 61; s.repeatwhile = 62; s.repeatuntil = 63
   s.loop = 65; s.break = 66; s.endcase = 69
   s.case = 71; s.default = 72
   s.semicolonlist = 73
   s.let = 74
   s.manifest = 75; s.static = 79; s.external = 80
   s.of = 81
   s.slct = 82
   s.bad = 83
   s.semicolon = 97

// AE tree and OCODE operators

   s.true = 4; s.false = 5;
   s.rv = 8;
   s.fnap = 10;
   s.mult = 11; s.div = 12; s.rem = 13;
   s.plus = 14; s.minus = 15;
   s.query = 16;
   s.neg = 17; s.abs = 19;
   s.eq = 20; s.ne = 21;
   s.ls = 22; s.gr = 23; s.le = 24; s.ge = 25;
   s.lls = 122; s.lgr = 123; s.lle = 124; s.lge = 125;
   s.not = 30;
   s.lshift = 31; s.rshift = 32;
   s.logand = 33; s.logor = 34; s.eqv = 35; s.neqv = 36;
   s.needs = 48; s.section = 49;
   s.rtap = 51;
   s.goto = 52;
   s.return = 67; s.finish = 68;
   s.switchon = 70;
   s.global = 76;
   s.nil = 99;

   s.fadd = 128;
   s.fconst = 136;
   s.fix = 137; s.float = 138;
   s.fmult = 139; s.fdiv = 140;
   s.fplus = 142; s.fminus = 143;
   s.fneg = 145; s.fabs = 147;
   s.feq = 148; s.fne = 149;
   s.fls = 150; s.fgr = 151; s.fle = 152; s.fge = 153;

// OCODE operators

   s.lp = 40; s.lg = 41; s.ln = 42; s.lstr = 43; s.ll = 44;
   s.llp = 45; s.llg = 46; s.lll = 47;
   s.local = 77; s.label = 78;
   s.sp = 80; s.sg = 81; s.sl = 82;
   s.stind = 83;
   s.jump = 85; s.jt = 86; s.jf = 87;
   s.endfor = 88; s.endblock = 89;
   s.lab = 90;
   s.stack = 91; s.store = 92; s.rstack = 93;
   s.entry = 94;
   s.save = 95;
   s.fnrn = 96; s.rtrn = 97;
   s.res = 98;
   s.datalab = 100; s.iteml = 101; s.itemn = 102;
   s.endproc = 103;
   s.dstr = 104; s.dtab = 105;
   s.stnil = 84;
   s.slctap = 106; s.slctst = 107;
   s.car   = 108; s.cdr   = 109; s.vcar   = 110; s.vcdr   = 111;
   s.stcar = 112; s.stcdr = 113; s.stvcar = 114; s.stvcdr = 115;
   s.linecount = 116;
   s.mod = 117; s.modslct = 119;
   s.getbyte = 120; s.putbyte = 121;
   s.debug = 118;
   s.refext = 38; s.defext = 39;
   s.argno = 126

// Basic symbols (not used in TRN):

   s.be = 89
   s.end = 90
   s.lsect = 91; s.rsect = 92
   s.get = 93
   s.into = 98
   s.to = 99
   s.by = 100
   s.do = 101
   s.or = 102
   s.vec = 103
   s.lparen = 105; s.rparen = 106
   s.tagname = 107 $)

MANIFEST $(
   rootg = ug;		// 150
   synrg = rootg+80	// 230
   trnrg = synrg+10	// 240
   syntrng = trnrg+20	// 260

   syng = syntrng+40	// 300
   trng = syng+30	// 330

   cgv = trng+40	// 370
$)

// Globals shared between all phases of the compiler

GLOBAL $(
   rc: rootg+0
   headers: rootg+1
   verStream: rootg+2; ocodeStream: rootg+3;
   listStream: rootg+5; moduleStream: rootg+6;
   err.p: rootg+8; err.l: rootg+9
   ocodeFile: rootg+10
   fromFile: rootg+12
   tagChain: rootg+13
   programSize: rootg+14

   Complain: rootg+15; Abandon: rootg+16

   streams: rootg+17
   Open: rootg+18; Close: rootg+19

   workVectors: rootg+20
   heap.block: rootg+21; heapptr: rootg+22
   space.used: rootg+23
   MarkHeap: rootg+24; ResetHeap: rootg+25
   GetVector: rootg+26; GetWithMark: rootg+27;
   FreeVector: rootg+28
   GetBlk: rootg+29; FillBlk: rootg+30;
   FreeBlk: rootg+31;
   LookUpTag: rootg+32;

   primal.mark: rootg+33
   ocode.mark: rootg+34

   bcpl.args: rootg+35
   bcpl.syn: rootg+36
   bcpl.trn: rootg+37
   bcpl.ptree: rootg+38
   bcpl.cg: rootg+39

   freeLists: rootg+40;

// Compiler and CG options

   stampFiles: rootg+45;
   restrictedLanguage: rootg+46
   saveSpaceSize: rootg+47
   equateCases: rootg+48
   backwardVecs: rootg+49;

// OCODE retention data
   retainOcode: rootg+51;
   ocodeBufs: rootg+52; ocodeBuf: rootg+54;

// CG options

   cg: rootg+55
   procNames: rootg+56
   callCounting: rootg+57
   counting: rootg+58
   stkchking: rootg+59
   rbInCalls: rootg+60;
   compactCode: rootg+61;
   AOFout: rootg+62;
   CGOptMode: rootg+63;
   CGDebugMode: rootg+64;
   naming: rootg+65 $)

GLOBAL $(
   Out1: trnrg+15 $)
