С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
PDP-11/83, Электроника МС0511 (УК-НЦ), DECserver 90M
Q-Bus: H9278-A, DLV11-J, DZQ11, DHV11, DELQA-M, LPV11, CQD-420/TM, DRV11
PMI: KDJ11-BF, MSV11-JE
VT220, CM7209
В архиве TDIV.zip :
TDIV1.SAV - тест стандартного деления чётного регистра ( без деления на 0 и без деления с переполнением ).
Пример работы:
Код:.TDIV1 Тестирование правильности выполнения команд процессора: Команда деления (частичный тест): DIV (even) - OK .
TDIV2.SAV - "визуализатор" работы нестандартных команд деления ( деление на 0, деление с переполнением и деление нечётного регистра ). Можно сначала запустить этот тест на "эталонной" системе, потом на "испытуемой", а затем построчно сравнить сохранённые логи.
Пример работы:
Код:.TDIV2 PSW[000] ; R0[000000] ; R1[000000] ; R2[000000] >>> DIV R2,R0 >>> PSW[007] ; R0[000000] ; R1[000000] PSW[000] ; R0[177777] ; R1[177777] ; R2[000000] >>> DIV R2,R0 >>> PSW[007] ; R0[177777] ; R1[177777] PSW[000] ; R0[100000] ; R1[000000] ; R2[177777] >>> DIV R2,R0 >>> PSW[002] ; R0[100000] ; R1[000000] PSW[000] ; R0[177774] ; R1[000000] ; R2[177774] >>> DIV R2,R0 >>> PSW[002] ; R0[177774] ; R1[000000] PSW[000] ; R0[177774] ; R1[000000] ; R2[000004] >>> DIV R2,R0 >>> PSW[012] ; R0[177774] ; R1[000000] PSW[000] ; R0[000004] ; R1[000000] ; R2[000004] >>> DIV R2,R0 >>> PSW[002] ; R0[000004] ; R1[000000] PSW[000] ; R0[177776] ; R1[177776] ; R2[177774] >>> DIV R2,R0 >>> PSW[000] ; R0[040000] ; R1[177776] PSW[000] ; R0[000002] ; R1[000002] ; R2[177774] >>> DIV R2,R0 >>> PSW[010] ; R0[100000] ; R1[000002] PSW[000] ; R0[177776] ; R1[177776] ; R2[000004] >>> DIV R2,R0 >>> PSW[010] ; R0[140000] ; R1[177776] PSW[000] ; R0[000002] ; R1[000002] ; R2[000004] >>> DIV R2,R0 >>> PSW[002] ; R0[000002] ; R1[000002] PSW[000] ; R0[000000] ; R1[000000] ; R2[000000] >>> DIV R2,R1 >>> PSW[007] ; R0[000000] ; R1[000000] PSW[000] ; R0[177777] ; R1[177777] ; R2[000000] >>> DIV R2,R1 >>> PSW[007] ; R0[177777] ; R1[177777] PSW[000] ; R0[100000] ; R1[100000] ; R2[177777] >>> DIV R2,R1 >>> PSW[002] ; R0[100000] ; R1[100000] PSW[000] ; R0[177776] ; R1[177776] ; R2[177774] >>> DIV R2,R1 >>> PSW[000] ; R0[177776] ; R1[177776] PSW[000] ; R0[000002] ; R1[000002] ; R2[177774] >>> DIV R2,R1 >>> PSW[010] ; R0[000002] ; R1[000002] PSW[000] ; R0[177776] ; R1[177776] ; R2[000004] >>> DIV R2,R1 >>> PSW[010] ; R0[177776] ; R1[177776] PSW[000] ; R0[000002] ; R1[000002] ; R2[000004] >>> DIV R2,R1 >>> PSW[002] ; R0[000002] ; R1[000002] .
Можно отметить, что процессор PDP-11/83 делит нечётные регистры точно так же, как и чётные, когда результат деления записывается в регистр, указанный в команде, а остаток - в указанный в команде регистр с установленным нулевым битом в номере ( поэтому, для команды DIV R2,R0 - сначала результат попадёт в R0, а затем остаток в R1, а для команды DIV R2,R1 - сначала результат попадёт в R1, а затем остаток - тоже в R1 ).
...
Там есть алгоритм определения процессора (основанный на частичном анализе того что уже определил загрузчик RT-11), но он не определяет процессоры ВМ1-ВМ2-ВМ3. Есть лучший алгоритм из автоконфигуратора RSX. Но он разумеется тоже про ВМ ничего не знает. В том и цель - хочу определитель написать с учетом советских вариантов там где отличить можно. Как отличить ВМ3 известно.
PDP-11/83, Электроника МС0511 (УК-НЦ), DECserver 90M
Q-Bus: H9278-A, DLV11-J, DZQ11, DHV11, DELQA-M, LPV11, CQD-420/TM, DRV11
PMI: KDJ11-BF, MSV11-JE
VT220, CM7209
form, Хорошо, тогда Фодос уже должен определять процессоры.
---------- Post added at 15:35 ---------- Previous post was at 15:04 ----------
Тест ВМ3
Код:.RUN TDIV1 Тестирование правильности выполнения команд процессора: Команда деления (частичный тест): DIV (even) - OK .RUN TDIV2 PSW[000] ; R0[000000] ; R1[000000] ; R2[000000] >>> DIV R2,R0 >>> PSW[003] ; R0[000000] ; R1[000000] PSW[000] ; R0[177777] ; R1[177777] ; R2[000000] >>> DIV R2,R0 >>> PSW[003] ; R0[177777] ; R1[177777] PSW[000] ; R0[100000] ; R1[000000] ; R2[177777] >>> DIV R2,R0 >>> PSW[002] ; R0[100000] ; R1[000000] PSW[000] ; R0[177774] ; R1[000000] ; R2[177774] >>> DIV R2,R0 >>> PSW[004] ; R0[000000] ; R1[000000] PSW[000] ; R0[177774] ; R1[000000] ; R2[000004] >>> DIV R2,R0 >>> PSW[004] ; R0[000000] ; R1[000000] PSW[000] ; R0[000004] ; R1[000000] ; R2[000004] >>> DIV R2,R0 >>> PSW[002] ; R0[000004] ; R1[000000] PSW[000] ; R0[177776] ; R1[177776] ; R2[177774] >>> DIV R2,R0 >>> PSW[000] ; R0[040000] ; R1[177776] PSW[000] ; R0[000002] ; R1[000002] ; R2[177774] >>> DIV R2,R0 >>> PSW[010] ; R0[100000] ; R1[000002] PSW[000] ; R0[177776] ; R1[177776] ; R2[000004] >>> DIV R2,R0 >>> PSW[010] ; R0[140000] ; R1[177776] PSW[000] ; R0[000002] ; R1[000002] ; R2[000004] >>> DIV R2,R0 >>> PSW[002] ; R0[000002] ; R1[000002] PSW[000] ; R0[000000] ; R1[000000] ; R2[000000] >>> DIV R2,R1 >>> PSW[003] ; R0[000000] ; R1[000000] PSW[000] ; R0[177777] ; R1[177777] ; R2[000000] >>> DIV R2,R1 >>> PSW[003] ; R0[177777] ; R1[177777] PSW[000] ; R0[100000] ; R1[100000] ; R2[177777] >>> DIV R2,R1 >>> PSW[002] ; R0[100000] ; R1[100000] PSW[000] ; R0[177776] ; R1[177776] ; R2[177774] >>> DIV R2,R1 >>> PSW[000] ; R0[177776] ; R1[040000] PSW[000] ; R0[000002] ; R1[000002] ; R2[177774] >>> DIV R2,R1 >>> PSW[010] ; R0[000002] ; R1[100000] PSW[000] ; R0[177776] ; R1[177776] ; R2[000004] >>> DIV R2,R1 >>> PSW[010] ; R0[177776] ; R1[140000] PSW[000] ; R0[000002] ; R1[000002] ; R2[000004] >>> DIV R2,R1 >>> PSW[002] ; R0[000002] ; R1[000002]
Увы, он всего лишь заменяет буржуйские названия на советские и ничего больше.
---------- Post added at 18:42 ---------- Previous post was at 18:37 ----------
На 11/83...Код:.RU TDIV1 +ESTIROWANIE PRAWILXNOSTI WYPOLNENIQ KOMAND PROCESSORA: +OMANDA DELENIQ (^ASTI^NYJ TEST): DIV (even) - OK .RU TDIV2 PSW[000] ; R0[000000] ; R1[000000] ; R2[000000] >>> DIV R2,R0 >>> PSW[007] ; R0[000000] ; R1[000000] PSW[000] ; R0[177777] ; R1[177777] ; R2[000000] >>> DIV R2,R0 >>> PSW[007] ; R0[177777] ; R1[177777] PSW[000] ; R0[100000] ; R1[000000] ; R2[177777] >>> DIV R2,R0 >>> PSW[002] ; R0[100000] ; R1[000000] PSW[000] ; R0[177774] ; R1[000000] ; R2[177774] >>> DIV R2,R0 >>> PSW[002] ; R0[177774] ; R1[000000] PSW[000] ; R0[177774] ; R1[000000] ; R2[000004] >>> DIV R2,R0 >>> PSW[012] ; R0[177774] ; R1[000000] PSW[000] ; R0[000004] ; R1[000000] ; R2[000004] >>> DIV R2,R0 >>> PSW[002] ; R0[000004] ; R1[000000] PSW[000] ; R0[177776] ; R1[177776] ; R2[177774] >>> DIV R2,R0 >>> PSW[000] ; R0[040000] ; R1[177776] PSW[000] ; R0[000002] ; R1[000002] ; R2[177774] >>> DIV R2,R0 >>> PSW[010] ; R0[100000] ; R1[000002] PSW[000] ; R0[177776] ; R1[177776] ; R2[000004] >>> DIV R2,R0 >>> PSW[010] ; R0[140000] ; R1[177776] PSW[000] ; R0[000002] ; R1[000002] ; R2[000004] >>> DIV R2,R0 >>> PSW[002] ; R0[000002] ; R1[000002] PSW[000] ; R0[000000] ; R1[000000] ; R2[000000] >>> DIV R2,R1 >>> PSW[007] ; R0[000000] ; R1[000000] PSW[000] ; R0[177777] ; R1[177777] ; R2[000000] >>> DIV R2,R1 >>> PSW[007] ; R0[177777] ; R1[177777] PSW[000] ; R0[100000] ; R1[100000] ; R2[177777] >>> DIV R2,R1 >>> PSW[002] ; R0[100000] ; R1[100000] PSW[000] ; R0[177776] ; R1[177776] ; R2[177774] >>> DIV R2,R1 >>> PSW[000] ; R0[177776] ; R1[177776] PSW[000] ; R0[000002] ; R1[000002] ; R2[177774] >>> DIV R2,R1 >>> PSW[010] ; R0[000002] ; R1[000002] PSW[000] ; R0[177776] ; R1[177776] ; R2[000004] >>> DIV R2,R1 >>> PSW[010] ; R0[177776] ; R1[177776] PSW[000] ; R0[000002] ; R1[000002] ; R2[000004] >>> DIV R2,R1 >>> PSW[002] ; R0[000002] ; R1[000002] .
PDP-11/83, Электроника МС0511 (УК-НЦ), DECserver 90M
Q-Bus: H9278-A, DLV11-J, DZQ11, DHV11, DELQA-M, LPV11, CQD-420/TM, DRV11
PMI: KDJ11-BF, MSV11-JE
VT220, CM7209
Тест Эл.85
(захват с видеокарты)
Теперь понятны отличия выполнения нестандартных делений процессорами 1801ВМ3 и PDP-11/83:
1. Деление на 0
Код:PDP-11/83 : PSW[000] ; R0[000000] ; R1[000000] ; R2[000000] >>> DIV R2,R0 >>> PSW[007] ; R0[000000] ; R1[000000] 1801ВМ3 : PSW[000] ; R0[000000] ; R1[000000] ; R2[000000] >>> DIV R2,R0 >>> PSW[003] ; R0[000000] ; R1[000000]
2. Деление с переполнением
Код:PDP-11/83 : PSW[000] ; R0[177774] ; R1[000000] ; R2[177774] >>> DIV R2,R0 >>> PSW[002] ; R0[177774] ; R1[000000] PSW[000] ; R0[177774] ; R1[000000] ; R2[000004] >>> DIV R2,R0 >>> PSW[012] ; R0[177774] ; R1[000000] PSW[000] ; R0[000004] ; R1[000000] ; R2[000004] >>> DIV R2,R0 >>> PSW[002] ; R0[000004] ; R1[000000] 1801ВМ3 : PSW[000] ; R0[177774] ; R1[000000] ; R2[177774] >>> DIV R2,R0 >>> PSW[004] ; R0[000000] ; R1[000000] PSW[000] ; R0[177774] ; R1[000000] ; R2[000004] >>> DIV R2,R0 >>> PSW[004] ; R0[000000] ; R1[000000] PSW[000] ; R0[000004] ; R1[000000] ; R2[000004] >>> DIV R2,R0 >>> PSW[002] ; R0[000004] ; R1[000000]
3. Деление нечётного регистра
Код:PDP-11/83 ( сохраняет в R1 остаток деления ): PSW[000] ; R0[177776] ; R1[177776] ; R2[177774] >>> DIV R2,R1 >>> PSW[000] ; R0[177776] ; R1[177776] PSW[000] ; R0[000002] ; R1[000002] ; R2[177774] >>> DIV R2,R1 >>> PSW[010] ; R0[000002] ; R1[000002] PSW[000] ; R0[177776] ; R1[177776] ; R2[000004] >>> DIV R2,R1 >>> PSW[010] ; R0[177776] ; R1[177776] 1801ВМ3 ( сохраняет в R1 результат деления ): PSW[000] ; R0[177776] ; R1[177776] ; R2[177774] >>> DIV R2,R1 >>> PSW[000] ; R0[177776] ; R1[040000] PSW[000] ; R0[000002] ; R1[000002] ; R2[177774] >>> DIV R2,R1 >>> PSW[010] ; R0[000002] ; R1[100000] PSW[000] ; R0[177776] ; R1[177776] ; R2[000004] >>> DIV R2,R1 >>> PSW[010] ; R0[177776] ; R1[140000]
Поведение 1801ВМ3 при делении на 0 и делении нечётного регистра полностью понятно, но какой логике следует 1801ВМ3 при делении с переполнением - немного неясно.
...
Друзья, не забываем запускать тест TSTVM2 v0.3a на ВМ3 и других машинах. Интересует последняя страница теста, где тест команды MARK.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)