External interrupts generated by TCP/IP stacks
Hi,
I've got a problem that perhaps the program MiamiDX causes using a TCP/IP stack and generating spurious interrpts, maybe the PORT-int. See also http://eab.abime.net/showthread.php?p=675900&styleid=4 My demo takes over the machine and uses INT6 & TNT2 generated by the CIA-timers for the tracker-replay-routine. If the CIAs are not the source of the inerrupts, then the INT2/6 is acknowledged and the routine returns by a NOP + a RTE. I guess the only way to handle this, is to close MiamiDX and starting my demo after that. Otherwise my demo freezes but the music keeps playing.It seems that the CPU doesn't reach a user mode any more to execute my effects. |
Quote:
I would make a note at the start of your demo to request user temporarily halts the process so that your demo can run. |
The TCP/IP stack shouldn't get cpu cycles anymore, when the demo has taken over the system. I guess the problem is that the network card's device driver has enabled interrupts on the chip (for sending/receiving packets), which still happens. And as you never acknowledge these interrupts they will immediately occur again, after leaving the interrupt routine.
Difficult to fix, as you don't easily know which network interface chip is running. |
I would personnally solve this case by not taking over the machine ;)
|
Quote:
|
Quote:
|
Quote:
But doing it for performance is IMO not worth. If you're running a TCP stack and in the same time have enough system resources to run a demo then the machine is obviously not an unexpanded A500. There is little benefit in killing the OS with fast enough machines having lots of memory, as AmigaOS isn't exactly a cpu hog. So if you just leave multitasking on you should not see a difference. |
Quote:
Talking about an expanded amiga, you are right. There, the AmigaOS isn't exactly a bottleneck as on slower systems. |
Quote:
|
Quote:
|
Quote:
You could check if some TCP stack is running, and if it's the case, don't take over the system. Or check memory size to see if the A1200 is expanded or not. Alternatively, if you detect a spurious interrupt, transfer control to the previous interrupt vector so that it can be handled. Of course if you completely destroy the system then you're locked ! Or, leave the OS running and set task priority to max, while eventually disabling all interrupts you're not using. Or else, detect the case and restore the system if it happens, so you can display some error message. But the simplest way is probably to show some popup asking the user to close the relevant apps. Or just say that in the readme. Because you can never know what kind of hardware has been plugged in and the interrupts it might cause... |
Hey, many thanks for your ideas, meynaf. :) I nearly had the same thoughts:
Quote:
Quote:
Quote:
Quote:
Quote:
Quote:
Quote:
|
Quote:
|
Hello,
I also had to same issue with a subway USB card in my A1200, with the Poseidon stack. Some more hints on how to deal with it with Poseidon in this topic. |
Quote:
|
Quote:
So I guess I only have to try to open this library: Code:
I will check this, if I have more time. |
Probably won't work with RoadShow. RoadShow (IIRC) is the only stack to have a physical bsdsocket.library. Running OpenLibrary() might actually start RoadShow!
|
Try loading bsdsocket.library with loadmodule?
|
Quote:
|
FindResident() might be an option.
|
All times are GMT +2. The time now is 06:06. |
Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.