On Fri, Jul 12, 2024 at 1:45 PM Aron Insinga <aki@insinga.com> wrote:
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.