PDA

Просмотр полной версии : Разрядность мантиссы в различных языках



nzeemin
20.05.2016, 10:52
Вот такой вопрос на StackOverflow-RU
http://ru.stackoverflow.com/questions/513132/
благодаря которому имеем способ обнаружения разрядности мантиссы.


REAL Y=2.0, X=1.0, E=1.0;
DO (E=E/2.0; Y=X+E;
) WHILE (Y<>1.0)

Предлагаю применить этот алгоритм для получения точности чисел в различных диалектах Бейсика и других языков, используемых на советских компьютерах.

Для Бейсик-Вильнюс на УКНЦ (кассета ПЗУ):


10 Y=2.0
11 X=1.0
12 E=1.0
20 E=E/2.0
25 Y=X+E
30 N=N+1
40 IF Y<>1.0 GOTO 20
50 PRINT N

Результат -- 25

anasana
20.05.2016, 12:17
https://img-fotki.yandex.ru/get/45537/36406348.5/0_ec3a4_3bdc541f_L.png (https://fotki.yandex.ru/next/users/lodedome/album/130184/view/967588)
Бейсик-П версия 1.1 Электроника 85 (эмулятор)
25

nzeemin
20.05.2016, 12:31
УКНЦ дисковый Бейсик (DBAS.SAV, ВИЛЬНЮС 1988.09.28):
https://img-fotki.yandex.ru/get/51809/7448436.8/0_a03d7_b6013561_orig.png (https://fotki.yandex.ru/next/users/nzeemin/album/95562/view/656343)

marinovsoft
20.05.2016, 12:42
Бейсик-Корвет 2.0 (из ПЗУ, эмулятор)
57220

25

MiX
20.05.2016, 12:48
nzeemin, Не знаю в тему или нет, есть две программки мантиссы из восьмеричного и десятичного числа, возможно пригодятся.

