Смелое предположение, только вот в HALT-режиме по данному адресу ничего нет. Да и после сохранения PC и PSW после IOT все равно выходит на исполнение на нулевой адрес.
Я просто не знаю почти ничего о структуре ВМ3, пытаюсь предположить варианты. Чтобы далеко за примером не ходить - возьмем тот же ВМ3. В обычном режиме стоит нам включить MMU и вектор IOT перестанет соответствовать адресу 20. Может при переходе в HALT режим происходит то же самое...
Если предположение верно, то все возражения ошибочны.
1. По аресу HALT-вектора ничего нет
HALT-прерывание по вектору 020000 должно выполняться следующим образом: 20000 -> HSP ; PSW -> -(HSP) ; PC-> -(HSP) ; 000 -> PC ; 340 -> PSW
HALT-прерывание по вектору 000020 должно выполняться следующим образом: 00020 -> HSP ; PSW -> -(HSP) ; PC-> -(HSP) ; 000 -> PC ; 340 -> PSW
Оба случая полностью подтверждены тестами.
2. IOT все равно выходит на исполнение на нулевой адрес
Именно так и должны отрабатываться HALT-прерывания - загрузка PC и PSW производится из скрытого вектора, содержащего 000 и 340.
Но на диаграмме не было даже попыток чтения памяти по другим адресам после IOT. По адресу 1352 считался IOT, затем в рамках конвеера по 1354 считался JSR R0,LABEL (4067). Длинная пауза, потом по 16 и 14 записывается 340 и 1354, снова пауза, ну и потом пошло всё исполняться с нулевого адреса.
Возникает предположение, что по совместительству регистр HSP в обычном режиме используется как временный, например для чтения вектора.
- - - Добавлено - - -
Под вектором подразумевается чтение из памяти новых значений PC и PSW. А так это точка начального пуска. В качестве примера запуск по питанию 1801ВМ1, а вот 1801ВМ2 в данном случае имеет полноценный вектор.