I have noticed that the Kiel compiler doesn't produce the correct interrupt vector if 8051 interrupt numbers are used. For example for external interrupt 0 (IE0), the interrupt number has to be 0, instead of 1 to produce a jump at location 1. Example:
void edge1 (void) interrupt 0{ /*produces correct code
while
void edge1 (void) interrupt 1{ /*produces wrong code
This is the case with all the interrupts I have used. My questions is what do you have to do to produce a reset vector? Reset is interrupt number 0 in 8051 numbering. Using -1 or 255 both produce a compile error.
Another - possibly more fundamental difference - is that interrupts by definition interrupt normal program execution and return where they left off afterwards
That describes the normal usage of an interrupt, but at the risk of getting into another intractable and pedantic discussion you might say that:
"interrupts by definition interrupt normal program execution"
and that:
"the return from interrupt instruction by definition returns to where execution was interrupted by the last interrupt provided that there was no messing with the stack in the intervening period"
I'm sure you'll now point me to some document that defines interrupt as precisely what you've written. above, though.
Now you're just being needlessly pedantic...!
;-)