nedoPC.org

Community of electronics hobbyists established in 2002

...
Atom Feed | View unanswered posts | View active topics It is currently 21 May 2018 07:16



Reply to topic  [ 22 posts ]  Go to page 1, 2  Next
Изделие МНК-11-01.ДМ 
Author Message
Maniac

Joined: 25 Aug 2009 08:02
Posts: 310
Location: Москва
Reply with quote
Здесь будет немного графоманства.

Пора отходить от Интела и подобных. Изделия с применением 8080, 8085, 8086, 8088/V20, Z80 проектировались (изредка копировались), собраны, отлажены, изучены, большинство кануло в лету, но опыт остался однобокий какой-то. Настало время делать PDP-11. Во-первых, чтобы приобщиться, во-вторых PDP-11 в хозяйстве никогда не лишняя.

Вариантов, из чего ее делать -- множество, вплоть до копирования в подробностях, благо усилиями заинтересованной общественности многое из документации на ранние модели PDP-11 есть на bitsavers.org. Например, есть схема PDP-11/20 (трафик!!) (Отвлекаясь: Кстати, там активно используются так называемые "расширители по ИЛИ", в наших справочниках обозначаемые как ЛД1, аналог 7460, которые расширяют возможности элемента ЛР1, тамошнего 7450, или ЛР3, тамошнего 7453. Признаться, в наших схемах я такого не встречал, но я и не видел схем ЕС-ок и СМ-ок, поэтому будем думать, что как раз там ЛД1 и применялись, и не будем думать, что это бесполезный балласт в результате слепого копирования серии 74)

Полиставши схемы первых PDP-11, собранных на классических ТТЛ, понимаешь, что несмотря на их относительную простоту, это все же не проекты выходного дня, хотя и подъемные в обозримой перспективе. К тому же, вопрос именно копирования не актуален, а хочется получить что-то удобное, компактное и в основном похожее на PDP-11. Назовем это моделью PDP-11.
К счастью, электронная промышленность СССР в свое время изрядно постаралась и выдала на-гора разных микросхем большой интеграции на тему архитектуры PDP-11, чем облегчила задачу получения удобного и компактного. Поэтому берется все, что имеется под рукой, выбираются интересные экземпляры и отправляются на испытательный стенд. Самое первое, что обычно приходит в голову, это "как бы подружить процессор и ОЗУ". Может быть, такая идея, будучи самой простой, и не всегда правильная, но зачем себе отказывать в удовольствии побыть немножечко дилетантом, поэтому от обычаев не отступаем.

На стендах побывали:
процессоры К1801ВМ1, КР1801ВМ2, КМ1801ВМ2, КМ1801ВМ3, 1806ВМ2, Н1806ВМ2;
контроллеры ОЗУ КР1801ВП1-030 (для ВМ1), КР1801ВП1-119 (для ВМ3), К1801ВП1-037 (для ВМ1, с функцией регенерации растрового дисплея, применялась в БКшках), КР588ВГ2 (из дружественной КМОП серии), КМ1810ВТ3 (а почему бы не подружить протоколы Multibus и Qbus?).

Но не настолько интересны технические мелочи сами по себе (а они, вообще-то, интересны), как интереснее было, исходя их этих мелочей, получить представление об испытуемых, сформировать свое к ним отношение, типа, "вот ты такая вся из себя розовая или в CerDIP, а ты удиви". Сложность же заключается в том, чтобы не ошибиться с представлением, ошибка грозит "остыванием" к начинанию со временем.
Короче, по совокупности впечатлений, для пробного захода в изготовлении модели PDP-11 выбор пал на связку К1801ВМ1 и КР1801ВП1-030. Она ничем не удивила, но показалась наиболее сбалансированной, не вызывающей отторжения или желания что-либо улучшать или ускорять. Пауза в три года отношения не изменила, что порадовало, и можно неспеша приступать к изготовлению.


17 May 2018 05:21
Profile
Maniac

Joined: 25 Aug 2009 08:02
Posts: 310
Location: Москва
Reply with quote
Вот эти два кристалла, центры кристаллизации будущего изделия. Респект Ангстрему.


