inf

Тестовое ПЗУ для МВЦ "Партнёр 01.01"

"Партнёр 01.01" 1991го выпуска, несмотря на свой возраст, теперь чувствует себя лучше - его удалось починить. Проблема скрывалась в неисправной микросхеме D38 (КР565РУ5Г). Вкратце о неисправности: инициализация видеоконтроллера происходила (по крайней мере, если верить осциллографу), но вывода надписи "Партнёр 01.01" и командной строки "Монитора" не следовало.
Начала копать в сторону оперативки. Проверила сигналы CAS и RAS (в альбоме схем от "Партнёра" они обозначены как CASL и RASL) и сигнал MX (управление мультиплексорами адреса ОЗУ) - подозрений они не вызвали, что несколько осложнило задачу и натолкнуло на мысль о тестовом ПЗУ. Тестовое ПЗУ от "Радио-86РК" к "Партнёру" не подошло из-за отличий в схеме распределения памяти - в частности, из-за других адресов портов ввода-вывода. Готового варианта к "Партнёру" тоже не нашлось, поэтому решили с Ромой сделать своё. В итоге, получилась прошивка, проверяющая ОЗУ и видеоконтроллер (связку КР580ВГ75 и КР580ВТ57).


Тест видеоконтроллера


Тестовое ПЗУ для "Партнёр 01.01" в процессе выполнения на реальном железе (самое интересное - после 48й секунды)

Если кому нужно, прошивку ПЗУ и её исходник скачать можно отсюда:
Прошивка ПЗУ (Bitbucket)
Исходник (Bitbucket)

Ну и небольшой ман. Содержимое файла testrom.bin необходимо прошить в ПЗУ объёмом 8Кб (например, в К573РФ4 или в 2764) и установить на место ПЗУ BIOS (D32). Тест начинает выполняться автоматически при включении питания компьютера, либо при нажатии на кнопку "Сброс". После короткого звукового сигнала (~1/4 сек.), во время которого ненадолго загорается светодиод LAT, в течение 48 секунд проверяются все 64Кб ОЗУ. Используется алгоритм "moving inversions". Кстати, наличие самой оперативки не влияет на работоспособность программы, так как задействованы только регистры CPU :)
В случае обнаружения неисправностей, тест выдаёт длинный звуковой сигнал (~1 сек.). Линии канала А параллельного порта (D28), соответствующие разрядам шины, к которым подключены неисправные микросхемы, устанавливаются в состояние логической единицы.
Если неисправностей нет - раздаётся короткий звуковой сигнал, при котором загорается и остаётся включённым светодиод LAT. Затем на экран выводится изображение, состоящее из рамки, в середине которой располагаются наборы символов каждого из восьми знакогенераторов. Чуть ниже находится строка, демонстрирующая работу атрибутов подчёркивания и инверсии символов. Курсор, при этом, имеет вид мигающего прямоугольника в левом верхнем углу внутри рамки.

З.Ы. Мы с мужем молодцы, чо :)
Круто!
Больше ничего и не скажешь.
Мегареспект, это очень круто!
Сразу вопрос, на чём вы отлаживаете эти программы? На каком-либо эмуляторе или прямо в железе?
Спасибо :)
Конкретно эту программу частично отлаживали на эмуляторе отсюда: http://bashkiria-2m.narod.ru/index/emul/0-8
Частично - из-за того, что эмулятор многое не эмулирует :) Например, низкоуровневую работу контроллера дисплея и прямого доступа к памяти - их можно даже не инициализировать, на эмуляторе всё равно всё будет работать. Поэтому без реальной железки в таких случаях никак не обойтись. Кроме того, в нескольких эмуляторах "Партнёра" обнаружились некоторые несоответствия с работой даже такого компонента, как центральный процессор. Я про это как-нибудь напишу пост :)
Ясно. А на железе как отлаживали?
Или написали и всё заработало?
На железе сразу заработало без особых проблем.