Внимание! Это временный неофициальный архив старой версии форума Полигон Призраков, созданный сочувствующим форуму участником. Этот сайт просуществует лишь до тех пор, пока администрация Полигона не сдержит своё обещание и не откроет официальный архив по адресу old.sannata.org.

Полигон-2

Форум о старых компьютерах

Объявление форума

Если пользуетесь личными сообщениями и получили по электронной почте оповещение о новом письме, не отвечайте, пожалуйста, почтой. Зайдите на форум и ответьте отправителю через ЛС.

Полигон-2 »   Калькуляторы, арифмометры, PDA, HPC »   Прошивка микрокода Д3-28
RSS

Прошивка микрокода Д3-28

дампик-дампик... ай-нэ-нэ

<<Назад  Вперед>> Страницы: 1 * 2
Печать
 
xoiss
Advanced Member


Всего сообщений: 711
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
30 окт. 2013
Если кто-то захочет повторить опыт, то пишите сюда — я дам комментарии по запросу.

Схему я собрал предельно примитивную:
- шлейфы для подключения к модулю --- вот это было, пожалуй, самым трудоёмким моментом
- микроконтроллер ATmega32, четыре керамических кондюшка и один электролит в цепи питания... кварц тут не понадобился... ну, ещё я добавил светодиод, чтобы по его "условному подмигиванию" как-то видеть, что там контроллер сейчас делает
- плата для быстрого прототипирования и пучок проводков к ней
- блок питания... Нюанс! Модуль микросхемного ПЗУ хавает аккурат 1 ампер постоянного тока при напряжении питания 5 вольт
- ну и самый задрипищенский программатор AVR ISP MKII (даже не JTAG)

Вот фоточки:







Внимательные инженеры, наверное, обратили внимание, что в перечне совершенно отсутствуют детали для организации канала передачи прошивки из микроконтроллера в компутер...
... да, такого канала там суть и не было. Мне было нереально в лом заморачиваться с чем-то типа COM-порта (RS-232).
Поэтому я реализовал сохранение считанной прошивки в Flash память ATmega, а потом просто вычитывал всю его память через программатор.

Контроллер ATmega32 имеет четыре 8-битных порта. Два из них я использовал для линий адреса и управления - ПY, ПX, СТРОБ, tПЗУ, свето-диод.
Другие два - для чтения части линий шины данных "E..". // понятно, что мне пришлось дампить прошивку в три итерации, т.к. 48/16 = 3.
Sergei Frolov
Advanced Member
Коллекционер

Откуда: Питер
Всего сообщений: 2719
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
5 июля 2003
Вот спасибо!
Kinder5912
Newbie


Всего сообщений: 11
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
18 окт. 2015
Могу в дополнение выложить перерисованную схему микросхемного модуля ПЗУ (чтобы не ломать глаза на оригинальной схеме).
http://www.portal.kinderland.r...T1JUQUw%3D.
xoiss
Advanced Member


Всего сообщений: 711
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
30 окт. 2013
Похоже, удалось проссечь, для чего таки нужны четыре дополнительных битика E45..E48 в микросхемном ПЗУ.

В общем, если из разрядов E45..E48 составить 4-битное двоичное число (разряд E48 - самый младший), то...
... дополнение этого числа до 16 и число единиц в разрядах E1...E44 должны быть равны по модулю 16.

То есть, эти четыре бита - это просто контрольные биты.

Например, строка:
PY..... PX....   E...................................................E
64....1 32...1   48....41 40....33 32....25 24....17 16.....9 8......1
0000000 101010 : 10110000 10011000 00000000 00001011 11111100 11111011


разряды E44..E1: 0000 10011000 00000000 00001011 11111100 11111011
число "единиц" равно 19
по модулу 16 получим 3

в разрядах E48..E45: 1011
составим число >E45.E48> — получим 0b1101 = десятичное 13
дополнение до 16 будет равно 3

Вот.

Это выполняется по всему файлу.

// скриптик для python 2.7:
[q]
f = open("rom.txt", "r")
for l in f:
    if ':' not in l:
        continue
    addr, data = l.strip('\n').split(' : ')
    data = data.replace(' ', '')
    e4845, e4401 = data[:4], data[4:]
    ones = len([e for e in e4401 if e == '1']) % 16
    check = (16 - int(''.join(reversed(e4845)), 2)) % 16
    if check != ones:
        print "ROM failure at address %s" % addr
        break
else:
    print "ROM is Ok"
f.close()
[/q]
xoiss
Advanced Member


Всего сообщений: 711
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
30 окт. 2013
Друзья, всем привет!

