May i use your code in U_OS and place you in first in the list of creator of U_OS ?
Yes, sure. Anything I post in forums anybody can use freely.
A mention in your list would be nice, but of course make sure your first in the list. After all your doing most the work, I'm just helping here and there.
I've also been playing with your lazdyn_* file's and looking at your U_OS.pas file to create a more OOP version I once mentioned to you. I'm also using IInterface types, so that cross DLL/Development can be done easy. eg, been able to call from say C#/Delphi/VB etc. Once I've got to a stage that I believe is flexible, would you like to continue the project?
For an example of the code looks from an OOP pov->
S1 := UOS.NewStream;
S1.FileName := 'wav1.wav';
S1.Play;
If say you then wanted to play a stream in the background, it would look like->
S1 := UOS.NewStream;
S1.FileName := 'music.ogg';
S1.PlayMode := pmThreaded; //don't block
S1.Play;
And because it's using IInterface it will also look after memory for you. eg, in the above if there was no more reference to S1 and the file had finished playing, it would know to free itself.
For cross DLL boundary exception handling, I've also implemented an Exception Callback mechanism. eg. If say the caller of the DLL did UOS.setExceptionHandlerCallback(self); exception handling would then behave as expected, basically I've made sure all interface methods get wrapped into some like safecall logic, but better than safe call. Rather than getting a SafeCall exception that's no use to anybody.