Pull to refresh

Oldschool 1-bit ZX-Spectrum chiptune на отечественном RISC-микроконтроллере

DIY
KP1878BE1

Вдохновившись топиком 1-битная симфония Тристана Перича откопал в старом хламе пожелтевшую картонку 8-летней давности. Оказалось довольно непросто отыскать файл с прошивкой, залить её в контроллер (LPT-порт? а что такое LPT порт?) и оцифровать звучание, но полученная в результате доза ностальгии стоила того! Слушать результат > (зеркало).


Удовольствие назвать автора композиции и игрушку где она звучала предоставлю комментаторам (и чтоб было видео или картинки!), а сам немного расскажу о технической стороне вопроса.

8-битный RISC микроконтроллер КР1878ВЕ1 выпускался (и до сих пор выпускается) российской компанией Ангстрем. Данный экземпляр имеет на борту 1024 слова памяти команд, 128 байт ОЗУ и 64 байта энергонезависимой памяти. В отличие от контроллеров компании Microchip, набор команд побогаче и выполняются они за 2 такта вместо 4. Сейчас в плане периферии ему далековато до ассортимента тех же Microchip или Atmel, но ядро довольно неплохое. И если я правильно помню, по цене он тоже немного выигрывал у конкурентов.

Процесс портирования аудио-движка, ручной потактовой синхронизации и упихивания его в ограниченные ресурсы микроконтроллера суммарно занял несколько дней, но растянулся на 3 месяца. Почти всё делалось на Спектруме и только компиляция/дебаг выполнялись на работе где был доступ к PC. Видимо действительно есть смысл в выражении «Ограничения стимулируют творчество»?

Монтаж явно не претендует на изящество и эстетическую ценность, но в кругу спектрумистов данная штука неизменно вызывала восторг, потому что они ЗНАЛИ какой это изврат с точки зрения кода:
Demo board

Схема устройства (в классическом ASCII исполнении):
Schematics

Стоит заметить, что оцифрованное звучание несколько отличается от оригинала из-за неточного подбора номинала кварца. В идеале (при 7 МГц) 2 такта работы контроллера должны быть равны 1 такту Z80.

Исходник и бинарный вариант прошивки можно взять здесь.

Отвечаю на вопрос чем всё это прошивалось. Для заливки кода микроконтроллер помимо 5-вольтового питания требует напряжение 12 вольт и трёх линий для передачи данных. Рекомендованная схема программатора кажется была в документации на кристалл, плюс где-то в интернетах была нарыта более простая схема (а может и самостоятельно сделана, не помню). Выглядит в сборе она так (вроде всю пыль стёр :)
Programmator

Подключался он либо к PC через переходник на LPT, либо к Спектруму через самостоятельно выведенный на корпус и ни с чем не совместимый разъём. Управлялся соответственно фирменным ПО под DOS, либо самописной приблудой которая кажется была чем-то лучше и даже содержала простой декомпилятор:
Software



Если я не ошибаюсь, orangefox первым назвал игрушку в которой звучала эта композиция. Это конечно же Savage 3:

Screenshot 1 Screenshot 2

Насчёт автора есть разночтения. В некоторых местах я встречал упоминание Jason C. Brooke, однако как минимум во второй части трилогии упоминается David Whittaker.
Tags:diychiptunezx spectrummicrocontrollerангстрем
Hubs: DIY
Total votes 120: ↑112 and ↓8 +104
Views4.6K

Comments 65

Only those users with full accounts are able to leave comments. Log in, please.

Popular right now

SQL и получение данных
April 16, 202123,100 ₽Нетология
UX/UI дизайнер
April 16, 2021104,900 ₽Нетология
Аналитик BI
April 16, 202180,000 ₽Нетология
Экспресс-курс «IaC Ansible»
April 19, 202125,000 ₽OTUS
Комплексное обучение JavaScript
April 19, 202127,000 ₽Loftschool