Early Programming Books
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.
More information about the cctalk