The Unix Heritage Society mailing list
 help / color / mirror / Atom feed
* [TUHS] Re: mental architecture models, Anyone ever heard of teaching a case study of Initial Unix?
@ 2024-07-07 13:57 Noel Chiappa
  2024-07-07 16:43 ` John Levine
  0 siblings, 1 reply; 27+ messages in thread
From: Noel Chiappa @ 2024-07-07 13:57 UTC (permalink / raw)
  To: tuhs; +Cc: jnc

    > From: Steve Jenkin

    > C wasn't the first standardised coding language, FORTRAN & COBOL at
    > least were before it

There were a ton; Algol-60 is the most imppotant one I can think of.

(I was thinking that Algol-60 was probably an important precursor to BCPL,
which was the predecessor to C, but Richards' first BCPL paper:

  https://dl.acm.org/doi/10.1145/1476793.1476880

"BCPL: A tool for compiler writing and system programming" doesn't call it
out, only CPL. However, CPL does admit its dues to Algol-60: "CPL is to a
large extent based on ALGOL 60".)

	Noel

^ permalink raw reply	[flat|nested] 27+ messages in thread

* [TUHS] Re: mental architecture models, Anyone ever heard of teaching a case study of Initial Unix?
  2024-07-07 13:57 [TUHS] Re: mental architecture models, Anyone ever heard of teaching a case study of Initial Unix? Noel Chiappa
@ 2024-07-07 16:43 ` John Levine
  0 siblings, 0 replies; 27+ messages in thread
From: John Levine @ 2024-07-07 16:43 UTC (permalink / raw)
  To: tuhs; +Cc: jnc

It appears that Noel Chiappa <jnc@mercury.lcs.mit.edu> said:
>    > From: Steve Jenkin
>
>    > C wasn't the first standardised coding language, FORTRAN & COBOL at
>    > least were before it
>
>There were a ton; Algol-60 is the most imppotant one I can think of.

Only sort of. It didn't have a standard concrete representation, and
it didn't have any I/O, so it was fine for portable elegant numerical
solutions to partial differential equations, but hopeless for portably
reading in a list of numbers and printing the sum. In 1964 they
defined what were supposed to be standard I/O routines but it was too
little too late.

Wirth's Algol W and Pascal were supposed to fix that but Pascal never
was all that portable in practice.

R's,
John

^ permalink raw reply	[flat|nested] 27+ messages in thread

* [TUHS] Re: mental architecture models, Anyone ever heard of teaching a case study of Initial Unix?
@ 2024-07-10  2:20 Douglas McIlroy
  0 siblings, 0 replies; 27+ messages in thread
From: Douglas McIlroy @ 2024-07-10  2:20 UTC (permalink / raw)
  To: TUHS main list

