Доработки Дельты-С на 75 микросхемах

Старый спектрумистский форум

Moderator: Shaos

SKV
Novelist
Posts: 42
Joined: 06 May 2022 08:39

Доработки Дельты-С на 75 микросхемах

Post by SKV »

Обновление 2026 - Гербер платы расширений и итоговый альбом доработок. Подключение геймпадов Dendy.

Содержание
1) Врождённая болезнь видеосигнала
2) Подключение по SCART
3) Доработки: Kempston, 128K+AY
4) Арбитр IORQ. Разблокировка Sinclair-джойстиков, отключенных Z-Controller'ом.
5) Gotek как замена дискетам
6) Приложение. Принципиальная схема Дельты-С.
7) Перечень свободных элементов на плате Дельты-С
8) Видеосигнал. Часть 2:
- Дождь из видеопомех. Замена делителей. Не применяйте экранирование видеокабеля.
- Подбор пониженной яркости. Непрошенные цветофильтры в TV.
- Устранение мерцающей вертикальной линии на правой границе бордюра. Подбор RC-цепочки по осциллограмме.
- Вертикальные штрихи-артефакты между знакоместами при инверсии Ink/Paper
9) Проблемы совместимости и другие просчёты (обзорно):
- Слабая разводка шин питания
- Нестандартный кварц
- Плавающая шина видеоданных
- Отсутствие порта #FF
- Неполное повторение арбитра медленного поля
- Хаос с сигналом INT
---

1) Вертикальная рябь изображения и усыпание точками экранов Basic 48 и TR-DOS, пропадающие при остановке Z80 (удержании кнопки Reset). Причина - ошибка проектирования печатной платы Дельты: дорожка зелёного видеоканала от крайнего потенциометра R44 до базы транзистора VT5 по всей длине примыкает к высокочастотной дорожке A0. Результат - сильные помехи в зелёном канале, синхронно с выводом звука на бипер.

Устранение - отрезать дорожку при повороте на транзистор, вместо неё от движка потенциометра проложить провод поверху.

В принципиальной схеме Дельты перепутаны каналы RGB, равно как и джойстиков Sinclair.
Рис_Точки на экране.jpg
Рис_Канал G.jpg
Рис_Отрезать дорожку.jpg
You do not have the required permissions to view the files attached to this post.
Last edited by SKV on 08 Sep 2026 05:19, edited 6 times in total.
SKV
Novelist
Posts: 42
Joined: 06 May 2022 08:39

Re: Доработки Дельты-С на 75 микросхемах

Post by SKV »

2) Видео и аудио на SCART
Я применил разъём SubD9 от IBM COM-порта.
Размах каналов R,G,B уменьшить потенциометрами до 0,7V по осциллографу, поочерёдно выводя красный, зелёный, синий экран (использовать утилиту TEST TV или команды Бейсика PAPER и BORDER).

Потенциометры - от края к центру платы:
R44 - зелёный, выход на схеме 75, на плате не подписан.
R43 - красный, выход на схеме 74, на плате 4.
R42 - синий, выход на схеме 73, на плате 3.
Схема_SCART.jpg
3) Доработки
- RC-цепочка длительности INT. (Альтернатива RC-цепочке - на триггере 1533ТМ2 с гашением от Z80).
Изменено и перенесено ниже.

- Kempston джойстик

- Память 128кБ, AY3-8910, смешивание аудиосигналов Beep+AY+General Sound

16 микросхем РУ5Д2+РУ6 заменить на 16 штук РУ5(Г).
ROM 27128 заменить на 27256 с прошивкой SOS 128 (либо на 27512 с прошивкой SOS 128 + TR-DOS, см. схему у Константина Айги).

Все эти новые микросхемы установить в панельки. На каждую микросхему РУ5 снизу по диагонали напаять блокировочный конденсатор 0,1 мкФ. Рекомендуется напаивать такой конденсатор и на все остальные микросхемы.
00_Доработки Дельты_Лист 1.jpg
You do not have the required permissions to view the files attached to this post.
Last edited by SKV on 07 Jul 2024 08:24, edited 2 times in total.
SKV
Novelist
Posts: 42
Joined: 06 May 2022 08:39

Re: Доработки Дельты-С на 75 микросхемах

Post by SKV »

4) ZX-bus, арбитр IORQ. Разблокировка Sinclair-джойстиков, отключенных Z-Controller'ом или другим контроллером IBM-клавиатуры.

Вся конструкция с ZX-bus размещается в IBM-корпусе, заодно решается и проблема Спектрумов с мощностью блока питания.

Клавиатура Дельты с прозрачными крышками отвратительна - кнопки заедают при нажатии. Поэтому подключение контроллера IBM-клавиатуры является необходимостью. Поразительно, но разработчики таких контроллеров игнорируют существование Sinclair-джойстика - основного (наряду с Kempston) игрового порта. Контроллер IBM-клавиатуры представляет собой внешний порт #FE, посредством арбитра IORQ блокирующий обращение к штатному порту #FE вместе с интегрированными в него Sinclair-джойстиками - таким образом, эти джойстики становятся недоступными. Глубже историю парадоксов ZX Interface II я освещал в другой своей заметке. Я нашёл решение этой патовой ситуации, применив 4 микросхемы в дополнение к арбитру IORQ на ЛЛ1.

Нажатие любой кнопки на любом из двух Sinclair-джойстиков обнаруживается элементом D5.
Если при этом (что случается 50 раз в секунду) осуществляется чтение порта #F7FE (полуряд 1..5, А11=0) или порта #EFFE (полуряд 0..6, А12=0), то дешифратор D1 элементом D4.4 отключает внешний порт #FE на Z-Controller и элементом D3.2 разрешает выбор внутреннего порта #FE в обход Z-Controller.

