OK, so let's look at how the whole process of ON INTERRUPT works.

When an Interrupt occurs, the hardware turns off the GIE bit, pushes the current address on the stack and then vectors to address 4.

At address 4, PBP only puts 1 opcode. RETURN

This pops the hardware generated address from the stack and immediately returns execution to where it was before the interrupt. But leaves the GIE bit turned off, so that no other interrupts can occur until the last one is handled. Because, it can only be Handled, after PBP is done with whatever it was doing at the time.

Then in-between each and every line of code (that's not DISABLED) it does a CALL to the interrupt "Checker" which simply checks to see if GIE is a 0 or not. If it is 0, it means an interrupt occurred and it does the GOTO that you see in the ONINT?LL macro;

It's that CALL to the checker that puts the address on the stack, so that it can return back to the point in-between lines that it jumped from.

So again, if a return never happens, the stack builds up.

An interesting side note is that many people think you can turn OFF all interrupts by clearing the GIE bit (myself included previously). But what that really does with ON INTERRUPT is to make PBP think that an interrupt has happened, it calls the handler (which shouldn't do anything since no Flags are set) and then turns GIE back on again. In order to turn off interrupts globally, that section of code must be DISABLED.

Can't figure how any other code I've written with ON INTERRUPT continues to work.
It all boils down to the one statement in the manual that seems so innocuous.
All previous return addresses will be lost in this case.

As long as you never want to go back to the sections of code that got interrupted, then the stack simply wraps around, and only NEW gosubs past that point will be returned to. That's not something that any of my programs would be able to tolerate.

On that little sample above - I don't think the DISABLE / ENABLE are needed, as the interrupt handler comes before the ON INTERRUPT statement (at least that's what the manual says).
Yup, you're right, anything before the ON INTERRUPT statement is considered DISABLED. My Bad.

HTH,
  Darrel