╔══════════════════════════════════════════════════════════════╗
║▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░ MPU Z380 ░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒║
╚══════════════════════════════════════════════════════════════╝
(C) WLODEK BLACK
[ Окончание. Начало в номере 7 ].
Управление тактами ожидания
при обращении к нижней, верхней
и средней памяти
При использовании встроенного контроллера обращения к памяти
(ВКП) можно программно задать искусственные задержки в машинных
циклах обращения к определенным для ВКП ареалам нижней, средней
и верхней памяти.
Структура регистров управления задержками одинакова для всех
ареалов памяти:
7 6 5 4 3 2 1 0
┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐
│ T1W2 │ T1W1 │ T1W0 │ T2W1 │ T2W0 │ T3W2 │ T3W1 │ T3W0 │
└──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┘
"T1", "T2" и "T3" означают номера машинных тактов одного машин-
ного цикла, а "W2", "W1", "W0" - двоичные веса констант програм-
мируемой задержки: например,запись в регистр значения %10100000
задаст задержку в такте T1 на %101 = 5 дополнительных тактов.
Режим экономичного останова
Z380 имеет программно-управляемый режим экономичного останова,
при использовании которого можно достичь резкого снижения энер-
гопотребления процессором и/или микропроцессорной системой. Ес-
ли режим экономичного останова (РЭО) разрешен, активизация РЭО
производится командой процессора SLP (sleep). После выполнения
SLP прекращается трансляция тактовых импульсов на выходы
BUSCLK и IOCLK; сигнал на выходе /STNBY переходит в лог.0, по-
казывая подтверждение РЭО; выполнение операций процессором пре-
кращается; шина адреса переходит в состояние лог.1; шина управ-
ления принимает 3-е состояние. Сигнал /STNBY может использовать-
ся для подачи команды отключения питания других устройств или
хотя бы для блокировки работы внешнего тактового генератора.
Выход из РЭО совершается путем сброса, подачи запроса немаски-
руемого прерывания, подачи запроса маскируемого прерывания лю-
бого типа (если разрешено EI), а также запросом на захват шин,
если таковой разрешен в регистре SR.
Если РЭО не разрешен, команда SLP исполняется как HALT (включая
выставление сигнала подтверждения /HALT).
Управление РЭО осуществляется с помощью Регистра Управления
РЭО и Возвратом из РЭО (SMCR). (Адрес SMCR во ВП УВВ-00000016h).
7 6 5 4 3 2 1 0
┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐
│ STBY │ BRXT │ -- │ -- │ -- │ WM2 │ WM1 │ WM0 │
└──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┘
Назначение разрядов регистра SMCR:
STBY - лог.1 разрешает переход в РЭО;
BRXT - лог.1 разрешает выход из РЭО по запросу на захват шин;
WM2...WM0 - задают время задержки в периодах основной частоты
тактового генератора, в течение которого процессор будет удер-
живаться в "подвешенном" состоянии (дословно "WM" - Warm-Up
time, то есть "время прогрева") после выхода из РЭО; это вре-
мя может быть необходимо для вхождения в рабочий режим других
устройств, отключенных по сигналу /STNBY. Установка в лог.1 би-
та WM0 задает задержку 2^16 периодов тактовой частоты, WM1 -
2^17, WM2 - 2^19. В течение времени прогрева трансляция импуль-
сов тактовой частоты на выходы BUSCLK и IOCLK не производится.
При всех лог.0 задержка не отрабатывается.
Система прерываний
Структура системы прерываний (СП) Z380 содержит совместимую с
Z80 и Z180 подгруппу, а также включает в себя новые элементы,
например, обработку прерываний по неверному коду команды.
Аппаратные прерывания вызываются подачей низкого уровня на
один из входов /NMI, /INT3../INT0.
/NMI - вход немаскируемого прерывания. При обработке NMI про-
цессор засылает в стек адрес возврата, запоминает флаг разре-
шения маскируемых прерываний, запрещает маскируемые прерывания
и переходит на адрес 00000066H, то есть аналогично Z80. Разни-
ца в том, что NMI в 380-м имеет не наивысший приоритет (!) -
в первую очередь обслуживается программное прерывание по не-
правильному коду команды (trap).
Третьим по уровню приоритета является прерывание со входа
/INT0, которое полностью аналогично обычному маскируемому пре-
рыванию Z80. В частности, с этого входа поддержаны 4 типа пре-
рываний IM 0, IM 1, IM 2 и IM 3. Режим IM 3 отличается от IM 2
только использованием 16-разрядных вектора и смещения: биты
A31..A16 задаются расширенным регистром I, а биты A15..A0 счи-
тываются с шины данных в такте подтверждения прерывания; по
полученному адресу считывается слово или длинное слово (в за-
висимости от режима процессора), которое и служит адресом пе-
рехода на обслуживающую подпрограмму.
Прерывания /INT1, /INT2, /INT3 (в порядке убывания приоритета)
вызываются подачей низкого уровня на соответствующий вход, а
адрес обрабатывающей процедуры определяется так называемым
связанным вектором, который вычисляется следующим образом:
A31..A16 берутся из расширенного регистра I; A15..A9 определя-
ются содержимым регистра AVBR (его адрес во ВП УВВ 00000018H);
A8 = 0; A7..A0 соответственно равны (в 16-ричном виде) 00H для
/INT1, 04H - для /INT2, 08H - для /INT3. По вычисленному адре-
су считывается слово или длинное слово (в зависимости от режи-
ма процессора), которое и служит адресом перехода на обслужи-
вающую процедуру.
AVBR:
7 6 5 4 3 2 1 0
┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐
│ AB15 │ AB14 │ AB13 │ AB12 │ AB11 │ AB10 │ AB9 │ 0 │
└──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┘
Разрешение/запрещение маскируемых прерываний производится либо
командами EI 0 ... EI 3 для /INT0.../INT3, либо прямым манипу-
лированием флагами разрешения прерываний, которые находятся в
регистре IER (регистр разрешения прерываний; адрес во ВП УВВ
00000017H) и в регистре SR (бит 5). Распределение обязанностей
между IER и 5-м битом SR таково: биты IER показывают лишь возмо-
жность осуществления прерывания с конкретного входа /INT 0..3,
а 5-й бит SR - это флаг именно разрешения прерываний. Командой
DI можно разом запретить все маскируемые прерывания. EI разреша-
ет прерывания, но только те, которые разблокированы в IER.
IER:
7 6 5 4 3 2 1 0
┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐
│ -- │ -- │ -- │ -- │ IE3 │ IE2 │ IE1 │ IE0 │
└──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┘
0 0 0 1 <Reset
Биты регистра IER (лог.1 - разрешено) показывают лишь возмож-
ность прерывания с соответствующего входа, а флаг собственно ра-
зрешения прерываний находится в регистре SR.
Подтверждение аппаратного прерывания производится выставлени-
ем низкого уровня на выходе /INTAK в такте подтверждения пре-
рывания. Для обеспечения аппаратного различения, какое преры-
вание подтверждается, процессор выставляет номер входа /INT0..
../INT3 на шине адреса в виде лог.0 в соответствующем разряде-
A0 - для /INT0, A1 - для /INT1 и т.д. Остальные разряды шины
адреса устанавливаются в 1.
Программные прерывания происходят при обнаружении неверного
кода команды. Неправильный код команды может встретиться в
программе, или же он может быть получен от устройства, запро-
сившего аппаратное прерывание со входа /INT0 в режиме IM 0. В
зависимости от условий получения неправильного кода различают-
ся и способы обработки таких ситуаций. При обработке программ-
ного прерывания (ПП) первым делом устанавливается один из двух
флагов в регистре TRPBK (его адрес во ВП УВВ 00000019H): TF -
флаг неверного кода в программе, TV - флаг неверного кода в
цикле подтверждения прерывания. Активное значение - лог.1.
TRPBK:
7 6 5 4 3 2 1 0
┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐
│ -- │ -- │ -- │ -- │ -- │ -- │ TF │ TV │
└──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┘
Далее происходит засылка в стек: засылается или адрес начала
полного (включая DDIR) кода неправильной инструкции, если ПП
произошло в программе, или текущий адрес выполнения, если ПП
произошло по аппаратному прерыванию. Затем запрещаются маски-
руемые прерывания, и происходит переход на адрес... 00000000H
(!!!). Но на этот же адрес происходит переход при сбросе
(Reset) - !!!, поэтому процедура "раскрутки" компьютера долж-
на различать, что произошло - сброс или ПП. Различить это мож-
но как раз по флагам TF и TV - если один из них =1, значит,
имело место ПП. Регистр TRPBK доступен только для чтения, при-
чем при считывании его значения происходит сброс обоих флагов
TF и TV, так что выяснять состояние этих флагов можно только
один раз.
Как ведет себя 380-й при попытке исполнения "левых" команд -
мне пока не известно. Все ли они приводят к ПП, или же среди
них есть исполняемые - вопрос к тем первопроходцам, которые
повторят подвиг польских хакеров середины 80-х, "расколовших"
загадочные секреты горячего сердца лучшего домашнего компьюте-
ра всех времен и народов, название которого даже незачем напо-
минать. Вот и все. Я закрываю последнюю страницу драгоценной
книжицы и возвращаю ее законному владельцу - Егору Вознесенс-
кому. Мне очень хочется написать: "Продолжение следует". И я
надеюсь, что оно действительно вскоре последует - в виде бес-
численных новейших компьютеров, шагнувших в жизнь с экранов
"НЛО - Дьяволы Бездны" под названием "ZX-Spectrum-2000", или
еще как-нибудь, неважно... И если в этой тихой революции люди
заметят и капельку моего скромного труда, мне будет просто по-
человечески приятно.