Найти тему
Дюк Юсупов

Доработки Дельта-С - отечественного клона ZX Spectrum

Оглавление

Я не из тех коллекционеров, которые покупает раритетное железо, дрожит над ним и сохраняет его первозданный вид. Я предпочитаю этим железом пользоваться и получать от этого удовольствие. Однако, в этом самом старом железе, как правило, всегда есть что можно улучшить, доработать или просто добавить, поскольку зачастую производители либо сознательно шли на некоторые сомнительные архитектурные решения, либо просто не было другого выхода. Я уже писал про доработки, которые проводил в своём ZX Spectrum +2, которые мне пришлось делать, чтобы при использовании его экран мне не залеплял "снег", а звук волшебным образом превратился бы из моно в стерео.

Поэтому, когда ко мне в руки попал такой замечательный клон, как Дельта-С02 (на 52 микросхемах, фактически клон Ленинграда), и как только я его полноценно подключил ко всему, к чему только смог (и даже разъем для клавиатуры появился слева), мне сразу же захотелось в нём что-то улучшить. Первой жертвой пал динамик - он был настолько убогим по качеству, что оправдать его наличие можно было бы только в каких-нибудь часах Электроника, а не в бытовом персональном компьютере (БПК), как гордо именовалась та самая Дельта-С. Во-первых, он издавал исключительно высокие и писклявые звуковые колебания, во-вторых, он не отключался, в-третьих, он был тихим (и только это его оправдывало).

Я тут же безжалостно отпаял провода от него и добавил на плату (плюс вывел к верхним вентиляционным отверстиям в корпусе) полноценный динамик, который у меня в 90-е годы работал в пассивных самодельных колоночках для моего Пентагона, который их спокойно раскачивал для чипа AY. Прорезавшийся звук оказался даже чересчур громким и его надо было либо отключать чтобы "спектрумировать" по ночам, либо как-то приглушать. Для чего я и добавил переменный резистор на панель. Звук теперь стал сравнимым с ТВ, да ещё и удобно регулируемым.

Музыкальный чип AY

Однако, это было только для разогрева. Звук-то всё равно был биперным, т.е. одноканальным. А хотелось-то полноценного 3-канального стереозвука AY! Кстати, не надо думать, что на 48 Кб машинах отсутствовали игры с музыкой AY. Да, в большей части игр для 48 Кб полноценная музыкальная составляющая появилась только с появлением разных "доработанных" версий, иногда музыка была только если загрузка шла на 128 Кб машине (видимо, просто не влезало в память), но были игры, в которых звук AY вполне себе был не только в 128 Кб, но в 48 Кб. В то же "Звёздное наследие" можно не только было поиграть на 48 Кб (при наличии дисковода), но ещё и с музыкальным сопровождением, что добавляло этой игре +100 очков к атмосферности.

Сначала я не хотел лезть серьёзно в плату (тем более что там все компоненты запаяны и нет возможности их спокойно вытащить и заменить), а воспользоваться слотом расширения справа на плате (тем более что переходник на ZX BUS я уже собрал). Однако, просто так купить в РФ плату для ZX BUS с чипом AY оказалось не так-то просто: из заграницы не закажешь, а свои умельцы не делают и не продают (недавно тут в Авито пробегал один такой экземпляр - но уже было не надо). Поэтому сначала принял решение поэкспериментировать с платой, которая монтировалась в слот процессора (проект смотреть тут). Заказал тоже на Авито (спаять самому может и дешевле, но опять же - зачем мне 5 плат и откуда выгодно брать микросхемы в единичных экземплярах?).

Но сначала пришлось выпаять процессор, при этом не оторвать какие-нибудь дорожки с уже немолодой платы (ну что мешало изначально посадить его в "кроватку"?). Плата оказалась рабочая, но, как я и предполагал, никак не могла поместиться под клавиатуру, на место процессора. Неудобное место для процессора, однако, на этой плате - внизу под клавиатурой. Да ещё и с охлаждением проблема - сверху закрыто, снизу - нет вентиляционных отверстий, а греется на плате только он один. Что-то недосмотрели заводские технологи. Ну а мне пришлось что-то выдумывать. Сначала я думал, что можно монтажными проводками просто соединить 40 контактов, но это оказалось не просто: их было слишком много и они постоянно выпадали. Затем я попробовал их отрезать и припаять - но паялись они в панель очень плохо (какие-то они не медные совсем оказались), а при использовании начинали вываливаться.

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

