I thought I understood this interrupt thing, but NO! The following program will wake from SLEEP with GPIO.2 going high the first time, but not with subsequent highs. What am I doing wrong? (The last three lines never get executed.) Thank you for any help.

CMCON = 7
TRISIO = %001100
OPTION_REG = %01000000
GPIO = 0
T1CON = 0
@ DEVICE MCLR_OFF, INTRC_OSC_NOCLKOUT, WDT_OFF, BOD_OFF, PWRT_ON, PROTECT_ON

'GPIO.0 =
'GPIO.1 = LED HIGH OUT
'GPIO.2 = SWITCH HIGH INPUT
'GPIO.3 = MCLR TIED HIGH
'GPIO.4 =
'GPIO.5 =

Main:

HIGH GPIO.1
PAUSE 1000
LOW GPIO.1

INTCON.1 = 0
INTCON.4 = 1
FLAGS = 0
@ SLEEP
@ NOP

INTCON.1 = 0
HIGH GPIO.1
PAUSE 100
LOW GPIO.1

INTCON.1 = 0
INTCON.4 = 1
FLAGS = 0
@ SLEEP
@ NOP
HIGH GPIO.1
PAUSE 1000
END