Железные призраки прошлого

Компьютерная история

СтатьиСтатьиСтатьи
Cтарое железо и софт

МузейМузейМузей
Старые компьютеры

ФорумФорумФорум
Полигон призраков

ОбщалкаКонкурсыКонкурсы
Статьи и фото



Искать на сайте:
Маленький, умелый, добрый, самодельный...
(одноплатный контроллер на процессоре 6502 с терминалом)



Эта статья прислана на конкурс.

Андрей Воронцов aka RW6HRM

...а начиналась эта история очень, очень давно. В её начале был "Специалист", которого сменил "Спектрум", плавно перешедший в ЕС-1840, и далее, после небольшой паузы, в первопень и далее по списку. Но, несмотря на всю мощь современной техники, чего-то не хватало, чего-то маленького, удобного, гибкого, способного приспосабливаться к моим требованиям, не занимающего много места и - обязательно! - без вентиляторов. Ах да, и это я должен был собрать самостоятельно. А ещё угнетало понимание того, что чего-то не знаю, что-то упустил ещё тогда, в начале 80-х, когда я не то что в компьютерах, в цифровой логике ничего не соображал.

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

...что я несу... Ничего не хотелось никому доказывать, просто назрела потребность наверстать упущенное тогда, в восьмидесятых. Наверстать то, чего не понимал тогда, наверстать то, чего у нас попросту не было, но уже вовсю культивировалось "там". Ну и получить с этого не только профит, но и немного удовольствия.

Начало положил полумёртвый АОН на Z80, которые к тому времени стали никому не нужны. Платка была вынута, отмыта, запущена... но необходимость с нуля писать софт и малое количество портов ввода-вывода убили идею на корню.
Следующим шагом на пути к достижению цели стал обычный "Денди". Да, та самая простенькая игровая приставка, которая, тем не менее, практически соответствовала моим требованиям, и по сути являлась универсальным контроллером с открытой внешней архитектурой. Жаль, что её программирование было немного заморочено в части вывода на экран, да и необходимость постоянной прошивки ПЗУ при отладке программ не было плюсом к гибкости решения. Плюс расточительное отношение разработчиков к распределению памяти не оставляло возможностей на более-менее серьёзное применение устройства. Тем не менее это было моим первым плотным знакомством с архитектурой процессорного комплекта 65хх.


Тот самый процессор
Тот самый процессор


Раньше я знал, что такая серия существует, теоретически был знаком с процессором 6502, и чем-то он мне нравился... простотой что-ли, какой-то аурой... Да и отсутствие в его именовании цифры "восемь" тоже нравилось, ибо восьмёрка мне почему-то напоминает знак бесконечности - бесконечности попыток разработки систем на более известных на 1/6 части суши процессоров. Надо же на чём-то остановиться. Программная поддержка 6502 уже была в наличии в связи с удешевлением доступа к Интернету.

Итак, началась неспешная сборка. За многое я благодарен форумчанам с "Полигона Призраков", часть деталей была приобретена именно с их помощью. Корпус куплен походя в магазине, блок питания взят от почившего в бозе коммутатора. Остальное добро уже долгое время пылилось в баночках из-под сметаны. Всё это лежало и ждало своего часа.

Составить общую схему применительно к имеющейся комплектухе не составляло особого труда. Поскольку процессор 6502 не имеет отдельной адресации к портам ввода-вывода, хотелось поаккуратнее расходовать память, ещё был свеж в памяти "Специалист", где на каждое устройство отводилось аж по два килобайта памяти. Немного перефразируя классиков, было решено, что по 64 байта хватит всем и каждому. Для простоты конструкции делать встроенную индикацию и органы управления не хотелось, тем более что ещё с семидесятых годов и до Ардуино включительно существует классный способ коммуникации с контроллером - терминал. Ныне большей частью это программный довесок, но можно начать и с этого, тем более, что в этом случае программная часть контроллера упрощается и он может быть подключён к чему угодно, был бы последовательный порт в наличии.

Теоретически и на бумаге схема была готова. Анализ существующих конструкций показал, что думал я верно, поскольку везде и всё было практически аналогично (за исключением, разумеется, расходования памяти). Оставалось немного - программное обеспечение. Простая заливка скетчей, как это делается сейчас, не представляла интереса, поскольку не позволяла отлаживать программу "по месту". Значит, язык программирования должен быть вшит в контроллер. А поскольку мы решили наверстать упущенное в молодости, то и софт должен быть таким же, как и тогда, в конце восьмидесятых. А это - правильно! - тот самый Бейсик, написанный Биллом Гейтсом, для первых восьмибитных процессоров в середине семидесятых. И такой вариант обнаружился на страничке Гранта Сирла и был применён, разумеется с адаптацией под оригинальную адресацию.


