так что тут мы ничего не теряем.
исключение составляет очередь процессов реального времени, обязанных выполняться по очереди каждое прерывание. для них нужно вводить специальный флаг, который будет выставляться каждое прерывание обработчиком и сниматься диспетчером по окончанию обработки той очереди. но тут есть узкое место- в предложенной ситуации пропуск прерывания означает вероятный пропуск диспетчеризации очереди процессов реального времени. как вариант, можно использовать отложенные прерывания. например:
int_routine:
push af
ld a,(int_flag)
or int_comeon
ld (int_flag),a
and pended_interrupt
jr nz,skip_int
push bc
....
pop bc
skip_int:
pop af
ei
ret
;somewhere in system
yield
ld a,(int_flag) ;beneath DI
or pended_interrupt
ld (int_flag),a
...