below

On Mon, Oct 27, 2014 at 4:35 PM, Ronald Natalie <ron@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.

Clem

Clem



 

>
> 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@minnie.tuhs.org
https://minnie.tuhs.org/mailman/listinfo/tuhs