Attachments:
вм1_вп1-030.jpg
вм1_вп1-030.jpg [ 86.56 KiB | Viewed 217 times ]
18 May 2018 08:28
Profile
Maniac

Joined: 25 Aug 2009 08:02
Posts: 310
Location: Москва
Reply with quote
Строится модель PDP-11, значит, проектирование будет происходить в рамках архитектуры PDP-11. В этом направлении связка К1801ВМ1 и КР1801ВП1-030 начинает диктовать выбор остальных элементов так, что практически не оставляет вариантов. Может, это и хорошо, мук выбора меньше. К тому же, в некоторых аспектах программная модель изделия начинает совпадать с ДВК, что тоже может сыграть на пользу (хотя, если подумать, польза только в подсказках при дизассемблировании ДВКшного ПЗУ и формировании понимания, можно ли код этого ПЗУ как-то использовать).

Итак, что из модулей желательно иметь, согласно архитектуре PDP-11? Для начала, как минимум: процессор, общая щина, ОЗУ, инструментальная консоль. В ранних PDP-11 консоль представляла собой тумблеры с лампочками, потом была заменена на утилиту ODT (Octal Debugging Technique), работающую с системным терминалом и закодированную либо микропрограммно, либо как программа для процессора в ПЗУ. Связка ВМ1 и ВП1-030 дает средства для организации инструментальной консоли по типу программы в теневом ПЗУ. С каким интерфейсным средством работает эта программа, будь то терминал, или панель с переключателями, или еще что-то, никак не оговорено. Но системный терминал быть в наличии обязан, поэтому самый рациональный вариант организации инструментальной консоли это программа ODT в ПЗУ с интерфейсом на системный терминал. Значит, к минимальному набору модулей добавляется контроллер с интерфейсом системного терминала.

Дальше сталкиваемся с небольшой неприятностью. Или особенностью, кому как нравится. Функции процессора и инструментальной консоли разнесены по нескольким микросхемам. Процессор в К1801ВМ1 реализован не полностью, часть его находится в КР1801ВП1-030, а в ней, в свою очередь, реализована часть инструментальной консоли, остальные части которой разнесены по ВМ1, ПЗУ и ОЗУ. Поэтому минимальная законченная базовая составляющая изделия это клубок из ВМ1, ВП1-030, ПЗУ, ОЗУ, с выходом наружу общей шины, но шина используется для связей в клубке тоже. И в этом клубке модули процессора, инструментальной консоли и ОЗУ можно выделить лишь условно. Физически их нет. А вот системный терминал уже можно реализовать в виде отдельного модуля на общей шине, и для этого хорошо подходит микросхема КР1801ВП1-035 (или 065).


18 May 2018 08:31
Profile
Maniac

Joined: 25 Aug 2009 08:02
Posts: 310
Location: Москва
Reply with quote
Вот эта парочка UART-ов на выбор, прям на шину а-ля Q-bus, которая и будет шиной межмодульной. В нарушение злравого смысла, потому что напрямую с микросхемы и без буферов, зато в пользу компактности. Чужих рядом с игрушкой не будет, а снимать статику это уже рефлекс.


Attachments:
вп1-035_065.jpg
вп1-035_065.jpg [ 85.92 KiB | Viewed 212 times ]
18 May 2018 08:41
Profile
Maniac

Joined: 25 Aug 2009 08:02
Posts: 310
Location: Москва
Reply with quote
Будет нужна программа ODT, вопрос, откуда ее взять.

Можно вспомнить, что на связке К1801ВМ1 и КР1801ВП1-030 построен один из вариантов процессора ДВК, там есть то самое системное ПЗУ 1801РЕ2 с кодом прошивки 000 или 054. В принципе, можно взять его, ODT там заточен как раз под эту связку, вариантов, как соединить К1801ВМ1, КР1801ВП1-030 и ПЗУ почти один, и все они как программная модель с точки зрения кода в ПЗУ выглядят одинаково. Другое дело, что в этом ПЗУ кроме собственно ODT еще есть тесты и загрузчики, коды которых пользуют почти всю программную модель ДВК, а многие, если не почти все составляющие в рассматриваемом изделии отсутствуют.

