А, ну да.
Зачем делать FIS когда в ВМ2 делает это прошивка, а в ВМ3 эмулятор ЕМ.SYS.
Точно. Что-то я подумал что это входит в BIS.
Картинки можно найти в веб-архиве. Собственно часть из них я восстановил вот сюда:
http://www.emuverse.ru/wiki/%D0%A3%D...B0%D0%BD%D0%B4
Во время работы над демкой Good Apple написал много тестов производительности. Мне нужно было знать точное время выполнения команд и - главное - целых блоков кода (выяснилось, что в силу архитектурных особенностей контроллера динамической памяти БК, сумма длительностей взятых по отдельности команд может не совпадать с реальной длительностью всего блока кода). Нужно это было потому, что я хотел выводить звук на Covox ровно каждые 176 тактов процессора, дабы поддерживать постоянную частоту звука 22727 Гц безо всякого джиттера.
Расчёт проводил как для медленной динамической памяти, так и помещая код в быструю верхнюю память контроллера жесткого диска. Результаты, конечно, разные.
Решил выложить часть тестов, чтобы все могли сверить свои эмуляторы :)
Исходники здесь же. Можете тестировать произвольные блоки кода и любые команды по отдельности.
Вложение 66398
Вскоре собираюсь доделать тесты до конца (все команды) и выложить в отдельную тему в разделе БК-0010/11
Пока что промежуточные исходники и бинарники здесь.
Несколько примеров для БК-0010-01 3 МГц:
Аргументы fast, fm, f предназначались для обращения в fast memory, но по-моему там идёт обращение к тому типу памяти, который указан в заголовке теста. То есть для теста 45com-lo это будет обращение в low (нижнюю медленную) память.
http://thesands.ru/bk0010/temp/45com-lo.jpg
Ещё картинки:
Скрытый текст
http://thesands.ru/bk0010/temp/45com-hi.jpg
http://thesands.ru/bk0010/temp/speed-lo.jpg
http://thesands.ru/bk0010/temp/speed-hi.jpg
http://thesands.ru/bk0010/temp/test4lo.jpg
http://thesands.ru/bk0010/temp/test4hi.jpg
http://thesands.ru/bk0010/temp/test5lo.jpg
http://thesands.ru/bk0010/temp/test5hi.jpg
[свернуть]
Производительность понятно как посчитать: 3 мегагерца делим на число тактов команды. Например, получаем 250'000 операций NOP в секунду. Отсюда одна команда NOP длится 4 микросекунды. В условиях выполнения в обычной медленной памяти.
Вопрос к практикам, имевшим дело с ВМ2, по команде 000020 "ЧПТ" :
https://pic.maxiol.com/thumbs2/15757...1452763.20.jpg
Действие - переслать содержимое РНП в R0.
Исполняется только в режиме пульта, при установленном бите 000400 ССП.
Какова её сигнатура на МПИ - т.е. не лезет ли она в стек, или еще куда-то , кроме РНП ?
На МПИ реализуется цикл "Безадресное чтение". В этом цикле выставляются только сигналы SEL и DIN, SYNC неактивен. Соответственно на шину должно выставится содержимое безадресного регистра, отвечать RPLY не надо. Этот же цикл реализуется и при прерываниях режима HALT, таких как останов, двойное зависание, ошибка получения адреса вектора прерывания, обработка команд FIS.
Соответственно ни в какой стек не лезет.
МС1201.01 с процессором 1801ВМ1Г.
Тест от Титуса.
ASH (test 1) -ERROR 0x47F3 / TRAP 10
ASH (test 2) -ERROR 0xB7C3 / TRAP 10
ASHC (even) -ERROR 0x69EB / TRAP 10
ASHC (odd) -ERROR 0x32A3 / TRAP 10
DIV (even) -ERROR 0x9E4A / TRAP 10
DIV (odd) -ERROR 0x43D5 / TRAP 10
Остальные команды- OK.
Тест SPEED показывает только сложение.
RT11 по команде SH CON показывает EIS.
VM1SPD.SAV
Есть отличия измерения между 1801ВМ1А И 1801ВМ1Г (Платы разные).
На А показывает более правдоподобную частоту 3,998,000.
На Г показывает 1,489,000.
Притом на Г иногда проскакивает более правдоподобная частота 4,110,000.
Код:1801VM1 Mhz Speed Meter v1.0
177712/177400
CPU Clock = 4'110'000
CPU Clock = 1'488'000
CPU Clock = 1'488'000
CPU Clock = 1'488'000
Press <any_key> to exit..
CPU Clock = 1'489'000
Program completed.
EIS там берётся из параметра, заданного при конфигурации системы:
http://www.kpxx.ru/DEC/PDP-11/Softwa...ked/RESHRD.MACКод:MOV $CNFG2(R5),R4 ; and config word #2
...
90$: BIT #C2.EIS,R4 ;How about EIS?
BEQ 100$ ;Branch if no
PRINT EISET,<Extended Instruction Set (EIS)>
Наличие EIS определяется вторичным загрузчиком при загрузке системы:
http://www.kpxx.ru/DEC/PDP-11/Softwa...ked/BSTRAP.MACКод:;+
; Check if the processor has FULL extended instruction set.
;-
MOV #<3>,R3 ;Set up R3 to ...
MUL R3,R3 ; ... test for EIS
CMP #<3*3>,R3 ;Did it multiply right?
BEQ 40$ ;Yes
CLR @R1 ;No, don't set the bit
CK.R1 TSEIS,+2
40$: BIS (R1)+,@R0 ;Set bit if EIS present and working