From: krw on
In article <1161098254.337809.64750(a)b28g2000cwb.googlegroups.com>,
carey.schug(a)gmail.com says...
>
> James Parsly wrote:
> > When I was in high school, back in 1975, we had an IBM 1620
> > with a Fortran II compiler. It had 20K digits of memory and no
> > disk or tape of any kind.
>
> in 1965-66, we had 40K of memory (60K was the max you could get). BTW,
> the 1620 model 1 used table lookup for addition and subtraction, using
> locations 100-199 for the add table and 200-399 for the multiply table.

Wasn't the 1620 also known as the CADET (Can't Add Didn't Even
Try)? They're a little before my time though.

> The model 2 only used table lookup for multiply. The optional
> floating point hardware would do decimal mantissas up to 98 digits
> long, more precision than any other computer I know of. Might have
> only been 48 or 49 for division.

--
Keith
From: Gordon Sande on
On 2006-10-17 13:51:11 -0300, krw <krw(a)att.bizzzz> said:

> In article <1161098254.337809.64750(a)b28g2000cwb.googlegroups.com>,
> carey.schug(a)gmail.com says...
>>
>> James Parsly wrote:
>>> When I was in high school, back in 1975, we had an IBM 1620
>>> with a Fortran II compiler. It had 20K digits of memory and no
>>> disk or tape of any kind.
>>
>> in 1965-66, we had 40K of memory (60K was the max you could get). BTW,
>> the 1620 model 1 used table lookup for addition and subtraction, using
>> locations 100-199 for the add table and 200-399 for the multiply table.
>
> Wasn't the 1620 also known as the CADET (Can't Add Didn't Even Try)?
> They're a little before my time though.

The use of look up tables meant that they were great at octal arithmetic
if you replaced the tables with the suitable values for octal!

>> The model 2 only used table lookup for multiply. The optional
>> floating point hardware would do decimal mantissas up to 98 digits
>> long, more precision than any other computer I know of. Might have
>> only been 48 or 49 for division.


From: James Parsly on
The compiler we used did have an option that allowed you to read in the
fixed subroutine deck, and
it would add the parts that your program used to your deck. I suppose that
idea was to create
a "stand alone" deck that didn't require you to dig out the fixed subroutine
deck every time you
wanted to run.

We were encouraged not to do this, as it wasted a whole bunch of cards. Of
course, most of
what we were doing was running class assignments anyhow.

I remember doing a numerical integration using inscribed rectangles of f(x)
= 1/x from 0 to 2 using various delta x
values. For a 10000 iteration case it took 45 minutes to run. My father ran
the same program
on the mighty IBM 360 computer at ORNL and it took 15 seconds.

My very first job was working with this same computer the summer after I
graduated. We spent the later
part of our senior year writing a set of programs to handle class scheduling
for the high school.
I spent my summer running programs that added up enrollment, checked for
conflicts, etc..

"sqrfolkdnc" <carey.schug(a)gmail.com> wrote in message
news:1161098254.337809.64750(a)b28g2000cwb.googlegroups.com...
>
> James Parsly wrote:
>> When I was in high school, back in 1975, we had an IBM 1620
>> with a Fortran II compiler. It had 20K digits of memory and no
>> disk or tape of any kind.
>
> in 1965-66, we had 40K of memory (60K was the max you could get). BTW,
> the 1620 model 1 used table lookup for addition and subtraction, using
> locations 100-199 for the add table and 200-399 for the multiply table.
> The model 2 only used table lookup for multiply. The optional
> floating point hardware would do decimal mantissas up to 98 digits
> long, more precision than any other computer I know of. Might have
> only been 48 or 49 for division.
>
> My recollection:
>
> First, real programmers don't use precompilers to check syntax.
>
> 1. load in pass one of compiler
> 2. read in source program, punching intermediate output, maybe 1/5 the
> size of source.
> 3. remove intermediate output and put aside
> 4. hit start and punch out symbol table.
> 5. load in pass 2 of compiler
> 6. put symbol table IN FRONT OF intermediate output and read into pass
> 2, punching object deck, maybe double the size of the original source.
> 7. read in subroutine library, punching out those that you needed
> 8. Read in "loader" followed by object deck to execute?
>
> I'm not sure of #7 & #8, maybe you did or could skip #7 that and
> instead read in the subroutine library when you executed the program,
> maybe the "loader" was just the 3 card "clear storage and load".
>


