На данный момент цены на микросхему КР1818ВГ93 колеблются от 2000 до 3000 на «Авито», а её аналог МВ8877 стоит ни сколь не дешевле, хотя её можно приобрести дешевле на «Алиэкспресс», но гарантию, что она рабочая, никто не даёт, и довольно часто попадаются откровенные подделки. И вот буквально пару месяцев назад родился проект эмулятора данной микросхемы на дешёвом (пока) китайском микроконтроллере LGT8F328P, который позиционируется как улучшенная замена микроконтроллера MEGA328P, используемого в «Ардуино». А автором данного проекта является наш давний онлайн-знакомый Евгений Угрюмов!
В телеграм-группе ZX-FLOPPY он представил свои наработки. Проект развивается, есть недочеты, но в целом можно сказать, что эмуляция работает, чтение и запись дискет происходит нормально. Есть несколько вариантов плат, и в этой статье покажу, что получилось у меня.
Плата
В первой демонстрации работы эмулятора Евгений показывал собранную на макетке схему, но народ в группе, конечно же, создал для этого дела аккуратную плату, да и не один вариант, а несколько. Я приобрел на «Авито» вот такую версию:
Как оказалось, данная версия платы не совсем закончена. Всё дело в том, что если использовать микросхему буфера, то между ней и микроконтроллером нужны подтягивающие резисторы, для которых на этой версии платы нет посадочных мест. Ещё один «косяк» — это нет соединения 20-й ножки контроллера с 33-м контактом платы. Это линия WF/DE, и она не везде используется, но рекомендуют всё-таки соединять, и даже на плате предусмотрели для этого специальный «пятачок». Ещё одно замечание: на плате отсутствуют отдельно выведенные пины для программирования микроконтроллера, а подписанные контакты RXD и TXD — не совсем то, что нужно.
Итак, для сборки понадобятся три smd-конденсатора 0,1 мкФ (один виден на фото, ещё два с обратной стороны платы), smd-резистор 10 кОм, ещё один smd-конденсатор на 10 мкФ и, собственно, сам микроконтроллер. Буфер на данную версию платы можно не устанавливать (а точнее, и не нужно) , так как отсутствуют резисторные подтяжки, про которые я указал выше, а припаивать их в виде smd-резисторов к ножкам буфера — тот ещё геморрой. Поэтому вместо буфера нужно будет поставить перемычки на линии данных. Вот фото от участника группы digibear, по которому я и делал обход буфера:
Сам микроконтроллер можно приобрести на «Али», там продаются мини-платы (аналоги Arduino Pro Mini) или отдельно микроконтроллеры, что выйдет ещё дешевле. Я не стал там заказывать, неохота долго ждать, поэтому взял платку с контроллером на «Озон», выглядит так:
Снял контроллер и припаял его на эмулятор. После этого можно начинать прошивку.
Прошивка
Для прошивки микроконтроллера LGT8F потребуется программатор, и самое простое — это сделать такой из Ардуино Нано, прошив её специальной прошивкой LarduinoISP. Для себя, чтоб не забыть, я нарисовал такую распиновку подключений ног на плате:
Сигнал сброса на этой плате выведен только в виде небольшого пятачка, и в процессе припайки-отпайки он у меня отпал. Уже позже я припаял пины на нужные ноги, а сброс здесь между резистором и конденсатором, прям туда пин и припаял. Вроде всё понятно должно быть, но ещё продублирую:
- 21 нога — +5 вольт
- 29 нога — общий
- 30 нога — SWC, идёт на D13 Ардуины
- 36 нога — SWD, идет на D12 Ардуины
- Reset — идёт на D10 Ардуины
Далее, сделав нужные подключения Ардуино и нашего эмулятора, нужно залить прошивку. Саму прошивку ищем в группе ZX-FLOPPY, вот последняя рабочая прошивка для данной платы на момент написания статьи. Прошивал я через AVRDUDESS версии 2.17. Приведу скрин программы с нужными параметрами для успешной прошивки:
Главное — выбрать нужный программатор из выпадающего списка, сам микроконтроллер как LGT8F328P, скорость установить на 19200. Не знаю почему, но у меня с первой попытки не прошивается. То есть запускаю программу, жму кнопку «Программировать МК!» и программа выдаёт ошибку, жму повторно, процесс проходит успешно.
Проверка
Так, теперь настала пора проверить работу агрегата. Но для начала нужно ещё придумать, как не испортить панельку в БДИ. Для этого я использовал дополнительную панель с плоскими выводами:
Этакий бутерброд получился. Не скажу, что идеально, по моим ощущениям как-то слабовато входит в БДИ, и даже пару раз получал глюки из-за неконтакта, но пока так и пользуюсь.
Что ж, включаю комп и что вижу? А вот ничего хорошего сначала не увидел. Подключал изначально я к «Дельте-C», к которой у меня есть два разных БДИ, так вот на одном комп стартует, в ТР-ДОС заходит, но дисковод начинает колбасить, беспорядочное перебирание цилиндров (проверял на эмуляторе дисковода). На другом БДИ получил вообще вот такую картину сразу после включения:
Всё оказалось банально, не заметил соплю на двух ножках микроконтроллера, хотя паял под микроскопом, после устранения замыкания компьютеры заработали нормально, старт, ТР-ДОС, дисковод молчит, когда не спрашивают. Но это только с одним дельтовым БДИ, с другим, упрощенным, не работает. При обращении к диску ничего не происходит, компьютер пишет, что нет диска. Посмотрев схемы, увидел разницу в использовании сигнала WF/DE, и получилось, что на том БДИ, где данный сигнал не использовался, эмулятор работает, а другой использует в работе этот сигнал, и чего-то ему не хватает. Ещё проверил работу на «Скорпионе 256» не турбированном, там тоже этот сигнал WF/DE не используется, и, соответственно, всё заработало нормально.
Вопрос не работы второго БДИ пока открыт, думаю-гадаю, что делать и как поправить ситуацию.
Заключение
Подведу итог. В целом эмулятор рабочий, стоимость готового устройства может выйти около 200 рублей, это с учетом покупки микроконтроллера в Китае. Проверены различные режимы работы: чтение, запись, форматирование, работа с эмуляторами дисковода, а также с реальными дисководами. Вроде косяков нет. Было один раз, при копировании с дискеты в образ неправильно записалась информация, но это, скорее всего, из-за плохого контакта моего «бутерброда». После подгибания ног, а также выправления панели на БДИ стало всё нормально копировать в обе стороны.
Огромная благодарность Евгению Угрюмову, он просто умеет удивлять!