<div dir="ltr"><div dir="ltr">On Mon, Jul 8, 2024 at 9:04 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>I found it sad, but the newest versions of the BLISS compilers do
    not support using it as an expression language.  The section
    bridging pp 978-979 (as published) of Brender's history is:<br>
    <blockquote>"The expression language characteristic was often highly
      touted in the early years of BLISS. While there
      is a certain conceptual elegance that results, in practice this
      characteristic is not exploited much.<br>
        The most common applications use the if-then-else expression,
      for example, in something
      like the maximum calculation illustrated in Figure 5. Very
      occasionally there is some analogous use
      of a case expression. Examples using loops (taking advantage of
      the value of leave), however,
      tend not to work well on human factors grounds: the value computed
      tends to be visually lost in the
      surrounding control constructs and too far removed from where it
      will be used; an explicit assignment
      to a temporary variable often seems to work better.<br>
        On balance, the expression characteristic of BLISS was not
      terribly important."<br></blockquote></div></blockquote><div>Ron Brender is correct.  All of the software development groups at DEC had programming style guidelines and most of those frowned on the use of BLISS as an expression language.  The issue is maintainability of the code.  As Brender says, a human factors issue.  <br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><blockquote>
    </blockquote>
    Another thing that I always liked (but is still there) is the ease
    of accessing bit fields with V<FOO_OFFSET, FOO_SIZE> which was
    descended from BLISS-10's use of the PDP-10 byte pointers.  [Add a
    dot before V to get an rvalue.]  (Well, there was this logic
    simulator which really packed data into bit fields of blocks
    representing gates, events, etc....)<br>
    <br></div></blockquote><div>Indeed.  BLISS is the best bit-banging language around.  The field reference construct is a lot more straightforward than the and/or bit masks in most languages.  In full the construct is:</div><div><br></div><div> expression-1<offset-expr, size-expr, padding-expr></div><div><br></div><div>expression-1 is a BLISS value from which the bits are to be extracted.  offset-expr is start of the field to be extracted (bit 0 being the low bit of the value) and size-expr is the number of bits to be extracted.  The value of the whole mess is a BLISS value with the extracted field in the low-order bits.  padding-expr controls the value used to pad the high order bits:  if even, zero-padded, if odd, one-padded.</div><div><br></div><div>I always wondered how this would work on the IBM S/360/370 architecture.  It is big-endian and bit 0 of a machine word is the most significant bit, not the least significant as in DEC's architectures.</div><div><br></div><div>-Paul W.<br></div></div></div>