|
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
Другие статьи номера:
Похожие статьи:
В этот день... 13 ноября