Здесь. (http://zx-pk.ru/threads/16861-poisk-fajlov-dlya-uknts-dvk.html?p=667226&viewfull=1#post667226)

liberation
20.05.2016, 13:33
Бейсик 2.0 ПК-01 "Львов" (эмулятор)
25

avivanov76
20.05.2016, 13:53
Только оно считает не размер поля мантиссы, а число значащих разрядов. Потому что на x86 дает 24, хотя там 23 и знаковый бит.

Alex_K
20.05.2016, 19:05
Для Бейсик-Вильнюс на УКНЦ:
Результат -- 25
В УКНЦ Бейсик-Вильнюс пользуется командами FIS, а они используют вещественные числа одинарной точности. Мантисса в эмуляторе FIS всегда нормализована, т.е. самый старший разряд всегда равен единице и он не представляется. Всего в мантиссе 23 явных разряда и один старший скрытый, итого 24 разряда. В этом алгоритме небольшой недочет, к N прибавляется единица на последней итерации, когда мантисса уже вылезла из своей разрядности.

avivanov76
21.05.2016, 14:34
А я что-то не пойму: у интеля и дека мантисса сделана почти одинаково. 23 явных разряда и 1 скрытый. Скрытый разряд и экспонента у нас остаются одинаковыми (мы прибавляем к единице число, меньшее единицы) и по всем видимым разрядам мантиссы бежит единичка.
У Интела мантисса 1.0 =< (1.[23 разряда]) < 2.0 и смещение экспоненты 127. Выглядит это так:

3FC00000
3FA00000
3F900000
3F880000
3F840000
3F820000
3F810000
3F808000
3F804000
3F802000
3F801000
3F800800
3F800400
3F800200
3F800100
3F800080
3F800040
3F800020
3F800010
3F800008
3F800004
3F800002
3F800001
3F800000


У Дека мантисса 0.5 =< (0.1[23 разряда]) < 1.0 и смещение экспоненты 128. Выглядеть должно как-то так:

40C00000
40A00000
40900000
40880000
40840000
40820000
40810000
40808000
40804000
40802000
40801000
40800800
40800400
40800200
40800100
40800080
40800040
40800020
40800010
40800008
40800004
40800002
40800001
40800000


Так почему на Интеле результат 24, а на Деке 25?

Alex_K
21.05.2016, 21:12
Так почему на Интеле результат 24, а на Деке 25?
Подождите немного, ближе к вечеру выложу результаты по DEC-у. Довольно интересные.

- - - Добавлено - - -

Для работы с числами с плавающей запятой в PDP-11 применяются команды FIS и FP-11.

Команды FIS используют только вещественные числа одинарной точности и имеют только четыре команды - FADD (сложение), FSUB (вычитание), FMUL (умножение) и FDIV (деление). Эти команды реализованы на PDP-11 35/40 (блок KE11-F) и LSI-11 (блок KEV-11). Соответственно, есть эти команды на "Электронике-60", как функциональном аналоге LSI-11. В процессорах серии 1801/1806 эти команды на аппаратном уровне не реализованы, но процессоры 1801ВМ2 и 1806ВМ2 содержат аппаратную поддержку для программной эмуляции команд FIS. Суть этой поддержки состоит в том, что при исполнении команд FIS процессор производит прерывание в HALT-режим по вектору SEL010, и данный вектор содержит адрес программы эмуляции команд FIS обычными командами микропроцессора. Данные эмуляторы FIS есть в УКНЦ, ДВК на базе платы МС1201.02 и в Союз-Неон ПК-11/16.

Команды FP-11 содержат более большой набор команд и могут работать с вещественными числами как одинарной, так и двойной точности. Реализованы во многих системах PDP-11, например на базе процессора J-11. В отечественной схемотехнике это сборки 1811 (аналог F-11), 1831 (аналог J-11) и сопроцессор 1801ВМ4, работающий в паре с 1801ВМ3.

Вещественные числа одинарной точности представляются следующим образом:


15
14






07
06





00


s
Порядок
Старшая часть мантиссы




15














00


Младшая часть мантиссы



S - знаковый разряд, 1 - это минус. Порядок задается числом от 0 до 255, при этом порядок равный нулю используется для задания вещественного нуля, в иных случах он интерпретируется как 2(порядок-128), т.е. порядок может принимать значения от 2-127 до 2+127, или от 5,877471761E-39 до 1,7014118326E+38. Мантисса – 23 разряда дробной части с двоичной запятой слева. Мантисса всегда нормализована, то есть самый старший разряд справа от двоичной запятой всегда равен единице, является скрытым (избыточным) и он интерпретируется как 2–1. Остальные разряды мантиссы интерпретируются от 2–2 до 2–24. Соответственно, мантисса может принимать значения от 0.5 до 0.99999994. Таким образом вещественное число представляется формулой знак*2(порядок-128)*мантисса. По абсолютной величине самое малое число составляет 2.9387358805E–39, а самое большое 1,7014117311E+38.

Вещественные числа двойной точности уже состоят из 64 разрядов, при этом размер порядка остался таким же, а мантисса соответственно увеличена на 32 разряда, итого 55 разрядов. Таким образом диапазон представления остался таким же, а точность увеличена.

Для тестов удобно использовать языки высокого уровня Паскаль и Си для операционной системы RT-11. Язык Паскаль использует для операций с числами с плавающей запятой команды FIS (в Паскале это тип real), а язык Си команды FP-11 (тип float для чисел одинарной точности и тип double для чисел двойной точности). В данных языках предусмотрено, что на запускаемых системах могут отсутствовать команды FIS и FP-11 и при линковке к исполнимым модулям добавляются эмуляторы данных команд. При отсутствии команд возникает прерывание TRAP10 и программы при старте с помощью системного запроса .TRPSET перехватывают вектор 10. Если же перед запуском программы изменить вектор 10 с помощью команды D=10 12,0, то при первом применении команд FIS/FP-11 произойдет выход в пульт. Так можно узнать, есть ли аппаратная поддержка этих команд.

Далее будут тестовые программы на Паскале и Си и результаты их работы.

MiX
21.05.2016, 21:36
Alex_K, Процессор 1801ВМ1 с драйвером EM.SYS тоже может FIS.

Alex_K
21.05.2016, 21:59
По аналогии с программой проверки разрядности мантиссы, предложенной nzeemin, написана программа выводящая результаты каждой итерации:

program MANTP;
var X,Y,E:real; N:integer;
begin
X:=1.0; E:=1.0;
N:=0;
repeat
E:=E/2.0; Y:=X+E;
N:=N+1;
writeln('E=',E:12:10,' Y=',Y:12:10,(Y-X):12:10,' N=',N:2);
until Y=1.0
end.

Неприятным моментом стало то, что Паскаль при выводе вещественных чисел, после запятой выводит только шесть десятичных разрядов, если число больше единицы, а вот если меньше, то уже все. Поэтому и сделан вывод Y-X, где X=1.0, чтобы полностью посмотреть все числа за запятой.
Программа запускалась на эмуляторе ДВК Patron-а в конфигурациях с процессорами 1801ВМ1 (используется эмулятор FIS Паскаля) и 1801ВМ2 (используется эмулятор в ПЗУ 1801РЕ2-055). Также была запущена на УКНЦ (эмулятор в ПЗУ УКНЦ). В эмуляторе EmuStudio Союз-Неон Titus-а оценить не удалось, т.к. там не сделана эмуляция вызова команд FIS по вектору SEL010, хотя в EmuStudio УКНЦ это реализовано. Надеюсь автор исправит недочет и мы сможем оценить эмулятор FIS в ПЗУ Союз-Неон.

Ну теперь собственно результаты, они везде одинаковые:

E= 0.5000000000 Y= 1.5000000000 0.5000000000 N= 1
E= 0.2500000000 Y= 1.2500000000 0.2500000000 N= 2
E= 0.1250000000 Y= 1.1250000000 0.1250000000 N= 3
E= 0.0625000000 Y= 1.0625000000 0.0625000000 N= 4
E= 0.0312500000 Y= 1.0312500000 0.0312500000 N= 5
E= 0.0156250000 Y= 1.0156250000 0.0156250000 N= 6
E= 0.0078125000 Y= 1.0078130000 0.0078125000 N= 7
E= 0.0039062500 Y= 1.0039060000 0.0039062500 N= 8
E= 0.0019531250 Y= 1.0019530000 0.0019531250 N= 9
E= 0.0009765625 Y= 1.0009770000 0.0009765625 N=10
E= 0.0004882813 Y= 1.0004880000 0.0004882813 N=11
E= 0.0002441406 Y= 1.0002440000 0.0002441406 N=12
E= 0.0001220703 Y= 1.0001220000 0.0001220703 N=13
E= 0.0000610352 Y= 1.0000610000 0.0000610352 N=14
E= 0.0000305176 Y= 1.0000310000 0.0000305176 N=15
E= 0.0000152588 Y= 1.0000150000 0.0000152588 N=16
E= 0.0000076294 Y= 1.0000080000 0.0000076294 N=17
E= 0.0000038147 Y= 1.0000040000 0.0000038147 N=18
E= 0.0000019073 Y= 1.0000020000 0.0000019073 N=19
E= 0.0000009537 Y= 1.0000010000 0.0000009537 N=20
E= 0.0000004768 Y= 1.0000000000 0.0000004768 N=21
E= 0.0000002384 Y= 1.0000000000 0.0000002384 N=22
E= 0.0000001192 Y= 1.0000000000 0.0000001192 N=23
E= 0.0000000596 Y= 1.0000000000 0.0000001192 N=24
E= 0.0000000298 Y= 1.0000000000 0.0000000000 N=25
Весьма интересна итерация с номером 24. Там при сложении X+E возникает момент, что результат не помещается в 23 разряда мантиссы, а выпадающий 24-й разряд равен единице и все эмуляторы делают "округление" в большую сторону, вот потому и получается в результате 25.

Хотелось, чтобы программу запустили на аппаратной реализации FIS, например на "Электронике-60", неплохо бы и на LSI-11.

- - - Добавлено - - -


Alex_K, Процессор 1801ВМ1 с драйвером EM.SYS тоже может FIS.
Попробовал и с ним, результат программы MANTP аналогичный, как и в других случаях.

avivanov76
21.05.2016, 22:50
Весьма интересна итерация с номером 24. Там при сложении X+E возникает момент, что результат не помещается в 23 разряда мантиссы, а выпадающий 24-й разряд равен единице и все эмуляторы делают "округление" в большую сторону, вот потому и получается в результате 25
Ах вот в чём дело. Посмотрел - у Интела по умолчанию округление в сторону ближайшего четного бита.
Спасибо.

Alex_K
21.05.2016, 23:16
По аналогии с программой на Паскале, соответственно две программы на Си - для одинарной и двойной точности:

$$narg=1;
#include <stdio.h>
main()
{
float X=1.0, Y=2.0, E=1.0;
int N=0;
do
{
E=E/2.0; Y=X+E;
N++;
printf("E=%12.10f Y=%12.10f %12.10f N=%2d\n",E,Y,Y-1.0,N);
}
while(Y!=1.0);
}

$$narg=1;
#include <stdio.h>
main()
{
double X=1.0, Y=2.0, E=1.0;
int N=0;
do
{
E=E/2.0; Y=X+E;
N++;
printf("E=%22.20f Y=%22.20f %22.20f N=%2d\n",E,Y,Y-1.0,N);
}
while(Y!=1.0);
}
Хотя такой проблемы с выводом количества значащих разрядов после запятой, как на Паскале, в Си не оказалось, но концепция вывода осталась той же. Так как техники с аппаратной реализацией FP-11 не оказалось, то пришлось довольствоваться эмулятором FP-11 в самом Си.
Одинарная точность:

E=0.5000000000 Y=1.5000000000 0.5000000000 N= 1
E=0.2500000000 Y=1.2500000000 0.2500000000 N= 2
E=0.1250000000 Y=1.1250000000 0.1250000000 N= 3
E=0.0625000000 Y=1.0625000000 0.0625000000 N= 4
E=0.0312500000 Y=1.0312500000 0.0312500000 N= 5
E=0.0156250000 Y=1.0156250000 0.0156250000 N= 6
E=0.0078125000 Y=1.0078125000 0.0078125000 N= 7
E=0.0039062500 Y=1.0039062500 0.0039062500 N= 8
E=0.0019531250 Y=1.0019531250 0.0019531250 N= 9
E=0.0009765625 Y=1.0009765625 0.0009765625 N=10
E=0.0004882813 Y=1.0004882813 0.0004882813 N=11
E=0.0002441406 Y=1.0002441406 0.0002441406 N=12
E=0.0001220703 Y=1.0001220703 0.0001220703 N=13
E=0.0000610352 Y=1.0000610352 0.0000610352 N=14
E=0.0000305176 Y=1.0000305176 0.0000305176 N=15
E=0.0000152588 Y=1.0000152588 0.0000152588 N=16
E=0.0000076294 Y=1.0000076294 0.0000076294 N=17
E=0.0000038147 Y=1.0000038147 0.0000038147 N=18
E=0.0000019073 Y=1.0000019073 0.0000019073 N=19
E=0.0000009537 Y=1.0000009537 0.0000009537 N=20
E=0.0000004768 Y=1.0000004768 0.0000004768 N=21
E=0.0000002384 Y=1.0000002384 0.0000002384 N=22
E=0.0000001192 Y=1.0000001192 0.0000001192 N=23
E=0.0000000596 Y=1.0000000000 0.0000000000 N=24
Двойная точность:

E=0.50000000000000000000 Y=1.50000000000000000000 0.50000000000000000000 N= 1
E=0.25000000000000000000 Y=1.25000000000000000000 0.25000000000000000000 N= 2
E=0.12500000000000000000 Y=1.12500000000000000000 0.12500000000000000000 N= 3
E=0.06250000000000000000 Y=1.06250000000000000000 0.06250000000000000000 N= 4
E=0.03125000000000000000 Y=1.03125000000000000000 0.03125000000000000000 N= 5
E=0.01562500000000000000 Y=1.01562500000000000000 0.01562500000000000000 N= 6
E=0.00781250000000000000 Y=1.00781250000000000000 0.00781250000000000000 N= 7
E=0.00390625000000000000 Y=1.00390625000000000000 0.00390625000000000000 N= 8
E=0.00195312500000000000 Y=1.00195312500000000000 0.00195312500000000000 N= 9
E=0.00097656250000000000 Y=1.00097656250000000000 0.00097656250000000000 N=10
E=0.00048828125000000000 Y=1.00048828125000000000 0.00048828125000000000 N=11
E=0.00024414062500000000 Y=1.00024414062500000000 0.00024414062500000000 N=12
E=0.00012207031250000000 Y=1.00012207031250000000 0.00012207031250000000 N=13
E=0.00006103515625000000 Y=1.00006103515625000000 0.00006103515625000000 N=14
E=0.00003051757812500000 Y=1.00003051757812500000 0.00003051757812500000 N=15
E=0.00001525878906250000 Y=1.00001525878906250000 0.00001525878906250000 N=16
E=0.00000762939453125000 Y=1.00000762939453125000 0.00000762939453125000 N=17
E=0.00000381469726562500 Y=1.00000381469726562500 0.00000381469726562500 N=18
E=0.00000190734863281250 Y=1.00000190734863281250 0.00000190734863281250 N=19
E=0.00000095367431640625 Y=1.00000095367431640625 0.00000095367431640625 N=20
E=0.00000047683715820313 Y=1.00000047683715820313 0.00000047683715820313 N=21
E=0.00000023841857910156 Y=1.00000023841857910156 0.00000023841857910156 N=22
E=0.00000011920928955078 Y=1.00000011920928955078 0.00000011920928955078 N=23
E=0.00000005960464477539 Y=1.00000005960464477539 0.00000005960464477539 N=24
E=0.00000002980232238770 Y=1.00000002980232238770 0.00000002980232238770 N=25
E=0.00000001490116119385 Y=1.00000001490116119385 0.00000001490116119385 N=26
E=0.00000000745058059692 Y=1.00000000745058059692 0.00000000745058059692 N=27
E=0.00000000372529029846 Y=1.00000000372529029846 0.00000000372529029846 N=28
E=0.00000000186264514923 Y=1.00000000186264514923 0.00000000186264514923 N=29
E=0.00000000093132257462 Y=1.00000000093132257462 0.00000000093132257462 N=30
E=0.00000000046566128731 Y=1.00000000046566128731 0.00000000046566128731 N=31
E=0.00000000023283064365 Y=1.00000000023283064365 0.00000000023283064365 N=32
E=0.00000000011641532183 Y=1.00000000011641532183 0.00000000011641532183 N=33
E=0.00000000005820766091 Y=1.00000000005820766091 0.00000000005820766091 N=34
E=0.00000000002910383046 Y=1.00000000002910383046 0.00000000002910383046 N=35
E=0.00000000001455191523 Y=1.00000000001455191523 0.00000000001455191523 N=36
E=0.00000000000727595761 Y=1.00000000000727595761 0.00000000000727595761 N=37
E=0.00000000000363797881 Y=1.00000000000363797881 0.00000000000363797881 N=38
E=0.00000000000181898940 Y=1.00000000000181898940 0.00000000000181898940 N=39
E=0.00000000000090949470 Y=1.00000000000090949470 0.00000000000090949470 N=40
E=0.00000000000045474735 Y=1.00000000000045474735 0.00000000000045474735 N=41
E=0.00000000000022737368 Y=1.00000000000022737368 0.00000000000022737368 N=42
E=0.00000000000011368684 Y=1.00000000000011368684 0.00000000000011368684 N=43
E=0.00000000000005684342 Y=1.00000000000005684342 0.00000000000005684342 N=44
E=0.00000000000002842171 Y=1.00000000000002842171 0.00000000000002842171 N=45
E=0.00000000000001421085 Y=1.00000000000001421085 0.00000000000001421085 N=46
E=0.00000000000000710543 Y=1.00000000000000710543 0.00000000000000710543 N=47
E=0.00000000000000355271 Y=1.00000000000000355271 0.00000000000000355271 N=48
E=0.00000000000000177636 Y=1.00000000000000177636 0.00000000000000177636 N=49
E=0.00000000000000088818 Y=1.00000000000000088818 0.00000000000000088818 N=50
E=0.00000000000000044409 Y=1.00000000000000044409 0.00000000000000044409 N=51
E=0.00000000000000022204 Y=1.00000000000000022204 0.00000000000000022204 N=52
E=0.00000000000000011102 Y=1.00000000000000011102 0.00000000000000011102 N=53
E=0.00000000000000005551 Y=1.00000000000000005551 0.00000000000000005551 N=54
E=0.00000000000000002776 Y=1.00000000000000002776 0.00000000000000002776 N=55
E=0.00000000000000001388 Y=1.00000000000000000000 0.00000000000000000000 N=56
Ну как видно по результатам одинарной точности, эмулятор FP-11 в Си никакого "округления" не делает, вот и получается 24 итерации вместо 25.

Ну и по поводу запуска на аппаратной реализации FP-11, большая просьба к form запустить на PDP-11 c J-11, и к MiX на связке 1801ВМ3+1801ВМ4.

Далее выложу исходники и исполнимые модули для запуска в RT-11.

- - - Добавлено - - -

Собственно архив с исходниками на Паскале и Си и исполнимые модули для RT-11.

Titus
22.05.2016, 00:08
В эмуляторе EmuStudio Союз-Неон Titus-а оценить не удалось, т.к. там не сделана эмуляция вызова команд FIS по вектору SEL010, хотя в EmuStudio УКНЦ это реализовано. Надеюсь автор исправит недочет и мы сможем оценить эмулятор FIS в ПЗУ Союз-Неон.

Эмуляция процессора и там, и там одинакова. Вызывается SEL010, так что это не в процессоре дело, а в чем-то еще, наверное.

Alex_K
22.05.2016, 00:28
Эмуляция процессора и там, и там одинакова. Вызывается SEL010, так что это не в процессоре дело, а в чем-то еще, наверное.
Ну не знаю, насколько одинаковая. Но в EmuStudio УКНЦ даже RESORC по команде SHOW CONF показывает, что есть набор FIS, да и после команды D 10=12,0 и запуска MANTP в пульт не вылетает. А вот в EmuStudio ПК-11 показывается, что есть только EIS, да и после D 10=12,0 и запуска MANTP происходит вылет в пульт.

Titus
22.05.2016, 01:13
Ну не знаю, насколько одинаковая. Но в EmuStudio УКНЦ даже RESORC по команде SHOW CONF показывает, что есть набор FIS, да и после команды D 10=12,0 и запуска MANTP в пульт не вылетает. А вот в EmuStudio ПК-11 показывается, что есть только EIS, да и после D 10=12,0 и запуска MANTP происходит вылет в пульт.

Сие для меня загадка) Тем более, мне нечем это проверить.

