From: Clem Cole <clemc@ccc.com>
To: Paul Ruizendaal <pnr@planet.nl>
Cc: tuhs@tuhs.org
Subject: [TUHS] Re: On the uniqueness of DMR's C compiler
Date: Wed, 8 May 2024 11:51:11 -0400 [thread overview]
Message-ID: <CAC20D2N6PqeBHw3vS=K-5O16do8qe7cZ6p6NE8=tq67k45sBrg@mail.gmail.com> (raw)
In-Reply-To: <57a37626-728c-4f34-b08b-a4f521f1db03@planet.nl>
[-- Attachment #1: Type: text/plain, Size: 6046 bytes --]
I agree with Rob. I fear the OP might have more limited experience with
what was available at the time and how it was developed. The following is
undoubtedly incomplete. It is what I could remember quickly to answer the
question of real compilers for the PDP-11.
As others have pointed out, the original DEC PDP-11 FTN, like the original
PDP-6 and PDP-8, was based on threaded DEC F4 technology. After
introducing the PDP-10, the 36-bit compiler team at DEC started a project
to rewrite FORTRAN (in BLISS) as a true compiler. As was reminded at lunch
last week (I still eat weekly with many of the DEC TLG folks), DEC had two
groups -- a development team and a support team. I think some of the
external confusion comes from both teams releasing products to the world,
and the outside world did not always understand the differences. So, when I
say the "compiler" group, I generally refer to the former - although many
people started in the latter and eventually became part of the former. They
key point here is that F4 (which was from the support folks), lived for a
while in parallel with stuff coming from what eventually would become TLG
[Technical Languages (and tools) Group].
The primary DEC-supported technical languages were all written in BLISS-11
and cross-compiled from the PDP-10 (originally). However, they could run
in 11/40 class (shared I/D) space machines. Remember, DEC operating systems
could do overlays - although there were probably some differences with what
could be generated [I'd need to pull the old RT11 manuals for each]. Yes,
FORTRAN was the primary technical language, but DEC's TLG supported other
languages for the PDP-11 from COBOL to BASIC, and 3rd parties filled out
the available suite.
Probably the #1 3rd party, PDP-11 compiler, is (was) the OMSI Pascal
compiler (which generated direct PDP-11 code) for all classes of PDP-11s
[the OP referred to the Pascal that generated P4 code and ran interpreter
for same. The UCSD Pascal worked this way, but I never saw anything other
than students use it for teaching, while the OMSI compiler was a force for
PDP-11 programmers, and you saw it in many PDP-11 shops - including some I
worked]. I'm pretty sure the RT11 and RSX11 versions of this can be
easily found in the wild, but I have not looked for the UNIX version (note
that there was one).
Note - from a SW marketplace for PDP-11s, the money was on the DEC
operating systems, not UNIX. So, there was little incentive to move those
tools, which I think is why the OP may not have experienced them. Another
important political thing to consider is that TLG did their development on
PDP-10s and later Vaxen inside DEC. Since everything was written in BLISS
and DEC marketing 100% missed/sunk that boat, the concept of self-hosting
the compiler was not taken seriously (ISTR: there was a project to make it
self-host on RSX, but it was abandoned since customers were not beating
DEC's door down for BLISS on many PDP-11 systems).
Besides DMR's compiler for the PDP-11. Steve Johnson developed PCC and
later PCC2. Both ran on all flavors of PDP-11s, although I believe since
the lack of support for overlays in the research UNIX editions limited the
compilers and ISTR, there were both 11/40 and 11/45 class binaries with
different-sized tables.
On our Unix boxes, we also had a PDP-11 Pascal compiler from Free
University in Europe (VU) - I don't remember much about it nor can I find
it in a quick search of my currently online stuff. ISTR That one may have
been 11/45 class - we had it on the TekLabs 11/70 and I don't remember
having in on any of our 40-class systems.
The Whitesmith's C has been mentioned. That compiler ran on all the PDP-11
UNIXs of the day, plus its native Idris, as well as the DEC OSs. It did
not use an interpreter per se, but instead compiled to something Plauger
called 'ANAT" - a natural assembler. He then ran an optimizer over this
output and his final pass converted from ANAT code to the PDP-11 (or Z80 as
it turns out). I argue that ANAT was what we now think of in modern
compilers as the IL, but others might argue differently. We ran it on our
RT-11 systems, although ISTR came with the UNIX version, so we had it on
the 11/70, too. That may have been because we used it to cross-compile for
the Z80.
Tannabaum and the team have the Amsterdam compiler toolkit. This had front
ends for C and Pascal and could generate code for PDP-11s and several other
microprocessors. I do not know how widely it was used for the PDP11s.
Per Brinch, Hansen also implemented Parallel Pascal and his own OS for the
40-class PDP-11s. He talks about this in his book Pascal on Small Systems.
Holt and team wrote Concurrent Euclid and TUNIS for the 40-class machines.
Wirth released a Modula for the 11, although we mostly ran it on the 68000s
and a Lilith system.
IIRC, Mike Malcom and the team built a true B compiler so they could
develop Thoth. As the 11/40 was one of the original Thoth target
systems, I would have expected that to exist, but I have never used it.
As was mentioned before, there was BCPL for the PDP-11. I believe that a
BCPL compiler can even be found on one of the USENIX tapes in the TUHS
archives, but I have not looked.
Finally, ISTR, in the mid-late 1970s one of the Universities in Europe
(??Edinburgh, maybe??), developed and released an Algol flavor for the
PDP-11, but I never used it. Again, you might want to check the TUHS
archives. In my own case, while I had used Algol on the PDP-8s and 10s,
plus the IBM systems, and by then Pascal had become the hot alternative
language and was close enough I never had a desire/need for it. Plus
since there were a number of Pascal implementations available for 11s and
no one in Teklabs was asking for it, I never chased it down.
To quote Tom Lehrer .. "*These are the only ones that the news has come to
Huvrd. There may be many others ..*."
Clem
ᐧ
ᐧ
[-- Attachment #2: Type: text/html, Size: 9781 bytes --]
next prev parent reply other threads:[~2024-05-08 15:52 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-05-07 20:59 [TUHS] " Paul Ruizendaal
2024-05-07 22:07 ` [TUHS] " Rob Pike
2024-05-08 9:35 ` Paul Ruizendaal
2024-05-08 13:12 ` Rob Pike
2024-05-08 15:51 ` Clem Cole [this message]
2024-05-08 16:07 ` Jon Forrest
2024-05-08 17:49 ` Tom Perrine
2024-05-08 17:05 ` Adam Sampson
2024-05-08 17:45 ` Al Kossow
2024-05-08 18:12 ` Clem Cole
2024-05-08 18:12 ` Clem Cole
2024-05-09 1:27 ` Lawrence Stewart
2024-05-31 12:00 ` Paul Ruizendaal
2024-05-31 12:21 ` Peter Yardley
2024-05-08 11:09 ` Michael Kjörling
2024-05-09 20:40 ` Paul Ruizendaal via TUHS
2024-05-09 20:57 ` Al Kossow
2024-05-08 18:29 Douglas McIlroy
2024-05-10 17:28 ` Paul Winalski
2024-05-11 9:16 ` Ralph Corderoy
2024-05-11 13:42 ` G. Branden Robinson
[not found] <171519201646.4052234.694570138790187562@minnie.tuhs.org>
2024-05-09 3:39 ` Paul McJones
2024-05-09 3:46 ` Warner Losh
[not found] <171535904627.4052234.5321502833323676423@minnie.tuhs.org>
2024-05-10 18:55 ` Paul McJones
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='CAC20D2N6PqeBHw3vS=K-5O16do8qe7cZ6p6NE8=tq67k45sBrg@mail.gmail.com' \
--to=clemc@ccc.com \
--cc=pnr@planet.nl \
--cc=tuhs@tuhs.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).