On Wed, May 11, 2022 at 10:45 AM Paul Winalski <paul.winalski@gmail.com> wrote:
On 5/10/22, Clem Cole <clemc@ccc.com> wrote:
> a couple of small additions/corrections ....
>
> Ultrix was the formal
> name of DEC's first UNIX a product.

Before that, Bill and Armando's engineering group was part of DEC's
Telephone Industry Group (TIG) marketing organization.  Their charter
was to see that Unix and other AT&T software ran well on DEC hardware.
Mainly they did device drivers and some kernel mods.  DEC was getting
increasing demand from those outside Telco who were running Unix to
get a DEC-supported Unix on the VAX.  And so TIG engineering was split
off and did a full port and the result was called Ultrix.  This
started in 1982 IIRC.

> Famously, Bill Munson announced Ultrix at an early 1980s USENIX,
> reminding everyone that it meant Fortran, Cobol and the like would be
> coming too.  Paul W and his mates in the Languages group had to do all
> sorts of stuff to make that so.  I believe Paul has previously extolled us
> with moving the VMS linker over to the Unix to support at least Fortran.
> FYI, Sun does not yet exist (Shannon is still working for Munson in NH).

That was a very nasty bit of DEC internal politics.  As soon as we in
DEC's software development tools departments (Technical Languages,
Commercial Languages, Methods & Tools) heard about the creation of
Ultrix, we began planning ports of the VAX/VMS compilers and other
pieces of the tool chain to Ultrix.  We got immediate and fierce
push-back from the Ultrix engineering group.  TIG had had a deeply
ingrained culture of resisting innovation.  Their job was to make sure
Unix ran on DEC hardware, not to enhance Unix.  Many of the Ultrix
engineers had a religious belief in keeping Unix pure and
platform-independent.  Things available on only one hardware platform
were perceived as "vendor traps" and to be avoided.

That's kinda ironic. One of the biggest ticket items in the AUUG newsletters
from the early days was how you can get FORTRAN, BASIC or MACRO-11
running under V6 or V7. There were several compatibility shims for RT-11
to accomplish this in a number of different ways. It was a big deal for many
folks that needed to run their FORTRAN programs from a DEC OS, but
wanted / needed to run Unix....
 
The biggest fight was over Fortran.  VAX Fortran was seen as the gold
standard in Fortran compilers by the Fortran R&D community and there
was a lot of demand for DEC to make it available on Ultrix.  f77, the
Unix alternative, was, by comparison, considered a toy that lacked key
features.  By careful cherry-picking the compiler people in the Ultrix
group managed to put together a suite of Fortran benchmarks that hit
all the glass jaws in the VAX Fortran optimizer.  They claimed that
this showed that f77 produced code at least as good, if not better,
than VAX Fortran did.  The VMS development tools group had better
things to do than argue with the Ultrix group, so the whole idea of
porting VAX/VMS tools to Ultrix was dropped.

It's clear they'd forgotten the PDP-11 experience...
 
Many of the non-standard innovations in VAX Fortran were adopted by
IBM and other vendors under pressure from the Fortran community.  By
1985 DEC was losing sales to other vendors in the HPTC world due to
lack of VAX Fortran features in f77.  The Fortran team in Technical
Languages and Environments had to do a rush-rush port of VAX Fortran
and its runtime library to Ultrix.  We were rather teed off since we'd
proposed the same thing three years before and now it was a "we need
it yesterday" crash project.  It was decided that it would take too
much time to teach the VAX Fortran code generator to produce a.out
object files and so instead we ported the VMS linker to Ultrix and
taught it to read and write a.out as well as VMS object files.  The
result was called lk.  As the developer in the software tools
organization who best understood linkers and object files (I'd written
a link editor in grad school when interning at IBM) I was put in
charge of the linker port.  I've told that story already here in TUHS.

The macro-11 that was in 2BSD had its own companion linker that
was basically the same. It could link  in .OBJ files from other DEC tools
as well...  History repeated itself, eh?

Warner
 
> It's about the time of the original Ultrix work is when I stopped paying
> attention to the PDP-11s, so there are gaps in my knowledge.  Ultrix
> definitely was released as a binary product for the 11.  My >>memory<< is
> the first version for the Vax was 4.1 based with some new defined support
> and languages, but that version may not have gone too far outside of DEC
> and until the 4.2BSD version was the first one for revenue.   The first
> Ultrix-11 was V7+some set of BSDisms.   I know Shannon's overlay code went
> to UCB, but I'm not so sure when the BSD 11 changes came back to DEC.

IIRC the 4.1 version of VAX Ultrix was their prototype.  I think
PDP-11 Ultrix was just one of the existing Unix variants for the
PDP-11 with the "Ultrix" marketing label slapped on.  We can't have
vendor traps, you know....

By the late 1980s the PDP-11/VAX style of CISC architecture had fallen
way behind RISC in terms of performance.  Alpha wasn't ready yet.  To
keep a toehold in the Unix marketplace, Ultrix was ported to the MIPS
architecture and a MIPS code generator was implemented for the GEM
back end so that DEC Fortran would be available.

Unix was easier to port to Alpha than VMS was.  Score one for writing
in a HLL and maintaining platform neutrality.  Clem has told that
story here.  Most of the VMS OS code was in assembler.  A VAX MACRO
compiler front end had to be written that read VAX assembly code and
produced GEM intermediate language.  To this day most of OpenVMS is
still in VAX MACRO.

-Paul W.