MiX
22.05.2016, 01:59
Вот конфигурация эмулятора.
http://s019.radikal.ru/i623/1605/d4/c1c94376293c.png (http://radikal.ru/big/a0975ea3a30b4ea2bb8c0ef55c1e4d1c)

Тем более, мне нечем это проверить.ТМОС для этого есть.

Titus
22.05.2016, 02:04
Вот конфигурация эмулятора.

Ну, и где тут видно, что не работает и почему?

Я не RT11-шник, и мне надо конкретно сказать, чего запустить и где чего нажать, чтобы проверить. А все эти NOSWAP - для меня филькина грамота)

MiX
22.05.2016, 02:32
Ну и по поводу запуска на аппаратной реализации FP-11, большая просьба к form запустить на PDP-11 c J-11, и к MiX на связке 1801ВМ3+1801ВМ4.

ВМ3+ВМ4

.MANTP
E= 0.5000000000 Y= 1.5000000000 0.5000000000 N= 1
E= 0.2500000000 Y= 1.2500000000 0.2500000000 N= 2
E= 0.1250000000 Y= 1.1250000000 0.1250000000 N= 3
E= 0.0625000000 Y= 1.0625000000 0.0625000000 N= 4
E= 0.0312500000 Y= 1.0312500000 0.0312500000 N= 5
E= 0.0156250000 Y= 1.0156250000 0.0156250000 N= 6
E= 0.0078125000 Y= 1.0078130000 0.0078125000 N= 7
E= 0.0039062500 Y= 1.0039060000 0.0039062500 N= 8
E= 0.0019531250 Y= 1.0019530000 0.0019531250 N= 9
E= 0.0009765625 Y= 1.0009770000 0.0009765625 N=10
E= 0.0004882813 Y= 1.0004880000 0.0004882813 N=11
E= 0.0002441406 Y= 1.0002440000 0.0002441406 N=12
E= 0.0001220703 Y= 1.0001220000 0.0001220703 N=13
E= 0.0000610352 Y= 1.0000610000 0.0000610352 N=14
E= 0.0000305176 Y= 1.0000310000 0.0000305176 N=15
E= 0.0000152588 Y= 1.0000150000 0.0000152588 N=16
E= 0.0000076294 Y= 1.0000080000 0.0000076294 N=17
E= 0.0000038147 Y= 1.0000040000 0.0000038147 N=18
E= 0.0000019073 Y= 1.0000020000 0.0000019073 N=19
E= 0.0000009537 Y= 1.0000010000 0.0000009537 N=20
E= 0.0000004768 Y= 1.0000000000 0.0000004768 N=21
E= 0.0000002384 Y= 1.0000000000 0.0000002384 N=22
E= 0.0000001192 Y= 1.0000000000 0.0000001192 N=23
E= 0.0000000596 Y= 1.0000000000 0.0000001192 N=24
E= 0.0000000298 Y= 1.0000000000 0.0000000000 N=25

