────────────────────────────────────────────────────────────────
╔══════════════════════════════════════════════════════════════╗
║▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░ MPU Z380 ░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒║
╚══════════════════════════════════════════════════════════════╝
(C) WLODEK BLACK
Микропроцессор Z380. Продолжение.
Начало в номере 6.
Снова здравствуйте, друзья! Приятно осознавать, что твой труд
приносит пользу. Уже поступили первые отклики - восторженные,
надо сказать! И действительно, этот чип того достоин. Заглянем-
ка, что у него там внутри?.. Ага, вроде бы все знакомое: аккуму-
лятор и флаги, HL, DE, BC, индексные регистры IX и IY,указатель
стека, счетчик команд, регистр регенерации ОЗУ R, регистр векто-
ра прерываний I... Вот карта регистрового пространства, которую
я воспроизвожу символами псевдографики, демонстративно развер-
нув ее трехмерность влево (в оригинале - вправо):
┌─────────────────────┐
│┌────────────────────┴┐
┌────────────────────────── ────────────────────┴┐
│┌──────────────────────────┌──────────┬─────────┴┐
││┌─────────────────────────┤ A │ F │
│││┌────────────────────────┼──────────┼──────────┤
││││ BCz │ B │ C │
│││├────────────────────────┼──────────┼──────────┤
││││ DEz │ D │ E │
│││├────────────────────────┼──────────┼──────────┤
││││ HLz │ H │ L │
│││├────────────────────────┼──────────┼──────────┤
└┤││ IXz │ IXU │ IYU │
└┤├────────────────────────┼──────────┼──────────┤
└┤ IYz │ IYU │ IYL │
└────────────────────────┴──────────┴──────────┘
┌─────────────────────┐
│┌────────────────────┴┐
┌────────────────────────── ────────────────────┴┐
│┌──────────────────────────┌──────────┬─────────┴┐
││┌─────────────────────────┤ A' │ F' │
│││┌────────────────────────┼──────────┼──────────┤
││││ BCz' │ B' │ C' │
│││├────────────────────────┼──────────┼──────────┤
││││ DEz' │ D' │ E' │
│││├────────────────────────┼──────────┼──────────┤
││││ HLz' │ H' │ L' │
│││├────────────────────────┼──────────┼──────────┤
└┤││ IXz' │ IXU' │ IYU' │
└┤├────────────────────────┼──────────┼──────────┤
└┤ IYz' │ IYU' │ IYL' │
└────────────────────────┴──────────┴──────────┘
┌──────────┐
│ R │
┌────────────────────────┼──────────┤
│ Iz │ I │
└────────────────────────┴──────────┘
┌────────────────────────┬─────────────────────┐
│ SPz │ SP │
├────────────────────────┼─────────────────────┤
│ PCz │ PC │
└────────────────────────┴─────────────────────┘
Как видим, набор регистров общего назначения (РОН) выглядит до-
вольно привычно. Разница с Z80 в том, что в каждом из двух набо-
ров - основном и альтернативном - имеется учетверенный комплект
аналогичных по назначению РОН, и регистры расширены до 32 бит.
РОН используются для хранения и обработки данных и для адресова-
ния памяти, причем ограничений на способы адресации у 380-го
значительно меньше. Обращения к РОН определяются в кодах команд,
плюс активный регистровый слот задается битами регистра управле-
ния SR. Обратите внимание: у половинок индексных регистров поя-
вилась официальная мнемоника - IXU, IYU для старшей половинки и
IXL, IYL для младшей.(Предложение в порядке бреда: может,учесть
появившийся стандарт и в новых ассемблерах для Z80, поддерживаю-
щих мнемоники наподобие "LD LX,E" ?). Не трудно догадаться, что
суффикс "z" означает объединение регистровой линейки в 32-разря-
дный регистр, но только в описаниях,но не в мнемониках операций.
Регистр управления SR.
<------------ YSR ------------> │ <------------- XSR --------->
0 0 0 0 0 │IY bank│IYP│ 0 0 0 0 0 │IX bank│IXP
└───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
<--------- DSR --------------> │
Main IEF
0 0 0 0 0 │ Bank │Alt│ XM│ LW│ 1 │ IM │ 0 │LCK│AFP│
───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
IYBANK - 2-битовое поле выбора банка IY-регистров. Содержит но-
мер (0...3) банка IY или IY'. После RESET сбрасывается в 0.
IYP - бит выбора основного или альтернативного блока регистров
IY. 0 - основной набор, 1 - альтернативный набор.
IXBANK, IXP - то же для IX.
MAINBANK - 2-битовое поле выбора блока регистров AF,HL,DE,BC и
A',F',HL',DE',BC'. Содержит номер банка регистров.
ALT - бит выбора основного или альтернативного набора HL,DE,BC.
0 - основной, 1 - альтернативный.
XM (Extended Mode) - бит установки режима работы процессора.
1 - расширенный режим, 0 - режим Z80. Обратного переключения в 0
нет (только RESET; даже POP не помогает).
LW (Long Word mode) - бит контроля режима "слово"/"длинное сло-
во". 1 - длинное слово, 0 - обычное (16-разрядное) слово. (Для
единичных инструкций можно установить индивидуальный режим дли-
ны слова, действующий только в пределах одной команды,с помощью
специальных команд). RESET сбрасывает в 0.
IEF1 - флаг разрешения маскируемых прерываний. 1 - прерывания
разрешены, 0 - прерывания запрещены. RESET сбрасывает в 0.
IM - 2-битовое поле выбора режима прерываний 0,1,2 или 3.
LCK (Lock) - бит блокировки обслуживания запросов обращения к
системной шине со стороны других устройств. 1 - внешние запросы
игнорируются, 0 - внешние запросы обслуживаются. RESET сбрасыва-
ет в 0.
AFP - бит выбора основного или альтернативного блока регистров
AF (AF или AF'). 0 - основной, 1 - альтернативный.
Регистр SR программно доступен как 32-разрядный SR, как 3 вось-
мибитных регистра YSR, XSR и DSR, а также может быть сохранен
через PUSH и загружен через POP.
(Продолжение следует).