Early Programming Books

Chuck Guzis cclist at sydex.com
Mon Jun 21 10:26:22 CDT 2021


On 6/21/21 1:39 AM, ben via cctalk wrote:

> I have 'borrowed' copy of the Green dragon book.
> The book promotes code generation for a multi register machine. PDP 11,
> PDP 10, IBM 360. "(C) Bell Labs 1979 " I think is big hint here.
> 
> The machine model I am looking at is a single accumulator design like
> the 6800 or the IBM 1130. A AC,PC,Index and stack. No push or pop,
> subroutine call returns the old pc in the AC.

What is a register, but a memory location with a special name?    I'm
assuming that your model does have memory.  Again, look to the older
systems, such as the much-maligned (by Dijkstra) 1620.  You have *no*
user-addressable registers--it's all memory-to-memory.   In lieu of a
stack, you need temporaries in which to stash intermediate results.
(The IBM 360 has no stack.)

One of the restrictions of non-recursive functions in FORTRAN was
because the idea of a machine-implemented stack was relatively
uncommon--the Burroughs B5000 (1961) was an outlier in general systems
architecture at the time.

Thinking about registers, I recall that the initial versions of the
STAR-100 mapped the register file (256x64 bits) into the user's low
memory, so you could have both vectors and scalars as register-resident.
 It turned out later to play hob with the scheduling hardware, so the
capability was disabled.

> Is Fortran the newer version of FORTRAN ( I II IV )?

My recollection from X3J3 is that "Fortran" was officially endorsed with
F90.  F77 still has FORTRAN officially.

> There is very little to to bootstrap with today, that uses a small
> amount of memory.I need a cross compiler for my machine like K&R C
> style compiler ,not the latest C+-#@? compiler.
> I have no problem with a recursive decent compiler,I just have subtract
> divide and mod reversed in places, something I want to avoid as well a
> DISPLAY's like in Algol or Pascal.

For heaven's sake, all you need is a decent assembler--even a
cross-assembler.  Writing compilers in a HLL is a recent (post 1970)
thing.  Macros help to encapsulate things, but they're not an absolute
necessity. We used PL/M to provide a macro facility that ISIS ASM80
lacked because it was there and convenient.

> The machine works on FPGA delopment card, see the bliking lights on the
> kitchen table. No hypothetical here.
> 
> 1) Computer     Check
> 2) Front panel  Check
> 3) Bootstrap  loader Check
> 4) Software     No Check
> Stage 4 is the problem.

Sigh.  It's a shame that absolute (machine language) coding isn't taught
anymore.   The 1620 (and probably other IBM hardware) even had coding
forms for it--pencil-and-paper assembly coding.   My recollection is
that the absolute forms were on the reverse side of the SPS coding form.
 If you don't have another system to provide cross compilation/assembly,
you bootstrap from machine code.

There are two things that can etch instruction codes (not symbolic
aliases) into one's memory, more or less permanently.  One is absolute
machine-language coding; the other is analyzing postmortem memory dumps,
day after day.

--Chuck


More information about the cctalk mailing list