.MANTP
E= 0.5000000000 Y= 1.5000000000 0.5000000000 N= 1
E= 0.2500000000 Y= 1.2500000000 0.2500000000 N= 2
E= 0.1250000000 Y= 1.1250000000 0.1250000000 N= 3
E= 0.0625000000 Y= 1.0625000000 0.0625000000 N= 4
E= 0.0312500000 Y= 1.0312500000 0.0312500000 N= 5
E= 0.0156250000 Y= 1.0156250000 0.0156250000 N= 6
E= 0.0078125000 Y= 1.0078130000 0.0078125000 N= 7
E= 0.0039062500 Y= 1.0039060000 0.0039062500 N= 8
E= 0.0019531250 Y= 1.0019530000 0.0019531250 N= 9
E= 0.0009765625 Y= 1.0009770000 0.0009765625 N=10
E= 0.0004882813 Y= 1.0004880000 0.0004882813 N=11
E= 0.0002441406 Y= 1.0002440000 0.0002441406 N=12
E= 0.0001220703 Y= 1.0001220000 0.0001220703 N=13
E= 0.0000610352 Y= 1.0000610000 0.0000610352 N=14
E= 0.0000305176 Y= 1.0000310000 0.0000305176 N=15
E= 0.0000152588 Y= 1.0000150000 0.0000152588 N=16
E= 0.0000076294 Y= 1.0000080000 0.0000076294 N=17
E= 0.0000038147 Y= 1.0000040000 0.0000038147 N=18
E= 0.0000019073 Y= 1.0000020000 0.0000019073 N=19
E= 0.0000009537 Y= 1.0000010000 0.0000009537 N=20
E= 0.0000004768 Y= 1.0000000000 0.0000004768 N=21
E= 0.0000002384 Y= 1.0000000000 0.0000002384 N=22
E= 0.0000001192 Y= 1.0000000000 0.0000001192 N=23
E= 0.0000000596 Y= 1.0000000000 0.0000001192 N=24
E= 0.0000000298 Y= 1.0000000000 0.0000000000 N=25 MANF не запустился. Будет время, на J11 запущу.

- - - Добавлено - - -


Ну, и где тут видно, что не работает и почему?
Нет инструкций FIS. Надо бы прошивку проверить, может там и нет эмуляции FIS.

- - - Добавлено - - -

По поводу разбора прошивки это у меня к Alex_K просьба. ;)

Alex_K
22.05.2016, 10:51
MANF не запустился. Будет время, на J11 запущу.
А почему не запустилось? На связке 1801ВМ3+1801ВМ4 интересует как раз запуск MANTF.SAV (одинарная точность FP-11) и MANTD.SAV (двойная точность FP-11). В E-11 они у меня запускаются, эмуляция FPP там включена.

MiX
22.05.2016, 11:05
А почему не запустилось?
Не знаю.

Alex_K
22.05.2016, 11:09
Не знаю.
А что выводило на экран?

MiX
22.05.2016, 11:13
А что выводило на экран?
Ничего, мигающий курсор. Без сопроцессора программа работает.

Alex_K
22.05.2016, 11:28
Ничего, мигающий курсор. Без сопроцессора программа работает.
А если вывалится в пульт, то какой адрес получается?

MiX
22.05.2016, 11:35
Alex_K, Не вываливается, и на кнопки УСТ,ПУЛЬТ не реагирует.

Alex_K
22.05.2016, 11:40
Alex_K, Не вываливается, и на кнопки УСТ,ПУЛЬТ не реагирует.
Может связка 1801ВМ3+1801ВМ4 как-то не так сделана. Остается только отладчиком прощелкать до того адреса, где виснет. Хорошая связка BUG.SAV+BG.SYS, экранный отладчик, очень удобный.

MiX
22.05.2016, 11:48
Тесты на J11 (без FPU) Правда, по команде SH CON показал Floating Point Microcode.


.MANTP
E= 0.5000000000 Y= 1.5000000000 0.5000000000 N= 1
E= 0.2500000000 Y= 1.2500000000 0.2500000000 N= 2
E= 0.1250000000 Y= 1.1250000000 0.1250000000 N= 3
E= 0.0625000000 Y= 1.0625000000 0.0625000000 N= 4
E= 0.0312500000 Y= 1.0312500000 0.0312500000 N= 5
E= 0.0156250000 Y= 1.0156250000 0.0156250000 N= 6
E= 0.0078125000 Y= 1.0078130000 0.0078125000 N= 7
E= 0.0039062500 Y= 1.0039060000 0.0039062500 N= 8
E= 0.0019531250 Y= 1.0019530000 0.0019531250 N= 9
E= 0.0009765625 Y= 1.0009770000 0.0009765625 N=10
E= 0.0004882813 Y= 1.0004880000 0.0004882813 N=11
E= 0.0002441406 Y= 1.0002440000 0.0002441406 N=12
E= 0.0001220703 Y= 1.0001220000 0.0001220703 N=13
E= 0.0000610352 Y= 1.0000610000 0.0000610352 N=14
E= 0.0000305176 Y= 1.0000310000 0.0000305176 N=15
E= 0.0000152588 Y= 1.0000150000 0.0000152588 N=16
E= 0.0000076294 Y= 1.0000080000 0.0000076294 N=17
E= 0.0000038147 Y= 1.0000040000 0.0000038147 N=18
E= 0.0000019073 Y= 1.0000020000 0.0000019073 N=19
E= 0.0000009537 Y= 1.0000010000 0.0000009537 N=20
E= 0.0000004768 Y= 1.0000000000 0.0000004768 N=21
E= 0.0000002384 Y= 1.0000000000 0.0000002384 N=22
E= 0.0000001192 Y= 1.0000000000 0.0000001192 N=23
E= 0.0000000596 Y= 1.0000000000 0.0000001192 N=24
E= 0.0000000298 Y= 1.0000000000 0.0000000000 N=25

