********************************************************************************
** Этот документ пригоден для просмотра на ZX Spectrum в 80 символьном формате**
********************************************************************************

 (c) Black_Cat 2011-2020  www.zx.clan.su

BC Info Guide #7.


                   Стандартизация ZXBus интерфейсов и шин.


Оглавление:

1. Шинный интерфейс ZXBus и шина NemoBus.
1.1 Терминология.
2. Шинный интерфейс ZXBus и его самые распространённые клоны.
3. Шина NemoBus.
3.1 Основные принципы ZXBus.
3.2 Базовые принципы шины NemoBus.
3.3 Габаритные размеры карт расширения шины NemoBus.
3.4 Назначение сигналов шины NemoBus.
3.4.1 Сигналы шины NemoBus v0.9.
3.4.2 Новые (характерные) и изменённые сигналы шины NemoBus v1.0.
3.4.3 Новые (характерные) сигналы шины NemoBus v1.1.
3.4.4 Новые (характерные) и изменённые сигналы шины NemoBus v1.2 (проект).
4. Проектирование устройств для шины NemoBus.
4.1 Требования и рекомендации к шине и архитектуре компьютера для соответствия
    стандарту NemoBus.
4.2 Требования и рекомендации к интерфейсу периферийных устройств, подключаемых 
    к шине NemoBus.
4.3 Формирователь сигнала IORQGE для шины NemoBus.
4.4 Арбитр адреса портов ввода-вывода шины NemoBus.
4.5 Формирователь сигнала RDR/ для шины NemoBus.
4.6 Арбитр доступа к памяти в окне CPU0 шины NemoBus.
4.7 Формирователь маскируемых прерываний от устройств шины NemoBus.
4.8 Интерфейс динамического запроса ПДП для шины NemoBus v.1.2.
4.9 Управление памятью в окнах CPU0-CPU3 с шины NemoBus v.1.2.


1. Шинный интерфейс ZXBus и шина NemoBus.

ZXBus и NemoBus - это названия соответственно внешнего шинного интерфейса расши-
рения оригинальных моделей ZX Spectrum и компьютерной шины расширения оте-
чественного клона ZX Spectrum "KAY", разработанного Вячеславом Скутиным aka 
Nemo. Широкое распространение шины NemoBus сделало её стандартом де-факто на 
территории СССР для компьютеров разработанных в концепции десктопного конструк-
тива. 
На сегодняшний день кроме компьютера KAY, шина NemoBus поддержана в компьютерах: 
Pentagon-1024SL v.1.4 / v.2.2, Pentagon v.2.666 / v.2.666LE разработки Алексея 
Жабина aka KoE, ZXM-Phoenix, ZXM-Phoenix 2, ZXM-Zephyr, Devboard Z80 разработки 
Михаила Тарасова aka Mick, кроме того, Development Board "ZX Evolution", разра-
ботки группы NedoPC, также позволяет реализовать шину совместимую с NemoBus.


1.1 Терминология.

За время прошедшее с момента разработки ZX Spectrum, было выпущено множество его
клонов, большая часть из которых имела шинный интерфейс расширения, т.е. интер-
фейс для расширения внутренней шины компьютера. Интерфейсы этих клонов 
ZX Spectrum имели разные конструкции, и отличались по составу используемых си-
гналов, их обозначению, при этом имея одно и то же наименование "ZXBus", что 
вносило анархию и невозможность определить о какой модификации шинного интерфей- 
са идёт речь. Дополнительную сумятицу вносило отсутствие чёткого разграничения 
терминов "интерфейс", "шина" и "магистраль". Поэтому прежде чем перейти к описа-
нию различных стандартов следует уточнить применяемую терминологию.

Интерфейс - применительно к аппаратной части, это выделенный канал связи исполь-
зуемый в компьютере. Применяется для организации взаимодействия только
между двумя компонентами системы. Т.е. через конкретный аппаратный интерфейс мо-
гут одновременно взаимодействовать только два компонента системы. В компьютере, 
как правило, реализовано несколько типов интерфейсов.

Шина — это общий канал связи, используемый в компьютере. Применяется для органи-
зации взаимодействия между двумя и более однородными компонентами системы. Т.е. 
через конкретную шину могут одновременно взаимодействовать два или более компо-
нента системы. В компьютере, как правило, реализовано несколько типов шин.

Шинный интерфейс - внешний интерфейс внутренней шины компьютера.

Магистраль - совокупность шины данных, шины адреса, и шины управления компью-
тера.

В отношении используемых названий и определения интерфейса и шины впредь предла-
гается придерживаться следующих правил:

1) Используемые названия являются именами собственными, при этом написание их
обладает качеством повторяемости и неизменности формы написания присущих торго-
вым знакам. Под формой написания подразумевается чередование букв, пробелов,
знаков, а так же заглавных и прописных букв латинского или кириллического
алфавита.
2) Для обозначения интерфейсов и шин расширения использовать слитное обозначение
состоящее из двух частей: начальной - указывающей на название семейства компью-
теров использующих этот интерфейс или шину, и оконечной - "Bus":

ZXBus       - шинный интерфейс расширения компьютеров ZX Spectrum;
ZX128Bus    - шинный интерфейс расширения компьютеров ZX Spectrum 128/+2;
ZX+3Bus     - шинный интерфейс расширения компьютеров ZX Spectrum +2a,b/+3;
ProfiBus    - шина расширения компьютеров Profi+/2+;
Profi3Bus   - шина расширения компьютеров Profi3+;
ScorpionBus - шина расширения компьютеров Scorpion;
NemoBus     - шина расширения компьютеров KAY (авторское наименование);

3) Для обеспечения стандартизации развития шины NemoBus, используется обозначе-
ние её версии в виде: NemoBus v.X.X, где X.X - номер используемой версии. При 
этом шина NemoBus компьютеров KAY-1024SL соответствует версии NemoBus v.1.0, а 
шины более ранних моделей компьютеров KAY соответствуют версии NemoBus v.0.9. 
Критерием, определяющим принадлежность к той или иной версии является наличие 
характерных для неё изменений - всех, или только их части. Если при этом шина не
полностью соответствует спецификации стандарта из-за отсутствия каких-либо сиг-
налов, то к номеру версии добавляется бува "m", т.е. "modified".

Пример: шина ZXM-Phoenix содержит сигнал IODOS/, характерный для NemoBus v.1.1,
        но в то же время не имеет сигнала TURBO, харатерного для NemoBus v.1.0,
        но, т.к. стандарт v.1.0 является подмножеством стандарта v.1.1, то шина
        идентифицируется как v.1.1, но с добавкой "m", указывающей на отсутствие
        некоторых сигналов, т.е. у ZXM-Phoenix шина NemoBus v.1.1m.

4) Шинным интерфейсом, в отношении клонов ZXBus, называть стык, имеющий единст-
венный физический соединитель, непосредственно к которому возможно подключение 
единственного устройства.
5) Шиной расширения, в отношении клонов ZXBus, называть стык, позволяющий под-
ключать параллельно несколько устройств имеющих однотипный интерфейс связи.
6) Шинным расширителем, в отношении клонов ZXBus, называть устройство, подключа-
емое к шинному интерфейсу клонов ZXBus, и предназначенное для организации стыка 
типа шина.


2. Шинный интерфейс ZXBus и его самые распространённые клоны.

В Табл.1 дана цоколёвка шинного интерфейса ZXBus оригинального ZX Spectrum, а 
также цоколёвка шинных интерфейсов и шин наиболее распространённых его клонов.

Тип интерфейса или шины (Bus type):

1  - ZXBus (ZX Spectrum)
2  - ZX128Bus (ZX Spectrum 128/+2)
3  - ZX+3Bus (ZX Spectrum +2a,b/+3)
4  - Quorum128Bus (Quorum 128)
5  - ScorpionBus (Scorpion ZS256 / Scorpion ZS256 Turbo+)
6  - NemoBus v.0.9-v.1.1(USSR ZX Spectrum expansion bus standard)
7  - NemoBus v.1.2(USSR ZX Spectrum expansion bus standard)
8  - TC2048Bus (Timex Computer 2048)
9  - TC2068Bus (Timex Computer 2068)
10 - ProfiBus/Profi3Bus (Profi+/Profi3+)

Тип соединителя (Connector type):

1 - печатный краевой разъём
2 - разъём ОНП-КС-23-Р
3 - разъём SL-62
4 - разъём СНП58-64/94*9Р

Табл.1

==========================================================+---------+===========
   1      2     3       4      5      6      7       8         9     10 Bus type
==========================================================+---------+===========
   1      1     1       1      2      3      3       1         1     4 Connector
                                                                          type 
   2,54   2,54  2,54    2,5    2,5    2,54   2,54    2,54    2,54    2,5 Step,mm
==========================================================+---------+===========
   UP(B)  UP(B) UP(B)   UP(A)  A      B      B       UP(B)   UP(B)    B     Side
                                                                    +===========
                                                          +---------+ TURBO    1
