Обновлено 2026
Терминология:
- Внутренний порт #FE = штатный порт на материнской плате
- Внешний порт #FE = порт на плате Z-Controller
Z-Controller (и другие контроллеры IBM-клавиатуры) обладает досадным недостатком - его разработчик KOE (Алексей Жабин) не интегрировал в него входы Sinclair-джойстиков. При установке в слот такого контроллера сигналом /IOGE блокируется внутренний порт #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."
В известной книге Инфоркома "Периферия своими руками" для Sinclair-джойстиков мимоходом предложена та же схема с конфликтом портов #FE, без осмысления того, что в общем случае Spectrum-клона электрически это недопустимо, а в случае ZX Interface 2 имела место конструктивная особенность схемы с открытыми коллекторами.
Кроме отсутствия Sinclair-джойстиков, ZC имеет второй недостаток - в нём неправильно формируется сигнал /IOGE - он выдаётся по приходу /RD, т.е. одновременно с /IORQ, на /CS блокируемого порта #FE проходят иголки, порт успевает включаться, и клавиатура чудит.
Осциллограмма иголок на штатном #FE:
1 A0
2 /IOGE из ZC
3 /IORQ на ZC
4 /CS штатного порта #FE
Несколько лет назад КОЕ выложил исходник прошивки ZC, и я отредактировал её, исправив обе названных проблемы. Выкладываю две новых версии прошивки EPM7128 (все в Max Plus 10.2). Листинг AHDL можно изучать, открывая в Блокноте файл .tdf.
Версия 1.0. Оригинальная прошивка 2007 от КОЕ.
Версия 1.1. Устранены иголки (/RD заменён на not /WR).
Версия 1.2. Устранены иголки и добавлено отключение внешнего #FE по входу /DOS. По данному входу в ZC блокировались все порты, кроме #FE - данная блокировка мною убрана, т.к. доработанная плата моего BDI стоит выше по ZX-bus и формирует полноценный /IOGE вместо /DOS. Black Cat считает, что данная блокировка портов ZC не нужна в любом случае, и вместо /DOS следует подавать +5V.
При использовании прошивки 1.2 сигнал /DOS на слоте ZC надо отрезать от ZX-bus и подать на него сигнал Joy о нажатии любой кнопки на Sinclair-джойстиках. Joy надо сформировать на материнской плате дополнительной микросхемой ЛА2 (она собирает 5 сигналов, отправляемых из джойстиков в #FE). Пока нажата любая кнопка на Sinclair-джойстиках, IBM-клавиатура будет отключена.
Также этим входом можно отключать IBM-клавиатуру с целью постоянного использования штатной клавиатуры.
Если хотите сохранить сигнал /DOS, попробуйте изменить мою прошивку, используя для блокировки свободный вход EPM7128 (например, пин 75).
Также в версии 1.2 мне пришлось удалить третье состояние /IOGE, чтобы уложить прошивку в 128 ячеек.
Исходная прошивка EPM7128 на AHDL задействует 126 из 128 ячеек, поэтому внесение дополнений почти невозможно, и мне пришлось обойтись их минимумом.
Моя версия 1.1 занимает 127 ячеек, версия 1.2 - 125 ячеек.
Для прошивки EPM7128 необходимо приобрести дешёвый китайский USB-Blaster на Озоне, и подготовить его к работе, перепрошив чип самого бластера.
При необходимости редактировать прошивку EPM7128 это приходится выполнять в старом софте Max Plus 10.2, потому что новый софт Quartus 13.0 SP1 не способен при компиляции уложиться в 128 ячеек даже без внесения изменений. Но прошить EPM7128 из Max Plus 10.2 не удастся, потому что он не поддерживает USB-Blaster, а только старый бластер на LPT-порту.
Поэтому для прошивки устанавливаем Quartus 13.0 SP1 в минимальной комплектации (с библиотекой для Max7000), запускаем в нём инструмент прошивки, выбираем подключенный USB-Blaster, открываем скомпилированный в Max Plus 10.2 файл .pof , и запускаем его загрузку в EPM7128.
Max Plus 10.2 и Quartus 13.0 SP1 без проблем устанавливаются на одну Windows 10. Названная версия Quartus была последней, где поддерживается EPM7128.
Sinclair-джойстики для Z-Controller
Moderator: Shaos
-
SKV
- Novelist
- Posts: 41
- Joined: 06 May 2022 08:39
Sinclair-джойстики для Z-Controller
You do not have the required permissions to view the files attached to this post.
Last edited by SKV on 07 Aug 2026 22:30, edited 5 times in total.
-
Shaos
- Admin
- Posts: 25249
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: Sinclair-джойстики для Z-Controller или другого контролл
Одобрил сообщение и автора - теперь можно писать без модерации 
-
SKV
- Novelist
- Posts: 41
- Joined: 06 May 2022 08:39
Re: Sinclair-джойстики для Z-Controller
Текст обновлён, выложена доработанная прошивка ZC.
