Эмулятор дисковода для Atari на Arduino

alk0v 16 октября 2017 в 22:02 11k
Приветствую. Делюсь опытом изготовления эмулятора дисковода для Atari на базе Arduino Nano. Под катом инструкция по сборке, схема, прошивки и демонстрация работы.




В нашем музее (подробности в профиле) есть несколько компьютеров Atari, для которых хотелось сделать что-то, позволяющее быстро загружать программы. Оригинальные 410-е магнитофоны для этого не очень подходят, да и, если бы у нас был оригинальный дисковод, это тоже создало бы трудности. У Atari для загрузки программ в память используется собственный последовательный интерфейс — Atari SIO, разработанный Джо Декуром в 1979 году. Что примечательно, Джо также участвовал в разработке стандартов модемной связи, USB и Bluetooth. И аналоговый магнитофон и цифровой дисковод передавали данные в компьютер Atari по одной и той же последовательной шине, пропускная способность которой могла достигать 120 кбит/с. Так как протокол последовательный, данные можно загружать прямо с компьютера через USB-UART адаптер и программу AspeQt, позволяющую эмулировать периферию Atari. Но хотелось чего-то компактного и автономного. Заказывать и паять плату для SIO2SD — эмулятора с SD картой не хотелось, но в процессе поисков попался проект SIO2Arduino, на базе которого я и собрал свое устройство.

Эмулятор можно собрать в нескольких вариантах, мне хотелось девайс с экраном, на котором можно выбрать образ нужной дискеты.

Первый прототип был собран за пару часов, кабель снял с нерабочего магнитофона Atari XC12, если бы его не было, пришлось бы повозиться с разъемом.



Прототип был проверен на Atari 800XL, заработал сразу, без доработок и настроек.



Можно было переходить ко второй фазе — полноценному прибору.
Вместо большой Arduino UNO решил собрать все на базе Arduino Nano. Все было смонтировано на монтажную плату и распаяно старым добрым МГТФ.

Вид со стороны Arduino



Вид со стороны экрана



По размерам хорошо подошел корпус Kradex Z119 На переднюю панель вывел экран, кнопку переключения образов дисков и светодиод, который висит на ноге TX и показывает процесс загрузки.

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



При прошивке готового устройства нужно не забыть поменять в Arduino IDE плату с Uno на Nano, оказывается они немного не совместимы и IDE не видела Nano, пока не изменил настройки. Весь проект для Arduino IDE с настройками под экран и кнопку доступен по ссылке

В собранном виде получился вот такой прибор:




Питание от кабеля micro-usb, карта памяти форматируется в FAT32, в корень скопировал образы дисков в формате ATR и XEX, большой архив с образами лежит на archive.org

Для Atari 800XL порядок работы следующий:

  • Включаем SIO2Arduino
  • Кнопкой выбираем нужный образ дискеты
  • Включаем Atari

Загрузка начинается автоматически после включения или сброса, о чем свидетельствует бодро моргающий светодиод на линии TX. Игра A-Zone, образ которой занимает 92 кБ, грузится около 30 сек. Самые большие образы в архиве занимают 130 кБ.

Результат на экране:



Благодарю за внимание
Проголосовать:
+37
Сохранить:
Лучшее на Habrahabr

Ловкость рук и никакого мошенничества: практические советы по ускоренному обучению дизайну для разработчиков

перевод
Cloud4Yвчера в 15:52
8

Падение Stack Overflow: что случилось

it_manвчера в 16:35
10

Битва за сетевой нейтралитет: судебные войны и общественные протесты

VASExpertsвчера в 18:33
2

Альтернатива платному отключению рекламы в бесплатном приложении Android

из песочницы
web_alexвчера в 15:28
15

Qt: Пишем обобщенную модель для QML ListView

из песочницы
koldoonвчера в 13:41
3

Анонс Dart 2.0: Оптимизированный для клиентской разработки

перевод
bunopusвчера в 12:59
20

ЕГАИС 3.0 – готовность 100 %! Помарочный учет алкоголя

recovery mode
Scanportвчера в 13:45
50

Личный опыт: подборка материалов о виртуальной инфраструктуре, ИБ и трендах на рынке IaaS

1cloudвчера в 19:52
0

Понимая зависимости

перевод
Kiselioffвчера в 18:00
0

iPaaS — облачные ESB… или нет?

из песочницы
Apokalipsecвчера в 20:17
2