Structured Fortran - was Re: Self modifying code, lambda calculus

Chuck Guzis cclist at sydex.com
Tue Sep 22 13:11:00 CDT 2015


On 09/21/2015 11:37 PM, Dave Wade wrote:
> If you wanted portability then Fortran or Cobol were pretty much all
> you had. Whilst there may have been C compilers you probably didn't
> have one, certainly in the world of commerce. Which is why our X.25
> code was in Fortran..

There's always PRIMOS, the operating system used on Prime minis being in 
FORTRAN.  Although they later adopted PL/I, both versions of the system 
definition ("include") files were maintained.

Then there are specific dialects of FORTRAN; e.g. LRLTRAN used at 
Lawrence Livermore.  Much of the STAR-OS was written in that--but said 
dialect, in addition to having numerous extensions, also allowed inline 
machine code statements.

National's assembler for Programmable Array Logic (PAL) chips, I 
believe, was distributed as a FORTRAN product.  Several microprocessor 
cross-assemblers were likewise offered by their manufacturers.

In the 1960-70s, you really couldn't have a truly "portable" FORTRAN 
product unless you hewed to USA BASIC FORTRAN IV, which is a very small 
subset of what an F77 programmer might recognize as FORTRAN.  But back 
in the 60's, every manufacturer had its own variety of FORTRAN, 
including (IIRC), UNIVAC's own "FORTRAN V".  FORTRAN II in general was a 
free-for-all, varying between machines from the same manufacturer.
------------------
On a somewhat related note, the earliest published work that I can find 
that describes translation from one computer language to machine code 
involving an intermediate language is the "FOR TRANSIT" for the IBM 650.

A manual scan by Paul Pierce is here:

http://www.piercefuller.com/collect/650man/fortransit.pdf

Basically, FORTRAN source is converted to 650 IT, which is then compiled 
to SOAP, which performs the assembly function.

For those wondering about the notion of an "optimizing" assembler, one 
has to realize that 650 instructions were executed from a drum and were 
of the "1+1" addressing type.  Calculating the optimal address of the 
next instruction was very tedious and a perfect task for automatic 
optimization.

--Chuck


More information about the cctech mailing list