[COFF] [TUHS] Re: mental architecture models, Anyone ever heard of teaching a case study of Initial Unix?

Paul Winalski paul.winalski at gmail.com
Wed Jul 10 03:18:25 AEST 2024


On Mon, Jul 8, 2024 at 9:04 PM Aron Insinga <aki at insinga.com> wrote:

> 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:
>
> "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.
>   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.
>   On balance, the expression characteristic of BLISS was not terribly
> important."
>
> 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.

> 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....)
>
> 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:

 expression-1<offset-expr, size-expr, padding-expr>

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.

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.

-Paul W.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.tuhs.org/pipermail/coff/attachments/20240709/bba9e34c/attachment-0001.htm>


More information about the COFF mailing list