size_t писал(а): ↑10.01.2021,10:33
а не следует ли генерировать ОС спецом под эту машину?
В SYSGEN от RT полтора вопроса о специфики процессора.
Один - это - будет ли поддержка плавающей точки - по сути приводит к тому, что когда идёт переключение между заданиями (FB монитор) или между программой и системой - будут ли сохранятся/восстанавливаться регистры и статус состояния плавающей точки. То есть, в случае SJ/SB мониторов - вообще не требуется, что бы программа могла использовать команды плавающей точки, если процессор их поддерживает. Ну а если их нет, а монитор сгенерён с поддержкой - просто ничего не сохраняется/не восстанавливается.
Пол вопроса - это вопросы про разные варианта XM монитора - тут требуется, что был диспетчер памяти (минимум, без него не один XM вариант не загрузится) и (для двух вариантов), что бы процессор поддерживал разделение памяти - код-данные - и без этого эти два варианта не загрузятся.
В целом же можно сказать, что SJ/SB (в первую очередь) и FB мониторы написаны на базовом наборе команд, который есть у всех процессоров, а XM семейство предполагает, что у процессора с ДП есть команды из расширенного набора - и они их используют.
И самое главное. Независимо от того, что выбрано при генерации монитора, если программа ПОПРОБУЕТ ИСПОЛЬЗОВАТЬ что то (команду процессора, например), чего нет в текущей системе - это ЕЁ ПРОБЛЕМЫ. Никакой попытки разобраться - почему прилетело прерывание по четвертому или десятому вектору - RT не делает.
Показателен пример со SPEED - первые два вылета - это как раз попытка использовать команды, которых на PDP-11/04 нет. Решение проблемы - написать код так, что бы эти команды не использовались.
Подозреваю, что DAY пытается использовать SOB (более вероятно) или MUL/DIV (менее вероятно). Ну, может быть ещё и ASH/ASHC, но на них я бы поставил в последнюю очередь.
Как решить - попробовать найти вариант DAY, который пойдёт на -04 (я бы не стал ставить на этот вариант) или - дизассемблировать, восстановить исходник и убрать расширенные команды
Когда меня перестали устраивать особенности SPEED - я пошёл по второму пути - дизассемблировал, восстановил исходник (уже на этом этапе можно убрать "неправильные" команды), а потом сильно покопался и получил SPEED3. Правда, цели - борьба с расширенными командами - не ставилось, так что первый вариант SPEED3, который я выложил, тоже не пошёл бы на -04-ой, но я правил код синхронно в SPEED и SPEED3