Sergey, очень странный код. А что делает ex (sp),hl после pop af : pop bc? Как по мне, она просто портит значение на стеке, которое располагается до аргументов и адреса возврата. Вы уверены, что так можно? Кстати, а зачем первой же командой во флаговый регистр посылается младший байт адреса возврата? Я слышал краем уха, что так можно, но боялся включить какие-то не те флаги. Только не смейтесь.

---------- Post added at 23:45 ---------- Previous post was at 23:35 ----------

Я к тому, что вот: сделали ex (sp),hl - положили значение hl в стек, а тут прерывание приходит и его портит. Потом мы его восстанавливаем уже некорректным... Я согласен, такое бывает редко. Но метко. Криво как-то написано. Нет? Я что-то не так понял?