Это скорее всего не косяк. В различных описаниях 1801ВМ1 писалось, что IRQ1 - безусловное не маскируемое прерывание (что как выяснилось, не совсем правда, таки маскируемое). Если оно происходит, то процессор бросает всё и начинает исполнять его. Т.е. по этой логике IRQ1 может прерывать исполнение инструкции как после чтения опкода, так и после чтения аргумента источника в трёхсловной команде, смотря на какой фазе произойдёт. А соображения здравого смысла (по крайней мере моего) говорят, что в пульт лучше переходить не с середины команды, а после её выполнения.
Просто как раз этот механизм мне не совсем понятен и я эмулирую его крайне упрощенно, в силу своего понимания происходящего.
Нажали СТОП -> приходит IRQ1 -> попытка вывалиться в пульт -> зависание по тайм-ауту записи в 177676 -> прерывание по вектору 4. И вот адрес выхода из прерывания по вектору 4 статистически в большинстве случаев указывает на слово, следующее за опкодом. Для однословных команд - это адрес следующей команды, для многословных - адрес аргумента источника. Вот как раз такую штуку моя текущая модель процессора делать не умеет.





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