Две макетных платы, которые давно лежат без дела, напомнили историю из советских времен, когда было очень популярно самим собирать различные электронные схемы — образование многим это позволяло, навыки были, а дефицит «товаров народного потребления» только подхлестывал интерес к самоделкам. Спектр домашних конструкций был довольно широким — от квадро-усилителей и виниловых вертушек с тангенциальным тонармом, до индикаторов роения пчел в улье и автоматических выключателей света в туалете.
Особенно популярными были всевозможные электронные часы, а те, что выполнены на индикаторах тлеющего разряда типа ИН12 переживают вторую молодость и сейчас. Детали добывались на предприятиях оборонной промышленности, конструкции описывались на страницах радиолюбительской периодики, вызывая всесоюзный поиск дефицитных микросхем, например, К284СС2 — для аматорских доработок магнитофона системой шумопонижения Dolby B из журнала «Радио» за 1976 год. Некоторые разработки шли в народ прямо из лабораторий различных НИИ и заводских КБ, минуя широкую огласку, и тем самым, придавая вещам эксклюзивность.
Процессорная история
В начале 1986 года я разработал мелодичный квартирный звонок на процессоре К580ВМ80 (советский аналог 8-ми разрядного процессора Intel 8080). В нем было запрограммировано 24 мелодии, при каждом нажатии кнопки дверного звонка звучала новая, выбранная по случайному закону. В то время в быту еще широко использовалась ламповая техника, «однокристалок» не было и в помине, и эта игрушка казалась чем-то космическим и очень оригинальным.

Документацию (схему и прошивку в виде микросхемы К573РФ5) дал мне один знакомый, который работал на киевском НПО «Кристалл», где делали и процессоры, и память. Как потом выяснилось, там и придумали эту игрушку — для молодых людей из Киевского НИИ «Микроприбор» это было одной из форм самореализации: элементная база есть, документация есть, средства разработки — рабочий инструмент всегда под рукой, программатор ПЗУ — не проблема, свободное от работы рабочее время тоже было. Грех не воспользоваться, особенно с учетом того, что дверной звонок на микропроцессоре казался очень оригинальным, а часы к тому времени уже изрядно всем надоели.
Мелодии были двух типов: детские песни из мультфильмов и популярные шлягеры того времени. Все ПЗУ было заполнено ими до отказа. Сама программа занимала байт 100, остальное (около 1,8 КБ) — мелодии. Я на скорую руку сделал платку, при этом умудрился тактовый генератор К580ГФ24 установить зеркально, но устранять ошибку не стал — желание поскорей услышать, как работает настоящий микропроцессор, было сильнее.
Звонок было очень удобно установить в корпусе трансляционного громкоговорителя, используя и динамик и регулятор громкости. Единственное неудобство было в необходимости использования дополнительной кнопки на самом громкоговорителе для принудительного отключения питания, если процессор вдруг зависнет. К счастью, у меня уже был опыт работы с процессорами — я к тому времени с большим трудом, но все же сделал свой радиолюбительский компьютер «Микро-80», поэтому при исправном ПЗУ звонок не сразу, но заработал.
На гостей музыкальный мажордом производил неизгладимое впечатление — некоторые нажимали кнопку по нескольку раз. Звонок проработал на квартире у родителей примерно до 2000 г., потом вышел из строя блок питания и чинить его было недосуг. Да и интересы уже были совсем другие… Звонок я снял, а платы ушли на хранение в дальний ящик. Документацию ценности не представляла, поэтому канула в лету. История эта уже почти стерлась из моей жизни, но случайная встреча с «остатками былой роскоши» освежила в памяти недавнее прошлое.
Вторая молодость
Мне очень захотелось включить это устройство и вспомнить атмосферу молодости. По плате я восстановил принципиальную схему звонка:

