Хотя живое значение SR0 у ВМ3 "отстаёт на одно обращение" - при очищении SR0 там "замораживается" то же значение с номером страницы регистра SR0, что и у 11/83.
Хотя живое значение SR0 у ВМ3 "отстаёт на одно обращение" - при очищении SR0 там "замораживается" то же значение с номером страницы регистра SR0, что и у 11/83.
Только с чем его сравнивать?В битах страница 0 - адрес командыКод:010000/ MOV (R2), R3 ; R3/000001
В битах страница 7 - адрес (R2)...Код:010000/ MOV (R2), R3 ; R3/000017
Поэтому наверное и написано в доке, что значения имеют смысл только на момент заморозки - тогда они точно соответствуют обращению которое вызвало сбой...А тут видим то самое несоответствие MMR2 адресу инструкции. Но опять таки оно незаморожено установкой старших битов SR0... Да и значения особого не имеет без реализации MMR1 :)Код:010002/ MOV (R4), R5 ; R5/010004
Так что скорее разница в источнике информации, а это видимо зависит от реализации выборки команды и последующей ее обработки...
- - - Добавлено - - -
Так традиционных и нету без заморозки - для 11/83 дока оговаривает только то, что заморожено - оба варианта правильные, один вы согласии с операндом, второй с PC. Все дело в алгоритме работы видимо - так же как с известным Rx,(Rx)+...
А есть ли оно правильное? Ведь значение регистра интересно опять таки при заморозке в момент ошибки, а оно насколько я помню в точности совпадало по тому же MMU.SAV... Оговаривается ли его значение без заморозки на всез вариантах - надо смотреть - вроде где-то было написано про различия...
- - - Добавлено - - -
Специально вернулся назад - результат совпадает на 11/83 и на ВМ3. При заморозке результата (что и является значимым).
- - - Добавлено - - -
Видимо ВМ3 так дергает регистр предвыборкой следующей команды, на 11/83 же предвыборка идет несколько иначе. Ради интереса можно конечно переткнуть проц в первый слот, а память на место проца в третий, но в теории это скорее должно дать тот результат который и так есть :)
Тест на плате М6.
Код:.SR0
Live SR0 & SR2 test.
MOV #0177572, R2
MOV #0177576, R4
CLR (R2)
010000/ MOV (R2), R3 ; R3/000000
010002/ MOV (R4), R5 ; R5/010002
MOV #1,(R2)
010000/ MOV (R2), R3 ; R3/000017
010002/ MOV (R4), R5 ; R5/010002
CLR (R2)
020000/ MOV (R2), R3 ; R3/000016
020002/ MOV (R4), R5 ; R5/020002
MOV #1,(R2)
020000/ MOV (R2), R3 ; R3/000017
020002/ MOV (R4), R5 ; R5/020002
Program completed.
Тест MMU на плате М6.
Код:.MMU
MMU FEATURES: 22-BIT
MOV #-1,@#MMR0 ;MMR0 = 160001
CLR @#MMR0 ;MMR0 = 000000
MOV #-1,@#MMR3 ;MMR3 = 000060
CLR @#MMR3 ;MMR3 = 000000
MOV #-1,@#KISAR0 ;KISAR0 = 177777
CLR @#KISAR0 ;KISAR0 = 000000
MOV #-1,@#KISDR0 ;KISDR0 = 077416
CLR @#KISDR0 ;KISDR0 = 000000
BIS #140000,@#PSW ;SET USER MODE
HALT ;TRAP TO 10
MOV #123456,@#20000 ;
MFPD @#20000 ;
MOV (SP)+,R0 ;R0=123456
MOV #77404,@#UISDR1 ;ACF=10
TST @#20000 ;
*** MMU FAULT AT 002312, MMR0=100143, MMR1=000000, MMR2=002306 ***
CLR @#20000 ;
*** MMU FAULT AT 002342, MMR0=100143, MMR1=000000, MMR2=002336 ***
.
Новый тест: SR2.SAV - тестирует заморозку SR2 установкой старшего бита SR0.
Запускать на машинах с диспетчером памяти.
Занятно. Я думал только ВМ3 бывает без дополнитльных фич обычного 22-битного MMU.
Меняется также бит отвечающий за UNIBUS mapping - ну это и у меня также, но отрабатывает его в теории UBA. Интересно, что в доке по KDJ11-B написано, что бит UNIBUS mapping не интерпретируется, а в KDJ11-E написано для чего он.
- - - Добавлено - - -
Ну и классика для машин где нет CPUERR. А SH CONF тоже его как 11/34 опознает? RT-11 часы запускает? (если не запускать DAY при старте) - для ВМ3 подтверждаю - в RT-11 часы не идут. В RSX идут, но там и алгоритм определения другой.
Тест на ВМ3.
Код:.SR2
SR2 test.
MOV #177572, R2
MOV #100000, R3
MOV #177576, R4
CLR (R2)
010000/ MOV R3, (R2)
010002/ MOV (R4), R5 ; R5/010000
MOV #1,(R2)
INC R3
010000/ MOV R3, (R2)
010002/ MOV (R4), R5 ; R5/010000
Program completed.
Об этом я не подумал. Классический 11/23 - 18 бит, но упградится до 11/23-PLUS - он 22 (причем если не ошибаюсь, пульт об этом так и не знает). Да и прошник 350 соответственно получается плюс - 22 бит и ничего больше.
Это скорее всего таймер не включен переключателями БП. Для 11/23 неоднозначности нет - у него нету регистра состояния таймера. Когда есть неоднозначность на команду TIM KMON отвечает No clock. У меня так можно сделать если убрать CSR таймера с шины и включить принудительные прерывания. Надо кстати посмотреть как RSX на такую наглость отреагирует.
.
Новый вариант теста: SR2.SAV - выводит также SR0.
Запускать на машинах с диспетчером памяти.
Нельзя ли все-таки сделать сохранение статуса MMU и восстановление потом? :)Код:.RU SR2
SR2 test.
MOV #177572, R2
MOV #177576, R4
MOV #000000,(R2)
MOV #100000, R3
010000/ MOV R3, (R2)
010002/ MOV (R4), R5 ; R5/010000
010004/ MOV (R2), R3 ; R3/100000
MOV #000001,(R2)
MOV #100001, R3
010000/ MOV R3, (R2)
010002/ MOV (R4), R5 ; R5/010000
010004/ MOV (R2), R3 ; R3/100017
Program completed.
075122
@
- - - Добавлено - - -
SBКод:.RU D10:SR2
SR2 test.
MOV #177572, R2
MOV #177576, R4
MOV #000000,(R2)
MOV #100000, R3
010000/ MOV R3, (R2)
010002/ MOV (R4), R5 ; R5/010000
010004/ MOV (R2), R3 ; R3/100016
MOV #000001,(R2)
MOV #100001, R3
010000/ MOV R3, (R2)
010002/ MOV (R4), R5 ; R5/010000
010004/ MOV (R2), R3 ; R3/100017
Program completed.
.
Тест на ВМ3.
- - - Добавлено - - -Код:.SR2
SR2 test.
MOV #177572, R2
MOV #177576, R4
MOV #000000,(R2)
MOV #100000, R3
010000/ MOV R3, (R2)
010002/ MOV (R4), R5 ; R5/010000
010004/ MOV (R2), R3 ; R3/100000
MOV #000001,(R2)
MOV #100001, R3
010000/ MOV R3, (R2)
010002/ MOV (R4), R5 ; R5/010000
010004/ MOV (R2), R3 ; R3/100017
Program completed.
Результат на М6 аналогичен.
В сущности везде совпало. В SB у меня первый пункт отличился, но это ничто иное как результат окончания этого же теста запущенного под ZM :)
Впрочем если второй раз подряд запустить под Sb/SJ - результат тот же будет.
- - - Добавлено - - -
По пьяни всякая хрень в голову лезет :)
1. тест SR0 тот самый который без заморозки, но команды записываются в UPAR0-UPAR7.
2. записать туда что-нибудь вроде CLR R0, COMB R0, RETURN и посмотреть что с R0 будет (при выключенном 22-BIT) :v2_dizzy_vodka:
Это касаемо конкретно ВМ3 :)
- - - Добавлено - - -
...и кстати раз дошло дело до PARов... Проверить читаются ли они полностью (при выключенном 22 бит) в режиме HALT или это пульт при чтении включает 22 бит... или читает через свой маппинг...
.
Новый тест: PDPT3B.SAV - проверяет потерю вектора прерывания в последовательности команд BIS #100,@#TTPS, BIC #100,@#TTPS.
Можно запускать на любых машинах.
При вылете в пульт можно нажать P для завершения программы.
Тест на ВМ3.
Код:.PDPT3B
PDP-11 Interrupts Test #3b
001100/ BIS #100,@#TTPS x6
001114/ >>> Interrupt <<< 064
001130/ >>> Interrupt <<< 064
001144/ >>> Interrupt <<< 064
001210/ BIS #100,@#TTPS
001216/ BIC #100,@#TTPS
001224/
@ 001224
@P
Program completed.
.
При нажатии M прошивка 134 выполняет следующий код :
Возможно, что с ранней версией ВМ3 это работало.Код:ROM:003632 loc_3632: ; CODE XREF: ROM:003552j
ROM:003632 Cmp R4, #115 ; 'M'
ROM:003636 BNE loc_3754
ROM:003640 Call loc_4642
ROM:003644 BiT #1, @#77026
ROM:003652 BEq loc_3662
ROM:003654 Mov #aDoubleBusError, R5 ; "\r\nDOUBLE BUS ERROR"
ROM:003660 Br loc_3712
ROM:003662 ; ---------------------------------------------------------------------------
ROM:003662
ROM:003662 loc_3662: ; CODE XREF: ROM:003652j
ROM:003662 BiT #2, @#77026
ROM:003670 BEq loc_3700
ROM:003672 Mov #aInterruptError, R5 ; "\r\nINTERRUPT ERROR "
ROM:003676 Br loc_3712
ROM:003700 ; ---------------------------------------------------------------------------
ROM:003700
ROM:003700 loc_3700: ; CODE XREF: ROM:003670j
ROM:003700 Mov #aHaltInstructio, R5 ; "\r\nHALT INSTRUCTION"
ROM:003704 Br loc_3712
Вопрос про выходные каскады шины адреса/данных 1801ВМ1, 1801ВМ2, 1806ВМ2, 1801ВМ3. Интересует, есть там верхний транзистор всё-таки (лог.1 активная) или нет (выход с ОК) или ещё какой вариант (слабая подтяжка с ограничением тока, мало ли ...).
Этот вопрос связан с основным вопросом - возможно ли подключать на ходу эти разряды к земле (цель - динамическое изменение выдаваемых ВМ адреса/данных внешней цепью) без какой-либо опасности сжечь выходные каскады, или схемотехника выходного каскада этого не позволяет?
В этих микросхемах верхний транзистор есть, но, поскольку это n-MOS с одним питанием, то они слабенькие, со встроенным каналом, по документации - выдают вытекающий ток примерно 200мкА при выходном напряжении не менее 2.4В. Топологически - они там большую площадь занимают, если закоротить на землю, то выделяемая мощность должна распределиться, что сгорит - маловероятно. Но не думаю что это штатный режим.
Хм, освежил в памяти схемотехнику n-MOS - если верхний транзистор выходного каскада не управляется внутренней логикой микросхемы, а всегда висит затвором на питание в качестве динамической нагрузки, значит он априори спроектирован на работу на замыкание на 0 нижнего транзистора при выдаче лог.0, а значит также штатно будет работать и при любом внешнем замыкании на 0. Какая там схемотехника выходного каскада в 1801ВМ1 и 1801ВМ2, такая или другая?
И остаётся вопрос про 1806, которые КМОП - что у них в выходном каскаде, и про 1801ВМ3 - которые, скорее всего, имеют такой же выход, как в 1801ВМ1 и 1801ВМ2, но интересно, есть ли точная инфа?
В буферах внешних выводов это не так.
Схема 1801ВМ1А (буферы внешних выводов на странице 1)
Схема 1801ВМ2А (буферы внешних выводов на странице 1)
Те транзисторы, которые подключают выходы к питанию - они со встроенным каналом (в схеме слишком много транзисторов, поэтому я только один тип осилил, если применить несколько типов, то трудоемкость реверса возрастает, а смысла немного - обычно понятно где какой тип транзистора применен, из схемы) . Если на затворе высокое (напряжение питания), то канал транзистора открыт, и дает ток от 200мкА. Если выход снаружи закорочен, то мощность - 200мкА*5В - от 1мВт будет выделяться на этом транзисторе. Топологически он достаточно большой, но я не знаю, допустима ли такая мощность для него. Если на затворе напряжение низкого уровня, то встроенный канал закрывается.
Фрагмент схемы ВМ2, буфер вывода AD0:
http://s020.radikal.ru/i703/1602/ff/4d73224914e7t.jpg
T121 - драйвер высокого уровня, встроенный канал (от 200мкА) (топологически - большой, "многопальцевый")
T113 - драйвер низкого уровня, индуцированный канал (от 3,2мА) (топологически - большой, "многопальцевый")
T133 - защитный
T131/T132 - логика входного инвертора
T101 - ключ выдачи входных данных на внутренюю шину процессора
T56 - конденсатор бустера для T81, насколько я понял - мера для повышения быстродействия
"Многопальцевые" выходные транзисторы (T121/T113) выглядят так:
http://s016.radikal.ru/i337/1602/42/9978b915694ct.jpg
Они как бы скомбинированы вместе в единую структуру.
Реально при закоротке АД0 на общий 1801ВМ1 обеспечивает 1 ма ток КЗ на общий, или даже больше. При закоротке АД0 на питание - 15 ма или больше.
1806ВМ2 содержит встроенные 1564АП6 на линиях типа АД0 - т.е. ток КЗ выше в разы.
Ага, спасибо, пробежался по цепочке, действительно в противофазе работают плечи, и верхнее отключается при 0 на выходе. Тогда надо искать по каждому типу предельные токи по выходам.
Вопрос тут, безопасно ли это для кристалла или нет.
Поглядел, только для 1801ВМ2 нашёл в справочном листке (он же в справочнике Нефедова) в предельно допустимых режимах максимальный ток нуля 5 мА и максимальный ток единицы 0.5 мА. А у Шахнова для всей серии 1801 указан максимальный ток нуля 3.2 мА и максимальный ток единицы 1 мА. Кому верить, непонятно, разброс по интересующей величине в 2 раза.
Интересно тогда ещё, у 1801ВМ1 и 1801ВМ2 размер транзисторов в выходном каскаде одинаковый?
Размеры примерно одинаковые, но это не показатель, важна еще куча параметров - степень легирования, толщина слоя оксида и прочее. Но рабочие токи, судя по документации, тоже примерно одинаковые. В своей конструкции я бы замыкать на землю выход не стал, нештатный это режим. Тем более, напряжение затвор-канал при заземлении канала растет, проводимость тоже растет, значит вырастет ток и выделяемая мощность, что приведет к локальному повышению температуры. А при разогреве полупроводника проводимость также растет, имеем положительную обратную связь. Кратковременное замыкание оно обычно выдерживает, а на постоянку - как повезет. Причем, если транзистор неудачно разрушится, то также может отказать и вход.
Стой-стой! Это же про Т121, да? Так там истоковый повторитель, т.е. при высоком уровне на его затворе и попытке подать низкий уровень на его исток через выходную ногу, ток может многократно возрасти, то есть вместо 200 мкА запросто окажется и 2мА, а то и 20. То есть коротким импульсом подать ноль можно, а дать статический уровень - так скорее всего сдохнет!..