Как я компьютер «Радио 86-РК» настраивал
Промт: Старый компьютер, рабочий, Ленин, ретро стиль
Всем привет! Расскажу вам о том, как я собирал (и тут же ремонтировал) ретро-компьютер на базе Радио86-РК. Данной разработке через некоторое время исполняется четвёртый десяток! А процессору Intel 8080, на базе которого она сделана — все 50 лет. По ходу дам пояснения, как можно собрать аналогичное изделие, сколько оно стоит (по состоянию на 2023 год), с какими проблемами я столкнулся.
Приступим!
1. Печатная плата
В оригинале компьютер часто собирался на макетной плате. Для экономии времени была куплена готовая печатная плата. Её чертежи, схему, полезные файлы выложил как-то SergeyLLL: https://zx-pk.ru/threads/27583-radio-86rk-novaya-plata-umenshennaya.html
Можно заказать такую плату у китайцев, однако, в этом нет необходимости — по данным Gerber-файлам её заказали уже все, кому не лень. Поэтому я связался с человеком, который заказывал партию из 5 штук, и он отправил мне одну. С доставкой она обошлась мне в 1000 рублей. Узнать данную плату можно по характерной надписи «RADIO-86RK (RU5_32KB)». Что означает, что выполнена она по оригинальной схеме, но с небольшим изменением — чипы РУ3 заменены на РУ5, чтобы уменьшить вероятность выхода их из строя при пропадании напряжений питания.
Печатная плата от SergeyLLL, массово продающаяся на различных площадках
2. Радиодетали
Часть компонентов мне досталась от знакомого компьютерщика, часть — пришлось докупить. Учитывая имеющиеся у меня детали, весь комплект недостающих микросхем обошёлся мне в 1200 рублей. Если же набирать с нуля — данные детали обойдутся примерно в 2500 рублей. На текущий момент (2023 год) эти детали не являются дефицитными, однако, найти все компоненты в одном месте может быть трудновато — например, я случайно заказал регистр «К561ИР12А» вместо «К589ИР12». Несмотря на, казалось бы, похожую маркировку, данные микросхемы абсолютно разные как по устройству, так и по назначению. Я уже, было, подумал что мне придется делать ещё один заказ — однако, случайно в закромах откопал какой-то польский его вариант. К тому же, как я позже убедился, его можно будет заменить на аналоги (ИР22 и т.п.), так как часть его логики не задействована.
Давайте установим детали. Для удешевления процесса, пришлось нарезать широкие панельки из имеющихся у меня узких. Впрочем, на работоспособность это не повлияло. Я устанавливал панельки для тех микросхем, в которых у меня были сомнения, и которые я не мог проверить отдельно. К слову, для проверки мелкой логики, я написал небольшой скетч: https://github.com/ritsudo/LogicICTest. Он помогает проверить простую логику (ЛЛ, ЛН) с помощью обычного Arduino — микросхема устанавливается на макетную плату, подключаются питание и 3 проводка, и нажимается «Reset». На терминале выводится таблица истинности, и пишется, исправна ли данная микросхема. Устройство очень простое, но с его помощью можно быстро проверить мелкую логику, после чего без опаски запаять её на плату, сэкономив панельку и улучшив тем самым качество соединений в схеме. А вот DIP-40 запаивать сразу в плату не рекомендуется.
Подгонка панелек, запайка той логики, которая была проверена
После чего соберём схему полностью:
Собрано 80% схемы
Также, надо не забыть поставить перемычки «RU5D» и «SV1». Первая предназначена для 14 разряда ОЗУ (устанавливается на D1), вторая — для банкования ПЗУ знакогенератора (разряд A10 — устанавливается в 0, либо можно записать два шрифта или кодировки, и менять их данной перемычкой).
3. Прошивка ПЗУ, подключение кабелей
Данные для ПЗУ (MON и FONT) прилагаются в архиве к схеме. Их можно прошить либо промышленным программатором, либо с помощью Arduino Uno/Mega, что я и сделал.
Первоначально у меня не было нужных микросхем ПЗУ (на 1 и 2 килобайта), поэтому пришлось пойти на хитрость, и урезать более ёмкие имеющиеся у меня микросхемы, занулив у них старшие разряды адреса. Выглядело это не совсем красиво, но работало.
По поводу питания — основная часть схемы питается от 5 Вольт. Но напряжение -5В и +12В нужно только для процессора (так как ОЗУ у нас РУ5), а напряжение +12В — ещё для логики микросхемы ГФ24 (тактовый генератор). Поэтому для тестов я просто соединил несколько блоков питания (зарядок), и включал по очереди — сначала -5В, затем 5В, затем 12В, а выключал в обратном порядке. В дальнейшем данное нагромождение можно заменить на любой подходящий блок.
Итак, заполненная плата:
Собранная плата с прошитыми микросхемами
4. Первое включение
К видеовыходу я подключил маленький черно-белый телевизор с AV-входом, который валяется у меня с незапамятных времён. Подключил видео, все питания, нажал «RESET», и…
На экране различный символьный мусор
На экране мелькающий мусор, надписи «Радио-86 РК» нет. Через несколько минут даже эти пиксели пропали. Остался просто мигающий курсор на сером фоне:
Эмпирически было выяснено следующее:
— Если вытащить ОЗУ (хотя бы одну микросхему), курсор пропадал
— Если вытащить D20 (ВВ55), курсор начинал сдвигаться вправо после запуска.
— Если вытащить D7 (ИР12), ничего в работе схемы не менялось
Следовательно, какие-то процессы там происходили. Однако, предстояло выяснить, в чём же именно заключается неисправность.
5. Подготовка к ремонту. Пишем тестовое ПЗУ
Для дальнейшей наладки понадобилось изготовить несколько приспособлений и доработок. Начал я с того, что надо было изготовить ПЗУ с тестовой программой. Данная программа приводится на стр. 30 журнала «Радио» №7–1988 г. Она должна инициализировать периферию, после чего заполнить экранную область символами. Это нужно для проверки работоспособности процессора, ОЗУ, контроллера ПДП и видеоадаптера.
Привожу исходный код данной программы:
;Программа для наладки РАДИО-86РК
VG75 EQU 0C000H
VT57 EQU 0E000H
VV55 EQU 8000H
ORG 0F800H
JMP BEGIN
;Инициализация КР580ВГ75
BEGIN: LXI H,VG75+1
MVI M,0
DCX H
MVI M,4DH
MVI M,1DH
MVI M,99H
MVI M,93H
; Инициализация КР580BT57
MVI A,80H
STA VT57+8
LXI H,VT57+4
MVI M,0D0H
MVI M,36H
INX H
MVI M,23H
MVI M,49H
; Старт ПДП
MVI A,0A4H
STA VT57+8
; Заполнение экранной области ОЗУ
LXI H,3600H
LABEL1: MOV A,L
ANI 7FH
MOV M,A
INX H
MOV A,H
CPI 40H
JNZ LABEL1
; Старт отображений
MVI A,27H
STA VG75+1
END
Данная программа записывает область от 3600 до 4000, что актуально для 16КБ версии «Радио», но и на 32КБ тоже заработает. Привожу, также, собранный Hex-файл данной программы, который можно прошить в ПЗУ начиная с нулевого адреса. Запрограммировать надо, в общем-то, 81 байт:
C3 03 F8 3E 8A 32 03 80 21 01 C0 36 00 2B 36 4D
36 1D 36 99 36 93 3E 80 32 08 E0 21 04 E0 36 D0
36 36 23 36 23 36 49 3E A4 32 08 E0 21 00 36 7D
E6 7F 77 23 7C FE 40 C2 2F F8 3E 27 32 01 C0 21
00 80 36 7F 7E 07 77 3A 01 80 3C C2 47 F8 C3 44
F8 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Если у кого-то возникнет желание собрать программу самостоятельно, можно воспользоваться онлайн-ассемблером:
https://www.asm80.com/
На нём же можно получить дамп. А собранную программу проверить на онлайн-эмуляторе:
https://rk86.ru/
Вышеприведённая программа должна выдать нам вот такой результат на экран:
Но, как мы видим, после установки ПЗУ с данным кодом на нашу плату ничего подобного нет. Экран абсолютно пуст.
6. Подготовка к ремонту. Делаем доработки
Первая доработка — на ПЗУ с тестовой программой надо вторым этажом установить шинный формирователь и светодиоды. Это поможет нам просмотреть, что происходит на линиях данных.
«Просмотрщик шины данных» на КР580ВА86
Вторая доработка — необходимо сделать надстройку для генератора D1 (ГФ24), которая позволит запускать процессор в статическом режиме. Данная схема авторами названа «Шагатель», и есть в журнале «Радио» 07–1986.
«Шагатель» на К155ТМ2
После этого можно попытаться вновь запустить программу. Как можно видеть, при нажатии на кнопку «шагателя» на просмотрщике появляются различные значения.
Значение «C3» на шине D0-D7
Их можно сравнить с приведённой в журнале таблицей (стр. 31, №7–1988). Рекомендую пошагово отмечать правильность выполнения инструкций.
Впрочем, все инструкции с данного листа выполнились верно. Поэтому пришлось пройтись по тексту статьи о наладке. Проверяя правильность выполнения инструкций мультиметром на различных выводах, я дошёл до места, в котором обнаружилось расхождение.
7. Ремонт компьютера. Суть проблемы.
Данное место объяснено не очень подробно — недостающую информацию пришлось извлекать из документов на микросхемы ВТ57 и ВГ75.
Наша тестовая программа работает следующим образом:
1. Программируются контроллеры
2. Экранная область ОЗУ заполняется символами
3. В самом конце дается команда на старт ПДП «старт отображений»
В данном месте статьи предлагается сымитировать включение ПДП, подсоединив + питания на 17 ножку ВТ57, запустив тем самым ПДП и сымитировав поступивший запрос от видеоконтроллера.
Для того, чтобы разобраться, как это влияет на работу устройства, не лишним будет также ещё раз взглянуть на блок-схему компьютера:
Вкратце работу проблемного узла можно описать следующим образом:
1. Видеоконтроллер ВГ75 делает запрос на контроллер ПДП
2. Контроллер ПДП приостанавливает процессор
3. Контроллер ПДП извлекает данные из ОЗУ и устанавливает их на шину
4. Видеоконтроллер принимает данные, когда ему подаётся сигнал WR (10 вывод).
Проблема возникает между 3 и 4 этапом. Сигнал WRB устанавливается двумя устройствами:
— Процессором, при записи положения и вида курсора
— Контроллером ПДП при готовности экранного байта к записи в видеоконтроллер
Для прохождения обоих сигналов установлен элемент «D4–1». Как мы могли видеть при запуске, курсор успешно устанавливается и сдвигается, следовательно, линия WR на ВГ75 исправна. ПДП работает, но нет сигнала на его выводе 1. Запись в видеоконтроллер не осуществляется — поэтому символ извлекается, но мы не видим его.
При этом, все условия для того, чтобы данный сигнал выходил, имеются. Я сделал предположение о том, что данная ножка просто могла выгореть в результате действия статического электричества, когда микросхема хранилась. Косвенно это подтверждалось тем, что если вытащить данную ножку, на работу схемы это не оказывало влияния. Пришлось дозаказать замену микросхеме ВТ57, после чего попробовать включить компьютер снова.
8. Результат трудов
Конечно, было интересно, правильно ли я определил неисправность. После 10 дней томительного ожидания, микросхема прибыла, и. включаем
Изображение совпадает с предполагаемым (с вывода эмулятора)
Отлично! Проблема устранена. Теперь можно попробовать убрать все надстройки, и запустить штатную программу «монитор».
РАДИО-86РК
Конечно, картинка немного выходит за рамку экрана, но это косит старый телевизор. Для того, чтобы ввести данные в компьютер, понадобилось ещё напаять резисторы 2К на выходные порты D20 (B и C). После чего стало можно ввести данные. Интересный факт — если вытащить данную микросхему, производится автоматический ввод символа «Яблочко», и сдвиг курсора вправо, чем я и воспользовался при первоначальной диагностике.
9. Вывод
Вот такое интересное приключение получилось по сборке и наладке данного компьютера. В дальнейшем я хочу провести над ним ещё несколько экспериментов. Возможно, эта статья послужит небольшим дополнением к оригинальной статье из журнала «Радио», так как в то время предложить иллюстрации было невозможно — до всего приходилось догадываться интуитивно. Впрочем, сейчас, при наличии эмулятора, многие идеи можно проверить, даже не собирая компьютер.
Писал Kekovsky специально для habr.com, 04.2023 г.