Пока за весь микрокод не скажу, но почти все одноадресные инструкции начинаются так (пример для TST):
Ветвление по address mode сделано совсем ранним, на первом же микроадресе цепочки декодирования, таким образом выделяется отдельная ветка регистровых операций, что позволяет минимизировать число тактов исполнения и ускорить инструкции (уменьшить занимаемое ими число тактов). Причем тут же в первом цикле всегда запускается предвыборка по (PC)+ следующей инструкции. Но на адресе 01 PC уже имеет значение ".+2", если его позволить модифицировать, то инструкции типа ASL PC будут уже работать за значением ".+4". Поэтому если аргумент 0001112, то PC пока не меняем, выполняем саму операцию а потом (на адресе 11) запустим получение следующей инструкции уже по новому значению PC (результату операции). Прикол в том что TST работает по это же ветке, и TST PC будет извлекать следующую инструкцию дважды - получаем фантомный цикл.Код:if (dd address mode == 0)
01: A = PC
IR preload start, word read start
if (dd register == PC)
01: R12 = PC + 2
31: MCIR = 1012
49: PC = PC & 1777778, assign NZVC
11: next instruction
else
01: PC = PC + 2
31: MCIR = 1012
49: Rd = Rd & 1777778, assign NZVC,
MCIR poll, wait read
01: next instruction
else

