I have been stuck for several days in the development of the Denyonet TCP/IP BIOS due to a bug that I was not able to trace. I was testing one of my applications and I found that while it worked fine with InterNestor, with Denyonet it hanged the computer as soon as some TCP data was received.
Finally I discovered the cause. It was not the fault of the Denyonet BIOS, but of the application. The problem is that the Denyonet UNAPI entry point, which is on page 1, is invoked via a call to CALSLT, and the code that does the CALSLT call is on page 1 as well. As soon as I moved this code to page 2, everything works fine.
This is probably caused by a bug in my code (altough I can't find it no matter how carefully I inspect it), but anyway I wanted to ask: is there any rule that forbids invoking CALSLT from a certain page in order to execute code in another slot but in the same page? Something special about page 1? I couldn't find anything like this on MSX2 Technical Handbook.
By the way, the application is made with SDCC. It can be as well that the compiler is doing something that I don't expect when compiling...

