Нет, IM2 будет запускаться по адресу (#00ff) = #4fce. Если вызывающий код это не предотвратил, это его проблемы. А вот если вызывающий код сделал просто di или im 1, и не переставил I в быструю страницу, то на экране будет снег из-за попадания I в меделнную память. Эта процедура гарантирует, что при переключении страниц I останется в ROM или в гарантированно быстрой нулевой странице.
Ага, сейчас я вспомнил, что по адресу #<I>FF должен находиться адрес перехода, а не сам переход. Ппц, старею.
Непонятно, что будет, если прерывание произойдёт, когда I=#00 и адрес прерывания #4fce. Я имею ввиду, скорее всего штатный обработчик движка в этом случае вызова не получит и в обработке будет "дырка".
Также странно, что прерывание не запрещено на время выполнения этого "переключающего" кода, ведь если прерывание случится после установки I, но перед переключением страницы, последствия могут быть "замечательными" вплоть до рестарта. Скажем, была включена страница #2, вошли в эту процедуру с B=0 (хотим нулевую страницу включить), внутри этой процедуры I установили в #f0, страницу ещё не успели поменять, и тут происходит прерывание!
А не логично ли будет убрать всю эту муть с переключением I и просто воткнуть постоянный вектор где-нибудь в области #8000-#bfff ?
Epsilon, а с чего ты решил что переключение страниц/изменение I делается при разрешённых прерываниях ???
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)