-
Может статься, что работа через MMU идёт только в двухоперандных командах ( или не идёт при адресации (PC) )..
Тест: VM3M2a.SAV - мапит нулевую страницу на первую в M-режиме MMU и обрабатывает прерывание.
-
На ВМ3
Код:
.RUN VM3M2A
1801VM3 MMU M-mode test #2a
MOV #000200,@#172340
MOV #001000,SP
MOV #001111,@#000774
MOV #001111,@#020774
MOV #000401,@#SR0
MFPT
@ 001364
@R6/001000
@1000G
Program completed.
Код:
.RUN VM3M2A
1801VM3 MMU M-mode test #2a
MOV #000200,@#172340
MOV #001000,SP
MOV #001111,@#000774
MOV #001111,@#020774
MOV #000401,@#SR0
MFPT
@ 001364
@R6/001000
@R6G
@ 000300
@1000G
Program completed.
.
-
Уже понятно, что в М-режиме обработка прерывания идёт не без проблем, а где именно слабина - выясним позднее.
...
Тест: VM3M3.SAV - проверяет работу однооперандных команд в M-режиме MMU.
-
На ВМ3.
Код:
.RUN VM3M3
1801VM3 MMU M-mode test #3
MOV #000000,@#020000
MOV #177777,@#060000
MOV #000200,@#172346
MOV #000401,@#SR0
TST @#60000
PSW/000004
CLR @#SR0
MOV #000000,@#020000
MOV #177777,@#060000
MOV #000200,@#172346
MOV #000401,@#SR0
INC @#60000
CLR @#SR0
020000/000001
060000/177777
Program completed.
.
-
Однооперандные команды работают по тем же правилам, что и двухоперандные. Получается, что в тесте VM3M2 проблему вызвала адресация (PC) ( или для чистого M-режима не надо включать MMU нулевым битом ).
...
Тест: VM3M4.SAV - проверяет TRAP250 в M-режиме MMU.
- - - Добавлено - - -
Тест: VM3M1a.SAV - проверяет, нужен ли нулевой бит SR0 для активации M-режима MMU.
-
На ВМ3
Код:
.RUN VM3M4
1801VM3 MMU M-mode test #4
ACF Abort
>>> Trap to 250 <<<
SR0/100403
PLF Abort
>>> Trap to 250 <<<
SR0/040405
RO Abort
>>> Trap to 250 <<<
SR0/020407
Program completed.
.RUN VM3M1A
1801VM3 MMU M-mode test #1a
MOV #020000,@#020000
MOV #060000,@#060000
MOV #000200,@#172346
MOV #000400,@#SR0
MOV @#60000,R1
R1/060000
MOV #000000,@#SR0
MOV #020000,@#020000
MOV #060000,@#060000
MOV #000400,@#SR0
MOV #111111,@#060000
CLR @#SR0
020000/111111
060000/060000
Program completed.
.
-
Ситуация прояснилась - M-режим возможен только при выключенном MMU, причём это не полноценный гибридный режим, так как нет возможности читать источник с использованием MMU, а можно только читать/писать приёмник.
Теперь придётся переписать все тесты M-режима без установки нулевого бита SR0.
...
Тест: VM3M3a.SAV - проверяет работу однооперандных команд в M-режиме MMU.
- - - Добавлено - - -
Тест: VM3M4a.SAV - проверяет TRAP250 в M-режиме MMU.
- - - Добавлено - - -
Тест: VM3M2b.SAV - обрабатывает прерывание в M-режиме MMU.
-
На ВМ3
Код:
.RUN VM3M3A
1801VM3 MMU M-mode test #3a
MOV #000000,@#020000
MOV #177777,@#060000
MOV #000200,@#172346
MOV #000400,@#SR0
TST @#60000
PSW/000004
CLR @#SR0
MOV #000000,@#020000
MOV #177777,@#060000
MOV #000200,@#172346
MOV #000400,@#SR0
INC @#60000
CLR @#SR0
020000/000001
060000/177777
Program completed.
.RUN VM3M4A
1801VM3 MMU M-mode test #4a
ACF Abort
>>> Trap to 250 <<<
SR0/100402
PLF Abort
>>> Trap to 250 <<<
SR0/040404
RO Abort
>>> Trap to 250 <<<
SR0/020406
Program completed.
.RUN VM3M2B
1801VM3 MMU M-mode test #2b
MOV #000200,@#172340
MOV #001000,SP
MOV #001111,@#000774
MOV #001111,@#020774
MOV #000400,@#SR0
MFPT
>>> Trap to 010 <<<
NOP
CLR @#SR0
000774/001364
020774/001111
MOV #000200,@#172340
MOV #000400,@#SR0
CLR (PC)
NOP
CLR @#SR0
Program completed.
.
-
.
Тест: VM3M5.SAV - проверяет команду MFPI в M-режиме MMU.
Тест: VM3M6.SAV - проверяет команду MTPI в M-режиме MMU.
-
На ВМ3
Код:
.RUN VM3M5
1801VM3 MMU M-mode test #5
MOV #020000,@#020000
MOV #040000,@#040000
MOV #060000,@#060000
MOV #050000,SP
MOV #011111,@#027776
MOV #011111,@#047776
MOV #000200,@#172344
MOV #000400,@#172346
MOV #000200,@#177646
MOV #030340,@#177776
MOV #000400,@#SR0
MFPI @#60000
CLR @#SR0
027776/020000
047776/000000
Program completed.
.RUN VM3M6
1801VM3 MMU M-mode test #6
MOV #020000,@#020000
MOV #040000,@#040000
MOV #060000,@#060000
MOV #050000,SP
MOV #030000,@#030000
MOV #050000,@#050000
MOV #000200,@#172344
MOV #000400,@#172346
MOV #000200,@#177646
MOV #030340,@#177776
MOV #000400,@#SR0
MFPI @#60000
CLR @#SR0
020000/030000
060000/060000
Program completed.
.