
Сообщение от
Oleg N. Cher
А насколько это будет правильно исходя из обилия клонов с тонкими различиями в работе? Или по этому вопросу не выработано единого кодерского мнения?
Проблем с клонами не будет. Я бы сделал так:
Код:
setup_im2:
ld hl,#fe00
ld a,h
ld de,#fe01
ld bc,#100
ld (hl),#ff
ldir
di
ld i,a
im 2
ld a,#18 ; jr *
ld (#ffff),a
ld a,#c3 ; jp **
ld (#fff4),a
ld hl,ISR
ld (#fff5),hl
ei
ret
Процедура сформирует следующее:
1. Таблицу векторов прерываний из 257 байт с #fe00 по #ff00 включительно. В тиаблице будут байты #ff. Получается, что сама процедура будет по ардесу #ffff
2. Команду перехода jr #fff4 по адресу #ffff (смещение перехода возьмется из адреса #0000 в ПЗУ, а там #f3 - код команды di).
3. Команду перехода jp ISR по адресу #fff4 - переход на, собственно, процедуру обработки - плеер, например.
4. Ну и, собственно, включит im 2.
Кстати, байты #ff01 - #fff3 и #fff7 - #fffe можно невозбранно использовать по своему усмотрению.
---------- Post added at 05:36 ---------- Previous post was at 05:27 ----------

Сообщение от
Oleg N. Cher
Отчего же, можно узнать?
Я вижу только один большой минус: основной код и данные должны заканчиваться до #f3f3, а обработчик прерывания или прыжок на него гарантированно находиться по адресу #f3f3. Это минус 3 Кб в ОЗУ. Ну либо "обтекать" кодом #f3f3 и дальше. Геморно на ЯВУ, ИМХО.