-rw-rw-r-- 1 gray 87822 Sep 25 15:14 881.zoo ******** gnu881.inf ******** GNU881.INF Some info about these libraries Michael Ritzert Liebermannstr.8 5309 Meckenheim Germany ritzert@dfg.dbp.de History: most of these routines have been ported to gcc from a library patch to AC-Fortran i've developed a while ago. There has been an intermediate version compatible to John Dunning's library to gcc 1.34 (thank You very much, John, for the initial ports of gcc!). The library runs with the original Atari sfp004 in MegaSTs and the Boards of Weide and Lischka. It has been tested with hardware accelerators (the 68000-hypercache and the hypercache 030). With the '030 in connection to an st-compatible 68881 card, the internal caches of the cpu have to be switched off, due to a (documented) bug in the caching logic of the 68030. See pro_VME's documentation. Features: The library is more or less compatible to pml, which belongs to the gcc.1.37-distribution of Jwahar Bammi (Thanks a lot for the great work You, Eric and all the others spend in that tool). It has been used to compile sc 6.8 and gnuplot 2.0. The library addresses the coprocessor registers directly; there is no linef support. If You use it in connection with MiNT, please be careful to start ONLY ONE process that uses the fpu since nothing has been implemented to overcome the mutual exclusion problem! Error handling has been implemented in a very rudimentary way (well, I believe it's a bit better than in pml). I make use of the fact that the 68881 handles floating point exceptions in a self consistant manner: Overflows are represented by a signed infinity, operations leading to undefined results like 0/0 will be represented by a NAN (not a number) symbol. It is also signed; but i never saw a negative NAN appearing. In cases where it is (a) simple and (b) not time critical to check these conditions, this has been implemented. There is no exit on the appearence due to floating point exceptions, due to two reasons: (a) the 68881 is able to use these symbols in a logical and self consistent manner in the computations. (b) there are a lot of algorithms which are not very sensitive to, say, floating point overflows. It would not be wise to stop the computation in these cases. Anyway, the user should (and will be) informed about floating point exceptions. The IO routines have been extended to handle Infinities and NANs. The original printf crashes upon the appearence of a NAN. Now, +-Infinity or Not A Number is written to the device (better than FORTRAN's stars). This library CANNOT be used on systems with a real hardware interface between cpu and coprocessor, i.e., STs with a PAK20, a hypercache030 or other 68020/68030 cards with a 68881/68882 on board or the TT. On these boards, the line-f commands have to be used. Installation: Add the files 881.olb (32 bit int) and 88116.olb (16 bit int) to $GNULIB. Link with -l881 or -l88116. Conclusion: We are in urgend need of a standardized floating point interface for ALL Motorola based Ataris. A few months ago, it has been demonstrated in an article published in the c't magazine that a full line-f floating point interface can easily be implemented in any ST, even those, whose TOS abuses line-f. Enjoy, Michael Ritzert