Опять прошу помощи у специалистов. Тут в свое время обсуждался глюк процессора при использовании режимов адресации @PC. Я нарвался на похожую проблему, и хотел уточнить, это проявление данного глюка, или же нет.
Я занимаюсь сейчас подготовкой к публикации моего FPGA-варианта платы МС1201.02, поскольку здесь нашлись интересующиеся данной разработкой. Я доделал контроллер RX11/RX01, и в процессе тестов оказалось, что RT-11 ни в какую не хочет грузиться с дисковода по команде монитора B DX. Из-под системы командой BOOT грузится, а из-под монитора никак не хочет. Трассировка процесса загрузки из-под SignalTap показала, что процессор ведет себя неадекватно. Вот тестовый фрагмент, являющийся составной частью первичного загрузчика DX:
Код:
      3 000000                          START:
      4 000000  011706                          MOV     @PC,SP
      5 000002  012702  000200                  MOV     #200,R2
      6 000006  005000                          CLR     R0
      7 000010  000000                          HALT
      8         000000                          .END    START
Здесь в первой инструкции используется код следующей команды в качестве нового указателя стека. Конечно, так писать могут только больные на голову люди, но тем не менее это кусок официального дековского драйвера. Очевидно, что после выполнения данного кода должно получиться R2=200, R0=0. Попробуем запустить этот код из монитора:
Код:
@0/000000 11706
000002/000000 12702
000004/000000 200
000006/000000 5000
000010/000000 0
@R0/140001 
@R2/000000                                                                                                                                                    
@R6/000776
@                                                                                                                                                    
@0G 000012                                                                                                                                                     
@R0/140001                                                                                                                                                    
@R2/005000                                                                                                                                                    
@R6/012702                                                                                                                                                    
@
Как видим, первая команда отработала правильно, в SP записалось 12702. А дальше начались проблемы. Следующая команда свой аргумент взяла на слово дальше - не 200, а 5000. А команда CLR вообще не отработала, регистр R0 не изменился. Естественно, что в этой ситуации загрузка с дискеты невозможна:
Код:
@B                                                                                                                                                            
$DX  000204                                                                                                                                                   
@
Поскольку выше в качестве адреса буфера установилось не 200, а 5000, то по адресу 200 остались нули, и при передаче туда управления получаем вылет в монитор.
Что странно, загрузка по команде BOOT/FOREIGN работает правильно:
Код:
RT-11SJ (S) V05.04 D                                                                                                                                          
                                                                                                                                                              
.SET TT QUIET                                                                                                                                                 
                                                                                                                                                              
.BOO/FOR DX:                                                                                                                                                  
                                                                                                                                                              
DW Handler V6.5, (c) D.S.C., 1992-2016                                                                                                                        
                                                                                                                                                              
                                                                                                                                                              
RT-11SJ (S) V05.04 D                                                                                                                                          
                                                                                                                                                              
.SET TT QUIET                                                                                                                                                 
                                                                                                                                                              
.
Хотя, по идее, при этом происходит то же самое - с дискеты считывается сектор 1 дорожки 1 по адресу 0 и туда передается управление.

Странно, но мне помнится, что в начале 90-х годов у нас еще стояли ДВК с дисководами ГМД-70 и все прекрасно с них грузилось. Хотя, почти 30 лет прошло, возможно я что-то уже и забыл. Возможно, это были ДВК-1 на 1801ВМ1, или мы использовали не RT-11, а какой-нибудь советский суррогат вроде рафоса.