"Аюша" - контроллер-компьютер на процессоре 6502

 "Ayusha" 6502 SBC - short english version

 


Успех заново возрождённого компьютера "ЮТ-88", любовь к процессору 6502, которому очень не повезло в нашей стране, необходимость наличия программируемого контроллера для различных целей и просто желание попаять, привело к созданию этого проекта. Сразу оговорим несколько вопросов, дабы к ним более не возвращаться.


1. Зачем плодить ещё одну схему, коих и так достаточно? Ответ - хотелось что-то создать с нуля. Ну почти с нуля. Как в железном плане, так и в программном.


2. Почему 6502? Ответ - большинство подобных схем построено на процессорах 8080, Z80, PIC/Atmel-контроллерах и прочих ардуинах, а 6502 как-то в наших краях не особо известен. Однокристалки и ардуины - это в каком-то смысле скучно, 8080 требует трёх напряжений питания, Z80... ну просто не хочется. Делать плату типа Maximite также нет интереса, ибо это вещь в себе, не имеющая возможностей к расширению.
Как процессор, 6502 наголову превосходит любой восьмибитник, несмотря на низкую тактовую частоту. Он имеет 258 регистров памяти (конечно, 256 из них - внешние) и простую систему команд. Микропроцессорный комплект 65хх настолько мощный и универсальный, что 580-я серия смотрится тупо убогой.
Конечно, 6502 несколько необычен с точки зрения современного программиста. Он имеет страничную адресацию памяти, порты ввода/вывода, отражённые на память (а не в отдельном адресном поле, как в 8080 и Z80), некоторые ограничения в применении команд переходов, но лёгкость программирования и множество наработанных программ превалируют. Да, мы пролетаем мимо СР/М, но так ли это важно?


3. Зачем ещё один комп без софта? Ответ - софта на 6502 более чем достаточно. Плюс планируемая схема должна работать под управлением обычного Бейсика, что, согласитесь, гораздо удобнее, нежели использование Си-подобных языков и Ассемблера. Скорость работы? Достаточная для большинства возможных приложений.


4. Если нужен управляющий контроллер, почему бы не взять *дуину/Малину? Ответ - давайте сразу определимся с вашей ориентацией. Если вам хочется сразу подёргать пины или поморгать светодиодиком, то можете закрыть эту страницу и покупать собранный контроллер. Мне же интересно знать не только софт, но и железо, на котором он работает.


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