Получилась специфическая конструкция с переносом процессора ближе к центру корпуса - но даже там этот "бутерброд" не особо-то хотел вмещаться. Вроде и большой корпус - а плату впихнуть некуда!

В итоге всё заработало, но осадочек с кучей проводов - остался...

Расширение памяти до 128 Кб

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

В поисках уже рабочих схем я забрёл на сайт Схематека, посмотрел видео про сборку и доработку Ленинграда, но самое главное, что на сайте было выложено несколько схем расширения памяти для Спектрумов с общим полем памяти (у 52 микросхемной Дельты-С как раз оно самое), но для разных вариантов чипов памяти. Мне очень понравилась та, которая предполагала установку импортных модулей 41256 DRAM с регенерацией в 256 циклов. Она чуть проще, сами микросхемы памяти легко закупаются на Aliexpress, и покупать их там довольно-таки выгодно, поскольку продаются они сразу по 10 штук, что нам как раз и надо. Все купленные микросхемы оказались рабочими, а две запасные тоже пригодились, когда я спалил парочку уже установленных. А вот остальные микросхемы для самой схемы пришлось по одной брать в Чип и Дипе, а оно там вообще не дешевое ни разу (дешевле, наверное, просто целую плату на Авито купить для раздербана).

Однако, саму схему расширения памяти нужно было адаптировать от варианта Ленинграда к варианту Дельта-С. Для этого я использовал эту схему Ленинграда и вот эту схему Дельта-С (см. PCB с обозначением номеров микросхем). Получилось примерно так:

После успешной адаптации я понял, что данная схема применима для моей Дельты-С и приступил к реализации. Для уверенности проверил схему тем же способом, что и реализован у Константина Айги на видео: запаял микросхемы поверх имеющихся на плате и обвешал всё лапшой:

 Сверху
Сверху
 Снизу
Снизу

Заработало. Потом я прикупил платы-макетки 4x6 и 3x7 для сборки схемы, но посмотрев на них и на количество соединений приуныл. Сделать-то можно, но под платой окажется просто комок проводов. Погрустив, решил в первый раз сесть за разработку собственной печатной платы, чтобы потом заказать её производство у китайцев. Несколько дней мучений в бесплатной программе FreePCB (программа не очень навороченная по функциям, но зато простая в освоении) и на свет появился первый вариант платы, расширяющей память именно Дельта-С. При этом я сразу заложил возможность для переключения с 48 Кб на 128 Кб, предусмотрев отдельные выводы на плате для их дальнейшей перекоммутации. Надо было сразу делать с электрической коммутацией через те же микросхемы КП11, но я решил что первый вариант будет на механической кнопке с 6 группами контактов (просто она у меня уже была в наличии).

Заказал я её у китайцев, доехало достаточно быстро. Уже заказав её я вспомнил, что не сделал отверстий под блокировочные конденсаторы, а линии +5 вольт и "земли" оставил такими же тонкими, как и остальные сигнальные линии. Поэтому итоговый вариант схемы отличается от того, что было изготовлено:

Верх
Верх
Низ
Низ

Собрано она была довольно быстро, ибо запаять 6 микросхем на готовую плату дело 10 минут. А вот с подключением дело обстояло не так уж просто. Во-первых, надо было выпаять ПЗУ и все 8 чипов памяти, которые добрые и экономные советские инженеры решили не сажать в панельки, а паять намертво в плату. На это я потратил несколько вечеров и только чудом не покоцал кучу дорожек, ибо выпаивалось со старой платы оно очень неохотно. После каждого выпаянного чипа я тут же запаивал "кроватку", запихивал в неё этот чип обратно и прогонял внешний тест памяти, чтобы убедиться, что дорожки всё ещё работают. Это реально помогло, потому что искать обрыв на 16 дорожках гораздо проще чем сразу на 128.

