
Сообщение от
Alex_K
Да, останется.
Иначе и быть не могло - ведь тогда контроллер шины ВМ1 не мог бы формировать признак двойного зависания.
Кстати, в моей модели ВМ1 релизация блока прерываний USER-моды выглядит так:
Код:
try
{
SP -= 2;
word wSP = SP;
SP -= 2;
CheckAddrWrite(wSP);
WORD( wSP &(~1) ) = PSW;
CheckAddrWrite(SP);
WORD( SP &(~1) ) = PC;
}
catch(int)
{
return TrapTo_4();
}
PC = WORD( wVector );
PSW = BYTE( wVector +2 );
Любопытно, что у 1801ВМ1 чтение нового значения PSW из вектора прерывания происходит с копированием младшего байта и обнулением старшего, что является очевидной ошибкой.
Из-за этого процессор 1801ВМ1 вываливается из HALT-моды каждый раз, когда срабатывает блок прерываний USER-моды. Поэтому в HALT-моде процессора 1801ВМ1 допустимы только два прерывания: HALT (после команды HALT или сигнала IRQ1) и ЗАВИСАНИЕ, тогда как и любое аппаратное прерывание, и T-Trap, и Tpap_To_010 (например, после MFPT), и Trap_To_04 (например, после JSR R0) и любое программное прерывание типа EMT, IOT и т.п. - моментально выносят ВМ1 из HALT-моды.