On Mon, Oct 27, 2014 at 4:35 PM, Ronald Natalie <ron(a)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
In one, we made sure there was a RO page of zeros @ location 0, so we
could 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
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
TUHS mailing list