Тест на ВМ3.
Код:.SR0
Live SR0 & SR2 test.
MOV #0177572, R2
MOV #0177576, R4
CLR (R2)
010000/ MOV (R2), R3 ; R3/000000
010002/ MOV (R4), R5 ; R5/010004
MOV #1,(R2)
010000/ MOV (R2), R3 ; R3/000001
010002/ MOV (R4), R5 ; R5/010004
Program completed.
Тест на ВМ3.
Код:.SR0
Live SR0 & SR2 test.
MOV #0177572, R2
MOV #0177576, R4
CLR (R2)
010000/ MOV (R2), R3 ; R3/000000
010002/ MOV (R4), R5 ; R5/010004
MOV #1,(R2)
010000/ MOV (R2), R3 ; R3/000001
010002/ MOV (R4), R5 ; R5/010004
Program completed.
Биты 13-15 всегда по идее можно записать - они в принципе R/W, хотя как правило их выставляет сам MMU. Суть теста который я предлагал выше - проверить поведение: запись 1 в любой из этих битов (не важно вручную или самим MMU) вызывает заморозку MMR2, MMR1 (ну тут не актуально) и битов 1-6 в SR0.
- - - Добавлено - - -
Неправильно прочитал текст выше, но суть та же - попробовать заморозить значения, выключить и посмотреть. А с учетом специфики ВМ3 также из пульта посмотреть.
- - - Добавлено - - -
Хотя это я уже пьян - я же сам выложил выше результат где видно, что из SR0 после записи 0 в него читается ненулевое значение. Так что суть вопроса сводится в гарантированной установке битов на ВМ3, отключении, чтении и проверки из пульта на всякий случай...
.
Новая версия теста: SR0.SAV - проверяет текущие значения SR0 и SR2 при выключенном и включённом MMU, выполняя команды в двух страницах памяти.
Запускать на машинах с диспетчером памяти.
Эх, еще бы эти тесты с XM не конфликтовали, а то сначала загрузись в ZM чтобы залить по FTP, потом в SB чтобы запустить итд... :)Код:.RU SR0
Live SR0 & SR2 test.
MOV #0177572, R2
MOV #0177576, R4
CLR (R2)
010000/ MOV (R2), R3 ; R3/000016
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.
.
Тест на ВМ3.
Код:.SR0
Live SR0 & SR2 test.
MOV #0177572, R2
MOV #0177576, R4
CLR (R2)
010000/ MOV (R2), R3 ; R3/000000
010002/ MOV (R4), R5 ; R5/010004
MOV #1,(R2)
010000/ MOV (R2), R3 ; R3/000001
010002/ MOV (R4), R5 ; R5/010004
CLR (R2)
020000/ MOV (R2), R3 ; R3/000016
020002/ MOV (R4), R5 ; R5/020004
MOV #1,(R2)
020000/ MOV (R2), R3 ; R3/000003
020002/ MOV (R4), R5 ; R5/020004
Program completed.
Кстати по описанию KDJ11-B биты 1-6 в SR0 выставляются только при возникновении ошибки.
- - - Добавлено - - -
1.4.7.1 Memory Management Register 0 (17777572) - MMR0 provides control and records memory
management unit status. The register contains abort and status flags as shown in Figure 1-15 and described
in Table 1-10.
1.4.7.2 Memory Management Register 1 (17777574) - MMR1 records any autoincrement or
autodecrement of a general purpose register, including explicit references through the PC. The increment
or decrement amount by which the register was modified is stored in 2’s complement notation. The lower
byte is used for all source operand instructions and the destination operand may be stored in either byte,
dependiig on the mode and instruction type. The register is cleared at the beginning of each instruction
fetch. The register is defined in Figure 1-16.
1.4.7.3 Memory Management Register 2 (17 777 576) - MMR2 is loaded with the program counter of
the current instruction and is frozen when any abort condition is posted in MMR0.
На ВМ3 живое значение SR0 показывает номер страницы предыдущей операции, а живое значение SR2 превышает "стандартное" на 2.