Spectrum-совместимые компьютеры «Байт»,«Байт-01» и прочие раритеты

3 / 8 059

Реплики приставки "Эльф" и новодел

Учитывая, что приставок "Эльф" было выпущено не так уж и много, встал вопрос изготовления их копий (реплик) и усовершенствованных версий. Обсуждение по этой теме вы можете найти здесь.

Альфа-версия "новодельной" приставки "Эльф" (2015 год)

Автор - Дмитрий Пугачёв (также немного руки приложил и ваш покорный слуга).

"Новодельная" версия приставки представляет собой базовый функционал приставки на основе Т34ВГ1 с возможностью использовать джойстики от 8-битных приставок. В схему добавлены:
- полноценный RGB-выход для подключения к телевизору через SCART;
- PAL-кодер;
- музыкальный сопроцессор AY3-8910 (YM2149F);
- RGB выход с TTL уровнями сигналов.

Эта версия разрабатывалась в 2015 году. Всего было для пробы заказано пять плат, одна из которых досталась мне для изготовления и отладки:

Конструктор для сборки приставки «Эльф»
Конструктор для сборки приставки «Эльф»
Собранная и отлаженная «новодельная» приставка
Собранная и отлаженная «новодельная» приставка
Конструктор для сборки приставки «Эльф»
Собранная и отлаженная «новодельная» приставка

В процессе сборки и отладки были выявлены некоторые "ляпы" и ошибки. В целом по имеющейся плате можно собрать нормально работающую приставку, однако эта версия в производство не годится (для сборки необходимо резать проводники на плате и допаивать МГТФом часть соединений).

"Новодельная" приставка "Эльф" (2016 год)

По результатам сборки альфа-версии приставки была скорректирована схема и разводка платы.

В результате получилась легко собирающаяся приставка, почти не требующая наладки. Уже собрано порядка десятка экземпляров. Одна плата попала и ко мне:

Конструктор для сборки приставки Эльф-2016
Конструктор для сборки приставки Эльф-2016
Собранная плата приставки Эльф-2016
Собранная плата приставки Эльф-2016
Конструктор для сборки приставки Эльф-2016
Собранная плата приставки Эльф-2016

Возможные настройки, требующиеся при сборке приставки:

1) Подобрать задержку сигнала /RAS (это делается RC-цепочкой R23C4). Для БМК ВГ1 в пластмассовом корпусе потребуется установить R23=33 Ом, C4=33 пФ. Для ВГ1 в металлокерамике R23 надо будет замкнуть, C4=100 пФ. В моём случае было именно так.

2) Также в случае неуверенного запуска приставки возможно придётся "подтянуть" сигнал CLK (6-й вывод процессора) через резистор сопротивлением около 300 Ом к +5В.

3) В случае неустойчивой работы БМК с памятью я встречал рекомендацию понизить напряжения питания БМК (например, через диод), но на практике этот вариант применять не довелось.

В качестве PAL-кодера можно установить как CXA1645, так и CXA2075. В этом случае некоторые элементы (резисторы и конденсаторы) можно будет не устанавливать на плату. На плате рядом с PAL-кодером есть табличка, в которой указано какие элементы не надо паять на плату в зависимости от типа микросхемы кодера.

Резисторами R61-R63 устанавливается уровень сигналов RGB, подаваемых на PAL-кодер. В идеале нужно при помощи осциллографа выставить одинаковые уровни сигналов (порядка 0,7В) на PAL-кодере. Для удобства при этом лучше всего вывести на экран какую-нибудь картинку с периодически повторяющимся изображением, к примеру цветные полосы. Резистором R60 регулируется уровень синхросигнала. Просто можно покрутить этот резистор, пока кодер не начнёт уверенно показывать изображение.

PAL-кодер можно не паять вообще, если предполагается подключать приставку только через RGB-выход.

Критичные элементы:
- IC6 АП6 должна быть серии К555 (SN74LS245);
- IC24 ЛН1 желательно серии 74HCT (SN74HCT04).

Рекомендации по сборке: ввиду того, что БМК ВГ1 может быть и нерабочая (даже среди новых микросхем встречается брак, микросхема часто горит из-за статики или просто так) имеет смысл сначала впаять на плату только её одну (даже не всеми выводами - подпаять выводы питания, вход RST и вход тактовой частоты) и тактовый генератор на 8 МГц (IC1, Q1, C1, R1, R2). После чего подать питание и проверить наличие на видеовыходе БМК сигналов RGB, синхронизации и выхода тактовой частоты CLK для процессора. Если они присутствуют, и сигнал синхронизации в норме, можно окончательно припаять БМК и паять плату дальше.

Разъём JP3 можно не устанавливать вообще - это RGB выход с ТТЛ-уровнями, введен чисто для удобства быстрого подключения платы по RGB при отладке.

Для облегчения процесса настройки (или ремонта) приставки я написал сборку тестов, которые прошиваются в отдельное ПЗУ или флэш-память. ПЗУ вставляется вместо основного ПЗУ приставки. Как это работает можете увидеть на видео (лучше смотреть его в полноэкранном режиме, тогда хорошо видны символы на экране):

