.
Не так давно мы удивлялись, почему в HALT-моде команда MFPI SP пишет в стек не USP, а KSP.
Но чему удивляться, если регистр SP предыдущей моды задаётся битом 13 в PSW, а при входе в HALT-моду этот бит обнуляется.
Новый вариант теста при входе в пульт корректно устанавливает предыдущую моду в PSW :
- - - Добавлено - - -Код:.ASect . = 0 Jmp @#Next // Точка входа пульта. . = 24 .Word Start // Адрес старта. .Word 340 Start: Mov #140340, @#177776 // Установить USER-моду Mov #4444, SP // Стек USER-моды Mov #340, @#177776 // Установить KERNEL-моду Mov #2222, SP // Стек KERNEL-моды HALT // Установить HALT-моду Wait Next: MFPI SP // Запись KSP в стек Mov #30340, @#177776 // Установить PrevMode=USER MFPI SP // Запись USP в стек Nop Wait
Новый тест: MFPI.SAV - проверяет работу команды MFPI SP в режиме MMU16 для всех комбинаций текущей и предыдущей моды.
Запускать на машинах с диспетчером памяти. На эмулируемой ДВК-3 результат такой :
Код:.RU MFPI MFPI SP command test. MOV #140340,@#177776 MOV #44444, SP MOV #000340,@#177776 MOV #22222, SP MFPI SP 022220/022222 MOV #030340,@#177776 MFPI SP 022216/044444 MOV #140340,@#177776 MFPI SP 022214/000000 044442/022216 MOV #170340,@#177776 MFPI SP 022212/000000 044440/044442 Program completed. .




Ответить с цитированием