Таким образом, происходит автоматическое переключение между кнопками 1..5, 6..0 на клавиатуре и на джойстиках. В момент нажатия кнопок на Sinclair-джойстиках внешняя клавиатура не работает, во все прочие моменты времени она работает.

Элемент D4 (арбитр IORQ) - серии 1531 для минимизации задержки арбитрирования сигнала /IORQ.
00_Доработки Дельты_ZX-bus.jpg
Распиновка.jpg
Рис_Компоновка.jpg
5) Gotek как замена дискетам
Я приобрёл Z-Controller, рассчитывая использовать встроенный в него Nemo IDE как решение задачи по переходу от своей коллекции из полусотни дискет к единому надёжному носителю. Однако оказалось, что за истёкшие 20 лет задача использования HDD штатными средствами Спектрума так и не была решена. Ближайшее решение, позволяющее запускать TRD-образы с HDD, состоит в инсталляции DNA OS при условии перепрошивки ROM. При штатном же ROM - HDD (равно как и SD-карту) можно использовать лишь как архивное хранилище TRD-образов (используя также копировщики FAT All или Wild Disk Copier).

Разочарованный, я случайно наткнулся на существование эмуляторов FDD и вышел на Gotek с прошивкой Flash Floppy. Приобрёл Gotek на AliExpress, залил в него прошивку Кейра Фразера Flash Floppy, подключил к Beta Disk как дисковод A, перегнал с дисковода B на воткнутую в Gotek флэшку свою коллекцию дискет в TRD-образы и получил универсальный носитель на USB-флэшке, легко доступный и для использования на Beta Disk, и для переноса TRD-файлов извне (с сайта vtrd.in).

У меня Gotek U144K на исчезающем чипе STM32, и для его прошивки программатор ST-Link V2. Кейр Фразер недавно выложил апдейт, в котором рекомендует Gotek на улучшенной модификации чипа Artery - AT32F435:

«Starting July 2022, the factory is supplying an enhanced MCU option: the Artery AT32F435. This MCU runs at 288MHz and has 384kB SRAM. It is enough for reliable operation, extensive image caching, and will allow for a wider range of firmware features in future. The enhanced firmware which runs on this MCU is called FlashFloppy PLUS (or FlashFloppy+).»
You do not have the required permissions to view the files attached to this post.
Last edited by SKV on 07 Jul 2024 08:16, edited 3 times in total.
SKV
Novelist
Posts: 42
Joined: 06 May 2022 08:39

Re: Доработки Дельты-С на 75 микросхемах

Post by SKV »

6) Приложение. Принципиальная схема Дельты-С.
Лист 6_Фото платы.jpg
Лист 5.jpg
Лист 1.jpg
You do not have the required permissions to view the files attached to this post.
SKV
Novelist
Posts: 42
Joined: 06 May 2022 08:39

Re: Доработки Дельты-С на 75 микросхемах

Post by SKV »

Лист 2.jpg
Лист 3.jpg
Лист 4.jpg
You do not have the required permissions to view the files attached to this post.
SKV
Novelist
Posts: 42
Joined: 06 May 2022 08:39

Re: Доработки Дельты-С на 75 микросхемах

Post by SKV »

7) Перечень свободных элементов на плате Дельты-С
После двоеточия указаны номера свободных элементов в корпусе (всего 4 или 6 элементов на корпус).
DD01 1533ЛИ1: 1
DD02 1533ЛН1: 5
DD10 1533ЛИ1: 3
DD11 К555ЛА3: 1
DD12 1533ЛЕ1: 3,4
DD19 1533ТЛ2: 4 (старый неразведённый INT)
DD21 1533ЛН1: 4,5,6
DD29 1533ЛЛ1: 2 (использовал в арбитре МП для GS)
DD49 1533ЛН1: 1,5 (1 использовал в арбитре МП для GS)
DD50 1533ЛП5: 1,2,4

8) Видеосигнал. Часть 2
01_Доработки видеосигнала.jpg
- Доработка №4. Дождь из помех
В прошлый раз я рассказал, как убрать главную видеопомеху, отрезав дорожку G. Этого недостаточно, т.к. остаётся множество мелких помех в виде дождя, пропадающих при остановке Z80 (удержании сигнала Reset).
02_ Дождь из помех.jpg
Сравнение наводок в состояниях Z80 Run / Z80 Stop.
Сверху вниз: Video, G, R, B. Завышенный уровень гашения 0,5V.
03_Разница Run-Stop.jpg
You do not have the required permissions to view the files attached to this post.
Last edited by SKV on 07 Jul 2024 11:43, edited 1 time in total.
SKV
Novelist
Posts: 42
Joined: 06 May 2022 08:39

Re: Доработки Дельты-С на 75 микросхемах

Post by SKV »

Полностью устранить эти помехи удастся, только целиком вынеся с материнской платы аналоговый каскад RGBI, где I это яркость.

Промежуточное решение - оптимизировать этот каскад для вывода сигналов в размахе 0,7V по стандарту SCART (изначально RGB-выход Спектрумов имеет размах 2..5V для телевизоров и мониторов 1990-х годов).

Необходимо удалить переменные резисторы 22К, соединив базы транзисторов напрямую, а на эмиттерах заменить делители (пара резисторов запаивается на место исходного, средняя точка поднимается над платой). Вынос этих делителей на выходной разъём AT-корпуса ненамного улучшает результат – нужно выносить с платы весь каскад.

При этом синхросмесь Дельты имеет завышенный уровень гашения 50% вместо 30% (0,5V вместо 0,3V), но это не повлияло на распознавание видеосигнала моим LCD-телевизором.

Image
Эта же картинка на русском.