==========================================================+  1 EXROM/ RIGHT    2
 1 A15    A15   A15     A15    A15    A15    A15     A15     2 A15    ADR15    3
 2 A13    A13   A13     A13    A13    A13    A13     A13     3 A13    ADR13    4
 3 D7     D7    D7      D7     D7     D7     D7      D7      4 D7     DC7      5
 4 NC     NC    ROM1 OE /RAMCS BLK    BLK    BLK     NC      5 NC     NC       6
 5 Key    Key   Key     Key    NC   **TURBO  TURBO   Key     6 Key    NC       7
 6 D0     D0    D0      D0     D0     D0     D0      D0      7 D0     DC0      8
 7 D1     D1    D1      D1     D1     D1     D1      D1      8 D1     DC1      9
 8 D2     D2    D2      D2     D2     D2     D2      D2      9 D2     DC2     10
 9 D6     D6    D6      D6     D6     D6     D6      D6     10 D6     DC6     11
10 D5     D5    D5      D5     D5     D5     D5      D5     11 D5     DC5     12
11 D3     D3    D3      D3     D3     D3     D3      D3     12 D3     DC3     13
12 D4     D4    D4      D4     D4     D4     D4      D4     13 D4     DC4     14
13 INT    INT   INT     /INT   INT    INT    INT     INT/   14 INT/   INT     15
14 NMI    NMI   NMI     /NMI   NMI    NMI    NMI     NMI/   15 NMI/   NMI     16
15 HALT   HALT  HALT    /HLT   HLT    HLT    EOP\HLT HALT/  16 HALT/  HALT    17
16 MREQ   MREQ  MREQ    /MREQ  MREQ   MREQ   MREQ    MREQ/  17 MREQ/  MREQ    18
17 IORQ   IORQ  IORQ    /IORQ  IORQ   IORQ   IORQ    IORQ/  18 IORQ/  IORQ    19
18 RD     RD    RD      /RD    RD-    RD     RD      RD/    19 RD/    RD      20
19 WR     WR    WR      /WR    WR-    WR     WR      WR/    20 WR/    WR      21
20 -5V    -5V   NC      RA14   NC  ***IODOS/ IODOS/  NC     21 NC    #12MHz   22
21 WAIT   WAIT  WAIT    /WAIT  WAIT   WAIT   WAIT    WAIT/  22 WAIT/  READY   23
22 +12V   +12V  +12V    NC     +12V   NC     A15'    +12V   23 NC     +12V    24
23 12VAC  12VAC -12V    /TRDOS NC     NC     A17'    12VAC  24 NC    #TIMER   25
24 M1     M1    M1      /M1    M1     M1     M1      M1/    25 M1/    M1      26
25 RFSH   RFSH  RFSH    /RFSH  RFSH   RFSH   ER\RFSH RFSH/  26 RFSH/  REF     27
26 A8     A8    A8      A8     A8     A8     A8      A8     27 A8     ADR8    28
27 A10    A10   A10     A10    A10    A10    A10     A10    28 A10    ADR10   29
28 NC     NC    RESET   NC     NC     +5V    +5V     NC     29 NC     CP/M    30
29 -      -     -       -      NC     +12V   +12V    -      30 RED    TR_DOS  31
30 -      -     -       -      GND    GND    A21'    -      31 GREEN  BLOK    32
31 -      -     -       -      -      NC     A19'    -      32 BLUE +===========
==========================================================+---------+  

==========================================================+---------+===========
  DOWN(A)DOWN(A)DOWN(A)DOWN(B) B      A      A      DOWN(A)  DOWN(A)  A     Side
                                                                    +===========
                                                          +---------+ NC       1
==========================================================+  1 BE/    LEFT     2
 1 A14    A14   A14     A14    A14    A14    A14     A14     2 A14    ADR14    3
 2 A12    A12   A12     A12    A12    A12    A12     A12     3 A12    ADR12    4
 3 +5V    +5V   +5V     +5V    +5V    +5V    +5V     +5V     4 +5V    +5V      5
 4 +9V    +9V   NC      NC     DOS/   DOS/   DOS/    +9V     5 +9V    NC       6
 5 Key    Key   Key     Key    NC     F      F       Key     6 Key    NC       7
 6 GND    GND   GND     GND    GND    GND    GND     GND     7 GND    GND      8
 7 GND    GND   GND     GND    GND    GND    GND     GND     8 GND    GND      9
 8 CLK    CLK   CLK     CLK    CLK    CLK    CLK     CLK     9 CLK    CLCAY   10
 9 A0     A0    A0      A0     A0     A0     A0      A0     10 A0     ADR0    11
10 A1     A1    A1      A1     A1     A1     A1      A1     11 A1     ADR1    12
11 A2     A2    A2      A2     A2     A2     A2      A2     12 A2     ADR2    13
12 A3     A3    A3      A3     A3     A3     A3      A3     13 A3     ADR3    14
13 IORQGE NC    NC     /IORQGE IORQGE IORQGE IORQGE  ****   14 NC     OUTIORQ 15
14 GND    GND   GND     GND    GND    GND    GND     GND    15 GND    GND     16
15 Video *Video ROM2 OE NC     RDR/   RDR/   RDR/    NC     16 Video #-5V     17
16 Y     *Y     Disk RD NC     NC     RS     EXTA\RS R      17 NC     NC      18
17 V     *V     Disk WR NC     NC     NC     A14'    G      18 NC     NC      19
18 U     *U     MotorON NC     NC     NC     A16'    B      19 NC     NC      20
19 BUSRQ  BUSRQ BUSRQ   /BUSRQ BRQ    BRQ    BRQ     BUSRQ/ 20 BUSRQ/ BUSRQ   21
20 RESET  RESET RESET   /RES   RES    RES    RES     RESET/ 21 RESET/ RESET   22
21 A7     A7    A7      A7     A7     A7     A7      A7     22 A7     ADR7    23
22 A6     A6    A6      A6     A6     A6     A6      A6     23 A6     ADR6    24
23 A5     A5    A5      A5     A5     A5     A5      A5     24 A5     ADR5    25
24 A4     A4    A4      A4     A4     A4     A4      A4     25 A4     ADR4    26
25 ROMCS  ROMCS NC      /ROMCS CSR/   CSR/   CSR/    ROMCS/ 26 ROMCS/ ROMCS   27
26 BUSAK  BUSAK BUSAK   /BUSAK BAK    BAK    EA\BAK  BUSAK/ 27 BUSAK/ BUSAK   28
27 A9     A9    A9      A9     A9     A9     A9      A9     28 A9     ADR9    29
28 A11    A11   A11     A11    A11    A11    A11     A11    29 A11    ADR11   30
29 -      -     -       -      NC     +5V    +5V     -      30 CSYNC  ROM14   31
30 -      -     -       -      GND    GND    A20'    -      31 BRIGHT SOUND   32
31 -      -     -       -      -      NC     A18'    -      32 GND  +===========
==========================================================+---------+  
*    - NC для ZX Spectrum +2
**   - NC для NemoBus младше v.1.0
***  - NC для NemoBus младше v.1.1
**** - NC для Issue 03 и младше, IORQ/ для Issue 04 и старше
#    - NC для Profi+

3. Шина NemoBus.

Впервые эта шина появилась как опциональное расширение для компьютера 
"Composite-128K AY" ("KAY-128"). Впоследствии шина получила развитие и утверди-
лась в линейке компьютеров "KAY". Из всех клонов ZXBus, только в NemoBus были 
правильно поняты идеи, заложенные в ZXBus Ричардом Альтвассером, что позволяло 
преодолевать ограничения упрощённой дешифрации присущей ZX Spectrum. Именно эта 
особенность шины NemoBus позволила ей стать де-факто региональным стандартом на 
территории СССР.


3.1 Основные принципы ZXBus.

Существует два основных альтвассеровских принципа, лежащих в основе интерфейса 
ZXBus и его развития - шины NemoBus:

1) Первый альтвассеровский принцип, или "сигнальный принцип" - сигнал IORQGE в 
обязательном порядке включает в себя адресные сигналы и сигнал M1/, и не вклю-
чает сигнал IORQ/.
2) Второй альтвассеровский принцип, или "принцип приоритета" - системные порты 
материнской платы имеют самый низкий приоритет доступа.

Следствия:

1) Наиболее низкий приоритет системных портов материнской платы позволяет ис-
пользовать для них максимально упрощённую дешифрацию.

2) Шины и интерфейсы периферийных устройств, не соответствующие основным альт-
вассеровским принципам некорректно называть "ZXBus", правильно им давать собст-
венное название. В частности, например клоны ZX Spectrum 128/+2/+3, Scorpion, 
Profi не соответствуют основным альтвассеровским принципам. Поэтому, корректно 
называть интерфейсы и шины этих клонов соответственно ZX128Bus, ZX+3Bus, 
ScorpionBus, ProfiBus и т.д. Так же рекомендуется применять собственное название
в случае отличий в сигналах шины или интерфейса, например ZXBus и NemoBus имеют 
разные названия, хотя соответствуют основным альтвассеровским принципам. 

Объяснение основных принципов шины ZXBus.

Принцип разделения адресного пространства портов ввода-вывода (ВВ) базируется на
особенностях таймингов процессора Z80, в частности, на опережающем выставлении 
процессором адреса относительно сигнала IORQ/, что позволяет произвести его де-
шифрацию и арбитрирование ещё до прихода IORQ/, и таким образом исключить гонки 
вызванные различиями в схемотехнике дешифраторов устройств. Т.е. ещё до прихода 
IORQ/ сигналы IORQGE на всех периферийных устройствах уже будут выставлены. Это 
накладывает ограничения на использование клонов Z80 других производителей или 
FPGA ядер, которые так же обязаны иметь упреждающее выставление адреса относи-
тельно IORQ/. Разделение адреса происходит путём его дешифрации при единичном 
значении сигнала M1/, и в случае его совпадения - выработке блокирующего сигна-
ла IORQGE для остальных устройств. Учитывать сигнал M1/ при арбитрировании не-
обходимо, чтобы исключить блокирование арбитром сигнала IORQ/ в цикле чтения 
вектора прерывания.