.MANTD
E=0.50000000000000000000 Y=1.50000000000000000000 0.50000000000000000000 N= 1
E=0.25000000000000000000 Y=1.25000000000000000000 0.25000000000000000000 N= 2
E=0.12500000000000000000 Y=1.12500000000000000000 0.12500000000000000000 N= 3
E=0.06250000000000000000 Y=1.06250000000000000000 0.06250000000000000000 N= 4
E=0.03125000000000000000 Y=1.03125000000000000000 0.03125000000000000000 N= 5
E=0.01562500000000000000 Y=1.01562500000000000000 0.01562500000000000000 N= 6
E=0.00781250000000000000 Y=1.00781250000000000000 0.00781250000000000000 N= 7
E=0.00390625000000000000 Y=1.00390625000000000000 0.00390625000000000000 N= 8
E=0.00195312500000000000 Y=1.00195312500000000000 0.00195312500000000000 N= 9
E=0.00097656250000000000 Y=1.00097656250000000000 0.00097656250000000000 N=10
E=0.00048828125000000000 Y=1.00048828125000000000 0.00048828125000000000 N=11
E=0.00024414062500000000 Y=1.00024414062500000000 0.00024414062500000000 N=12
E=0.00012207031250000000 Y=1.00012207031250000000 0.00012207031250000000 N=13
E=0.00006103515625000000 Y=1.00006103515625000000 0.00006103515625000000 N=14
E=0.00003051757812500000 Y=1.00003051757812500000 0.00003051757812500000 N=15
E=0.00001525878906250000 Y=1.00001525878906250000 0.00001525878906250000 N=16
E=0.00000762939453125000 Y=1.00000762939453125000 0.00000762939453125000 N=17
E=0.00000381469726562500 Y=1.00000381469726562500 0.00000381469726562500 N=18
E=0.00000190734863281250 Y=1.00000190734863281250 0.00000190734863281250 N=19
E=0.00000095367431640625 Y=1.00000095367431640625 0.00000095367431640625 N=20
E=0.00000047683715820313 Y=1.00000047683715820313 0.00000047683715820313 N=21
E=0.00000023841857910156 Y=1.00000023841857910156 0.00000023841857910156 N=22
E=0.00000011920928955078 Y=1.00000011920928955078 0.00000011920928955078 N=23
E=0.00000005960464477539 Y=1.00000005960464477539 0.00000005960464477539 N=24
E=0.00000002980232238770 Y=1.00000002980232238770 0.00000002980232238770 N=25
E=0.00000001490116119385 Y=1.00000001490116119385 0.00000001490116119385 N=26
E=0.00000000745058059692 Y=1.00000000745058059692 0.00000000745058059692 N=27
E=0.00000000372529029846 Y=1.00000000372529029846 0.00000000372529029846 N=28
E=0.00000000186264514923 Y=1.00000000186264514923 0.00000000186264514923 N=29
E=0.00000000093132257462 Y=1.00000000093132257462 0.00000000093132257462 N=30
E=0.00000000046566128731 Y=1.00000000046566128731 0.00000000046566128731 N=31
E=0.00000000023283064365 Y=1.00000000023283064365 0.00000000023283064365 N=32
E=0.00000000011641532183 Y=1.00000000011641532183 0.00000000011641532183 N=33
E=0.00000000005820766091 Y=1.00000000005820766091 0.00000000005820766091 N=34
E=0.00000000002910383046 Y=1.00000000002910383046 0.00000000002910383046 N=35
E=0.00000000001455191523 Y=1.00000000001455191523 0.00000000001455191523 N=36
E=0.00000000000727595761 Y=1.00000000000727595761 0.00000000000727595761 N=37
E=0.00000000000363797881 Y=1.00000000000363797881 0.00000000000363797881 N=38
E=0.00000000000181898940 Y=1.00000000000181898940 0.00000000000181898940 N=39
E=0.00000000000090949470 Y=1.00000000000090949470 0.00000000000090949470 N=40
E=0.00000000000045474735 Y=1.00000000000045474735 0.00000000000045474735 N=41
E=0.00000000000022737368 Y=1.00000000000022737368 0.00000000000022737368 N=42
E=0.00000000000011368684 Y=1.00000000000011368684 0.00000000000011368684 N=43
E=0.00000000000005684342 Y=1.00000000000005684342 0.00000000000005684342 N=44
E=0.00000000000002842171 Y=1.00000000000002842171 0.00000000000002842171 N=45
E=0.00000000000001421085 Y=1.00000000000001421085 0.00000000000001421085 N=46
E=0.00000000000000710543 Y=1.00000000000000710543 0.00000000000000710543 N=47
E=0.00000000000000355271 Y=1.00000000000000355271 0.00000000000000355271 N=48
E=0.00000000000000177636 Y=1.00000000000000177636 0.00000000000000177636 N=49
E=0.00000000000000088818 Y=1.00000000000000088818 0.00000000000000088818 N=50
E=0.00000000000000044409 Y=1.00000000000000044409 0.00000000000000044409 N=51
E=0.00000000000000022204 Y=1.00000000000000022204 0.00000000000000022204 N=52
E=0.00000000000000011102 Y=1.00000000000000011102 0.00000000000000011102 N=53
E=0.00000000000000005551 Y=1.00000000000000005551 0.00000000000000005551 N=54
E=0.00000000000000002776 Y=1.00000000000000002776 0.00000000000000002776 N=55
E=0.00000000000000001388 Y=1.00000000000000002776 0.00000000000000002776 N=56
E=0.00000000000000000694 Y=1.00000000000000000000 0.00000000000000000000 N=57

.MANTF
E=0.5000000000 Y=1.5000000000 0.5000000000 N= 1
E=0.2500000000 Y=1.2500000000 0.2500000000 N= 2
E=0.1250000000 Y=1.1250000000 0.1250000000 N= 3
E=0.0625000000 Y=1.0625000000 0.0625000000 N= 4
E=0.0312500000 Y=1.0312500000 0.0312500000 N= 5
E=0.0156250000 Y=1.0156250000 0.0156250000 N= 6
E=0.0078125000 Y=1.0078125000 0.0078125000 N= 7
E=0.0039062500 Y=1.0039062500 0.0039062500 N= 8
E=0.0019531250 Y=1.0019531250 0.0019531250 N= 9
E=0.0009765625 Y=1.0009765625 0.0009765625 N=10
E=0.0004882813 Y=1.0004882813 0.0004882813 N=11
E=0.0002441406 Y=1.0002441406 0.0002441406 N=12
E=0.0001220703 Y=1.0001220703 0.0001220703 N=13
E=0.0000610352 Y=1.0000610352 0.0000610352 N=14
E=0.0000305176 Y=1.0000305176 0.0000305176 N=15
E=0.0000152588 Y=1.0000152588 0.0000152588 N=16
E=0.0000076294 Y=1.0000076294 0.0000076294 N=17
E=0.0000038147 Y=1.0000038147 0.0000038147 N=18
E=0.0000019073 Y=1.0000019073 0.0000019073 N=19
E=0.0000009537 Y=1.0000009537 0.0000009537 N=20
E=0.0000004768 Y=1.0000004768 0.0000004768 N=21
E=0.0000002384 Y=1.0000002384 0.0000002384 N=22
E=0.0000001192 Y=1.0000001192 0.0000001192 N=23
E=0.0000000596 Y=1.0000001192 0.0000001192 N=24
E=0.0000000298 Y=1.0000000000 0.0000000000 N=25

