При всей своей неоспоримой ценности Z-Controller (и другие контроллеры IBM-клавиатуры) обладает досадным недостатком - его разработчик Алексей Жабин не интегрировал в него входы Sinclair-джойстиков. При установке в слот такого контроллера сигналом IORQGE блокируется внутренний порт #FE вместе с интегрированными в него джойстиками. Насколько я вижу, в Спектрум-сообществе эта проблема до настоящего момента не поднималась.
В оригинальном Spectrum эти джойстики тоже не интегрированы во внутренний порт #FE, а вынесены во внешний порт #FE на плате ZX Interface 2. При этом оба порта #FE включаются одновременно в режиме конфликта, при котором ноль на дата-линиях любого из них передавливает единицу из второго порта. Благодарю Константина Айги за ссылку в подтверждение этого факта:
"The joystick and the top row keys may be used at the same time because it must still be possible to use the number keys when the interface 2 is attached. Naturally the IF2 bits override the ULA bits, because the IF2 is connected to the Z80 bus and the ULA has to make it through the bus boundary. On the other hand the IF2 drivers are weak enough so that the ULA can successfully pull down a bit on the Z80 data bus when a key is pressed. Maybe the joystick drivers in the MT62001 IC are open collectors, at least their pull up resistors are high enough."
https://k1.spdns.de/Vintage/Sinclair/82 ... h%20Specs/В известной книге Инфоркома "Периферия своими руками" для Sinclair-джойстиков мимоходом предложена та же схема с конфликтом портов #FE, без осмысления того, что в общем случае Spectrum-клона электрически это недопустимо, а в случае ZX Interface 2 имела место конструктивная особенность схемы с открытыми коллекторами.
Я решил проблему конфликта внешнего и внутреннего портов #FE. Смотрите приложенную схему.
Нажатие любой кнопки на любом из двух Sinclair-джойстиков обнаруживается элементом D5.
Если при этом осуществляется чтение порта #F7FE (полуряд 1..5, А11=0) или порта #EFFE (полуряд 0..6, А12=0), то дешифратор D1 элементом D4.1 отключает внешний порт #FE на Z-Controller и элементом D3.2 разрешает выбор внутреннего порта #FE в обход Z-Controller.
Таким образом, происходит автоматическое переключение между кнопками 1..5, 6..0 на клавиатуре и на джойстиках. В момент нажатия кнопок на Sinclair-джойстиках внешняя клавиатура не работает, во все прочие моменты времени она работает.
Элемент D4 серии 1531 для минимизации задержки арбитрирования сигнала /IORQ.
**
Данную статью я не смог разместить на форуме zx-pk.ru, поскольку там невозможна регистрация; и на форуме tslabs.info по этой же причине; и на форуме zx.clan.su, поскольку там запрещено создавать темы новым пользователям. Тем не менее выражаю признательность создателю zx.clan.su Black_Cat за беспрецедентную систематизацию сведений о Spectrum-архитектуре и обеспокоен его загадочным исчезновением.