- Экранирование вредит
Я с удивлением обнаружил, что нельзя использовать экранированный видеокабель (а именно заземлять его экран с любой стороны), даже на коротком участке. Этот факт рушит общепринятую теорию, но очевидно, экран работает как антенна, и помехи (дождь на экране) возобновляются в прежнем объёме!

- Доработка №3. Градации яркости
Цветовая палитра Спектрума имеет 8 цветов и 2 градации яркости (полная и пониженная). Не существует стандарта на уровень RGB сигналов Спектрума при пониженной яркости. В схемах Спектрумов встречаются 3 варианта понижающих резисторов: 3К, 2К, 1К. Каждое уменьшение номинала в этом ряду увеличивает перепад уровня RGB на дополнительные 0,1V (при полном размахе 0,7V). Попробовав все 3 варианта, я остановился на максимальном перепаде 0,3V с резисторами 1К (R38, R34, R41).

Проверять цветопередачу удобно на встроенном в ПЗУ Spectrum 128 тесте, для запуска которого надо удерживать Space (Ctrl+Space на ZC) при нажатии кнопки Reset.

Цветопередачу могут сильно искажать встроенные в LCD-телевизор фильтры. В моём случае LCD Philips при фильтре «Стандартный» исключал градации зелёного и синего. Перебрав все фильтры, я определил, что только половина из них равномерно передаёт градации, и остановился на фильтре «Энергосбережение».
05_Тест цветопередачи и цветофильтр.jpg
05b_Осциллограмма.png
- Доработка №1. Вертикальная линия справа
06_Линия справа.jpg
На правой границе бордюра присутствует режущая глаз мелькающая линия. Её причина – запаздывающее переключение выходных RGB мультиплексоров с растра на бордюр. Переключение должно происходить с крохотным опережением, измеряемом наносекундами. При большем опережении будут срезаться последние пиксели растра.

На левой границе бордюра для этой же цели введено запаздывающее переключение на растр с помощью цепочки R13-C12.

Решение задачи для правой границы: вводим RC-цепочку на асинхронное обнуление триггера DD20, переключающего мультиплексоры.

Асинхронные входы на исходной схеме перепутаны. Ногу 13 (вход R) отрезать с обеих сторон. Ногу 10 (вход S) подключить обратно к +5V.

RC-номиналы необходимо очень точно подобрать по осциллографу, чтобы при задержке 1800 нс получить сдвиг переключения в пределах 20 нс.

Напаивать RC надо непосредственно на микросхему (при подборе длина проводов или стоек в пару см), иначе в задержку вносится нестабильность 50 нс.
You do not have the required permissions to view the files attached to this post.
Last edited by SKV on 08 Jul 2024 12:04, edited 2 times in total.
SKV
Novelist
Posts: 42
Joined: 06 May 2022 08:39

Re: Доработки Дельты-С на 75 микросхемах

Post by SKV »

07_Настройка RC.png
На осциллограмму вывести:
1. DD20, нога 12 (/Бордюр). Синхронизацию включить в этом канале по нисходящему фронту (правый бордюр).
2. DD53, нога 2 (сигнал Край, переключающий мультиплексоры на бордюр). Восходящий фронт, который мы и настраиваем подбором RC-цепочки.
3. DD53, нога 5 (входной канал видеобита VD5). Нисходящий фронт.

Находясь на заглавном экране Спектрума, выводим в центр осциллограммы пересекающиеся фронты двух последних сигналов (1,8 мкс правее момента синхронизации) и подбираем RC-номиналы, пока Край не станет подниматься чуть раньше, чем падает VD5. При этом вертикальная линия справа исчезнет.

По примеру GS я ориентировался на резистор 470 Ом и подобрал номиналы 460 Ом, 2,2 нФ. Однако теперь (ознакомившись с другими схемами) я думаю, что правильнее (для уменьшения тока) применять в таких цепях резистор 1К. Поэтому советую первоначально взять цепочку 1К, 1 нФ и дальше варьировать точную величину резистора в ней.

Если после прогрева в работе полоска снова появится, придётся уменьшить номинал резистора ещё на несколько Ом.

Теория расчёта интегрирующей и дифференцирующей RC-цепочек для ТТЛ встретилась мне в единственной статье.

- Доработка №2. Вертикальные штрихи
После всех трудов над изображением это ещё не конец.
Во множестве игр на экране появляются артефакты в виде вертикальных штрихов, сильнее всего это выражено в Zynaps. Также эффект сильно проявляется в Serafima.
08_Штрихи в Zynaps.jpg
Причина в том, что так проявляется граница между знакоместами, итоговый цвет которых не меняется, но INK и PAPER инвертируются. Поскольку у ТТЛ-логики существует несимметрия задержек распространения для 0 и 1, то выходы логики переключаются неодновременно, а с разбросом в несколько наносекунд, чего оказывается достаточно для возникновения артефактов.

Для решения проблемы предлагается врезать дополнительный синхронный регистр на 4 сигнала B, R, G, I между выходными мультиплексорами DD60, DD53 и буферными элементами DD51.

Регистр тактировать частотой 7 или 14 МГц (подобрать по исчезновению артефактов). На входе в регистр биты переключаются с наносекундным разбросом, а на выход записываются уже синхронно. Следует обратить внимание на минимальную несимметрию задержки распространения 1-0/0-1. Наилучшие варианты - 1533ИР37 (20 ног) и 1533ИР38 (24 ноги). Для них обеих заявлена единая задержка распространения 15 нс. Популярная 1533ИР23, помимо неудобной попарной группировки выводов, имеет несимметричную задержку 18/15 нс.

Схемы более поздних Спектрумов не содержат буферных элементов между мультиплексорами К1533 и выходными транзисторами RGB. Поэтому DD51 (155ЛП5) наверняка следует исключить из схемы, т.к. эта микросхема имеет большую и несимметричную задержку распространения 1-0/0-1 = 22/30 нс.