Alex_K
22.05.2016, 11:50
Нет инструкций FIS. Надо бы прошивку проверить, может там и нет эмуляции FIS.

По поводу разбора прошивки это у меня к Alex_K просьба.
В ПЗУ Союз-Неон есть эмуляция FIS. Т.к. там безадресный регистр SEL равен нулю, то в ПЗУ по адресу 010 расположен вектор обработки FIS и равен он 06076, 0600. Т.е. по адресу 06076 в ПЗУ находится программа эмуляции FIS. И она действительно там есть.

Прошивку Союз-Неон я стал разбирать, дизассемблировал, стал разбираться, писать комментарии. Но тут участница форума TheGWBW выложила очередную порцию дисков для Союз-Неон. И вот в архиве SOUZ-NEON_FDD_Images-2_.zip оказался образ диска SOUZ-NEON_HD4_CLIB11_P16VPO_IMG.DSK. В этом образе есть логический диск P16VP1.DSK, а там исходники ПЗУ. После этого свой процесс разбора ПЗУ я закончил.

MiX
22.05.2016, 11:53
Хорошая связка BUG.SAV+BG.SYS, экранный отладчик, очень удобный.
Где и как?

Alex_K
22.05.2016, 12:02
Где и как?
Есть в эмуляторе УКНЦ на диске sysimage.dsk.

- - - Добавлено - - -


Тесты на J11 (без FPU) Правда, по команде SH CON показал Floating Point Microcode.
Как это без FPU? Вроде в J-11 обработка инструкций FP-11 встроена в микрокод.

Titus
22.05.2016, 12:08
В ПЗУ Союз-Неон есть эмуляция FIS. Т.к. там безадресный регистр SEL равен нулю, то в ПЗУ по адресу 010 расположен вектор обработки FIS и равен он 06076, 0600. Т.е. по адресу 06076 в ПЗУ находится программа эмуляции FIS. И она действительно там есть.

Что мне запустить, чтобы увидеть, работает FIS или нет? Какую программу?

MiX
22.05.2016, 12:17
Titus, Вот интересно откуда там FPU support.

- - - Добавлено - - -


Как это без FPU? Вроде в J-11 обработка инструкций FP-11 встроена в микрокод.
На плате есть ещё пустая панелька под 40 дип. Думаю что под FPU. Про микрокод написал.

- - - Добавлено - - -


Есть в эмуляторе УКНЦ на диске sysimage.dsk.
Так скинь сюда.

Alex_K
22.05.2016, 12:32
Что мне запустить, чтобы увидеть, работает FIS или нет? Какую программу?
Достаточно RESORC.SAV. По команде SHOW CONF после строки Extended Instruction Set (EIS) должна быть строка Floating Instruction Set (FIS). Могу сказать, что в Союз-Неон вектор FIS равен 010, но не USER, а HALT. А там прерывается по 10-му вектору в USER-режиме.

- - - Добавлено - - -


Так скинь сюда.
Лови.

- - - Добавлено - - -


Titus, Вот интересно откуда там FPU support.
А это операционная система собрана с поддержкой обработки ошибок плавающей запятой, так что эмулятор тут не при чем.

MiX
22.05.2016, 12:46
Достаточно RESORC.SAV. По команде SHOW CONF после строки Extended Instruction Set (EIS) должна быть строка Floating Instruction Set (FIS). Могу сказать, что в Союз-Неон вектор FIS равен 010, но не USER, а HALT. А там прерывается по 10-му вектору в USER-режиме.
Только 1806 отличается микрокодом от 1801, да и второго окна нет.

А это операционная система собрана с поддержкой обработки ошибок плавающей запятой, так что эмулятор тут не при чем.
Значит эта поддержка будет актуальной для ВМ4? Если да, то как её добавить.

Alex_K
22.05.2016, 12:48
Только 1806 отличается микрокодом от 1801, да и второго окна нет.
Не совсем понял. При чем тут второе окно и поддержка FIS.

MiX
22.05.2016, 12:53
Не совсем понял. При чем тут второе окно и поддержка FIS.
Окно не причем, это я про отличия.

Alex_K
22.05.2016, 12:59
Значит эта поддержка будет актуальной для ВМ4? Если да, то как её добавить.
Актуальности никакой нет. Просто если нет поддержки, то в вектор 0244 ложаться значения 0246,0, т.е. при ошибке исполнения инструкций FIS или FP-11 будет происходить выход в пульт. А если есть поддержка, то программа сможет по запросу .SFPA перехватить обработку ошибок ПЗ.
А добавить её никак, только пересобрать заново систему, но уже с поддержкой обработки ошибок ПЗ.

- - - Добавлено - - -


Окно не причем, это я про отличия.
А отличий там не очень много, ошибки исправлены например.

MiX
22.05.2016, 13:06
BUG.
http://s013.radikal.ru/i324/1605/e5/d9cfac13c309.png (http://radikal.ru/big/0226219b957e43c29a4362a0528059b7)

Alex_K
22.05.2016, 13:17
BUG.
Это надо теперь <Enter>-ом щелкать по шагам. Процесс длительный, на какой-то команде зависнет. Стрелки там не работают, как и ПФ1-ПФ4.

MiX
22.05.2016, 13:30
Alex_K, Если правильно понял, после адреса 015340 до 015344 крутится по кругу и дальше не идет.

Alex_K
22.05.2016, 14:17
Alex_K, Если правильно понял, после адреса 015340 крутится по кругу и дальше не идет.
Да, пока R0 не сравняется с R1. Можно поставить точку останова на 15346 и запустить.

- - - Добавлено - - -

По адресу 10152 в MANTF встретил команду SETD.

- - - Добавлено - - -

С адреса 2006 идет загрузка в аккумулятор.

MiX
22.05.2016, 14:37
Alex_K, В общем, программа циклирует по кругу. После 015340 набирается в регистр нужное число и программа идет дальше, и пройдя круг возвращается к этому адресу. Правда в R0 и R1 уже другие значения.

Alex_K
22.05.2016, 14:40
Alex_K, В общем, программа циклирует по кругу. После 015340 набирается в регистр нужное число и программа идет дальше, и пройдя круг возвращается к этому адресу. Правда в R0 и R1 уже другие значения.
Задай с помощью команды B0=10152 точку останова и запусти дальше по команде G​.

MiX
22.05.2016, 14:40
По адресу 10152 в MANTF встретил команду SETD.
В Вики сказано что нет команд LDUB, LDSC, STA0, STB0 и STQ0.

Alex_K
22.05.2016, 14:43
В Вики сказано что нет команд LDUB, LDSC, STA0, STB0 и STQ0.
А они и не нужны. Это так называемые maintenance команды для просмотра внутренних регистров и переменных в сопроцессорах, которые были сделаны отдельными модулями. В J-11 их тоже нет.

MiX
22.05.2016, 14:53
Задай с помощью команды B0=10152 точку останова и запусти дальше по команде G​.
Программа там и остановилась.

