[TUHS] speaking of early C compilers

Clem Cole clemc at ccc.com
Tue Oct 28 07:34:18 AEST 2014


On Mon, Oct 27, 2014 at 4:35 PM, Ronald Natalie <ron at ronnatalie.com> wrote:

> The original UNIX system calls returned error by setting the CARRY ("C")
> bit on the PSW.
​I've forgotten that factoid.   I remember running into issues with it
because the CMU 11/40E had special CSV/CRET ​

​microcode which we could not use on the 11/34.  I've forgotten all the
hacks we had associated with the system calls.

I do remember, when we moved the CS systems' to EE 11/34 have to unwind a
whole ton of that.   When tjk brought a UNIX/TS based kernel from MH to us
we had reintegrate.   I've forgotten all the details now, I just remember
many, many hours cleaning things up

> Some idiot decided in the split I/D mode (and later on the VAX) to put a
> ZERO at location zero.   This led to a lot more sloppy coding.

When we did Magix for the the Tek Magonlia, we cheated and put zeros
there.  But as got smarter and better (like Masscomp and Stellar), we have
two versions of the C runtime - "production mode" and "development mode."
In one, we made sure there was a RO page of zeros @ location 0, so we
c​ould take the traps and try to clean things up.   If I recall correctly,
Bourne Shell and ADB were two of the worst offenders.  I also seem to
remember the original V7 library code was riddled with those bugs  ( in
particular I seem to remember that malloc/free code), which is why it was
such a problem - you own code could be clean, but you brought in a library
and got in trouble.

The other things for those days, that has not yet been brought up was the
famous "NUXI" problem.   The  PDP-11 byte swapping was idemic in the code.
  When the first ports to system that were not the same "endianess" came
about - you would find strange things in memory.



> >
> > The cast syntax, arguably one of the ickiest parts of C syntax, was
> > invented in desperation -- we needed the feature, and there was no good
> > syntax proposal.  I blush to admit that the one Dennis chose is one that
> I
> > suggested, largely because (unlike some of the others) it was easy to
> > implement in Yacc.
> Yep, the problem was that the book said that a cast was to perform the
> same operation as assigning a value to an
> invented temporary of the cast type.   This of course, didn't fully
> explain it in the case of some cast behavior.   C++
> had to devolve the C cast into FIVE different kinds of cast to make it
> sane.
> _______________________________________________
> TUHS mailing list
> TUHS at minnie.tuhs.org
> https://minnie.tuhs.org/mailman/listinfo/tuhs
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://minnie.tuhs.org/pipermail/tuhs/attachments/20141027/b833bad3/attachment.html>

More information about the TUHS mailing list