это обсуждение я помню и да оба теста Титуса требуют RT-11, я уточнил - ситуация могла измениться, я мог пропустить пласт обсуждений (что бывало уже)
Спасибо.
Вид для печати
Это Вы про живые процессоры подключенные к DE0? На плате DE0 разве не выделить 64Кб под подключенный процессор от набортной памяти?
...
Я то про тесты модели процессора. Мне интересно как модель процессора проходит тест.
Впрочем, модель процессора не должна отличатся от прохождении теста платы М2.
Я тоже про модели. В DE0 нет свободных 64К набортной памяти, и не только в памяти дело - надо прицепить ROM, надо эмулировать ВП1-030 и прочее.
Те отладочные платы которые я подбираю и собираюсь поддерживать на них проект ДВК-на-ПЛИС - все имеют SDRAM, вот поэтому оно и должно быть с контроллером динамической памяти и унифицировано - как внутри, чтобы можно было брать любую модель процессора и периферии, так и снаружи - чтобы работало на любой плате из списка.
Найдено еще пару мелких ошибок, незначительно исправлен тестбенч и тест "Прерывания и исключения" тоже успешно пройден.
Отлично, приступаем к тесту плавающей точки, и тест как бы проходит, ну почти... Падает на последнем подтесте - прерывания во время плавающих инструкций.
Начинаю разбираться, а там в итоге происходит прерывание во время FMUL и указатель стека в этот момент оказывается нечетным :v2_jawdr:
Полез в микрокод, дизассемблировал кусочки, потом нашел исходники FIS от DEC, а там интересно. При выполнении FMUL/FDIV в стеке сохраняется PC чтобы освободить временно место, и в младшем бите SP сохраняется знак первого операнда, о как. При этом есть чекпойнты на проверку запроса на прерывание в кодах посреди циклов инструкции. Вот так оно работает, грузит аргументы, выгружает PC, начинает крутить цикл и тут, если вдруг прерывания - то бросай все, вокзал отходит, вся подготовка и промежуточные результаты пропадают, оно бросается обслуживать прерывание, о как. Но все не так однозначно - при абортировании инструкции по прерыванию состояние восстанавливается - PC загружается из памяти обратно (ага, чтобы сохранить PSW и потом снова PC выгрузить, просто скоростной экспресс, да) и младший бит указателя стека обнуляется. И вот смотришь на это дело - PC вгрузилось, а бит SP вот не очистился. И все микроинструкции есть, на месте.
Как оказалось в итоге, нарисован был лишний транзистор, вот он, во всей красе:
http://www.1801bm1.com/files/images/fii_int_test.jpg
Просто по чекпойнту оно попадало на адрес 0x593, а должно было на 0x592, на котором собственно и есть инструкция сброса младшего бита SP :)
В-общем, тест плавучки тоже успешно пройден, все заводские тесты модель проходит. А тесты у DEC очень неглупые написаны, раз такое ловят.
А на ВМ2 FIS организован на программном уровне, а не на микропрограммном. Там в стеке при прерывании оказывается адрес эмулятора FIS со значением большим 0160000, а также в сохраненном PSW установлен восьмой бит, чтобы возвратиться обратно в режим HALT. Из-за этой особенности некорректно работала RT11SJ без поддержки таймера. Описано это в МПСС № 05/1989 в статье "Ошибка в операционной системе для ДВК3" стр. 92-93.
Откуда на ДВК адрес больше 0160000 ? Теневое ПЗУ у 1201.02 располагается по адресам 0140000-0157776, а в странице ввода-вывода лежит теневое ОЗУ. Или у FIS-программы в этом теневом ОЗУ лежит стек? Зачем? FIS ведь работает с реальным стеком...
А вообще, грустно, что в нашей любимой RT-11 обнаружилась такая ошибка.
Тут не ошибка в RT-11. Я не думаю, что писавшие RT-11 знали, что существует такая вещь как 1801ВМ2...
Если бы авторы 1801ВМ2 реализовали FIS микропрограммно, как на "Электронике-60М", то тест исполнялся бы :)
Однако реализовали, как смогли:v2_dizzy_coder:... Большая часть п/о работала :) , пусть и медленно :(
- - - Добавлено - - -
Хотя по-хорошему, надо было думать насчёт FPU. FIS уже устарел. Если бы FPU пошёл бы в массы... Эх...
И ведь образец для передирания был - F11. Выпускался же массово. Немного работы напильником и ву-а-ля :v2_dizzy_roll:
КЖД же ведь передрали и никакие межведомственные склоки не помешали :) (я понимаю, что уровень разный). Но лёгких путей не искали - городили своё. 1801ВМ3 - получился не плохим. Но это было без 1801ВМ4 слабо... :(