Hi John (John Payson), in <199709170231.VAA28588@Venus.mcs.net> on Sep 16 you wrote: > [2] Use something like this [nb: this uses up an extra stack level] > > Intr: > btfss RP0 > goto NotSet > bcf RP0 > call IntMain > bsf RP0 > retfie > NotSet: > call IntMain > bsf RP0 > retfie > > IntMain: > movwf WSave > swapf STATUS,w > movwf SSave > ... > swapf WSave,f > swapf SSave,w > movwf STATUS > swapf WSave,w > return ; ** NOT RETFIE! > > This is a bit clunky, but it should be workable. I didn't work with those parts yet, but how about having TWO save registers, at the same position in each bank? Int: movwf WSave ; can be in any bank swapf STATUS,w [switch to bank0] movwf SSave ... swapf SSave,w movwf STATUS ; back to that bank swapf WSave,f swapf WSave,w retfie The WSave location must be reserved in _all_ banks for this to work. Just a thought.