Alex_K
22.05.2016, 14:54
Программа там и остановилась.
А дальше <Enter>-ом по шагам.

MiX
22.05.2016, 15:06
Да также по кругу от и до 015340

Alex_K
22.05.2016, 15:13
Да также по кругу от и до 015340
Ну не знаю. У меня после этого быстренько через несколько команд вышла на адрес 2000, где начинается основная программа. А на 10152 исполнила команду нормально?

MiX
22.05.2016, 15:25
Alex_K, Да могу не загруженную ДВК выставить в сеть. Загрузка по НХ с терминала.

Alex_K
22.05.2016, 15:32
Alex_K, Да могу не загруженную ДВК выставить в сеть. Загрузка по НХ с терминала.
Не против, только немного поподробнее как загрузиться.

MiX
22.05.2016, 17:56
Не против, только немного поподробнее как загрузиться.
Сейчас настрою всё, позже отпишусь.

- - - Добавлено - - -

Доступ дал, что там получилось?

Alex_K
22.05.2016, 18:39
Доступ дал, что там получилось?
Не проходит сохранение данных в память, при этом резко увеличивается значение счетчика команд и он попадает на данные, при исполнении которых происходит TRAP4.
Ну теперь по порядку. Сама функция main() начинается с адреса 2000, но собственно работа идет с адреса 2006.
Кусок кода на Си:
float X=1.0, Y=2.0, E=1.0;
int N=0;
В кодах PDP-11 это есть:
R0=002004 R1=020430 R2=000404 R3=047000 000044 N Z V C
R4=152152 R5=001770 SP=001742 PC=002006 040000 0 0 0 0

002006: 172427 040200 LDD #40200,AC0 ; X=1.0
002012: 176065 177766 STCDF AC0,177766(R5)
002016: 172427 040400 LDD #40400,AC0 ; Y=2.0
002022: 176065 177762 STCDF AC0,177762(R5)
002026: 172427 040200 LDD #40200,AC0 ; E=1.0
002032: 176065 177756 STCDF AC0,177756(R5)
002036: 005065 177754 CLR 177754(R5) ; N=0
002042: 177465 .WORD 177465
002044: 177756 .WORD 177756
002046: 174427 .WORD 174427
В отладчике команда LDD #40200,AC0 по адресу 2006 исполняется, останов в отладчике происходит по адресу 2012. Правда исполнилась ли реально команда не проверить. Этой командой в аккумулятор АС0 загружается значение 1.0 двойной точности. Далее следующей командой это значение должно сохраниться в памяти в формате одинарной точности. В качестве базы используется регистр R5, а по смещениям находятся переменные 177766 (адрес 1756) X 2 слова, 177762 (адрес 1752) Y 2 слова, 177756 (адрес 1746) E 2 слова. После инициализации переменных X, Y, E командой CLR 177754(R5) по адресу 2036 очищается переменная N (адрес 1744). Так вот исполнения де-факто команды STCDF AC0,177766(R5) по адресу 2012 не происходит, никакие переменные в памяти не инициализируются, а счетчик команд после этого становится равным 2040, т.е. стоит на аргументе 177754 команды CLR 177754(R5). Реально это получается команда LDCFD 177465(R5),AC3, но по R5 адрес получается нечётный и происходит TRAP4.

MiX
25.06.2016, 20:45
Alex_K, Ситуация изменилась. Добился того что тесты mantd и mantf запускаются но проходят не полностью. Т.е. какая то нестабильность и идет срыв теста.

.MANTF
E=0.5000000000 Y=1.5000000000 0.5000000000 N= 1
E=0.2500000000 Y=1.2500000000 0.2500000000 N= 2
E=0.1250000000 Y=1.1250000000 0.1250000000 N= 3
E=0.0625000000 Y=1.0625000000 0.0625000000 N= 4
E=0.0312500000 Y=1.0312500000 0.0312500000 N= 5
E=0.0156250000 Y=1.0156250000 0.0156250000 N= 6
E=0.0078125000 Y=1.0078125000 0.0078125000 N= 7
E=0.0039062500 Y=1.0039062500 0.0039062500 N= 8
E=0.0019531250 Y=1.0019531250 0.0019531250 N= 9
E=0.0009765625 Y=1.0009765625 0.0009765625 N=10
E=0.0004882813 Y=1.0004882813 0.0004882813 N=11
E=0.0002441406 Y=1.0002441406 0.0002441406 N=12
E=0.0001220703 Y=1.0001220703 0.0001220703 N=13
E=0.0000610352 Y=1.0000610352 0.0000610352 N=14

@ 016250
@G
.MANTD
E=0.50000000000000000000 Y=1.50000000000000000000 0.50000000000000000000 N= 1
E=0.25000000000000000000 Y=1.25000000000000000000 0.25000000000000000000 N= 2

@ 012154

Alex_K
25.06.2016, 21:03
Alex_K, Ситуация изменилась. Добился того что тесты mantd и mantf запускаются но проходят не полностью.
А что сделали?

MiX
25.06.2016, 21:59
А что сделали?
Пропаял контакты.
Ещё результат при снижении частоты.

.MANTD

R0/016236 R1/020224 R2/021056 R3/021032 R4/177776 R5/001302 SP/001272 PC/016254

?C-F-Odd or nonexistent address trap
E=
.MANTF

R0/000065 R1/020230 R2/021046 R3/021035 R4/177776 R5/001362 SP/001332 PC/012160

?C-F-Odd or nonexistent address trap
E=
.
Ну хоть в пульт не вылетает.

Alex_K
25.06.2016, 22:27
Пропаял контакты.
Ещё результат при снижении частоты.
Может ещё плохой контакт с резисторами подтяжки на линиях обмена процессор-сопроцессор? Вроде на плате резисторы уже должны быть.

MiX
10.02.2017, 12:52
Возвращаясь к нерешённой задаче, таки запустил программки на ВМ3+ВМ4.

MANTP


.MANTP
E= 0.5000000000 Y= 1.5000000000 0.5000000000 N= 1
E= 0.2500000000 Y= 1.2500000000 0.2500000000 N= 2
E= 0.1250000000 Y= 1.1250000000 0.1250000000 N= 3
E= 0.0625000000 Y= 1.0625000000 0.0625000000 N= 4
E= 0.0312500000 Y= 1.0312500000 0.0312500000 N= 5
E= 0.0156250000 Y= 1.0156250000 0.0156250000 N= 6
E= 0.0078125000 Y= 1.0078130000 0.0078125000 N= 7
E= 0.0039062500 Y= 1.0039060000 0.0039062500 N= 8
E= 0.0019531250 Y= 1.0019530000 0.0019531250 N= 9
E= 0.0009765625 Y= 1.0009770000 0.0009765625 N=10
E= 0.0004882813 Y= 1.0004880000 0.0004882813 N=11
E= 0.0002441406 Y= 1.0002440000 0.0002441406 N=12
E= 0.0001220703 Y= 1.0001220000 0.0001220703 N=13
E= 0.0000610352 Y= 1.0000610000 0.0000610352 N=14
E= 0.0000305176 Y= 1.0000310000 0.0000305176 N=15
E= 0.0000152588 Y= 1.0000150000 0.0000152588 N=16
E= 0.0000076294 Y= 1.0000080000 0.0000076294 N=17
E= 0.0000038147 Y= 1.0000040000 0.0000038147 N=18
E= 0.0000019073 Y= 1.0000020000 0.0000019073 N=19
E= 0.0000009537 Y= 1.0000010000 0.0000009537 N=20
E= 0.0000004768 Y= 1.0000000000 0.0000004768 N=21
E= 0.0000002384 Y= 1.0000000000 0.0000002384 N=22
E= 0.0000001192 Y= 1.0000000000 0.0000001192 N=23
E= 0.0000000596 Y= 1.0000000000 0.0000001192 N=24
E= 0.0000000298 Y= 1.0000000000 0.0000000000 N=25

