Цитата Сообщение от Patron Посмотреть сообщение
По части ВМ2 я не очень силён, но у меня сложилось впечатление, что команды START и STEP работают у ВМ2 так же, как и у ВМ1 (т.е. и в USER-моде тоже).

Но у ВМ2 нет уникальных регистров ВМ1.

Поэтому, если есть и START, и STEP, и регистры - это ВМ1, а если регистров нет - это ВМ2.
Ничего подобного, START и STEP у ВМ2 работают только в режиме HALT, как и вся группа команд с кодами 10-37. Но здесь тоже есть свои тонкие нюансы. Если определились, что есть команды EIS (ASH, ASHC, MUL, DIV), то можно предположить что это или ВМ2 или ВМ3. ВМ3 можно отличить по наличию регистров диспетчера памяти. А вот то, что перед нами ВМ2, можно отличить, запустив какую нибудь подпрограмму в режиме HALT.
Но сперва надо удостовериться, что работают также и команды FIS. Если команды FIS отсутствуют, то это может быть и ВМ2, но не в составе УКНЦ или МС1201.02. Тут я ничего предложить не могу. Остается определить, что перед нами - УКНЦ или МС1201.02. Определяем наличие регистров 176640 и 176642 на шине - если они есть - или УКНЦ, или ДВК с КГД, если нет ДВК с чисто КСМ, 15ИЭ-00-013, или с КЦГД. Отличить УКНЦ от ДВК с КГД просто - у КГД 176640 - регистр режима отображения (там используются только биты 15 и 14), у УКНЦ - регистр адреса, надо изменить младшие 14 битов, не трогая биты 15 и 14, если содержимое 176642 не меняется - то ДВК с КГД, иначе УКНЦ.
Наконец последняя проверка на исполнение спецкоманд HALT-режима. Как известно, ВМ2 может переходить в HALT-режим по команде RTI, если осужествляется переход в область памяти с адресами старше 160000. Для УКНЦ все довольно просто - через регистры 176640/176642 можно перенести нашу программку например с адреса 175000, а потом перейти на нее через RTI (занеся в стек 600 и 175000). На ДВК придется чуть-чуть попотеть, но и здесь не все так плохо. Подпрограмма обработки FIS сохраняет регистры с R0 по R5 последовательно в памяти, поэтому можно занести начало нашей п/п в регистры с R0 по R5, занести в стек два вещественных нуля и исполнить FADD SP, стереть из стека результат. Теперь наша п/п в системном ОЗУ, надо узнать адрес. Все подробности здесь, автор технологии - Владимир Полетаев.