- Вопросы по 1801ВМ3
- [+] Старые сообщения (59)
-
? gid@ - 10.11.2013 14:13
т.е. другими словами, область памяти 0-400 в user-mode совершенно свободна и может использоваться как душа пожелает?
-
? anonymous - 10.11.2013 14:21
В принципе -да, но она тоже под вектора и служебные ячейки задействована обычно. Например, если программа пользователя имеет свой EMT-диспетчер, расширяющий системные вызовы, при вызове EMT и анализе его в ОС, если ОС EMT с таким номером не обрабатывает, то диспетчер EMT может передать управление по вектору из user-mode, что очень удобно. Я так исполняющую систему БК делал - в RT-11 EMT имеют старшие коды, если БКшная программа не их вызывала, а свои БКшные, с младшими номерами, то управление передавал на обработчик в user.
-
? gid@ - 10.11.2013 14:25
Или чего-то не понимаю, а как тогда команда TRAP, которая как раз для пользовательских целей предназначена? прерывание 34 тоже сперва улетает в кернел и оттуда потом передаётся пользовательскому обработчику?
А как тогда быть с перехватом векторов прерываний, для навешивания своих обработчиков? Или это не практикуется в RT-11?
-
? anonymous - 10.11.2013 14:48
С TRAP - тоже самое, а как в RT-11 реализовано, уже не помню, надо исходники смотреть. Позвонил программисту - он утверждает, что есть такой код в RTшке для TRAP.
-
? MM@ - 10.11.2013 15:00
Уже за давностью лет точно не помню, но дезасемблируют обычно в DES.SAV - дизассемблером в RT-11. Выходной код вроде как совместим с MACRO ( на вход ) при допиливании заголовка ручным "напильником".
Если лень писать крутой пульт, можно просто ограничится отбойником размером до 200-400, эмулирующим 4 вектор для БК11.
Кстати, припоминаю, что родное ТО на 1801ВМ3 было с кучей развесистой клюквы - по более, чем 20-летней информации.
*
Может быть я не писал, но ВМ3А упирается при переключении страниц ДОЗУ БК11М с клавы - кидается "?". Можно из ДОЗУ или СОЗУ делать
это командами 104012 - ЕМТ 12.
-
? gid@ - 11.11.2013 11:50
А реальное адресное пространство с точки зрения ДП ВМ3 закольцовано?
Т.е. когда у нас все 4Мб памяти, логически может получиться, что голова сегмента находится в конце адресного пространства, а хвост в начале.
Когда при вычислении реального адреса из виртуального произойдёт переполнение при сложении содержимого PAR и поля BN виртуального адреса, диспетчер памяти посчитает это ошибкой?
¤
Ещё, в ТО МС1201.03 на листе 45 есть таблица прерываний, там есть прерывание "ошибка нечетного адреса"
Это особенность ВМ3 или конкретно МС1201.03? и если да, по какому вектору происходит прерывание, по 4? или 250?
-
? anonymous - 11.11.2013 18:26
Не очень понятно, что имеется в виду. Какое может быть переполнение, если размер страницы максимальный, который можно указать, равен размеру окна в виртуальном пространстве, а начало страницы может быть при расширении страницы прямо только в первом адресе окна с произвольным адресом конца отображаемого участка, а при обратном расширении адрес начала произволен, но адрес конца всегда равен последнему адресу окна.
По нечетному адресу трапается вм3, как и все старпие модели pdp - по 4му вектору.
-
? anonymous - 11.11.2013 18:43
А, кажется понял, однако никогда не приходило в голову такое делать. Да, если, скажем в регистр адреса записать 0177700, то внутри окна по адресу 07776 будет PSW читаться, а по 010000 - физический адрес 0.
-
? Patron - 20.01.2016 18:59
Интересно, какими значениями инициализируются регистры PARH0 и PARH1, другими словами - какие физические адреса выставляет на шину в режиме HALT процессор 1801ВМ3 при обращении к адресам 000000 и 040000.
-
? SPY - 20.01.2016 20:30
По данным ЦРУ, советскийъ процессор 1801ВМ3 при входе в режим HALT устанавливает адрес 000000 на МПИ и начинает выполнять программу.
При этом имеются ограничения режима HALT - отсуствие аппаратных и частично программных прерываний - см. ТО на МС1201.03.
Содержание регистров при режиме пульта/мульта - обращайтесь в частное детективное агенство, т.к. таких данных в архивах нет.
( По непроверенным слухам, никак не удается обратиться к адресам в диапаносе 020002 - 157776 ).
-
? Patron - 20.01.2016 21:30
Когда выполняется код ПЗУ пульта - обращения к адресам 000000-037777 мапятся на шину через PARH0, а обращения к адресам 040000-077777 мапятся через PARH1. Даже в стандартном ПЗУ пульта с прошивкой -134 в самом начале есть обращения обоих типов:
000000: JMP 005710
005710: MOV SP, @#77114
при этом происходит обращение к следующим виртуальным адресам:
000000
000002
005710
005712
077114
Первые четыре адреса мапятся через PARH0, а пятый - через PARH1.
Всё, что надо - посмотреть в логическом анализаторе, в какие физические адреса на шине это превращается.
-
? Patron - 24.01.2016 23:48
Следующий вопрос - как процессор ВМ3 отрабатывает прерывание зависания ( TrapTo_4 ) в режиме HALT ?
Прошивки 134 и 377 начинают тестирование с чтения заведомо отсутствующего адреса:
MOV #177600, @#172512
TST @#100000
Что происходит дальше ?
-
? MM - 25.01.2016 00:12
На днях проверю на рабочем блоке.
Вроде как обычно отрабатывает - т.е. , находясь в пульте и получив IRQ4, проходит по адресу из 4 слова пульта. Но вот что происходит со стеком и регистрами - Большой вопрос...
В блоке организована СОЗУ Пульта 0-77777, более высокие адреса - как в обычном БК (сделано в расчете на очень хороший графический пультовый режим, где в скрытой области может храниться отдельный экран отладки пульта, например со встроенный пропатченным DESSoм и т.п. ништяками, вплоть до отдельной дисковой ОС.)
*
Сам код пульта, на 100% совместимый с БК0011М, до сих пор не написан - точнее, был на стадии отладки и не доделан, ввиду достаточной трудоемкости мероприятия. Размер - порядка 200 ( 8 ).
*
Голая платочка блока ВМ3А - 500 руб ( с разъемами СНП58-64 б/у ), есть БИС СОЗУ по 400 руб 55 нс ( для монтажа на блоке, от 2 шт. до 8 шт. ). Можно собрать готовый блок с зелеными КМ5 и натуральными советскими желтыми колодками - 5 т.р., 2 мбайт батарейного СОЗУ. По особому заказу можно организовать субмодули с 1801ВМ2А или 1806ВМ2 ( у них электрически схемы почти похожи ).
-
? Patron - 25.01.2016 00:39
Если в режиме HALT ( т.е. когда процессор выдаёт низкий уровень на ноге 55 ) прерывание зависания происходит по адресу из 4 слова пульта - прошивка 134 сообщает о неисправности процессора.
Для чистоты эксперимента можно выходить в пульт через выполнение команды HALT, а не через подачу низкого уровня на ногу 47.
-
? MM - 25.01.2016 00:49
Для чистоты лучше вообще пускаться с пульта - тогда будет некотрая уверенность, что никакие обстоятельства не установили что-либо в регистрах ВМ3.
*
Если 134-я пишет о отказе процессора, то тогда каким образом отрабатываются ситуации на МПИ в режиме пульта ?
*
Для работы МС1201.03/04 постоянно с видимыми 134 ПЗУ и СОЗУ пульта следует ногу 35 ( SEL ) соединить проволочкой с общим. При этом, вероятно, будет возможность выполнить некотрый небольшой код в СОЗУ пульта.
-
? Patron - 25.01.2016 13:26
Процессоры ВМ1 и ВМ2 в режиме пульта отрабатывают прерывание зависания не через вектор 4, а как разновидность прерывания HALT ( ВМ1 делает HALT_TrapToRomOffset_02, а ВМ2 выполняет HALT_TrapToRomOffset_04 ) - логично предположить, что и ВМ3 поступает похожим образом. Запуститься с пульта в ВМ3 можно только двумя способами - выполнив первой командой HALT или имея в момент пуска низкий уровень на ноге 47. В любом другом случае код пульта будет выполняться не в режиме пульта. О наличии или отсутствии режима пульта можно узнать по состоянию ноги 55 ( 0в = пульт ; Z = программа ).
-
? Patron - 25.01.2016 20:55
Похоже, что ситуация с обработкой зависания в режиме HALT процессором 1801ВМ3 прояснилась - при возникновении зависания в режиме HALT в стек ничего не пишется, а из вектора 4 загружаются новые значения PC и PSW.
-
? anonymous - 30.01.2016 18:58
Vslav написал на zx-pk 「TST @# 40000/60000 отобразились на адрес 000000」
Это очень интересно, когда я делал свою плату на вм3, у меня неправильно заработала 134я прошивка, пока я все обращения в ней к адресам 077ххх не заменил на 017ххх, что косвенно подтверждает существование процессора, который адресует пультовую память за пределами 0го банка.
-
? Patron - 30.01.2016 20:28
В справочнике Шахнова за 1988 год прямо сказано, что PARH0 инициализируется константой 170000, а PARH1 - константой 167600, выдумать такое невозможно.
-
? anonymous - 30.01.2016 21:31
Где бы найти контактную панельку под 64-ногий квадратный корпус ВМ2/ВМ3/ВМ4/ВМ5? Чтоб собрать тестовый стенд и проверить все имеющиеся процессоры, в продаже есть под импортный qfp-64, но там иной шаг контактов. Хотя можно развести плату с вырезом под корпус и золочёными дорожками, прижимая процессор к ней резинкой по периметру выводов, но это колхоз, за который браться не хочется. Есть кН1801ВМ3 и КА1801ВМ3, хотелось бы их проверить тоже.
У ММ не сохранилось колодок подходящих, случаем?
-
? anonymous - 31.01.2016 06:45
ММ написал, что у него не сохранилось таких колодок. Я надеялся на него и его знакомых ветеранов, т.к. в Митино уже обходил скупщиков останков более цивилизованных времён...
Надо ветеранов Зеленограда потрясти, но они тяжело выковыриваются из спячки. :)
- << Форум