Дальше, можно найти исходный текст самодельного ODT для К1801ВМ1, проанализировать его и оценить, насколько он может подойти к изделию.

В конце концов, можно найти исходный текст "фирменного" ODT от самой DEC, проанализировать его. Таковой нашелся в приложениях в инструкции к DCT11-EM Evaluation Module (трафик!!), сделанном на основе микросхемы T-11.

После дизассемблирования ДВКшной прошивки 000, ознакомления с другими исходниками, стало понятно, что лучшего варианта, кроме как написать ODT самому, не существует, потому что в ДВК ПЗУ код какой-то корявый и много лишнего, в самодельном ODT тоже много лишнего и неподходящего (хотя, он интересен тем, что написан обожателем БК и всего, что относится к PDP), а DEC-овский вариант вообще написан под другую систему, хоть и с сохранением признаков архитектуры PDP-11. Но предварительное знакомство и анализ были нелишними, получено богатое представление о том, что нужно для системного ПЗУ и ODT, ну и PDP-шным стилем программирования на макроассемблере проникаешься по ходу дела, открываешь для себя интересные приемы и подходы. Это как самостоятельное путешествие, несравнимое с чтением записок других путешественников.


18 May 2018 09:04
Profile
Maniac

Joined: 25 Aug 2009 08:02
Posts: 310
Location: Москва
Reply with quote
Пока суд да дело, вот начало дизассемблированного ПЗУ ДВК с кодом прошивки 000.
Attachment:
dvkromdisasm.png
dvkromdisasm.png [ 64.84 KiB | Viewed 123 times ]

При старте процессор читает регистр SEL1 (адрес 177716) и помещает прочитанный старший байт в счетчик комманд, R7, или PC, при этом обнуляя младший байт счетчика. Но прежде, чем перейти к выборке первой команды, процессор устанавливает бит 3 этого же регистра SEL1. Это важный момент в понимании функционирования ВМ1. Микросхема управляет битом 3 SEL1 и при наступлении других событий: прерывание IRQ1, исполнение команды HALT, зависание шины при приеме вектора прерывания и зависание двойное (я их называю сложными зависаниями). То есть, напрашивается вывод, что бит 3 должен управлять подстановкой ПЗУ в адресное пространство, что, собственно, и тянет за собой необходимость реализации такого переключателя внешними по отношению к 1801ВМ1 средствами. Вот тут и начинаются хитрые межмикросхемные увязки, которые не позволяют говорить, что микросхема 1801ВМ1 это законченный процессор. В ДВК и у меня бит 3 SEL1 находится внутри микросхемы 1801ВП1-030, что, в общем-то удобно.

Итак, возвращаясь к тексту ПЗУ. По адресу 160000 находится команда перехода на начало исполнения. Следом идут три вектора, адреса которых жестко прописаны в микрокоде 1801ВМ1: при исполнении команды HALT для новых PC-PSW используется вектор по адресу 160002, следом, по адресам 160006 и 160012 расположены векторы для перехода в случае сложных зависаний, двойного и ошибки при приеме вектора прерывния. Начало исполнения в данном случае находится непосредственно за векторами, хотя ничто не мешает ему быть в любом другом месте.

Исполнение начинается командами установки бита 3, и очистки бита 2 регистра SEL1. Для чего это делается. Процессор управляет битом 3 SEL1, внутри 1801ВП1-030 есть бит 3 и бит 2 SEL1. Бит 3 включает ПЗУ на полный размер, начиная с адреса 160000 (диапазон 160000 .. 172776), бит 2 включает только первые 1kW ПЗУ (диапазон 160000 .. 163776). Кусок ПЗУ 173000 .. 173776 всегда находится в адресном пространстве. Нигде не рассказывается, почему это так и почему такие адреса и размеры. Поразмыслив, я назвал диапазон 160000 .. 163776 ПЗУ для ODT, следующий кусок 164000 .. 172776 ПЗУ с утилитами и тестами, это типа диапазоны, присущие только особенностям 1801ВМ1, а в диапазоне 173000 .. 173776 находится загрузчик, типа стандарта де-факто архитектуры PDP-11.

