SaNchez, что это у тебя на стеке за фигня происходит по приходу прерывания?

Код:
это делается так
 di
 ex (sp),hl ;забираем адрес возврата
 ld (im_jmp),hl ;сохраняем адрес возврата
 pop hl ;забираем HL
 ld (im_store),sp ;сохраняем стек
 push de ;правим данные
;---------------
 ld sp,твой новый стек
здесь твой обработчик


;-----------------
       ei
       ld sp,$     
im_store equ $-2
       jp $
im_jmp equ $-2