Последний раз редактировалось Vslav; 12.04.2013 в 00:40. Причина: опечатки
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Точно! Там нулевая задержка RPLY, поэтому "дырки" в SYNC выглядят такими большими.
Тогда при случае можно будет много чего протестировать.
Тест команды HALT имеет самый простой код - сплошные нули.
Т.к. команда HALT всегда вызывает HALT-Trap, то имея эту команду ( код 000000 ) на стартовом адресе - мы должны получить зацикленный HALT-Trap. В самом начале можно NOP поместить ( код 0240 ), чтобы отделить HALT от стартовой последовательности.
Для 1801ВМ2 ( и тем более в составе УКНЦ ) нерешённых задачек ещё больше, чем для 1801ВМ1 !!!
Тестовая последовательность:
Результат:Код:000240 ; $1: NOP 000000 ; HALT 000775 ; BR $1
При исполнении HALT:
- выполняется цикл DAT I/O и устанавливается бит 3 в регистре SEL1
- выполняется цикл DAT O, запись в 177676 - попытка сохранить PSW
- так как 177676 в БК не реализован - возникает тайм-аут шины
- тут любопытно (на картинке не видно в таком масштабе, к сожалению), после самого первого тайм-аута после аппаратного сброса процессор выполняет (пытается выполнить) запись (слова - WTBT низкий, но это значит слово по моему опыту) по адресу 154731 (единичка младшая игнор). Операция со стеком?
- дальше цикл уже повторяется без вариаций - установка бита 3 в 177716 и попытка записи по 177676
К сожалению, ответа на вопрос куда уходит ВМ1 после HALT пока нет. Думаю что я буду дорабатывать свой эмулятор, добавлю поддержку циклов DAT O и DAT I/O, тогда можно будет поддержать транзакции к 177674/6 и узнать, куда оно таки переходит.
Посмотрим в каком оно состоянии приедет, покупалось-то по "мусорной" цене. Работоспособность неизвестна, сначала в порядок попытаюсь привести, а у меня уже запасы КМ-ок к концу подходят.
Последний раз редактировалось Vslav; 12.04.2013 в 09:28. Причина: Стилистические улучшения текста
У процессора 1801ВМ1 есть и другие загадочные особенности.
1. Штраф невзаимности - имеет место всегда, когда первый аргумент не обращается к памяти, а второй обращается. Из-за этого команда CMP (R0), R0 выполняется гораздо быстрее, чем CMP R0, (R0)
А как это выглядит на шине..
Для проверки нужно сравнить две последовательности:
поместив в R0 адрес BR.Код:021000 ; CMP (R0), R0 000776 ; BR .-2. 020010 ; CMP R0, (R0) 000776 ; BR .-2.
...
2. Штраф второго операнда - из-за него команда TST (R0) выполняется быстрее, чем команда CMP (R0), R0
Для проверки нужно сравнить две последовательности:
поместив в R0 адрес BR.Код:005710 ; TST (R0) 000776 ; BR .-2. 021000 ; CMP (R0), R0 000776 ; BR .-2.
Так вот оно что!..
А ещё интересно время выполнения (в тактах) таких команд:
MOV (R0)+,(R1)+ 44 такта
MOV (R0),(R1)+ 44 такта
MOV (R0)+,(R1) 40 тактов
MOV (R0),(R1) 40 тактов
- - - Добавлено - - -
Удалось в итоге побороть проблему с уровнем видеосигнала?
- - - Добавлено - - -
Вдруг осознал, что на 4-процессорной БКшке мы могли бы проигрывать 4-канальную трекерную музыку через 4 Covox’а![]()
manwe.pdp-11.ru
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)