Так вот, установка бита 3 делается хрен знает зачем, в это место попадаем только с адреса 160000, а это старт по DCLO-ACLO с чтением SEL1 и установкой бита 3, по-другому никак. Очистка бита 2 - это подстановка полного размера ПЗУ, потому что при ресете ВП1-030 этот бит взводит, то есть, бит 3 устанавливается процессором, бит 2 устанавливается ВП1-030, при этом открыты первые 1 кслова ПЗУ, процессор на всякий случай дублирует программно установку бита 3 и стирает взведенный ВП1-030 бит 2, открывая таким образом полный размер ПЗУ.

Дальше инициализируется R6, или SP, ну это святое.

Дальше копируется некий блок кода на предназначенное место. Тут следует отметить, что архитектурой 1801ВМ1 предусмотрено обязательное наличие ОЗУ в ячейках 177674 и 177676. Они используются для хранения вектора из режима RUN, туда сохраняются PC-PSW после IRQ1 или сложных зависонов. 1801ВП1-030 открывает в ОЗУ эту область, и даже чуть более, 177600 .. 177676, всего 32 слова, немного, но достаточно. Назначение - служебное ОЗУ для внутренних нужд ODT. Блок кода, который в эту область копируется, это подпрограмма чтения или записи произвольной ячейки, а находится она там, потому что произвольная ячейка может перекрываться по адресу с ПЗУ, и этот код нужно исполнять при очищенных битах 2 и 3 SEL1.

Дальше инициализируются нулем какие-то ячейки служебного ОЗУ, две из них, я не помню, идентифицировал или нет, третья - некое magic значение, позволяющее программе определить, по какой причине мы свалились в режим HALT (читай в режим исполнения программы в ПЗУ).

Следом идет непонятный мне пассаж. Не могу поймать логику программиста. Регистр R0 очищается, на регистр R1 читается содержимое SEL1. Маской очищаются все биты, кроме младших трех. Назначение бита 2 уже понятно, назначение двух других младших - это чтение состояния дип-свича, который кодируют поведение при старте, типа автозагрузка, сваливание в ODT или еще что-то, всего 4 варианта, есть в справочнике по ДВК, здесь не актуально. Бит 2 уже равен 0. Дальше идет цикл с инкрементом R0 с условием выхода по достижении его значения равным значению R1. Такой хитровывернутый MOV R1, R0. Ну и банальный jmp по таблице в итоге. Который вообще-то по индексу R1 без выпендрежа можно было сделать. Зачем они MOV R1, R0 изобразили в виде цикла - не понятно.

Не буду углубляться в дальнейший разбор результатов дизассемблирования, в принципе, и так понятно, какая часть кода разобрана, по названиям функций, я там нашел всякие функции печати на терминал символа, строк, завершающих фрагментов типа CRCRLF, печати восьмеричных цифр и чисел, еще что-то. Логику работы ODT проявил, правильную работу с SEL1 узнал, что делается по переходам через векторы тоже выяснил, а в целом код не понравился. В общем, выжал пользу по максимуму, остальное забросил. Тесты почти не смотрел, у меня нет таких аппаратных средств, которые там проверяются.


19 May 2018 15:11
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Mixa64 wrote:
Пока суд да дело, вот начало дизассемблированного ПЗУ ДВК с кодом прошивки 000.
Image

А вот здесь вместо неинформативной картинки неплохо было бы сказать, какой программой дизассемблируется ПЗУ ДВК.
В тексте этого тоже нет... :-?

И зачем писать столько бестолковой "воды" типа:
Mixa64 wrote:
Дальше инициализируется R6, или SP, ну это святое.
Все заинтересованные лица здесь и структуру процессора и команды ассемблера знают.