Вид собранной платы контроллера
Вид собранной платы контроллера


Поскольку всё окончательно срасталось в одну общую концепцию, ничего иного не оставалось, как начать собирать конструкцию в железе. Заняло это не более пары дней и вот оно, первое включение! Что-то пытается сказать, но непонятно... Ай, перепутал же распайку шины данных! Хорошо, что вязал МГТФ-ом, переделалось легко. И вот оно, чудо из прошлого - контроллер меня приветствует и готов работать!


Работа с контроллером через программу ''Гипертерминал'' под Windows XP
Работа с контроллером через программу "Гипертерминал" под Windows XP


Итак, что получено в результате: конструкция из конца семидесятых на более привычной электронной базе. 47 килобайт ОЗУ, 64 килобайта ПЗУ (4 переключаемые страницы по 16К), последовательный порт для общения с оператором через терминал или терминальную программу, три восьмибитных порта для управления внешним миром, два порта таймера и встроенный Бейсик. Для начала вполне достаточно. Ах да, на всякий случай надо добавить буферы шин данных и адреса, авось разрастаться будем. Вот и получился микрокомпьютер, сравнимый по простоте с базовым вариантом "ЮТ-88", но на голову выше по своим возможностям.

Ну вот, уже можно играться, применять в домашней лаборатории и не только. Можно и "умный дом" сделать, но не хватает одной важной вещи, а именно часов реального времени. Выбирать долго не пришлось, благо что в подшивке журнала "BYTE" уже было описано такое устройство; в довесок оказалось, что приобрести достаточно древнюю зарубежную микросхему гораздо проще и быстрее через Интернет, нежели полумифическую отечественную 512ВИ1. Но данное приобретение имело оборотную сторону - теперь частота работы конструкции не должна превышать 1 МГц (а с процессором 65С02 могли бы разогнаться до 5!), иначе часы переставали подавать признаки жизни. Подумав, решил, что невысокая (по нынешним меркам) фиксированная тактовая частота есть не очень высокая плата за повышение функциональности конструкции, тем более что для контроллера и большинства планируемых задач этого вполне достаточно.


Микросхема часов реального времени
Микросхема часов реального времени


...стоит остановиться и упомянуть о следующем. Как-то не совсем приятно было, что контроллер получился безымянным, учитывая моё отношение к нему. И тут всплыло в памяти воспоминание о бабушке, которая называла меня Аюшей (упрощённо-коверканное Андрюша). Так что, уважаемая Наталия Ивановна, я тебя до сих пор люблю и помню, почему и решил назвать конструкцию "Аюшей" в память о тебе...

Внезапно в Сети попалась книга Стивена Леви "Хакеры - герои компьютерной революции". Вот тут-то меня и накрыло, ибо всё, чем я занимался с контроллером, было по сути описано в этой книге, весь дух того времени каким-то образом материализовался в "Аюше". Решено было не останавливаться и идти дальше.

Поскольку программировать "Аюшу", как и работать с ним, приходилось с дополнительного компьютера, который шумит и превосходит его по своей мощности, то экстремальная панкуха на ниве даунгрейда в виде отдельного терминала ну просто просилась на свет. Дабы соблюсти каноны, видеовыход должен был производиться на обычный телевизор, клавиатура должна быть отдельной, ну и сохранение/загрузка программ должны быть обеспечены без дополнительных драйверов на самых простых и дешёвых носителях. Всё это должно общаться с контроллером (и не только с ним) про обычному последовательному порту, дабы контроллеру было абсолютно безразлично, куда уходят данные (на монитор или принтер) и откуда они приходят (с клавиатуры или внешнего носителя).

Как обычно, всё уже было придумано до нас. Сначала разобрались с внешним носителем, которым может быть ленточный или твердотельный магнитофон/диктофон. "Канзасский стандарт" записи на ленту и определил скорость обмена данными будущего терминала - 300 бит в секунду. Избалованной части публики это может показаться неприлично мало, но уверяю вас, этого вполне достаточно, поскольку самая тормозная часть компьютера обычно сидит перед ним и не способна набирать текст со скоростью 33 знака в секунду. Также, поскольку у нас простой текстовый режим вывода на экран, такой скорости также вполне достаточно. На чём и порешили.

Видеовыход терминала для упрощения сборки было решено сделать неканонично, на одночиповом контроллере, иначе пришлось бы ваять древнего прожорливого монстра как минимум в 30 корпусов. Узел на Atmega8 от Jan Baare вполне подошел, тем более, что это была единственная схема, позволяющая работать на скорости в 300 бит/сек. Да, вполне возможно было собрать весь терминал на этой микросхеме, но мы же не ищем лёгких путей?