При анализе схемы звонка я обратил внимание на то, как изящно разработчики решили проблему минимизации аппаратных затрат. Суть ее в том, что К580ВМ80 — это не однокристалка, а центральный процессор для микро-ЭВМ, пусть и не самый совершенный. Поэтому в его обвязке требуется дешифраторов адреса ПЗУ, порты ввода-вывода, программный генератор случайных чисел и как-то обходить отсутствие контроллера системной шины.
В отсутствии оперативной памяти программное обеспечение не использовало стек, оперируя, не считая регистра-аккумулятора, только тремя регистровыми парами. Замечу, что Stackless-технология в будущем стала востребованной в построении первых BIOS.
Ситуация осложнялась тем, что i8080 и его клоны позиционировались для микрокомпьютеров. Их применение для встраиваемых решений было не самым лучшим выбором. Эту нишу занимал Intel 8048 и его аналог К1810ВЕ48, у которых на борту имелись порты ввода-вывода, таймеры, ПЗУ, небольшое ОЗУ, примитивная система аппаратных прерываний, встроенный тактовый генератор. Они требовали всего одну линию питания +5В.
У К580ВМ80 всего этого нет, и разработчики игрушки прибегли к ряду технологических трюков: им пришлось использовать микросхему формирователя тактовых последовательностей К580ГФ24 (Intel 8224), что было оправдано спецификой процессора. Он был оснащен встроенной схемой формирования сигнала Reset (самое интересное, что вместо кварца в данном случае прекрасно работает конденсатор 8,2 пФ), хотя этот чип достаточно чувствителен к временной диаграмме тактовых фаз и использует сигнал с амплитудой +12В.
Порты вывода были реализованы очень остроумно — сигнал мелодии формируется командами разрешить прерывание и запретить прерывание. Это позволяет сигнал разрешения прерывания INTE переводить в состояние логической «единицы» или логического «нуля». Вводя между командами прерывания различную во времени задержку, можно было генерировать различные мелодии.
Команда на выключение питания после отработки мелодии подается по команде процессора HALT (видимо, в команде разработчиков Intel были немцы), на выходе процессора WAIT при этом формируется высокий уровень и реле выключает питание. Кнопка звонка подключена параллельvно контактам реле, которые в свою очередь включены в разрыв первичной обмотки трансформатора питания.
Дешифратор ПЗУ сделан при помощи одного адресного вывода А15. Если там «0» (процессор К580ВМ80 начинает выполнять команды с нулевого адреса), то ПЗУ подключено к шине данных. При обращении к адресам выше 32767-го ПЗУ переводится в 3-е состояние. Это сделано для того, чтобы по шине данных D0 можно было принимать сигнал от аппаратной части генератора случайного числа, собранной на транзисторе VT1.
Генератор случайных чисел работает следующим образом: программно организованный счетчик номера мелодии с нуля в цикле увеличивает на 1 свое состояние, и на каждом шаге приращения содержимого счетчика проверяется состояние разряда D0. При этом на адресном разряде A15 устанавливается «1» . Транзистор VT1 через резистор R5 открыт, на входе D0 присутствует высокий лог уровень через резистор R4, при этом конденсатор С2 постепенно заряжается от переменного напряжения через диод VD3, и резисторы R3 и R5, противодействуя заряду конденсатора С1. В момент закрытия транзистора (сигнал сброса уже должен пройти) на линии данных D0 появляется логическая «единица», счетчик останавливается при этом, успев многократно переполниться, и оставшееся число в счетчике используется в качестве номера воспроизводимой мелодии. Поскольку при включении фаза питающего напряжения приобретает случайное значение, — напряжение в сети может колебаться — и номер мелодии будет случайным, поскольку конденсатор С2 каждый раз будет заряжаться до отпирающего напряжения за разные промежутки времени относительно сигнала сброса. Метод капризный и нестабильный, но достаточно просто реализуем аппаратно. При этом, как оказалось впоследствии, не все мелодии были равновероятны. Но, как известно, за все нужно платить и такая особенность стала расплатой за простоту реализации. При подключении питания звонок заработал сразу, и я услышал давно забытые мелодии.
Post Factum
Один знакомый в конце 80-х во время кооперативного бума захотел попробовать выпускать этот звонок серийно, но к тому времени уже появились CMOS-микросхемы 1830ВЕ51 (Intel 80C51) и PIC-контроллеры со сверхмалым токопотреблением, позволяющие делать звонок на двух пальчиковых батарейках и одной микросхеме. Понятно, что использование i8080 в таких условиях не могло иметь коммерческого успеха в принципе. Тем не менее, опытный образец все же был изготовлен, где из пижонских соображений стоял настоящий элемент памяти i2716 и процессор TMS8080A от Texas Instrumets, но в серию это устройство пойти не могло по соображениям рентабельности.

Макет на TMS8080A тоже достался мне, и он оказался работоспособным. Благодаря наличию панельки там можно было проверить запасы старых процессоров К580ИК80 — все они оказались исправными.
«Коммерческая» плата была разведена без ошибок, имела отличную от моей топологию, и довольно качественную для тех времен металлизацию отверстий. Единственное, что мне не понравилось в этой плате — это слишком тонкие дорожки, особенно по питанию. Но, как ни странно, все работает. До сих пор работает. Эта музыка теперь будет длиться вечно…