Если дизассемблировали ПЗУ - выложите уже исходник с комментариями и саму прошивку ПЗУ.
А то возникает вполне законное сомнение вот в этом вашем утверждении:
Attachment:
mz64_.gif
mz64_.gif [ 10.62 KiB | Viewed 92 times ]

_________________
iLavr


20 May 2018 10:06
Profile
Maniac

Joined: 25 Aug 2009 08:02
Posts: 310
Location: Москва
Reply with quote
В комментариях настоятельно прошу воздержаться от фраз типа "бестолковая вода", а также выказывать всякие "законные сомнения" и приводить ссылки на материалы не по теме.
Иными словами, чтоб без тенденциозности.
Тема ограничена техническими подробностями сабжа и аналогов.
У тех, кто знает систему команд и уж более того, и структуру процессора в объеме акцентированных особенностей, не возникает вопросов про дизассемблер, пассажи нахожу алогичными, пренебрежительными и тенденциозными.
Архив с прошивками есть здесь
Про дизасм ПЗУ - тут без энтузиазма, потому что код не очень интересный, некомментированный и пройден процентов на 15. Возвращаться к нему не буду, смысла нет, мне достаточно, декларировал, что сделал, и хватит. Недодел не выкладываю, до удобочитаемого в объеме сделанного тоже доводить не буду. Лучше уж пусть выложит тот, кто до конца собрался дойти и дошел. Мой "трамплин" энтузиасту не сильно поможет, там все просто.


Last edited by Mixa64 on 20 May 2018 13:24, edited 1 time in total.



20 May 2018 12:54
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Mixa64 wrote:
Тема ограничена техническими подробностями сабжа и аналогов.

1. Интересовала "техническая подробность" какой программой дизассемблируется ПЗУ ДВК.

2. Прозвучала просьба поделиться "технической подробностью" - выложить исходник с комментариями и саму прошивку ПЗУ.

3. Высказано пожелание к топикстартеру быть менее многословным, и поделиться "техническими подробностями" по п.1 и п.2.

А вот такой ответ в топике:
Mixa64 wrote:
В комментариях настоятельно прошу воздержаться от фраз типа "бестолковая вода", а также выказывать всякие "законные сомнения" и приводить ссылки на материалы не по теме.
Иными словами, чтоб без тенденциозности.
действительно, "незачет" и самая настоящая тенденциозность.

_________________
iLavr


20 May 2018 13:07
Profile
Maniac

Joined: 25 Aug 2009 08:02
Posts: 310
Location: Москва
Reply with quote
Lavr wrote:
1. Интересовала "техническая подробность" какой программой дизассемблируется ПЗУ ДВК.
2. Прозвучала просьба поделиться "технической подробностью" - выложить исходник с комментариями и саму прошивку ПЗУ.

Если бы вначале было написано ровно это буквально, или близко к тому, разговор и отношение были бы иными. Еще лучше, чтобы обращение было начато с "пожалуйста" и т.п. Обычные вежливость и уважение к незнакомому человеку.

И, несмотря на мою просьбу, прекратить разогревание вы не желаете.
Quote:
А вот такой ответ в топике:
Mixa64 wrote:
В комментариях настоятельно прошу воздержаться от фраз типа "бестолковая вода", а также выказывать всякие "законные сомнения" и приводить ссылки на материалы не по теме.
Иными словами, чтоб без тенденциозности.
действительно, "незачет" и самая настоящая тенденциозность.


Предлагаю вам отредактировать свои комментарии до позитивно-нейтрального тона.


20 May 2018 13:40
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Mixa64 wrote:
И, несмотря на мою просьбу, прекратить разогревание вы не желаете.
Quote:
А вот такой ответ в топике:
Mixa64 wrote:
В комментариях настоятельно прошу воздержаться от фраз типа "бестолковая вода", а также выказывать всякие "законные сомнения" и приводить ссылки на материалы не по теме.
Иными словами, чтоб без тенденциозности.
действительно, "незачет" и самая настоящая тенденциозность.
Предлагаю вам отредактировать свои комментарии до позитивно-нейтрального тона.

