| ??? 12/01/00 07:34 Read: times |
#6867 - RE: High level interrupt |
Let's recount.
1. The location, YES. There is also a logic circuit in the CPU which you can't touch directly which now says: "low level interrupt service in progress" and "high level interrupt service in progress". The CPU needs to keep track of that to prevent more than one interrupt being serviced on the same level. This has nothing to do with the location of course. 2. You can return anywhere by decreasing the SP and pushing your *own* return address. Seen it, done it. (and to great avail. Very good CASE like routines can be built that way :) 3. The stack is there for all to see (and touch). At any time (except DURING a reset, heh heh) 4. The stack is just a chunk of memory. The CPU doesn't care how you mess it up. Check. 5. Hey! 5 is missing! recount! 6. All the CPU knows is that it is "servicing a high level interrupt" right now, and that a "low level service" is also active. If you thought I was saying it knew what LOCATION it came from... no way. All it knows is that it is now "servicing a high level interrupt", and that a "low level interrupt is also in service". They're internal "flags" to the CPU. You can't see them from software. But again, the cpu doesn't care what you do to the stack. 7. The cpu does that, and because you were so kind to execute the RETI instruction, it also (internally) clears the flipflop which says "high level interrupt service in progress". The flag "low level interrupt in progress" will not be cleared until you execute ANOTHER RETI. Both I nor the CPU care what will be on the stack when you do. Yes Al, it's been an interesting discussion, although I get the feeling that we are not as far apart as the discussion might have you believe. PS. Couldn't they just split the oval office up with plaster board? Hans |