MANTF

MANTF
E=0.5000000000 Y=1.5000000000 0.5000000000 N= 1
E=0.2500000000 Y=1.2500000000 0.2500000000 N= 2
E=0.1250000000 Y=1.1250000000 0.1250000000 N= 3
E=0.0625000000 Y=1.0625000000 0.0625000000 N= 4
E=0.0312500000 Y=1.0312500000 0.0312500000 N= 5
E=0.0156250000 Y=1.0156250000 0.0156250000 N= 6
E=0.0078125000 Y=1.0078125000 0.0078125000 N= 7
E=0.0039062500 Y=1.0039062500 0.0039062500 N= 8
E=0.0019531250 Y=1.0019531250 0.0019531250 N= 9
E=0.0009765625 Y=1.0009765625 0.0009765625 N=10
E=0.0004882813 Y=1.0004882813 0.0004882813 N=11
E=0.0002441406 Y=1.0002441406 0.0002441406 N=12
E=0.0001220703 Y=1.0001220703 0.0001220703 N=13
E=0.0000610352 Y=1.0000610352 0.0000610352 N=14
E=0.0000305176 Y=1.0000305176 0.0000305176 N=15
E=0.0000152588 Y=1.0000152588 0.0000152588 N=16
E=0.0000076294 Y=1.0000076294 0.0000076294 N=17
E=0.0000038147 Y=1.0000038147 0.0000038147 N=18
E=0.0000019073 Y=1.0000019073 0.0000019073 N=19
E=0.0000009537 Y=1.0000009537 0.0000009537 N=20
E=0.0000004768 Y=1.0000004768 0.0000004768 N=21
E=0.0000002384 Y=1.0000002384 0.0000002384 N=22
E=0.0000001192 Y=1.0000001192 0.0000001192 N=23
E=0.0000000596 Y=1.0000001192 0.0000001192 N=24
E=0.0000000298 Y=1.0000000000 0.0000000000 N=25

MANTD

MANTD
E=0.50000000000000000000 Y=1.50000000000000000000 0.50000000000000000000 N= 1
E=0.25000000000000000000 Y=1.25000000000000000000 0.25000000000000000000 N= 2
E=0.12500000000000000000 Y=1.12500000000000000000 0.12500000000000000000 N= 3
E=0.06250000000000000000 Y=1.06250000000000000000 0.06250000000000000000 N= 4
E=0.03125000000000000000 Y=1.03125000000000000000 0.03125000000000000000 N= 5
E=0.01562500000000000000 Y=1.01562500000000000000 0.01562500000000000000 N= 6
E=0.00781250000000000000 Y=1.00781250000000000000 0.00781250000000000000 N= 7
E=0.00390625000000000000 Y=1.00390625000000000000 0.00390625000000000000 N= 8
E=0.00195312500000000000 Y=1.00195312500000000000 0.00195312500000000000 N= 9
E=0.00097656250000000000 Y=1.00097656250000000000 0.00097656250000000000 N=10
E=0.00048828125000000000 Y=1.00048828125000000000 0.00048828125000000000 N=11
E=0.00024414062500000000 Y=1.00024414062500000000 0.00024414062500000000 N=12
E=0.00012207031250000000 Y=1.00012207031250000000 0.00012207031250000000 N=13
E=0.00006103515625000000 Y=1.00006103515625000000 0.00006103515625000000 N=14
E=0.00003051757812500000 Y=1.00003051757812500000 0.00003051757812500000 N=15
E=0.00001525878906250000 Y=1.00001525878906250000 0.00001525878906250000 N=16
E=0.00000762939453125000 Y=1.00000762939453125000 0.00000762939453125000 N=17
E=0.00000381469726562500 Y=1.00000381469726562500 0.00000381469726562500 N=18
E=0.00000190734863281250 Y=1.00000190734863281250 0.00000190734863281250 N=19
E=0.00000095367431640625 Y=1.00000095367431640625 0.00000095367431640625 N=20
E=0.00000047683715820313 Y=1.00000047683715820313 0.00000047683715820313 N=21
E=0.00000023841857910156 Y=1.00000023841857910156 0.00000023841857910156 N=22
E=0.00000011920928955078 Y=1.00000011920928955078 0.00000011920928955078 N=23
E=0.00000005960464477539 Y=1.00000005960464477539 0.00000005960464477539 N=24
E=0.00000002980232238770 Y=1.00000002980232238770 0.00000002980232238770 N=25
E=0.00000001490116119385 Y=1.00000001490116119385 0.00000001490116119385 N=26
E=0.00000000745058059692 Y=1.00000000745058059692 0.00000000745058059692 N=27
E=0.00000000372529029846 Y=1.00000000372529029846 0.00000000372529029846 N=28
E=0.00000000186264514923 Y=1.00000000186264514923 0.00000000186264514923 N=29
E=0.00000000093132257462 Y=1.00000000093132257462 0.00000000093132257462 N=30
E=0.00000000046566128731 Y=1.00000000046566128731 0.00000000046566128731 N=31
E=0.00000000023283064365 Y=1.00000000023283064365 0.00000000023283064365 N=32
E=0.00000000011641532183 Y=1.00000000011641532183 0.00000000011641532183 N=33
E=0.00000000005820766091 Y=1.00000000005820766091 0.00000000005820766091 N=34
E=0.00000000002910383046 Y=1.00000000002910383046 0.00000000002910383046 N=35
E=0.00000000001455191523 Y=1.00000000001455191523 0.00000000001455191523 N=36
E=0.00000000000727595761 Y=1.00000000000727595761 0.00000000000727595761 N=37
E=0.00000000000363797881 Y=1.00000000000363797881 0.00000000000363797881 N=38
E=0.00000000000181898940 Y=1.00000000000181898940 0.00000000000181898940 N=39
E=0.00000000000090949470 Y=1.00000000000090949470 0.00000000000090949470 N=40
E=0.00000000000045474735 Y=1.00000000000045474735 0.00000000000045474735 N=41
E=0.00000000000022737368 Y=1.00000000000022737368 0.00000000000022737368 N=42
E=0.00000000000011368684 Y=1.00000000000011368684 0.00000000000011368684 N=43
E=0.00000000000005684342 Y=1.00000000000005684342 0.00000000000005684342 N=44
E=0.00000000000002842171 Y=1.00000000000002842171 0.00000000000002842171 N=45
E=0.00000000000001421085 Y=1.00000000000001421085 0.00000000000001421085 N=46
E=0.00000000000000710543 Y=1.00000000000000710543 0.00000000000000710543 N=47
E=0.00000000000000355271 Y=1.00000000000000355271 0.00000000000000355271 N=48
E=0.00000000000000177636 Y=1.00000000000000177636 0.00000000000000177636 N=49
E=0.00000000000000088818 Y=1.00000000000000088818 0.00000000000000088818 N=50
E=0.00000000000000044409 Y=1.00000000000000044409 0.00000000000000044409 N=51
E=0.00000000000000022204 Y=1.00000000000000022204 0.00000000000000022204 N=52
E=0.00000000000000011102 Y=1.00000000000000011102 0.00000000000000011102 N=53
E=0.00000000000000005551 Y=1.00000000000000005551 0.00000000000000005551 N=54
E=0.00000000000000002776 Y=1.00000000000000002776 0.00000000000000002776 N=55
E=0.00000000000000001388 Y=1.00000000000000002776 0.00000000000000002776 N=56
E=0.00000000000000000694 Y=1.00000000000000000000 0.00000000000000000000 N=57