Описание работы тестового ПЗУ для новодельной приставки Эльф

Прошивка тестового ПЗУ, схема приставки, разводка платы и файлы для изготовления печатной платы находятся в конце этой страницы.

В процессе эксплуатации этой версии приставки обнаружены некоторые недоработки схемы.

Описание найденных ошибок под спойлером

Если подключить одновременно два джойстика, начинаются ложные срабатывания кнопок. При этом по отдельности джойстики работают нормально. В итоге выяснилось, что емкости от длинных проводов двух одновременно подключенных джойстиков вносят на сигналы тактирования такие искажения, которые вызывают ложные срабатывания регистров DD17,DD18. Недоработка состоит в том, что сигналы, подаваемые на каждый из джойстиков, нужно было буферировать. Проблема решается при помощи одной микросхемы, имеющей 4 повторителя сигнала (ЛЛ1, ЛИ1, ЛП16, АП4, АП5, АП6 и т.п.)

Схема доработки для корректной работы двух джойстиков одновременно

Доработка опробована на одном экземпляре приставки "Эльф-2016" и показала хорошие результаты в игре Target Renegade (которая позволяет одновременно играть двумя джойстиками).

Корпус для "новодельной" приставки "Эльф" (2016)

Для новодельной платы приставки "Эльф-2016" я разработал корпус. Уж очень хотелось иметь законченное изделие, поэтому пришлось постараться :) Корпус я вписал в габариты (237x147мм), позволяющие напечатать его на 3D принтере Flying Bear 5.

3D-рендер и реальный корпус
3D-рендер и реальный корпус
3D-рендер и реальный корпус
3D-рендер и реальный корпус
3D-рендер и реальный корпус

Для установки в мой вариант корпуса плата приставки требует небольшой "доработки напильником":

- Края платы потребуется скруглить надфилем. Радиус скругления - 3 мм или больше.

- Посадочное место под разъём питания рассчитано на разъём DC-005 (5,5x2,1мм, сам разъём можно без проблем купить на Aliexpress), но для установки разъёма потребуется рассверливать отверстия под его выводы, т.к. отверстия в плате сделаны круглые, а выводы разъёма - плоские.

- Питание платы приставки рассчитано напрямую на 5В, но я у себя решил делать под питание от 12В с применением китайского DC-DC step down преобразователя. Для этого придётся резать дорожки от разъёма питания. На последующих фотографиях будет фигурировать плата с преобразователем. Эта опция необязательна, и можно её не делать вовсе.

- Разъём для подключения картриджа паяется прямо на плату, не приподнимая его над габаритом платы. Если сильно приподнять разъём над платой, крышка слота картриджа может задевать за разъём!

Порядок работы такой:

1) Собираем плату, не устанавливая разъём питания;

2) Печатаем нижнюю часть корпуса и запрессовываем в неё 2 резьбовые втулки 2,5x5x3,5мм (я покупал на Aliexpress оптом);

Нижняя часть корпуса
Нижняя часть корпуса
Нижняя часть корпуса

3) Печатаем скобу под разъём картриджа, подсовываем её под разъём картриджа так, как показано на фотографии ниже:

Скоба под разъём картриджа

4) Скругляем надфилем края платы так, чтобы она поместилась внутрь нижней части корпуса. Потом расширяем отверстия под выводы разъёма питания так, чтобы его можно было установить на плату, параллельно контролируя, чтобы разъём попал в вырез на корпусе;

Плата приставки, установленная в нижнюю часть корпуса
Плата приставки, установленная в нижнюю часть корпуса
Плата приставки, установленная в нижнюю часть корпуса

5) Прикручиваем плату к нижней части корпуса в тех двух точках, куда запрессовывали втулки, при помощи двух винтов М2,5x10;

6) Печатаем верхнюю часть корпуса;

7) Запрессовываем 3 резьбовые втулки 2,5x5x3,5мм и нарезаем в оставшейся стойке резьбу М2,5;

8) Печатаем крышку слота картриджа;

9) Вставляем крышку слота картриджа в "ушки", расположенные на верхней части корпуса. Возможно придётся расширить паз, чтобы ось крышки слота картриджа пролезла внутрь "ушка". Чтобы крышка слота картриджа сама закрывалась, я использовал две пружинки от старых мышек с колёсиком. После установки прожинок и проверки, чтобы крышка слота нормально открывалась-закрывалась, паз в "ушке" можно залить пластмассой из клеевого пистолета, чтобы крышка потом сама не выскочила из паза:

Сборка верхней части корпуса
Сборка верхней части корпуса
Сборка верхней части корпуса

10) Печатаем удлинитель для кнопки сброса. Его габариты я рассчитывал для кнопки с длиной толкателя равным 6 мм. У меня установлена именно такая кнопка.

11) Насаживаем удлинитель на кнопку на плате и собираем корпус в единое целое. Половинки корпуса скрепляются между собой при помощи четырёх винтов М2,5x10.

12) Проверяем как устанавливается картридж.

Корпус в сборе
Корпус в сборе
Корпус в сборе

13) Всё готово, можно играть :)