В качестве основы была использована схема простого компьютера Гранта Сирла (https://searle.x10host.com/6502/Simple6502.html). Однако в опубликованном виде эта схема, равно как и различные одночиповые поделки типа Максимайта, годна разве что только "на поиграться", более ни на что полезное схема не годится. То есть для пользы дела контроллер не только должен общаться с внешним миром посредством терминала, но и ощущать его и пытаться этим миром управлять. Значит к простой схеме необходимо добавить какие-то порты ввода-вывода. Это те же самые пины и светодиодики.
Далее, оригинальная схема не блещет экономией памяти, имея упрощённый декодер устройств ввода-вывода. Да, это недостаток процессора, о чём упоминалось выше, значит немного усложним декодер (это как раз и вылезло боком при настройке). Заодно и памяти добавим.
Возникало желание собрать контроллер как из кубиков, из нескольких частей, дабы иметь возможность сразу использовать собранное и добавлять что-то новое по мере необходимости. Но, с одной стороны вид полупустой макетки, с другой стороны желание сразу получить что-то полезное, заставило более тщательно проработать всю концепцию.


Итак, сборка контроллера будет происходить в несколько этапов.
1. Начальный блок. Имеет процессор, 47К ОЗУ, 16К ПЗУ, асинхронный порт, декодер адресов, порт ввода-вывода и трёхканальный таймер. На этом этапе можно не только протестировать блок с помощью терминальной программы и поиграться со встроенным Бейсиком, но уже и подключить контроллер к чему-либо, написав управляющую программу, или использовать в качестве звукового генератора.
На этом этапе проектирования пришлось подумать о выборе чипа портов ввода-вывода. Выбор был широк: 580ВВ55, 6522 и AY-3-8910. Сначала склонялся к последнему, ибо получаем два порта плюс навороченный звуковой генератор. Но сложность программирования генератора и невозможность использования его для целей, к примеру, синхронизации высокочастотного синтезатора, заставила временно его отставить в сторону. Чип 6522 просто сказка, это и два параллельных порта, и таймер, и последовательная передача данных, и софта под него просто немеряно.., но со всем этим богатством необходимо долго разбираться, плюс к началу сборки этих чипов у меня ещё не было в наличии. Пришлось также учесть, что если кто-то и решит собрать этот проект для себя, то такого красавца, как 6522, под руками отечественного пользователя может и не оказаться. Посему остановился на кондовом 580ВВ55, получив три порта ввода-вывода с простейшим вариантом программирования оных. Таймер был компенсирован таким же кондовым 580ВИ53, разведённым с учётом возможного каскадирования счётчиков (цели могут быть в дальнейшем разные).


2. Второй этап. Подключение внешнего дисплея и клавиатуры. Можно просто собрать терминальный клиент на двух AVR'ках дабы забыть о подключении к "нормальному" компьютеру для программирования контроллера, но, если контроллер планируется перевести из статуса "контроллер" в статус "компьютер", лучше использовать контроллер 6538 для видеовывода на обычный PAL'овский телевизор и 6522 в качестве контроллера матричной клавиатуры или PIC/AVR-переходники для ASCII-клавиатуры. Будем иметь псевдографический экран, полностью совместимый с игровой приставкой "Денди". А дополнив собранное AY-3-8910 можно получить нормальную игровую машинку конца 80-х. Хотя, если планируется всего лишь отвязать котроллер от внешнего "программатора", то можно использовать одно/двухстрочные ЖКИ-дисплеи и клавиатуру из малого числа клавиш (сделан внешний терминал с кассетным интерфейсом).


Вопрос сохранения/ввода данных пока обдумывается. Можно вспомнить о кассетном магнитофоне (сделано), можно собрать SPI65-девайс для подключения SD/MMC-карт. Но уже на первом этапе загружать и сохранять программы в текстовом виде возможно через терминал.
Таким образом, от обычного контроллера вполне возможно дойти до нормального компьютера начала 90-х годов, с лёгкостью портируя на него множество известных игровых и прикладных программ.
 

1. 6502 SBC - описание схемы и фото собранного экземпляра (обновлено 25.10.14)

2. Корпус и коннекторы

3. Модификация узла выборки ОЗУ

4. Модификация узла СОМ-порта для скорости 300 Бод

5. 300 Бод терминал и кассетный интерфейс (обновлено 26.08.14)

6. ASCII - клавиатура (обновлено 10.08.14)

7. RTC часы реального времени

8. Программное обеспечение - встроенное и утилиты (обновлено 30.04.2015)

9. "Теневое" ОЗУ

 

Небольшое видео процесса загрузки программы на "Аюшу" и работа с ней (конвертация HEX в DEC и обратно): http://www.youtube.com/watch?v=E2U7gbjzMpI
 

Ссылки к прочтению.

1. http://www.6502.org/

2. http://wilsonminesco.com/6502primer/65tutor_intro.html

3. http://www.obelisk.demon.co.uk/6502/index.html

4. http://pscd.ru/info/2183-programmirovanie-processora-6502-programming-the-6502.html

5. http://www.emuverse.ru/wiki/MOS_Technology_6502

6. http://www.emuverse.ru/downloads/datasheets/processors/6502/UM6502.pdf

7. http://www.emuverse.ru/downloads/datasheets/processors/6502/W6502S.pdf

8. http://www.atariarchives.org/mlb/

9. http://zx.pk.ru/showthread.php?t=23276 - обсуждение данной схемы.

10. http://www.nedopc.org/forum/viewtopic.php?t=10721 - обсуждение схемы на ином форуме

11. Статья на Хабре с описанием контроллера

12. Статья на Хабре с описанием терминала

13. Конкурсная статья на Полигоне Призраков

 

На главную...

 

Powered by WebRing.