At 06:24 PM 6/7/2017, Victor Miller wrote:
I remember an IBM FORTRAN manual stating that arrays were stored in "natural" order -- backwards! The index registers on the 709/7090/7094 subtracted.
Yes! Curiously, IBM saved money on the 7040 (a poor man's 7090) by dispensing with 4 of the 7 index registers -- remember, each bit of an index register was an entire card full of transistor electronics (I seem to recall), so 4x15 = 60 cards saved. So the question is: what happened if you specified index register 5 = 0b101 (which didn't exist on the 7040) ? Answer: the 7040 OR'd the bits of register 1 = 0b001 and register 4 = 0b100, providing a really, really obscure way to OR two 15-bit quantities! Needless to say, the 7040 Fortran compiler didn't make use of this capability, but someone in the medical/statistical computing group that I worked for did: he arranged 3D subarrays and used the 3 index registers for the x,y,z coordinates -- he could index up to a 32x32x32 3-D array this way. (We were simulating the effects of radiation on human tissue, so 3D "voxels" -- although that term came decades later -- were important.) The 7040 never trapped/interrupted on an un-recognized op code; it simply did the best that it could. So we tried to completely map out what all of the non-standard op codes did. Sadly, we never found anything terribly useful -- the best we could do was a block-move-and-complement-every-other-word! Good luck trying to do something useful with that one!