Резюмирую: плата приставки 2016-го года не очень удачно скомпонована, поэтому корпус пришлось делать с немного странным типом крепления половинок между собой + потребуются небольшие доработки платы. Надеюсь, что в следующей версии платы приставки (если эта версия будет вообще) получится более удачная компоновка.

Файлы деталей корпуса для распечатки на 3D принтере можно скачать в конце этой страницы.

Карта портов новой версии приставки и отличия от оригинального "Эльфа"

Помимо стандартных портов в новой версии приставки появились порты музыкального сопроцессора: #BFFD и #FFFD. В дешифрации портов участвуют биты A1, A14 и A15 шины адреса. В порт #FFFD пишется номер регистра AY, в порт #BFFD - данные, записываемые в регистр. Чтение данных из происходит из порта #FFFD. Из порта #BFFD всегда будет читаться значение #FF. В общем всё так, как на "обычных" клонах ZX-Spectrum.

  • Добавлены новые кнопки для джойстиков. Использование в качестве джойстиков пультов от 8-битных приставок позволило задействовать их дополнительные кнопки. Для джойстика 1 добавились три кнопки ("Start", "Select" и "Fire A"). Для джойстика 2 добавилась только одна кнопка - "Fire A". Все эти дополнительные кнопки "заведены" на неиспользуемые биты портов джойстиков.

    Выглядит это следующим образом:

    Биты Джойстик 1
    порт #1F(31dec)
    (активный уровень - лог.1)
    Джойстик 2
    порт #FE(254dec)
    (активный уровень - лог.0)
    D0 Right Fire B
    D1 Left Down
    D2 Down Right
    D3 Up Up
    D4 Fire B Left
    D5 Fire A
    (активный уровень лог.0)
    x
    D6 Start Fire A
    (активный уровень лог.1)
    D7 Select
    (активный уровень лог.0)
    x

    Для джойстика 1 для битов D5 и D7 выбран активный уровень лог.0 для того, чтобы обеспечить совместимость с классическим вариантом "Эльфа" - при ненажатых кнопках джойстика 1 из порта #1F будет читаться %10100000, как и на обычном "Эльфе".

    Для джойстика 2 задействован только один бит для кнопки "Fire A". Это связано с тем, что порт #FE встроен "внутрь" БМК Т34ВГ1, и его дополнительные биты никуда не выведены, кроме бита D6, который по совместительству является магнитофонным входом, поэтому к нему удалось "прицепить" одну кнопку джойстика.

  • Кроме того сигнал Tape Out с БМК заведен на бит 0 порта A музыкального сопроцессора:

    Включение Tape Out

    Это сделано для того, чтобы можно было определить на какой версии приставки запущена программа. Выдавая в течение некоторого времени информацию в бит 3 порта #FE, читая 0-й бит регистра #0E музыкального сопроцессора и затем сравнивая полученные данные можно определить тип приставки: если данные полностью совпадают, то программа запущена на "новой" версии приставки.

    В данном случае обращаю внимание на то, что процедуру сравнения необходимо проводить некоторое время, повторяя запись различных битов в регистр #FE. Это объясняется тем, что в приставке при чтении из несуществующего порта будет читаться не значение #FF, а некоторые псевдослучайные значения. И чтобы избежать ложных срабатываний процедуры определения типа приставки (это актуально для оригинального "Эльфа"), нужно проводить сравнение как можно большее количество раз.

  • Дополнительные контакты на разъёме картриджа.

    В оригинальной версии приставки на разъёме для картриджа есть два незадействованных контакта с номерами 31 и 33. В "новой" версии приставки эти контакты задействованы - на них выведены сигналы SOUND-IN и 1IC8:

    SOUND-IN (контакт 33) - вход звука. Сигнал предполагается использовать в случае установки картриджей с собственными звуковыми схемами. Таким образом звуковой сигнал можно подавать с картриджа прямо в приставку.

    1IC8 (контакт 31) - Сигнал (вход) для включения внутреннего буфера шины данных приставки для приёма байта данных со слота картриджа на шину данных. Активен в низком уровне. Сигнал должен подключаться на выход с открытым коллектором. Сигнал нужен для того, чтобы в случае использования на картридже дополнительной периферии, можно быть передать байт данных в приставку. Схемотехника "Эльфа" такова, что данные с картриджа читаются только при обращении к ПЗУ картриджа. Во всех остальных случаях буфер данных неактивен. И этим сигналом можно включить буфер данных для приёма байта. Подробности - в разделе про подключение AY к приставке.

  • Документация

    Схема, исходники, плата приставки "Эльф-2016"В архиве содержится схема приставки "Эльф-2016", разводка платы, файлы для заказа изготовления плат, исходники платы. Внимание! В схеме приставки есть ошибки. Подробнее читаем в тексте статьи.
    Тестовое ПЗУ для приставки "Эльф"Будет полезно для проверки и ремонта узлов новодельной версии приставки "Эльф-2016" и в перспективе "Эльф-2017". Версия теста от 1.09.2016
    Детали корпуса для новодельной приставки "Эльф-2016"Для распечатки на 3D принтере