Верняя часть платы
Верняя часть платы
Нижняя часть платы. Видно провод связывающий 1 контакты всех микросхем. Первый контакт всех микросхем вешается на землю, чтобы проверить нижнюю часть памяти (так, например, можно заменить РУ5 на РУ7), пока не доделана плата расширения памяти.
Нижняя часть платы. Видно провод связывающий 1 контакты всех микросхем. Первый контакт всех микросхем вешается на землю, чтобы проверить нижнюю часть памяти (так, например, можно заменить РУ5 на РУ7), пока не доделана плата расширения памяти.

Во-вторых, надо было найти на плате Дельта-С точки для получения нужных сигналов и, самое главное, вывести для подключения сигналов от платы расширения памяти соответствующие контакты микросхем. Для этого опять пришлось выпаять несколько микросхем (DD19, DD22, DD35). Можно было, конечно, и просто поднять у них "ноги", но мне после выпайки с платы процессора и памяти это было уже не страшно. Вот фото платы с пометками откуда брать сигналы и куда их подключать (я лучше запаяюсь к переходным отверстиям, чем к микросхемам):

Левая часть
Левая часть
Правая часть
Правая часть

К этим самым местам, указанным на фото, я запаял провода и собрал их в один разъем и проверил, что всё работает без платы:

После этого собрать всё это воедино было делом техники (если у вас, конечно, есть запасное ПЗУ с прошивкой SOS 128K и SOS 48K). И причём сразу всё заработало! То есть тесты памяти на 128 Кб отлично проходили. Однако, и проблемы не заставили себя долго ждать. Сначала я понял, что без блокировочных конденсаторов иногда возникают сбои, но это быстро купировалось их установкой на все микросхемы. Потом, когда гонял разные приложения и игры, обнаружилось, что некоторые игры не работали. Это сразу проявлялось на "НЛО-2" и "Чёрном вороне" от Медноногова. Сначала я не мог понять причину, а потом обнаружил, что забыл (или проигнорировал) 10-й вывод с микросхемы ТМ9 на микросхему DD30.10 для функционирования "второго экрана" (тут я мало что понимаю, но могу сослаться на статью). При запуске программы без этой связки (т.е. с выключенным 15 битом экранных адресов) было видно, что экран покрывается мусором, видимо, потому что писалось в не ту область памяти, которая должна была быть по задумке автора - тот самый "второй экран". Это я быстро пофиксил одним дополнительным проводком и все игры стали работать нормально. Выглядело всё это во время тестирования примерно вот так:

И уже после этого проблемы возникли с запихиванием всего этого добра в корпус Дельта-С. Снаружи-то он выглядит просторным в верхней части, но, по факту, там всё мешает: и крышка секам-кодера слева, и коннекторы клавиатуры, и стабилитрон по центру... А ведь я в самый центр ещё вынес плату с чипом AY и процессором...

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

Кнопка переключения режимов 48/128
Кнопка переключения режимов 48/128

Когда всё это было окончательно собрано, у меня в руках оказался полноценный 128 Кб Спектрум с музыкальным процессором. Причём выбор что использовать - 48 или 128 килобайт памяти, достигался всего одной кнопкой. Получилась довольно-таки уникальная машина - я, по крайней мере, такое не встречал. Минус был ровно один - тайминги памяти. Понятное дело, что они соответствовали 48 Кб машине. Причём, если INT приводился в соответствии фирменному элементарным способом - нужно только выпаять одну ногу конденсатора и кинуть на неё один проводок с микросхемы (DD37.09):

Но вот как тайминги и количество строк поменять - не знаю. Как вариант, можно было бы попробовать сделать из этого Спектрума вариант Пентагона, заменив кварц и перейдя на безWAITовую модель, но этого я ещё не успел попробовать (да и как насчет количества строк?). Да и если почитать форумы и статьи (про Пентагон и фирменные Спектрумы), то вопрос оказывается не такой-то и простой. Да и переход к таймингам Пентагона заменит тогда тайминги 48 Кб Дельты, чего не хотелось бы. А сохранить возможность переключения таймингов при переходе от 48 к 128 килобайтам (как на эмуляторах или FPGA-реализациях) на реальном железе - это не так-то просто...

А пока что некоторые игры, которые очень сильно зависят от таймингов (т.е. заточенные под получение максимального эффекта от железа Спектрума), не очень хорошо работают на Дельте-С. Это, например, можно сказать про некоторые игры Дениса Грачёва (Retrosouls) - в них очень часто используются мультиколорные эффекты, которые жуть как требовательные к таймингам. У него даже игры выходят в формате TAP - для оригинальных ZX Spectrum, а в формате TRD - для Пентагона (и зачем такая привязка?).