[-- Attachment #1: Type: text/plain, Size: 648 bytes --]

> In order to port VMS to new architectures, DEC/HP/VSI ...
> turned the VAX MACRO assembly language (in which
> some of the VMS operating system was written) into a
> portable implementation language by 'compiling' the
> high-level CISC VAX instructions (and addressing modes)
> into sequences of RISC instructions.

Clem Pease did the same thing to port TMG from IBM 7000-series machines to
the GE  600 series for Multics, circa 1967. Although both architectures had
36-bit words, it was a challenge to adequately emulate IBM's accumulator,
which supported 38-bit sign-magnitude addition, 37-bit twos-complement and
36-bit ones-complement.

Doug

[-- Attachment #2: Type: text/html, Size: 978 bytes --]

^ permalink raw reply	[flat|nested] 27+ messages in thread

* [TUHS] Re: mental architecture models, Anyone ever heard of teaching a case study of Initial Unix?
  2024-07-09  2:40                       ` Dave Horsfall
  2024-07-09  2:43                         ` Warner Losh
  2024-07-09  4:23                         ` Adam Thornton
@ 2024-07-09  5:06                         ` Aron Insinga
  2 siblings, 0 replies; 27+ messages in thread
From: Aron Insinga @ 2024-07-09  5:06 UTC (permalink / raw)
  To: tuhs

Sorry if I'm mistaken, but I thought that we were talking about system 
implementation languages.  The languages discussed have their roots back 
in the early days of using an HLL instead of assembly language for this.

One could certainly write the kernel in a subset [or a superset of a 
subset] of the language that is used for everything else and I believe 
it has been done before.  (Is ESPOL a superset of Burroughs ALGOL?)  One 
could write the kernel in C and everything else in a *very* different 
language.

I only mentioned single-precision floating point as an example of 
BLISS-10 being operator-typed as opposed to data-typed, and then added 
that a little floating point is useful for writing run-time libraries.  
(For another example, a debugger might want to use floating point to 
allow examining or depositing such a value.)  I'd consider PDP-11 UNIX 
to be an operating system, and it included some libraries and a 
debugger.  I can see that others might consider PDP-11 UNIX to be a 
'distribution'.  Sorry if I wandered too far afield.

- Aron


On 7/8/24 22:40, Dave Horsfall wrote:
> On Mon, 8 Jul 2024, Adam Thornton wrote:
>
>> Indeed, S/390 Linux ran just fine on machines without IEEE floating
>> point.  Which meant that for years I had to jam `use integer` at the top
>> of any Perl I ran, because otherwise any Perl arithmetic at all would go
>> through the software float routines, which was very painful on little
>> machines, such as a P/390.
> When it comes down to it, why would a kernel need floating point?  Or are
> you talking about the distribution instead of the OS?
>
> -- Dave


^ permalink raw reply	[flat|nested] 27+ messages in thread

* [TUHS] Re: mental architecture models, Anyone ever heard of teaching a case study of Initial Unix?
  2024-07-09  2:40                       ` Dave Horsfall
  2024-07-09  2:43                         ` Warner Losh
@ 2024-07-09  4:23                         ` Adam Thornton
  2024-07-09  5:06                         ` Aron Insinga
  2 siblings, 0 replies; 27+ messages in thread
From: Adam Thornton @ 2024-07-09  4:23 UTC (permalink / raw)
  To: Dave Horsfall, The Eunuchs Hysterical Society

[-- Attachment #1: Type: text/plain, Size: 955 bytes --]

Generally it shouldn't, and didn't.  But Perl assumed you had hardware
floating point, because most architectures did--including S/390--but Perl
on Linux further assumed IEEE 754 floating point, which was implemented in
software on the S/390 (the hardware FP was IBM FP), and, on small and pokey
machines, was really quite slow.

Adam

On Mon, Jul 8, 2024 at 7:41 PM Dave Horsfall <dave@horsfall.org> wrote:

> On Mon, 8 Jul 2024, Adam Thornton wrote:
>
> > Indeed, S/390 Linux ran just fine on machines without IEEE floating
> > point.  Which meant that for years I had to jam `use integer` at the top
> > of any Perl I ran, because otherwise any Perl arithmetic at all would go
> > through the software float routines, which was very painful on little
> > machines, such as a P/390.
>
> When it comes down to it, why would a kernel need floating point?  Or are
> you talking about the distribution instead of the OS?
>
> -- Dave

[-- Attachment #2: Type: text/html, Size: 1333 bytes --]

^ permalink raw reply	[flat|nested] 27+ messages in thread

* [TUHS] Re: mental architecture models, Anyone ever heard of teaching a case study of Initial Unix?
  2024-07-09  2:40                       ` Dave Horsfall
@ 2024-07-09  2:43                         ` Warner Losh
  2024-07-09  4:23                         ` Adam Thornton
  2024-07-09  5:06                         ` Aron Insinga
  2 siblings, 0 replies; 27+ messages in thread
From: Warner Losh @ 2024-07-09  2:43 UTC (permalink / raw)
  To: Dave Horsfall; +Cc: The Eunuchs Hysterical Society

[-- Attachment #1: Type: text/plain, Size: 954 bytes --]

On Mon, Jul 8, 2024 at 8:41 PM Dave Horsfall <dave@horsfall.org> wrote:

> On Mon, 8 Jul 2024, Adam Thornton wrote:
>
> > Indeed, S/390 Linux ran just fine on machines without IEEE floating
> > point.  Which meant that for years I had to jam `use integer` at the top
> > of any Perl I ran, because otherwise any Perl arithmetic at all would go
> > through the software float routines, which was very painful on little
> > machines, such as a P/390.
>
> When it comes down to it, why would a kernel need floating point?  Or are
> you talking about the distribution instead of the OS?
>

Not floating point, per se, but there's things like AESNI that use special
registers
that are akin to floating point (I can't recall if they are shared with the
FP registers
or not off the top of my head). For doing crypto fast, these are often
used. The same
the same facilities that FP uses to save/restore them on context switches.

Warner

[-- Attachment #2: Type: text/html, Size: 1376 bytes --]

^ permalink raw reply	[flat|nested] 27+ messages in thread

* [TUHS] Re: mental architecture models, Anyone ever heard of teaching a case study of Initial Unix?
  2024-07-09  0:08                     ` Adam Thornton
@ 2024-07-09  2:40                       ` Dave Horsfall
  2024-07-09  2:43                         ` Warner Losh
                                           ` (2 more replies)
  0 siblings, 3 replies; 27+ messages in thread
From: Dave Horsfall @ 2024-07-09  2:40 UTC (permalink / raw)
  To: The Eunuchs Hysterical Society

[-- Attachment #1: Type: text/plain, Size: 517 bytes --]

On Mon, 8 Jul 2024, Adam Thornton wrote:

> Indeed, S/390 Linux ran just fine on machines without IEEE floating 
> point.  Which meant that for years I had to jam `use integer` at the top 
> of any Perl I ran, because otherwise any Perl arithmetic at all would go 
> through the software float routines, which was very painful on little 
> machines, such as a P/390.

When it comes down to it, why would a kernel need floating point?  Or are 
you talking about the distribution instead of the OS?

-- Dave

^ permalink raw reply	[flat|nested] 27+ messages in thread

* [TUHS] Re: mental architecture models, Anyone ever heard of teaching a case study of Initial Unix?
  2024-07-08 22:14                   ` Paul Winalski
@ 2024-07-09  1:04                     ` Aron Insinga
  0 siblings, 0 replies; 27+ messages in thread
From: Aron Insinga @ 2024-07-09  1:04 UTC (permalink / raw)
  To: Computer Old Farts Followers; +Cc: tuhs

[-- Attachment #1: Type: text/plain, Size: 2797 bytes --]

Re: Floating point is unnecessary for operating systems: Yes, that's a 
big relief for early, small computers without hardware floating point!  
But floating point is important for runtime libraries which need to 
implement math functions or reading & writing floating point numbers.  
IMHO that's work for a system implementation language too, YMMV.

Re: BLISS:
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."

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

Yes, there is now a BLISS-64 compiler and a MACRO-64 compiler which 
generate x86_64 code.

- Aron

Ref: https://www.cs.tufts.edu/~nr/cs257/archive/ronald-brender/bliss.pdf


On 7/8/24 18:14, Paul Winalski wrote:
> ...
> BLISS is also a true, full-blown expression language. Statement 
> constructs such as if/then/else have a value and can be used in 
> expressions.  In C terminology, everything in BLISS is a lvalue.  A 
> semicolon terminates an expression and throws its value away.
> ...
> DEC used four dialects of BLISS as their primary software development 
> language:  BLISS-16, BLISS-32, BLISS-36, and BLISS-64 the numbers 
> indicating the BLISS word size in bits.  BLISS-16 targeted the PDP-11 
> and BLISS-36 the PDP-10.  DEC did implementations of BLISS-32 for VAX, 
> MIPS, and x86.  BLISS-64 was targeted to both Alpha and Itanium. VSI 
> may have a version of BLISS-64 that generates x86-64 code.
>
> -Paul W.

[-- Attachment #2: Type: text/html, Size: 3894 bytes --]

^ permalink raw reply	[flat|nested] 27+ messages in thread

* [TUHS] Re: mental architecture models, Anyone ever heard of teaching a case study of Initial Unix?
  2024-07-08 22:17                   ` Rik Farrow
@ 2024-07-09  0:08                     ` Adam Thornton
  2024-07-09  2:40                       ` Dave Horsfall
  0 siblings, 1 reply; 27+ messages in thread
From: Adam Thornton @ 2024-07-09  0:08 UTC (permalink / raw)
  To: The Eunuchs Hysterical Society

[-- Attachment #1: Type: text/plain, Size: 860 bytes --]

Indeed, S/390 Linux ran just fine on machines without IEEE floating point.
Which meant that for years I had to jam `use integer` at the top of any
Perl I ran, because otherwise any Perl arithmetic at all would go through
the software float routines, which was very painful on little machines,
such as a P/390.

Adam

On Mon, Jul 8, 2024 at 3:37 PM Rik Farrow <rik@rikfarrow.com> wrote:

> When I was tech editing "Operating Systems Concepts", tenth edition,
> around seven years ago, I downloaded the Linux source and searched all .c
> and .h files for float and double. There aren't any. Linux does not require
> floating point support, and that's likely true of other operating systems,
> where performance is key. It also means that Linux can run on RISC
> V without floating point support (I know the basic CPU doesn't include it).
>
>

[-- Attachment #2: Type: text/html, Size: 1224 bytes --]

^ permalink raw reply	[flat|nested] 27+ messages in thread

* [TUHS] Re: mental architecture models, Anyone ever heard of teaching a case study of Initial Unix?
  2024-07-08 21:39                 ` Aron Insinga
  2024-07-08 22:14                   ` Paul Winalski
@ 2024-07-08 22:17                   ` Rik Farrow
  2024-07-09  0:08                     ` Adam Thornton
  1 sibling, 1 reply; 27+ messages in thread
From: Rik Farrow @ 2024-07-08 22:17 UTC (permalink / raw)
  To: Aron Insinga; +Cc: tuhs

[-- Attachment #1: Type: text/plain, Size: 3506 bytes --]

When I was tech editing "Operating Systems Concepts", tenth edition, around
seven years ago, I downloaded the Linux source and searched all .c and .h
files for float and double. There aren't any. Linux does not require
floating point support, and that's likely true of other operating systems,
where performance is key. It also means that Linux can run on RISC
V without floating point support (I know the basic CPU doesn't include it).

As for microcode in Intel chips, translation of CISC instructions into its
internally used RISC is done as lookups into a table that takes up a good
portion of the chip die.

Rik


On Mon, Jul 8, 2024 at 2:40 PM Aron Insinga <aki@insinga.com> wrote:

> See https://www.cs.tufts.edu/~nr/cs257/archive/ronald-brender/bliss.pdf
>
> C allowed writing Unix with a limited amount of assembly code, but CMU's
> original BLISS-10 was designed to write an operating system with *no*
> outside assembly code.  Features like the 'MACHOP' (machine operation)
> builtin function made use of  the orthogonality of the PDP-10
> instruction format to execute machine-specific instructions in-line.
> (cf. the 'asm' extensions in some implementations of C.)  The PDP-10's
> 36-bit word allowed single-precision floating point numbers to fit in
> machine words, so it had infix operators for both integer and
> single-precision floating point operations (which I presume were
> adequate for an operating system).
>
> When DEC chose an implementation language, they knew about C but it had
> not yet escaped from Bell Labs.  PL/I was considered, but there were
> questions of whether or not it would be suitable for a minicomputer.  On
> the other hand, by choosing BLISS, DEC could start with the BLISS-11
> cross compiler running on the PDP-10, which is described in
> https://en.wikipedia.org/wiki/The_Design_of_an_Optimizing_Compiler
> BLISS-11
> <https://en.wikipedia.org/wiki/The_Design_of_an_Optimizing_CompilerBLISS-11>
> and DEC's Common BLISS had changes necessitated by different
> word lengths and architectures, including different routine linkages
> such as INTERRUPT, access to machine-specific operations such as INSQTI,
> and multiple-precision floating point operations using builtin functions
> which used the addresses of data instead of the values.
>
> In order to port VMS to new architectures, DEC/HP/VSI retargeted and
> ported the BLISS compilers to new architectures.
>
> What I find amazing is that they also turned the VAX MACRO assembly
> language (in which some of the VMS operating system was written) into a
> portable implementation language by 'compiling' the high-level CISC VAX
> instructions (and addressing modes) into sequences of RISC
> instructions.  I believe that this is similar to how modern CPU chips
> dynamically translate x86_64 instructions (or whatever) to an internal
> RISC format.
>
> - Aron
>
> (Disclaimer: I worked at DEC for a long time and VSI for a short time,
> but I wasn't responsible for the above work.)
>
>
> On 7/6/24 17:32, Charles H Sauer (he/him) wrote:
> > On 7/6/2024 3:56 PM, John R Levine wrote:
> >> On Sat, 6 Jul 2024, Clem Cole wrote:
> >>> Other systems programming languages followed, BCPL, BLISS, PL/360
> >>> and even
> >>> B before C.
> >> The original version of BLISS was only for the PDP-10.  DEC
> >> retargeted it to the PDP-11 and VAX, but I think that was after Unix
> >> moved to the Interdata and possibly other machines.
>

[-- Attachment #2: Type: text/html, Size: 4255 bytes --]

^ permalink raw reply	[flat|nested] 27+ messages in thread

* [TUHS] Re: mental architecture models, Anyone ever heard of teaching a case study of Initial Unix?
  2024-07-08 21:39                 ` Aron Insinga
@ 2024-07-08 22:14                   ` Paul Winalski
  2024-07-09  1:04                     ` Aron Insinga
  2024-07-08 22:17                   ` Rik Farrow
  1 sibling, 1 reply; 27+ messages in thread
From: Paul Winalski @ 2024-07-08 22:14 UTC (permalink / raw)
  To: Computer Old Farts Followers; +Cc: tuhs

[-- Attachment #1: Type: text/plain, Size: 3313 bytes --]

[redirecting this to COFF]

On Mon, Jul 8, 2024 at 5:40 PM Aron Insinga <aki@insinga.com> wrote:

>
> When DEC chose an implementation language, they knew about C but it had
> not yet escaped from Bell Labs.  PL/I was considered, but there were
> questions of whether or not it would be suitable for a minicomputer.  On
> the other hand, by choosing BLISS, DEC could start with the BLISS-11
> cross compiler running on the PDP-10, which is described in
> https://en.wikipedia.org/wiki/The_Design_of_an_Optimizing_Compiler
> BLISS-11
> <https://en.wikipedia.org/wiki/The_Design_of_an_Optimizing_CompilerBLISS-11>
> and DEC's Common BLISS had changes necessitated by different
> word lengths and architectures, including different routine linkages
> such as INTERRUPT, access to machine-specific operations such as INSQTI,
> and multiple-precision floating point operations using builtin functions
> which used the addresses of data instead of the values.
>
> In order to port VMS to new architectures, DEC/HP/VSI retargeted and
> ported the BLISS compilers to new architectures.
>
> There have in general been two approaches to achieving language
portability (machine independence).

One of them is to provide only abstract data types and operations on them
and to completely hide the machine implementation.  PL/I and especially Ada
use this approach.

BLISS does the exact opposite.  It takes the least common denominator.  All
machine architectures have machine words and ways to pick them apart.
BLISS has only one data type--the word.  It provides a few simple
arithmetic and logical operations and also syntax for operating on
contiguous sets of bits within a word.  More complicated things such as
floating point are done by what look like routine calls but are actually
implemented in the compiler.

BLISS is also a true, full-blown expression language.  Statement constructs
such as if/then/else have a value and can be used in expressions.  In C
terminology, everything in BLISS is a lvalue.  A semicolon terminates an
expression and throws its value away.

BLISS is also unusual in that it has an explicit fetch operator, the dot
(.).  The assignment expression (=) has the semantics "evaluate the
expression to the right of the equal sign and then store that value in the
location specified by the expression to the left of the equal sign".

Supposing that a and b are identifiers for memory locations, the expression:

a = b;

means "place b (the address of a memory location) at the location given by
a (also a memory location)".  This is the equivalent of:

a = &b;

in C.  To get C's version of "a = b;" in BLISS you need an explicit fetch
operator:

a  = .b;

Forgetting to use the fetch operator is probably the most frequent error
made by new BLISS programmers familiar with more conventional languages.

DEC used four dialects of BLISS as their primary software development
language:  BLISS-16, BLISS-32, BLISS-36, and BLISS-64 the numbers
indicating the BLISS word size in bits.  BLISS-16 targeted the PDP-11 and
BLISS-36 the PDP-10.  DEC did implementations of BLISS-32 for VAX, MIPS,
and x86.  BLISS-64 was targeted to both Alpha and Itanium.  VSI may have a
version of BLISS-64 that generates x86-64 code.

-Paul W.

[-- Attachment #2: Type: text/html, Size: 4039 bytes --]

^ permalink raw reply	[flat|nested] 27+ messages in thread

* [TUHS] Re: mental architecture models, Anyone ever heard of teaching a case study of Initial Unix?
  2024-07-06 21:32               ` Charles H Sauer (he/him)
  2024-07-06 23:46                 ` Peter Yardley
  2024-07-07  1:39                 ` John Levine
@ 2024-07-08 21:39                 ` Aron Insinga
  2024-07-08 22:14                   ` Paul Winalski
  2024-07-08 22:17                   ` Rik Farrow
  2 siblings, 2 replies; 27+ messages in thread
From: Aron Insinga @ 2024-07-08 21:39 UTC (permalink / raw)
  To: Charles H Sauer (he/him), tuhs

See https://www.cs.tufts.edu/~nr/cs257/archive/ronald-brender/bliss.pdf

C allowed writing Unix with a limited amount of assembly code, but CMU's 
original BLISS-10 was designed to write an operating system with *no* 
outside assembly code.  Features like the 'MACHOP' (machine operation) 
builtin function made use of  the orthogonality of the PDP-10 
instruction format to execute machine-specific instructions in-line.  
(cf. the 'asm' extensions in some implementations of C.)  The PDP-10's 
36-bit word allowed single-precision floating point numbers to fit in 
machine words, so it had infix operators for both integer and 
single-precision floating point operations (which I presume were 
adequate for an operating system).

When DEC chose an implementation language, they knew about C but it had 
not yet escaped from Bell Labs.  PL/I was considered, but there were 
questions of whether or not it would be suitable for a minicomputer.  On 
the other hand, by choosing BLISS, DEC could start with the BLISS-11 
cross compiler running on the PDP-10, which is described in
https://en.wikipedia.org/wiki/The_Design_of_an_Optimizing_Compiler
BLISS-11 and DEC's Common BLISS had changes necessitated by different 
word lengths and architectures, including different routine linkages 
such as INTERRUPT, access to machine-specific operations such as INSQTI, 
and multiple-precision floating point operations using builtin functions 
which used the addresses of data instead of the values.

In order to port VMS to new architectures, DEC/HP/VSI retargeted and 
ported the BLISS compilers to new architectures.

What I find amazing is that they also turned the VAX MACRO assembly 
language (in which some of the VMS operating system was written) into a 
portable implementation language by 'compiling' the high-level CISC VAX 
instructions (and addressing modes) into sequences of RISC 
instructions.  I believe that this is similar to how modern CPU chips 
dynamically translate x86_64 instructions (or whatever) to an internal 
RISC format.

- Aron

(Disclaimer: I worked at DEC for a long time and VSI for a short time, 
but I wasn't responsible for the above work.)


On 7/6/24 17:32, Charles H Sauer (he/him) wrote:
> On 7/6/2024 3:56 PM, John R Levine wrote:
>> On Sat, 6 Jul 2024, Clem Cole wrote:
>>> Other systems programming languages followed, BCPL, BLISS, PL/360 
>>> and even
>>> B before C.
>> The original version of BLISS was only for the PDP-10.  DEC 
>> retargeted it to the PDP-11 and VAX, but I think that was after Unix 
>> moved to the Interdata and possibly other machines.

^ permalink raw reply	[flat|nested] 27+ messages in thread

* [TUHS] Re: mental architecture models, Anyone ever heard of teaching a case study of Initial Unix?
  2024-07-06 23:46                 ` Peter Yardley
@ 2024-07-07 17:43                   ` James Frew
  0 siblings, 0 replies; 27+ messages in thread
From: James Frew @ 2024-07-07 17:43 UTC (permalink / raw)
  To: tuhs

On 2024-07-06 16:46, Peter Yardley wrote:
> There was a ‘military’ standard ForTran 66. It was more difficult to use than the various ForTran IVs, which had several niceties like string literals, but the code was at least more portable. This was about 40 years ago so details are fading.

https://apps.dtic.mil/sti/tr/pdf/ADA328606.pdf

Not the actual standard, but the single most useful reference on porting 
old FORTRAN.

 From the Foreword:

"This FORTRAN volume presents material that will assist in understanding 
FORTRAN 66 and its replacement, FORTRAN 77. Because even a superficial 
comparison of the two language variants will involve contrasting their 
respective syntaxes, a set of FORTRAN 66 grammar rules is included: 
These rules, expressed in chart form, are comparable to rules that 
define FORTRAN 77. Next, there are two chapters of observations on what 
using standard FORTRAN 66 implies, and how the 1966 Standard is often 
interpreted and stretched to achieve practical ends. Finally, a 
comparison of the new FORTRAN 77 with FORTRAN 66 shows how the language 
has changed, and what converting older programs must entail. The four 
chapters address programmers concerned with FORTRAN conversions, 
managers engaged in programming standards, and other practitioners 
interested in system influences upon languages. Since the text touches 
upon several general programming aspects (input/output, storage 
allocation and lifetimes, control structures), the volume's appeal will 
extend beyond the immediate FORTRAN community."

Cheers,
/Frew

P.S.: If anybody cares, I have a cleaner scan that I can share.


^ permalink raw reply	[flat|nested] 27+ messages in thread

* [TUHS] Re: mental architecture models, Anyone ever heard of teaching a case study of Initial Unix?
  2024-07-05 23:17       ` John Levine
  2024-07-06 12:52         ` sjenkin
@ 2024-07-07  5:33         ` arnold
  1 sibling, 0 replies; 27+ messages in thread
From: arnold @ 2024-07-07  5:33 UTC (permalink / raw)
  To: tuhs, johnl

"John Levine" <johnl@taugh.com> wrote:

> These days we write code and compile it for x64 or ARM or RISC-V and
> for the most part, it just works because the data formats and addressing
> are all the same.

I have to agree with this. My experience is that for most[1] user level
code, the architecture simply doesn't matter. I started working on gawk
on vaxen, moved to MC68010, then to Sparc, then to 32-bit x86, then to
64-bit x86, with a side segue to 32-bit PPC.  Other people compile it
on everything else: ARM, S/390, Alpha, Itanium, RISC-V, you name it. OS
differences matter more than architecutre differences.

This list's membership is heavily weighted with compiler writers and
OS porters, which is fine, but that's a very small percentage of the
number of people out in the world writing code. Those folks (including
me in my $DAYJOB) all work in C++, Java, Python, Rust, and Go, and the
architecture simply doesn't matter to them. (C# is nominally portable
as well, but hasn't caught on outside of Windows like the others.)

I *do* think that studying a nice architecture, like the PDP-11,
is important for people learning software development. In college I
took data structures and algorithms together with PDP-11 assembler,
and it was only when I saw how recursion worked in assembler with
the stack that I finally understood it. It was a real epiphany.

My two cents,

Arnold

[1] Architecture does come into play if you're writing _binary_
data, which is why RPC/XDR were invented for NFS and why Google
has it's RPC language and libraries.

^ permalink raw reply	[flat|nested] 27+ messages in thread

* [TUHS] Re: mental architecture models, Anyone ever heard of teaching a case study of Initial Unix?
  2024-07-06 21:32               ` Charles H Sauer (he/him)
  2024-07-06 23:46                 ` Peter Yardley
@ 2024-07-07  1:39                 ` John Levine
  2024-07-08 21:39                 ` Aron Insinga
  2 siblings, 0 replies; 27+ messages in thread
From: John Levine @ 2024-07-07  1:39 UTC (permalink / raw)
  To: tuhs

It appears that Charles H Sauer (he/him) <sauer@technologists.com> said:
>I like the 80% explanation, but suspect PL.8 was really named PL.8 to go 
>along with the 801 processor architecture defined in Building 801 aka 
>Thomas J. Watson Research Center in Yorktown Heights. There are probably 
>living Yorktown alumni that could be definitive.

John Cocke said in a paper in IBM J R&D V44 #1/2, Jan 2000, p 50:

 The result [of the language design] was the PL.8 language, the
 ".8" implying that it had about 80% of the richness of PL/I.
 PL.8 bore the same relation to PL/I as the 801 architecture
 had to System/370.

Not gonna argue with him.

>I found PL/I quite usable as long as one kept it simple. But then, I 
>also found Fortran usable as long as one kept it simple. Regarding 
>Fortran portability, I did all my dissertation work on punched cards 
>using CDC Fortran on the 6400/6600 at the UT-Austin computation center. 
>I brought several boxes of cards to Yorktown and don't remember any 
>significant difficulty getting my simulator and other programs to run on 
>VM/370 there. The absence of pointers and structures in Fortran was 
>annoying. Eventually I used SNOBOL to quickly translate the Fortran to 
>PL/I (https://technologists.com/sauer/RESQPPP.pdf).

For the most part Fortran could be pretty portable.  The hard parts 
were when you were trying to get reliable numeric results in complex
calculations, or you were doing stuff that Fortran didn't do very
well like pre-F77 string handling.

R's,
JOhn

^ permalink raw reply	[flat|nested] 27+ messages in thread

* [TUHS] Re: mental architecture models, Anyone ever heard of teaching a case study of Initial Unix?
  2024-07-06 21:32               ` Charles H Sauer (he/him)
@ 2024-07-06 23:46                 ` Peter Yardley
  2024-07-07 17:43                   ` James Frew
  2024-07-07  1:39                 ` John Levine
  2024-07-08 21:39                 ` Aron Insinga
  2 siblings, 1 reply; 27+ messages in thread
From: Peter Yardley @ 2024-07-06 23:46 UTC (permalink / raw)
  To: Charles H Sauer (he/him); +Cc: tuhs

There was a ‘military’ standard ForTran 66. It was more difficult to use than the various ForTran IVs, which had several niceties like string literals, but the code was at least more portable. This was about 40 years ago so details are fading.

> On 7 Jul 2024, at 7:32 AM, Charles H Sauer (he/him) <sauer@technologists.com> wrote:
> 
> 
> 
> On 7/6/2024 3:56 PM, John R Levine wrote:
>> On Sat, 6 Jul 2024, Clem Cole wrote:
>>> ESPOL predators all of them, although one can say since it was only
>>> available on Burroughs large, medium, and small systems - it was retargeted,
>>> but not widely used.
>> Good point.
>>> Other systems programming languages followed, BCPL, BLISS, PL/360 and even
>>> B before C. If you consider PL/M a child of PL/360 (which is was more than
>>> child of PL/1 if you look at it), all of the others have code generators
>>> and libraries for multiple ISA and OS and did before C did. That said, I
>>> don't think any fo them have as many targets as C and many FORTRAN.
>> Untangling the sequence of all this stuff is hard.  BCPL was indeed retargeted at a lot of machines but it's not clear how portable programs were since the word sizes varied so much from 16 to 60 bits, but couldn't deal with byte addressed memory which is a large reason we have C.
>> The original version of BLISS was only for the PDP-10.  DEC retargeted it to the PDP-11 and VAX, but I think that was after Unix moved to the Interdata and possibly other machines.
>> PL360 was Wirth's implentation language for Algol W, a 360 assembler with Algol-like syntax that had nothing to do with PL/I and only targeted the 360.  I used it, it was pretty nice.
>> Are you maybe thinking of IBM's PL.8 or PL/S?  The former was originally for the 801, later S/360 and ROMP, the latter used for S/360 system programming.  PL.8 was about 80% of PL.I, hence the name, PL/S a subset with some hackery like register declarations and in-line assembler.
>> R's,
>> John
> 
> I like the 80% explanation, but suspect PL.8 was really named PL.8 to go along with the 801 processor architecture defined in Building 801 aka Thomas J. Watson Research Center in Yorktown Heights. There are probably living Yorktown alumni that could be definitive.
> 
> I found PL/I quite usable as long as one kept it simple. But then, I also found Fortran usable as long as one kept it simple. Regarding Fortran portability, I did all my dissertation work on punched cards using CDC Fortran on the 6400/6600 at the UT-Austin computation center. I brought several boxes of cards to Yorktown and don't remember any significant difficulty getting my simulator and other programs to run on VM/370 there. The absence of pointers and structures in Fortran was annoying. Eventually I used SNOBOL to quickly translate the Fortran to PL/I (https://technologists.com/sauer/RESQPPP.pdf).
> 
> Charlie
> 
> -- 
> voice: +1.512.784.7526       e-mail: sauer@technologists.com
> fax: +1.512.346.5240         Web: https://technologists.com/sauer/
> Facebook/Google/LinkedIn/Twitter: CharlesHSauer

Peter Yardley
peter.martin.yardley@gmail.com


^ permalink raw reply	[flat|nested] 27+ messages in thread

* [TUHS] Re: mental architecture models, Anyone ever heard of teaching a case study of Initial Unix?
  2024-07-06 20:56             ` John R Levine
@ 2024-07-06 21:32               ` Charles H Sauer (he/him)
  2024-07-06 23:46                 ` Peter Yardley
                                   ` (2 more replies)
  0 siblings, 3 replies; 27+ messages in thread
From: Charles H Sauer (he/him) @ 2024-07-06 21:32 UTC (permalink / raw)
  To: tuhs



On 7/6/2024 3:56 PM, John R Levine wrote:
> On Sat, 6 Jul 2024, Clem Cole wrote:
>> ESPOL predators all of them, although one can say since it was only
>> available on Burroughs large, medium, and small systems - it was 
>> retargeted,
>> but not widely used.
> 
> Good point.
> 
>> Other systems programming languages followed, BCPL, BLISS, PL/360 and 
>> even
>> B before C. If you consider PL/M a child of PL/360 (which is was more 
>> than
>> child of PL/1 if you look at it), all of the others have code generators
>> and libraries for multiple ISA and OS and did before C did. That said, I
>> don't think any fo them have as many targets as C and many FORTRAN.
> 
> Untangling the sequence of all this stuff is hard.  BCPL was indeed 
> retargeted at a lot of machines but it's not clear how portable programs 
> were since the word sizes varied so much from 16 to 60 bits, but 
> couldn't deal with byte addressed memory which is a large reason we have C.
> 
> The original version of BLISS was only for the PDP-10.  DEC retargeted 
> it to the PDP-11 and VAX, but I think that was after Unix moved to the 
> Interdata and possibly other machines.
> 
> PL360 was Wirth's implentation language for Algol W, a 360 assembler 
> with Algol-like syntax that had nothing to do with PL/I and only 
> targeted the 360.  I used it, it was pretty nice.
> 
> Are you maybe thinking of IBM's PL.8 or PL/S?  The former was originally 
> for the 801, later S/360 and ROMP, the latter used for S/360 system 
> programming.  PL.8 was about 80% of PL.I, hence the name, PL/S a subset 
> with some hackery like register declarations and in-line assembler.
> 
> R's,
> John

I like the 80% explanation, but suspect PL.8 was really named PL.8 to go 
along with the 801 processor architecture defined in Building 801 aka 
Thomas J. Watson Research Center in Yorktown Heights. There are probably 
living Yorktown alumni that could be definitive.

I found PL/I quite usable as long as one kept it simple. But then, I 
also found Fortran usable as long as one kept it simple. Regarding 
Fortran portability, I did all my dissertation work on punched cards 
using CDC Fortran on the 6400/6600 at the UT-Austin computation center. 
I brought several boxes of cards to Yorktown and don't remember any 
significant difficulty getting my simulator and other programs to run on 
VM/370 there. The absence of pointers and structures in Fortran was 
annoying. Eventually I used SNOBOL to quickly translate the Fortran to 
PL/I (https://technologists.com/sauer/RESQPPP.pdf).

Charlie

-- 
voice: +1.512.784.7526       e-mail: sauer@technologists.com
fax: +1.512.346.5240         Web: https://technologists.com/sauer/
Facebook/Google/LinkedIn/Twitter: CharlesHSauer

^ permalink raw reply	[flat|nested] 27+ messages in thread

* [TUHS] Re: mental architecture models, Anyone ever heard of teaching a case study of Initial Unix?
  2024-07-06 15:58           ` Clem Cole
@ 2024-07-06 20:56             ` John R Levine
  2024-07-06 21:32               ` Charles H Sauer (he/him)
  0 siblings, 1 reply; 27+ messages in thread
From: John R Levine @ 2024-07-06 20:56 UTC (permalink / raw)
  To: Clem Cole, sjenkin; +Cc: TUHS

On Sat, 6 Jul 2024, Clem Cole wrote:
> ESPOL predators all of them, although one can say since it was only
> available on Burroughs large, medium, and small systems - it was retargeted,
> but not widely used.

Good point.

> Other systems programming languages followed, BCPL, BLISS, PL/360 and even
> B before C. If you consider PL/M a child of PL/360 (which is was more than
> child of PL/1 if you look at it), all of the others have code generators
> and libraries for multiple ISA and OS and did before C did. That said, I
> don't think any fo them have as many targets as C and many FORTRAN.

Untangling the sequence of all this stuff is hard.  BCPL was indeed 
retargeted at a lot of machines but it's not clear how portable programs 
were since the word sizes varied so much from 16 to 60 bits, but couldn't 
deal with byte addressed memory which is a large reason we have C.

The original version of BLISS was only for the PDP-10.  DEC retargeted it 
to the PDP-11 and VAX, but I think that was after Unix moved to the 
Interdata and possibly other machines.

PL360 was Wirth's implentation language for Algol W, a 360 assembler with 
Algol-like syntax that had nothing to do with PL/I and only targeted the 
360.  I used it, it was pretty nice.

Are you maybe thinking of IBM's PL.8 or PL/S?  The former was originally 
for the 801, later S/360 and ROMP, the latter used for S/360 system 
programming.  PL.8 was about 80% of PL.I, hence the name, PL/S a subset 
with some hackery like register declarations and in-line assembler.

R's,
John

^ permalink raw reply	[flat|nested] 27+ messages in thread

* [TUHS] Re: mental architecture models, Anyone ever heard of teaching a case study of Initial Unix?
  2024-07-06 12:52         ` sjenkin
  2024-07-06 14:02           ` John R Levine
@ 2024-07-06 15:58           ` Clem Cole
  2024-07-06 20:56             ` John R Levine
  1 sibling, 1 reply; 27+ messages in thread
From: Clem Cole @ 2024-07-06 15:58 UTC (permalink / raw)
  To: sjenkin; +Cc: TUHS, John Levine

[-- Attachment #1: Type: text/plain, Size: 2565 bytes --]

On Sat, Jul 6, 2024 at 8:52 AM <sjenkin@canb.auug.org.au> wrote:

> Is this right:
>
>         C was the first ’systems tool’ language + libraries available
> across many platforms.
>
No !! Not even close.

ESPOL predators all of them, although one can say since it was only
available on Burroughs large, medium, and small systems - it was retargeted,
but not widely used.

Other systems programming languages followed, BCPL, BLISS, PL/360 and even
B before C. If you consider PL/M a child of PL/360 (which is was more than
child of PL/1 if you look at it), all of the others have code generators
and libraries for multiple ISA and OS and did before C did. That said, I
don't think any fo them have as many targets as C and many FORTRAN.

I might accept this rephrasing:

*While other systems' programming languages existed, and many were
retargets to multiple ISA/OS combinations, because of its appearance as a
language with a licensed but open implementation, at the time of the first
widespread available of inexpensive microprocessors, the language and it
libraries became (and continues to remain) the widest and most popular
systems development language in production use.*

WRT: FORTRAN.  John is correct; Kahan and his students demonstrated the
core problem with Paranoia ( https://www.netlib.org/paranoia/ ). But
remember that the FP issue was more than just a FORTRAN problem [BTW: I
took that class in those days].  You are correct that private extensions
were also a problem, although through F4 - the 'standard was IBM's 'G'
compiler, and while most vendors ensured they could pass the ANSI test
suite, smart vendors made sure they were IBM FORTRAN-G compliant. A good
example is the original Adventure game written on DEC's PDP-10 FORTRAN
compiler in the late 1970s, but it seemed to be running on anything a
FORTRAN compiler within weeks of its release on the ARPAnet [I know that my
peeps and I fed it to FORTRAN-G on TSS].

The same issue of "ANSI Standard" vs "De Facto Standard" occurred with F77,
but the de facto standard was VMS FORTRAN by that time    That said, by
F90, which is also post IEEE 754 [FP format] - portable FORTRAN code in the
wild was really not the issue it had been in the 60s and 70s.  FWIW: With
FORTRAN 2018, the compiler most people reference and for code that runs on
most supers is Intel's (DEC derived) ifort - but even Intel is replacing
that with their investment in IFX, the LLVM-based backend using Intel
rewritten (and FOSS) LLVM FORTRAN front end.

Clem

[-- Attachment #2: Type: text/html, Size: 5396 bytes --]

^ permalink raw reply	[flat|nested] 27+ messages in thread

* [TUHS] Re: mental architecture models, Anyone ever heard of teaching a case study of Initial Unix?
  2024-07-06 12:52         ` sjenkin
@ 2024-07-06 14:02           ` John R Levine
  2024-07-06 15:58           ` Clem Cole
  1 sibling, 0 replies; 27+ messages in thread
From: John R Levine @ 2024-07-06 14:02 UTC (permalink / raw)
  To: sjenkin, TUHS

On Sat, 6 Jul 2024, sjenkin@canb.auug.org.au wrote:
> C wasn’t the first standardised coding language, FORTRAN & COBOL at least were before it,
> so there were multi-platform source libraries and shared source, though often single platform.
>
> From what I know, vendor extensions of FORTAN, optimised for their hardware, were common,
> making high-performance, portable source difficult or impossible. 6-bit and 8-bit chars were the least of it.

Even without vendor extensions, writing portable Fortran code was hard. 
Different floating point formats give you different results, and 
architectural differences can bite you.  One famous example is that the 
709x required word alignment, but S/360 had 4 byte aligned floats and 8 
byte aligned doubles, so this:

       REAL R(100)
       DOUBLE PRECISION D(10)
       EQUIVALENCE (R(2), D(1))

would work fine on a 7090 but crash on a 360.  That was painful enough 
that one of the first things they changed on S/370 was to allow misaligned 
data.

I never wrote much COBOL but it had structured data (the ancestor of C 
structs) and "redefines" for overlaying structures which could bite you 
when different machines had different size or alignment.  There were also 
a lot of different character sets which led to bugs when code had implicit 
assumptions about collating sequences, e.g., do numbers come before 
letters as in ASCII, or after as in EBCDIC.

The fact that everything now has 8 bit byte addressed memory with power of 
two data sizes and everything is ASCII makes all these problems go away.

> Is this right:
>
> 	C was the first ’systems tool’ language + libraries available across many platforms.
> 	Notionally, source code could be ported with zero or minimal change.
> 	It made possible portable languages like PERL, PHP, Python.

I think so.  There were previous system languages like a PL/I subset on 
Multics or PL/S on IBM or PL/M on micros but I don't think any of them had 
multiple targets.

> Secondly, portable systems tool languages with a common 2-part design
> of parser/front-end providing an abstract syntax tree
> to multiple back-ends with platform specific code-generators.
>
> Are these back-ends where most of the assembler, memory model and instruction optimisation take place now?

That's the standard way to build a compiler.  Back in the late 1950s 
someone had the bright idea to invent a common intermediate language they 
called UNCOL so all of the front ends could produce UNCOL and all of the 
back ends could translate from UNCOL thereby reducing the NxM compiler 
problem to N+M.  It never worked, both because the semantic differences 
between source languages are larger than they look, and the machine 
architectures of the era were wildly different.

Now we have GCC and LLVM which are sort of UNCOL-ish, but mostly because 
the back ends are all so similar.  The instruction sets may be different 
but the data formats are all the same.

R's,
John


^ permalink raw reply	[flat|nested] 27+ messages in thread

* [TUHS] Re: mental architecture models, Anyone ever heard of teaching a case study of Initial Unix?
  2024-07-05 23:17       ` John Levine
@ 2024-07-06 12:52         ` sjenkin
  2024-07-06 14:02           ` John R Levine
  2024-07-06 15:58           ` Clem Cole
  2024-07-07  5:33         ` arnold
  1 sibling, 2 replies; 27+ messages in thread
From: sjenkin @ 2024-07-06 12:52 UTC (permalink / raw)
  To: TUHS; +Cc: John Levine

C wasn’t the first standardised coding language, FORTRAN & COBOL at least were before it,
so there were multi-platform source libraries and shared source, though often single platform.

From what I know, vendor extensions of FORTAN, optimised for their hardware, were common,
making high-performance, portable source difficult or impossible. 6-bit and 8-bit chars were the least of it.

Is this right:

	C was the first ’systems tool’ language + libraries available across many platforms.
	Notionally, source code could be ported with zero or minimal change.
	It made possible portable languages like PERL, PHP, Python.

	[ then came the "Tower of Babel" requiring tools like ‘autoconf’ ]

C became a bootstrapping environment for other portable languages & tools, e.g. C++ & Golang.

Secondly, portable systems tool languages with a common 2-part design
of parser/front-end providing an abstract syntax tree 
to multiple back-ends with platform specific code-generators.

Are these back-ends where most of the assembler, memory model and instruction optimisation take place now?


> On 6 Jul 2024, at 09:17, John Levine <johnl@taugh.com> wrote:
> 
> Back in the day getting a program to act the same on different
> computers, was really hard, with the switch from IBM 7090 (36 bit word
> addressed binary floating point) to IBM 360 (32 or 64 bit byte
> addressed hex floating point) the most famous example. These days we
> write code and compile it for x64 or ARM or RISC-V and for the most
> part, it just works because the data formats and addressing are all
> the same.


--
Steve Jenkin, IT Systems and Design 
0412 786 915 (+61 412 786 915)
PO Box 38, Kippax ACT 2615, AUSTRALIA

mailto:sjenkin@canb.auug.org.au http://members.tip.net.au/~sjenkin


^ permalink raw reply	[flat|nested] 27+ messages in thread

* [TUHS] Re: mental architecture models, Anyone ever heard of teaching a case study of Initial Unix?
  2024-07-05 21:49     ` Larry McVoy
  2024-07-05 22:08       ` Charles H Sauer (he/him)
@ 2024-07-05 23:17       ` John Levine
  2024-07-06 12:52         ` sjenkin
  2024-07-07  5:33         ` arnold
  1 sibling, 2 replies; 27+ messages in thread
From: John Levine @ 2024-07-05 23:17 UTC (permalink / raw)
  To: tuhs

According to Larry McVoy <lm@mcvoy.com>:
>> It did, but it was word addressed which makes it an historical
>> curiosity like its spiritual predecessors PDP-4/5/7/8/9.
>> 
>> I also have a mental model of a PDP-11 but these days it's more a simplified 386
>> leaving out the dumb or useless stuff.  
>
>I took a look at x86 in 386/486 days and found it to be enough of a mess that
>I stopped looking.  In no way did it compare the simplicity and elegance 
>of the PDP-11. 

If you're looking for simplicity and elegance, I can still remember most
of the PDP-8's instruction codes so I could disassemble at sight.  But
it's not a very good model for a modern computer.

I realized a while ago that the only really important things in an
architecture are the addressing model, e.g., flat byte addressed
little-endian, and the data formats, e.g., two's complement integers,
ASCII or UTF-8 text, IEEE floating point.  

Back in the day getting a program to act the same on different
computers, was really hard, with the switch from IBM 7090 (36 bit word
addressed binary floating point) to IBM 360 (32 or 64 bit byte
addressed hex floating point) the most famous example. These days we
write code and compile it for x64 or ARM or RISC-V and for the most
part, it just works because the data formats and addressing are all
the same.


^ permalink raw reply	[flat|nested] 27+ messages in thread

* [TUHS] Re: mental architecture models, Anyone ever heard of teaching a case study of Initial Unix?
  2024-07-05 22:08       ` Charles H Sauer (he/him)
@ 2024-07-05 22:24         ` Larry McVoy
  0 siblings, 0 replies; 27+ messages in thread
From: Larry McVoy @ 2024-07-05 22:24 UTC (permalink / raw)
  To: Charles H Sauer (he/him); +Cc: tuhs

On Fri, Jul 05, 2024 at 05:08:01PM -0500, Charles H Sauer (he/him) wrote:
> Assuming you mean the same Kendall Witte that spearheaded Dell SVR4 (https://notes.technologists.com/notes/2008/01/10/a-brief-history-of-dell-unix/),
> he is quite fluent in X86 as well. After Dell SVR4 he became prominent in
> Dell firmware work. I saw him just over a year ago at a gathering of Dell
> "old timers".

Yep, that's him.  I have fond memories of bring a six pack and an octal
dump to his place and him swigging a beer and reading it with ease.
Great guy.
-- 
---
Larry McVoy           Retired to fishing          http://www.mcvoy.com/lm/boat

^ permalink raw reply	[flat|nested] 27+ messages in thread

* [TUHS] Re: mental architecture models, Anyone ever heard of teaching a case study of Initial Unix?
  2024-07-05 21:38   ` [TUHS] Re: mental architecture models, " John Levine
  2024-07-05 21:49     ` Larry McVoy
@ 2024-07-05 22:10     ` Dan Cross
  1 sibling, 0 replies; 27+ messages in thread
From: Dan Cross @ 2024-07-05 22:10 UTC (permalink / raw)
  To: John Levine; +Cc: tuhs, peter.martin.yardley

On Fri, Jul 5, 2024 at 5:47 PM John Levine <johnl@taugh.com> wrote:
> It appears that Peter Yardley <peter.martin.yardley@gmail.com> said:
> >The DG Nova had a pretty nice architecture. 2 accumulators, 2 index registers, program counter, status register. No stack register tho. There was a micro processor version by Fairchild.
>
> It did, but it was word addressed which makes it an historical
> curiosity like its spiritual predecessors PDP-4/5/7/8/9.
>
> I also have a mental model of a PDP-11 but these days it's more a simplified 386
> leaving out the dumb or useless stuff.  I ignore the segments which are useless
> other than for 286 emulation, and some of the strange instructions like decimal
> adjust and the warty 8 and 16 bit registers.
>
> What's important is the memory model which on a 386 the way it was
> invariably set up was a flat 32 bit consistent little-endian byte
> addressed memory with a stack and reasonable addressing modes, and 4K
> pages for virtual memory.

It is important to ask, "what does one want to learn about
architecture by going through this study exercise?"  If one just wants
to study the unprivileged instruction set at the level of assembler
mnemonics, then x86_64 isn't completely awful.  Some of the registers
are oddly named, and some instructions have odd implicit operands
(e.g., `inc %rax`, but if you're just looking at assembler syntax,
perhaps one doesn't care.  Of course, the instruction encoding is a
huge mess, but most work-a-day programmers don't have to care about
that.

Where it gets really ugly, in my opinion, is in the privileged
instruction set, and there you can't get away from history: there's no
escaping descriptor tables or segmentation there! The interrupt stack
table in the TSS must be set up properly or you're bound for a triple
fault.  This implies the GDT, IDT, TR, and TSS --- all 286-era goo ---
are all properly set up, and you can't get away from that stuff, even
in a modern operating system (you have to reload the TSS _or_ replace
RSP0 on every thread switch: there's no other way; that's just how the
hardware works). And then there's the matter that you _have_ to enable
paging before switching into 64-bit mode on x86...it's not hard, but
it's annoying (and the x86S proposal doubles down on it).  It'd be
more rational to allow execution against a flat 64-bit physical
address space; for x86S, I'd rather be able to specify a reset vector
in the physical address space by some sort of external strap.

Both RISC-V and ARM seem much more rational in this world by comparison.

I don't like the RISC-V page table format, though: it doesn't permit
you to pun the root of the paging radix tree for other levels, meaning
you can't use the "recursive page table" trick to get access to page
tables themselves: this, in turn, has effects on the rest of the
design of a virtual memory system.  I think I've found a way around
that involving a dedicated temporary mapping region, but it's kind of
a pain and takes a non-trivial chunk of virtual address _space_ (if
not fully realized memory) that I don't care for.  How to handle
cached vs uncached mappings, e.g., for MMIO, is still a bit mysterious
to me.  Honestly, this is something that x86 got largely right.

ARM is ok, but has grown a lot of complexity; most of which can be
ignored until needed, I suspect; saturating arithmetic, for example.
Understanding it is not critical to understanding more or less how the
computer works.

> ARM should be OK too but I have to ask which ARM? There have been so
> many generations often not backward compatible.

I'd start with ARMv8 at this point.  It has less confusing, more
rational stack push/pop semantics and I think they did away with the
conditional execution stuff, which is easier to reason about.

My 2c.

        - Dan C.

^ permalink raw reply	[flat|nested] 27+ messages in thread

* [TUHS] Re: mental architecture models, Anyone ever heard of teaching a case study of Initial Unix?
  2024-07-05 21:49     ` Larry McVoy
@ 2024-07-05 22:08       ` Charles H Sauer (he/him)
  2024-07-05 22:24         ` Larry McVoy
  2024-07-05 23:17       ` John Levine
  1 sibling, 1 reply; 27+ messages in thread
From: Charles H Sauer (he/him) @ 2024-07-05 22:08 UTC (permalink / raw)
  To: tuhs

On 7/5/2024 4:49 PM, Larry McVoy wrote:
> On Fri, Jul 05, 2024 at 05:38:03PM -0400, John Levine wrote:
>> It appears that Peter Yardley <peter.martin.yardley@gmail.com> said:
>>> The DG Nova had a pretty nice architecture. 2 accumulators, 2 index registers, program counter, status register. No stack register tho. There was a micro processor version by Fairchild.
>>
>> It did, but it was word addressed which makes it an historical
>> curiosity like its spiritual predecessors PDP-4/5/7/8/9.
>>
>> I also have a mental model of a PDP-11 but these days it's more a simplified 386
>> leaving out the dumb or useless stuff.
> 
> I took a look at x86 in 386/486 days and found it to be enough of a mess that
> I stopped looking.  In no way did it compare the simplicity and elegance
> of the PDP-11.  I had a TA, Ken Witte, who could read octal dumps of PDP-11
> assembly like it was C.  I'm pretty sure the way the instructions were
> encoded was a big part of what made that possible.

Assuming you mean the same Kendall Witte that spearheaded Dell SVR4 
(https://notes.technologists.com/notes/2008/01/10/a-brief-history-of-dell-unix/), 
he is quite fluent in X86 as well. After Dell SVR4 he became prominent 
in Dell firmware work. I saw him just over a year ago at a gathering of 
Dell "old timers".

-- 
voice: +1.512.784.7526       e-mail: sauer@technologists.com
fax: +1.512.346.5240         Web: https://technologists.com/sauer/
Facebook/Google/LinkedIn/Twitter: CharlesHSauer

^ permalink raw reply	[flat|nested] 27+ messages in thread

* [TUHS] Re: mental architecture models, Anyone ever heard of teaching a case study of Initial Unix?
  2024-07-05 21:38   ` [TUHS] Re: mental architecture models, " John Levine
@ 2024-07-05 21:49     ` Larry McVoy
  2024-07-05 22:08       ` Charles H Sauer (he/him)
  2024-07-05 23:17       ` John Levine
  2024-07-05 22:10     ` Dan Cross
  1 sibling, 2 replies; 27+ messages in thread
From: Larry McVoy @ 2024-07-05 21:49 UTC (permalink / raw)
  To: John Levine; +Cc: tuhs, peter.martin.yardley

On Fri, Jul 05, 2024 at 05:38:03PM -0400, John Levine wrote:
> It appears that Peter Yardley <peter.martin.yardley@gmail.com> said:
> >The DG Nova had a pretty nice architecture. 2 accumulators, 2 index registers, program counter, status register. No stack register tho. There was a micro processor version by Fairchild. 
> 
> It did, but it was word addressed which makes it an historical
> curiosity like its spiritual predecessors PDP-4/5/7/8/9.
> 
> I also have a mental model of a PDP-11 but these days it's more a simplified 386
> leaving out the dumb or useless stuff.  

I took a look at x86 in 386/486 days and found it to be enough of a mess that
I stopped looking.  In no way did it compare the simplicity and elegance 
of the PDP-11.  I had a TA, Ken Witte, who could read octal dumps of PDP-11
assembly like it was C.  I'm pretty sure the way the instructions were
encoded was a big part of what made that possible.
-- 
---
Larry McVoy           Retired to fishing          http://www.mcvoy.com/lm/boat

^ permalink raw reply	[flat|nested] 27+ messages in thread

* [TUHS] Re: mental architecture models, Anyone ever heard of teaching a case study of Initial Unix?
  2024-07-05 10:18 ` Peter Yardley
@ 2024-07-05 21:38   ` John Levine
  2024-07-05 21:49     ` Larry McVoy
  2024-07-05 22:10     ` Dan Cross
  0 siblings, 2 replies; 27+ messages in thread
From: John Levine @ 2024-07-05 21:38 UTC (permalink / raw)
  To: tuhs; +Cc: peter.martin.yardley

It appears that Peter Yardley <peter.martin.yardley@gmail.com> said:
>The DG Nova had a pretty nice architecture. 2 accumulators, 2 index registers, program counter, status register. No stack register tho. There was a micro processor version by Fairchild. 

It did, but it was word addressed which makes it an historical
curiosity like its spiritual predecessors PDP-4/5/7/8/9.

I also have a mental model of a PDP-11 but these days it's more a simplified 386
leaving out the dumb or useless stuff.  I ignore the segments which are useless
other than for 286 emulation, and some of the strange instructions like decimal
adjust and the warty 8 and 16 bit registers.

What's important is the memory model which on a 386 the way it was
invariably set up was a flat 32 bit consistent little-endian byte
addressed memory with a stack and reasonable addressing modes, and 4K
pages for virtual memory.

ARM should be OK too but I have to ask which ARM? There have been so
many generations often not backward compatible.


^ permalink raw reply	[flat|nested] 27+ messages in thread

end of thread, other threads:[~2024-07-10  2:21 UTC | newest]

Thread overview: 27+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-07-07 13:57 [TUHS] Re: mental architecture models, Anyone ever heard of teaching a case study of Initial Unix? Noel Chiappa
2024-07-07 16:43 ` John Levine
  -- strict thread matches above, loose matches on Subject: below --
2024-07-10  2:20 Douglas McIlroy
2024-07-05  7:36 [TUHS] " Dave Horsfall
2024-07-05 10:18 ` Peter Yardley
2024-07-05 21:38   ` [TUHS] Re: mental architecture models, " John Levine
2024-07-05 21:49     ` Larry McVoy
2024-07-05 22:08       ` Charles H Sauer (he/him)
2024-07-05 22:24         ` Larry McVoy
2024-07-05 23:17       ` John Levine
2024-07-06 12:52         ` sjenkin
2024-07-06 14:02           ` John R Levine
2024-07-06 15:58           ` Clem Cole
2024-07-06 20:56             ` John R Levine
2024-07-06 21:32               ` Charles H Sauer (he/him)
2024-07-06 23:46                 ` Peter Yardley
2024-07-07 17:43                   ` James Frew
2024-07-07  1:39                 ` John Levine
2024-07-08 21:39                 ` Aron Insinga
2024-07-08 22:14                   ` Paul Winalski
2024-07-09  1:04                     ` Aron Insinga
2024-07-08 22:17                   ` Rik Farrow
2024-07-09  0:08                     ` Adam Thornton
2024-07-09  2:40                       ` Dave Horsfall
2024-07-09  2:43                         ` Warner Losh
2024-07-09  4:23                         ` Adam Thornton
2024-07-09  5:06                         ` Aron Insinga
2024-07-07  5:33         ` arnold
2024-07-05 22:10     ` Dan Cross

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).