Cpp was definitely in v6, and I'm pretty sure it was in earlier editions. The first pass of the C compiler would invoke it if the first byte of the source file was a '#'. However, the early version only did #define and #include. It was rewritten for v7, I believe, introducing the catastrophe of #ifdef, while the existential horror of #if was later still, foisted on us by someone not in Research.

-rob


On Sun, Feb 27, 2022 at 9:53 AM Clem Cole <clemc@ccc.com> wrote:

Some thoughts ..

1.) the precursor to the csh is the newshell in {1}BSD.  It's Joy's hack to the Thompson shell and you might find it more usable.
2.) PWB 1.0 is based on a V6 kernel and has the Mashey Shell, which is in C and predates Bourne's  It might also be easier for you to use.
3.) srb wrote his shell during the transition between V6, TS and V7.   At least one version ran on the V6++ system we had at CMU, but of course as pointed out, it is written in Bourne-Gol. And I'm pretty sure his CPP definitions will need at least a gen2 /lib/cpp implementation***  However, Steve was also doing it at the time when the compiler was being updated.  FWIW: We also had the 'Typesetter C' running on our V6 system in those days.  So my >>guess<< is that v6 + Typesetter C - will compile the V7 shell.

Clem



*** Rob or Steve Johnson - maybe remembers when cpp first appeared.  I don't remember if it was part of V5 or not - those bits have faded from my brain.  What I do remember is there were a couple of different cpp's early on.  The first one was pretty crude by today's standards, albeit it was a cool idea and it was the one thing I really liked about C over BLISS early on [BLISS had Macros, which was cool aalso, but cpp could do things Bliss could not].