3.2  Базовые принципы шины NemoBus.

1) Шина NemoBus основана на разделении адресного пространства портов ВВ между 
установленными в слоты периферийными устройствами и материнской платой компью-
тера. Разделение происходит путём захвата адресного пространства портов ВВ уст-
ройствами в слотах шины NemoBus, и выражается в прекращении распространения сиг-
нала IORQ/ на слоты с низшим приоритетом. Разделение производится с помощью ар-
битра IORQ/. Такой способ разделения адресного пространства является базовым 
принципом арбитрирования устройств шины NemoBus.

2) Слоты шины NemoBus имеют убывающий приоритет захвата адресного пространства 
портов ВВ, и по этому признаку делятся на master-слот и slave-слоты с убывающим 
приоритетом. Наивысший приоритет имеет master-слот, на который непосредственно 
подаётся сигнал IORQ/ от CPU. Наинизший приоритет имеют порты материнской платы 
компьютера. 

3) Только устройство в master-слоте может выступать задатчиком шины при её за-
хвате.

4) Возможно арбитрирование только в циклах записи или чтения. Для арбитрирования
в цикле чтения в дешифрацию включается сигнал WR/=1, а в цикле записи - сигнал 
RD/=1. Такое арбитрирование приводит к укорачиванию сигнала IORQ/ в противопо-
ложных арбитрируемым циклах - циклах чтения при арбитрировании в цикле записи, и
наоборот.

5) Кроме функции разделения адресного пространства портов ВВ, арбитр IORQ/ так 
же может выполнять функцию арбитрирования источника вектора маскируемого преры-
вания. Наивысший приоритет в выставлении на шину вектора прерывания имеет 
устройство в master-слоте, а наинизший - материнская плата. 

Следствия базовых принципов шины NemoBus:

1) Запрещается буферирование сигналов шины адреса, а так же сигналов M1/, RD/, 
WR/, IORQ/, идущих от процессора к шине NemoBus, т.к. это приведёт к увеличению 
задержки времени арбитрирования, следствием чего могут стать гонки при дешифра-
ции устройств и их некорректная работа. Допускается буферирование любых сигналов
для устройств интегрированных на материнскую плату, имеющих низший приоритет 
доступа по сравнению с устройствами NemoBus.

2) Устройства в слотах рекомендуется располагать в зависимости от полноты деши-
фрации их сигнала IORQGE, а так же в зависимости от наличия арбитрирования толь-
ко в цикле чтения или записи. Устройства с наиболее полной дешифрацией ре-
комендуется устанавливать в слоты с более высоким приоритетом, а устройства с 
наименее полной дешифрацией в слоты с наинизшим приоритетом. Это минимизирует 
диапазон адресов портов подвергающихся блокировке сигналом IORQGE вследствие не-
полноты его дешифрации. Устройство с арбитрированием только в цикле чтения или 
записи рекомендуется устанавливать в слот с наинизшим приоритетом.

3) Возможно включение в арбитрирование периферийных устройств интегрированных на
материнской плате, но только с приоритетом либо ниже чем у master-слота, либо 
равным ему. Иначе, для внешних устройств, предназначенных для установки в 
master-слот, будет недоступна возможность полноценного захвата шины с генераци-
ей собственного IORQ/. Т.е. вместо слота, или параллельно ему может быть подклю-
чено интегрированное на материнскую плату периферийное устройство. Такое подклю-
чение накладывает ограничение - в запараллеленный слот нельзя вставлять устрой-
ства, конфликтующие по дешифрации портов с включенным параллельно ему интегриро-
ванным устройством.


3.3 Габаритные размеры карт расширения шины NemoBus.

Шина NemoBus изначально была рассчитана на возможность работы с картами перифе-
рийных устройств двух формфакторов: A и B, различающихся между собой максималь-
ным расстоянием h от середины первого контакта интерфейса краевого разъёма до 
левого края платы, выходящего на тыльную сторону компьютера, и соответственно 
максимальным расстоянием H от середины 31 контакта интерфейса краевого разъёма 
до правого края платы, выходящего внутрь системного блока компьютера. 

                         NemoBus card
+------------------ ....... -------------------------------+ ---
|<--- rear computer   Component side   inside computer --->|  ^
|                                                          |  | 
|                PLD connector                    | 2,54 mm|  | L = max 95,5 mm
|       1B+++++++++ ....... +++++++++31B          v        |  |
|       1A+++++++++ ....... +++++++++31A      ----+-       |  v
+--------+                           +------------+--------+ -+-
      1B |   Edge connector side B   | 31B        ^           |  7,62 mm                
         +UUUUUUUUU ....... UUUUUUUUU+            |          -+-
         |                           |   81 mm                ^ 
      -->+---------------------------+<-----                  |
     h    1B                        31B        H            
|<------->|                         |<-------------------->|
                     Рис.1
Табл.2  
+------------+-----+-----+
| Формфактор |  A  |  B  |
|------------|-----|-----|
| h(max), мм | 50  | 25,4|
|------------|-----|-----|
| H(max), мм |212,2|236,8|
+------------+-----+-----+

Формфактор B полностью соответствует размерной сетке ISA8 карт, но компоненты в 
устройствах NemoBus размещены на противоположной стороне относительно ISA карт.
Предельные размеры H, h, L даны для полноразмерного PC AT/ATX корпуса. Для 
малогабаритных корпусов предельные размеры H и L могут быть меньше. Для карт 
предназначенных для работы во всех существующих клонах, не рекомендуется исполь-
зовать размер H более 25,4 мм, а так же размещать разъёмы, ответные части кото-
рых выходят за этот габарит. Такое ограничение связано с некорректным размещени-
ем слотов шины NemoBus в компьютерах Pentagon-1024 v.2.2/v.2.666.
Формфактор A рекомендуется для несистемного периферийного оборудования, такого 
как дополнительные опциональные звуковые и видео карты, программаторы, комму-
никационное оборудование.
Формфактор B рекомендуется для системного периферийного оборудования, такого как
муьтикарты или отдельные контроллеры клавиатуры, мыши, джойстика, HDD, FDD, SD, 
контроллеры ПДП и прерываний, внешние менеджеры ОЗУ и ПЗУ, скандаблеры и 
контроллеры палитры. 


3.4 Назначение сигналов шины NemoBus.

Начиная с момента своего возникновения, шина NemoBus продолжает эволюционно раз-
виваться, и претерпела определённые изменения. Дальнейшее развитие ZX Spectrum 
требует решения целого ряда новых задач, которые в свою очередь предполагают со-
ответствующее развитие шины NemoBus. Целью развития шины NemoBus является созда-
ние законченной, аппаратно  полноценной, открытой компьютерной архитектуры, при-
годной для интеграции компьютера в современные вычислительные системы. Ниже при-
ведены описания назначения сигналов для существующих версий шины NemoBus, а  
также для перспективной версии, предполагающей следующие дополнительные функции 
сверх имеющихся в предыдущих версиях шины:

NemoBus v.1.2 :
– возможность работы через шину NemoBus v.1.2 с внешним контроллером DMA, кото-
  рому доступна вся внутренняя память компьютера;
- возможность адресации через шину NemoBus v.1.2 до 4Мб внутреннего ОЗУ компью-
  тера без мультиплексирования адресных линий, и до 256Мб с помощью мультиплек-
  сирования;
- возможность подмены внутреннего менеджера памяти компьютера на внешний, для  
  управления извне через шину NemoBus v.1.2 внутренней памятью компьютера;
- возможность в любом окне подмены внутренней памяти компьютера на внешнюю, 
  управляемую внешним менеджером памяти;
- возможность использования дополнительного адресного пространства портов ввода-
  вывода, позволяющего адресовать до 256 дополнительных портов; 
- возможность запуска до 256 изолированных спектрумовских программ в ОЗУ компью-
  тера, без необходимости их переделки, и возможностью мгновенного между ними 
  переключения пользователем, в особом защищённом режиме аппаратной многозадач-
  ности - режиме Аппаратных Виртуальных Машин (АВМ);
  

Версии шины NemoBus некоторых компьютеров:

 1. KAY-256 v.1.1-v.1.3                  - NemoBus v.0.9
 2. KAY-256 v.1.4, KAY-1024SL3, KAY-2010 - NemoBus v.1.0
 3. Pentagon-1024SL v.1.3-v.1.4          - NemoBus v.0.9m
 4. Pentagon-1024SL v.2.2                - NemoBus v.1.0m
 5. Pentagon v.2.666/LE                  - NemoBus v.1.0m
 6. ZXM-Phoenix rev.00-rev.07            - NemoBus v.1.1m
 7. ZXM-Phoenix 2 rev.0                  - NemoBus v.1.1m
 8. ZX Evolution (devboard) rev.A-rev.C  - NemoBus v.0.9m
 9. Devboard Z80 rev.0                   - NemoBus v.0.9m
10. ZXM-Zephyr rev.0                     - NemoBus v.1.1m


3.4.1 Сигналы шины NemoBus v0.9.

Принятые обозначения для колонок таблицы:

1. Наименование сигнала.
2. Направление передачи сигнала относительно компьютера:

IO  - двунаправленная линия, источник сигнала либо внутренний, либо внешний;
I/O - однонаправленная линия, источник сигнала либо внутренний, либо внешний;
I&O - однонаправленная линия, источником сигнала могут быть одновременно и
      внутренний и внешний сигналы;
I   - однонаправленная линия, источник сигнала внешний;
O   - однонаправленная линия, источник сигнала внутренний;

3. Уровень активного сигнала:

L   - Low, активный уровень сигнала - низкий;
H   - High, активный уровень сигнала - высокий;
-   - оба уровня сигнала являются активными;

4. Тип выхода сигнала:

OK  - открытый коллектор;
TTL - транзистор-транзисторная логика;
3   - сигнал с третьим состоянием;
R   - сигнал с резистивной развязкой;

5. Номер контакта.

Табл.3
--------+---+-+---+---+---------------------------------------------------------
   1    | 2 |3| 4 | 5 |
--------+---+-+---+---+---------------------------------------------------------
   D0   |I O|-| 3 | 6B|шина данных
   D1   |I O|-| 3 | 7B|
   D2   |I O|-| 3 | 8B|
   D3   |I O|-| 3 |11B|
   D4   |I O|-| 3 |12B|
   D5   |I O|-| 3 |10B|
   D6   |I O|-| 3 | 9B|
   D7   |I O|-| 3 | 3B|
--------+---+-+---+---+---------------------------------------------------------
   A0   |I/O|-| 3 | 9A|адресная шина процессора
   A1   |I/O|-| 3 |10A|
   A2   |I/O|-| 3 |11A|
   A3   |I/O|-| 3 |12A|
   A4   |I/O|-| 3 |24A|
   A5   |I/O|-| 3 |23A|
   A6   |I/O|-| 3 |22A|
   A7   |I/O|-| 3 |21A|
   A8   |I/O|-| 3 |26B|
   A9   |I/O|-| 3 |27A|
   A10  |I/O|-| 3 |27B|
   A11  |I/O|-| 3 |28A|
   A12  |I/O|-| 3 | 2A|
   A13  |I/O|-| 3 | 2B|
   A14  |I/O|-| 3 | 1A|
   A15  |I/O|-| 3 | 1B|
--------+---+-+---+---+---------------------------------------------------------
   BLK  |I&O|H|3 R| 4B|сигнал установки в окно CPU0 страницы ОЗУ, wr D0=1 #1FFD
--------+---+-+---+---+---------------------------------------------------------
   INT/ |I&O|L|OK |13B|сигнал маскируемого прерывания
--------+---+-+---+---+---------------------------------------------------------
   NMI/ |I&O|L|OK |14B|сигнал немаскируемого прерывания
--------+---+-+---+---+---------------------------------------------------------
  HALT/ |  O|L|TTL|15B|сигнал, сообщающий об остановке CPU до прихода прерывания
--------+---+-+---+---+---------------------------------------------------------
  MREQ/ |I/O|L| 3 |16B|сигнал обращения к памяти
--------+---+-+---+---+---------------------------------------------------------
  IORQ/ |I/O|L| 3 |17B|сигнал обращения к портам ввода-вывода, арбитрируется
        |   | |   |   |сигналом IORQGE
--------+---+-+---+---+---------------------------------------------------------
   RD/  |I/O|L| 3 |18B|сигнал чтения из портов или памяти
--------+---+-+---+---+---------------------------------------------------------
   WR/  |I/O|L| 3 |19B|сигнал записи в порты или память
--------+---+-+---+---+---------------------------------------------------------
  WAIT/ |I&O|L|OK |21B|сигнал запроса цикла ожидания
--------+---+-+---+---+---------------------------------------------------------
   M1/  |I/O|L| 3 |24B|машинный цикл 1
--------+---+-+---+---+---------------------------------------------------------
  RFSH/ |I/O|L|TTL|25B|сигнал регенерации памяти процессором
--------+---+-+---+---+---------------------------------------------------------
  DOS/  |I/O|L|TTL| 4A|сигнал активации режима TR-DOS, вырабатывается BDI, 
        |   | |   |   |при RES/=0 сигнал DOS/=1
--------+---+-+---+---+---------------------------------------------------------
   F    |  O|-|TTL| 5A|14MHz, сигнал синфазный задающему генератору
--------+---+-+---+---+---------------------------------------------------------
   CLK  |  O|-|TTL| 8A|3,5MHz сигнал, противофазный тактовой частоте CPU
--------+---+-+---+---+---------------------------------------------------------
 IORQGE |I  |H| 3 |13A|Сигнал захвата адреса порта внешним устройством.
        |   | |   |   |В цикле чтения вектора прерывания, используется для
        |   | |   |   |захвата вектора прерывания.
--------+---+-+---+---+---------------------------------------------------------
  RDR/  |I  |H|3 R|15A|READ ROM - сигнал захвата окна CPU0 и блокировки ПЗУ 
        |   | |   |   |внешним устройством
--------+---+-+---+---+---------------------------------------------------------
   RS   |I&O|-|3 R|16A|ROM SELECT, адресная линия A14" ROM, управляется D4 #7FFD
--------+---+-+---+---+---------------------------------------------------------
 BUSRQ/ |I&O|L|OK |19A|сигнал запроса на захват шины, синхронизируется задат-
        |   | |   |   |чиком по спаду CLK
--------+---+-+---+---+---------------------------------------------------------
  RES/  |I&O|L|OK |20A|сигнал системного сброса
--------+---+-+---+---+---------------------------------------------------------
  CSR/  |  O|L|TTL|25A|CS ROM - сигнал, разрешающий захват окна CPU0, арбитри-
        |   | |   |   |руется сигналом RDR/
--------+---+-+---+---+---------------------------------------------------------
 BUSAK/ |  O|L|TTL|26A|сигнал подтверждения запроса на захват шины
========+=======================================================================
  +5V   |3A,29A,28B
--------+-----------------------------------------------------------------------
 +12V   |29B
--------+-----------------------------------------------------------------------
  GND   |6A,7A,14A,30A,30B
========+=======================================================================


3.4.2 Новые (характерные) и изменённые сигналы шины NemoBus v1.0.

Табл.4 Новые (характерные) сигналы шины NemoBus v1.0.
--------+---+-+---+---+---------------------------------------------------------
   1    | 2 |3| 4 | 5 |
--------+---+-+---+---+---------------------------------------------------------
 TURBO  |I&O|H|OK | 5B|сигнал индицирует работу в турбо режиме, может отключать-
        |   | |   |   |ся внешним устройством
--------+---+-+---+---+---------------------------------------------------------

Табл.5 Изменённые сигналы шины NemoBus v1.0.
--------+---+-+---+---+---------------------------------------------------------
   1    | 2 |3| 4 | 5 |
--------+---+-+---+---+---------------------------------------------------------
   CLK  |  O|-|TTL| 8A|сигнал тактовой частоты CPU, синфазен сигналу F
--------+---+-+---+---+---------------------------------------------------------


3.4.3 Новые (характерные) сигналы шины NemoBus v1.1.

Табл.6
--------+---+-+---+---+---------------------------------------------------------
   1    | 2 |3| 4 | 5 |
--------+---+-+---+---+---------------------------------------------------------
 IODOS/ |I/O|L|TTL|20B|соответствует инверсному значению D7=1 #EFF7,
        |   | |   |   |в цикле IORQ/ активирует все теневые порты
--------+---+-+---+---+---------------------------------------------------------


3.4.4 Новые (характерные) и изменённые сигналы шины NemoBus v1.2 (проект).

Табл.7 Новые (характерные) сигналы шины NemoBus v1.2.
--------+---+-+---+---+---------------------------------------------------------
   1    | 2 |3| 4 | 5 |
--------+---+-+---+---+---------------------------------------------------------
A14/A22'|I&O|-| 3 |17A|мультиплексируемая шина старших адресов ОЗУ, позволяет 
A15/A23'|I&O|-| 3 |22B|адресовать до 256Mb ОЗУ. Данные достоверны при MREQ/=0, и
A16/A24'|I&O|-| 3 |18A|CSR/=1. По сигналу EXTA\RS=0 передаются адреса A22'-A27', 
A17/A25'|I&O|-| 3 |23B|при EXTA\RS=1 передаются адреса A14'-A19'
A18/A26'|I&O|-| 3 |31A|
A19/A27'|I&O|-| 3 |31B|
--------+---+-+---+---+---------------------------------------------------------

Табл.8 Изменённые сигналы шины NemoBus v1.2.
---------+---+---+---+---+------------------------------------------------------
   1     | 2 | 3 | 4 | 5 |(сигнал при BUSAK/=1)\(сигнал при BUSAK/=0)
---------+---+---+---+---+------------------------------------------------------
  DOS/   |I/O| L |OK | 4A|сигнал активации режима TR-DOS, вырабатывается BDI, 
         |   |   |   |   |при RES/=0 сигнал DOS/=1, совокупность сигналов 
         |   |   |   |   |DOS/=0, IODOS/=0 индицирует работу компьютера в режи-
         |   |   |   |   |ме KERNEL, изменён тип выхода
