That's a good question...

I wonder if something like this would work?

Code:
x VAR BIT

;----------------------- Setup Interrupts --------------------------------
INCLUDE "DT_INTS-18.bas"     ; Darrel Taylor's Base Interrupt System
INCLUDE "ReEnterPBP-18.bas"  ; Include if using PBP interrupts
ASM
INT_LIST  macro ; IntSource,          Label,  Type, ResetFlag?
    INT_Handler    INT0_INT,     Button_ISR,   PBP,  yes
    
    endm
    INT_CREATE             ; Creates the interrupt processor
ENDASM

;----------------------[Initialise Interrupts]-----------------------
@   INT_ENABLE  INT0_INT         ; Enable Button interrupt input
x = 0       ' Clear button status flag bit

PAUSE 100
GOTO loop1  ' Start at loop1 routine

' ---------------- Independent program routines -------------------------
loop1_start:
@ INT_RETURN    ; Reset the ISR

loop1:
    ' Perform one type of "time critical" function
GOTO loop1


loop2_start:
@ INT_RETURN    ; Reset the ISR

loop2:
    ' Perform a different type of "time critical" function   
GOTO loop2

;--------------------[Program routine selector ISR]----------------------
; make sure button signal debounced

Button_ISR:    
    x = !x      ' Toggle x status flag bit
    
    IF !x THEN
        GOTO loop1_start    ' Go here when x=0
    ELSE 
        GOTO loop2-start    ' Go here when x=1
    
@ INT_RETURN
Like Henrick said, the routines could be cut short anytime the button is pushed though.