User talk:Vt320/Archives/2021/September

Floating point in S/38 and IMPI AS/400

Just an interesting note, perhaps not of general relevance:

The IBM System/38 Functional Reference Manual from February 1981 doesn't mention any support of floating-point numbers (it does, BTW, speak of "source/sink" for I/O, just as the Open Task Force Report did). Page 22-5, for example, has the format of descriptors for scalar data objects, and the scalar types, in a 3-bit field, are 0 for binary, 2 for zoned decimal, 3 for packet decimal, 4 for character, with all other values reserved.

The IBM i 7.4 MI specification does. For example, the Program Object Specification, in the "ODV Format" section, also has 1 for floating-point.

The "IBM AS/400 processor architecture and design methodology" paper you used as a reference on the IBM System i page for indicating that there were at least two generations of IMPI processor for the AS/400 shows a floating-point unit on the second-generation processor. Unlike S/3x0, it 1) has 8 floating-point registers rather than the 4 of S/3x0 (until z/Architecture, when they went to a full 16) and 2) uses IEEE floating-point (I think S/390 finally added that).

The IEEE standard wasn't published until 1985, so they probably didn't add floating-point until then. For the original S/38, they may have decided that floating-point wasn't necessary (it's not as if RPG is a big number-crunching language, and their customer base probably didn't do much number-crunching). I guess it became important enough to add at some point, either late S/38 or AS/400 (there was FORTRAN for System/36, but S/36's Main Store Processor was, I think, something similar to the S/3 processor, and it doesn't appear to have any floating point). Guy Harris (talk) 05:44, 22 March 2021 (UTC)

I believe floating point arithmetic was introduced relatively late into RPG, and in general there seems to have been a stronger emphasis on decimal arithmetic instead of floating point. I did some research into some old announcement letters for OS/400, and IBM notes that for languages such as Fortran and C that floating point was available, but that the AS/400 was not suitable for running floating point-intensive applications.[1][2] This makes me wonder if the AS/400's IMPI had floating point instructions, but they were emulated in software on some of the early IMPI systems. Vt320 (talk) 23:36, 22 March 2021 (UTC)
At least as of 1985, S/38 IMPI had memory-to-memory floating-point instructions, with IEEE 754-1985-style floating-point numbers, as per the IMPI reference. Earlier versions of the manual haven't been uploaded, so maybe they were added later. Guy Harris (talk) 03:15, 4 September 2021 (UTC)
Good to know, and the newly-uploaded S/38 docs in bitsavers are very interesting indeed. Vt320 (talk) 14:09, 20 September 2021 (UTC)