Для начала можно просто обойти DD51 без применения дополнительного регистра (скорее всего, с её выпаиванием или отрезанием, т.к. серия К155 сильно нагружает DD60, DD53) – возможно, это уже даст положительный эффект.

Схема мною ещё не проверена. Благодарю за помощь Reddie и Prusak.

9) Проблемы совместимости и другие просчёты:
- Слабая разводка шин питания
- Нестандартный кварц
- Плавающая шина видеоданных
- Отсутствие порта #FF
- Неполное повторение арбитра медленного поля
- Хаос с сигналом INT


В отличие от прародителя Львова, в Дельте-С узкие питающие дорожки при большом числе микросхем. Поэтому, помимо напайки блокировочных конденсаторов на каждый корпус, имеет смысл дополнительно развести питание корпусов не самым тонким МГТФ.

Необходимо заменить исходный кварц с нестандартной частотой 13700 кГц на 14000 кГц. После замены заработали испанские игры, которые всегда зависали по окончанию загрузки: Filemon 2, Mad Mix 2, Muncher.

Исследуя шину видеоданных осциллографом, я обнаружил, что, когда ни видеоконтроллер, ни Z80 не обращаются к ней, эта линейка РУ5 (в оригинале РУ6) переходит в третье состояние, и по шине гуляют уровни 2,5V. К каждому разряду шины подключены по 3 ТТЛ-входа и все они воспринимают обрыв сигнала как нестабильную логическую «1». Это и является причиной хаотических ярких точек на правой границе в чёрных играх типа R-Type или Exolon.

Избавление от правой границы RC-цепочкой решает визуальную проблему, но вообще неправильно, что столько ТТЛ-входов подвешиваются в нестабильном состоянии. Поэтому следует притянуть их к одному из двух уровней. Исходя из схемотехники «порта #FF», подтягивать надо к +5V через 10К, подобно главной шине данных.

Часто встречается мнение, что порт #FF не нужен, т.к. его использует малое количество оригинальных игр, большинство которых к тому же уже пропатчено. Однако Дельта-С (продолжение линии Львов, Харьков, Москва) как раз интересна тем, что повторяет оригинальную схему Спектрум-48 с раздельными полями, и поэтому позволяет малыми усилиями повышать совместимость с оригинальным программным обеспечением. Реализация порта #FF необходима для последующей точной настройки положения сигнала INT в тестах ulatest3 и floatspy.

