PDA

Просмотр полной версии : Внешний порт для МК-90



Ewgeny7
13.03.2016, 00:08
А вот насчет магнитофона - было мнение, что магнитофонный интерфейс работал.
Жалко, что почти все МК-92 на руках у "коллекционеров", которые не проверят версии о работе периферии...

- - - Добавлено - - -

Насколько я успел поизучать архитектуру ПДП, на системном разъеме у МК-90 самая обычная шина МПИ, а-ля БК-0010. Т.е. нет препятствий для разработки внешнего модуля, просто втыкающегося в слот МК-90, который реализует порты ВУ, магнитофона, черта в ступе. Но почему этим никто не занимался до сих пор? Настораживает...

Koncheglazov
13.03.2016, 00:37
на системном разъеме у МК-90 самая обычная шина МПИ, а-ля БК-0010. Т.е. нет препятствий для разработки внешнего модуля, просто втыкающегося в слот МК-90, который реализует порты ВУ, магнитофона, черта в ступе. Но почему этим никто не занимался до сих пор? Настораживает...

Да, было б круто этот разъём задействовать, а то у большинства МК-90 он торчит как бесполезный рудимент.

Ewgeny7
13.03.2016, 12:22
Нет, там нифига всё не так просто... Потому и не делали.

CodeMaster
13.03.2016, 12:47
Нет, там нифига всё не так просто...

Q-Bus простой не бывает. Пока не сделают некий универсальный мост Q-Bus/МПИ - ПЛИС - переферия, подключение чего-то более/менее современного к МК/БК/ДВК/УКНЦ быть уделом избранных.

Ewgeny7
13.03.2016, 23:09
Нашел хороший документ, описывающий работу шины с осциллограммами сигналов. Всё не так сложно, как показалось вначале. Не похоже на i8080, но вполне понятно. Просто больше суеты с сигналами :)
Придется использовать CPLD в качестве контроллера.

- - - Добавлено - - -

Нашел расхождение в работе эмулятора и реала.
Чтение адреса командой PATCH по "несуществующему" адресу в эмуляторе вызывает вывод FFFFh (1777777), а на реале - недопустимо, печатает вопросительный знак. Насколько я понимаю, если не приходит ответ от внешнего устройства по запрошенному адресу, то проц фиксирует ошибку (в эмуляторе этого нет). Значит, адрес можно использовать в своих коварных целях.
Тоесть, как вывести данные на внешний порт - уже знаю. Как прочитать - тоже представляю.
Осталось самое, блин, сложное - найти разъем!!! Нету нигде... :(

- - - Добавлено - - -

Пока идея "не отпустила", пилю/паяю :)
Двусторонка, разъемом будут DIN-мамы.

http://savepic.net/7825010.jpg

- - - Добавлено - - -
http://savepic.net/7830134.jpg

Ewgeny7
14.03.2016, 18:51
Помучил МК-90 с платкой.
Прошивку соорудил по примерно такому алгоритму -
1. Если на шине AD выставлена комбинация, соответствующая адресу нашей ПЛИСки (E900h, 164400oct) и сигнал ОБМ падает в ноль - это был вызов нашего устройства, последующие команды будут наши, вплоть до поднимания ОБМ в единицу (инверсия сигналов, млин).
2. Ждем от процессора одну из двух команд, ДЧТ или ДЗП (так же, падение в ноль). Если ДЧТ - выводим на шину из ячейки памяти ПЛИСы и дергаем уже сигнал ОТВ со своей стороны вниз. Если команда ДЗП - то пишем с шины данные в ячейку памяти внутри ПЛИСки. И тоже дергаем ОТВ вниз.
3. Как только сигнал ОБМ прекратился, отпускаем сигнал ОТВ. Цикл закончен, отсоединяемся.

Вроде всё правильно и должно работать. Но - не работает. Команда PATCH по-прежнему не дает посмотреть содержимое по адресу платки. Может быть, дело не в платке, а в жестко заданном диапазоне адресов, которые обслуживаются внутренним контроллером МКшки? И всё, что не попадает в этот диапазон - вызывает ошибку? Тогда ничего не получится...
А лезть внутрь диапазона - нельзя, там реальные устройства и будет конфликт.

- - - Добавлено - - -

Кстати, а по шине МПИ у нас адреса и данные передаются в прямом или инверсном виде???

CodeMaster
14.03.2016, 19:28
Кстати, а по шине МПИ у нас адреса и данные передаются в прямом или инверсном виде???

В инверсном

Ewgeny7
14.03.2016, 22:49
В инверсном
Угу.
Инвертировал адрес.
Не помогло.
Пока не знаю в чем причина....

- - - Добавлено - - -

Если только ошибся с разводкой сигналов, разъем на МК воистину дурацкий.
Перепроверяю.

- - - Добавлено - - -

Странно всё, в общем.
Ошибок в разводке нет.
Упростил селект, сделал ловушку просто на адрес.
Инверсный адрес не ловится.
А вот прямой адрес ловится.
Смотрел ячейку 013400 (1700h), ловушка стоит на этот же адрес. Есть срабатывания. Добавляю сигнал ОБМ - не работает. Ни прямой, ни инверсный.
Может у этого "рассыпушного процессора" КА588 свои стандарты на внешние сигналы? Документации пока не нашел.

