When verifying that, I found something I did not remember, that in
BLISS-16 and -32 (and I would guess also -64), but not -36 (the
word-addressed PDP-10), one could declare 8-bit signed and
unsigned data:
OWN
X: BYTE SIGNED,
Y: BYTE;
So the concepts of 'type' in BLISS, at least regarding data size
and representation, can get a little complicated (not to be
confused with COMPLEX :-) ).
Yes, BLISS-16, BLISS-32, and BLISS-64 have BYTE (and WORD also for BLISS-32/64 IIRC) as a way to allocate data items smaller than a BLISS value. Such a declaration also attaches an implicit default field reference to the identifier. In the case of BYTE SIGNED it is <0, 8, 1> and for BYTE <0,8,0>. So the expression:
Y = .X
was, in its completely expanded form:
Y<0,8,0> = .X<0,8,1>
Tying the BYTE and SIGNED attributes to the identifier cleaned up the clutter of all those angle-bracket field references.
Similarly BLISS has VECTOR (one-dimensional, 0-based array), BLOCK (equivalent of C's struct), and BLOCKVECTOR (array of structures) data declaration attributes that carry implicit field and addressing semantics. Again, a convenience for the programmer that alleviates clutter and makes the program more readable.
-Paul W.