ZX Hard
#00
31 августа 1998 |
|
Прерывания в Spectrum'е - схема для использования IM2 прерываний.
╔══──────────────────────────────────══╗ │ Прерывания в Spectrum'е │ ╚══──────────────────────────────────══╝ (c)VTS'98 Я тут где-то (sorry, не помню) прочитал обиду на то, что Спектрум имеет всего один уровень привелегий по прерывани- ям... Но извините, а как же IM2 ? Ведь с его помощью можно организовать аж 7 уровней приоритета (не считая обычного полукадрового INT'а) !!! Да еще с какой угодной организацией приоритетов, т.к. программируется интовой табличкой в ОЗУ! У кого нет мануала по Z80, объясняю. 1.Интовая табличка должна начинаться по адресу с мл.байтом=#01. Как всегда,млад- ший байт адреса процедуры обработки пре- рывания - по младшему адресу. Длина таб- лицы - 256 (байт) -> на 128 адресов. 2. При поступлении прерывания (вход INT/ Nemo-bus) процессор берет свой (прог- раммнодоступный) регистр I в качестве старшего байта, а то, что получил по ши- не данных (после выставления сигнала INTA/=IORQ/ OR M1/) в качестве младшего, и по полученному адресу читает из таб- лички адрес обработки прерывания. ! Attention ! D0 должен быть свободен, (следовательно=1), для однозначности оп- ределения адреса перехода. На первый взгляд это дает 128 возможных запросов без приоритета. На второй - 7 запросов с приоритетом. ┌─┐ IORQ/───┤1│ INTA/ ЛП8, АП6 и др. M1/───┤ ├──────┐ ┌───┐ м/с с ОК либо └─┘ │ │ │ Z-состоянием. └──oEO/│ │---│ IRQ1/─────────┤ > ├──────D1 ├───┤ IRQ2/──────── │ │ ─────D2 . . . . . . │ > │ . . IRQ7/──────── │ │ ─────D7 └ ─ ┘ REM> На схеме не показан процесс форми- рования INT'а (элементы ОК либо диоды): ЛП9 │ ┌──┐ │ IRQ1/───┤|>├──┬───INT/│ IRQ1/──|<─┬─INT/ ├──┤ │ │ │ IRQ2/───┤|>├──┤ │ IRQ2/──|<─┤ ├──┤ │ │ │ . . . │ │ │ │ . . . │ │ О табличке. Для примера берем IRQ1, IRQ2 и IRQ3. Все остальные - неактивны, т.е. установлены в 1. Регистр I=#80. hex .... 80f1┐ 80f2┘ обработка IRQ3 + IRQ1 + IRQ2 80f3┐ 80f4┘ обработка IRQ3 + IRQ2 80f5┐ 80f6┘ обработка IRQ3 + IRQ1 80f7┐ 80f8┘ обработка IRQ3 80f9┐ обработка IRQ1 + IRQ2 80fa┘ 80fb┐ обработка IRQ2 80fc┘ 80fd┐ обработка IRQ1 80fe┘ 80ff┐ обработка INT 50Гц с самым низким 8100┘ приоритетом. .... Кроме того, определить наличие полукад- рового INT'а вместе с другими IRQ, к со- жалению, невозможно (а нужно ли ?). Надеюсь, вопросов больше нет ?. P.S.: А так ли нужны эти самые прерыва- ния :-) ? Вон уже сколько всякой перифе- рии на Спектруме - и никому не пригоди- лись ;-). Так что не следует поддаваться тлетворному влиянию Запада и продолжать использовать свои оригинальные и непов- торимые решения [:-)Ж 11.08.98 16:37msk is-dos
Другие статьи номера:
Похожие статьи:
В этот день... 21 ноября