---------+---+---+---+---+------------------------------------------------------
  BLK    |I&O| H |3 R| 4B|CPU0:BLK=1, при RDR/=1 - сигнал установки в окно CPU0 
         |   |   |   |   |страницы внутреннего ОЗУ, по wr D0=1 #1FFD
         |   |   |   |   |CPU0:BLK=1, при RDR/=0 - сигналы внешнего устройства  
         |   |   |   |   |на отключение внутреннего ОЗУ и ПЗУ в окне CPU0
         |   |   |   |   |CPU1-CPU3:BLK=1 сигнал внешнего устройства на отключе-  
         |   |   |   |   |ние внутреннего ОЗУ в окне CPU1-CPU3
---------+---+---+---+---+------------------------------------------------------
  CLK    |I&O| - |OK | 8A|сигнал тактовой частоты CPU, синфазен сигналу F, изме-
         |   |   |   |   |нён тип выхода
---------+---+---+---+---+------------------------------------------------------
  RDR/   |I  | H |3 R|15A|RDR/(CSR/=0) - READ ROM, внешний сигнал захвата окна  
         |   |   |   |   |CPU0 и блокировки ПЗУ внешним устройством   
---------+---+---+---+---+------------------------------------------------------
EOP\HLT/ |I/O| L |3 R|15B|HALT/(BUSAK/=1) - сигнал, сообщающий об остановке CPU
         |   |   |   |   |до прихода прерывания
         |   |   |   |   |EOP/(BUSAK/=0) - END OPERATION, сигнал контроллера 
         |   |   |   |   |ПДП, сообщает об окончании счёта
---------+---+---+---+---+------------------------------------------------------
 EXTA\RS |I&O| - |3 R|16A|RS(CSR/=0, MREQ/=0) - ROM SELECT, активен при обраще- 
         |   |   |   |   |нии к ПЗУ в окне CPU0, отображает состояние адресной 
         |   |   |   |   |линии A14 ПЗУ компьютера, управляется D4 #7FFD.  
         |   |   |   |   |EXTA(CSR/=1, MREQ/=0) - EXTENDED ADRESS, активен при   
         |   |   |   |   |обращении к внутреннему ОЗУ компьютера. При EXTA=0, по     
         |   |   |   |   |6-ти разрядной мультиплексируемй шине старших адресов,    
         |   |   |   |   |передаются сначала адреса A22'-A27', а потом, по      
         |   |   |   |   |EXTA=1 - адреса A14'-A19' 
         |   |   |   |   |EXTA(MREQ/=1) - EXTENDED ADRESS, активен при обращении 
         |   |   |   |   |к портам, и выполняет роль старшего разряда адреса вы- 
         |   |   |   |   |бора портов A16.       
         |   |   |   |   |EXTA=1 при использовании команд IN/OUT(nn),A , при    
         |   |   |   |   |этом адресуются дополнительные 256 портов сверх 65536
         |   |   |   |   |доступных процессору, в остальных случаях EXTA=0.
---------+---+---+---+---+------------------------------------------------------
 IODOS/  |I&O| L |OK |20B|соответствует инверсному значению D7=1 #EFF7, в цикле 
         |   |   |   |   |IORQ/ активирует все теневые порты, совокупность си-
         |   |   |   |   |гналов DOS/=0, IODOS/=0 индицирует работу компьютера в
         |   |   |   |   |режиме KERNEL, изменён тип выхода
---------+---+---+---+---+------------------------------------------------------
ER\RFSH/ |I/O| L |3 R|25B|RFSH/(BUSAK/=1) - сигнал регенерации памяти процессо-
         |   |   |   |   |ром
         |   |   |   |   |ER/(BUSAK/=0) - END REQUEST, сигнал завершения запроса
         |   |   |   |   |ПДП, по заднему фронту сигнала внешнее устройство фик- 
         |   |   |   |   |сирует подтверждённый канал ПДП, и освобождает шину   
         |   |   |   |   |данных   
---------+---+---+---+---+------------------------------------------------------
EA\BUSAK/|  O| L |TTL|26A|BUSAK/ - для SLAVE слотов - сигнал подтверждения за-
         |   |   |   |   |проса на захват шины. 
         |I&O| L |OK |   |BUSAK/ - для MASTER слота - сигнал подтверждения за-
         |   |   |   |   |проса на захват шины и подмены внутреннего менеджера 
         |   |   |   |   |памяти компьютера на внешний в цикле ПДП
         |   |   |   |   |EA/ - EXTERNAL ADRESS, сигнал подмены внутреннего ме-
         |   |   |   |   |неджера памяти компьютера на внешний, снимается по 
         |   |   |   |   |второму фронту CLK после BUSRQ/=0
---------+---+---+---+---+------------------------------------------------------
   A20'  |I&O| - |OK |30A|не мультиплексируемая шина старших адресов ОЗУ, изме-
   A21'  |I&O| - |OK |30B|нено назначение вывода 
---------+---+---+---+---+------------------------------------------------------


4. Проектирование устройств для шины NemoBus.

Возможность арбитрирования доступа к диапазону портов была присуща оригинальному
ZX Spectrum изначально, но стала использоваться по назначению и получила разви-
тие только в шине NemoBus. Шина NemoBus предполагает использование трёх типов 
арбитрирования: арбитрирования доступа к портам ввода-вывода, арбитрирования ис-
точника вектора прерывания, и арбитрирования доступа к памяти в окне CPU0. 
Последнее в оригинальном ZX Spectrum не было предусмотрено, и является характер-
ной особенностью только шины NemoBus, хотя на практике до сих пор в ней это и не
применялось ввиду отсутствия устройств требующих такого арбитрирования. 
Схемотехническая поддержка арбитрирования доступа к памяти в окне CPU0 предпола-
галась для шины NemoBus v.1.2.


4.1 Требования и рекомендации к шине и архитектуре компьютера для соответствия
    стандарту NemoBus.

1) Соответствие базовым принципам шины NemoBus.
2) При размещении компьютера в ПЛИС, для устройств внутри ПЛИС наиболее критич-
ных к быстродействию, эмулируется их установка в master-слот. Такие устройства 
должны иметь полную дешифрацию для сигнала IORQGE, также возможно их запаралле-
ливание с реальным master-слотом с объединением сигналов IORQGE по "ИЛИ". В этом 
случае на пользователя ложится ответственность за то, чтобы внешнее устройство в
master-слоте не конфликтовало по диапазону используемых портов с параллельным 
устройством в ПЛИС. Для устройства в ПЛИС, афиллированного с master-слотом воз-
можно использование системных портов #FE и #7FFD только в цикле записи без гене-
рирования при их выборке IORQGE. Для компьютера в ПЛИС, как и для любого клона 
ZX Spectrum, чтение порта #FE возможнот только с наинизшим приоритетом.
3) При использовании т.н. "порта атрибутов" #FF, не рекомендуется выполнять его 
выборку прямой дешифрацией, а только по отсутствию сигналов блокировки IORQGE от 
всех устройств компьютера при активном сигнале бордюра. 


4.2 Требования и рекомендации к интерфейсу периферийных устройств, подключаемых 
    к шине NemoBus.

1) Если предусмотрено чтение из портов устройства, то обязательно наличие форми-
рователя сигнала IORQGE, посредством которого происходит захват адреса порта
ввода-вывода.
2) Если периферийной платой предусмотрена возможность подмены ПЗУ компьютера в 
окне CPU0, то обязательно наличие формирователя сигнала RDR/, посредством кото-
рого происходит блокировка ПЗУ компьютера. Использование нескольких периферийных
плат имеющих возможность подмены ПЗУ компьютера предполагает наличие арбитра 
доступа к памяти в окне CPU0. 
3) Необходимо предусмотреть максимальное снижение нагрузки на выходные сигналы
шины. Для этого, при проектировании, необходимо использовать правило: "одно уст-
ройство - один вход на каждый используемый выходной сигнал шины". Так же, по 
возможности, рекомендуется применение серий микросхем с минимальной нагрузкой на
шину по их входу.
4) Периферийное устройство, устанавливаемое в слот NemoBus может содержать дуб-
лирующий шину двухрядный игольчатый интерфейсный коннектор типа PLD для подклю-
чения дочерней платы. Стандарт соответствия контактов такого разъёма, сигналам 
шины NemoBus приведён на Рис.1.
Дочерняя плата оборудуется ответным коннектором типа PBD. Возможно наличие на 
дочерней плате одновременно и PLD и PBD коннекторов с её противоположных сторон.


4.3 Формирователь сигнала IORQGE для шины NemoBus.

В режиме арбитрирования захвата адресов портов, сигнал IORQGE периферийной карты
формируется из сигнала шины NemoBus M1/,и сигнала адресного дешифратора карты. 
Сигнал M1/ определяет выбор режима арбитрирования шины NemoBus. При M1/=0 вклю-
чается режим арбитрирования векторов прерываний устройств, а при M1/=1 - режим 
арбитрирования захвата адресов портов. 
В некоторых случаях, когда один и тот же адрес порта на чтение и запись исполь-
зуется различными периферийными устройствами, в формирователь могут включаться 
сигналы RD/, WR/ (сигналы не должны быть буферированы). В формирователе сигнала 
адресного дешифратора карты рекомендуется использовать максимально полную деши-
фрацию адреса порта.
  К каждому слоту шины NemoBus допускается подключение нескольких периферийных
