Re: your mail

Richard B. Johnson (
Tue, 9 Sep 1997 09:18:33 -0400 (EDT)

On Tue, 9 Sep 1997, Alan Cox wrote:

> > likely originally ported from Pascal. Pascal took care of many things,
> > just like FORTRAN. Early 'C' was more Pascal-like than it is now. Real
> > early 'C' was called 'B' and even had Pascal-like syntax.
> Bollocks quite frankly. Pontificate on things you know about because I just
> happen to be an ex B programmer. B and C have a very similar syntax. There
> are obvious differences. B is typeless (almost) and requires the use of
> the auto keyword or "extrn" rather than extern - eg
> my_func(x)
> {
> auto y[100];
> extrn z;
> y[40]=x;
> 40[y]=x; /* in a typeless world its the same thing
> y+=50;
> }
> B was allegedly abstracted from bits of BCPL (cut down BCPL=B) which
> did have a few minor things in common with pascal notable := for
> assignment. The curious can find a free BCPL kit on

Not bullshit at all. You just __CONFIRMED__ exactly what I stated!

I made a 'B' compiler when working for General Electric. It was
written in FORTRAN and ran on a PDP-8. It was actually a cross-
compiler and it generated binary (no linking) for a 8080 which
was Intel's new "traffic-light controller". This was presumed to
have some use as a "computer" so many companies were trying to
find uses for the samples provided by Intel.

My early coding for this device was in assembly and I had to write
the assembler also because there were no such assemblers available
yet. I learned about 'B' from a co-worker who had worked for Xerox.
None of us knew anything about what AT&T was doing so none of us
knew about Ritchie's work. The 'B' compiler made coding very much
easier. We worked closely with Intel. General Electric provided the
floating-point libraries that I developed to Intel. There was no
global data. Everything had to be done on the stack and you could
not manipulate the stack-pointer directly, i.e., no add sp NN. Therefore
there were multiple pushes and pops (with few registers to save
temporary data).

This floating-point library, generated in 'B', targeted to the 8080,
was hand-recoded in assembly for optimization, and provided to Intel.
This is likely where the floating-point listings that were used by
Bill Gates for his BASIC came from.

Several years later, Gary Kildare started Digital Research and developed
CP/M. He provided more proper tools for the new Intel devices including
an assembler an debugger (DDT). The stuff I had done was now truly
obsolete. When Microcomputers took off, long before there was an "apple"
everybody started to claim "firsts" for everything. Note that UNIX
first ran on a PDP-11/34. This machine's native operating system was
RSX-11, a reasonable development environment. I would be quite surprised
if Ritchie's first 'B' compiler was not written in FORTRAN also. There
was a great deal of literature available at the time including many
"user-groups". My BBS System (the PROGRAM EXCHANGE) which goes back
to the days of XMODEM and Ward Christensen, was dedicated to the new
languages as they were developed.

However, since I worked in the trenches before many tools were available,
I ended up writing many compilers and assemblers for many languages.
The compilers were always written in FORTRAN with some MACRO thrown in
with PDP-8, PDP/11-32, VAX/11-730, VAX/11-785, etc., platforms. The
target machines were always Intel or Zilog chips.

Since I am 53 years of age and have been working in this industry for a
long time, I have been involved both with hardware and software during
the time that many advancements have been made. If you take offense
to my claim of "been there, done that", you could check around. I'm
in the book.

Richard B. Johnson
Analogic Corporation
Penguin : Linux version 2.1.54 on an i586 machine (66.15 BogoMips).
Warning : It's hard to stay on the trailing edge of technology.
Linux : Engineering tool
Windows : Typewriter