Перезалил прошивку — так что, кто уже успел качнуть файл, обновитесь!

Что поменялось — только форматирование:

1) упорядочил столбцы E1 .. E48 в порядке от 1 до 48
изначально я их выстроил в обратном порядке - от 48 до 1
почему их так необходимо перевернуть?
ну, выяснилось, что на самом деле "старший" бит имеет меньший номер линии, чем "младший"
например, в блоке ветвлений микрокода адрес следующей инструкции принимается по такой схеме:
E29 => ПY16
E30 => ПY8
E31 => ПY4
E32 => ПY2
E33 => ПY1
E34 => ПX32
E35 => ПX16
E36 => ПX8
E37 => ПX4
например, микрокоманда 8W0..7 выбирается по коду с весами:
E18 => 4
E19 => 2
E20 => 1
ну и ещё там полно таких же примеров
Короче, бит E1 - самый старший — поэтому удобней будет, если его показывать первым слева.

2) отделил биты E45..48, т.к. они лишь кодируют проверочный код и не являются частью микрокоманды

3) отделил бит адреса ПY64, т.к. он выбирает один из двух (идентичных) банков ПЗУ

больше ничего не менял
shattered
Advanced Member


Всего сообщений: 953
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
17 фев. 2008
Круто

Формат микрокода похож на Wang?
xoiss
Advanced Member


Всего сообщений: 711
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
30 окт. 2013
да кто же его знает! :)

вот здесь — единственная, известная мне, фотография блока ПЗУ от Wang 720:
http://www.oldcalculatormuseum.com/wang720.html
// ищите "Compare to the ROM in the Wang 720C (right)"

рискну предположить, что у wang 720, по крайней мере, такая же ширина слова микрокода — 44 бита

кстати, по фото видно, что у wang 720 поляна диодиков в два раза больше, чем у Д3-28
надо думать это потому, что наши инженеры догадались поставить 22 трансформаторных блока вместо 11, как было в оригинале, и тем самым сократить число прооводочков и число диодиков с 4096 до 2048 :)
// а инхние инженеры — не догадались!! :) :)
xoiss
Advanced Member


Всего сообщений: 711
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
30 окт. 2013
Сегодня с коллегой по интересам Kinder5912 сличали прошивки микрокода Д3-28
- с моей стороны был опубликованный здесь файлик
- со стороны Kinder5912 были помикросхемные дампы — снятые отдельно с каждой К596РЕ1 0082..0087

О результатах, думаю, Kinder5912 сам в скором времени подготовит детальный отчёт — ждите!

Но, в процессе сличения была обнаружена ошибка в схеме принципиальной блока "микросхемного" ПЗУ ПЕЛ3.065.001.
Ошибка именно в схеме (т.е. в документе). Сама суть плата, конечно же, сделана правильно.
Ошибка выявлена путём сравнительного сравнения одного с другим, другого с третьим и т.д.

Исправленный участок схемы:


Если вдруг картиночка не грузится, то словами:
- ошибочно указано: выводы D20:10 и D20:11 обозначены как цепи ~E42 и ~E43 и показаны подключенными к контактам X2:Б3 и X1:А3 соответственно
- должно быть: выводы D20:10 и D20:11 обозначены как цепи ~E43 и ~E42 и показаны подключенными к контактам X1:А3 и X1:Б3 соответственно

То есть там сразу две ошибки:
- указан номер разъёма X2 (неправильно) вместо X1 (правильно)
- взаимно перепутаны цепи ~E42 и ~43, а также контакты А3 и Б3 разъёма X1

Большое спасибо Kinder5912 за предоставленные для сличения помикросхемные файлы-дампы.
Без них ошибка в схеме осталась бы невыявленной.

P.S. Да, если, что то файл с прошивкой, опубликованный здесь выше, — он правильный. То есть ошибка в принципиальной схеме, вскрывшаяся сегодня, на этот файл влияния не оказывала.
<<Назад  Вперед>> Страницы: 1 * 2
Печать
Полигон-2 »   Калькуляторы, арифмометры, PDA, HPC »   Прошивка микрокода Д3-28
RSS

0 посетителей просмотрели эту тему за последние 15 минут
В том числе: 0 гостей, 0 скрытых пользователей

Последние RSS
[Москва] LIQUID-Акция. Сливаются разъемы CF
МС7004 и 7004А на AT и XT
Пайка термотрубок
Проммать s478 PEAK 715VL2-HT ( Full-Size SBC)
Подскажите по 386 материке по джамперам.

Самые активные 5 тем RSS