Вложений: 2
Эмулятор 1818ВГ93 (MB8877A) на контроллере LGT8F328P. Конструкция выходного дня.
https://i.postimg.cc/63S6mChR/vg-0.jpg
В последнее время наблюдается дефицит чипов контроллеров дисковода для наших любимых ZX-Spectrum. Это касается как советских 1818ВГ93, так и зарубежных микросхем MB8877A.
Согласно законам рынка цена на эти чипы значительно повысились. Кроме того, часто можно выкупить неисправный чип, а в случае с MB8877A – нерабочий «перемарк» с неизвестно чего.
Купить на алиэкспрессе нормальную микросхему MB8877A – очень большая удача.
Идея эмуляции ВГшки давно висела в воздухе. Была даже рабочая реализация от Робуса, но, по разным причинам, в массы она не пошла.
Не так давно появился интересный проект эмулятора ВГ93 (MB8877A) от известного спектрумиста Евгения Угрюмова. Кстати, эмулятор дисковода на Atmega 328P тоже авторства Евгения Угрюмова.
В основе проекта чип LGT8F328p - китайский микроконтроллер, клон популярного AVR ATmega328p (Arduino Nano). Практически полностью с ним совместим, а также имеет несколько дополнительных фич!. Проект развивается уже достаточно давно, многие спектрумисты его повторили, а топовые ретро-блогеры сделали видео и стримы по сборке и тестированию девайса.
Хоть и с опозданием, решил тоже повторить этот эмулятор и кратко описать свой опыт.
Итак, сначала надо закупиться.
Отдельно чип LGT8F328P стоит дороже чем готовая плата (искать на али как LGT8F328P LQFP32 MiniEVB плата) с ним на борту. Поэтому, обычно все покупают платы и сдувают оттуда нужный контроллер:
https://i.postimg.cc/Hxfc7qRf/vg-11.jpg
Далее желательно купить (заказать) печатную плату. Гербера есть в свободном доступе. Zip-файл я прикреплю в конце поста. Это вариант от Alex MicroDRV.
https://i.postimg.cc/9fgqcRpX/vg-9.jpg
Кроме платы и чипа надо найти «гребенки» для изготовления «ножек» микросхемы эмулятора. Я использую т.н. цанговые панельки, поэтому купил цанговые «гребенки». Кроме этого, надо три блокировочных SMD конденсатора на 0.1uF, танталовый электролитический конденсатор на 47uF, и SMD-резистор на 10 кОм.
https://i.postimg.cc/sXBGxj6Y/vg-10.jpg
Сначала запаиваем микроконтроллер, потом SMD детали. Контактные «гребенки» паяем в последнюю очередь. Чтобы запаять их ровно я использую макетную плату от Ардуино. Выступающую часть контактов обрезаю заподлицо с платой и формирую при пайке «шарики».
https://i.postimg.cc/hhRDSg6t/vg-1.jpg
https://i.postimg.cc/d3yQPDWf/vg-2.jpg
Все. Плата готова:
https://i.postimg.cc/66kn7ZNy/vg-3.jpg
https://i.postimg.cc/v8g5HzkJ/vg-4.jpg
Теперь надо прошить контроллер.
Самое простое и доступное решение – использовать в качестве программатора популярную плату Arduino NANO. Стоит она не дорого и продается на всех торговых площадка от Али до Озона.
Для превращения Ардуино NANO в программатор, в нее надо «залить» скетч ArduinoISP. Этот скетч есть в стандартном комплекте среды разработки Arduino IDE 1.8.18
https://i.postimg.cc/N0BxKHm1/prog.jpg
Подробно про установку Arduino IDE я рассказывать не буду. Нужное видео легко найти в youtube. Кроме этого, я дам ссылки на ряд видео по сборке эмулятора ВГ93 – там процесс установки Arduino IDE и программирования Arduino NANO очень подробно показан.
Теперь нам надо подключить программатор на Arduino NANO к плате эмулятора ВГ93.
Вот таблица необходимых подключения. Всего надо пять проводов.
https://i.postimg.cc/RZVFqCqW/vg-24.jpg
Для наглядности подключение в картинках:
https://i.postimg.cc/CKxqyHb6/vg-7.jpg
https://i.postimg.cc/t4y6kHJb/vg-8.jpg
Для соединения использовал стандартные 10 см проводки для Ардуино и макетную плату. Тут каждый делает, как ему удобно.
https://i.postimg.cc/4x59FFH9/vg-6.jpg
Провод к пину RESET необходимо подпаять. На плате есть специальная площадка:
https://i.postimg.cc/Dy1s1z25/vg-5.jpg
Для прошивки использовал программу AVRDUDESS 2.18. Вот ссылка на архив https://drive.google.com/file/d/1c69...yrYakJtzx/view
После запуска необходимо выбрать нужный тип программатора – Arduino as ISP
Ниже прописать номер порта, к которому привязалась плата Arduino NANO и скорость порта 19200.
В левом верхнем углу выбираем чип, который нам надо запрограммировать - LGT8F328P.
В поле Flash указываем путь к нужному файлу прошивки (для начала залил прошивку vg93_lgt_evo.hex). Файлы прошивок прикреплю ниже, альтернативные прошивки есть в архиве с прошивальщиком AVRDUDESS.
Когда все готово, нажимаем кнопку Program! В случае удачного подключения и настройки ниже побежит прогресс программирования.
https://i.postimg.cc/zDgR1fR5/vg-13.png
Все, можно отключить эмулятор от программатора. Наша новая «ВГ93» готова к установке в Спектрум.
Для проверки использовал свою тестовую плату ZS Scorpion 256 Turbo+. В качестве дисковода подключил самодельный эмулятор типа Gotek.
https://i.postimg.cc/zvKLwd13/vg-12.jpg
https://i.postimg.cc/GhR9wxCJ/vg-22.jpg
Сначала проверил чтение. В турбо-режиме (7 МГц) Скорпион некорректно считывал даже оглавление диска. В обычном режиме (3.5 МГц) чтение работало корректно.
https://i.postimg.cc/4Nv7mF5S/vg-14.jpg
Евгений Угрюмов оперативно подсказал мне, что лучше использовать другую прошивку. Залил vg93_lgt_SYNC.hex
С ней чтение заработало и в нормальном и турбо режиме без сбоев.
Проверил форматирование. Формат проходил как в TR-DOS, так и через свою утилиту в ProfROM.
Проверил запись. В среде TR-DOS использовал команду COPY S для копирования файлов с использованием одного дисковода (спасибо ZX_RemX за инструкцию). Операция прошла удачно.
После этого скопировал файлы большего размера через trdn. Копирование и проверка файлов тоже прошли удачно.
А вот запись сохранения игры через меню ProfROM заканчивается зависанием игры. Полученное при этом сохранение оказывается «битым» и подвешивает Скорпион.
https://i.postimg.cc/WbcqpPMZ/vg-15.jpg
После тестов с Готеком, подключил реальный 3.5" дисковод.
https://i.postimg.cc/P52CMp0b/vg-16.jpg
Проверил чтение - все читается нормально.
Потом проверил форматирование в операционной системе TR-DOS. Здесь тоже проблем не возникло:
https://i.postimg.cc/YS0hD2w5/vg-17.jpg
Скопировал игру Dizzy1EE с SD-карты на дискету с помощью Proteus. Успешно, игра после этого читается и запускается.
Сохранение состояния игры через меню ProfROM, как и в тестах с Готеком "завешивают" игру. Сохранение получается битым.
Пока эту проблему не поборол. Скорее всего, Скорпион использует некие нестандартные процедуры при записи дампа памяти на дискету.
Проверка на Пентагоне 128 (2013)
Достал с полочки свой Pentagon 128 (2013). Он сразу оснащен двумя дисководами. Gotek - диск "А", 3.5" FDD - диск "B".
https://i.postimg.cc/sxYXGvph/vg-21.jpg
Установил эмулятор "вгшки" на место MB8877A.
https://i.postimg.cc/d0fDbMsL/vg-18.jpg
https://i.postimg.cc/qRCg0mqQ/vg-19.jpg
Чтение, форматирование ожидаемо прошли успешно на обоих дисководах.
Для проверки записи скопировал игру Dizzy1 с Готека на дискету с помощью командера trdn.
Все прошло без сбоев, игра запустилась с дискеты.
https://i.postimg.cc/4yky3zhG/vg-20.jpg
Вывод.
Эмулятор мне понравился. Конечно, я еще не очень долго его тестировал, но пока каких-либо критических глюков или ошибок не заметил. Остается открытым вопрос по сохранению дампа памяти через меню ProfROM в Скорпионе. Если кто-то будет тестировать этот эмулятор на Scorpion 256 turbo с ProfROM, прошу проверить этот момент и отписаться в теме.
Ссылки на видео по сборке эмулятора:
Небольшое видео с моими тестами эмулятора:
https://youtu.be/G3qcKT8jezo
Буду рад комментариям и конструктивным замечаниям.
Прикрепляю архив с схемой эмулятора, герберами и прошивками.
Вложение 82715
Вложение 82716