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

Приветствую.
Делюсь опытом изготовления эмулятора дисковода для Atari на базе Arduino Nano. Под катом инструкция по сборке, схема, прошивки и демонстрация работы.
59e4eb282431a467741024.jpeg


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

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

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

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

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

Вид со стороны Arduino
59e4f6e8067c8585656889.jpeg

Вид со стороны экрана
59e4f6e57e24d325252041.jpeg

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

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

59e4f7f24a25e397584978.png

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

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

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

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

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


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

Результат на экране:
59e4fe264d2d8560842230.jpeg

Благодарю за внимание

© Geektimes