
Как уже многие наверное слышали, у меня случилось замечательное событие. Этим летом мне наконец-таки удалось добраться до славного города Менска и передать в ремонт Byteman'у мою очень давнюю покупку «Atari 65XE». Компьютер был приобретён ну ооочень давно и ждал в коробке своего часа. Как выяснилось, поломка оказалась классическая, вышла из строя одна из микросхем памяти и создавала на шине мусор, что для этих моделей оказалось критично и он вообще отказывался запускаться. К счастью у тоже Byteman'а оказалось ведро большая коробка с нужными чипами и после замены компьютер ожил. Так же Byteman выяснил не очень приятный момент. На платы были выкручены в дупель резисторы цветов. Видимо предыдущие владельцы искренне верили, что если крутануть резюки до предела, то картинка появится

Ну вот ремонт позади, компьютер у меня и первым делом выяснилось, что как-то надо в него загружать программы. Беглый поиск в инете дал самое простое решение, а именно проект SIO2PC. Берётся обычная платка на том же алиэкспресе USB2TTL, которая реализует простейший RS232, но в отличии от классического COM-порта, где разность уровней +12в и -12в, здесь уровни реализуются в виде 0в и +3.3в. Далее контакты подключаются к разъему SIO, согласно схемы:
Плата USB2TTL у меня уже была, а вот с коннектором возникли некоторые трудности. Готовых штекеров для ATARI SIO в продаже я не нашел (на тот момент). На ebay и прочих площадках были готовые уже готовые SIO-кабели, но платить порядка €18, что бы затем отчикрыжить вилку, к этому меня судьба не готовила. Так же очень уж не хотелось портить вилку от магнитофона, который мне достался в комплекте с ATARI. Но тут пришла идея напечатать искомый разъём на 3D принтере. К счатью в сети быстро нашлось два чертежа готовых SIO коннекторов. А небезызвестный Aλexander Nihirash с радостью мне в этом помог, за что ему огромнейшее спасибо.
После получения заветных разъёмов, встал вопрос с пинами. Изначальная идея использовать незадействованные пины из разъема магнитофона чуть не провалилась. Как не печально, но судя по ржавчине и позеленевшим контактам предыдущий владелец хранил это явно в каком-то сыром помещении, возможно даже в гараже. При извлечении пинов из разъёма магнитофона, некоторые просто рассыпались ибо сгнили. Стал вопрос где достать новые? Не смотря на почтенный возраст устройства, на том же алиекспресе отыскались знакомые штырьки под кодовым названием — «CH3.96 Molex 3.96 Terminal plug connectors». 100 штук обошлось чуть менее доллара и они действительно оказались точь в точь как пины из магнитофонного штекера.
Про сборку самого разъема особо рассказывать нечего, скажу лишь, что возникли вопросы с пропихиванием пинов в отверстие распечатанного штекера. Не знаю, возможно это погрешность при при печати, а возможно и не совсем точный чертёж, тем более, что автор забыл сделать отверстие под винт с другой стороны. Пины пришлось чуть чуть подточить надфилем, после чего они свободно уже вставали в разъём.
Не буду вас лишний раз грузить работоспособностью RespeQt, а именно эта программа запускается со стороны PeeCee для симуляции работы дисковода. Скажу лишь что по ряду причин меня это не сильно устроило. Кроме того постоянная «привязанность» к пэцэту породила идею использовать что-то отдельное, самостоятельный девайс который бы не требовал бы постоянного подключения.
На сегодняшний день существует достаточно много готовых проектов в виде того же SDrive и клонов, а так же проектов для готовых платформ, по типу Arduino. Один из таких проектов «SIO2Arduno» мне и захотелось попробовать запустить. К сожалению это оказалось не так просто. По началу проект оказался «заморожен» с 2015 года, совершенно не компилировался в современной версии Arduino IDE, а в ходе эксплуатации выяснилось, что функционал реализован не полностью и частично не верно.
В результате «доделки» и правки проекта «SIO2Arduno» мне хотелось создать что-то своё, а за одно разобраться в работе SIO устройств и дисковода в частности. У меня уже была приобретена плата Arduino DUE в комплекте с Ethernet Shield, поэтому мучений выбора подо что писать у меня не было. Кроме того, читая комментарии в коде проекта «SIO2Arduino» об ограничениях более мелких Arduino стало понятно почему автор возможно забросил проект, просто не хватало ресурсов. Так или иначе надо отдать должное автору, с его помощью и с помощью исходников RespeQt стал понятен принцип общения ATARI с устройствами через SIO. А благодаря автору эмулятора Altirra и частности потрясающей документации «Altirra Hardware Reference Manual» стали понятны многие команды и принципы работы.
На сегодняшний день проект «AstartA» позволяет эмулировать дисковод и загружать программы с дискет в формате ATR, так же позволяет запускать с SDCart'ы исполняемые файлы в формате XEX (Atari Executable). Кроме того позволяет эмулировать магнитофон и загружать программы с образа кассет в формате CAS. В дальнейшем планов очень много, хотелось бы реализовать запись дискет, поддержать увеличенную скорость работы дисковода (такое под силу SpartaDOS X), а так же поддержать расширенный формат, полный образ дискет в формате ATX.

Когда-то давно, я видел в работе дисковод для Atari «LDW Super 2000», у которого была цифровая индикация. Сейчас сложно точно сказать наверняка, но предполагаю, что он показывал текущий трек, по крайней мере на этом видео на это похоже.
http://www.youtube.com/watch?v=zEdZpoa2chQ
Поэтому же принципу мне захотелось сделать нечто похожее и отображать текущий трек, на котором находится голова виртуального дисковода. Добавить в проект сдвоенный семисегментный индикатор не составило труда, а вот с отображением есть некоторые трудности. Во первых это чисто техническая, а вторая информационная. Дело в том, что в образах дискет ATR очень мало исходной информации о дискете. О её плотности, формате, количестве секторов на треке можно только догадываться и вычислять опытным путём исходя из размера образа дискеты. Кроме того сам ATARI тоже запрашивает только номер сектора и он может быть в диапазоне от 1 до 720 или больше, в зависимости от формата. А с учётом того, что первые три сектора имеют всегда длину только 128 байт (особенность системы), это всё наводит на своеобразные мысли о необходимости в новом формате дискет.
Кроме того есть мысли по поводу реализации простенькой системы по типу CLI² для TSConf, которая позволила бы монтировать образа командой из консоли, загружать исполняемые файлы, картинки, шрифты прямо с SD-карты. Но это пока только мысли в слух. На сегодняшний день пока это сырая альфа, так сказать проба пера и образа можно монтировать через консоль отладки Arduino. Поддерживаются три команды: cd, dir и mount; соответственно перейти в каталог, отобразить список файлов и примонтировать образ. В ближайших планах поддержать минимум команд SDrive, что позволит управлять виртуальным дисководом прямо с ATARI, как это сделано в проекте «SIO2Arduno».
Пока это всё. Если кому будет интересно, с радостью поделюсь дополнительной информацией, а сам проект доступен на github.