Richard Neitzel (04/07/88)
While looking through my KDJ11-A manual recently (looking for something else), I noticed the section on the Program Interrupt Request Register (PIRQ). This resister is at memory location 17777772 and the book states that setting the appropreiate bit will cause an interrupt at the specified level through vector location 240. Being a curious soul, I quickly wrote a priviledged task that set the PIRQ to interrupt at level 4 and ran it. (I am running RSX-11M 4.2C) "Nothing" happened. No crash, no console messages, etc. I tried setting the register and then saving it in a task register to display, but the register was set to 0. I tried to use odt to peek at the register, but got the same result. Well, thought I, RSX must have some code here that handles the interrupt by clearing the PIRQ and little else. Then I decided to try to do the same myself. I wrote a CINT task that attached to vector 240 and set the PIRQ to interrupt at level 4. BOOM! The system crashed and in looking at the crash dump, I noticed that the system stack pointer was at -48. The stack itself consisted of a regular repeating pattern. Now I am not an expert in reading crash dumps, but I assume this means the CPU started wildly asking for interrupts until RSX died. I looked at my CINT task and changed it to clear the PIRQ interrupt request bits, but the same thing occurred. My question is: why the wild interrupting and what am I doing wrong to control it. Since my first task didn't crash the system, I know RSX can handle the PIRQ. Then why didn't my CINT ISR seem to react fast enough. In fact, this seems a bit strange, since it seems to violate the interrupt service rules. After all, if the processor is servicing an interrupt and another occurs at a lower or equal level then that in the PSW, the others are blocked. My CINT specifies priority 7 on dispatch of the vector address, per the standard interrupt handling methods. Since I don't change the PSW and from the crash dump it is at level 7 when the crash occurs, how come the wild interrupting. What is it that I am overlooking? Lest you think that this is just esoteric playing, I can see some uses if I can tame this beast. A task could this as a psuedo-driver for example. In any case, if anyone can shed some light on this, I would greatly appreciate it. Richard Neitzel Rockwell International Computer Aided Manufacturing and Control Golden, CO 80402 303-966-7203