карт, соединяемых между собою параллельно через дочерний игольчатый разъём, поэ-
тому выходы IORQGE каждой карты при таком подключении обязаны быть тристабильны-
ми. При параллельном подключении нескольких карт к одному слоту, пользователь 
предварительно обязан самостоятельно убедиться в отсутствии конфликтов дешифра-
ции их портов ВВ.
При проектировании карт расширения предусматривающих возможность параллельного 
подключения к одному слоту  нескольких устройств генерирующих IORQGE, не ре-
комендуется использовать формирователь представленный на рис.4, он пригоден 
только при использовании единственного устройства в слоте.  
Для корректной работы карт использующих неполную дешифрацию, рекомендуется всег-
да устанавливать их в слоты с более низким приоритетом относительно карт с пол-
ной дешифрацией, это уменьшит вероятность конфликтов по диапазону захватываемых 
адресов.

  Ниже представлены разные схемотехнические решения для формирования сигнала 
IORQGE периферийными устройствами:

- Рис.2 - с помощью бистабильного логического элемента и диода;
- Рис.3 - с помощью тристабильного буфера;
- Рис.4 - с помощью PNP транзистора;
- Рис.5 - с помощью NPN транзистора;
- Рис.6 - формирование сигнала IORQGE только в цикле чтения;
- Рис.7 - формирование сигнала IORQGE только в цикле записи.
                                                       _____
                                                +5V   | BF >|
               __   VD1                          __---|     |--- IORQGE
ADR/----------|1 |                ADR/----------|1 |  |--+  |
              |  o--[>|-- IORQGE                |  |--oOE|  |
      __   +--|__|                      __   +--|__|  |__|__|
     |1 |  |                           |1 |  |
M1/ -|  o--+                      M1/ -|  o--+
     |__|     Рис.2                    |__|     Рис.3
                
         +5V_____  VT1  ___ IORQGE
              |  \     /                                  
           R1 П   V___/                          __
              Ц     |             ADR/----------|1 |  
              |     |                           |  o--+
              +-----+---+               __   +--|__|  |
                    |   |              |1 |  |       _|_
                 R2 П  === C      M1/ -|  o--+      /   \
               __   Ц   |              |__|      __/     V___ 
ADR/----------|1 |  |   |                    +5V     VT1      IORQGE
              |  |--+---+
      __   +--|__|                             Рис.5
     |1 |  |
M1/ -|  o--+
     |__|     Рис.4
        
                     _____                                   _____
              +5V   | BF >|                           +5V   | BF >|
               __---|     |--- IORQGE                  __---|     |--- IORQGE
ADR/----------|1 |  |--+  |             ADR/----------|1 |  |--+  |
              |  |--oOE|  |                           |  |--oOE|  |
      __   +--|__|  |__|__|                   __   +--|__|  |__|__|
WR/ -|& |  |                            RD/ -|& |  |
     |  o--+                                 |  o--+
M1/ -|__|     Рис.6                     M1/ -|__|     Рис.7

В формирователе сигнала IORQGE рекомендуется использовать микросхемы с минималь-
ными задержками времени распространения сигнала, и составные транзисторы.


4.4 Арбитр адреса портов ввода-вывода шины NemoBus.

Принцип действия арбитра адреса основан на разном уровне приоритета устройств 
ввода-вывода (УВВ) компьютера, использующего шину NemoBus. Для компьютеров с 
шиной NemoBus приоритет УВВ распределяется следующим образом:

1) MASTER SLOT (SLOT 0) - УВВ имеют наивысший приоритет и предполагают полную 
дешифрацию портов ВВ, кроме того, устройство в этом слоте может быть задатчиком 
в цикле захвата шины. Адресные сигналы слота шины NemoBus v.1.2 позволяют адре-
совать всё адресное пространство. ОЗУ компьютера. 

2) SLAVE SLOT 1 - SLAVE SLOT n (слоты от 1 до n)) - УВВ имеют более низкий 
приоритет, понижающийся по мере увеличения номера слота.

3) УВВ компьютера имеют наинизший приоритет, и могут быть активны только в том 
случае, если не активно ни одно УВВ на шине NemoBus.  

Такое архитетурное построение шины обеспечивает безконфликтное подключение УВВ 
имеющих неполную дешифрацию адреса, что традиционно для УВВ ZX Spectrum, а так 
же позволяет применять для УВВ новые свободные диапазоны адресов портов без 
необходимости переделки схемотехники компьютера.
Архитектурным исключением может быть случай использования в качестве CPU одно-
кристальной микро-ЭВМ eZ80, содержащей встроенные УВВ, имеющие более высокий 
приоритет по сравнению со всеми остальными УВВ.

На Рис.8 приведена типовая схема последовательного арбитра шины для компьютера 
с тремя слотами NemoBus:

        IORQ/ SLOT0
             ^         IORQ/ SLOT1
             |              ^         IORQ/ SLOT2
             |  __          |              ^
CPU IORQ/ ->-+-|1 |         |  __          |
               |  |---------+-|1 |         |  __
IORQGE0   ->-+-|__|           |  |---------+-|1 |
 SLOT0       |      IORQGE1-+-|__|           |  |---> IORQG/ to MAINBOARD
             П R1    SLOT1  |      IORQGE2-+-|__|
             Ц 680          П R2    SLOT2  |
             |              Ц 680          П R3
            ---             |              Ц 680
                           ---             |
                   Рис.8                  ---

            IORQ/ SLOT0
                 ^
                 | IORQ/ SLOT1
                 |  __  ^               IORQ/ SLOT2
CPU IORQ/->---+--+-|1 | |                __  ^
              |    |  |-+ +-------------|1 | |    
IORQGE0  ->-+-|--+-|__|   |             |  |-+     
 SLOT0      | |  |      +-|-------------|  |                 __                       
            | |  П R1   | |             |  | +--------------|1 |
            | |  Ц 680  | |IORQGE1-+--+-|__| |              |  |                      
            | |  |      | | SLOT1  |  |      | +------------|  |
            | | ---     | |        |  П R2   | |            |  |---> IORQG/ to
            | |         | |        |  Ц 680  | | +----------|  |     MAINBOARD
            | |         | |        |  |      | | |          |  |
            | |         | |        | ---     | | |IORQGE2-+-|__|    
            | +---------|-+--------|---------+ | | SLOT2  |
            |           |          +-----------+ |        П R3
            +-----------+------------------------+        Ц 680
                     Рис.9                                |
                                                         ---

Где IORQGE0-2 - сигналы со слотов 0-2, а IORQG/ - результирующий сигнал, подава-
емый в схему компьютера.
Недостатком схемы на Рис.8 является значительная задержка сигнала IORQG/ относи-
тельно заднего фронта сигнала IORQ/, что может приводить при записи или чтении 
по его заднему фронту к некорректному результату. Это устраняется использованием
схемы параллельного арбитра шины представленного на Рис.9. Так же в схемах выби-
раемых только в цикле записиили возможно использование дешифрации по  переднему 
фронта IORQG/.  
В арбитре шины представленном на Рис.8 рекомендуется использовать микросхемы с 
минимальными задержками времени распространения сигнала. Арбитр шины представ-
ленный на Рис.9 рекомендуется к реализации в ПЛИС. 


4.5 Формирователь сигнала RDR/ для шины NemoBus.

Сигнал RDR/ периферийной карты предназначен для блокирования внутреннего ПЗУ 
компьютера этой картой, а так же для формирования сигнала CSR/ для следующего 
внешнего устройства с более низким приоритетом. По своей сути сигнал RDR/ выпол-
няет ту же функцию, что и IORQGE при захвате диапазона адресов портов, а сигнал 
CSR/, ту же функцию, что и IORQ/.
Сигнал RDR/ периферийной карты формируется из сигнала включения режима подмены 
ПЗУ CS/, формируемого портом внешнего устройства,и из формируемого внешним 
устройством сигнала выборки диапазона подменяемых адресов. 
  В каждый слот шины NemoBus v.1.2 и выше допускается установка только одной
периферийной карты использующей подмену ПЗУ компьютера в окне CPU0. В компьюте-
рах с более ранними версиями шины NemoBus, не имеющих арбитра доступа к памяти в
окне CPU0, допускается одновременная установка только одной периферийной карты 
использующей подмену ПЗУ компьютера в окне CPU0. Эта карта может быть установле-
на в любой слот.
 
На Рис.10-13 представлены возможные схемы формирования сигнала RDR/ периферийны-
ми устройствами:
                                         _____
                                  +5V   | BF >|
        __   VD1                   __---|     |--- RDR/
CS/ ---|1 |                CS/ ---|1 |  |--+  |
       |  o--[>|-- RDR/           |  |--oOE|  |
ADR/---|__|                ADR/---|__|  |__|__|
                                              
       Рис.10                           Рис.11
                
   +5V_____  VT1  ___ RDR/  
        |  \     /                                  
     R1 П   V___/                    __
        Ц     |             ADR/----|1 |  
        |     |                     |  o--+
        +-----+---+         CS/ ----|__|  |
              |   |                      _|_
           R2 П  === C                  /   \
         __   Ц   |                  __/     V___ 
ADR/----|1 |  |   |              +5V     VT1      RDR/
        |  |--+---+
CS/ ----|__|                           Рис.13
            
          Рис.12

В формирователе сигнала RDR/ рекомендуется использовать микросхемы с минималь-
ными задержками времени распространения сигнала, и составные транзисторы.


4.6 Арбитр доступа к памяти в окне CPU0 шины NemoBus.

Арбитр доступа к памяти в окне CPU0, применяется при необходимости обеспечения 
доступа к этому окну несколькими периферийными устройствами. Принцип арбитриро-
вания доступа к памяти в окне CPU0 основан на разном уровне приоритета слотов 
шины NemoBus. Для компьютеров с шиной NemoBus v.1.2 приоритет доступа к памяти в
окне CPU0 распределяется следующим образом:

1) Компьютер имеет наинизший приоритет при установке в окно CPU0 страницы ОЗУ.  