From: Gerard Schildberger on
| sqrfolkdnc wrote:
|> James Parsly wrote:
|> When I was in high school, back in 1975, we had an IBM 1620
|> with a Fortran II compiler. It had 20K digits of memory and no
|> disk or tape of any kind.

| in 1965-66, we had 40K of memory (60K was the max you could get). BTW,
| the 1620 model 1 used table lookup for addition and subtraction, using
| locations 100-199 for the add table and 200-399 for the multiply table.
| The model 2 only used table lookup for multiply. The optional
| floating point hardware would do decimal mantissas up to 98 digits
| long, more precision than any other computer I know of. Might have
| only been 48 or 49 for division.
|
| My recollection:
|
| First, real programmers don't use precompilers to check syntax.
|
| 1. load in pass one of compiler
| 2. read in source program, punching intermediate output, maybe 1/5 the
| size of source.
| 3. remove intermediate output and put aside
| 4. hit start and punch out symbol table.
| 5. load in pass 2 of compiler
| 6. put symbol table IN FRONT OF intermediate output and read into pass
| 2, punching object deck, maybe double the size of the original source.
| 7. read in subroutine library, punching out those that you needed
| 8. Read in "loader" followed by object deck to execute?
|
| I'm not sure of #7 & #8, maybe you did or could skip #7 that and
| instead read in the subroutine library when you executed the program,
| maybe the "loader" was just the 3 card "clear storage and load".

You are recollecting the IBM FORTRAN II compiler. There was a Kingston
FORTRAN II compiler that needed:

40k
no hardware floating point
and did it at card reader speed --- in one pass.

Fantasic compiler --- I still have the language specs. _______Gerard S.



From: Rostyslaw J. Lewyckyj on
glen herrmannsfeldt wrote:
> In comp.lang.fortran Rostyslaw J. Lewyckyj <urjlew(a)bellsouth.net> wrote:
>
> (someone wrote)
>
>>>>>I don't know why PI wasn't a function.
>
>>>>I do. Fortran did not support macros.
>
>>>I don't understand what you meant here.
>
> (snip)
>
>>But, To have the compiler automatically furnish a value
>>at compilation time you need to name it eg "PI" , and then
>>you refer to it using that name "PI" throughout the code.
>>I.e. you have introduced the mis feature of reserved keywords
>>into the language. :)
>
> As an intrinsic function it would not be any different
> than any other intrinsic function. It could even
> have an argument which was then multiplied by pi.
> (Especially useful on non-binary machines.)
>
> Original PL/I has argumentless functions that don't
> require the (). While not exactly a reserved word
> problem, it does complicate adding new features to the
> language. (That, and implicit variable typing.)
> Later, the use of () was added.
>
Well yes and no. The intrinsics are not really a part
of the language, though almost. I don't believe any such
functions are mandated for the language in the standard.
They are functions known to the compiler that are a part
of the supporting libraries, and the compiler generates
special execution time calls to the these functions.
(I don't think any of these are evaluated at compile time )
Also while the compiler may generate special calls to
its' own versions of these routines by default,
it can be informed to treat these names as user provided
EXTERNAL routines called with the standard subroutine,
function, linkage.

> (snip on initializing variables in a DATA statement.)
>
>>(An interesting detail of this is that if for any reason
>>the code module into which the initialization of ABC is compiled
>>is reloaded during execution e.g. overlays, then the value
>>of ABC is reset ). (I don't know if SAVE would take care of this)
>
>
> It tends to be a linker function, and so might violate the
> standard. Compilers I used to know put static data into
> the same CSECT (relocatable unit) as code, and so could
> have this problem. COMMON blocks should be able to be
> moved into the appropriate overlay segment, the root
> segment if they should not be overlayed. PL/I compilers
> that I used to know put static initialized data into a
> separate CSECT, possibly for this reason.
>
Well plain DATA initializes local variables which are kept
in the same CSECT as the code. Theoretically, I suppose,
these variables could be placed into a seperate CSECT with
a special name, which the linker would automatically move
to the root segment, But I don't know of such.
The BLOCK DATA subroutine is used to initialize variables
in named COMMONs, and named COMMONs can be positioned in
the overlay under programmer control in the linker.
I know that one can have several different pre compiled
versions of a BLOCK DATA subroutine and link one in to
customize a program without needing to recompile the
other pieces. (I'm not explaining this well :( )

> -- glen

P.s. The start of this thread in alt.folklore.computers
was about some features of the original FORTRAN.
I added c.l.f to the distribution, so that experts might
correct my misstatements. :)
--
Rostyk