Подготовка к ремонту. Пишем тестовое ПЗУ
Для дальнейшей наладки понадобилось изготовить несколько приспособлений и доработок. Начал я с того, что надо было изготовить ПЗУ с тестовой программой. Данная программа приводится на стр. 30 журнала «Радио» №7-1988г. Она должна инициализировать периферию, после чего заполнить экранную область символами. Это нужно для проверки работоспособности процессора, ОЗУ, контроллера ПДП и видеоадаптера. Привожу исходный код данной программы:
Данная программа записывает область от 3600 до 4000, что актуально для 16КБ версии «Радио», но и на 32КБ тоже заработает. Привожу, также, собранный Hex-файл данной программы, который можно прошить в ПЗУ начиная с нулевого адреса. Запрограммировать надо, в общем-то, 81 байт:
Если у кого-то возникнет желание собрать программу самостоятельно, можно воспользоваться онлайн-ассемблером:https://www.asm80.com/На нём же можно получить дамп. А собранную программу проверить на онлайн-эмуляторе:https://rk86.ru/Вышеприведённая программа должна выдать нам вот такой результат на экран:
Но, как мы видим, после установки ПЗУ с данным кодом на нашу плату ничего подобного нет. Экран абсолютно пуст.
Прошивка ПЗУ, подключение кабелей
Данные для ПЗУ (MON и FONT) прилагаются в архиве к схеме. Их можно прошить либо промышленным программатором, либо с помощью Arduino Uno/Mega, что я и сделал.
Первоначально у меня не было нужных микросхем ПЗУ (на 1 и 2 килобайта), поэтому пришлось пойти на хитрость, и урезать более ёмкие имеющиеся у меня микросхемы, занулив у них старшие разряды адреса. Выглядело это не совсем красиво, но работало.
По поводу питания — основная часть схемы питается от 5 Вольт. Но напряжение -5В и +12В нужно только для процессора (так как ОЗУ у нас РУ5), а напряжение +12В — ещё для логики микросхемы ГФ24 (тактовый генератор). Поэтому для тестов я просто соединил несколько блоков питания (зарядок), и включал по очереди — сначала -5В, затем 5В, затем 12В, а выключал в обратном порядке. В дальнейшем данное нагромождение можно заменить на любой подходящий блок.Итак, заполненная плата:
Собранная плата с прошитыми микросхемами
Ремонт компьютера. Суть проблемы.
Данное место объяснено не очень подробно — недостающую информацию пришлось извлекать из документов на микросхемы ВТ57 и ВГ75.Наша тестовая программа работает следующим образом:
-
Программируются контроллеры.
-
Экранная область ОЗУ заполняется символами.
-
В самом конце дается команда на старт ПДП «старт отображений».
В данном месте статьи предлагается сымитировать включение ПДП, подсоединив + питания на 17 ножку ВТ57, запустив тем самым ПДП и сымитировав поступивший запрос от видеоконтроллера.Для того, чтобы разобраться, как это влияет на работу устройства, не лишним будет также ещё раз взглянуть на блок-схему компьютера:
Вкратце работу проблемного узла можно описать следующим образом:
-
Видеоконтроллер ВГ75 делает запрос на контроллер ПДП.
-
Контроллер ПДП приостанавливает процессор.
-
Контроллер ПДП извлекает данные из ОЗУ и устанавливает их на шину.
-
Видеоконтроллер принимает данные, когда ему подаётся сигнал WR (10 вывод).
Проблема возникает между 3 и 4 этапом. Сигнал WRB устанавливается двумя устройствами:
-
Процессором, при записи положения и вида курсора.
-
Контроллером ПДП при готовности экранного байта к записи в видеоконтроллер.
Для прохождения обоих сигналов установлен элемент «D4-1». Как мы могли видеть при запуске, курсор успешно устанавливается и сдвигается, следовательно, линия WR на ВГ75 исправна. ПДП работает, но нет сигнала на его выводе 1. Запись в видеоконтроллер не осуществляется — поэтому символ извлекается, но мы не видим его.При этом, все условия для того, чтобы данный сигнал выходил, имеются. Я сделал предположение о том, что данная ножка просто могла выгореть в результате действия статического электричества, когда микросхема хранилась. Косвенно это подтверждалось тем, что если вытащить данную ножку, на работу схемы это не оказывало влияния. Пришлось дозаказать замену микросхеме ВТ57, после чего попробовать включить компьютер снова.
Радиодетали
Часть компонентов мне досталась от знакомого компьютерщика, часть — пришлось докупить. Учитывая имеющиеся у меня детали, весь комплект недостающих микросхем обошёлся мне в 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, либо можно записать два шрифта или кодировки, и менять их данной перемычкой).
Печатная плата
В оригинале компьютер часто собирался на макетной плате. Для экономии времени была куплена готовая печатная плата. Её чертежи, схему, полезные файлы выложил как-то SergeyLLL: https://zx-pk.ru/threads/27583-radio-86rk-novaya-plata-umenshennaya.htmlМожно заказать такую плату у китайцев, однако, в этом нет необходимости — по данным Gerber-файлам её заказали уже все, кому не лень. Поэтому я связался с человеком, который заказывал партию из 5 штук, и он отправил мне одну. С доставкой она обошлась мне в 1000 рублей. Узнать данную плату можно по характерной надписи «RADIO-86RK(RU5_32KB)». Что означает, что выполнена она по оригинальной схеме, но с небольшим изменением — чипы РУ3 заменены на РУ5, чтобы уменьшить вероятность выхода их из строя при пропадании напряжений питания.
Печатная плата от SergeyLLL, массово продающаяся на различных площадках
Результат трудов
Конечно, было интересно, правильно ли я определил неисправность. После 10 дней томительного ожидания, микросхема прибыла, и.. включаем
Изображение совпадает с предполагаемым (с вывода эмулятора)
Отлично! Проблема устранена. Теперь можно попробовать убрать все надстройки, и запустить штатную программу «монитор».
РАДИО-86РК
Конечно, картинка немного выходит за рамку экрана, но это косит старый телевизор. Для того, чтобы ввести данные в компьютер, понадобилось ещё напаять резисторы 2К на выходные порты D20 (B и C). После чего стало можно ввести данные. Интересный факт — если вытащить данную микросхему, производится автоматический ввод символа «Яблочко», и сдвиг курсора вправо, чем я и воспользовался при первоначальной диагностике.
Первое включение
К видеовыходу я подключил маленький черно-белый телевизор с AV-входом, который валяется у меня с незапамятных времён. Подключил видео, все питания, нажал «RESET», и..
На экране различный символьный мусор
На экране мелькающий мусор, надписи «Радио-86 РК» нет. Через несколько минут даже эти пиксели пропали. Остался просто мигающий курсор на сером фоне:
Эмпирически было выяснено следующее:
-
Если вытащить ОЗУ (хотя бы одну микросхему), курсор пропадал.
-
Если вытащить D20 (ВВ55), курсор начинал сдвигаться вправо после запуска.
-
Если вытащить D7 (ИР12), ничего в работе схемы не менялось.
Следовательно, какие-то процессы там происходили. Однако, предстояло выяснить, в чём же именно заключается неисправность.