╔══════════════════════════════════════════════════════════════╗ ║▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░ 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", или еще как-нибудь, неважно... И если в этой тихой революции люди заметят и капельку моего скромного труда, мне будет просто по- человечески приятно.