2) SLOT 0(или MASTER SLOT) - SLAVE SLOT n (слоты от 1 до n) - имеют более низкий 
приоритет, понижающийся по мере увеличения номера слота.

На Рис.14 приведена типовая схема последовательного арбитра доступа к памяти в 
окне CPU0 для компьютера с тремя слотами NemoBus:

         CSR/ SLOT0
             ^          CSR/ SLOT1
             |              ^          CSR/ SLOT2
             |  __          |              ^
MB CSR/   ->-+-|1 |         |  __          |
               |  |---------+-|1 |         |  __
RDR/ SLOT0->-+-|__|           |  |---------+-|1 |
             |      RDR/ ->-+-|__|           |  |---> RDR/ to MAINBOARD
             П R1   SLOT1   |      RDR/ ->-+-|__|
             Ц 680          П R2   SLOT2   |
             |              Ц 680          П R3
            ---             |              Ц 680
                           ---             |
                   Рис.14                 ---

              CSR/ SLOT0
                  ^
                  |  CSR/ SLOT1
                  |  __  ^                CSR/ SLOT2
MB CSR/   ->---+--+-|1 | |                __  ^
               |    |  |-+ +-------------|1 | |    
RDR/ SLOT0->-+-|--+-|__|   |             |  |-+     
             | |  |      +-|-------------|  |                 __                       
             | |  П R1   | |             |  | +--------------|1 |
             | |  Ц 680  | | RDR/->-+--+-|__| |              |  |                      
             | |  |      | | SLOT1  |  |      | +------------|  |
             | | ---     | |        |  П R2   | |            |  |---> RDR/ to
             | |         | |        |  Ц 680  | | +----------|  |     MAINBOARD
             | |         | |        |  |      | | |          |  |
             | |         | |        | ---     | | | RDR/->-+-|__|    
             | +---------|-+--------|---------+ | | SLOT2  |
             |           |          +-----------+ |        П R3
             +-----------+------------------------+        Ц 680
                      Рис.15                               |
                                                          ---
Недостатком схемы на Рис.14 является значительная задержка сигнала RDR/ по срав-
нению с CSR/ после его возврата в неактивное состояние. Это устраняется исполь-
зованием схемы параллельного арбитра представленной на Рис.15, в которой задний 
фронт RDR/ выравнивается по CSR/.  
В арбитре шины представленном на Рис.14 рекомендуется использовать микросхемы с 
минимальными задержками времени распространения сигнала. Арбитр шины представ-
ленный на Рис.15 рекомендуется к реализации в ПЛИС. 


4.7 Формирователь маскируемых прерываний от устройств шины NemoBus.

Возможность работы одновременно с несколькими источниками маскируемых прерыва-
ний, а так же арбитрирования их запросов существовала для шины NemoBus изначаль- 
но, и доступна во всех её версиях. Шина NemoBus предоставляет возможность неза-
висимого и неарбитрируемого выставления запросов маскируемого прерывания устрой-
ствами, а так же выставления ими арбитрируемого приоритетного вектора прерыва-
ния. Т.к. для шины NemoBus арбитрирование вектора маскируемого прерывания 
производится тем же арбитром что и арбитрирование захвата диапазона адресов пор-
тов ввода-вывода, то приоритеты векторов прерывания устройств соответствуют при-
оритетам слотов в которые они утановлены: наивысший приоритет у устройства в 
master-слоте, наинизший - у материнской платы, при этом режим арбитрирования 
векторов прерывания задаётся значением сигнала M1/=0. При активации этого сигна-
ла, все периферийные устройства выставившие запросы на маскируемое прерывание, 
активируют свои сигналы IORQGE, тем самым блокируя выставление векторов прерыва-
ния устройствами с более низким приоритетом.
Для работы с контроллерами прерываний, в ZX Spectrum используется режим IM2 
обработки прерываний процессором. При генерации адресов вектора прерывания, мо-
гут быть задействованы разряды D1-D7 вектора прерывания, позволяющие определять 
128 двухбайтовых адресов вектора прерывания. Разряд D0 вектора прерывания может 
иметь любое требуемое значение, но необходимо иметь ввиду, что векторы прерыва-
ния свойственные ZX Spectrum - нечётные, в то время как векторы прерывания ис-
пользуемые ИС Zilog или Intel чётные.    
Арбитрирование выставления вектора прерывания осуществляется аналогично арбитри-
рованию захвата диапазона портов ВВ с помощью сигнала IORQGE формируемого пери-
ферийным стройством.  
На Рис.16 представлена типовая схема программируемого контроллера прерываний для 
устройств шины NemoBus: 

                        +-------------------------------+------|<]------> INT/
                        |   +5V <--+   _____            |      VD1
                        |   __     |  |  |T |  DD3.1    |
                        +--|& |    +--oS/|Q/o--+        |
                           |  o--+ |  |--|  |  |        |
IRQ/-----------------------|__|  +-|-->C |  |  |        |
                      __   DD2.1   +--|D |  |  |        |
               +-----|& |             |--|  |  |   __   |
DD6.1  _____   |     |  |-------------oR/|Q |  +--|1 |  |
      |  |T |  |  +--|__|DD1.1        |__|__|  |  |  |--+
 +5V--oS/|Q/o--|--|-------------+--------------|--|__| DD5.1 ________
      |--|  |  +--|-------------|--------------|------------oOE/|BF >|
 Dn --|D |  |  |  |  +----------|--------------+            |---|    |
WCS/-->C |  |  |  |  |          |   __   +------------------|___|____|--> Dx
      |--|  |  |  |  |   _____  +--|1 |  |                    DD4.1
RES/--oR/|Q |  |  |  |  |  |T |    |  |--+      
      |__|__|  |  |  +--oS/|Q/o----|__|  |   __ DD5.4
          __   |  |     |--|  |    DD5.3 +--|1 |      __ DD1.2
IORQ/----|1 |  |  |GND--|D |  |             |  |-----|& |    ________
         |  |--+--|----->C |  |     +-------|__|     |  |---oOE/|BF >|
      +--|__|     |     |--|  |     |        __   +--|__|   |---|    |
      |  DD5.2    +-----oR/|Q |     |  ADR--|& |  |    +5V--|___|____|--> IORQGE
      |           |     |__|__|     |       |  o--+           DD4.2     
 M1/--+-----------|-----------------+-------|__|
       _____      |      DD3.2              DD2.2
      |  |T |     |   
 +5V--oS/|Q/o     |
      |--|  |     |
 D7 --|D |  |     |              Рис.16
WCS/-->C |  |     |
      |--|  |     |
RES/--oR/|Q |-----+
      |__|__| DD6.2

Прерывание от устройства фиксируется по отрицательному фронту сигнала IRQ/. 
Триггер DD3.1 взводится прерыванием, запоминая факт запроса маскируемого преры-
вания устройством, и находится в таком состоянии до момента запроса процессором 
вектора прерывания от устройства. Сигнал с выхода триггера DD3.1 взводит триггер
DD3.2, тем самым разрешая активацию сигнала IORQGE и одновременное выставление 
вектора прерывания при его запросе процессором сигналами IORQ/ or M1/=0. Триггер
DD3.2 сохраняет взведённое состояние до окончания действия сигналов 
IORQ/ or M1/=0. При этом сигнал IORQGE блокирует выставление вектора прерывания 
всеми устройствами с более низким приоритетом. 
Так же сигнал IORQGE может быть активирован при при обращении к портам устройст-
ва при активации сигнала дешифратора ADR=1, блокируя при этом обращение к портам
всех устройств с более низким приоритетом захвата адресного пространства портов.
При запросе процессором вектора прерывания, открывается буфер DD4.1, и на соот-
ветствующий разряд Dx шины данных выставляется ноль. Т.к. шина данных в клонах 
использующих шину NemoBus должна быть стабильна, и по умолчанию подтянута резис-
торами к единичному логическому уровню, то ноль в одном из разрядов шины данных 
формирует вектор прерывания отличный от стандартного для ZX Spectrum вектора ка-
дрового прерывания #FF. 
Логический уровень разряда Dn триггера DD6.1, защёлкиваемый сигналом WCS/, опре-
деляет состояние маски, разрешающей прохождение сигнала прерывания от устройства
к процессору. По умолчанию, после сброса, прерывания от всех устройств кроме ка-
дрового прерывания компьютера, запрещены.
Для всех устройств шины NemoBus адрес порта маски вектора прерывания является 
общим: WCS/ = wr #F777. На сегодняшний день разряды D0-D7 порта маски вектора 
прерывания #F777 выделены следующим устройствам:

D0 - маска прерывания соответствующая сигналу окончанию счёта контроллером DMA  
     8237, соответствует разряду D4 вектора прерывания, по сбросу прерывание 
     запрещено;
D1 - маска для прерывания от первого таймера 8254, соответствует разряду D5 век-
     тора прерывания, по сбросу прерывание запрещено;
D2 - маска для прерывания от второго таймера 8254, соответствует разряду D6 век-
     тора прерывания, по сбросу прерывание запрещено;
