On Fri, Jul 12, 2024 at 1:45 PM Aron Insinga <aki(a)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.