Hi Guy,
Merry Xmas and Happy New Year to you too!
Thanks for pointing out that you had actually modified the Xmal.x in you download - I hadn't realised until you said. I would make the following comments.
1. I am already working on v1.02 so will modify this in the light of your work.
2. I have use the EXPLICIT directive and added the necessary explicit declarations. However, I do not see why AUTO, AUTOX declarations are not recognised. These are just XLONGs with certain restrictions. Having used the EXPLICIT directive to check the file out I intend to comment it out now and just use it as a checking aid after any major work. I will consider whether to reinstate the AUTOX variables once EXPLICIT is turned off but I think they will be OK as standard XLONGs. I have corrected the QNAN / QNAN() typo.
3. When you added the explicit declarations to your version you missed an important point. Many of the functions - e.g. erf(), Gamma() - have an extra LONGDOUBLE keyword to the right of the function parameter list. This tells the compiler that any variable in that function NOT explicitly declared is a LONGDOUBLE. You have declared them as XLONG. This means the affected functions in your xmal will not work correctly and may well crash. I have put the correct LONGDOUBLE declarations in my xmal.
4. Your fix for the jmp > end.Product.xmal is not required - but thanks anyway. The problem here is caused only by the > direction indicator. When you code a direction indicator in Goasm, it expects to find the label in the same source file. For the dll, it will find it and all is well. When buildlib is used to create the static library, the subroutine is split off into a separate file and the label is no longer found. If the > direction indicator is removed, Goasm happily leaves it to the linker to resolve - which it duly does when it finds the label in the main body. The problem is fixed merely by removing the > and coding jmp end.Product.xmal.
5. Unfortunately, there is no easy fix for the inability to use generated #define statements within a SUB routine when using buildlib. The code has been altered not to use these and replaced with the defined value e.g. ebp - 44.
6. I have now successfully built both a .dll and a .s version from the same source code and David has confirmed this too. I now need to do a bit of testing on the static library to make sure all the functions are usable and when I am happy with it I will post a new version on the forum. Please do not circulate your version with the broken functions.
Alan