Предлагаю вам ответить на поставленные конкретные вопросы по "техническим подробностям" без этой самой тенденциозности.
А насчет непонятного мне термина "разогревание", то этим, как я вижу, предпочитаете заниматься вы сами.
К вам я отношусь совершенно нейтрально, позитива вы никак не вызываете, скорее уж недоверие, и вопросы
мои носят чисто технический характер.


P.S. Чисто из статистического интересу я проверил поиском по форуму - сколько раз употребил
слово "пожалуйста" сам топикстартер: всего один раз.
:wink: По нику Lavr - тоже проверил... :D

_________________
iLavr


20 May 2018 13:49
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Mixa64 wrote:
Вот эти два кристалла, центры кристаллизации будущего изделия.
Image

Уважаемый Mixa64, будьте столь любезны, покажите пожалуйста также и фото той материальной основы,
на которой будет происходить "кристаллизация" Вашего будущего изделия.
Никогда мне не приходилось макетировать такие корпуса с такими выводами, поэтому Ваш опыт
размещения их на стендах или на каких-либо макетных платах представляет для меня, и, я думаю,
что и для многих других посетителей форума, неподдельный интерес.

Не откажите в возможности почерпнуть из Вашего обширного практического опыта.

_________________
iLavr


20 May 2018 14:44
Profile
Maniac

Joined: 25 Aug 2009 08:02
Posts: 310
Location: Москва
Reply with quote
Lavr wrote:
P.S. Чисто из статистического интересу я проверил поиском по форуму - сколько раз употребил
слово "пожалуйста" сам топикстартер: всего один раз.
:wink: По нику Lavr - тоже проверил... :D

Речь не о том. Вы то ли действительно не понимаете, то ли не хотите понять. Именно этот search в данном контексте - ничего не дает. К тому же, раз уж вы и меня сюда тянете, учтите по крайней мере продуктивность, по числу постов более чем 35:1, поэтому свое число делите на 35, а уж потом сравнивайте. (и здесь ваша неправда, кстати, у меня - не один раз, а два как минимум, то есть, вы занизили в два раза). Но это все равно нерелевантная оценка, с точки зрения именно статистики, поэтому ни о чем.

Полезнее будет из того же статистического интересу найти, как часто в сообщениях встречается негативная оценка текста, собеседника, насмешки, ерничанье и т.п.

Все же расчитываю на разумность с вашей стороны и по-прежнему прошу отредактировать комментарии и переформулировать свои просьбы на нейтральный тон в сочетании с живым интересом. Поймите, пренебрежение отталкивает. Проявленный интерес способен вызвать ответный шаг.


20 May 2018 15:19
Profile
Maniac

Joined: 25 Aug 2009 08:02
Posts: 310
Location: Москва
Reply with quote
Lavr wrote:
Уважаемый Mixa64, будьте столь любезны, покажите пожалуйста также и фото той материальной основы,
на которой будет происходить "кристаллизация" Вашего будущего изделия.
Никогда мне не приходилось макетировать такие корпуса с такими выводами, поэтому Ваш опыт
размещения их на стендах или на каких-либо макетных платах представляет для меня, и, я думаю,
что и для многих других посетителей форума, неподдельный интерес.

Не откажите в возможности почерпнуть из Вашего обширного практического опыта.

А вот это, извините, ерничанье.
Поверьте, на такое отвечать нет желания.
Для чего вам такие экзерсисы?
Вот честно скажу, я не вижу вашего настоящего интереса. Сначала на первом плане было пренебрежение, сейчас ерничанье. Интерес второстепенен, более того, может быть нарочно искажен в пользу первостепенного.
Не вижу того, что вы хотите узнать по-настоящему. Узнать - не первостепенно.


20 May 2018 15:36
Profile
Maniac

Joined: 25 Aug 2009 08:02
Posts: 310
Location: Москва
Reply with quote
[delete]


Last edited by Mixa64 on 21 May 2018 06:37, edited 1 time in total.



20 May 2018 16:30
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 22 posts ]  Go to page 1, 2  Next

Who is online

Users browsing this forum: No registered users and 0 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.