Арбитр медленного поля Дельты-С повторяет оригинальную остановку Clock по комбинации А14+А15 (именно поэтому не следует применять второй вариант моей доработки арбитра МП из темы про GS), но не делает этого по комбинации A0+IORQ (обращение к встроенному в ULA порту #FE) - в случае необходимости можно будет внести в арбитр и такую доработку.

Почему-то у нас принято считать, что порт #FF возвращает байт атрибутов, хотя и в оригинальном Спектруме, и при доработке Дельты-С с шиной данных традиционно соединяли видеошину, а не выход регистра атрибутов. Следовательно, Z80 читает из порта #FF не только байты атрибутов, но и байты растра. Много путаницы внесли в этот вопрос статьи Кирилла Громова.

Повторение оригинального постоянного соединения видеошины через резисторы это плохое решение, потому что паразитно нагружает и без того перегруженную шину данных. Необходимо применить регистр, который будет подключать видеошину через резисторы 820-1K только в моменты, когда Z80 читает любые порты (IORQ+RD). Засорение прерываний при этом не происходит, т.к. для подтверждения Z80 выставляет IORQ+M1, но не RD. (После подключения порта #FF Тест 4.30 показывает неправильное подключение предназначенного только на запись AY-порта #BFFD, но это недоработка самого теста.)

Схема удачно комбинируется с портом Kempston. Для подтяжки видеошины к +5V удобно использовать резисторную сборку 9х10К.

Схема порта #FF мною ещё не проверена.
09_Доработки Дельты_Лист 2.jpg
You do not have the required permissions to view the files attached to this post.
Last edited by SKV on 12 Jul 2024 23:26, edited 1 time in total.
SKV
Novelist
Posts: 42
Joined: 06 May 2022 08:39

Re: Доработки Дельты-С на 75 микросхемах

Post by SKV »

- Сигнал INT
Разработчики отечественных клонов демонстрировали полное невежество в формировании сигнала INT, что представляет необъяснимый контраст по сравнению с тщательностью клонирования остальной архитектуры ULA.

В Дельте-С этот сигнал был спроектирован как импульсы /ККадра длиной порядка 20 мкс и формирующиеся где-то в середине кадра.

Видимо, запуск в серию показал авторам непригодность этого решения, потому что дорожку стёрли с фотошаблона, а на INT стали проводом кидать кадровый синхроимпульс (Тайм) длиной 257 мкс вместо необходимых 9 мкс (32 такта).

Следствие такого длинного INT – его многократный захват процессором и искажённая до неузнаваемости биперная музыка во множестве игр. Поэтому мы будем укорачивать его дифференцирующей цепочкой.

Но остался вопрос: в какой момент кадра должен приходить INT в фирменном Спектруме (чтобы нам добиться максимальной совместимости с фирменным программным обеспечением)?

По этому вопросу мы снова имеем противоречивые сведения. Например, вторая статья Кирилла Громова в Спектрофоне №14:
«Аксиома: сигнал INT вырабатывается по заднему фронту кадрового синхроимпульса и имеет длительность 9мкс.
ATTENTION! Результаты замеров, проведённых в фирменном "СПЕКТРУМЕ 48k" показали, что длительность INT 9 мкс, а положение - в начале кадрового синхроимпульса.»

Для поиска истины обратимся к игре Venom, которая примечательна тем, что на главном экране содержит мультиколор и бордюрный эффект, а потому может использоваться в качестве теста.

При выдаче INT по переднему фронту КСИ бордюрная полоса выше экранной (так же и в Тесте 4.30), а мультиколор рассыпается по отдельным фрагментам букв.
10_Передний фронт_Venom.jpg
11_Передний фронт_Тест.jpg
При выдаче INT по заднему фронту КСИ бордюрная полоса ниже экранной (а в Тесте 4.30 совпадает с фирменной), а мультиколор поднимается по надписи ровными тонкими полосками.
12_Задний фронт_Venom.jpg
You do not have the required permissions to view the files attached to this post.
SKV
Novelist
Posts: 42
Joined: 06 May 2022 08:39

Re: Доработки Дельты-С на 75 микросхемах

Post by SKV »

13_Задний фронт_Тест.jpg
Очевидно, что второе положение более верное, хотя и оно не окончательное, потому что бордюрная полоса в Venom должна точно совмещаться с экранной (просится INT сдвинуть чуть назад, до заднего фронта КСИ). Для дальнейшего изучения надо использовать игры Aquaplane, Vectron, и тесты порта #FF ulatest3, floatspy.

Эта работа ещё не закончена. Почему-то никто из участников zx-pk, успешно экспериментирующих с формированием INT в клонах Львов, Харьков, Москва, Дельта, не выложил окончательного отчёта со схемой. Возможно, придётся формировать INT в 2 ступени через длинную задержку 250 мкс от переднего фронта КСИ, либо искать причину в нюансах таймингов, как вышеупомянутое отсутствие остановки Clock по обращению к порту #FE.

В текущей схеме выдачи INT по заднему фронту я использовал изначально предусмотренный в схеме для этой цели инвертор DD12.4 (ТЛ2). Я обрезал проходящую через его вход дорожку /ККадра с обеих сторон, и соединил её в обход. Однако, можно применить любой свободный инвертор, их на плате много.

RC-импульс настроил ровно на 9 мкс (1 кОм, 4,3 нФ). Тест 4.30 показывает длительность INT в неизвестных единицах (24 цикла). Верную длительность в тактах показывает Tест INT Ковалевского (32 такта). (Он же имеет и малозаметную бордюрную полоску для калибровки. Как и в Venom, она ниже эталонной. Однако, на zx-pk писали, что с оригинальным Спектрумом она тоже не совпадает.)

На осциллограмме канал 1 - /КСИ, канал 2 - /INT.
14_INT.png
15_Тест Ковалевского.jpg
You do not have the required permissions to view the files attached to this post.
User avatar
Shaos
Admin
Posts: 25284
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Доработки Дельты-С на 75 микросхемах

Post by Shaos »

Я гляжу огромная работа проделана! :o
SKV
Novelist
Posts: 42
Joined: 06 May 2022 08:39

Re: Доработки Дельты-С на 75 микросхемах

Post by SKV »

Плата расширений для Дельты-С на 75ИС. Подключение геймпадов Dendy.
Описываемые мною ранее доработки аккумулированы на печатной плате в габарите Дельты, устанавливаемой вторым этажом на базовую плату. Плата изготовлена в 5 экземплярах, пилотный образец собран и запущен. Благодарю RomanRom2 и Сергея Ефремова за помощь в проектировании и заказе печатной платы. Для желающих заказать изготовление прилагаю гербер и проект в EasyEDA.
(Остающиеся у меня 4 экземпляра платы предлагаю желающим по себестоимости 1тр+доставка, можно обратиться в личку.)
Иллюстрации увеличиваются при нажатии.
Все иллюстрации этой статьи можно скачать одним архивом.
EasyEDA_1.0.rar
Image Image
Image Image
Image

Самая интересная функция платы - 3 джойстика Dendy (Кемпстон и 2 Синклера, параллельно привычным механическим), может быть полезна не только владельцам Дельты 75ИС, но и прочих Дельт в том же габарите, т.к. может работать на любом Спектруме, в схеме которого предусмотрены Sinclair-джойстики (параллельно механическим кнопкам 1..5, 6..0). Джойстики Dendy подключаются без переделок геймпадов, работает функция Autofire A, Autofire B. Режим 3 дополнительных кнопок переключаемый 5/8 бит, с индикатором переключения.

Схема на обычной логике 1533 (без применения ПЛИС). Свободная половина платы отведена под макетное поле для DIP-корпусов.

Остальные функции платы:
- Расширение Дельты 75ИС до 128К
- Музыкальный чип AY в корпусе DIP40. Аудиомиксер Веер+AY+внешний вход (от GS).
- Буферизация Z80 (буфер шины данных не проверялся)
- Порт #FF, отключаемый джампером (не проверялся)
- Переключатель 7-сегментного индикатора Hi/Lo на АТ-корпусе, я использовал его для индикации защёлки 48/128К. Джампер для подачи произвольного сигнала. (В плате есть ошибка, устраняется нетрудно.)

Ошибки на плате ревизии 1.0:
- Видеовыход. В плате задумывалось вынести видеовыход вместе с синхронным регистром, но плотная разводка транзисторов оказалась ошибочной, приведя к перекрёстным помехам в виде возвращения мерцающих вертикальных штрихов, уже при наличии входного синхронного регистра. При желании можно собрать транзисторную часть на макетном поле. Я обошёлся обширной доработкой на базовой плате, при этом проблема с видеопомехами окончательно решилась. Подробнее ниже.

- Индикатор Hi/Lo. Исправление:
Отрезать (сверху) базу VT6 и соединить её с коллектором VT5.
Через 2К соединить её также с +5V.
В качестве VT6 применяется КТ3102, как и VT5.
Image Image

- При переключении в 8-битный режим 3 дополнительных кнопок Sinclair-геймпадов моя схема переключает 4 кнопки, включая кнопку Огонь. Но как оказалось, игры (Mystical, Golden Axe) зачем-то запрещают выбор Sinclair-кнопок в режиме Redefine keys. Поэтому схему надо доработать, чтобы Огонь (кнопка В) не затрагивалась переключением: впаять в макетном поле ЛЛ1, задействовать 2 её элемента, выходы подаются на поднятые над платой диоды D17 и D25.
Image

- Не предусмотрена резисторная сборка 10К за буфером шины данных, она может оказаться там нужной для таких слабых чипов как ВГ93. При необходимости можно напаять сборку снизу на АП6.
- Разъём Reset (CN7) задевает чип AY, придётся отогнуть пины разъёма.
- На ИР37 (U5) лучше выдвинуть блокировочный конденсатор из-под микросхемы.
- Сигнал ROM48 не обязательно заводить на задний CN2, можно подать его на плату-1 от бокового CN4 через свободный пин XP1/A15.
- Футпринт транзисторов без отгибания центрального вывода, чрезвычайно неудобно в пайке.
- Малый диаметр всех контактных площадок, паять только узким жалом с обильным применением флюса.
*
Плата устанавливается вторым этажом на 5 стойках высотой 20 мм с винтами М2.5, отлаживать плату можно и нужно поблочно. Родной корпус Дельты при этом оказывается неприменим, можно использовать корпус ATX.

Наиболее сложной доработкой является расширение до 128К, в связи с большим количеством заменяемых микросхем (17 штук). Впрочем, исходное ПЗУ-48 при этом менять необязательно - 128К будет работать и так, а исходные РУ5Д/РУ6 можно не выпаивать, а выкусить бокорезами - вряд ли они где-нибудь пригодятся. Плата не требует обязательной переделки в 128К, все остальные её функции могут использоваться и на Дельте 48К.

Плата не имеет на борту разъёмов для магнитофона и клавиатуры - точки их подключения остаются на базовой плате.
Все 10-пиновые разъёмы разведены так, чтобы можно было для проверки воткнуть стандартный СОМ-переходник IDC10F-SubD9M (при этом придётся либо рассверлить заглушку пина 10 в IDC10F, либо удалить этот пин).

Терминология:
Плата-1 = Базовая плата Дельты 75ИС
Плата-2 = Описываемая плата расширения вторым этажом
Плата-3 = Внешняя плата слотов ZX-bus, стыкуемая кабелем к плате-2

Габариты и сверление платы-1 под стойки крепежа
Image

Разбивка на блоки
Image

Схема 1.0 в EasyEDA
Image Image

Схема в удобочитаемом виде (без точного соответствия плате-2 и включая все доработки платы-1, BDI и плату-3)
Image Image Image
Image Image Image

Список деталей
Image
*
Подробнее про функции платы-2:
- Дельта-48 превращается в классический Спектрум-128 с его двумя полями по 64К (быстрым и медленным) и портом #FF (отключается джампером J2), чем и ценна Дельта 75ИС и её почти полностью открытая архитектура. Дельта 75ИС сразу имеет на плате место под 2 линейки RAM, и остаётся только заменить их на РУ5Г. Недостаток Дельты 75ИС - реализация портов клавиатуры и принтера на ПЛМ, поэтому плату-1 трудно изготовить новодельно.
(Из моей коллекции избранных игр на Дельте сейчас не работают только две: Square Heads и русская адаптация Twilight (Страна Теней). Обе они в ходе загрузки портят экран набором разноцветных квадратиков. Буду благодарен, если кто-нибудь подскажет причину этой несовместимости. Англоязычная Twilight работает.)
Image

- Z80 буферизуется, т.к. его выходы будут перегружены при подключении периферии на ZX-bus. При буферизации нагрузочная способность сигналов адреса и управления возрастает с 2 до 24 мА. Шина данных разделяется по границе с ZX-bus.

- 3 спаренных джойстика Dendy+Механический с переключаемым режимом 5/8 бит и индикатором переключения. Также предусмотрено переключение между штатным и внешним портами #FE. Штатный порт включается по нажатию любой кнопки Sinclair-джойстиков, в остальное время включен внешний порт Z-контроллера. Для этой цели мною доработана прошивка ZC.

- Переключатель двух нагрузок до 100 мА по произвольному ТТЛ-сигналу с джампером J1 (светодиоды и т.п.). Например, у меня это переключение 7-сегментного индикатора на АТ-корпусе: индикация «48/128» переключается по сигналу Lock48 порта #7FFD. Потребление данного индикатора 77 мА.

- Ранее у меня много текста было посвящено борьбе с видеопомехами. Как я выше упомянул, моя разводка видеокаскада на плате-2 без предварительного макетирования оказалась ошибочной. Поэтому для владельцев ревизии 1.0 есть 3 пути доработать негодный видеовыход:

Путь 1 (так сделал я). Доработка на плате-1, а на плате-2 выходные делители и выходной AV-разъём.
Помучившись, на плате-1 регистр ИР37 посадить на место 155ЛП5 (DD51).
Отрезать между видеотранзисторами дорожку 3,5МГц на Z80.
С помощью МГТФ доработать по схеме согласования со SCART, выкинув подстроечные резисторы баз с их петляющими дорожками, прилегающими к дорожке адреса А0.
На плате-2 запаиваются выходные делители и разъём, а вместо ИР37 перемычки.
Image
(Доработки МГТФ на нижней стороне можно увидеть на фото платы-1 внизу статьи. Разрезы не отмечены.)

Путь 2. Сборка транзисторной части с помощью МГТФ на макетном поле платы-2.
Всё, кроме транзисторов, впаять на штатные места. Транзисторы запаять на макетном поле под ИР37, для исключения перекрёстных импульсных помех соблюдая правило: транзисторы отодвинуты друг от друга и от входных сигналов на их базы. Для образца изучить размещение транзисторов на базовой плате - оно работает.

Путь 3. Вместо неудачных видеовыходов платы-1 и платы-2 использовать внешний видеоконвертер (scan doubler), подавая на него ТТЛ-сигналы RGBI (входы для ИР37) и получая в результате SCART, VGA или HDMI.
*
Буферизация
Почему-то среди спектрумистов существует мнение, что Z84С00/CMOS имеет бОльшую нагрузочную способность выходов, чем Z84000. Но даташиты этого не подтверждают – в обоих случаях IOL=2мА. А вот ток собственного потребления у CMOS действительно снижен в 10 раз - с 200 до 20 мА (на частоте 4МГц).
Image

Подсчитаем нагрузку на шины.
ША: при условии задействования периферии BDI+GS+ZC суммарный IIL на большей части линий =1,8 мА. И это при условии, что используются только входы серии 1533.
Суммарная ёмкость входов превысила номинальную 100 пФ, а ведь ещё присутствует немалая ёмкость монтажа и междуплатных кабелей.
Image

ШД: при тех же условиях суммарный IIL=2,2 мА, IIH=0,5 мА, суммарная ёмкость входов 208 пФ.
Разделив шину буфером по границе ZX-bus, получим две небуферизованные зоны с примерно IIL=1мА, IIH=0,24 мА, и 100 пФ каждая, что тоже неоптимально, но лучше, чем полное отсутствие буферизации.

В отличие от ША, на ШД много источников сигнала, из которых, согласно даташитам, музыкальный чип и ВГ93 имеют очень слабую нагрузочную способность IOH=0,1 мА. На втором месте чипы ROM c IOH=0,4 мА.
Плюсовая подтяжка 10К решает эту проблему при её нахождении в одной зоне с таким чипом (одновременно нагружая IOL). Но после разделения по ZX-bus ВГ93 окажется лишён подтяжки. Возможно, на плате-2 стоило бы предусмотреть резисторную сборку 10К за буфером, но пока что при необходимости можно напаять её к ножкам АП6.
АП6 имеет смысл установить в панельку на случай возможных экспериментов с обходом буфера.
Переключение направления АП6 происходит внешним сигналом /Dir, формируемым на стороне ZX-bus (плата-3) по "или" от всех /IOGE и /CRGE.
Image

(Идея Nemo по замеру ёмкости шинных линий.)
*
Джойстики
Намного интереснее играть не в одиночку, а вдвоём или втроём - этому уделяется непростительно мало внимания разработчиками игр и железа. Из качественных игр вспомним Головобол, Ангелы, Rodland, Toobin!, Barbarian, Fist, Batty, Tetris2, Scate ball - не набралось и дюжины.

Массовый в прошлом механический джойстик (с возможностью электронного Autofire) Cheetah 125 (у нас в виде его советских клонов) имеет крайне грубую контактную систему из стальных пластин, точность его срабатывания неудовлетворительна, а при отломе пластиковой опоры заменить его напрямую нечем.
Полезная ссылка по замене контактной системы этого джойстика.

Хорошая идея использовать свежеизготовленные геймпады для Dendy, которые легкодоступны на маркет-плейсах. К описываемой плате они подключаются без всяких переделок (не требуется кропотливая работа с резкой и пайкой тоненьких дорожек и заменой кабеля и разъёма). Кнопки свежекупленных геймпадов из токопроводящей резины работали через раз, но в первый же день разработались и нажатие стало безупречным (наклейка фольги не требуется).

Геймпад Dendy выдаёт в последовательном коде 8 бит кнопок, обеспечивая 3 дополнительные кнопки: A, C, Start (и 2 кнопки Autofire A, Autofire B). Кнопка В соответствует привычной кнопке Огонь.

Я придумал 2 режима (5/8 бит) для дополнительных кнопок, выбираемых общим для всех 3 джойстиков переключателем (например, ключ Turbo на корпусе АТ). Плата позволяет выделить отдельный переключатель режима для Kempston (с джампером J3).

В режиме 5 бит дополнительные кнопки дублируют крестовину: А=Вниз, С=Вверх, Start=Вправо.
Image

На данном геймпаде:
X = Autofire A (Turbo A)
Y = Autofire B (Turbo B) = Огонь
Z = C

В режиме 8 бит дополнительные кнопки становятся независимыми.
На Sinclair-джойстиках они задействуют клавишный ряд Q..P, но одновременно в него перемещается и кнопка В=Огонь, что оказалось неудачным упрощением схемы. Исправление этой ошибки описано в начале статьи.
Image

На Kempston функция кнопки В=D4 в расширенном режиме не меняется, 3 дополнительных бита: С=D5, A=D6, Start=D7. В базовом режиме эти биты =0.

3 разъёма SubD9М для Dendy-джойстиков подключаются к общему для них разъёму CN14. Все сигналы на SubD9 запаять параллельно, за исключением сигналов Data1,2,3. Для АТ-корпуса я использовал планку COM-порта, вырезав в ней ещё 2 проёма. Такая планка чуть не вписывается в корпус, его приходится тоже подпиливать. Для идеального размещения разъёмов надо брать полностью пустую планку-заглушку, и вырезАть в ней 3 проёма с нуля.
Image

Тактовую частоту для опроса джойстиков можно менять в широких переделах (например, от 0 до 100 кГц), но схема требует прямого и инверсного тактового сигнала. Я нашёл в Дельте готовый инвертор DD7 с сигналом 15,6 кГц для строчной развёртки.
(Если кто-то будет использовать плату-2 не в составе Дельты 75ИС, то необязательно иметь на плате-1 готовый инвертор - можно впаять ЛН1 на макетном поле. Свободных инверторов на плате-2 нет.
Я создавал свою схему на основе этой с Хабра. Она ошибочна как раз из-за отсутствия инвертированного тактового сигнала.)
U14 ИЕ5 делит тактовую частоту, формируя сигнал Latch через каждые 8 бит такта.

U24 ЛА2 формирует сигнал Joy по нажатию любой кнопки на любом Sinclair-джойстике. Этот сигнал выведен во внешнюю плату ZX-bus (плату-3) для схемы обхода внешнего контроллера клавиатуры с его собственным портом #FE.
*
Возможность одновременного использования механических джойстиков (равно как и электронных с параллельным выходным кодом и функцией Autofire) сохранена и дополнена функциональностью 8 бит. На плате 3 отдельных разъёма для параллельных джойстиков (CN13,17,18).

Из них для Kempston режим 8 бит неотключаемый, для Sinclair-1,2 присутствует то же переключение 5/8 бит, как для Dendy-джойстиков. Для этого в разъёмах Sinclair используются 2 общих провода: штатный RA12/11 для 5 базовых кнопок, и S1CS/S2CS для 3 дополнительных кнопок.

При этом через SubD9 трудно задействовать все 8 бит, поэтому надо либо переходить на трёхрядный SubD15 (как у VGA), либо довольствоваться 7 кнопками, либо изолировать и задействовать металлический корпус SubD9 в качестве 10 контакта.

А если потребуется вывести на такой параллельный джойстик питание +5V/GND (для функции Autofire или буферизации механических контактов), то поможет только переход на трёхрядный SubD15 с питанием от дополнительного 2-пинового разъёма, который можно впаять в ближайшем макетном поле.
*
Подключение к Дельте
Большинство сигналов на базовую плату Дельты (плату-1) от платы-2 подключается через похожий боковой разъём CN4 с двумя задействованными рядами AC*32. Расположенный рядом CN3 предназначен для подключения к ZX-bus, хотя эти 2 разъёма полностью взаимозаменяемы, их распайка дублируется.

При этом их распайка не совпадает с разъёмом Дельты, потому что это крайне усложняло разводку платы. К сожалению, при необходимости подключить к плате-2 имеющуюся периферию Дельты придётся паять новый кабель или переходник.

Все разъёмы платы-2 с шагом 2,54. При старании можно втиснуть сюда СНП59 с его шагом 2,5. Но нет смысла держаться за труднодоступные СНП59, поберегите их для оригинальной платы-1.

А здесь лучше применить легкодоступные разъёмы DIN41612 (я покупал в "Чип и Дип"). Но будьте осторожны с китайской маркировкой пинов, потому что она отсчитывается произвольно: например, у Connfly нумерация пинов углового папы и ответных мам совпадает с СНП59, а нумерация пинов прямого папы резко отличается.

Ещё больше разнообразие нумераций прямого разъёма в фирменной библиотеке EasyEDA. Поэтому следуйте нумерации пинов на шелкографии или на угловом папе СНП59. (Об этом моё примечание на принципиальной схеме.)

Сигналы, отсутствующие на штатном правом разъёме Дельты, подпаиваются непосредственно к плате Дельты проводами до двух задних разъёмов АС*16.

/IORQ' и /OutIORQ
- При выносе Z80 (для его буферизации) сигнал /OutIORQ с платы-2 подаётся на штатный пин /IORQ ХР1/С16 , а /IORQ' c платы-2 требуется дополнительно подать на плату-1 только при использовании GS на ZX-bus (доработка арбитра RAM).
- Если Z80 не выносится, то при использовании ZX-bus надо дорабатывать исходный контур /IORQ на плате-1. Через штатный пин ХР1/С16 /IORQ поступает на плату-2, а /OutIORQ возвращается с неё через новый пин ХР1/А16. На плате-1 надо отрезать от /IORQ порт #FE и порт принтера и подать в эти 2 точки внешний сигнал /OutIORQ. Если порт принтера не нужен, то на DD72/27 достаточно подать +5V.
Когда Z80 не выносится, также необходимо соединить между платами сигнал Reset (пин ХР1/С27).

Image Image Image

Image Image

Image Image
Image Image Image
You do not have the required permissions to view the files attached to this post.
Last edited by SKV on 11 Sep 2026 03:25, edited 6 times in total.
SKV
Novelist
Posts: 42
Joined: 06 May 2022 08:39

Re: Доработки Дельты-С на 75 микросхемах

Post by SKV »

Резерв
Last edited by SKV on 08 Sep 2026 04:00, edited 1 time in total.
User avatar
Shaos
Admin
Posts: 25284
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Доработки Дельты-С на 75 микросхемах

Post by Shaos »

Dendy-джойстики это интересно
User avatar
Black_Cat
Doomed
Posts: 637
Joined: 23 Nov 2007 15:53
Location: Saint Petersburg, Russia

Re: Доработки Дельты-С на 75 микросхемах

Post by Black_Cat »

Вааще, сигнал DOS/ как-бы подаётся на все слоты NemoBus, т.е. он прям с BDI должен на шину подаваться, но если у тебя что-то своё с именными слотами, то на ZC этот сигнал как раз подавать не надо, КоЕ его туда сунул по по ошибке - просто подвесь резистором к +5. И BDI у тебя тож подключен неправильно: во-первых, он должен стоять в слоте с наименьшим приоритетом, и во-вторых, вааще не выдавать на шину IORQGE, а токо DOS/, который обязан включаться где надо в дешифрацию на мамке, как правило в дешифрацию KJoy, если он есть на мамке. И вааще, ещё куча УЖОС-УЖОС, что даж влезать в это не хочется, потому как переделывать абсолютно всё.
"Очень трудно найти чёрную кошку в тёмной комнате... особенно, если её там нет.", "Forever!". :wink:
zx.clan.su - Soviet Union ZX Spectrum Community - форум посвящённый развитию Спека.