Layout of 'ptype': ================== 'ptype' requires 16 bits to define a variable, and can be regarded as two bytes: upper one(uptype) := litl<<6!rout<<4!nam<<2!arr lower one(ptype) := prec<<4!type Often (e.g. in 'expop') only the lower part is required, as functions etc. are prefetched and stacked. litl := 1=const,2=external,3=extrinsic(or dynamic), 0=none of these rout := 1 for routine or fn or map, =0 none of these nam := 2 for maps and 'refrefs',=1 for names ,=0 directly addressed arr := 1 for arrays =0 scalars prec is descriptor size code for each precision: := 0 bits, =3 bytes, =5 words, =6 d-wrds, =7,quad wrds type := the variable type :=0 (type general), =1 integer, =2 real, =3 record :=4 (recordformat), =5 string, =6 label/switch. :=7 not set Values for 'flag': ================== 0 Constant < 18 bits 1 Long constant 2 Name 3 128 bit constant 4 Conditional expression 5 Unassigned 6 Unassigned 7 I-R in a stack frame 8 I-R that has been stacked 9 I-R in a register