AlexG
14.03.2016, 23:03
А просто поймать ОБМ ?
А потом поймать адрес при котором есть ОБМ ?
Осцил. хорошо помогает в сих ситуациях

Ewgeny7
14.03.2016, 23:32
Не, имеющиеся осциллы будут неподходящи.
А вот логический аналайзер я уже приготовил. Завтра буду щупать что там творится с момента формирования нужного адреса и "до следующего забора".

CodeMaster
15.03.2016, 07:10
Смотрел ячейку 013400 (1700h), ловушка стоит на этот же адрес. Есть срабатывания. Добавляю сигнал ОБМ - не работает. Ни прямой, ни инверсный.
Может у этого "рассыпушного процессора" КА588 свои стандарты на внешние сигналы? Документации пока не нашел.

Надо тему перенести в раздел БК/ДВК - все аксакалы там. Либо, пригласить их в тему (если они за новыми не следят)

Ewgeny7
16.03.2016, 11:14
Вчера удалось записать даблбайт во внешний регистр.
Оказалось, грабли были в разъеме. Вот что отсутствие матчасти делает :(
Записать получилось, проецируя порт на существующий адрес ОЗУ.
Когда порту назначил адрес ближе к концу адресного пространства, там где ничего нет (E900h, 164400oct), команда записи PATCH начала выдавать новые интересные глюки. Мелькает на долю секунды строка типа "сбой записи..... чего-то там" и вываливаемся в рестарт бейсика. Как много нам открытий чудных...

CodeMaster
16.03.2016, 13:52
Записать получилось, проецируя порт на существующий адрес ОЗУ.

В PDP style системах нет понятия портов, есть диапазон адресов ОЗУ под ввод-вывод. Причём, что бы внешнее устройство могло принимать отдавать данные должны соблюдаться определённые условия его взаимодействия с шиной, в том числе и допустимый диапазон адресов. Но, я совсем не силён в PDP, ты бы всё же перенёс тему в более "прошареный" раздел ;-)

Ewgeny7
16.03.2016, 23:15
В PDP style системах нет понятия портов, есть диапазон адресов ОЗУ под ввод-вывод.
Под словом порт подразумевается именно порт, внешний регистр, проецируемый на память. То, что у ПДП нет понятия "порт" как структуры, параллельной адресации линейки памяти - я знаю...


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

Ал-р
24.05.2016, 21:08
Угу.
Инвертировал адрес.
Не помогло.
Пока не знаю в чем причина....
- - - Добавлено - - -
Если только ошибся с разводкой сигналов, разъем на МК воистину дурацкий.
Перепроверяю.
- - - Добавлено - - -
Странно всё, в общем.
Ошибок в разводке нет.
Упростил селект, сделал ловушку просто на адрес.
Инверсный адрес не ловится.
А вот прямой адрес ловится.
Смотрел ячейку 013400 (1700h), ловушка стоит на этот же адрес. Есть срабатывания. Добавляю сигнал ОБМ - не работает. Ни прямой, ни инверсный.
Может у этого "рассыпушного процессора" КА588 свои стандарты на внешние сигналы? Документации пока не нашел.
-
http://www.pisi.com.pl/piotr433/index.htm#mk90
http://www.pisi.com.pl/piotr433/mk90hwe.htm
схемы
http://www.pisi.com.pl/piotr433/mk90pp.htm
Connector for the system board - XP1
-
Внутри МК-90 и на системном разъёме не такое МПИ как у БК (AD-инверсные и упр.-инв.), в МК-90 (у серий 588 и 1835) адреса-данные прямые, управляющие сигналы инверсные.

Ewgeny7
24.05.2016, 21:24
Ал-р, спасибо, я этот сайт вдоль и поперек знаю.
Вывод в порт кстати получился. Ёлочкой на Новый Год можно управлять :)
А вот заставить читать - нет, никак не вклиниться в адресное пространство.

Ал-р
24.05.2016, 21:47
Ал-р, спасибо, я этот сайт вдоль и поперек знаю.
Вывод в порт кстати получился. Ёлочкой на Новый Год можно управлять :)
А вот заставить читать - нет, никак не вклиниться в адресное пространство.
-
Вы попадаете на занятые области адресного пространства:
100000...177777 - ПЗУ с реальным физическим объёмом 32Кбайта (системный контроллер блокирует какой-то диапазон для внутренних регистров, но лучше туда не соваться). Записывать во внешнее устройство с адресами в этом диапазоне можно (если не попадать на системные регистры, тогда результат непредсказуем), ПЗУ при записи в эти адреса не мешает.
40000...77777 - вот здесь свободно в МК-90, допустимы и запись и чтение чего-то там своего (в МК-92 именно в этот диапазон включено второе ПЗУ 16К которое стоит на большой плате МК-92)
0...37777 - ОЗУ 16Кбайт: при чтении у внешнего устройства будут конфликты с РУ10; при записи возможны сбои-зависания при попадании на область векторов, стека, экрана, программ ...