Не, ну если руками установить стек не в 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.