Thank you, that Usenix paper is most helpful.
In short, there were (at least) 4 generations of PCC: PCC, PCC2, QCC and RCC. The first
two by SCJ and the latter two by Kristol.
PCC2 seems to go back to about 1980, and QCC and RCC were created in the first half of
1985. The C compiler in 8th Edition seems to be PCC2 based.
For ease of reference I’ve put the M68K compiler that is included in the Blit source tree
(
Anybody who has some more info on how to read a “stin” file, please share.
Paul
On Apr 25, 2021, at 7:11 PM, Clem Cole
<clemc(a)ccc.com> wrote:
yes i'll mail under separate cover a scan
ᐧ
On Sun, Apr 25, 2021 at 11:47 AM Paul Ruizendaal <pnr(a)planet.nl
<mailto:pnr@planet.nl>> wrote:
By now found some more clues, in particular this link:
http://computer-programming-forum.com/47-c-language/fab825b2dce1aa59.htm
<http://computer-programming-forum.com/47-c-language/fab825b2dce1aa59.htm>
Apparently I am talking about PCC and PCC2 in the below question.
The first post mentions 4 papers. They can be found online, apart from the USENIX one:
"Four Generations of Portable C Compiler" by D.M. Kristol (1986 Summer USENIX
Conference Proceedings)
Anybody have that?
The second post mentions official documentation:
"In porting QCC, a useful text is the "Portable C Compiler -
Version 2 (PCC2) Internals". It includes documentation of
stin file formats, PCC2 tree forms, debugging flags, and
compiler #defines. The manual is expensive so it's worth it
most if you buy it before you figure it all out doing a
port. Since the manual is based on PCC2 (and hasn't been
updated), it's a good starting point, but doesn't have the
latest information.”
Anybody have that? (It is not on bitsavers)
Paul
On 25 Apr 2021, at 14:49, arnold(a)skeeve.com
<mailto:arnold@skeeve.com> wrote:
Not an answer to your questions, but you may want to take a look
at the PCC Revived project. It lives in CVS, but I have a git mirror at
git://github.com/arnoldrobbins/pcc-revived
<http://github.com/arnoldrobbins/pcc-revived>
HTH,
Arnold
Paul Ruizendaal <pnr(a)planet.nl <mailto:pnr@planet.nl>> wrote:
> For clarity and ease of reference:
>
> - The “Tour of paper” is for instance here:
http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.48.3512
<http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.48.3512>
<http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.48.3512
<http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.48.3512>>
>
> - A machine description for the VAX that matches with that paper is for instance in
the SysIII source:
https://www.tuhs.org/cgi-bin/utree.pl?file=SysIII/usr/src/cmd/cc/vax/pcc/ta…
<https://www.tuhs.org/cgi-bin/utree.pl?file=SysIII/usr/src/cmd/cc/vax/pcc/table.c>
<https://www.tuhs.org/cgi-bin/utree.pl?file=SysIII/usr/src/cmd/cc/vax/pcc/table.c
<https://www.tuhs.org/cgi-bin/utree.pl?file=SysIII/usr/src/cmd/cc/vax/pcc/table.c>>
>
> - The new style description in 8th edition is here:
https://www.tuhs.org/cgi-bin/utree.pl?file=V8/usr/src/cmd/ccom/vax/stin
<https://www.tuhs.org/cgi-bin/utree.pl?file=V8/usr/src/cmd/ccom/vax/stin>
<https://www.tuhs.org/cgi-bin/utree.pl?file=V8/usr/src/cmd/ccom/vax/stin
<https://www.tuhs.org/cgi-bin/utree.pl?file=V8/usr/src/cmd/ccom/vax/stin>>
>
> - The program that translates the “stin” file to a “table.c” file is here:
https://www.tuhs.org/cgi-bin/utree.pl?file=V8/usr/src/cmd/ccom/common/sty.y
<https://www.tuhs.org/cgi-bin/utree.pl?file=V8/usr/src/cmd/ccom/common/sty.y>
<https://www.tuhs.org/cgi-bin/utree.pl?file=V8/usr/src/cmd/ccom/common/sty.y
<https://www.tuhs.org/cgi-bin/utree.pl?file=V8/usr/src/cmd/ccom/common/sty.y>>
>
>
> ====
>
> Sometimes one thing leads to another.
>
> Following the recent mention of some retro-brew 68K single board systems, I decided
to build a CB030 board (in progress). I figure it is a rough proxy for a 1980 VAX and
would allow for some experimentation with the 32V / SysIII / 8th edition code.
>
> My first thought was to use the M68K compiler that is included with the Blit sources
(see THUS Archive for this), as I had used that before to explore some of the Blit source.
That compiler is LP32, not ILP32 - which may be a source of trouble. Just changing the
SZINT parameter yielded some issues, so I started looking at the PCC source.
>
> This source does not have a “table.c” in the well known format as described in the “A
tour of the portable C compiler” paper. Instead it uses a file “stin” which appears to be
in a more compact format and is translated into a “table.c” file by a new pre-processor
("sty.y”). Then looking at the VAX compilers for 8th and 10th edition, these too use
this “stin” file.
>
> All the other m68K compilers (based on pcc) that I found appear to derive from the
V7/32V/SysIII lineage, not from the 8th edition lineage.
>
> A quick google did not yield much background or documentation on the STY format.
>
> Anybody on this list that can shed some light on the history of the STY table and on
how to use it? Any surviving reports or memos that would be useful?
>
> Many thanks in advance
>
> Paul
>