Не, ну если руками установить стек не в 0, то оно начинает работать нормально. Я это сразу проверил, но это ничего не объясняет.
С какого бодуна команда NOP лезет в стек?
Не, ну если руками установить стек не в 0, то оно начинает работать нормально. Я это сразу проверил, но это ничего не объясняет.
С какого бодуна команда NOP лезет в стек?
Я думаю, это не команда NOP, а команды G и P - надо смотреть логику их выполнения
Я с таким же сталкивался на 1831ВМ1 и J11, если настроить при старте сразу выход в MicroODT
А чего его там смотреть - первые пять (примерно) команд я уже наизусть помню. А вот чего там делается с 430 адреса - не, не смотрел
- - - Добавлено - - -
Я на вскидку полазал по коду, но где там MicroODT - не нашёл. Может, Vslav подскажет...
Ну, где там ODT вроде понятно, и обработчик команды G есть:Но тут надо знать знать внутреннюю архитектуру, систему команд... Я об этом и говорил, что потроха процессора для меня пока загадка.Код:cmd_g: mw RDSTL,PCL ; ll 0,RIRL ; jsr putch ; jsr putch ; sw RPSWL,RPSWL ; lcf NZVC,RPSWL ; jmp 1$ ; ; .loc 0x196 ; 1$: ri i4 ; reset T-bit interrupt jmp 2$ ; ; .loc 0x19A ; 2$: si i5 ; disable interrupts jmp resop ; ; .loc 0x19E ; resop: jsr sinit ; performs RESET jmp rsvc0 ; instruction
Мой тест из ODT по @1622G тоже на LSI-11 не стартует, и тоже код 3 - двойная ошибка шины светится. Если предварительно установить SP - работает. Если запретить прерывание таймера - тоже работает. Похоже оно пытается таймер обработать сразу и умирает. Почему пытается - непонятно, прерывания должны быть запрещены.
Интересно получается. Попробовал повторить эксперимент с отключенным таймером.Ситуация изменилась. Теперь процессор влетает в двойной таймаут шины ровно 1 раз, перед выполнением кода загрузчика. А после выполнения первой же инструкции все начинает работать. Действительно, при этом PSW=0, прерывания должны быть запрещены. Странно.Код:000000 @172140/000040 37 172142/000000 0 @0G 000000 @M000013 @R6/177774 @P RT-11SJ V05.01 ?KMON-F-File not found DK:STARTS.COM .
Проверить бы это на реальной электронике-60. Только где ж ее взять...
А почему запрет прерываний устанавливается в 5-м разряде? Вроде в LSI-11 5-й и 6-й разряды не используются, запрет прерываний устанавливается в 7-м разряде.
Сигнал RESET по идее должен сбросить и внутренний триггер сетевого таймера в процессоре.
forth32, а какие у вас в первичном загрузчике значения ячеек 0100 и 0102. В стандартном драйвере там нули, т.е. будет перезапуск первичного загрузчика. Также в стандартном драйвере после команды JMP исполняется команда установки указателя стека MOV #10000, SP.
Последний раз редактировалось Vslav; 04.02.2021 в 00:27.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)