D3 - маска для прерывания от ULA, соответствует разряду D7 вектора прерывания,
     по сбросу прерывание разрешено (на схеме не показано);
D4-D6 - зарезервированы;
D7 - разрешение работы контроллера прерываний, по сбросу работа запрещена;

Разряды D0-D3, D7 порта #F777 маски вектора прерывания относятся к одному и тому
же контроллеру маскируемых прерываний. При наличии такого контроллера, он уста-
навливается в слот с наивысшим приоритетом. Остальные контроллеры маскируемых 
прерываний используют разряды D4-D6, кроме того, разряды D3, D7 порта маски век-
тора прерывания используются всеми контроллерами маскируемых прерываний.
Порт маски вектора прерывания #F777 доступен на чтение (на схеме не показано), 
поэтому он обязан запоминать байт маски полностью. Соответственно содержимое 
этого порта доступно на чтение только из контроллера маскируемых прерываний с 
наивысшим приоритетом. Чтение из остальных контроллеров маскируемых прерываний 
должно блокироваться сигналом IORQGE контроллера маскируемых прерываний с наи-
высшим приоритетом.
На Рис.17 представлена диаграмма работы контроллера прерываний:

       __    __________________________________________________________________
IRQ/     \__/
       __                             _________________________________________
INT/     \___________________________/
       ____________________                                   _________________
M1/                        \_________________________________/
                             ________________________________
IORQGE ---------------------/                                \-----------------
       _____________________________                         __________________
IORQ/                               \_______________________/
                               
Dx     ------------------------------<XXXXXXXXXXXXXXXXXXXXXXX>-----------------

                           Рис.17

На Рис.18 представлена схема упрощённого контроллера прерываний, без функции 
маскирования прерываний:

           +5V <--+     +----------------------+---------|<]----------> INT/ 
                  |     |   +5v <--+   _____   |         VD1
                  П R1  |   __     |  |  |T |  |
                  Ц     +--|& |    +--oS/|Q/o--+           
         ___      |        |  o--+ |  |--|  |  | 
IRQ/-----о о------+--------|__|  +-|-->C |  |  |             
         JP1          __   DD2.1   +--|D |  |  |
                  +--|& |             |--|  |  |
                  |  |  |-------------oR/|Q |  |           
RES/-----------+--|--|__|             |__|__|  |     
               |  |  DD1.1             DD3.1   |          ________
               |  +----------------------------|---------oOE/|BF >|
               |  |  +-------------------------+         |---|    |
               |  |  |   _____   +-----------------------|___|____|---> Dx
               |  |  |  |  |T |  |      __                 DD4.1
               |  |  +--oS/|Q/o--+-----|1 |      __ 
          __   |  |     |--|  |        |  |-----|& |
IORQ/----|1 |  |  |GND--|D |  |  +-----|__|     |  |--+  
         |  +--|--+----->C |  |  |     DD5.2 +--|__|  |   ________
      +--|__|  |        |--|  |  |           |  DD1.2 +--oOE/|BF >|
      |  DD5.1 +--------oR/|Q |  |      __   |           |---|    |
      |                 |__|__|  |ADR--|& |  |      +5V--|___|____|---> IORQGE
      |                  DD3.2   |     |  o--+              DD4.2     
 M1/--+--------------------------+-----|__|
                                       DD2.2
                 Рис.18

В упрощённом контроллере отключение прерываний возможно только в ручном режиме
с помощью перемычки JP1.


4.8 Интерфейс динамического запроса ПДП для шины NemoBus v.1.2.

В цикле запроса ПДП, внешнее устройство на шине NemoBus выставляет запрос захва-
та шины BUSRQ/, а после его подтверждения, по спаду BUSAK/ выставляет на одном 
из разрядов D0-D6 шины данных запрос канала ПДП установкой его в ноль. После 
прихода запроса ПДП, контроллер ПДП перехватывает сигнал BUSRQ/, и удерживает 
его до завершения цикла ПДП. Далее контроллер ПДП сбрасывает разряд D7 шины дан-
ных в ноль, что означает подтверждение запроса ПДП, и в соответствии с приорите-
том запросов, выставляет подтверждение приоритетному каналу на одном из разрядов
D0-D6 шины данных, соответствующих разрядам запросов ПДП. Устройствам на шине 
NemoBus доступны только 7 каналов ПДП, для каждого из которых выделен свой бит 
на шине данных для выставления запроса канала ПДП. Тип выходов запросов канала 
ПДП и его подтверждения - ОК. 
После этого контроллер ПДП генерирует импульс на линии ER\RFSH/, индицирующий 
завершение процедуры запроса ПДП устройством. По заднему фронту сигнала 
ER\RFSH/, внешнее устройство чей запрос подтверждён, фиксирует у себя подтверж-
дение своего запроса. Кроме того, все устройства запрашивавшие одновременно ПДП, 
освобождают шину данных, и снимают свои запросы BUSRQ/. После этого контроллер 
ПДП выполняет цикл ПДП, по завершении которого выставляет в ноль сигнал 
EOP\HALT/, сообщающий внешнему устройству о завершении запрашиваемого ПДП, а 
также снимает запрос BUSRQ/, освобождая шину. После этого, внешние устройства, 
чьи запросы ПДП не были удовлетворены, могут попытаться их повторить.
На Рис.19 представлена диаграмма цикла динамического запроса ПДП для шины 
NemoBus v.1.2:

           __                           __                      ________________
BUSRQ/ BUS   \_________________________/
           ________                                                    _________
BUSRQ/ DMA         \______________________                      ______/
           __                                                          _________
BUSRQ/ CPU   \____________________________                      ______/
           ____                                                          _______
BUSAK/         \__________________________  //-- цикл ПДП --//  ________/
                ___________________    ___                      _____________
ER\RFSH/   XXXX/                   \__/                                      \XX
                __________________________                      __    ____
EOP\HALT/  XXXX/                                                  \__/    \XXXXX 

D0-D6      XXXX>-<ЗАПРОС><ПОДТВЕРЖДЕНИЕ>--                      -----------<XXXX
                                          
D7         XXXX>---------\_____________/--                      -----------<XXXX

                           Рис.19


4.9 Управление памятью в окнах CPU0-CPU3 с шины NemoBus v.1.2.
  
С помощью комбинации сигналов RDR/ и BLK шины NemoBus v.1.2 можно задавать режи-
мы чтения-записи для внутреннего и внешнего ОЗУ и ПЗУ в окнах CPU0-CPU3. Эти си-
гналы шины NemoBus имеют более высокий приоритет по сравнению с управляющими си-
гналами от портов материнской платы. Комбинируя эти сигналы в циклах чтения и 
записи для окна CPU0, внешнее устройство может получать совмещённые режимы, на-
пример rdROM/wrRAM, или только rdRAM с блокировкой записи, и т.д. В Табл.9 пред-
ставлены возможные режимы управления внутренней памятью компьютера в окне CPU0, 
реализованные через D0 #1FFD и D3 #EDF7 для архитектуры SKAY, и соответствующие
им комбинации сигналов RDR/ и BLK на шине NemoBus.

Табл.9                                     Табл.10
-----+-----+-------------+-----+-----+---  -----+-----+---------+-----+---------
#EDF7|#1FFD|  CPU0 Mode  |RDR/ | BLK |r/w   A15 | A14 | D0#1FFD | BLK | RAM/ROM
  D3 |  D0 |             |     |     |     -----+-----+---------+-----+---------
-----+-----+-------------+-----+-----+---    0  |  0  |    0    |  Z  | INT ROM
     |     |             | 1/0*|  0  |WR     0  |  0  |    1    |  Z  | INT RAM
  0  |  0  |   r/wROM    |-----|-----|---    0  |  1  |    x    |  Z  | INT RAM
     |     |             |  0  |  0  |RD     1  |  0  |    x    |  Z  | INT RAM
-----+-----+-------------+-----+-----+---    1  |  1  |    x    |  Z  | INT RAM
     |     |             |  1  |  1  |WR     0  |  0  |    x    |  0  | INT ROM
  0  |  1  |   r/wRAM    |-----|-----|---    0  |  1  |    x    |  0  | EXT RAM
     |     |             |  1  |  1  |RD     1  |  0  |    x    |  0  | EXT RAM
-----+-----+-------------+-----+-----+---    1  |  1  |    x    |  0  | EXT RAM
     |     |             |  1  |  1  |WR     x  |  x  |    x    |  1  | INT RAM
  1  |  0  | rdROM/wrRAM |-----|-----|---  -----+-----+---------+-----+---------
     |     |             |  0  |  0  |RD       
-----+-----+-------------+-----+-----+---      
     |     |             |0*/1 |  0  |WR       
  1  |  1  | rdRAM/wrROM |-----|-----|---      
     |     |             |  1  |  1  |RD       
-----+-----+-------------+-----+-----+---
* - возможность wrROM определяется схемотехникой компьютера, при отсутствии воз-
    можности записи внутреннего ПЗУ, RDR=1.

Внешние устройства формирующие сигнал BLK, обязаны учитывать в каком окне он 
действует, т.к. для шины NemoBus v.1.2 в окнах CPU1-CPU3 он управляет подменой 
внутренней памяти компьютера на память внешнего устройства, управляемую внешним 
менеджером памяти. В Табл.10 представлены возможные режимы управления памятью 
в окнах CPU0-CPU3 в зависимости от состояния сигнала BLK.