Общий вид платы терминала в сборе
Общий вид платы терминала в сборе


С клавиатурой было сложнее. Для начала хотелось использовать стандартную 101-клавишную АТ-модель с конвертером на PIC-процессоре, однако последний в наших лабазах не валялся. На скромный клич к обществу о возможности приобретения отдельных клавиш пришел ответ, и на свет был извлечён нетронутый, нераспечатанный с советских времён набор маньяка для сборки клавиатуры "Радио-86"! Да ещё и с полностью механизированной клавишей "пробела"! Радости не было предела, и началось ваяние ASCII-клавиатуры, как это и должно было быть в конце семидесятых. Отдаю должное зарубежным любителям-олдскульщикам, они выразили повышенный интерес к этому узлу, поскольку такой тип клавиатур применялся во многих моделях старых компьютеров, в том же Apple I/II.


Блок клавиш в сборе
Блок клавиш в сборе


Семибитный код с клавиатуры получен, узел преобразования параллельного кода в последовательный (этакий эмулятор СОМ-порта) также был разработан, причём в двух вариантах - на регистрах и на мультиплексоре. По работе больше понравился последний, который и занял окончательное место в терминале.

Узел записи программ на магнитофон был скопирован с набора, выпускавшегося в то время. А вот с чтением пришлось повозиться, испытать несколько вариантов, пока не остановился на частотном компараторе, описанном в журнале "Радио" где-то в середине семидесятых. Две микросхемы, простая настройка... и представьте моё удивление, что оказывается, выпускался зарубежный набор, сделанный по аналогичной схеме!

Корпус терминала, как и повелось, был собран из подручных материалов, а именно из остатков фанеры, что выкидывали в соседнем офисе после ремонта. Вспомнил, чему учили в школе и институте, замерил, начертил, выпилил, отшкурил, зашпаклевал, покрасил,.. Торопился, уж очень хотелось увидеть всё в сборе. Собрал, подключил, уфф...


Конструкция в сборе
Конструкция в сборе


Поскольку железо без софта никому не интересно, то после сборочных работ озаботился адаптированием программного обеспечения для "Аюши", чем и продолжаю заниматься. В частности, уже можно поиграть:


На фото - игровой момент программы ''Реверси''
На фото - игровой момент программы "Реверси"


Потренироваться в приёме текстов на азбуке Морзе:




Вспомнить о демке более позднего времени - Звёздочки Нортон Коммандер:




Вообще загрузка программ на "Аюшу" имеет некоторый игровой момент, поскольку всё, что в данный момент читается с ленты, тут же отображается на дисплее, что позволяет визуально определять правильность загрузки (чего не позволял нам ни один домашний комп нашей молодости). На следующем видео - момент загрузки программы конвертера из децимальной системы счисления в шестнадцатеричную и наоборот. Программа, кстати, имеет автостарт:




"Аюшей" можно управлять и удалённо, с помощью конвертера COM->ETH, подключаясь к нему через виртуальный СОМ-порт, даже через сеть Интернет!


Подключенный к контроллеру конвертер последовательного порта в сетевой интерфейс.
Подключенный к контроллеру конвертер последовательного порта в сетевой интерфейс.


Последней ступенью из сборки капитального "железа" должен стать аналоговый графический монитор с разрешением 256х256 на базе осциллографической трубки. Не знаю пока, зачем, но это - в планах...

При сборке "Аюши" я получил хорошую и добрую моральную поддержку от интернет-сообщества, как от форумчан "Полигона", так и от форумов NedoPC и zx-pk.ru. А пара коротких публикаций на Хабре полностью развеяла мои сомнения в том, нужна ли моя разработка вообще - всё было принято по-доброму, с долей необходимых замечаний, за что я всем очень благодарен. Старое не всегда нужно выкидывать и забывать, оно может приносить пользу в меру своих сил, а также вызывать добрую ностальгию.


Более подробно ознакомиться с проектом можно тут.

Тема для обсуждения на форуме "Полигона Призраков".

Группа для обмена опытом "Вконтакте".



Обсудить статью в специально созданной ветке форума. Эта статья прислана на конкурс.

© Текст, фотографии - Андрей Воронцов aka RW6HRM

© Железные призраки прошлого - 2015 г.

Опубликовано 8.05.2015 г.


Дополнения или поправки на phantom@sannata.ru

 


На главную страницу сайта

На страницу конкурсов



Авторские права и условия копирования материалов