<div dir="ltr"><div dir="ltr">On Fri, Jul 12, 2024 at 1:45 PM Aron Insinga <<a href="mailto:aki@insinga.com">aki@insinga.com</a>> wrote:</div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><u></u>

  

    
  
  <div>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:
      <div><blockquote>OWN<br>
            X: BYTE SIGNED,<br>
            Y: BYTE;<br>
      </blockquote>
      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 :-) ).<br>
      <br></div></div></blockquote><div>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:</div><div><br></div><div>Y = .X</div><div><br></div><div>was, in its completely expanded form:</div><div><br></div><div>Y<0,8,0> = .X<0,8,1></div><div><br></div><div>Tying the BYTE and SIGNED attributes to the identifier cleaned up the clutter of all those angle-bracket field references.</div><div><br></div><div>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.<br></div><div><br></div><div>-Paul W.<br></div></div></div>