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

в 19:02, , рубрики: arduino, atari, diy или сделай сам, старое железо

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


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

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

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

Прототип был проверен на Atari 800XL, заработал сразу, без доработок и настроек.
Эмулятор дисковода для Atari на Arduino - 3

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

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

Вид со стороны экрана
Эмулятор дисковода для Atari на Arduino - 5

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

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

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

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

В собранном виде получился вот такой прибор:
Эмулятор дисковода для Atari на Arduino - 7
Эмулятор дисковода для Atari на Arduino - 8

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

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

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

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

Результат на экране:
Эмулятор дисковода для Atari на Arduino - 9

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

Автор: Коваленко Александр

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js