Сообщение от
Alex_K
Начнём немного издалека. У нас была серия 16-разрядных ЭВМ Электроника НЦ со своей системой команд. На основе этой системы команд был сделан микроконтроллер 1801ВЕ1. Но в конце 1970-х годов произошёл так называемый DEC-переворот. МЭП переориентировался на выпуск PDP-11-совместимых компьютеров. На заводе "Процессор" в Воронеже делали полные копии компьютеров PDP-11. Ну а в Зеленограде стали делать свои микропроцессоры с системой команд PDP-11. Первым под эту раздачу попал 1801ВЕ1, его микрокод переделали и получился 1801ВМ1. Но всё дело в том, что DEC микропроцессоров не делала, их процессоры состояли из нескольких микросхем, и были микросхемы с микрокодом. Там была реализовано не только исполнение системы команд, но и пультовый отладчик, называемый у них MicroODT. Естественно в ПЛМ микропроцессора MicroODT впихнуть не удалось, потому в 1801ВМ1 сделали некое подобие неполноценного HALT-режима, а пультовый отладчик появился во внешней ПЗУ. Исполнялся он уже командами самого микропроцессора, было введено ещё две команды - START (000012) и STEP (000016). В 1801ВМ1 также не было команд EIS - MUL, DIV, ASH, ASHC.
Когда разрабатывали 1801ВМ2, то многое было учтено. Естественно в ПЛМ также не удалось впихнуть MicroODT, но здесь уже сделали полноценный HALT-режим, реализовали команды EIS на микропрограммном уровне. Но также ёмкости ПЛМ не хватало для реализации команд FIS. Поэтому поступили следующим образом - если был эмулятор FIS, то возникало не обычное прерывание, а прерывание HALT-режима. Прерывания HALT-режима не используют стек, а сохраняют счетчик команд и ССП в специальных регистрах-копиях, которые доступны в HALT-режиме. Таким образом для программы USER-режима всё прозрачно и она думает, что процессор поддерживает FIS. Эти эмуляторы реализованы в ПЗУ ДВК (МС 1201.02), УКНЦ и Союз-Неон.