Детально не разглядывал, но вот это насколько я понимаю, переход в режим HALT.
Код:MOV #740,-(SP) MOV #173002,R1 MOV R1,-(SP) RTI
Детально не разглядывал, но вот это насколько я понимаю, переход в режим HALT.
Код:MOV #740,-(SP) MOV #173002,R1 MOV R1,-(SP) RTI
PDP-11/83, Электроника МС0511 (УК-НЦ), DECserver 90M
Q-Bus: H9278-A, DLV11-J, DZQ11, DHV11, DELQA-M, LPV11, CQD-420/TM, DRV11
PMI: KDJ11-BF, MSV11-JE
VT220, CM7209
Ничего подобного, 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, стереть из стека результат. Теперь наша п/п в системном ОЗУ, надо узнать адрес. Все подробности здесь, автор технологии - Владимир Полетаев.
PDP-11/83, Электроника МС0511 (УК-НЦ), DECserver 90M
Q-Bus: H9278-A, DLV11-J, DZQ11, DHV11, DELQA-M, LPV11, CQD-420/TM, DRV11
PMI: KDJ11-BF, MSV11-JE
VT220, CM7209
PDP-11/83, Электроника МС0511 (УК-НЦ), DECserver 90M
Q-Bus: H9278-A, DLV11-J, DZQ11, DHV11, DELQA-M, LPV11, CQD-420/TM, DRV11
PMI: KDJ11-BF, MSV11-JE
VT220, CM7209
Ну это как время будет. Пока RTEM хочу доковырять...
Вот кстати, может кому какая идея в голову придет пока я не закопался глубоко в рмоны всякие
Симптомы:
В RT-11 до 5.5(!) включительно прога нормально создает файл.Код:.MCALL .CLOSE,.ENTER,.EXIT,.PRINT,.WRITW START: .ENTER #AREA,#0,#DBLK,#5. BCC 10$ .PRINT #ERR1 .EXIT 10$: .WRITW #AREA,#0,#BUFF,#256.,#0 BCC 20$ .PRINT #ERR2 .EXIT 20$: .CLOSE #0 .PRINT #OK .EXIT DBLK: .RAD50 /DK FILTSTDAT/ AREA: .BLKW 5 BUFF: .REPT 256. .WORD 123456 .ENDR ERR1: .ASCIZ /ENTER/ ERR2: .ASCIZ /WRITE/ OK: .ASCIZ /OK/ .END START
Начиная с 5.6 и выше проходит без ошибок, но файл получается нулевой длины.
Дело еще осложняется тем, что драйвер системный от RT-11 V4, но в первом приближении в системах без поддержки device timeout вроде особой разницы нет.
---------- Post added at 16:25 ---------- Previous post was at 16:23 ----------
Ну среди ВМов-то чем уникален понятно - как минимум наличием MMU
А от других процессоров - посмотрим, может действительно если отсечь заведомо то, что не ВМ то все встанет на места![]()
PDP-11/83, Электроника МС0511 (УК-НЦ), DECserver 90M
Q-Bus: H9278-A, DLV11-J, DZQ11, DHV11, DELQA-M, LPV11, CQD-420/TM, DRV11
PMI: KDJ11-BF, MSV11-JE
VT220, CM7209
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)