Помучившись с механической кнопкой (ну никак она не лежала там где надо), решил доделать схему под выбор режима 48/128 Кб одним джампером. Пришлось для этого задействовать ещё пару микросхем КП11A (вот герберы платы - и она уже для любых Спектрумов с общим полем памяти + исправление дешифрации портов):

Заодно добавил кусок для дешифрации портов ввода-выхода, который при реализации схемы для Делта-С выкинул (IOWR). Поскольку желания опять заказывать у китайцев новую плату уже не было, добил имеющуюся куском монтажной платы:

Отлично всё заработало, и огромную кнопку заменил на мини-переключатель.

Но это усложнило непростую ситуацию с размещением этой объединенной платы в корпусе. Никак я не мог побороть проблемы со сбросом компьютера после особенно усердных заруб на клавиатуре. Ну мало места под клавиатурой, а стальная пластина хоть и крайне мощна, но и широка. Продавливается, однако. Пришлось думать над размещением обоих плат в корпусе (AY и расширения памяти). Уж как я только не комбинировал - свободного места было крайне мало. В результате бесплодных поисков решил что мне нужно плату AY сделать меньше. Сказано - сделано. Сначала по данной схеме развел плату:

Затем обнаружил в схеме ошибки: перепутанные каналы, задействованный 26 вход AY (а он нужен только для дополнительного делителя частоты в микросхеме Yamaha). А после сборки ещё номиналы резисторов мне показались не очень правильными. Поэтому доделывал уже по более каноничной схеме (вот герберы, если кому надо, только на номиналы резисторов на плате не смотрите). Фишка данной платы в том, что мы берем практически все те же сигналы, что мы брали и для платы расширения памяти. Надо только добавить ещё D6 и D7, спикер (элементарно берется с DD47.2), CLK (он же H1 - DD3.2). Надо было бы всё это в одной схеме изобразить, но тут я уже устал и не доделал :) Да и не поместилась бы такая большая схема в корпусе. А я взял монтажку 4 на 6 и вышло как-то так:

В корпусе всё это более-менее разместилось в верхней части:

И проблемы со сбросами из-за продавливания кливиатуры прекратились. На фото выше, кстати, видно что стандартный шлейф клавиатуры заменён обычными проводами (просто прижимом пластины), ибо из-за постоянных "туда-сюда" в разъёме у шлейфа постоянно затирался контактный слой и в конце-концов отрезать от него стало нечего. Зато и контакт с клавиатурой стал гораздо лучше и ничего не отваливалось, а то каких только клавиатурных глюков я не ловил из-за плохого контакта шлейфа и разъема (например, не срабатывала комбинация Symbol Shift и C - и только она одна!).

Ну и напоследок, самая простая схема расширения памяти для Спектрумов с общим полем памяти и без исправления дешифрации портов (а вот и герберы):

В итоге я получил, что хотел: этакий вариант Дельта-С, но с преферансом и поэтессами возможностью переключаться между 48 и 128 килобайтами оперативной памяти, с музыкальным сопроцессором и возможностью подключать к нему разнообразную периферию от оригинального ZX Spectrum, например, контроллер дисковода или даже устройства типа divMMC. Снаружи выглядит теперь как настоящая Дельта-С 128 Кб (хотя у той "паук" внутри, а тут всё чётко - только элементарная логика):

И наклеечку на корпус надо не забыть!
И наклеечку на корпус надо не забыть!

Универсальный и можно даже сказать что уникальный экземпляр. Но как я уже писал выше, есть проблемы с работоспособностью тех демо и игр, которые заточены под Пентагон или фирменные тайминги 128 килобайтного ZX Spectrum. Играть в тот же Old Tower или RINGO будет не очень-то приятно из-за артефактов на экране. К счастью, это очень малая часть игр, подавляющее большинство идёт вообще без каких-либо проблем. Хотя, возможно, надо будет подумать о переходе к таймингам Пентагона.

P.S. А тем, кому интересно про историю этого отечественного Спектрум-совместимого компьютера - вам сюда.