Просмотр полной версии : Особенности процессоров и устройств архитектуры PDP-11. Тесты. Диагностика.
Страницы :
1
2
3
[
4]
5
6
7
8
9
10
Небольшой тест проверки регистров 1801ВМ1, SEL2, SEL1 из "окна" КМД при адресах "окон" равными 3 и 377. Запускать на КМД с прошивкой 1801РЕ2-091 смысла нет, т.к. в данной прошивке отсутствует функция запуска подпрограмм пользователя. Выводятся восемь строк, включающие значения адресов с 177700 по 177716. Первая колонка после адреса представляет значение, считанное непосредственно с шины вычислителя, вторая и третья - через "окно" КМД с адресами "окон" 3 и 377 соответственно. Если при чтении произошел TRAP4, то вместо значения выводится шесть звездочек "******".
Пример запуска теста в эмуляторе Patron-а:
.TSSEL
TEST 1801VM1 REGS FROM KMD WINDOW ver.1
177700: 177740 177740 177740
177702: 177777 177777 177777
177704: 177440 177440 177440
177706: 104014 104014 104014
177710: 104014 104014 104014
177712: 177400 177400 177400
177714: 000000 000000 000000
177716: 160001 160001 160001
.
Ссылки на тест: на zx.pk.ru (http://zx.pk.ru/attachment.php?attachmentid=44924&d=1389204820) и на pisem.net (http://kisly-alexey.pisem.net/TSTKMD/tssel.zip).
Результат прогона тестов (http://www.phantom.sannata.ru/forum/index.php?t=14995#pp213740) на ДВК-1 с КМД-255:
.tskmd1
TEST KMD WINDOW ver.1
Hello from KMD, WINDOW=3
Hello from KMD, WINDOW=377
aDRES 177564(WINDOW=3) PRISUTSTWUET
aDRES 17777564(WINDOW=377) PRISUTSTWUET
.tssel
TEST 1801VM1 REGS FROM KMD WINDOW ver.1
177700: 177740 177130 177130
177702: 177777 177130 177130
177704: 177440 177130 177130
177706: 004004 177130 177130
177710: 177777 177130 177130
177712: 177400 177130 177130
177714: 000000 177130 177130
177716: 160001 177130 177130
Результат прогона тестов (http://www.phantom.sannata.ru/forum/index.php?t=14995#pp213740) на ДВК-1 с КМД-255:
.tskmd1
TEST KMD WINDOW ver.1
Hello from KMD, WINDOW=3
Hello from KMD, WINDOW=377
aDRES 177564(WINDOW=3) PRISUTSTWUET
aDRES 17777564(WINDOW=377) PRISUTSTWUET
.tssel
TEST 1801VM1 REGS FROM KMD WINDOW ver.1
177700: 177740 177130 177130
177702: 177777 177130 177130
177704: 177440 177130 177130
177706: 004004 177130 177130
177710: 177777 177130 177130
177712: 177400 177130 177130
177714: 000000 177130 177130
177716: 160001 177130 177130
Ну собственно все понятно. Из-за того, что не приходит сигнал RPLY, возникает TRAP4. Хотя реально чтение и запись должны проходить.
P.S. В тестах tskmd1 и tssel обнаружились серьезные ошибки - подпрограмма обработки TRAP4 устанавливала бит 0 не в сохраненном PSW, а в сохраненном PC. Новые версии:
tskmd1.zip: на zx.pk.ru (http://zx.pk.ru/attachment.php?attachmentid=45330&d=1390750855), на pisem.net (http://kisly-alexey.pisem.net/TSTKMD/tskmd1.zip).
tssel.zip: на zx.pk.ru (http://zx.pk.ru/attachment.php?attachmentid=45331&d=1390750929), на pisem.net (http://kisly-alexey.pisem.net/TSTKMD/tssel.zip).
Для начала - всё тестирование КЖД будет проводиться без загрузки RT-11. Нужно просто включить ДВК и проверить содержимое регистров КЖД с 174000 по 174020, нажимая клавишу <+> на доп.клавиатуре PC для перехода к следующей ячейке:
@174000/000401
174002/?
@
174004/000000
174006/000000
174010/000000
174012/000000
174014/000000
174016/050000
174020/000000
174022/?
Теперь понятно, что имелось в виду в описании КЖД, где написано, что область регистров занимает адреса с 174000 по 174177.
Чтобы окончательно в этом убедиться - можно проверить адреса 174170..174200
Господа, адреса КЖД в приличных ДВК - 17774000 - 17774017 - т.е. в зоне BS7.
Господа, адреса КЖД в приличных ДВК - 17774000 - 17774017 - т.е. в зоне BS7.
Что значит в приличных?
адреса КЖД в приличных ДВК - 17774000 - 17774017 - т.е. в зоне BS7.Гениально! Я погряз в 16-битной адресации, а у ДВК-4 надо вводить полный адрес.
Поэтому повторяем проверку для диапазонов адресов 17774000 - 17774022 и 17774170 - 17774200.
Приличных - т.е. с участием МС1201.03 или МС1201.04, и даже с более продвинутыми вычислителями типа М8 и т.д.
Вот:
Вопрос ММ там есть статус готовности? Если есть то какой код.
Значение 050000 по адресу 017774016 означает, что привод сообщает о своей полной исправности.
Значение 0600 по адресу 017774020 означает, что контроллер находится в режиме медленной смены дорожек ( 0400 ) и сообщает о готовности данных ( 0200 ).
Вообще-то любое обращение к регистрам контроллера должно сбрасывать сигнал *****сти данных, поэтому предлагаю следующий тест:
1. Записать в регистр 17774020 значение 10 ( начальная установка ) и посмотреть, что произойдёт:
@17774020/000400 10
@/000400
Точно "Начальная установка"? А то данные я ещё не скопировал.
Что скажут коллеги?
Что бы сохранить данные при проведении опытов, надо перерезать проводок "запись" или на КЖД, или на винте.
Это 6й на маленьком шлейфе?
Точно "Начальная установка"?Контроллер выполняет процедуру "Начальная установка" при каждом сигнале INIT, так что бояться нечего.
---------- Post added at 18:49 ---------- Previous post was at 18:46 ----------
Это 6й на маленьком шлейфе?Это 6-й в 40-жильном кабеле.
Это 6-й в 40-жильном кабеле.
Откуда 40 жил в MFM?
Это что-то новенькое.. Раньше там было 0600, а теперь 0401 ( Медленный шаг + Команда выполнена ).
Предлагаю следующую последовательность действий:
1. Открыть 17774020
2. Открыть 17774016
3. Открыть 17774020 и ввести 10
4. Нажимать "/" несколько раз, чтобы проверить, не будет ли меняться содержимое 17774020 в ходе начальной установки.
@17774020/000401
@17774016/050000
@17774020/000400 10
@/000400 /000400 /000400 /000400
---------- Post added at 19:29 ---------- Previous post was at 19:24 ----------
Откуда 40 жил в MFM?Первые 34 линии совпадают с ST-506, а остальные не подключены.
Теперь прочитаем нулевой сектор с нулевой дорожки:
@17774016/050000 40
@17774020/000600
Тоже что и у вас.
В эмуляторе DW будет?
В эмуляторе DW будет?Само собой.
А теперь запросим сектор с несуществующей стороны диска.
Интересно - запишет ли КЖД в 17774014 считанное с диска значение номера поверхности или там останется введённое значение:
@17774014/000000 5
@17774014/000005
@17774016/050000 40
@17774020/000401
@17774016/050400
@17774014/000005
@17774004/010000
Само собой.
ОТЛИЧНО!
Вот:
Как-то немного странно выглядит.
Похоже, что тест надо повторить, выполнив предварительно сброс контроллера ( или выключить/включить ДВК, или записать 10 в 17774020 ).
Понятно. Несмотря на установленный признак "Сектор не найден" - контроллер одновременно сообщает о готовности данных, как будто сектор был прочитан.
На этом тестирование можно пока завершить, а я попробую написать утилиту, позволяющую просматривать и копировать содержимое привода КЖД без использования драйвера и прерываний.
Спасибо!
Так какой вердикт ставим.
Так какой вердикт ставим.Пока проблем не видно.
Похоже, что для ДВК-1 придётся написать новый драйвер DW - все имеющиеся вылетают.
Пока проблем не видно.
Похоже, что для ДВК-1 придётся написать новый драйвер DW - все имеющиеся вылетают.
То-есть он подойдёт и для реального ДВК.
То-есть он подойдёт и для реального ДВК.Да, что подойдёт для ДВК-1 - подойдёт для любого реального ДВК.
Нашел у себя драйвер DW.SYS, работал на реальной ДВК. Настроек вообще никаких, но по объему для винча на 5 Мб. Может подойдет. Для системы может понадобится прописать параметры SYSGEN в смещении 060 с помощью DESS.
Обязательно писать новый драйвер ?
А старый чем хуже - он у меня и на БК11М работал отлично ( с учетом ячеек 000112-000114 в БК11М ). Если вылетает в пульт - посмотреть, где это конкретно он вылетает и устранить проблему.( Наверняка аппаратная проблема ... )
Да, что подойдёт для ДВК-1 - подойдёт для любого реального ДВК.
Не, я думал вы для эмулятора пишите.
В моём случае может попробовать драйвер для Эл.85? (на ДВК) Если есть то скиньте сюда.
Для системы может понадобится прописать параметры SYSGEN в смещении 060 с помощью DESS.
Вот здесь если можно поподробней.
Нашел у себя драйвер DW.SYS, работал на реальной ДВК.В отличие от предыдущих - этот драйвер ( похоже ) не использует команды EIS ( MUL, DIV ) и должен работать на ДВК-1 и БК-0011 без использования EM.SYS
А вылетают все драйверы в одном месте, наверное я что-то в КЖД неправильно эмулирую.
В отличие от предыдущих - этот драйвер ( похоже ) не использует команды EIS ( MUL, DIV ) и должен работать на ДВК-1 и БК-0011 без использования EM.SYS
А вылетают все драйверы в одном месте, наверное я что-то в КЖД неправильно эмулирую.
А причем тут ДВК-1? КЖД ставились только на ДВК с МС1201.03 и МС1201.04, т.е. с процессором 1801ВМ3. Там уже EIS было.
И причем тут эмуляция? У MiX вылетало вроде на реальной ДВК. Тут вот и надо разобраться - из-за чего?
А причем тут ДВК-1?Ситуация, когда владелец ДВК-1 хочет использовать КЖД - не так уж невероятна.
Ситуация, когда владелец ДВК-1 хочет использовать КЖД - не так уж невероятна.
Не невероятна, а наноневероятна. Как грузится-то с него будет?
---------- Post added at 14:43 ---------- Previous post was at 14:41 ----------
Да и еще - где столько КЖД, да и MFM-винчестеров? Так что если такой владелец и найдется, то только может быть один.
Дык у Патрона ДВК1+КЖД+МС5401. Я удивляюсь где люди находят перфораторы для перфолент/перфокарт,а так-же считыватели.
На БК процессор вм2?
На БК процессор вм2?
ВМ1, к тому же там есть контроллеры с поддержкой IDE, так что там MFM и нафиг не нужен.
Попробуйте лучше с тем драйвером, что я выложил. А если вылетает в пульт, то неплохо бы посмотреть содержимое ячеек до адреса вылета и после, а так же содержимое регистров.
ВМ1, к тому же там есть контроллеры с поддержкой IDE, так что там MFM и нафиг не нужен.
Вы-же говорили что этот драйвер на БК использовали, он что и для IDE годится?
После DIR DW:
@154462
Нужен драйвер для Электроники 85 я думаю.
Вы-же говорили что этот драйвер на БК использовали, он что и для IDE годится?
Где я мог такое говорить?
После DIR DW:
@154462
А что в ячейках?
Нужен драйвер для Электроники 85 я думаю.
Так на чем вы запускаете? На ДВК или Э-85? Для Э-85 нужен другой драйвер.
Где я мог такое говорить?
Ошибся я, извиняюсь, это Патрон говорил.
В отличие от предыдущих - этот драйвер ( похоже ) не использует команды EIS ( MUL, DIV ) и должен работать на ДВК-1 и БК-0011 без использования EM.SYS
А что в ячейках?
Какие команды?
Так на чем вы запускаете? На ДВК или Э-85? Для Э-85 нужен другой драйвер.
На ДВК, а винчестер с Эл.85.
Какие команды?
Вылетело в пульт по адресу 154462, посмотреть содержимое ячеек с 156450 по 156470 и содержимое регистров с R0 по R7, можно и RS.
Вылетело в пульт по адресу 154462, посмотреть содержимое ячеек с 156450 по 156470 и содержимое регистров с R0 по R7, можно и RS.В смысле - с 154450 по 154470.
В смысле - с 154450 по 154470.
Да, сорри, ошибся на 1 килобайт. Ну и регистры.
Еще выложу диск от ДВК, загрузочный с MY, с него драйвер DW и есть. Если имеется возможность перенести образ на реальную дискету, то можно с неё загрузится.
Если грузится с HX, то образ можно подключить к HX2:, а потом командой COPY/DEV HX2: MY0: перенести на дискету.
Так дамп смотреть или нет?
Есть предчувствие что надо читать либо 15 дорожку либо 1 вместо нулевой.
Есть предчувствие что надо читать либо 15 дорожку либо 1 вместо нулевой.Есть предчувствие, что вылетит при обращении к любому блоку диска.
Команда DU/TE DW:/ST:nn. ( где nn. - номер блока ) позволяет запросить чтение любого блока диска.
Так оно и есть.
Драйвер от Электроники 85 нужен.
Так оно и есть.
Драйвер от Электроники 85 нужен.
Не нужен. В этом драйвере есть обращения к определенным регистрам на шине Э-85.
Утилита COPYDW.SAV (http://emulator.pdp-11.org.ru/misc/CopyDW_v1.2.zip), предназначена для просмотра и копирования содержимого привода КЖД ДВК ёмкостью 5 Мбайт.
.RU COPYDW
*
CopyDW v1.0 /H - Справка
*/H
Копирование данных с привода КЖД
На экран : TT:/Ключи
В файл : IMAGE/Ключи
Ключи : S:nn - С блока nn
E:nn - До блока nn
O:nn - Только блок nn
*
Копирование блоков привода КЖД на экран и нефайловые устройства ( типа принтера ) производится в виде текстового дампа.
На файловые устройства осуществляется двоичное копирование.
Пример использования:
.RU COPYDW
*TT:/O:0
TT:/O:0
Блок номер--000000 0 0:0:0
000/ 000240 000005 000404 000000 000000 041420 116020 000400 * ..........C....*
020/ 004067 000044 000015 000000 005000 041077 047517 026524 *7.$.......?BOOT-*
040/ 026525 067516 061040 067557 020164 067157 073040 066157 *U-No boot on vol*
060/ 066565 006545 005012 000200 105737 177564 100375 112037 *ume....._.t.}...*
100/ 177566 100372 000777 000000 000000 000000 000000 000000 *v.z.............*
120/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
140/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
160/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
200/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
220/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
240/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
260/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
300/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
Ошибка 010000 - это ошибка: "Сектор не найден".
В прошлый раз, когда мы вручную читали 0-й сектор - мы не проверяли регистр ошибок. Теперь проверим:
@17774006/000000 0 Сектор
@17774012/000000 0 Дорожка
@17774014/000000 0 Сторона
@17774016/050000 40 Команда: "Чтение"
@17774020/000600
@17774016/054000 Текущее состояние
@17774004/000000 Код ошибки
Новая версия COPYDW.SAV (http://emulator.pdp-11.org.ru/misc/CopyDW_v1.2.zip), дополнительно выводит в заголовке блока количество слов, переданных контроллером после чтения блока.
...
Теперь проверим всю нулевую дорожку.
Нужно нажать в терминале кнопку [Лог], запустить CopyDW с ключом /E:15., а потом запостить сюда содержимое файла VT52.log :
.RU COPYDW
*TT:/E:15.
TT:/E:15.
Блок номер--000000 0 (256) 0:0:0 Ошибка 010000
000/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
020/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
040/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
060/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
100/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
120/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
140/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
160/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
200/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
220/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
240/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
260/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
Патрон, Я конечно это сделаю но добавлю немного информации.
На контроллере НМД2 ред.4 на котором читался винч имеет наклейку "Тристан 2" ,что там зашито я не знаю. И ещё, можно ли его как-то "подпоять" к ДВК?
можно ли его как-то "подпоять" к ДВК?А зачем ?
Пока никаких проблем в общении КЖД с ДВК не заметно.
Теперь вернёмся к программе TDW.SAV и проведём "Чтение последовательных секторов".
При нажатии <PrintScreen> терминал копирует скриншот в буфер обмена.
В ходе теста вид такой:
----------------------------------------------------------------------------
Рождествин т.321-67-81 (TDW V05.10) Винчестер 5 Мбайт
----------------------------------------------------------------------------
Тип винчестера | Установка параметров
Форматирование | Просмотр ошибок
Контроль записи | Позиционирование при чтении секторов
-> Контроль чтения | -> Чтение последовательных секторов
Функциональный тест |
Параметы теста |
Выход из теста |
Цилиндр Поверхность Сектор Количество Тип
Чтение : 100. 0. 0.
Ошибка : 100. 0. 0. [ 400.] [ 10000]
----------------------------------------------------------------------------
Стоп (С), Меню (М), Индикация (Т) , Прерывание (И) , Автоповтор -
----------------------------------------------------------------------------
После теста выбираем пункт: "Просмотр ошибок" :
----------------------------------------------------------------------------
Рождествин т.321-67-81 (TDW V05.10) Винчестер 5 Мбайт
----------------------------------------------------------------------------
Тип винчестера | Установка параметров
Форматирование | -> Просмотр ошибок
Контроль записи | Позиционирование при чтении секторов
-> Контроль чтения | Чтение последовательных секторов
Функциональный тест |
Параметы теста |
Выход из теста |
----------------------------------------------------------------------------
Стоп (С), Меню (М), Индикация (Т) , Прерывание (И) , Автоповтор -
----------------------------------------------------------------------------
Там вид такой:
----------------------------------------------------------------------------
Рождествин т.321-67-81 (TDW V05.10) Винчестер 5 Мбайт
----------------------------------------------------------------------------
0. 0. 0. 10000 0
Тип винчестера | 0. 1. 0. 10000 0
0. 2. 0. 10000 0
Форматирование | 0. 3. 0. 10000 0
1. 0. 0. 10000 0
Контроль записи | 1. 1. 0. 10000 0
1. 2. 0. 10000 0
-> Контроль чтения | 1. 3. 0. 10000 0
2. 0. 0. 10000 0
Функциональный тест | 2. 1. 0. 10000 0
2. 2. 0. 10000 0
Параметы теста | 2. 3. 0. 10000 0
3. 0. 0. 10000 0
Выход из теста | 3. 1. 0. 10000 0
3. 2. 0. 10000 0
3. 3. 0. 10000 0
-> Дайте команду стрелками. Ошибок [612.]
----------------------------------------------------------------------------
Стоп (С), Меню (М), Индикация (Т) , Прерывание (И) , Автоповтор -
----------------------------------------------------------------------------
Что-то с принтскрином не как.
Что-то с принтскрином не как.В блокнот не вставляется ?
...
Когда в самом начале мы запускали TDW.SAV и чтение всего диска прошло без единой ошибки - всё в процессе тестирования выглядело на экране так же, как и в этот раз, или были какие-то отличия ?
Тогда тоже были сообщения об ошибках или их не было ?
Тогда тоже было "Я92". Я думал это из-за не стыковки контроллера.
Вроде как есть 8/16 разрядные виды МФМ винчи.
Тогда тоже было "Я92".Это не проходят от привода сигналы: "Данные чтения -" и "Данные чтения +".
Нужно проверить осциллографом вид этих сигналов в приводе и в контроллере ( возможно, проблема с соединительным кабелем ).
Схемы нет.А зачем схема, если известно, что это линии 17 и 18 в 20-жильном кабеле.
Нужно прозвонить эти линии, потом найти те ноги с обеих сторон, откуда выходят и куда приходят сигналы с этих линий, и снять осциллограммы с этих ног.
---------- Post added at 14:39 ---------- Previous post was at 14:29 ----------
Схема КЖД есть здесь: http://archive.pdp11.org.ru/BIBLIOTEKA/KZdMFM_kmdMY.rar
17 и 18 приходят на 2и3 ногу кр559ип12, остальное ещё смотрю.
Схема МС 5406 есть здесь: http://deka.ssmu.ru/er/ms5406.djvu
и здесь: http://www.mediafire.com/?b6xhhq6szgsha1o
Насколько я понимаю - отличий в тракте чтения у МС 5401 и МС 5406 нет.
В том-то и дело что у меня написано МС5401 а на вид как МС5405(?).
http://zx.pk.ru/attachment.php?attachmentid=45409&d=1391078967
http://zx.pk.ru/attachment.php?attachmentid=45410&d=1391079033
P.S шлейф прозвонил, он в порядке.
---------- Post added at 15:32 ---------- Previous post was at 15:02 ----------
На осциллограмме пусто :(
На осциллограмме пустоПродолжительность импульсов чтения "не менее 25 нс", поэтому даже если импульсы там 50 нс, то чтобы их увидеть - нужен осциллограф на 20 МГц.
Если посмотреть по схеме КЖД дальше, то на входе сдвигового регистра принятые биты уже идут со скоростью 5 МГц.
У меня "детский" осциллограф 100кгц :)
Есть другой вариант, поменять проц. КМ1818ВМ01 на "Тристан 2" с платы НМД2. Как покатит?
Есть другой вариант, поменять проц. КМ1818ВМ01 на "Тристан 2" с платы НМД2. Как покатит?Зачем менять процессор, если в его работе не замечено пока ни одной ошибки..
То-есть контроллер ДВК аналогичен контроллеру Эл.85?
То-есть контроллер ДВК аналогичен контроллеру Эл.85?По схеме надо смотреть.
Ладно попробую посмотреть осциллом С1-49, а то стоит пылится. Правда для него ещё место надо найти.
---------- Post added at 19:26 ---------- Previous post was at 18:38 ----------
На нем то-же импульсов нет, как я и думал.
На нем тоже импульсов нетИ в самом приводе тоже импульсов нет ?
Ведь с головки-то импульсы наверняка идут. Получается, что у привода сгорело что-то в тракте чтения между головкой и разъёмом.
Для начала надо найти то место в приводе, где импульсы есть.
Я мерил 17,18 контакты привода до разъёма. Где с головки померить?
Где с головки померить?По схеме (http://emulator.pdp-11.org.ru/misc/MS5406-Read.jpg) надо смотреть.
---------- Post added at 20:54 ---------- Previous post was at 20:48 ----------
DA25 и DA26 ( NE592N ) - дифференциальные усилители сигнала головки, Б17 и Б18 - линии "Данные чтения +" и "Данные чтения -".
Да но это уже другой уровень.
1)Для начала делаем вывод что винчестер неисправен.
2)Чтобы мерить на ногах микросхем придётся перевернуть винчестер.
Допускается-ли работа винчестера в перевёрнутом состоянии?
3)Сначала я бы померил 1 ногу DD27, если сигнал приходит то надо смотреть ноги 4,12
возможно они запирают сигнал. Если это так то надо разбираться почему микросхема заперта.
4) Работа с винчестером не допускает ошибок, поэтому надо проверять каждое действие на достоверность. А это требует ещё дополнительное время.
Ну и в заключение добавлю, что работать в on-line так быстро как раньше уже не получится.
Для начала делаем вывод что винчестер неисправен.Такой вывод можно сделать, только обнаружив импульсы. Иначе может оказаться, что используемый осциллограф их просто не видит.
Допускается-ли работа винчестера в перевёрнутом состоянии?Сомневаюсь.
Работа с винчестером не допускает ошибокКогда в 80-е я первый раз разбирал МС5401, то порвал тонкий ленточный кабель, соединяющий плату электроники с блоком головок - он рвётся очень легко.
Прорабатывая техническую часть вопроса выяснил что:
Дифференциальный линейный драйвер на DD27 управляется сигналами "Выбор накопителя" и "Тип накопителя" через цепочку триггер Шмитта с инверсным входом D12.3 и инверторов D1.6, D7.4. одновременно и раздельно на 2 ноги высоким и низким уровнями на ногах 4 и 12.
Вывод: Мерить сигнал на выходе DD27 (конт. 2,3) надо относительно друг друга. Сигналы на вход, мерить относительно земли. Причем на конт. 4 должен быть низкий уровень а на 12том высокий.
Так?
---------- Post added at 23:31 ---------- Previous post was at 22:42 ----------
На ногах 1,4,12 низкий уровень. Перехожу к замеру на 5 ноге DD12.3
---------- Post added 05.02.2014 at 00:36 ---------- Previous post was 04.02.2014 at 23:31 ----------
На 5 и на 6 ноге DD12 низкий уровень (все переключатели замкнуты). Видимо с контроллера не приходит команда (замерял в режиме TDW- последовательное чтение).
Видимо с контроллера не приходит командаЕсли привод выбран ( и рапортует "привод выбран" по линии 1 кабеля данных ), то импульсы чтения есть всегда, когда крутятся блины, нет сигнала "запись" и не выполняется шаг головок.
Возможно, что-то глючит в том месте, где сигнал "запись" должен отключать чтение.
А если головки всё время припаркованы (возможно и за пределы блинов) то откуда сигналу взяться.
Судя по описанию управляющих сигналов интерфейса ST506 - "1" передаётся там замыканием линии на землю, а "0" - уровнем +5в. Поэтому, если у привода на линии "запись" нет +5в, то вполне возможно, что привод находится в режиме записи.
---------- Post added at 01:09 ---------- Previous post was at 01:05 ----------
А если головки всё время припаркованы (возможно и за пределы блинов) то откуда сигналу взяться.При подаче питания и каждом сигнале INIT - контроллер выполняет позиционирование на 0-ю дорожку. Если бы от накопителя не приходил сигнал "Дорожка 0" - контроллер бы об этом немедленно сообщил.
Будете смеяться но 6 контакт у меня отсоединен (по совету) от случайной записи.
При подаче питания и каждом сигнале INIT - контроллер выполняет позиционирование на 0-ю дорожку. Если бы от накопителя не приходил сигнал "Дорожка 0" - контроллер бы об этом немедленно сообщил.
А что должно быть на нулевой дорожке записано?
И потом вы же сами писали про ошибку в драйвере.
Будете смеяться но 6 контакт у меня отсоединен (по совету) от случайной записи.Если в результате там +2в .. +5в - то запись выключена, если меньше +0.5в - включена.
---------- Post added at 01:20 ---------- Previous post was at 01:17 ----------
В любом случае, влияние цепи "запись" - наиболее вероятная причина блокировки чтения. Там ведь и без активного сигнала "запись" могло что-то заглючить и заблокировать чтение.
Так что, 6 контакт соединять?
Буду надеяться что при одновременной подачи сигнала "запись" и чтение ничего там не стерлось.
Так что, 6 контакт соединять?Повредить это точно не может.
Или замерить уровень на этой линии со стороны контроллера и подать такой же. Тогда это будет "вечное чтение".
Но мы, помнится - выполняли тестирование чтения при помощи TDW.SAV задолго до "обрезания" и тогда то ли не было ни одной ошибки чтения, то ли не читался ни один сектор.
Соединил 6 контакт запустил COPYDW TT:/O:0 всё равно ошибка 10000. Дамп по нулям.
Соединил 6 контакт запустил COPYDW TT:/O:0 всё равно ошибка 10000. Дамп по нулям.Ну, если действительно был активен сигнал "запись", то весь диск давно размагничен и не содержит ни одного импульса.
Важно добиться, чтобы чтение было разблокировано всегда, кроме тех моментов, когда активен сигнал "запись" или выполняется шаг головок.
Потом можно будет отформатировать сторону 3 на предпоследнем цилиндре и проверить чтение.
---------- Post added at 02:11 ---------- Previous post was at 02:02 ----------
Но первым делом надо убедиться, что привод выбран и рапортует об этом, закорачивая на землю 1-ю линию кабеля данных.
Относительно тестирования ОЗУ КЖД программой TDW.SAV
Если ОЗУ контроллера исправно - результат выполнения теста такой:
----------------------------------------------------------------------------
Рождествин т.321-67-81 (TDW V05.10)
----------------------------------------------------------------------------
Тип винчестера | Обращение к регистрам
Форматирование | -> Тест ОЗУ контроллера
Контроль записи | Проверка доступности регистров
Контроль чтения | Входной контроль винчестера
-> Функциональный тест |
Параметы теста |
Выход из теста |
Проверка Чтения/Записи ОЗУ
----------------------------------------------------------------------------
Стоп (С), Меню (М), Индикация (Т) , Прерывание (И) , Автоповтор -
----------------------------------------------------------------------------
Если ОЗУ КЖД неисправно - результат такой:
----------------------------------------------------------------------------
Рождествин т.321-67-81 (TDW V05.10)
----------------------------------------------------------------------------
Тип винчестера | Обращение к регистрам
Форматирование | -> Тест ОЗУ контроллера
Контроль записи | Проверка доступности регистров
Контроль чтения | Входной контроль винчестера
-> Функциональный тест |
Параметы теста |
Выход из теста |
Ошибка-Чтения/Записи ОЗУ (ВК)
----------------------------------------------------------------------------
Стоп (С), Меню (М), Индикация (Т) , Прерывание (И) , Автоповтор -
----------------------------------------------------------------------------
С ОЗУ всё в порядке.
Прогнал тест "последовательность чтения" при установке винча 10Мб, после теста выдал ошибку С84.
Прогнал тест "последовательность чтения" при установке винча 10МбИнтересно, как выглядит содержимое регистра 17774020 при подключенном приводе 10 Мб:
@17774020/000001
...
Интересно, какой уровень на линии "Запись". Если в кабеле или контроллере что-то коротит эту линию на землю, то все подключаемые накопители будут в процессе "чтения" размагничиваться.
Интересно а что за ошибка С84? :)
В пультовом режиме я не знаю как его контроллер определяет 10 или 5 Мб
Пульт выдал: @17774020/000401
Интересно а что за ошибка С84?Это какой-то глюк программы TDW.SAV ( по сути - это количество блоков на диске == номер блока, следующего за последним на диске ).
Когда при чтении нет ошибок, то в процессе теста экран выглядит так:
----------------------------------------------------------------------------
Рождествин т.321-67-81 (TDW V05.10) Винчестер 10 Мбайт
----------------------------------------------------------------------------
Тип винчестера | Установка параметров
Форматирование | Просмотр ошибок
Контроль записи | Позиционирование при чтении секторов
-> Контроль чтения | -> Чтение последовательных секторов
Функциональный тест |
Параметы теста |
Выход из теста |
Цилиндр Поверхность Сектор Количество Тип
Чтение : 6. 2. 8.
Ошибка : [ ] [ ]
----------------------------------------------------------------------------
Стоп (С), Меню (М), Индикация (Т) , Прерывание (И) , Автоповтор -
----------------------------------------------------------------------------
Если нет импульсов чтения, то вид такой:
----------------------------------------------------------------------------
Рождествин т.321-67-81 (TDW V05.10) Винчестер 10 Мбайт
----------------------------------------------------------------------------
Тип винчестера | Установка параметров
Форматирование | Просмотр ошибок
Контроль записи | Позиционирование при чтении секторов
-> Контроль чтения | -> Чтение последовательных секторов
Функциональный тест |
Параметы теста |
Выход из теста |
Цилиндр Поверхность Сектор Количество Тип
Чтение : 5. 0. 4.
Ошибка : 5. 0. 4. [ 323.] [ 10000]
----------------------------------------------------------------------------
Стоп (С), Меню (М), Индикация (Т) , Прерывание (И) , Автоповтор -
----------------------------------------------------------------------------
Какой из двух вариантов наблюдался во время тестирования ?
---------- Post added at 16:36 ---------- Previous post was at 16:33 ----------
Пульт выдал: @17774020/000401Похоже, что все винчестеры ДВК работают в режиме "Медленный шаг".
2 вариант, к сожалению.
Похоже, что все винчестеры ДВК работают в режиме "Медленный шаг".
А в Эл.85 как?
2 вариант, к сожалению.А какой уровень на линии "Запись" ?
А в Эл.85 как?От компьютера это не зависит. Привод выдаёт этот сигнал, если может перемещать головки только со скоростью флоповода ( 3 мс на шаг + 15 мс задержка перед разблокировкой чтения ).
А какой уровень на линии "Запись" ?
Чуть позже,(надо подпаиватся, винчестер в перевернутом состоянии включать не хочу).
От компьютера это не зависит. Привод выдаёт этот сигнал, если может перемещать головки только со скоростью флоповода ( 3 мс на шаг + 15 мс задержка перед разблокировкой чтения ).
То-есть смотреть осциллографом на контакте "шаг" или и так всё понятно?
То-есть смотреть осциллографом на контакте "шаг" или и так всё понятно?Если этот сигнал на входе контроллера активен ( замкнут на землю ), то контроллер выдаёт сигнал ШАГ с интервалом не меньше 3 мс. Если хочется убедиться - можно выбрать пункт: "Парковка" и головка поедет через весь диск.
На 6 контакте уровень 3,44в
1 и 3 контакты соединены вместе и на земле.
На 6 контакте уровень 3,44вЗначит, запись выключена.
Теперь хорошо бы проверить уровень на линии 1 ( "Накопитель выбран" ) кабеля данных.
Если накопитель выбран и запись выключена - чтение должно быть разблокировано.
1 и 3 контакты соединены вместе и на земле.По стандарту ST506 - все нечётные линии управляющего кабеля должны быть на земле.
А нечего что 1й на земле сидит?В узком кабеле линия 1 сидит на земле ?
---------- Post added at 18:09 ---------- Previous post was at 17:48 ----------
Кстати, а не коротит ли ( в кабеле или контроллере ) линия "Шаг" - это объяснило бы и отсутствие движений головки, и ( возможно ) блокировку чтения.
В узком кабеле на линии 1 низкий уровень.
Шаг 24 линия?
В узком кабеле на линии 1 низкий уровень.Низкий, значит привод выбран.
Шаг 24 линия?Да.
На 24 линии низкий уровень.
На 24 линии низкий уровень.Вот и он - "больной зуб".
Потому и головки не движутся, и чтение блокировано.
Можно ещё проверить ответ накопителя по линии 8 "Шаг завершён". Если на этой линии высокий уровень - привод сообщает, что находится в состоянии "Шаг" и блокирует чтение и запись.
Так управление-же идет с контроллера а не с привода. Надо-же учитывать что контроллер не "настоящий". То-есть не с Эл.85.
Когда в привод с линии 24 приходит низкий уровень - привод устанавливает высокий уровень на линии 8 и блокирует чтение и запись. Когда низкий уровень на линии 24 переходит в высокий - привод выполняет шаг, выжидает 15 мс и выставляет низкий уровень на линию 8, докладывая контроллеру, что "Шаг завершён". Это стандарт ST506 - именно так работают все приводы КЖД.
24 линию надо заново перемерять, так-как при измерении у меня щуп подсоединен был не на тот канал.
На 8 в спокойном состоянии низкий уровень, при нажатии "УСТ." переходит в высокий и обратно в низкий уровни.
---------- Post added at 21:06 ---------- Previous post was at 20:24 ----------
И всё таки на 24 линии низкий уровень, даже если нажать кн. "УСТ".
Значит, стандарт не устанавливает, в какой именно момент шага привод должен выставлять высокий уровень на линию 8, но судя по происходящему - низкий уровень на линии 24 блокирует чтение и запись даже тогда, когда на линии 8 низкий уровень.
---------- Post added at 21:15 ---------- Previous post was at 21:14 ----------
Теперь надо найти, где коротит линия 24 - в кабеле, в разъёме или в контроллере.
---------- Post added at 21:24 ---------- Previous post was at 21:15 ----------
Если отключить линию 24 от привода - должны появиться импульсы чтения и сектора на нулевом цилиндре должны начать читаться без проблем.
Схема КЖД есть здесь: http://archive.pdp11.org.ru/BIBLIOTEKA/KZdMFM_kmdMY.rar
У меня другая плата, со стороны разъёма опечатано 17102251 21 с другой стороны 2-1
http://retropc.org/images/058_005.jpg
P.S фото не моё
Ладно не ищите схему для 21 версии. Буду пользоваться этой. Там к555ла13 с открытым коллектором, надо смотреть что приходит на 4и5 ногу. Должны быть два низких уровня.
---------- Post added 06.02.2014 at 00:10 ---------- Previous post was 05.02.2014 at 22:49 ----------
На 4 ноге низкий уровень, причем он не изменяется при последовательном чтении ни при парковке головок. Возможно там очень короткий импульс что его невидно.
ЕСТЬ ИМПУЛЬС! Как и ожидалось очень короткий.
ЕСТЬ ИМПУЛЬС! Как и ожидалось очень короткий.По стандарту продолжительность импульса ШАГ от 2 до 500 мкс.
У меня клетка равна 5мкс. Но возможна и погрешность измерений.
После инверсии этого сигнала - на линии 24 должно быть как раз то, что надо - постоянный высокий уровень с "провалами" шагов.
Я знаю, но я ещё 5 ногу не смотрел.
Надо смотреть?
Плюс ко всему там открытый коллектор на 6 ноге, если она на резистор не "стекает" то там как-бы тоже низкий уровень будет.
Я знаю, но я ещё 5 ногу не смотрел. Надо смотреть?Думаю, да - станет понятно, кто конкретно не пускает сигнал шага в привод.
На 5 ноге высокий уровень.
Хотя, инвертор ( насколько я понимаю ) по-любому врёт - он должен давать на выходе низкий уровень только тогда, когда на обоих входах высокие уровни, а он даёт на выходе 6 низкий уровень, когда на входе 4 тоже низкий уровень.
---------- Post added at 00:58 ---------- Previous post was at 00:57 ----------
На 5 ноге высокий уровень.В смысле - передача сигнала ШАГ разрешена.
---------- Post added at 01:00 ---------- Previous post was at 00:58 ----------
Похоже, что D38 надо просто менять.
Смотрим даташит аналога (на к555ла13 я не нашёл)
Элемент 2И-НЕ
При подачи на входы низкий уровень на выходе будет высокий, соответственно и наоборот. При несовпадении уровней на выходе инверсии не будет.
А шаг точно низким уровнем управляется?
При несовпадении уровней на входе инверсии не будет.При несовпадении уровней на выходе должно быть +5в.
А в нашем случае при несовпадении уровней на выходе 0в, что не соответствует таблице истинности.
А шаг точно низким уровнем управляется?
Таблицу истинности сюда если можно.
А шаг точно низким уровнем управляется?В ST506 все управляющие сигналы инверсные: 0в = ДА, +5в = НЕТ.
http://s5.hostingkartinok.com/uploads/images/2014/02/46f2027037337c372866d8a68d25c416.png
---------- Post added at 01:23 ---------- Previous post was at 01:21 ----------
http://www.riddle.ru/mirrors/books.qrz.ru/POLSXEM/CHAPTER1/1-12.jpg
Согласен, и последний эксперимент. Если у ла13 открытый коллектор то если подтянуть сопротивлением 1,5ком на землю то там должен появится высокий уровень.
Так?
Согласен, и последний эксперимент. Если у ла13 открытый коллектор то если подтянуть сопротивлением 1,5ком на землю то там должен появится высокий уровень. Так?Я в электронике слабо разбираюсь.
Думаю, если отключить линию ШАГ от привода - должны появиться импульсы чтения и должны начать выполняться запросы чтения секторов с 0 по 63.
Померил между 24 контактом и землёй -сопротивление ноль (а точнее бесконечность), хотя там подключена резисторная сборка.
Вывод я думаю всем понятен.
о, раз тут обсуждаются накопители, влезу ка и я со своим вопросом: есть два накопителя MFM, один С001 другой С002. Точно не помню, какой из них какой, но один из них тоненький (Как 5-дюймовый флоп) и с шаговым двигателем как у флопа, на двигателе наклейка Seagate. Так вот этот хард фурычит похоже как надо. После подачи питания долго раскручивается, двигает головками и продолжает крутить блинами. А вот второй привод - он двойной высоты, с соленоидным приводом головок. У него творится трэш - послу подачи питания накопитель начинает раскручивать блины и ... прыгать по столу, такое ощущение что начинает срывать блины и как эффект гироскопа подрывает весь накопитель.. Так вот главный вопрос - каков шанс того, что головки ещё не сорвало нафиг? Можно ли вскрывать гермообъём накопителя, чтобы посмотреть чё там творится?
По этому вот прыгающему накопителю есть бумажонка с картой неисправных секторов и инструкция. Приводы в Бресте и будут в моём распоряжении через неделю.
У него творится трэш
:v2_dizzy_punk:
- послу подачи питания накопитель начинает раскручивать блины и ... прыгать по столу,
:eek_std: Можешь видео снять? Никогда ещё не видел такого.
Можно ли вскрывать гермообъём накопителя, чтобы посмотреть чё там творится?
Думаю да. И фото если можно.
Сниму обязательно, через недельну еду домой и прихвачу их в Минск.
Отправлено с моего Lenovo A820 через Tapatalk
Я так понимаю, что это называется "приехали"?http://img.tapatalk.com/d/14/02/23/udyry2ed.jpghttp://img.tapatalk.com/d/14/02/23/aqypujyg.jpghttp://img.tapatalk.com/d/14/02/23/deqapuga.jpg
я так и не понял, каким образом эти запилы образовались... походу хард уже можно списыпать... он раскручивает блины, серва дёргает головку пару раз очень жёстко, и всё, голова уходит в сводобное плавание..
При определённой скорости блинов создаётся прослойка воздуха между блином и головкой. Если скорость падает то головки начинают касаться блинов и через какое то время появляются запилы. При старт/стопе касание неизбежно поэтому поверхность головки/блинов делают идеально гладкими. Если от головки отколится маленький кусочек стеклоферрита то тогда и начинает головка скрести диск. И еще такое происходит при очень длительной эксплуатации диска даже если головка идеальна. Просто трение делает своё дело пускай даже и сведена до минимума. Такое видел даже и на IDE дисках.
P.S На более прогрессивных дисках парковка осуществляется за пределами блинов.
Притом автоматически при снижении питания/оборотов диска.
При определённой скорости блинов создаётся прослойка воздуха между блином и головкой.
именно так и должно быть, но этот диск в раскрученном состоянии падла шкребёт бошками по диску, причём так нехило... Отправлю я его в морг, ибо серва всё равно не работает как надо. Будет экспонат хороший для музея.
А второй хард, который С002 и с шаговым двигателем вроде без запилов и работает корректно... После раскрутки быстро двигает башкой туды-сюды. Иногда делает много шагов на 0, упирается в упор, быстро делает "туды-сюды" и продолжает вращение. Попробую накинуть его в свой Commodore Colt.
Если диск падал то происходит искривление шпинделя. Соответственно диск начинает раскачиваться по вертикали тем самым задевая головки. И при вращении создаётся жуткий дебаланс.
Если диск падал то происходит искривление шпинделя. Соответственно диск начинает раскачиваться по вертикали тем самым задевая головки. И при вращении создаётся жуткий дебаланс.
разбаланса нет, но "шарканье" головок о пластины отчётливо слышно :(
Какой набор тестов самый последний? Будем тестировать 11/73 (http://zx-pk.ru/showpost.php?p=713083&postcount=157)
Какой набор тестов самый последний? Будем тестировать 11/73 (http://zx-pk.ru/showpost.php?p=713083&postcount=157)
Ссылки на тесты в первом сообщении темы Расчёт точного времени выполнения команд различными процессорами архитектуры PDP-11 (http://zx.pk.ru/showthread.php?t=14702) регулярно обновляются.
Интересен бы был тест, в котором исполняющийся блок кода можно было бы перемещать по адресам - задавать адрес тестирования при запуске прораммы, и длиной такой блок должен быть не более 2000 ( 8 ).
Так же неплохо бы иметь настраиваемый список команд для тестирования производительности - например, команды типа :
010001
020001
030001
012737 хххххх хххххх
и т.п. - что бы пользователь имел возможность прогнать тест на ему нужных образцах кода.
И таймер можно было бы выбирать - 50 или 48.5 гц :)
( А сам я ленюсь такое написать... )
Немного баловства... Небольшой тест долгого хранения информации в регистрах общего назначения, даже через перезагрузку системы, а также недокументированный способ передачи данных между задачами ;)
Прога печатает содержимое регистров R0'-R5', потом устанавливает их в значения 1-6. Требует наличия этих самых регитров...
Starting system from DU3
RT-11ZM (S) V05.07
.SET TT QUIET
?ETM-I-Date & time - 20-JUN-2014 21:55:33
?ETM-I-Time server - 70-71-BC-50-EB-D0, OpenBSD 5.5 amd64
.R DATE
.TY D10:TEST.MAC
.TITLE TEST
.MCALL .EXIT,.PRINT
PSW = 177776
START:: BIS #4000,@#PSW
MOV R0,REGS
MOV R1,REGS+2
MOV R2,REGS+4
MOV R3,REGS+6
MOV R4,REGS+10
MOV R5,REGS+12
MOV #1,R0
MOV #2,R1
MOV #3,R2
MOV #4,R3
MOV #5,R4
MOV #6,R5
CLR @#PSW
MOV #BUFF,R0
MOV #TEXT,R1
MOV #REGS,R2
CALL $EDMSG
CLRB @R0
.PRINT #BUFF
.EXIT
REGS: .BLKW 6
BUFF: .BLKW 32
TEXT: .ASCIZ /%6P/
.END START
.RU D10:TEST
172373 000003 177602 173056 000010 000004
.RU D10:TEST
000001 000002 000003 000004 000005 000006
.BO RT11FB
RT-11FB (S) V05.07
.SET TT QUIET
?ETM-I-Date & time - 20-JUN-2014 21:56:34
?ETM-I-Time server - 70-71-BC-50-EB-D0, OpenBSD 5.5 amd64
.R DATE
.RU D10:TEST
000001 000002 000003 000004 000005 000006
.
form,
1)Как скомпилить подскажи плиз.
2)В Новосибирске уже 21:56 ? :)
form,
1)Как скомпилить подскажи плиз.
2)В Новосибирске уже 21:56 ? :)
.MAC TEST
.LIN/LINK:SY:RSXLIB TEST
RSXLIB есть на pdp-11.org.ru в разделе файлов, описание есть в теме по софту для ДВК/PDP-11 где-то :)
Или на стакане по команде HELP SYSL (а так же в описании системной библиотеки для RSX - есть и на bitsavers и на pdp-11.org.ru).
Уже 22:08.
Автоматическое получение времени при загрузке работает как часы :D
.MAC TEST
.LIN/LINK:SY:RSXLIB TEST
Буду пробовать но для SJ возможно немного по другому.
Уже 22:08.
Автоматическое получение времени при загрузке работает как часы :D
Ну да, глупый вопрос...
Буду пробовать но для SJ возможно немного по другому.
В SJ точно также, только прога использует фичу DCJ11 процессоров - наличие второго набора регистров R0-R5. На ДВК второго набора нету даже в ВМ3 :)
Прогнал тест.
.RUN PDPT1C
PDP-11 Interrupts Test #1c
MTPS #340
...Press Key...
BIS #100,@#TTPS
Set T x3
RTI | NOP | WAIT | NOP | NOP | NOP
>>> Trap to 014 <<< ; 001234
NOP
>>> Trap to 014 <<< ; 001236
>>> Trap to 014 <<< ; 001240
NOP
NOP
NOP
MTPS #340
...Press Key...
BIS #100,@#TTPS
Set T x3
RTT | NOP | WAIT | NOP | NOP | NOP
NOP
>>> Trap to 014 <<< ; 001434
>>> Trap to 014 <<< ; 001436
NOP
>>> Trap to 014 <<< ; 001440
NOP
NOP
MTPS #340
BIS #100,@#TTPS
...Press Key...
Set T x3
RTT | NOP | NOP | NOP | NOP | NOP
NOP
>>> Trap to 014 <<< ; 001632
NOP
>>> Trap to 014 <<< ; 001634
NOP
>>> Trap to 014 <<< ; 001636
NOP
NOP
Program completed.
Для общего развития маленький тестик standalone mode на KDJ11-BF...
.TY TC.MAC
START:: MOV PC,R0
10$: TST (R0)+
CMP #END,R0
BNE 10$
SPL 7
BIS #400,@#177520
CALL PRINT
20$: CLR -(R0)
CMP #PRINT,R0
BNE 20$
BIC #400,@#177520
BIS #400,@#177746
CALL PRINT
EMT 350
PRINT:: MOV #MSG,R1
10$: TSTB @#177564
BPL 10$
MOVB (R1)+,@#177566
BNE 10$
RETURN
MSG: .ASCIZ <15><12>/*** TEST ***/<15><12>
.EVEN
END::
.END START
.RU TC
*** TEST ***
*** TEST ***
.
Интересный тестик для XM/ZM. Из-за того, что в RT-11 для виртуального задания PSW устанавливается в 140000 получается, что задание может лезть куда ему вздумается за пределы своего пространства. А вот если запустить через VBGEXE, то PSW будет 170000 и за пределы задания не вылезешь...
.TY VIO.MAC
.TITLE VIO -- ЖЕЛЕЗЯЧНЫЙ I/O ИЗ ВИРТУАЛЬНОГО ЗАДАНИЯ
.IDENT /V01.00/
.MCALL .EXIT,.SETTOP
.ASECT
.RAD50 /VIR/ ;ВИРТУАЛЬНОЕ ЗАДАНИЕ
.WORD -2 ;ВЕРХНИЙ ЛИМИТ
.PSECT
START:: MOV #200,@#177564 ;ЧТОБ НЕ ВИСЛО ЕСЛИ ЧТО
.SETTOP #-2 ;ПРОСИМ МАКСИМУМ ПАМЯТИ
MOV #140340,-(SP) ;СТАВИМ ПРИОРИТЕТ 7 ПРОЦУ ;)
MTPI @#177776 ;
MOV R0,R1 ;ВЕРХНИЙ АДРЕС
MOV #ADDR,R0 ;БУФЕР
MOV PC,R2 ;ФЛАГ НЕ ПОДАВЛЯТЬ НУЛИ В НАЧАЛЕ
CALL $CBOMG ;КОНВЕРТИРУЕМ В ASCII
MOV #TEXT,R0 ;АДРЕС СТРОКИ
10$: MOVB (R0)+,-(SP) ;ПОЛУЧАЕМ СИМВОЛ
BEQ 30$ ;0 - ЦОНЕЦ СТРОКИ
20$: MFPI @#177564 ;СТАТУС ТЕРМИНАЛА
TSTB (SP)+ ;
BPL 20$ ;НЕ ГОТОВ ЕЩЕ
MTPI @#177566 ;ПЕЧАТАЕМ СИМВОЛ
BR 10$ ;ЦИКЛ
30$: MOV #140000,@SP ;ПОНИЖАЕМ ПРИОРИТЕТ
MTPI @#177776 ;
.EXIT ;ВЫХОД
TEXT: .ASCII <15><12>/TOP ADDRESS: /
ADDR: .ASCIZ /XXXXXX/<15><12>
.END START
.RU VIO
TOP ADDRESS: 177776
.VRU VIO
.
Проверил под TSX-Plus V6.50 - PSW правильно выставляется в 170000.
Утилита COPYDW.SAV (http://emulator.pdp-11.org.ru/misc/CopyDW_v1.2.zip), предназначена для просмотра и копирования содержимого привода КЖД ДВК ёмкостью 5 Мбайт
Если можно, сделайте для винчестера Seagate ST-251-1. Или наверно сделать универсальную программу где вбиваются параметры винчестера.
сделать универсальную программу где вбиваются параметры винчестера.
Пока могу предложить только самостоятельно модифицировать и перекомпилировать исходник или патчить исполняемую программу.
Старый код превращения номера блока в номера сектора, стороны и цилиндра годится только для 16 секторов на дорожке и 4 головок:
$MaxTrack:
.Word 152.
READBL:
Mov #BIGBUF, R4
Mov #10., $Retr
Clr $Wcnt
Mov R3, R1
Mov R1, $Sect
BiC #^b1111111111110000, $Sect
ASR R1
ASR R1
ASR R1
ASR R1
Mov R1, $Side
BiC #^b1111111111111100, $Side
ASR R1
ASR R1
Mov R1, $Track
Cmp R1, $MaxTrack
BLE 11$
SeC
Return
Универсальный код :
$MaxTrack:
.Word 152. ; Максимальный номер дорожки
$N.Sec:
.Word 16. ; Число секторов на дорожке
$N.Head:
.Word 4. ; Число головок
READBL:
Mov #BIGBUF, R4
Mov #10., $Retr
Clr $Wcnt
Mov R3, R1
Clr R0
Div $N.Sec, R0
Mov R1, $Sect
Mov R0, R1
Clr R0
Div $N.Head, R0
Mov R1, $Side
Mov R0, $Track
Cmp R0, $MaxTrack
BLE 11$
SeC
Return
11$:
Mov $Sect, @#174006
Mov $Track, @#174012
Mov $Side, @#174014
Новая версия с универсальным кодом: CopyDW_v1.3 (http://emulator.pdp-11.org.ru/misc/CopyDW_v1.3.zip)
Константы $MaxTrack, $N.Sec и $N.Head в исполнимом файле COPYDW.SAV находятся по смещениям 01142, 01144, 01146 .
Patron, Спасибо, желательно конечно чтобы вносить параметры винчестера в диалоговом режиме.
желательно конечно чтобы вносить параметры винчестера в диалоговом режиме.
http://s7.hostingkartinok.com/uploads/images/2014/09/ac029b1d8840ed84c4cb97747efe6bb9.png
А почему править SAV файл неудобно? Создание диалога увеличит размер
программы и отнимет у программиста время, которое он может потратить
на отдых к примеру (смайл).
Если на PDP-11/83, эмулируемой в SIMH, запустить тест TSTVM2.SAV (http://sderni.ru/247059), то результат получается такой:
Тестирование правильности выполнения команд процессора:
Однооперандные байтовые команды:
NOP - OK
MOVB - OK
CLRB - OK
COMB - OK
INCB - OK
DECB - OK
NEGB - OK
TSTB - OK
ROLB - OK
RORB - OK
ASRB - OK
ASLB - OK
ADCB - OK
SBCB - OK
SXT - OK
Однооперандные словные команды:
MOV - OK
CLR - OK
COM - OK
INC - OK
DEC - OK
NEG - OK
TST - OK
ROL - OK
ROR - OK
ASR - OK
ASL - OK
ADC - OK
SBC - OK
SWAB - OK
Двухоперандные байтовые команды:
CMPB - OK
BITB - OK
BICB - OK
BISB - OK
Двухоперандные словные команды (частичный тест):
ADD - OK
SUB - OK
CMP - OK
BIT - OK
BIC - OK
BIS - OK
XOR - OK
Команды работы с флагами:
CLx - OK
SEx - OK
Команды условных переходов:
Bcc - OK
Команда умножения (частичный тест):
MUL (even/even) - OK
MUL (even/odd) - OK
MUL (odd/odd) - OK
MUL (odd/even) - OK
MUL (table) - OK
Команды сдвига (частичный тест):
ASH (test 1) - OK
ASH (test 2) - OK
ASHC (even) - OK
ASHC (odd) - OK
Команда деления (частичный тест):
DIV (even) - ERROR: 0x4B4E / 0xEE7C
DIV (odd) - ERROR: 0x7704 / 0x5956
.
Причём, для команды деления тест сообщает об ошибке эмуляции:
Команда деления (частичный тест):
DIV (even) - ERROR: 0x4B4E / 0xEE7C
DIV (odd) - ERROR: 0x7704 / 0x5956
Интересно, как это выглядит на реальной PDP-11/83.
Если Е11 устроит то вот.
Тест процессора КР1801ВМ2 v0.1a (c) by dr.Titus
Тестирование правильности выполнения команд процессора:
Однооперандные байтовые команды:
NOP - OK
NOP - OK
MOVB - OK
CLRB - OK
COMB - OK
INCB - OK
DECB - OK
NEGB - OK
TSTB - OK
ROLB - OK
RORB - ERROR: 0x376F / 0xAD84
ASRB - OK
ASLB - OK
ADCB - OK
SBCB - OK
SXT - OK
Однооперандные словные команды:
MOV - OK
Next page?2l2h
Next page?2l2h
CLR - OK
COM - OK
INC - OK
DEC - OK
NEG - OK
TST - OK
ROL - OK
ROR - OK
ASR - OK
ASL - OK
ADC - OK
SBC - OK
SWAB - OK
Двухоперандные байтовые команды:
CMPB - OK
BITB - OK
BICB - OK
BISB - OK
Двухоперандные словные команды (частичный тест):
ADD - OK
SUB - OK
Next page?2l2h
Next page?2l2h
CMP - OK
BIT - OK
BIC - OK
BIS - OK
XOR - OK
Команды работы с флагами:
CLx - OK
SEx - OK
Команды условных переходов:
Bcc - OK
Команда умножения (частичный тест):
MUL (even/even) - OK
MUL (even/odd) - OK
MUL (odd/odd) - OK
MUL (odd/even) - OK
MUL (table) - OK
Команды сдвига (частичный тест):
ASH (test 1) - OK
ASH (test 2) - ERROR: 0xB7C3 / 0xB7BB
Next page?2l2h
Next page?2l2h
ASHC (even) - OK
ASHC (odd) - OK
Команда деления (частичный тест):
DIV (even) - ERROR: 0x4B4E / 0xC69E
DIV (odd) - ERROR: 0x7704 / 0x80382l
DIV (odd) - ERROR: 0x7704 / 0x80382l
Да, не думал, что E11 более глючный, чем SIMH.
Если там можно разные процессоры эмулировать, то везде ли ошибки одинаковые ?
Да, не думал, что E11 более глючный, чем SIMH. Я кстати тоже. :)
Если там можно разные процессоры эмулировать, то везде ли ошибки одинаковые ? Какие конкретно процессоры тестировать, или все подряд?
---------- Post added at 21:27 ---------- Previous post was at 21:14 ----------
на всякий случай тест Е11 PDP11/23
Тестирование правильности выполнения команд процессора:
Однооперандные байтовые команды:
NOP - OK
MOVB - OK
CLRB - OK
COMB - OK
INCB - OK
DECB - OK
NEGB - OK
TSTB - OK
ROLB - OK
RORB - ERROR: 0x376F / 0xAD84
ASRB - OK
ASLB - OK
ADCB - OK
SBCB - OK
SXT - OK
Однооперандные словные команды:
MOV - OK
Next page?2l2h
Next page?2l2h
CLR - OK
COM - OK
INC - OK
DEC - OK
NEG - OK
TST - OK
ROL - OK
ROR - OK
ASR - OK
ASL - OK
ADC - OK
SBC - OK
SWAB - OK
Двухоперандные байтовые команды:
CMPB - OK
BITB - OK
BICB - OK
BISB - OK
Двухоперандные словные команды (частичный тест):
ADD - OK
SUB - OK
Next page?2l2h
Next page?2l2h
CMP - OK
BIT - OK
BIC - OK
BIS - OK
XOR - OK
Команды работы с флагами:
CLx - OK
SEx - OK
Команды условных переходов:
Bcc - OK
Команда умножения (частичный тест):
MUL (even/even) - OK
MUL (even/odd) - OK
MUL (odd/odd) - OK
MUL (odd/even) - OK
MUL (table) - OK
Команды сдвига (частичный тест):
ASH (test 1) - OK
ASH (test 2) - ERROR: 0xB7C3 / 0xB7BB
Next page?2l2h
Next page?2l2h
ASHC (even) - OK
ASHC (odd) - OK
Команда деления (частичный тест):
DIV (even) - ERROR: 0x4B4E / 0xC69E
DIV (odd) - ERROR: 0x7704 / 0x80382l
---------- Post added at 21:32 ---------- Previous post was at 21:27 ----------
Patron, Теперь самое время тест прогнать на Эл.85, как Вы считаете? :)
все подряд?Тестировать все, где есть команды MFPS и MTPS - это 11/23, 11/53, 11/73, 11/83, 11/84, 11/93, 11/94.
А результаты выкладывать, только если будут отличаться.
---------- Post added at 20:35 ---------- Previous post was at 20:33 ----------
самое время тест прогнать на Эл.85Гениально !!!
Тест на реальной Эл.85
Тестирование правильности выполнения команд процессора:
Однооперандные байтовые команды:
NOP - OK
MOVB - OK
CLRB - OK
COMB - OK
INCB - OK
DECB - OK
NEGB - OK
TSTB - OK
ROLB - OK
RORB - OK
ASRB - OK
ASLB - OK
ADCB - OK
SBCB - OK
SXT - OK
Однооперандные словные команды:
MOV - OK
Next page?2l2h
Next page?2l2h
CLR - OK
COM - OK
INC - OK
DEC - OK
NEG - OK
TST - OK
ROL - OK
ROR - OK
ASR - OK
ASL - OK
ADC - OK
SBC - OK
SWAB - OK
Двухоперандные байтовые команды:
CMPB - OK
BITB - OK
BICB - OK
BISB - OK
Двухоперандные словные команды (частичный тест):
ADD - OK
SUB - OK
Next page?2l2h
Next page?2l2h
CMP - OK
BIT - OK
BIC - OK
BIS - OK
XOR - OK
Команды работы с флагами:
CLx - OK
SEx - OK
Команды условных переходов:
Bcc - OK
Команда умножения (частичный тест):
MUL (even/even) - OK
MUL (even/odd) - OK
MUL (odd/odd) - OK
MUL (odd/even) - OK
MUL (table) - OK
Команды сдвига (частичный тест):
ASH (test 1) - OK
ASH (test 2) - OK
Next page?2l2h
Next page?2l2h
ASHC (even) - OK
ASHC (odd) - OK
Команда деления (частичный тест):
DIV (even) - ERROR: 0x4B4E / 0x3B6F
DIV (odd) - ERROR: 0x7704 / 0x65F42l
---------- Post added at 22:44 ---------- Previous post was at 22:18 ----------
Как то заинтриговал меня тест. Если на ВМ2 он идёт то теоретически он должен идти на ВМ3.
Сейчас посмотрим...
Хм.. а меня заинтриговала команда деления.
По сообщению Titus на реальной УКНЦ она "ОК", а на DEC и Эл. 85 - "ERROR" ?
Где косяк?
Тест на реальном ДВК (МС1201.03)
Тестирование правильности выполнения команд процессора:
Однооперандные байтовые команды:
NOP - OK
MOVB - OK
CLRB - OK
COMB - OK
INCB - OK
DECB - OK
NEGB - OK
TSTB - OK
ROLB - OK
RORB - OK
ASRB - OK
ASLB - OK
ADCB - OK
SBCB - OK
SXT - OK
Однооперандные словные команды:
MOV - OK
Next page?2l2h
Next page?2l2h
CLR - OK
COM - OK
INC - OK
DEC - OK
NEG - OK
TST - OK
ROL - OK
ROR - OK
ASR - OK
ASL - OK
ADC - OK
SBC - OK
SWAB - OK
Двухоперандные байтовые команды:
CMPB - OK
BITB - OK
BICB - OK
BISB - OK
Двухоперандные словные команды (частичный тест):
ADD - OK
SUB - OK
Next page?2l2h
Next page?2l2h
CMP - OK
BIT - OK
BIC - OK
BIS - OK
XOR - OK
Команды работы с флагами:
CLx - OK
SEx - OK
Команды условных переходов:
Bcc - OK
Команда умножения (частичный тест):
MUL (even/even) - OK
MUL (even/odd) - OK
MUL (odd/odd) - OK
MUL (odd/even) - OK
MUL (table) - OK
Команды сдвига (частичный тест):
ASH (test 1) - ERROR: 0x47F3 / 0x47E5
ASH (test 2) - ERROR: 0xB7C3 / 0xB7F1
Next page?2l2h
Next page?2l2h
ASHC (even) - ERROR: 0x69EB / 0xBF41
ASHC (odd) ' - ERROR: 0x32A3 / 0x1ADB
Команда деления (частичный тест):
DIV (even) - ERROR: 0x4B4E / 0x485D
DIV (odd) - ERROR: 0x7704 / 0x75CD2l
Где косяк?Нет косяка - просто процессоры по-разному выполняют деление.
Например, у разных процессоров может отличаться содержимое приёмника после деления на ноль.
Тестировать все, где есть команды MFPS и MTPS - это 11/23, 11/53, 11/73, 11/83, 11/84, 11/93, 11/94.
Тесты ни чем не отличались от теста PDP11/23 в Е11.
Интересно, как это выглядит на реальной PDP-11/83.
+OMANDA DELENIQ (^ASTI^NYJ TEST):
DIV (even) - ERROR: 0x4B4E / 0xEE7C
DIV (odd) - ERROR: 0x7704 / 0x5956
---------- Post added at 19:22 ---------- Previous post was at 19:14 ----------
Да, не думал, что E11 более глючный, чем SIMH
А он и не более глючный. Но когда сравнивал умолчания для 11/83 нашел отличия. Например на реальном PDP-11/83 "MOV Rx,(Rx)+" если скажем Rx содержит 1000 запишет 1002 в 1000, а на E11 наоборот. Это можно поменять настройкой "SET CPU DESTFIRST", хотя обычно такие команды не используют, а более-менее новые MACRO генерят ошибку Z для них.
На реальной PDP-11/83 результат оказался в точности таким же, как на эмулируемой в SIMH ( и совсем не таким, как на эмулируемой в E11 )
...
А он и не более глючный.Проблема E11 вот где:
RORB - ERROR: 0x376F / 0xAD84
Явно неправильно эмулируется установка флагов по результатам некоторых выполнений команды RORB.
Нет косяка - просто процессоры по-разному выполняют деление.
Например, у разных процессоров может отличаться содержимое приёмника после деления на ноль.
По сделанным тестам пока только ВМ2 отличается от остальных командой деления. Интересно подробнее узнать какие отличия при выполнении деления.
По сделанным тестам пока только ВМ2 отличается от остальных командой деления. Интересно подробнее узнать какие отличия при выполнении деления.Это надо автора теста спрашивать.
Наверняка - все различия в результате выполнения деления на ноль. Этот результат нигде не "гостирован" и поэтому любое значение делимого и остатка после деления на ноль имеет одинаковый статус. Там не может быть "правильного" и "неправильного" вариантов результата - все мыслимые варианты будут одинаково "произвольные".
---------- Post added at 16:10 ---------- Previous post was at 16:09 ----------
Любопытнее, что у 1801ВМ3 команды сдвига дают не такой результат, как на всех остальных процессорах:
Команды сдвига (частичный тест):
ASH (test 1) - ERROR: 0x47F3 / 0x47E5
ASH (test 2) - ERROR: 0xB7C3 / 0xB7F1
ASHC (even) - ERROR: 0x69EB / 0xBF41
ASHC (odd) - ERROR: 0x32A3 / 0x1ADB
Наверняка - все различия в результате выполнения деления на ноль.
Или в результате деления нечетного регистра. На 11/83 например в результате такого деления ничего не произойдет кроме установки флага V в PSW.
Это надо автора теста спрашивать.
Наверняка - все различия в результате выполнения деления на ноль. Этот результат нигде не "гостирован" и поэтому любое значение делимого и остатка после деления на ноль имеет одинаковый статус. Там не может быть "правильного" и "неправильного" вариантов результата - все мыслимые варианты будут одинаково "произвольные".
Тест - это всего лишь перебор всех комбинаций аргумента источника и аргумента приемника, и 16 комбинаций изначальных флагов (4 флага - 16 возможных начальных комбинации).
В командах, где два операнда 16-битные, для экономии времени перебор всех комбинаций аргумента производится хитрый - левые и правые биты чисел перебираются, а средние биты заполняются распространенным граничным битом. Таким образом, результат фактически эквивалентен полному перебору, за исключением нелинейных команд типа деления и умножения, но для них (во всяком случае для умножения) есть дополнительный (табличный) тест, направленный на поимку наиболее критичных глюков.
есть дополнительный (табличный) тест, направленный на поимку наиболее критичных глюков.Тогда наверное надо сделать чтоб тест создавал лог файл о том месте где идут ошибки. В лог файле перечисляются конкретные операции с процессором и значения результатов в восьмеричном виде.
16 комбинаций изначальных флагов (4 флага - 16 возможных начальных комбинации)
Насчет флагов кстати тоже не все однозначно. В частности, для MUL при использовании нечетного регистра флаги могут быть выставлены как для 32bit результата так и для 16bit... Вообще многие команды ведут себя по разному наразных процах. Я как-то выкладывал здесь таблицу различий. Можно взять на вооружение, добавить ВМ-специфику и сделать универсальный тест :)
Тогда наверное надо сделать чтоб тест создавал лог файл о том месте где идут ошибки.В обсуждаемом тесте просто вычисляется контрольная сумма результатов всех выполняемых операций и затем сравнивается с эталоном, поэтому невозможно определить, какая именно из операций дала отличающийся результат.
Чтобы иметь возможность проверять результат для каждой операции одельно - нужно использовать программную модель и на каждом шаге сравнивать результат теста с результатом модели, но это будет уже совсем другой тест.
---------- Post added at 15:35 ---------- Previous post was at 15:32 ----------
сделать универсальный тестВ E11 неправильно эмулируется команда RORB, поэтому для начала можно сделать тест, который пошагово сравнивает результат выполнения команды с результатом моделирования и сообщает об отличиях.
RORB - ERROR: 0x376F / 0xAD84
В E11 неправильно эмулируется команда RORB
На досуге надо будет проверить.Вообще E11 вроде по заявлению автора успешно прошел XXDP с выполнением всех базовых команд со всеми возможными режимами адресации.
E11 вроде по заявлению автора успешно прошел XXDP с выполнением всех базовых команд со всеми возможными режимами адресации.Насколько я понял - обсуждаемый тест проверяет только режим адресации 00 ( операнд в регистре ), но даже тут результат эмуляции в E11 не совпадает с результатом запуска теста на реальном процессоре.
Ближе к вечеру попробую написать тест, пошагово сравнивающий результаты выполнения RORB с результатами моделирования той же команды на тех же исходных данных.
Ближе к вечеру попробую написать тест, пошагово сравнивающий результаты выполнения RORB с результатами моделирования той же команды на тех же исходных данных.
Было бы интересно. Как раз скоро очередную портянку собираюсь писать автору.
form, За одно спроси почему эмулятор так сильно загружает процессор. У меня так 25% ест даже в режиме простоя. Потом если закрыть крестиком то консоль убирается а процесс всё равно продолжает работать. Ну и последнее, пускай поддержат НХ диск.
form, За одно спроси почему эмулятор так сильно загружает процессор. У меня так 25% ест даже в режиме простоя. Потом если закрыть крестиком то консоль убирается а процесс всё равно продолжает работать. Ну и последнее, пускай поддержат НХ диск.
HX диск "поддерживать" бессмысленно по понятным причинам - в частности по той, что он его поддерживает по определению если обращение идет по COM порту, а запросить поддержку устройства неригодного для работы системы и ломающего ее функционал в качестве независимого устройства язык не повернется ;)
form, Что может в эмуляторе ломаться. А насчет черезмерной загрузки процессора и не закрытия процесса после выхода я думаю стоит написать.
form, Что может в эмуляторе ломаться. А насчет черезмерной загрузки процессора и не закрытия процесса после выхода я думаю стоит написать.
Насчет загрузки-незакрытия написано, но проблема в том, что он пишет на ассемблере и под виндовс - вслепую :)
Там и под линух хватает косяков - в частности бинарь получается не линуховый в полном смысле слова, а только принимаемый линухом как таковой... Написано, признано хорошей идеей сделать правильно, но.... ждем - уже версии 3-4... А пока ни одна система с эмуляцией линуха просто не признает бинарь линуховым :)
Написал простенький тест команды RORB:
.TITLE RORB -- RORB TEST
.IDENT /V01.00/
.MCALL DIR$,EXIT$S,QIOW$,SVTK$S
QIOW: QIOW$ IO.WVB,5,1,,,,<TEXT,TEXTL,40>
SSTV: .WORD 0,0,V.BPT
SSTL = <.-SSTV>/2
START:: SVTK$S #SSTV,#SSTL ;SET SST VECTOR
CLR R0 ;SET INITIAL VALUE
MOV #18.,R3 ;SET SHIFT COUNT
SEC ;SET CARRY
BPT ;PRINT VALUES
10$: RORB R0 ;ROTATE RIGHT
BPT ;PRINT VALUE
SOB R3,10$ ;LOOP
EXIT$S
V.BPT: MOV R0,-(SP) ;SAVE R0
MOV R0,R1 ;SET R0 VALUE
MOV #VR0,R0 ;SET BUFFER ADDRESS
MOV PC,R2 ;SET LEADING ZEROS FLAG
CALL $CBOMG ;CONVERT TO ASCII
MOV #VPS,R0 ;SET BUFFER ADDRESS
MOV 4(SP),R1 ;SET PS VALUE
MOV PC,R2 ;SET LEADING ZEROS FLAG
CALL $CBOMG ;CONVERT TO ASCII
MOV (SP)+,R0 ;RESTORE R0
DIR$ #QIOW ;PRINT TO TERMINAL
RTI
TEXT: .ASCII /R0=/
VR0: .ASCII /XXXXXX, PS=/
VPS: .ASCII /XXXXXX/
TEXTL = .-TEXT
.END START
Результат под E11:
>RUN RORB
R0=000000, PS=170001
R0=000200, PS=170010
R0=000100, PS=170000
R0=000040, PS=170000
R0=000020, PS=170000
R0=000010, PS=170000
R0=000004, PS=170000
R0=000002, PS=170000
R0=000001, PS=170000
R0=000000, PS=170007
R0=000200, PS=170010
R0=000100, PS=170000
R0=000040, PS=170000
R0=000020, PS=170000
R0=000010, PS=170000
R0=000004, PS=170000
R0=000002, PS=170000
R0=000001, PS=170000
R0=000000, PS=170007
>
Результат под SimH:
>RUN RORB
R0=000000, PS=170001
R0=000200, PS=170012
R0=000100, PS=170000
R0=000040, PS=170000
R0=000020, PS=170000
R0=000010, PS=170000
R0=000004, PS=170000
R0=000002, PS=170000
R0=000001, PS=170000
R0=000000, PS=170007
R0=000200, PS=170012
R0=000100, PS=170000
R0=000040, PS=170000
R0=000020, PS=170000
R0=000010, PS=170000
R0=000004, PS=170000
R0=000002, PS=170000
R0=000001, PS=170000
R0=000000, PS=170007
>
Из теста видно, что когда вдвигается старший бит в SimH устанавливается флаг переполнения, в E11 этого не выполняется. Для команды ROR флаг выставляется и там и там.
---------- Post added at 12:42 ---------- Previous post was at 12:09 ----------
А на MIM все правильно выполняется:
>RUN RORB
R0=000000, PS=170001
R0=000200, PS=170012
R0=000100, PS=170000
R0=000040, PS=170000
R0=000020, PS=170000
R0=000010, PS=170000
R0=000004, PS=170000
R0=000002, PS=170000
R0=000001, PS=170000
R0=000000, PS=170007
R0=000200, PS=170012
R0=000100, PS=170000
R0=000040, PS=170000
R0=000020, PS=170000
R0=000010, PS=170000
R0=000004, PS=170000
R0=000002, PS=170000
R0=000001, PS=170000
R0=000000, PS=170007
>
там коммерческий вариант старой версии какой-то вроде
Написал простенький тест команды RORBПока я собирался с духом, чтобы начать писать "универсальный тест RORB" - эта необходимость благополучно отпала.
Следующий глюк E11 - в команде ASH :
Команды сдвига (частичный тест):
ASH (test 1) - OK
ASH (test 2) - ERROR: 0xB7C3 / 0xB7BB
ASHC (even) - OK
ASHC (odd) - OK
ждем - уже версии 3-4...
Это как понять?, на сайте последняя версия 7.1
Это как понять?, на сайте последняя версия 7.1
Это понять так, что когда я про это писал была еще версия 5.0 максимум ;)
Обновил версию теста до 0.2а
1. Теперь тестирование несуществующих команд пишет информацию о том, какое исключение они вызвали (TRAP 4 или 10), и софтварное тестирование не производится.
2. Отменил отключение клавиатуры. Теперь на ДВК работает без глюков, но мне это не нравится, т.к. если человек нажмет CTRL+C, то останутся неправильные вектора 4 и 10.
TSTVM2 v0.2a (http://sderni.ru/247564)
если человек нажмет CTRL+C, то останутся неправильные вектора 4 и 10.
А кто мешает перехватывать CTRL/C, проверять статус нажатия его и отрабатывать в программе?
Тем более что отключение клавиатуры вообще понятие растяжимое :)
---------- Post added at 18:08 ---------- Previous post was at 18:06 ----------
...или вообще не перехватывать вестора 4/10, а использовать вызов .TRPSET :)
А кто мешает перехватывать CTRL/C, проверять статус нажатия его и отрабатывать в программе?
Тем более что отключение клавиатуры вообще понятие растяжимое :)
Я не ПДП-шник, вашей системы не знаю) Только самые основы, чтобы программы писать)
Я не ПДП-шник, вашей системы не знаю) Только самые основы, чтобы программы писать)
.TRPSET #AREA,#SSTISR
.SCCA #AREA,#FLAG
Первый вызов устанавливает обработчик прерываний 4/10 (одноразовый ! - для повтора надо снова вызвать .TRPSET). При входе в SSTISR если бит C установлен - это 10. Второй блокирует двойной CTRL/C, статус проверяется по адресу FLAG - если не 0 - было нажато. AREA и там и там двухсловный блок.
.TRPSET #AREA,#SST
.SCCA #AREA,#FLAG
Первый вызов устанавливает обработчик прерываний 4/10 (одноразовый ! - для повтора надо снова вызвать .TRPSET). При входе если бит C установлен - это 10. Второй блокирует двойной CTRL/C, статус проверяется по адресу FLAG - если не 0 - было нажато. AREA и там и там двухсловный блок.
Отчасти это для меня филькина грамота)
Почему нельзя самому менять вектора, а надо использовать TRPSET?
Что такое двойной CTRL+C?
Как отменить любое пользовательское прерывание программы, и как разрешить?
Как сделать так, чтобы при прерывании пользователем, вызывалась какая-либо моя функция, которая восстановит вектора?
Как сделать так, чтобы при прерывании пользователем, вызывалась какая-либо моя функция, которая восстановит вектора?
Да, ну и разумеется никто не мешает вызвать .SCCA и проверять состояние нажатия CTRL/C как было написано выше...
---------- Post added at 18:54 ---------- Previous post was at 18:20 ----------
В качестве разминки прежде чем побегу по делам :)
Подпрограмма преобразования HEX->ASCII на 1 слово короче и совсем простая :)
PRHEX:: CALL @PC
CALL @PC
CLR R3
ROL R1
ROL R3
ROL R1
ROL R3
ROL R1
ROL R3
ROL R1
ROL R3
MOVB HEXTB(R3),(R0)+
RETURN
HEXTB: .ASCII /0123456789ABCDEF/
Прогнал тест на Эл.85
Всё ОК кроме операций DIV.
Команда деления (частичный тест):
DIV (even) - ERROR: 0x4B4E / 0x3B6F
DIV (odd) - ERROR: 0x7704 / 0x65F4
Следующий глюк E11 - в команде ASH
Только надо понять еще что второй тест делает.
И Любой ли проц в E11 дает глюк или те которые с глючной реализацией и должны быть.
На ВМ3 побольше ошибок.
Команды сдвига (частичный тест):
ASH (test 1) - ERROR: 0x47F3 / 0x47E5
ASH (test 2) - ERROR: 0xB7C3 / 0xB7F1
Next page?
ASHC (even) - ERROR: 0x69EB / 0xBF41
ASHC (odd) - ERROR: 0x32A3 / 0x1ADB
Команда деления (частичный тест):
DIV (even) - ERROR: 0x4B4E / 0x485D
DIV (odd) - ERROR: 0x7704 / 0x75CD
Только надо понять еще что второй тест делает.В архиве TASH.zip (http://emulator.pdp-11.org.ru/misc/TASH.zip) - "визуализатор" работы первого и второго тестов команды ASH.
Можно сначала запустить любой из этих тестов на "эталонной" системе, потом на "испытуемой", а затем построчно сравнить сохранённые логи.
Можно сначала запустить любой из этих тестов на "эталонной" системе, потом на "испытуемой", а затем построчно сравнить сохранённые логи.
Уф.
Переделал под RSX ибо мне так проще... Запустил на 11/83, E11 (94) и SimH (93). Полный лог не привожу - большой он слишком. Только отличия:
pdp-11:/tmp% diff -duN tash-83 tash-simh
pdp-11:/tmp% diff -duN tash-83 tash-e11
--- tash-83 Mon Oct 27 23:34:32 2014
+++ tash-e11 Mon Oct 27 23:35:07 2014
@@ -29,7 +29,7 @@
PSW[000] ; R0[052062] ; R1[177634] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177635] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177636] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
-PSW[000] ; R0[052062] ; R1[177637] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
+PSW[000] ; R0[052062] ; R1[177637] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177640] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177641] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177642] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
@@ -93,7 +93,7 @@
PSW[000] ; R0[052062] ; R1[177734] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177735] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177736] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
-PSW[000] ; R0[052062] ; R1[177737] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
+PSW[000] ; R0[052062] ; R1[177737] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177740] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177741] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177742] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
@@ -157,7 +157,7 @@
PSW[000] ; R0[052062] ; R1[000034] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000035] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000036] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
-PSW[000] ; R0[052062] ; R1[000037] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
+PSW[000] ; R0[052062] ; R1[000037] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000040] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000041] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000042] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
@@ -221,7 +221,7 @@
PSW[000] ; R0[052062] ; R1[000134] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000135] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000136] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
-PSW[000] ; R0[052062] ; R1[000137] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
+PSW[000] ; R0[052062] ; R1[000137] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000140] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000141] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000142] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
pdp-11:/tmp%
Вобщем видна та же история - неустановка бита V иногда.
---------- Post added at 23:47 ---------- Previous post was at 23:41 ----------
В E11 на MIM тоже с ошибкой получается.
Специально для тестирования особенностей процессора 1801ВМ3 - в архиве TASHС.zip (http://emulator.pdp-11.org.ru/misc/TASHC.zip) - "визуализатор" работы первого и второго тестов команды ASHС.
Можно сначала запустить любой из этих тестов на "эталонной" системе, потом на "испытуемой", а затем построчно сравнить сохранённые логи.
Тест ВМ3
Первая часть.
.RUN TASHC1
PSW[000] ; R0[125715] ; R1[167505] ; R2[177600] >>> ASHC R2,R0 >>>
PSW[010] ; R0[125715] ; R1[167505]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177601] >>> ASHC R2,R0 >>>
PSW[003] ; R0[053633] ; R1[157212]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177602] >>> ASHC R2,R0 >>>
PSW[012] ; R0[127467] ; R1[136424]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177603] >>> ASHC R2,R0 >>>
PSW[003] ; R0[057157] ; R1[075050]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177604] >>> ASHC R2,R0 >>>
PSW[012] ; R0[136336] ; R1[172120]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177605] >>> ASHC R2,R0 >>>
PSW[003] ; R0[074675] ; R1[164240]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177606] >>> ASHC R2,R0 >>>
PSW[012] ; R0[171573] ; R1[150500]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177607] >>> ASHC R2,R0 >>>
PSW[013] ; R0[163367] ; R1[121200]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177610] >>> ASHC R2,R0 >>>
PSW[013] ; R0[146757] ; R1[042400]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177611] >>> ASHC R2,R0 >>>
PSW[013] ; R0[115736] ; R1[105000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177612] >>> ASHC R2,R0 >>>
PSW[003] ; R0[033675] ; R1[012000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177613] >>> ASHC R2,R0 >>>
PSW[002] ; R0[067572] ; R1[024000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177614] >>> ASHC R2,R0 >>>
PSW[012] ; R0[157364] ; R1[050000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177615] >>> ASHC R2,R0 >>>
PSW[013] ; R0[136750] ; R1[120000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177616] >>> ASHC R2,R0 >>>
PSW[003] ; R0[075721] ; R1[040000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177617] >>> ASHC R2,R0 >>>
PSW[012] ; R0[173642] ; R1[100000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177620] >>> ASHC R2,R0 >>>
PSW[013] ; R0[167505] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177621] >>> ASHC R2,R0 >>>
PSW[013] ; R0[157212] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177622] >>> ASHC R2,R0 >>>
PSW[013] ; R0[136424] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177623] >>> ASHC R2,R0 >>>
PSW[003] ; R0[075050] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177624] >>> ASHC R2,R0 >>>
PSW[012] ; R0[172120] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177625] >>> ASHC R2,R0 >>>
PSW[013] ; R0[164240] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177626] >>> ASHC R2,R0 >>>
PSW[013] ; R0[150500] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177627] >>> ASHC R2,R0 >>>
PSW[013] ; R0[121200] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177630] >>> ASHC R2,R0 >>>
PSW[003] ; R0[042400] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177631] >>> ASHC R2,R0 >>>
PSW[012] ; R0[105000] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177632] >>> ASHC R2,R0 >>>
PSW[003] ; R0[012000] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177633] >>> ASHC R2,R0 >>>
PSW[002] ; R0[024000] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177634] >>> ASHC R2,R0 >>>
PSW[002] ; R0[050000] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177635] >>> ASHC R2,R0 >>>
PSW[012] ; R0[120000] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177636] >>> ASHC R2,R0 >>>
PSW[003] ; R0[040000] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177637] >>> ASHC R2,R0 >>>
PSW[010] ; R0[177777] ; R1[177777]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177640] >>> ASHC R2,R0 >>>
PSW[011] ; R0[177777] ; R1[177777]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177641] >>> ASHC R2,R0 >>>
PSW[012] ; R0[100000] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177642] >>> ASHC R2,R0 >>>
PSW[011] ; R0[177777] ; R1[177776]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177643] >>> ASHC R2,R0 >>>
PSW[010] ; R0[177777] ; R1[177775]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177644] >>> ASHC R2,R0 >>>
PSW[011] ; R0[177777] ; R1[177772]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177645] >>> ASHC R2,R0 >>>
PSW[010] ; R0[177777] ; R1[177765]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177646] >>> ASHC R2,R0 >>>
PSW[011] ; R0[177777] ; R1[177752]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177647] >>> ASHC R2,R0 >>>
PSW[011] ; R0[177777] ; R1[177725]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177650] >>> ASHC R2,R0 >>>
PSW[011] ; R0[177777] ; R1[177653]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177651] >>> ASHC R2,R0 >>>
PSW[011] ; R0[177777] ; R1[177527]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177652] >>> ASHC R2,R0 >>>
PSW[010] ; R0[177777] ; R1[177257]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177653] >>> ASHC R2,R0 >>>
PSW[010] ; R0[177777] ; R1[176536]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177654] >>> ASHC R2,R0 >>>
PSW[011] ; R0[177777] ; R1[175274]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177655] >>> ASHC R2,R0 >>>
PSW[011] ; R0[177777] ; R1[172571]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177656] >>> ASHC R2,R0 >>>
PSW[010] ; R0[177777] ; R1[165363]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177657] >>> ASHC R2,R0 >>>
PSW[011] ; R0[177777] ; R1[152746]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177660] >>> ASHC R2,R0 >>>
PSW[011] ; R0[177777] ; R1[125715]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177661] >>> ASHC R2,R0 >>>
PSW[011] ; R0[177777] ; R1[053633]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177662] >>> ASHC R2,R0 >>>
PSW[011] ; R0[177776] ; R1[127467]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177663] >>> ASHC R2,R0 >>>
PSW[010] ; R0[177775] ; R1[057157]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177664] >>> ASHC R2,R0 >>>
PSW[011] ; R0[177772] ; R1[136336]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177665] >>> ASHC R2,R0 >>>
PSW[011] ; R0[177765] ; R1[074675]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177666] >>> ASHC R2,R0 >>>
PSW[011] ; R0[177752] ; R1[171573]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177667] >>> ASHC R2,R0 >>>
PSW[011] ; R0[177725] ; R1[163367]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177670] >>> ASHC R2,R0 >>>
PSW[010] ; R0[177653] ; R1[146757]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177671] >>> ASHC R2,R0 >>>
PSW[011] ; R0[177527] ; R1[115736]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177672] >>> ASHC R2,R0 >>>
PSW[010] ; R0[177257] ; R1[033675]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177673] >>> ASHC R2,R0 >>>
PSW[010] ; R0[176536] ; R1[067572]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177674] >>> ASHC R2,R0 >>>
PSW[010] ; R0[175274] ; R1[157364]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177675] >>> ASHC R2,R0 >>>
PSW[011] ; R0[172571] ; R1[136750]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177676] >>> ASHC R2,R0 >>>
PSW[010] ; R0[165363] ; R1[075721]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177677] >>> ASHC R2,R0 >>>
PSW[011] ; R0[152746] ; R1[173642]
Вторая часть
PSW[000] ; R0[125715] ; R1[167505] ; R2[000000] >>> ASHC R2,R0 >>>
PSW[010] ; R0[125715] ; R1[167505]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000001] >>> ASHC R2,R0 >>>
PSW[003] ; R0[053633] ; R1[157212]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000002] >>> ASHC R2,R0 >>>
PSW[012] ; R0[127467] ; R1[136424]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000003] >>> ASHC R2,R0 >>>
PSW[003] ; R0[057157] ; R1[075050]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000004] >>> ASHC R2,R0 >>>
PSW[012] ; R0[136336] ; R1[172120]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000005] >>> ASHC R2,R0 >>>
PSW[003] ; R0[074675] ; R1[164240]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000006] >>> ASHC R2,R0 >>>
PSW[012] ; R0[171573] ; R1[150500]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000007] >>> ASHC R2,R0 >>>
PSW[013] ; R0[163367] ; R1[121200]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000010] >>> ASHC R2,R0 >>>
PSW[013] ; R0[146757] ; R1[042400]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000011] >>> ASHC R2,R0 >>>
PSW[013] ; R0[115736] ; R1[105000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000012] >>> ASHC R2,R0 >>>
PSW[003] ; R0[033675] ; R1[012000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000013] >>> ASHC R2,R0 >>>
PSW[002] ; R0[067572] ; R1[024000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000014] >>> ASHC R2,R0 >>>
PSW[012] ; R0[157364] ; R1[050000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000015] >>> ASHC R2,R0 >>>
PSW[013] ; R0[136750] ; R1[120000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000016] >>> ASHC R2,R0 >>>
PSW[003] ; R0[075721] ; R1[040000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000017] >>> ASHC R2,R0 >>>
PSW[012] ; R0[173642] ; R1[100000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000020] >>> ASHC R2,R0 >>>
PSW[013] ; R0[167505] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000021] >>> ASHC R2,R0 >>>
PSW[013] ; R0[157212] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000022] >>> ASHC R2,R0 >>>
PSW[013] ; R0[136424] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000023] >>> ASHC R2,R0 >>>
PSW[003] ; R0[075050] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000024] >>> ASHC R2,R0 >>>
PSW[012] ; R0[172120] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000025] >>> ASHC R2,R0 >>>
PSW[013] ; R0[164240] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000026] >>> ASHC R2,R0 >>>
PSW[013] ; R0[150500] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000027] >>> ASHC R2,R0 >>>
PSW[013] ; R0[121200] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000030] >>> ASHC R2,R0 >>>
PSW[003] ; R0[042400] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000031] >>> ASHC R2,R0 >>>
PSW[012] ; R0[105000] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000032] >>> ASHC R2,R0 >>>
PSW[003] ; R0[012000] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000033] >>> ASHC R2,R0 >>>
PSW[002] ; R0[024000] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000034] >>> ASHC R2,R0 >>>
PSW[002] ; R0[050000] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000035] >>> ASHC R2,R0 >>>
PSW[012] ; R0[120000] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000036] >>> ASHC R2,R0 >>>
PSW[003] ; R0[040000] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000037] >>> ASHC R2,R0 >>>
PSW[010] ; R0[177777] ; R1[177777]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000040] >>> ASHC R2,R0 >>>
PSW[011] ; R0[177777] ; R1[177777]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000041] >>> ASHC R2,R0 >>>
PSW[012] ; R0[100000] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000042] >>> ASHC R2,R0 >>>
PSW[011] ; R0[177777] ; R1[177776]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000043] >>> ASHC R2,R0 >>>
PSW[010] ; R0[177777] ; R1[177775]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000044] >>> ASHC R2,R0 >>>
PSW[011] ; R0[177777] ; R1[177772]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000045] >>> ASHC R2,R0 >>>
PSW[010] ; R0[177777] ; R1[177765]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000046] >>> ASHC R2,R0 >>>
PSW[011] ; R0[177777] ; R1[177752]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000047] >>> ASHC R2,R0 >>>
PSW[011] ; R0[177777] ; R1[177725]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000050] >>> ASHC R2,R0 >>>
PSW[011] ; R0[177777] ; R1[177653]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000051] >>> ASHC R2,R0 >>>
PSW[011] ; R0[177777] ; R1[177527]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000052] >>> ASHC R2,R0 >>>
PSW[010] ; R0[177777] ; R1[177257]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000053] >>> ASHC R2,R0 >>>
PSW[010] ; R0[177777] ; R1[176536]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000054] >>> ASHC R2,R0 >>>
PSW[011] ; R0[177777] ; R1[175274]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000055] >>> ASHC R2,R0 >>>
PSW[011] ; R0[177777] ; R1[172571]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000056] >>> ASHC R2,R0 >>>
PSW[010] ; R0[177777] ; R1[165363]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000057] >>> ASHC R2,R0 >>>
PSW[011] ; R0[177777] ; R1[152746]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000060] >>> ASHC R2,R0 >>>
PSW[011] ; R0[177777] ; R1[125715]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000061] >>> ASHC R2,R0 >>>
PSW[011] ; R0[177777] ; R1[053633]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000062] >>> ASHC R2,R0 >>>
PSW[011] ; R0[177776] ; R1[127467]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000063] >>> ASHC R2,R0 >>>
PSW[010] ; R0[177775] ; R1[057157]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000064] >>> ASHC R2,R0 >>>
PSW[011] ; R0[177772] ; R1[136336]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000065] >>> ASHC R2,R0 >>>
PSW[011] ; R0[177765] ; R1[074675]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000066] >>> ASHC R2,R0 >>>
PSW[011] ; R0[177752] ; R1[171573]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000067] >>> ASHC R2,R0 >>>
PSW[011] ; R0[177725] ; R1[163367]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000070] >>> ASHC R2,R0 >>>
PSW[010] ; R0[177653] ; R1[146757]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000071] >>> ASHC R2,R0 >>>
PSW[011] ; R0[177527] ; R1[115736]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000072] >>> ASHC R2,R0 >>>
PSW[010] ; R0[177257] ; R1[033675]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000073] >>> ASHC R2,R0 >>>
PSW[010] ; R0[176536] ; R1[067572]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000074] >>> ASHC R2,R0 >>>
PSW[010] ; R0[175274] ; R1[157364]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000075] >>> ASHC R2,R0 >>>
PSW[011] ; R0[172571] ; R1[136750]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000076] >>> ASHC R2,R0 >>>
PSW[010] ; R0[165363] ; R1[075721]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000077] >>> ASHC R2,R0 >>>
PSW[011] ; R0[152746] ; R1[173642]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000100] >>> ASHC R2,R0 >>>
PSW[010] ; R0[125715] ; R1[167505]
Третья часть.
PSW[000] ; R0[125715] ; R1[167505] ; R2[000101] >>> ASHC R2,R0 >>>
PSW[003] ; R0[053633] ; R1[157212]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000102] >>> ASHC R2,R0 >>>
PSW[012] ; R0[127467] ; R1[136424]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000103] >>> ASHC R2,R0 >>>
PSW[003] ; R0[057157] ; R1[075050]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000104] >>> ASHC R2,R0 >>>
PSW[012] ; R0[136336] ; R1[172120]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000105] >>> ASHC R2,R0 >>>
PSW[003] ; R0[074675] ; R1[164240]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000106] >>> ASHC R2,R0 >>>
PSW[012] ; R0[171573] ; R1[150500]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000107] >>> ASHC R2,R0 >>>
PSW[013] ; R0[163367] ; R1[121200]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000110] >>> ASHC R2,R0 >>>
PSW[013] ; R0[146757] ; R1[042400]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000111] >>> ASHC R2,R0 >>>
PSW[013] ; R0[115736] ; R1[105000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000112] >>> ASHC R2,R0 >>>
PSW[003] ; R0[033675] ; R1[012000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000113] >>> ASHC R2,R0 >>>
PSW[002] ; R0[067572] ; R1[024000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000114] >>> ASHC R2,R0 >>>
PSW[012] ; R0[157364] ; R1[050000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000115] >>> ASHC R2,R0 >>>
PSW[013] ; R0[136750] ; R1[120000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000116] >>> ASHC R2,R0 >>>
PSW[003] ; R0[075721] ; R1[040000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000117] >>> ASHC R2,R0 >>>
PSW[012] ; R0[173642] ; R1[100000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000120] >>> ASHC R2,R0 >>>
PSW[013] ; R0[167505] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000121] >>> ASHC R2,R0 >>>
PSW[013] ; R0[157212] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000122] >>> ASHC R2,R0 >>>
PSW[013] ; R0[136424] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000123] >>> ASHC R2,R0 >>>
PSW[003] ; R0[075050] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000124] >>> ASHC R2,R0 >>>
PSW[012] ; R0[172120] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000125] >>> ASHC R2,R0 >>>
PSW[013] ; R0[164240] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000126] >>> ASHC R2,R0 >>>
PSW[013] ; R0[150500] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000127] >>> ASHC R2,R0 >>>
PSW[013] ; R0[121200] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000130] >>> ASHC R2,R0 >>>
PSW[003] ; R0[042400] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000131] >>> ASHC R2,R0 >>>
PSW[012] ; R0[105000] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000132] >>> ASHC R2,R0 >>>
PSW[003] ; R0[012000] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000133] >>> ASHC R2,R0 >>>
PSW[002] ; R0[024000] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000134] >>> ASHC R2,R0 >>>
PSW[002] ; R0[050000] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000135] >>> ASHC R2,R0 >>>
PSW[012] ; R0[120000] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000136] >>> ASHC R2,R0 >>>
PSW[003] ; R0[040000] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000137] >>> ASHC R2,R0 >>>
PSW[010] ; R0[177777] ; R1[177777]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000140] >>> ASHC R2,R0 >>>
PSW[011] ; R0[177777] ; R1[177777]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000141] >>> ASHC R2,R0 >>>
PSW[012] ; R0[100000] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000142] >>> ASHC R2,R0 >>>
PSW[011] ; R0[177777] ; R1[177776]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000143] >>> ASHC R2,R0 >>>
PSW[010] ; R0[177777] ; R1[177775]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000144] >>> ASHC R2,R0 >>>
PSW[011] ; R0[177777] ; R1[177772]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000145] >>> ASHC R2,R0 >>>
PSW[010] ; R0[177777] ; R1[177765]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000146] >>> ASHC R2,R0 >>>
PSW[011] ; R0[177777] ; R1[177752]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000147] >>> ASHC R2,R0 >>>
PSW[011] ; R0[177777] ; R1[177725]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000150] >>> ASHC R2,R0 >>>
PSW[011] ; R0[177777] ; R1[177653]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000151] >>> ASHC R2,R0 >>>
PSW[011] ; R0[177777] ; R1[177527]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000152] >>> ASHC R2,R0 >>>
PSW[010] ; R0[177777] ; R1[177257]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000153] >>> ASHC R2,R0 >>>
PSW[010] ; R0[177777] ; R1[176536]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000154] >>> ASHC R2,R0 >>>
PSW[011] ; R0[177777] ; R1[175274]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000155] >>> ASHC R2,R0 >>>
PSW[011] ; R0[177777] ; R1[172571]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000156] >>> ASHC R2,R0 >>>
PSW[010] ; R0[177777] ; R1[165363]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000157] >>> ASHC R2,R0 >>>
PSW[011] ; R0[177777] ; R1[152746]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000160] >>> ASHC R2,R0 >>>
PSW[011] ; R0[177777] ; R1[125715]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000161] >>> ASHC R2,R0 >>>
PSW[011] ; R0[177777] ; R1[053633]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000162] >>> ASHC R2,R0 >>>
PSW[011] ; R0[177776] ; R1[127467]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000163] >>> ASHC R2,R0 >>>
PSW[010] ; R0[177775] ; R1[057157]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000164] >>> ASHC R2,R0 >>>
PSW[011] ; R0[177772] ; R1[136336]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000165] >>> ASHC R2,R0 >>>
PSW[011] ; R0[177765] ; R1[074675]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000166] >>> ASHC R2,R0 >>>
PSW[011] ; R0[177752] ; R1[171573]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000167] >>> ASHC R2,R0 >>>
PSW[011] ; R0[177725] ; R1[163367]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000170] >>> ASHC R2,R0 >>>
PSW[010] ; R0[177653] ; R1[146757]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000171] >>> ASHC R2,R0 >>>
PSW[011] ; R0[177527] ; R1[115736]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000172] >>> ASHC R2,R0 >>>
PSW[010] ; R0[177257] ; R1[033675]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000173] >>> ASHC R2,R0 >>>
PSW[010] ; R0[176536] ; R1[067572]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000174] >>> ASHC R2,R0 >>>
PSW[010] ; R0[175274] ; R1[157364]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000175] >>> ASHC R2,R0 >>>
PSW[011] ; R0[172571] ; R1[136750]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000176] >>> ASHC R2,R0 >>>
PSW[010] ; R0[165363] ; R1[075721]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000177] >>> ASHC R2,R0 >>>
PSW[011] ; R0[152746] ; R1[173642]
Четвёртая часть.
PSW[000] ; R0[125715] ; R1[167505] ; R2[177700] >>> ASHC R2,R0 >>>
PSW[010] ; R0[125715] ; R1[167505]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177701] >>> ASHC R2,R0 >>>
PSW[003] ; R0[053633] ; R1[157212]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177702] >>> ASHC R2,R0 >>>
PSW[012] ; R0[127467] ; R1[136424]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177703] >>> ASHC R2,R0 >>>
PSW[003] ; R0[057157] ; R1[075050]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177704] >>> ASHC R2,R0 >>>
PSW[012] ; R0[136336] ; R1[172120]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177705] >>> ASHC R2,R0 >>>
PSW[003] ; R0[074675] ; R1[164240]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177706] >>> ASHC R2,R0 >>>
PSW[012] ; R0[171573] ; R1[150500]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177707] >>> ASHC R2,R0 >>>
PSW[013] ; R0[163367] ; R1[121200]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177710] >>> ASHC R2,R0 >>>
PSW[013] ; R0[146757] ; R1[042400]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177711] >>> ASHC R2,R0 >>>
PSW[013] ; R0[115736] ; R1[105000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177712] >>> ASHC R2,R0 >>>
PSW[003] ; R0[033675] ; R1[012000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177713] >>> ASHC R2,R0 >>>
PSW[002] ; R0[067572] ; R1[024000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177714] >>> ASHC R2,R0 >>>
PSW[012] ; R0[157364] ; R1[050000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177715] >>> ASHC R2,R0 >>>
PSW[013] ; R0[136750] ; R1[120000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177716] >>> ASHC R2,R0 >>>
PSW[003] ; R0[075721] ; R1[040000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177717] >>> ASHC R2,R0 >>>
PSW[012] ; R0[173642] ; R1[100000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177720] >>> ASHC R2,R0 >>>
PSW[013] ; R0[167505] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177721] >>> ASHC R2,R0 >>>
PSW[013] ; R0[157212] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177722] >>> ASHC R2,R0 >>>
PSW[013] ; R0[136424] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177723] >>> ASHC R2,R0 >>>
PSW[003] ; R0[075050] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177724] >>> ASHC R2,R0 >>>
PSW[012] ; R0[172120] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177725] >>> ASHC R2,R0 >>>
PSW[013] ; R0[164240] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177726] >>> ASHC R2,R0 >>>
PSW[013] ; R0[150500] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177727] >>> ASHC R2,R0 >>>
PSW[013] ; R0[121200] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177730] >>> ASHC R2,R0 >>>
PSW[003] ; R0[042400] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177731] >>> ASHC R2,R0 >>>
PSW[012] ; R0[105000] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177732] >>> ASHC R2,R0 >>>
PSW[003] ; R0[012000] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177733] >>> ASHC R2,R0 >>>
PSW[002] ; R0[024000] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177734] >>> ASHC R2,R0 >>>
PSW[002] ; R0[050000] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177735] >>> ASHC R2,R0 >>>
PSW[012] ; R0[120000] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177736] >>> ASHC R2,R0 >>>
PSW[003] ; R0[040000] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177737] >>> ASHC R2,R0 >>>
PSW[010] ; R0[177777] ; R1[177777]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177740] >>> ASHC R2,R0 >>>
PSW[011] ; R0[177777] ; R1[177777]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177741] >>> ASHC R2,R0 >>>
PSW[012] ; R0[100000] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177742] >>> ASHC R2,R0 >>>
PSW[011] ; R0[177777] ; R1[177776]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177743] >>> ASHC R2,R0 >>>
PSW[010] ; R0[177777] ; R1[177775]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177744] >>> ASHC R2,R0 >>>
PSW[011] ; R0[177777] ; R1[177772]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177745] >>> ASHC R2,R0 >>>
PSW[010] ; R0[177777] ; R1[177765]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177746] >>> ASHC R2,R0 >>>
PSW[011] ; R0[177777] ; R1[177752]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177747] >>> ASHC R2,R0 >>>
PSW[011] ; R0[177777] ; R1[177725]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177750] >>> ASHC R2,R0 >>>
PSW[011] ; R0[177777] ; R1[177653]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177751] >>> ASHC R2,R0 >>>
PSW[011] ; R0[177777] ; R1[177527]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177752] >>> ASHC R2,R0 >>>
PSW[010] ; R0[177777] ; R1[177257]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177753] >>> ASHC R2,R0 >>>
PSW[010] ; R0[177777] ; R1[176536]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177754] >>> ASHC R2,R0 >>>
PSW[011] ; R0[177777] ; R1[175274]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177755] >>> ASHC R2,R0 >>>
PSW[011] ; R0[177777] ; R1[172571]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177756] >>> ASHC R2,R0 >>>
PSW[010] ; R0[177777] ; R1[165363]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177757] >>> ASHC R2,R0 >>>
PSW[011] ; R0[177777] ; R1[152746]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177760] >>> ASHC R2,R0 >>>
PSW[011] ; R0[177777] ; R1[125715]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177761] >>> ASHC R2,R0 >>>
PSW[011] ; R0[177777] ; R1[053633]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177762] >>> ASHC R2,R0 >>>
PSW[011] ; R0[177776] ; R1[127467]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177763] >>> ASHC R2,R0 >>>
PSW[010] ; R0[177775] ; R1[057157]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177764] >>> ASHC R2,R0 >>>
PSW[011] ; R0[177772] ; R1[136336]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177765] >>> ASHC R2,R0 >>>
PSW[011] ; R0[177765] ; R1[074675]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177766] >>> ASHC R2,R0 >>>
PSW[011] ; R0[177752] ; R1[171573]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177767] >>> ASHC R2,R0 >>>
PSW[011] ; R0[177725] ; R1[163367]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177770] >>> ASHC R2,R0 >>>
PSW[010] ; R0[177653] ; R1[146757]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177771] >>> ASHC R2,R0 >>>
PSW[011] ; R0[177527] ; R1[115736]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177772] >>> ASHC R2,R0 >>>
PSW[010] ; R0[177257] ; R1[033675]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177773] >>> ASHC R2,R0 >>>
PSW[010] ; R0[176536] ; R1[067572]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177774] >>> ASHC R2,R0 >>>
PSW[010] ; R0[175274] ; R1[157364]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177775] >>> ASHC R2,R0 >>>
PSW[011] ; R0[172571] ; R1[136750]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177776] >>> ASHC R2,R0 >>>
PSW[010] ; R0[165363] ; R1[075721]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177777] >>> ASHC R2,R0 >>>
PSW[011] ; R0[152746] ; R1[173642]
Тест2 ВМ3
Первая часть
.RUN TASHC2
PSW[000] ; R0[125715] ; R1[167505] ; R2[177600] >>> ASHC R2,R1 >>>
PSW[010] ; R0[125715] ; R1[167505]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177601] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[157212]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177602] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[136424]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177603] >>> ASHC R2,R1 >>>
PSW[003] ; R0[125715] ; R1[075050]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177604] >>> ASHC R2,R1 >>>
PSW[012] ; R0[125715] ; R1[172120]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177605] >>> ASHC R2,R1 >>>
PSW[013] ; R0[125715] ; R1[164240]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177606] >>> ASHC R2,R1 >>>
PSW[013] ; R0[125715] ; R1[150500]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177607] >>> ASHC R2,R1 >>>
PSW[013] ; R0[125715] ; R1[121200]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177610] >>> ASHC R2,R1 >>>
PSW[003] ; R0[125715] ; R1[042400]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177611] >>> ASHC R2,R1 >>>
PSW[012] ; R0[125715] ; R1[105000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177612] >>> ASHC R2,R1 >>>
PSW[003] ; R0[125715] ; R1[012000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177613] >>> ASHC R2,R1 >>>
PSW[002] ; R0[125715] ; R1[024000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177614] >>> ASHC R2,R1 >>>
PSW[002] ; R0[125715] ; R1[050000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177615] >>> ASHC R2,R1 >>>
PSW[012] ; R0[125715] ; R1[120000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177616] >>> ASHC R2,R1 >>>
PSW[003] ; R0[125715] ; R1[040000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177617] >>> ASHC R2,R1 >>>
PSW[012] ; R0[125715] ; R1[100000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177620] >>> ASHC R2,R1 >>>
PSW[013] ; R0[125715] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177621] >>> ASHC R2,R1 >>>
PSW[013] ; R0[125715] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177622] >>> ASHC R2,R1 >>>
PSW[013] ; R0[125715] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177623] >>> ASHC R2,R1 >>>
PSW[003] ; R0[125715] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177624] >>> ASHC R2,R1 >>>
PSW[012] ; R0[125715] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177625] >>> ASHC R2,R1 >>>
PSW[013] ; R0[125715] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177626] >>> ASHC R2,R1 >>>
PSW[013] ; R0[125715] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177627] >>> ASHC R2,R1 >>>
PSW[013] ; R0[125715] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177630] >>> ASHC R2,R1 >>>
PSW[003] ; R0[125715] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177631] >>> ASHC R2,R1 >>>
PSW[012] ; R0[125715] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177632] >>> ASHC R2,R1 >>>
PSW[003] ; R0[125715] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177633] >>> ASHC R2,R1 >>>
PSW[002] ; R0[125715] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177634] >>> ASHC R2,R1 >>>
PSW[002] ; R0[125715] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177635] >>> ASHC R2,R1 >>>
PSW[012] ; R0[125715] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177636] >>> ASHC R2,R1 >>>
PSW[003] ; R0[125715] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177637] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[177777]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177640] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[177777]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177641] >>> ASHC R2,R1 >>>
PSW[012] ; R0[125715] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177642] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[177777]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177643] >>> ASHC R2,R1 >>>
PSW[010] ; R0[125715] ; R1[177777]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177644] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[177776]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177645] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[177775]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177646] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[177773]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177647] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[177767]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177650] >>> ASHC R2,R1 >>>
PSW[010] ; R0[125715] ; R1[177757]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177651] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[177736]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177652] >>> ASHC R2,R1 >>>
PSW[010] ; R0[125715] ; R1[177675]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177653] >>> ASHC R2,R1 >>>
PSW[010] ; R0[125715] ; R1[177572]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177654] >>> ASHC R2,R1 >>>
PSW[010] ; R0[125715] ; R1[177364]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177655] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[176750]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177656] >>> ASHC R2,R1 >>>
PSW[010] ; R0[125715] ; R1[175721]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177657] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[173642]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177660] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[167505]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177661] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[157213]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177662] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[136427]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177663] >>> ASHC R2,R1 >>>
PSW[010] ; R0[125715] ; R1[075057]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177664] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[172136]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177665] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[164275]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177666] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[150573]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177667] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[121367]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177670] >>> ASHC R2,R1 >>>
PSW[010] ; R0[125715] ; R1[042757]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177671] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[105736]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177672] >>> ASHC R2,R1 >>>
PSW[010] ; R0[125715] ; R1[013675]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177673] >>> ASHC R2,R1 >>>
PSW[010] ; R0[125715] ; R1[027572]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177674] >>> ASHC R2,R1 >>>
PSW[010] ; R0[125715] ; R1[057364]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177675] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[136750]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177676] >>> ASHC R2,R1 >>>
PSW[010] ; R0[125715] ; R1[075721]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177677] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[173642]
Вторая часть.
PSW[000] ; R0[125715] ; R1[167505] ; R2[177700] >>> ASHC R2,R1 >>>
PSW[010] ; R0[125715] ; R1[167505]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177701] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[157212]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177702] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[136424]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177703] >>> ASHC R2,R1 >>>
PSW[003] ; R0[125715] ; R1[075050]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177704] >>> ASHC R2,R1 >>>
PSW[012] ; R0[125715] ; R1[172120]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177705] >>> ASHC R2,R1 >>>
PSW[013] ; R0[125715] ; R1[164240]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177706] >>> ASHC R2,R1 >>>
PSW[013] ; R0[125715] ; R1[150500]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177707] >>> ASHC R2,R1 >>>
PSW[013] ; R0[125715] ; R1[121200]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177710] >>> ASHC R2,R1 >>>
PSW[003] ; R0[125715] ; R1[042400]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177711] >>> ASHC R2,R1 >>>
PSW[012] ; R0[125715] ; R1[105000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177712] >>> ASHC R2,R1 >>>
PSW[003] ; R0[125715] ; R1[012000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177713] >>> ASHC R2,R1 >>>
PSW[002] ; R0[125715] ; R1[024000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177714] >>> ASHC R2,R1 >>>
PSW[002] ; R0[125715] ; R1[050000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177715] >>> ASHC R2,R1 >>>
PSW[012] ; R0[125715] ; R1[120000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177716] >>> ASHC R2,R1 >>>
PSW[003] ; R0[125715] ; R1[040000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177717] >>> ASHC R2,R1 >>>
PSW[012] ; R0[125715] ; R1[100000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177720] >>> ASHC R2,R1 >>>
PSW[013] ; R0[125715] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177721] >>> ASHC R2,R1 >>>
PSW[013] ; R0[125715] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177722] >>> ASHC R2,R1 >>>
PSW[013] ; R0[125715] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177723] >>> ASHC R2,R1 >>>
PSW[003] ; R0[125715] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177724] >>> ASHC R2,R1 >>>
PSW[012] ; R0[125715] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177725] >>> ASHC R2,R1 >>>
PSW[013] ; R0[125715] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177726] >>> ASHC R2,R1 >>>
PSW[013] ; R0[125715] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177727] >>> ASHC R2,R1 >>>
PSW[013] ; R0[125715] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177730] >>> ASHC R2,R1 >>>
PSW[003] ; R0[125715] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177731] >>> ASHC R2,R1 >>>
PSW[012] ; R0[125715] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177732] >>> ASHC R2,R1 >>>
PSW[003] ; R0[125715] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177733] >>> ASHC R2,R1 >>>
PSW[002] ; R0[125715] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177734] >>> ASHC R2,R1 >>>
PSW[002] ; R0[125715] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177735] >>> ASHC R2,R1 >>>
PSW[012] ; R0[125715] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177736] >>> ASHC R2,R1 >>>
PSW[003] ; R0[125715] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177737] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[177777]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177740] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[177777]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177741] >>> ASHC R2,R1 >>>
PSW[012] ; R0[125715] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177742] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[177777]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177743] >>> ASHC R2,R1 >>>
PSW[010] ; R0[125715] ; R1[177777]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177744] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[177776]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177745] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[177775]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177746] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[177773]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177747] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[177767]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177750] >>> ASHC R2,R1 >>>
PSW[010] ; R0[125715] ; R1[177757]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177751] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[177736]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177752] >>> ASHC R2,R1 >>>
PSW[010] ; R0[125715] ; R1[177675]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177753] >>> ASHC R2,R1 >>>
PSW[010] ; R0[125715] ; R1[177572]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177754] >>> ASHC R2,R1 >>>
PSW[010] ; R0[125715] ; R1[177364]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177755] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[176750]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177756] >>> ASHC R2,R1 >>>
PSW[010] ; R0[125715] ; R1[175721]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177757] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[173642]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177760] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[167505]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177761] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[157213]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177762] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[136427]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177763] >>> ASHC R2,R1 >>>
PSW[010] ; R0[125715] ; R1[075057]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177764] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[172136]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177765] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[164275]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177766] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[150573]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177767] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[121367]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177770] >>> ASHC R2,R1 >>>
PSW[010] ; R0[125715] ; R1[042757]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177771] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[105736]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177772] >>> ASHC R2,R1 >>>
PSW[010] ; R0[125715] ; R1[013675]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177773] >>> ASHC R2,R1 >>>
PSW[010] ; R0[125715] ; R1[027572]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177774] >>> ASHC R2,R1 >>>
PSW[010] ; R0[125715] ; R1[057364]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177775] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[136750]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177776] >>> ASHC R2,R1 >>>
PSW[010] ; R0[125715] ; R1[075721]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177777] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[173642]
Третья часть.
PSW[000] ; R0[125715] ; R1[167505] ; R2[000000] >>> ASHC R2,R1 >>>
PSW[010] ; R0[125715] ; R1[167505]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000001] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[157212]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000002] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[136424]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000003] >>> ASHC R2,R1 >>>
PSW[003] ; R0[125715] ; R1[075050]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000004] >>> ASHC R2,R1 >>>
PSW[012] ; R0[125715] ; R1[172120]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000005] >>> ASHC R2,R1 >>>
PSW[013] ; R0[125715] ; R1[164240]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000006] >>> ASHC R2,R1 >>>
PSW[013] ; R0[125715] ; R1[150500]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000007] >>> ASHC R2,R1 >>>
PSW[013] ; R0[125715] ; R1[121200]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000010] >>> ASHC R2,R1 >>>
PSW[003] ; R0[125715] ; R1[042400]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000011] >>> ASHC R2,R1 >>>
PSW[012] ; R0[125715] ; R1[105000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000012] >>> ASHC R2,R1 >>>
PSW[003] ; R0[125715] ; R1[012000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000013] >>> ASHC R2,R1 >>>
PSW[002] ; R0[125715] ; R1[024000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000014] >>> ASHC R2,R1 >>>
PSW[002] ; R0[125715] ; R1[050000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000015] >>> ASHC R2,R1 >>>
PSW[012] ; R0[125715] ; R1[120000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000016] >>> ASHC R2,R1 >>>
PSW[003] ; R0[125715] ; R1[040000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000017] >>> ASHC R2,R1 >>>
PSW[012] ; R0[125715] ; R1[100000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000020] >>> ASHC R2,R1 >>>
PSW[013] ; R0[125715] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000021] >>> ASHC R2,R1 >>>
PSW[013] ; R0[125715] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000022] >>> ASHC R2,R1 >>>
PSW[013] ; R0[125715] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000023] >>> ASHC R2,R1 >>>
PSW[003] ; R0[125715] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000024] >>> ASHC R2,R1 >>>
PSW[012] ; R0[125715] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000025] >>> ASHC R2,R1 >>>
PSW[013] ; R0[125715] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000026] >>> ASHC R2,R1 >>>
PSW[013] ; R0[125715] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000027] >>> ASHC R2,R1 >>>
PSW[013] ; R0[125715] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000030] >>> ASHC R2,R1 >>>
PSW[003] ; R0[125715] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000031] >>> ASHC R2,R1 >>>
PSW[012] ; R0[125715] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000032] >>> ASHC R2,R1 >>>
PSW[003] ; R0[125715] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000033] >>> ASHC R2,R1 >>>
PSW[002] ; R0[125715] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000034] >>> ASHC R2,R1 >>>
PSW[002] ; R0[125715] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000035] >>> ASHC R2,R1 >>>
PSW[012] ; R0[125715] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000036] >>> ASHC R2,R1 >>>
PSW[003] ; R0[125715] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000037] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[177777]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000040] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[177777]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000041] >>> ASHC R2,R1 >>>
PSW[012] ; R0[125715] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000042] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[177777]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000043] >>> ASHC R2,R1 >>>
PSW[010] ; R0[125715] ; R1[177777]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000044] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[177776]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000045] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[177775]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000046] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[177773]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000047] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[177767]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000050] >>> ASHC R2,R1 >>>
PSW[010] ; R0[125715] ; R1[177757]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000051] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[177736]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000052] >>> ASHC R2,R1 >>>
PSW[010] ; R0[125715] ; R1[177675]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000053] >>> ASHC R2,R1 >>>
PSW[010] ; R0[125715] ; R1[177572]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000054] >>> ASHC R2,R1 >>>
PSW[010] ; R0[125715] ; R1[177364]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000055] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[176750]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000056] >>> ASHC R2,R1 >>>
PSW[010] ; R0[125715] ; R1[175721]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000057] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[173642]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000060] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[167505]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000061] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[157213]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000062] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[136427]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000063] >>> ASHC R2,R1 >>>
PSW[010] ; R0[125715] ; R1[075057]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000064] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[172136]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000065] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[164275]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000066] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[150573]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000067] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[121367]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000070] >>> ASHC R2,R1 >>>
PSW[010] ; R0[125715] ; R1[042757]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000071] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[105736]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000072] >>> ASHC R2,R1 >>>
PSW[010] ; R0[125715] ; R1[013675]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000073] >>> ASHC R2,R1 >>>
PSW[010] ; R0[125715] ; R1[027572]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000074] >>> ASHC R2,R1 >>>
PSW[010] ; R0[125715] ; R1[057364]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000075] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[136750]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000076] >>> ASHC R2,R1 >>>
PSW[010] ; R0[125715] ; R1[075721]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000077] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[173642]
Четвёртая часть.
PSW[000] ; R0[125715] ; R1[167505] ; R2[000100] >>> ASHC R2,R1 >>>
PSW[010] ; R0[125715] ; R1[167505]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000101] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[157212]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000102] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[136424]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000103] >>> ASHC R2,R1 >>>
PSW[003] ; R0[125715] ; R1[075050]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000104] >>> ASHC R2,R1 >>>
PSW[012] ; R0[125715] ; R1[172120]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000105] >>> ASHC R2,R1 >>>
PSW[013] ; R0[125715] ; R1[164240]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000106] >>> ASHC R2,R1 >>>
PSW[013] ; R0[125715] ; R1[150500]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000107] >>> ASHC R2,R1 >>>
PSW[013] ; R0[125715] ; R1[121200]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000110] >>> ASHC R2,R1 >>>
PSW[003] ; R0[125715] ; R1[042400]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000111] >>> ASHC R2,R1 >>>
PSW[012] ; R0[125715] ; R1[105000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000112] >>> ASHC R2,R1 >>>
PSW[003] ; R0[125715] ; R1[012000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000113] >>> ASHC R2,R1 >>>
PSW[002] ; R0[125715] ; R1[024000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000114] >>> ASHC R2,R1 >>>
PSW[002] ; R0[125715] ; R1[050000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000115] >>> ASHC R2,R1 >>>
PSW[012] ; R0[125715] ; R1[120000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000116] >>> ASHC R2,R1 >>>
PSW[003] ; R0[125715] ; R1[040000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000117] >>> ASHC R2,R1 >>>
PSW[012] ; R0[125715] ; R1[100000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000120] >>> ASHC R2,R1 >>>
PSW[013] ; R0[125715] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000121] >>> ASHC R2,R1 >>>
PSW[013] ; R0[125715] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000122] >>> ASHC R2,R1 >>>
PSW[013] ; R0[125715] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000123] >>> ASHC R2,R1 >>>
PSW[003] ; R0[125715] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000124] >>> ASHC R2,R1 >>>
PSW[012] ; R0[125715] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000125] >>> ASHC R2,R1 >>>
PSW[013] ; R0[125715] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000126] >>> ASHC R2,R1 >>>
PSW[013] ; R0[125715] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000127] >>> ASHC R2,R1 >>>
PSW[013] ; R0[125715] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000130] >>> ASHC R2,R1 >>>
PSW[003] ; R0[125715] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000131] >>> ASHC R2,R1 >>>
PSW[012] ; R0[125715] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000132] >>> ASHC R2,R1 >>>
PSW[003] ; R0[125715] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000133] >>> ASHC R2,R1 >>>
PSW[002] ; R0[125715] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000134] >>> ASHC R2,R1 >>>
PSW[002] ; R0[125715] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000135] >>> ASHC R2,R1 >>>
PSW[012] ; R0[125715] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000136] >>> ASHC R2,R1 >>>
PSW[003] ; R0[125715] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000137] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[177777]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000140] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[177777]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000141] >>> ASHC R2,R1 >>>
PSW[012] ; R0[125715] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000142] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[177777]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000143] >>> ASHC R2,R1 >>>
PSW[010] ; R0[125715] ; R1[177777]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000144] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[177776]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000145] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[177775]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000146] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[177773]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000147] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[177767]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000150] >>> ASHC R2,R1 >>>
PSW[010] ; R0[125715] ; R1[177757]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000151] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[177736]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000152] >>> ASHC R2,R1 >>>
PSW[010] ; R0[125715] ; R1[177675]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000153] >>> ASHC R2,R1 >>>
PSW[010] ; R0[125715] ; R1[177572]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000154] >>> ASHC R2,R1 >>>
PSW[010] ; R0[125715] ; R1[177364]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000155] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[176750]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000156] >>> ASHC R2,R1 >>>
PSW[010] ; R0[125715] ; R1[175721]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000157] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[173642]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000160] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[167505]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000161] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[157213]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000162] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[136427]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000163] >>> ASHC R2,R1 >>>
PSW[010] ; R0[125715] ; R1[075057]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000164] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[172136]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000165] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[164275]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000166] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[150573]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000167] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[121367]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000170] >>> ASHC R2,R1 >>>
PSW[010] ; R0[125715] ; R1[042757]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000171] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[105736]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000172] >>> ASHC R2,R1 >>>
PSW[010] ; R0[125715] ; R1[013675]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000173] >>> ASHC R2,R1 >>>
PSW[010] ; R0[125715] ; R1[027572]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000174] >>> ASHC R2,R1 >>>
PSW[010] ; R0[125715] ; R1[057364]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000175] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[136750]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000176] >>> ASHC R2,R1 >>>
PSW[010] ; R0[125715] ; R1[075721]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000177] >>> ASHC R2,R1 >>>
PSW[011] ; R0[125715] ; R1[173642]
---------- Post added at 23:45 ---------- Previous post was at 23:28 ----------
Специально для тестирования особенностей процессора 1801ВМ3Если в Е11 можно ещё ошибки исправить и то автором т.к. проект закрытый, то в процессор же паяльником
не полезешь.
Можно сначала запустить любой из этих тестов на "эталонной" системе, потом на "испытуемой", а затем построчно сравнить сохранённые логи. По моему нет таких эмуляторов которые эмулируют ВМ3. Поэтому у меня эталонная и испытуемая система в одном лице.
Весьма похоже, что 1801ВМ3 реально глючит при выполнении команды ASHC.
Например, все процессоры делают так:
PSW[000] ; R0[125715] ; R1[167505] ; R2[177637] >>> ASHC R2,R0 >>>
PSW[012] ; R0[100000] ; R1[000000]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177640] >>> ASHC R2,R0 >>>
PSW[011] ; R0[177777] ; R1[177777]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177641] >>> ASHC R2,R0 >>>
PSW[010] ; R0[177777] ; R1[177777]
А 1801ВМ3 делает то же самое иначе:
PSW[000] ; R0[125715] ; R1[167505] ; R2[177637] >>> ASHC R2,R0 >>>
PSW[010] ; R0[177777] ; R1[177777]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177640] >>> ASHC R2,R0 >>>
PSW[011] ; R0[177777] ; R1[177777]
PSW[000] ; R0[125715] ; R1[167505] ; R2[177641] >>> ASHC R2,R0 >>>
PSW[012] ; R0[100000] ; R1[000000]
...
Интересно также прогнать на 1801ВМ3 тесты команды ASH из пакета TASH.zip (http://emulator.pdp-11.org.ru/misc/TASH.zip).
...
Если в Е11 можно ещё ошибки исправить и то автором т.к. проект закрытый, то в процессор же паяльником
не полезешь.
Не обязательно, что особенности ВМ3 - это какие-либо ошибки. Просто в этих командах он иначе устанавливает флаги. Но так как тест заточен под ВМ2, то то, что отличается от ВМ2 считается ошибкой.
Не обязательно, что особенности ВМ3 - это какие-либо ошибки.Как следует из логов - 1801ВМ3 путает местами результаты сдвига командой ASHC на [+31] и [-31] бит.
Тест ASH процессора 1801ВМ3
первая часть
.RUN TASH1
PSW[000] ; R0[125715] ; R1[177600] >>> ASH R1,R0 >>> PSW[010] ; R0[125715]
PSW[000] ; R0[125715] ; R1[177601] >>> ASH R1,R0 >>> PSW[003] ; R0[053632]
PSW[000] ; R0[125715] ; R1[177602] >>> ASH R1,R0 >>> PSW[012] ; R0[127464]
PSW[000] ; R0[125715] ; R1[177603] >>> ASH R1,R0 >>> PSW[003] ; R0[057150]
PSW[000] ; R0[125715] ; R1[177604] >>> ASH R1,R0 >>> PSW[012] ; R0[136320]
PSW[000] ; R0[125715] ; R1[177605] >>> ASH R1,R0 >>> PSW[003] ; R0[074640]
PSW[000] ; R0[125715] ; R1[177606] >>> ASH R1,R0 >>> PSW[012] ; R0[171500]
PSW[000] ; R0[125715] ; R1[177607] >>> ASH R1,R0 >>> PSW[013] ; R0[163200]
PSW[000] ; R0[125715] ; R1[177610] >>> ASH R1,R0 >>> PSW[013] ; R0[146400]
PSW[000] ; R0[125715] ; R1[177611] >>> ASH R1,R0 >>> PSW[013] ; R0[115000]
PSW[000] ; R0[125715] ; R1[177612] >>> ASH R1,R0 >>> PSW[003] ; R0[032000]
PSW[000] ; R0[125715] ; R1[177613] >>> ASH R1,R0 >>> PSW[002] ; R0[064000]
PSW[000] ; R0[125715] ; R1[177614] >>> ASH R1,R0 >>> PSW[012] ; R0[150000]
PSW[000] ; R0[125715] ; R1[177615] >>> ASH R1,R0 >>> PSW[013] ; R0[120000]
PSW[000] ; R0[125715] ; R1[177616] >>> ASH R1,R0 >>> PSW[003] ; R0[040000]
PSW[000] ; R0[125715] ; R1[177617] >>> ASH R1,R0 >>> PSW[012] ; R0[100000]
PSW[000] ; R0[125715] ; R1[177620] >>> ASH R1,R0 >>> PSW[007] ; R0[000000]
PSW[000] ; R0[125715] ; R1[177621] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[125715] ; R1[177622] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[125715] ; R1[177623] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[125715] ; R1[177624] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[125715] ; R1[177625] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[125715] ; R1[177626] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[125715] ; R1[177627] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[125715] ; R1[177630] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[125715] ; R1[177631] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[125715] ; R1[177632] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[125715] ; R1[177633] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[125715] ; R1[177634] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[125715] ; R1[177635] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[125715] ; R1[177636] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[125715] ; R1[177637] >>> ASH R1,R0 >>> PSW[011] ; R0[177777]
PSW[000] ; R0[125715] ; R1[177640] >>> ASH R1,R0 >>> PSW[011] ; R0[177777]
PSW[000] ; R0[125715] ; R1[177641] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[125715] ; R1[177642] >>> ASH R1,R0 >>> PSW[011] ; R0[177777]
PSW[000] ; R0[125715] ; R1[177643] >>> ASH R1,R0 >>> PSW[011] ; R0[177777]
PSW[000] ; R0[125715] ; R1[177644] >>> ASH R1,R0 >>> PSW[011] ; R0[177777]
PSW[000] ; R0[125715] ; R1[177645] >>> ASH R1,R0 >>> PSW[011] ; R0[177777]
PSW[000] ; R0[125715] ; R1[177646] >>> ASH R1,R0 >>> PSW[011] ; R0[177777]
PSW[000] ; R0[125715] ; R1[177647] >>> ASH R1,R0 >>> PSW[011] ; R0[177777]
PSW[000] ; R0[125715] ; R1[177650] >>> ASH R1,R0 >>> PSW[011] ; R0[177777]
PSW[000] ; R0[125715] ; R1[177651] >>> ASH R1,R0 >>> PSW[011] ; R0[177777]
PSW[000] ; R0[125715] ; R1[177652] >>> ASH R1,R0 >>> PSW[011] ; R0[177777]
PSW[000] ; R0[125715] ; R1[177653] >>> ASH R1,R0 >>> PSW[011] ; R0[177777]
PSW[000] ; R0[125715] ; R1[177654] >>> ASH R1,R0 >>> PSW[011] ; R0[177777]
PSW[000] ; R0[125715] ; R1[177655] >>> ASH R1,R0 >>> PSW[011] ; R0[177777]
PSW[000] ; R0[125715] ; R1[177656] >>> ASH R1,R0 >>> PSW[011] ; R0[177777]
PSW[000] ; R0[125715] ; R1[177657] >>> ASH R1,R0 >>> PSW[011] ; R0[177777]
PSW[000] ; R0[125715] ; R1[177660] >>> ASH R1,R0 >>> PSW[011] ; R0[177777]
PSW[000] ; R0[125715] ; R1[177661] >>> ASH R1,R0 >>> PSW[010] ; R0[177777]
PSW[000] ; R0[125715] ; R1[177662] >>> ASH R1,R0 >>> PSW[011] ; R0[177776]
PSW[000] ; R0[125715] ; R1[177663] >>> ASH R1,R0 >>> PSW[010] ; R0[177775]
PSW[000] ; R0[125715] ; R1[177664] >>> ASH R1,R0 >>> PSW[011] ; R0[177772]
PSW[000] ; R0[125715] ; R1[177665] >>> ASH R1,R0 >>> PSW[010] ; R0[177765]
PSW[000] ; R0[125715] ; R1[177666] >>> ASH R1,R0 >>> PSW[011] ; R0[177752]
PSW[000] ; R0[125715] ; R1[177667] >>> ASH R1,R0 >>> PSW[011] ; R0[177725]
PSW[000] ; R0[125715] ; R1[177670] >>> ASH R1,R0 >>> PSW[011] ; R0[177653]
PSW[000] ; R0[125715] ; R1[177671] >>> ASH R1,R0 >>> PSW[011] ; R0[177527]
PSW[000] ; R0[125715] ; R1[177672] >>> ASH R1,R0 >>> PSW[010] ; R0[177257]
PSW[000] ; R0[125715] ; R1[177673] >>> ASH R1,R0 >>> PSW[010] ; R0[176536]
PSW[000] ; R0[125715] ; R1[177674] >>> ASH R1,R0 >>> PSW[011] ; R0[175274]
PSW[000] ; R0[125715] ; R1[177675] >>> ASH R1,R0 >>> PSW[011] ; R0[172571]
PSW[000] ; R0[125715] ; R1[177676] >>> ASH R1,R0 >>> PSW[010] ; R0[165363]
PSW[000] ; R0[125715] ; R1[177677] >>> ASH R1,R0 >>> PSW[011] ; R0[152746]
Как следует из логов - 1801ВМ3 путает местами результаты сдвига командой ASHC на [+31] и [-31] бит.
Да, похоже на то.
Но, наверное, сдвиги на такое количество бит столь неспецифичны, что в реальных программах вряд ли будут использованы.
Вторая часть.
PSW[000] ; R0[125715] ; R1[177700] >>> ASH R1,R0 >>> PSW[010] ; R0[125715]
PSW[000] ; R0[125715] ; R1[177701] >>> ASH R1,R0 >>> PSW[003] ; R0[053632]
PSW[000] ; R0[125715] ; R1[177702] >>> ASH R1,R0 >>> PSW[012] ; R0[127464]
PSW[000] ; R0[125715] ; R1[177703] >>> ASH R1,R0 >>> PSW[003] ; R0[057150]
PSW[000] ; R0[125715] ; R1[177704] >>> ASH R1,R0 >>> PSW[012] ; R0[136320]
PSW[000] ; R0[125715] ; R1[177705] >>> ASH R1,R0 >>> PSW[003] ; R0[074640]
PSW[000] ; R0[125715] ; R1[177706] >>> ASH R1,R0 >>> PSW[012] ; R0[171500]
PSW[000] ; R0[125715] ; R1[177707] >>> ASH R1,R0 >>> PSW[013] ; R0[163200]
PSW[000] ; R0[125715] ; R1[177710] >>> ASH R1,R0 >>> PSW[013] ; R0[146400]
PSW[000] ; R0[125715] ; R1[177711] >>> ASH R1,R0 >>> PSW[013] ; R0[115000]
PSW[000] ; R0[125715] ; R1[177712] >>> ASH R1,R0 >>> PSW[003] ; R0[032000]
PSW[000] ; R0[125715] ; R1[177713] >>> ASH R1,R0 >>> PSW[002] ; R0[064000]
PSW[000] ; R0[125715] ; R1[177714] >>> ASH R1,R0 >>> PSW[012] ; R0[150000]
PSW[000] ; R0[125715] ; R1[177715] >>> ASH R1,R0 >>> PSW[013] ; R0[120000]
PSW[000] ; R0[125715] ; R1[177716] >>> ASH R1,R0 >>> PSW[003] ; R0[040000]
PSW[000] ; R0[125715] ; R1[177717] >>> ASH R1,R0 >>> PSW[012] ; R0[100000]
PSW[000] ; R0[125715] ; R1[177720] >>> ASH R1,R0 >>> PSW[007] ; R0[000000]
PSW[000] ; R0[125715] ; R1[177721] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[125715] ; R1[177722] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[125715] ; R1[177723] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[125715] ; R1[177724] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[125715] ; R1[177725] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[125715] ; R1[177726] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[125715] ; R1[177727] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[125715] ; R1[177730] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[125715] ; R1[177731] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[125715] ; R1[177732] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[125715] ; R1[177733] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[125715] ; R1[177734] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[125715] ; R1[177735] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[125715] ; R1[177736] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[125715] ; R1[177737] >>> ASH R1,R0 >>> PSW[011] ; R0[177777]
PSW[000] ; R0[125715] ; R1[177740] >>> ASH R1,R0 >>> PSW[011] ; R0[177777]
PSW[000] ; R0[125715] ; R1[177741] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[125715] ; R1[177742] >>> ASH R1,R0 >>> PSW[011] ; R0[177777]
PSW[000] ; R0[125715] ; R1[177743] >>> ASH R1,R0 >>> PSW[011] ; R0[177777]
PSW[000] ; R0[125715] ; R1[177744] >>> ASH R1,R0 >>> PSW[011] ; R0[177777]
PSW[000] ; R0[125715] ; R1[177745] >>> ASH R1,R0 >>> PSW[011] ; R0[177777]
PSW[000] ; R0[125715] ; R1[177746] >>> ASH R1,R0 >>> PSW[011] ; R0[177777]
PSW[000] ; R0[125715] ; R1[177747] >>> ASH R1,R0 >>> PSW[011] ; R0[177777]
PSW[000] ; R0[125715] ; R1[177750] >>> ASH R1,R0 >>> PSW[011] ; R0[177777]
PSW[000] ; R0[125715] ; R1[177751] >>> ASH R1,R0 >>> PSW[011] ; R0[177777]
PSW[000] ; R0[125715] ; R1[177752] >>> ASH R1,R0 >>> PSW[011] ; R0[177777]
PSW[000] ; R0[125715] ; R1[177753] >>> ASH R1,R0 >>> PSW[011] ; R0[177777]
PSW[000] ; R0[125715] ; R1[177754] >>> ASH R1,R0 >>> PSW[011] ; R0[177777]
PSW[000] ; R0[125715] ; R1[177755] >>> ASH R1,R0 >>> PSW[011] ; R0[177777]
PSW[000] ; R0[125715] ; R1[177756] >>> ASH R1,R0 >>> PSW[011] ; R0[177777]
PSW[000] ; R0[125715] ; R1[177757] >>> ASH R1,R0 >>> PSW[011] ; R0[177777]
PSW[000] ; R0[125715] ; R1[177760] >>> ASH R1,R0 >>> PSW[011] ; R0[177777]
PSW[000] ; R0[125715] ; R1[177761] >>> ASH R1,R0 >>> PSW[010] ; R0[177777]
PSW[000] ; R0[125715] ; R1[177762] >>> ASH R1,R0 >>> PSW[011] ; R0[177776]
PSW[000] ; R0[125715] ; R1[177763] >>> ASH R1,R0 >>> PSW[010] ; R0[177775]
PSW[000] ; R0[125715] ; R1[177764] >>> ASH R1,R0 >>> PSW[011] ; R0[177772]
PSW[000] ; R0[125715] ; R1[177765] >>> ASH R1,R0 >>> PSW[010] ; R0[177765]
PSW[000] ; R0[125715] ; R1[177766] >>> ASH R1,R0 >>> PSW[011] ; R0[177752]
PSW[000] ; R0[125715] ; R1[177767] >>> ASH R1,R0 >>> PSW[011] ; R0[177725]
PSW[000] ; R0[125715] ; R1[177770] >>> ASH R1,R0 >>> PSW[011] ; R0[177653]
PSW[000] ; R0[125715] ; R1[177771] >>> ASH R1,R0 >>> PSW[011] ; R0[177527]
PSW[000] ; R0[125715] ; R1[177772] >>> ASH R1,R0 >>> PSW[010] ; R0[177257]
PSW[000] ; R0[125715] ; R1[177773] >>> ASH R1,R0 >>> PSW[010] ; R0[176536]
PSW[000] ; R0[125715] ; R1[177774] >>> ASH R1,R0 >>> PSW[011] ; R0[175274]
PSW[000] ; R0[125715] ; R1[177775] >>> ASH R1,R0 >>> PSW[011] ; R0[172571]
PSW[000] ; R0[125715] ; R1[177776] >>> ASH R1,R0 >>> PSW[010] ; R0[165363]
PSW[000] ; R0[125715] ; R1[177777] >>> ASH R1,R0 >>> PSW[011] ; R0[152746]
Третья часть.
PSW[000] ; R0[125715] ; R1[000000] >>> ASH R1,R0 >>> PSW[010] ; R0[125715]
PSW[000] ; R0[125715] ; R1[000001] >>> ASH R1,R0 >>> PSW[003] ; R0[053632]
PSW[000] ; R0[125715] ; R1[000002] >>> ASH R1,R0 >>> PSW[012] ; R0[127464]
PSW[000] ; R0[125715] ; R1[000003] >>> ASH R1,R0 >>> PSW[003] ; R0[057150]
PSW[000] ; R0[125715] ; R1[000004] >>> ASH R1,R0 >>> PSW[012] ; R0[136320]
PSW[000] ; R0[125715] ; R1[000005] >>> ASH R1,R0 >>> PSW[003] ; R0[074640]
PSW[000] ; R0[125715] ; R1[000006] >>> ASH R1,R0 >>> PSW[012] ; R0[171500]
PSW[000] ; R0[125715] ; R1[000007] >>> ASH R1,R0 >>> PSW[013] ; R0[163200]
PSW[000] ; R0[125715] ; R1[000010] >>> ASH R1,R0 >>> PSW[013] ; R0[146400]
PSW[000] ; R0[125715] ; R1[000011] >>> ASH R1,R0 >>> PSW[013] ; R0[115000]
PSW[000] ; R0[125715] ; R1[000012] >>> ASH R1,R0 >>> PSW[003] ; R0[032000]
PSW[000] ; R0[125715] ; R1[000013] >>> ASH R1,R0 >>> PSW[002] ; R0[064000]
PSW[000] ; R0[125715] ; R1[000014] >>> ASH R1,R0 >>> PSW[012] ; R0[150000]
PSW[000] ; R0[125715] ; R1[000015] >>> ASH R1,R0 >>> PSW[013] ; R0[120000]
PSW[000] ; R0[125715] ; R1[000016] >>> ASH R1,R0 >>> PSW[003] ; R0[040000]
PSW[000] ; R0[125715] ; R1[000017] >>> ASH R1,R0 >>> PSW[012] ; R0[100000]
PSW[000] ; R0[125715] ; R1[000020] >>> ASH R1,R0 >>> PSW[007] ; R0[000000]
PSW[000] ; R0[125715] ; R1[000021] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[125715] ; R1[000022] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[125715] ; R1[000023] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[125715] ; R1[000024] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[125715] ; R1[000025] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[125715] ; R1[000026] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[125715] ; R1[000027] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[125715] ; R1[000030] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[125715] ; R1[000031] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[125715] ; R1[000032] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[125715] ; R1[000033] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[125715] ; R1[000034] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[125715] ; R1[000035] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[125715] ; R1[000036] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[125715] ; R1[000037] >>> ASH R1,R0 >>> PSW[011] ; R0[177777]
PSW[000] ; R0[125715] ; R1[000040] >>> ASH R1,R0 >>> PSW[011] ; R0[177777]
PSW[000] ; R0[125715] ; R1[000041] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[125715] ; R1[000042] >>> ASH R1,R0 >>> PSW[011] ; R0[177777]
PSW[000] ; R0[125715] ; R1[000043] >>> ASH R1,R0 >>> PSW[011] ; R0[177777]
PSW[000] ; R0[125715] ; R1[000044] >>> ASH R1,R0 >>> PSW[011] ; R0[177777]
PSW[000] ; R0[125715] ; R1[000045] >>> ASH R1,R0 >>> PSW[011] ; R0[177777]
PSW[000] ; R0[125715] ; R1[000046] >>> ASH R1,R0 >>> PSW[011] ; R0[177777]
PSW[000] ; R0[125715] ; R1[000047] >>> ASH R1,R0 >>> PSW[011] ; R0[177777]
PSW[000] ; R0[125715] ; R1[000050] >>> ASH R1,R0 >>> PSW[011] ; R0[177777]
PSW[000] ; R0[125715] ; R1[000051] >>> ASH R1,R0 >>> PSW[011] ; R0[177777]
PSW[000] ; R0[125715] ; R1[000052] >>> ASH R1,R0 >>> PSW[011] ; R0[177777]
PSW[000] ; R0[125715] ; R1[000053] >>> ASH R1,R0 >>> PSW[011] ; R0[177777]
PSW[000] ; R0[125715] ; R1[000054] >>> ASH R1,R0 >>> PSW[011] ; R0[177777]
PSW[000] ; R0[125715] ; R1[000055] >>> ASH R1,R0 >>> PSW[011] ; R0[177777]
PSW[000] ; R0[125715] ; R1[000056] >>> ASH R1,R0 >>> PSW[011] ; R0[177777]
PSW[000] ; R0[125715] ; R1[000057] >>> ASH R1,R0 >>> PSW[011] ; R0[177777]
PSW[000] ; R0[125715] ; R1[000060] >>> ASH R1,R0 >>> PSW[011] ; R0[177777]
PSW[000] ; R0[125715] ; R1[000061] >>> ASH R1,R0 >>> PSW[010] ; R0[177777]
PSW[000] ; R0[125715] ; R1[000062] >>> ASH R1,R0 >>> PSW[011] ; R0[177776]
PSW[000] ; R0[125715] ; R1[000063] >>> ASH R1,R0 >>> PSW[010] ; R0[177775]
PSW[000] ; R0[125715] ; R1[000064] >>> ASH R1,R0 >>> PSW[011] ; R0[177772]
PSW[000] ; R0[125715] ; R1[000065] >>> ASH R1,R0 >>> PSW[010] ; R0[177765]
PSW[000] ; R0[125715] ; R1[000066] >>> ASH R1,R0 >>> PSW[011] ; R0[177752]
PSW[000] ; R0[125715] ; R1[000067] >>> ASH R1,R0 >>> PSW[011] ; R0[177725]
PSW[000] ; R0[125715] ; R1[000070] >>> ASH R1,R0 >>> PSW[011] ; R0[177653]
PSW[000] ; R0[125715] ; R1[000071] >>> ASH R1,R0 >>> PSW[011] ; R0[177527]
PSW[000] ; R0[125715] ; R1[000072] >>> ASH R1,R0 >>> PSW[010] ; R0[177257]
PSW[000] ; R0[125715] ; R1[000073] >>> ASH R1,R0 >>> PSW[010] ; R0[176536]
PSW[000] ; R0[125715] ; R1[000074] >>> ASH R1,R0 >>> PSW[011] ; R0[175274]
PSW[000] ; R0[125715] ; R1[000075] >>> ASH R1,R0 >>> PSW[011] ; R0[172571]
PSW[000] ; R0[125715] ; R1[000076] >>> ASH R1,R0 >>> PSW[010] ; R0[165363]
PSW[000] ; R0[125715] ; R1[000077] >>> ASH R1,R0 >>> PSW[011] ; R0[152746]
PSW[000] ; R0[125715] ; R1[000100] >>> ASH R1,R0 >>> PSW[010] ; R0[125715]
PSW[000] ; R0[125715] ; R1[000101] >>> ASH R1,R0 >>> PSW[003] ; R0[053632]
PSW[000] ; R0[125715] ; R1[000102] >>> ASH R1,R0 >>> PSW[012] ; R0[127464]
PSW[000] ; R0[125715] ; R1[000103] >>> ASH R1,R0 >>> PSW[003] ; R0[057150]
PSW[000] ; R0[125715] ; R1[000104] >>> ASH R1,R0 >>> PSW[012] ; R0[136320]
PSW[000] ; R0[125715] ; R1[000105] >>> ASH R1,R0 >>> PSW[003] ; R0[074640]
PSW[000] ; R0[125715] ; R1[000106] >>> ASH R1,R0 >>> PSW[012] ; R0[171500]
PSW[000] ; R0[125715] ; R1[000107] >>> ASH R1,R0 >>> PSW[013] ; R0[163200]
PSW[000] ; R0[125715] ; R1[000110] >>> ASH R1,R0 >>> PSW[013] ; R0[146400]
PSW[000] ; R0[125715] ; R1[000111] >>> ASH R1,R0 >>> PSW[013] ; R0[115000]
PSW[000] ; R0[125715] ; R1[000112] >>> ASH R1,R0 >>> PSW[003] ; R0[032000]
PSW[000] ; R0[125715] ; R1[000113] >>> ASH R1,R0 >>> PSW[002] ; R0[064000]
PSW[000] ; R0[125715] ; R1[000114] >>> ASH R1,R0 >>> PSW[012] ; R0[150000]
PSW[000] ; R0[125715] ; R1[000115] >>> ASH R1,R0 >>> PSW[013] ; R0[120000]
PSW[000] ; R0[125715] ; R1[000116] >>> ASH R1,R0 >>> PSW[003] ; R0[040000]
PSW[000] ; R0[125715] ; R1[000117] >>> ASH R1,R0 >>> PSW[012] ; R0[100000]
PSW[000] ; R0[125715] ; R1[000120] >>> ASH R1,R0 >>> PSW[007] ; R0[000000]
PSW[000] ; R0[125715] ; R1[000121] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[125715] ; R1[000122] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[125715] ; R1[000123] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[125715] ; R1[000124] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[125715] ; R1[000125] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[125715] ; R1[000126] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[125715] ; R1[000127] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[125715] ; R1[000130] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[125715] ; R1[000131] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[125715] ; R1[000132] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[125715] ; R1[000133] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[125715] ; R1[000134] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[125715] ; R1[000135] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[125715] ; R1[000136] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[125715] ; R1[000137] >>> ASH R1,R0 >>> PSW[011] ; R0[177777]
PSW[000] ; R0[125715] ; R1[000140] >>> ASH R1,R0 >>> PSW[011] ; R0[177777]
PSW[000] ; R0[125715] ; R1[000141] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[125715] ; R1[000142] >>> ASH R1,R0 >>> PSW[011] ; R0[177777]
PSW[000] ; R0[125715] ; R1[000143] >>> ASH R1,R0 >>> PSW[011] ; R0[177777]
PSW[000] ; R0[125715] ; R1[000144] >>> ASH R1,R0 >>> PSW[011] ; R0[177777]
PSW[000] ; R0[125715] ; R1[000145] >>> ASH R1,R0 >>> PSW[011] ; R0[177777]
PSW[000] ; R0[125715] ; R1[000146] >>> ASH R1,R0 >>> PSW[011] ; R0[177777]
PSW[000] ; R0[125715] ; R1[000147] >>> ASH R1,R0 >>> PSW[011] ; R0[177777]
PSW[000] ; R0[125715] ; R1[000150] >>> ASH R1,R0 >>> PSW[011] ; R0[177777]
PSW[000] ; R0[125715] ; R1[000151] >>> ASH R1,R0 >>> PSW[011] ; R0[177777]
PSW[000] ; R0[125715] ; R1[000152] >>> ASH R1,R0 >>> PSW[011] ; R0[177777]
PSW[000] ; R0[125715] ; R1[000153] >>> ASH R1,R0 >>> PSW[011] ; R0[177777]
PSW[000] ; R0[125715] ; R1[000154] >>> ASH R1,R0 >>> PSW[011] ; R0[177777]
PSW[000] ; R0[125715] ; R1[000155] >>> ASH R1,R0 >>> PSW[011] ; R0[177777]
PSW[000] ; R0[125715] ; R1[000156] >>> ASH R1,R0 >>> PSW[011] ; R0[177777]
PSW[000] ; R0[125715] ; R1[000157] >>> ASH R1,R0 >>> PSW[011] ; R0[177777]
PSW[000] ; R0[125715] ; R1[000160] >>> ASH R1,R0 >>> PSW[011] ; R0[177777]
PSW[000] ; R0[125715] ; R1[000161] >>> ASH R1,R0 >>> PSW[010] ; R0[177777]
PSW[000] ; R0[125715] ; R1[000162] >>> ASH R1,R0 >>> PSW[011] ; R0[177776]
PSW[000] ; R0[125715] ; R1[000163] >>> ASH R1,R0 >>> PSW[010] ; R0[177775]
PSW[000] ; R0[125715] ; R1[000164] >>> ASH R1,R0 >>> PSW[011] ; R0[177772]
PSW[000] ; R0[125715] ; R1[000165] >>> ASH R1,R0 >>> PSW[010] ; R0[177765]
PSW[000] ; R0[125715] ; R1[000166] >>> ASH R1,R0 >>> PSW[011] ; R0[177752]
PSW[000] ; R0[125715] ; R1[000167] >>> ASH R1,R0 >>> PSW[011] ; R0[177725]
PSW[000] ; R0[125715] ; R1[000170] >>> ASH R1,R0 >>> PSW[011] ; R0[177653]
PSW[000] ; R0[125715] ; R1[000171] >>> ASH R1,R0 >>> PSW[011] ; R0[177527]
PSW[000] ; R0[125715] ; R1[000172] >>> ASH R1,R0 >>> PSW[010] ; R0[177257]
PSW[000] ; R0[125715] ; R1[000173] >>> ASH R1,R0 >>> PSW[010] ; R0[176536]
PSW[000] ; R0[125715] ; R1[000174] >>> ASH R1,R0 >>> PSW[011] ; R0[175274]
PSW[000] ; R0[125715] ; R1[000175] >>> ASH R1,R0 >>> PSW[011] ; R0[172571]
PSW[000] ; R0[125715] ; R1[000176] >>> ASH R1,R0 >>> PSW[010] ; R0[165363]
PSW[000] ; R0[125715] ; R1[000177] >>> ASH R1,R0 >>> PSW[011] ; R0[152746]
Тест2 ASH процессора 1801ВМ3
Первая часть.
.RUN TASH2
PSW[000] ; R0[052062] ; R1[177600] >>> ASH R1,R0 >>> PSW[000] ; R0[052062]
PSW[000] ; R0[052062] ; R1[177601] >>> ASH R1,R0 >>> PSW[012] ; R0[124144]
PSW[000] ; R0[052062] ; R1[177602] >>> ASH R1,R0 >>> PSW[003] ; R0[050310]
PSW[000] ; R0[052062] ; R1[177603] >>> ASH R1,R0 >>> PSW[012] ; R0[120620]
PSW[000] ; R0[052062] ; R1[177604] >>> ASH R1,R0 >>> PSW[003] ; R0[041440]
PSW[000] ; R0[052062] ; R1[177605] >>> ASH R1,R0 >>> PSW[012] ; R0[103100]
PSW[000] ; R0[052062] ; R1[177606] >>> ASH R1,R0 >>> PSW[003] ; R0[006200]
PSW[000] ; R0[052062] ; R1[177607] >>> ASH R1,R0 >>> PSW[002] ; R0[014400]
PSW[000] ; R0[052062] ; R1[177610] >>> ASH R1,R0 >>> PSW[002] ; R0[031000]
PSW[000] ; R0[052062] ; R1[177611] >>> ASH R1,R0 >>> PSW[002] ; R0[062000]
PSW[000] ; R0[052062] ; R1[177612] >>> ASH R1,R0 >>> PSW[012] ; R0[144000]
PSW[000] ; R0[052062] ; R1[177613] >>> ASH R1,R0 >>> PSW[013] ; R0[110000]
PSW[000] ; R0[052062] ; R1[177614] >>> ASH R1,R0 >>> PSW[003] ; R0[020000]
PSW[000] ; R0[052062] ; R1[177615] >>> ASH R1,R0 >>> PSW[002] ; R0[040000]
PSW[000] ; R0[052062] ; R1[177616] >>> ASH R1,R0 >>> PSW[012] ; R0[100000]
PSW[000] ; R0[052062] ; R1[177617] >>> ASH R1,R0 >>> PSW[007] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177620] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177621] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177622] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177623] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177624] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177625] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177626] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177627] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177630] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177631] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177632] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177633] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177634] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177635] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177636] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177637] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177640] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177641] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177642] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177643] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177644] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177645] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177646] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177647] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177650] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177651] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177652] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177653] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177654] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177655] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177656] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177657] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177660] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177661] >>> ASH R1,R0 >>> PSW[005] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177662] >>> ASH R1,R0 >>> PSW[000] ; R0[000001]
PSW[000] ; R0[052062] ; R1[177663] >>> ASH R1,R0 >>> PSW[001] ; R0[000002]
PSW[000] ; R0[052062] ; R1[177664] >>> ASH R1,R0 >>> PSW[000] ; R0[000005]
PSW[000] ; R0[052062] ; R1[177665] >>> ASH R1,R0 >>> PSW[001] ; R0[000012]
PSW[000] ; R0[052062] ; R1[177666] >>> ASH R1,R0 >>> PSW[000] ; R0[000025]
PSW[000] ; R0[052062] ; R1[177667] >>> ASH R1,R0 >>> PSW[000] ; R0[000052]
PSW[000] ; R0[052062] ; R1[177670] >>> ASH R1,R0 >>> PSW[000] ; R0[000124]
PSW[000] ; R0[052062] ; R1[177671] >>> ASH R1,R0 >>> PSW[000] ; R0[000250]
PSW[000] ; R0[052062] ; R1[177672] >>> ASH R1,R0 >>> PSW[001] ; R0[000520]
PSW[000] ; R0[052062] ; R1[177673] >>> ASH R1,R0 >>> PSW[001] ; R0[001241]
PSW[000] ; R0[052062] ; R1[177674] >>> ASH R1,R0 >>> PSW[000] ; R0[002503]
PSW[000] ; R0[052062] ; R1[177675] >>> ASH R1,R0 >>> PSW[000] ; R0[005206]
PSW[000] ; R0[052062] ; R1[177676] >>> ASH R1,R0 >>> PSW[001] ; R0[012414]
PSW[000] ; R0[052062] ; R1[177677] >>> ASH R1,R0 >>> PSW[000] ; R0[025031]
---------- Post added at 00:31 ---------- Previous post was at 00:30 ----------
Вторая часть.
PSW[000] ; R0[052062] ; R1[177700] >>> ASH R1,R0 >>> PSW[000] ; R0[052062]
PSW[000] ; R0[052062] ; R1[177701] >>> ASH R1,R0 >>> PSW[012] ; R0[124144]
PSW[000] ; R0[052062] ; R1[177702] >>> ASH R1,R0 >>> PSW[003] ; R0[050310]
PSW[000] ; R0[052062] ; R1[177703] >>> ASH R1,R0 >>> PSW[012] ; R0[120620]
PSW[000] ; R0[052062] ; R1[177704] >>> ASH R1,R0 >>> PSW[003] ; R0[041440]
PSW[000] ; R0[052062] ; R1[177705] >>> ASH R1,R0 >>> PSW[012] ; R0[103100]
PSW[000] ; R0[052062] ; R1[177706] >>> ASH R1,R0 >>> PSW[003] ; R0[006200]
PSW[000] ; R0[052062] ; R1[177707] >>> ASH R1,R0 >>> PSW[002] ; R0[014400]
PSW[000] ; R0[052062] ; R1[177710] >>> ASH R1,R0 >>> PSW[002] ; R0[031000]
PSW[000] ; R0[052062] ; R1[177711] >>> ASH R1,R0 >>> PSW[002] ; R0[062000]
PSW[000] ; R0[052062] ; R1[177712] >>> ASH R1,R0 >>> PSW[012] ; R0[144000]
PSW[000] ; R0[052062] ; R1[177713] >>> ASH R1,R0 >>> PSW[013] ; R0[110000]
PSW[000] ; R0[052062] ; R1[177714] >>> ASH R1,R0 >>> PSW[003] ; R0[020000]
PSW[000] ; R0[052062] ; R1[177715] >>> ASH R1,R0 >>> PSW[002] ; R0[040000]
PSW[000] ; R0[052062] ; R1[177716] >>> ASH R1,R0 >>> PSW[012] ; R0[100000]
PSW[000] ; R0[052062] ; R1[177717] >>> ASH R1,R0 >>> PSW[007] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177720] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177721] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177722] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177723] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177724] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177725] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177726] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177727] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177730] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177731] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177732] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177733] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177734] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177735] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177736] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177737] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177740] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177741] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177742] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177743] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177744] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177745] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177746] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177747] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177750] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177751] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177752] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177753] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177754] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177755] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177756] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177757] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177760] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177761] >>> ASH R1,R0 >>> PSW[005] ; R0[000000]
PSW[000] ; R0[052062] ; R1[177762] >>> ASH R1,R0 >>> PSW[000] ; R0[000001]
PSW[000] ; R0[052062] ; R1[177763] >>> ASH R1,R0 >>> PSW[001] ; R0[000002]
PSW[000] ; R0[052062] ; R1[177764] >>> ASH R1,R0 >>> PSW[000] ; R0[000005]
PSW[000] ; R0[052062] ; R1[177765] >>> ASH R1,R0 >>> PSW[001] ; R0[000012]
PSW[000] ; R0[052062] ; R1[177766] >>> ASH R1,R0 >>> PSW[000] ; R0[000025]
PSW[000] ; R0[052062] ; R1[177767] >>> ASH R1,R0 >>> PSW[000] ; R0[000052]
PSW[000] ; R0[052062] ; R1[177770] >>> ASH R1,R0 >>> PSW[000] ; R0[000124]
PSW[000] ; R0[052062] ; R1[177771] >>> ASH R1,R0 >>> PSW[000] ; R0[000250]
PSW[000] ; R0[052062] ; R1[177772] >>> ASH R1,R0 >>> PSW[001] ; R0[000520]
PSW[000] ; R0[052062] ; R1[177773] >>> ASH R1,R0 >>> PSW[001] ; R0[001241]
PSW[000] ; R0[052062] ; R1[177774] >>> ASH R1,R0 >>> PSW[000] ; R0[002503]
PSW[000] ; R0[052062] ; R1[177775] >>> ASH R1,R0 >>> PSW[000] ; R0[005206]
PSW[000] ; R0[052062] ; R1[177776] >>> ASH R1,R0 >>> PSW[001] ; R0[012414]
PSW[000] ; R0[052062] ; R1[177777] >>> ASH R1,R0 >>> PSW[000] ; R0[025031]
Третья часть.
PSW[000] ; R0[052062] ; R1[000000] >>> ASH R1,R0 >>> PSW[000] ; R0[052062]
PSW[000] ; R0[052062] ; R1[000001] >>> ASH R1,R0 >>> PSW[012] ; R0[124144]
PSW[000] ; R0[052062] ; R1[000002] >>> ASH R1,R0 >>> PSW[003] ; R0[050310]
PSW[000] ; R0[052062] ; R1[000003] >>> ASH R1,R0 >>> PSW[012] ; R0[120620]
PSW[000] ; R0[052062] ; R1[000004] >>> ASH R1,R0 >>> PSW[003] ; R0[041440]
PSW[000] ; R0[052062] ; R1[000005] >>> ASH R1,R0 >>> PSW[012] ; R0[103100]
PSW[000] ; R0[052062] ; R1[000006] >>> ASH R1,R0 >>> PSW[003] ; R0[006200]
PSW[000] ; R0[052062] ; R1[000007] >>> ASH R1,R0 >>> PSW[002] ; R0[014400]
PSW[000] ; R0[052062] ; R1[000010] >>> ASH R1,R0 >>> PSW[002] ; R0[031000]
PSW[000] ; R0[052062] ; R1[000011] >>> ASH R1,R0 >>> PSW[002] ; R0[062000]
PSW[000] ; R0[052062] ; R1[000012] >>> ASH R1,R0 >>> PSW[012] ; R0[144000]
PSW[000] ; R0[052062] ; R1[000013] >>> ASH R1,R0 >>> PSW[013] ; R0[110000]
PSW[000] ; R0[052062] ; R1[000014] >>> ASH R1,R0 >>> PSW[003] ; R0[020000]
PSW[000] ; R0[052062] ; R1[000015] >>> ASH R1,R0 >>> PSW[002] ; R0[040000]
PSW[000] ; R0[052062] ; R1[000016] >>> ASH R1,R0 >>> PSW[012] ; R0[100000]
PSW[000] ; R0[052062] ; R1[000017] >>> ASH R1,R0 >>> PSW[007] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000020] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000021] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000022] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000023] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000024] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000025] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000026] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000027] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000030] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000031] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000032] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000033] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000034] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000035] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000036] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000037] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000040] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000041] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000042] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000043] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000044] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000045] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000046] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000047] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000050] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000051] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000052] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000053] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000054] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000055] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000056] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000057] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000060] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000061] >>> ASH R1,R0 >>> PSW[005] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000062] >>> ASH R1,R0 >>> PSW[000] ; R0[000001]
PSW[000] ; R0[052062] ; R1[000063] >>> ASH R1,R0 >>> PSW[001] ; R0[000002]
PSW[000] ; R0[052062] ; R1[000064] >>> ASH R1,R0 >>> PSW[000] ; R0[000005]
PSW[000] ; R0[052062] ; R1[000065] >>> ASH R1,R0 >>> PSW[001] ; R0[000012]
PSW[000] ; R0[052062] ; R1[000066] >>> ASH R1,R0 >>> PSW[000] ; R0[000025]
PSW[000] ; R0[052062] ; R1[000067] >>> ASH R1,R0 >>> PSW[000] ; R0[000052]
PSW[000] ; R0[052062] ; R1[000070] >>> ASH R1,R0 >>> PSW[000] ; R0[000124]
PSW[000] ; R0[052062] ; R1[000071] >>> ASH R1,R0 >>> PSW[000] ; R0[000250]
PSW[000] ; R0[052062] ; R1[000072] >>> ASH R1,R0 >>> PSW[001] ; R0[000520]
PSW[000] ; R0[052062] ; R1[000073] >>> ASH R1,R0 >>> PSW[001] ; R0[001241]
PSW[000] ; R0[052062] ; R1[000074] >>> ASH R1,R0 >>> PSW[000] ; R0[002503]
PSW[000] ; R0[052062] ; R1[000075] >>> ASH R1,R0 >>> PSW[000] ; R0[005206]
PSW[000] ; R0[052062] ; R1[000076] >>> ASH R1,R0 >>> PSW[001] ; R0[012414]
PSW[000] ; R0[052062] ; R1[000077] >>> ASH R1,R0 >>> PSW[000] ; R0[025031]
PSW[000] ; R0[052062] ; R1[000100] >>> ASH R1,R0 >>> PSW[000] ; R0[052062]
PSW[000] ; R0[052062] ; R1[000101] >>> ASH R1,R0 >>> PSW[012] ; R0[124144]
PSW[000] ; R0[052062] ; R1[000102] >>> ASH R1,R0 >>> PSW[003] ; R0[050310]
PSW[000] ; R0[052062] ; R1[000103] >>> ASH R1,R0 >>> PSW[012] ; R0[120620]
PSW[000] ; R0[052062] ; R1[000104] >>> ASH R1,R0 >>> PSW[003] ; R0[041440]
PSW[000] ; R0[052062] ; R1[000105] >>> ASH R1,R0 >>> PSW[012] ; R0[103100]
PSW[000] ; R0[052062] ; R1[000106] >>> ASH R1,R0 >>> PSW[003] ; R0[006200]
PSW[000] ; R0[052062] ; R1[000107] >>> ASH R1,R0 >>> PSW[002] ; R0[014400]
PSW[000] ; R0[052062] ; R1[000110] >>> ASH R1,R0 >>> PSW[002] ; R0[031000]
PSW[000] ; R0[052062] ; R1[000111] >>> ASH R1,R0 >>> PSW[002] ; R0[062000]
PSW[000] ; R0[052062] ; R1[000112] >>> ASH R1,R0 >>> PSW[012] ; R0[144000]
PSW[000] ; R0[052062] ; R1[000113] >>> ASH R1,R0 >>> PSW[013] ; R0[110000]
PSW[000] ; R0[052062] ; R1[000114] >>> ASH R1,R0 >>> PSW[003] ; R0[020000]
PSW[000] ; R0[052062] ; R1[000115] >>> ASH R1,R0 >>> PSW[002] ; R0[040000]
PSW[000] ; R0[052062] ; R1[000116] >>> ASH R1,R0 >>> PSW[012] ; R0[100000]
PSW[000] ; R0[052062] ; R1[000117] >>> ASH R1,R0 >>> PSW[007] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000120] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000121] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000122] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000123] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000124] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000125] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000126] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000127] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000130] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000131] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000132] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000133] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000134] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000135] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000136] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000137] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000140] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000141] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000142] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000143] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000144] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000145] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000146] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000147] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000150] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000151] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000152] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000153] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000154] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000155] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000156] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000157] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000160] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000161] >>> ASH R1,R0 >>> PSW[005] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000162] >>> ASH R1,R0 >>> PSW[000] ; R0[000001]
PSW[000] ; R0[052062] ; R1[000163] >>> ASH R1,R0 >>> PSW[001] ; R0[000002]
PSW[000] ; R0[052062] ; R1[000164] >>> ASH R1,R0 >>> PSW[000] ; R0[000005]
PSW[000] ; R0[052062] ; R1[000165] >>> ASH R1,R0 >>> PSW[001] ; R0[000012]
PSW[000] ; R0[052062] ; R1[000166] >>> ASH R1,R0 >>> PSW[000] ; R0[000025]
PSW[000] ; R0[052062] ; R1[000167] >>> ASH R1,R0 >>> PSW[000] ; R0[000052]
PSW[000] ; R0[052062] ; R1[000170] >>> ASH R1,R0 >>> PSW[000] ; R0[000124]
PSW[000] ; R0[052062] ; R1[000171] >>> ASH R1,R0 >>> PSW[000] ; R0[000250]
PSW[000] ; R0[052062] ; R1[000172] >>> ASH R1,R0 >>> PSW[001] ; R0[000520]
PSW[000] ; R0[052062] ; R1[000173] >>> ASH R1,R0 >>> PSW[001] ; R0[001241]
PSW[000] ; R0[052062] ; R1[000174] >>> ASH R1,R0 >>> PSW[000] ; R0[002503]
PSW[000] ; R0[052062] ; R1[000175] >>> ASH R1,R0 >>> PSW[000] ; R0[005206]
PSW[000] ; R0[052062] ; R1[000176] >>> ASH R1,R0 >>> PSW[001] ; R0[012414]
PSW[000] ; R0[052062] ; R1[000177] >>> ASH R1,R0 >>> PSW[000] ; R0[025031]
Похоже, что команды ASH и ASHC при положительном сдвигаемом значении глючат у 1801ВМ3 не так сильно, как при отрицательном:
Вариант 1801ВМ3 :
PSW[000] ; R0[125715] ; R1[000037] >>> ASH R1,R0 >>> PSW[011] ; R0[177777]
PSW[000] ; R0[125715] ; R1[000040] >>> ASH R1,R0 >>> PSW[011] ; R0[177777]
PSW[000] ; R0[125715] ; R1[000041] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
Правильный вариант:
PSW[000] ; R0[125715] ; R1[000037] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[125715] ; R1[000040] >>> ASH R1,R0 >>> PSW[011] ; R0[177777]
PSW[000] ; R0[125715] ; R1[000041] >>> ASH R1,R0 >>> PSW[011] ; R0[177777]
Вариант 1801ВМ3 :
PSW[000] ; R0[052062] ; R1[000037] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000040] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000041] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
Правильный вариант:
PSW[000] ; R0[052062] ; R1[000037] >>> ASH R1,R0 >>> PSW[006] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000040] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
PSW[000] ; R0[052062] ; R1[000041] >>> ASH R1,R0 >>> PSW[004] ; R0[000000]
...
наверное, сдвиги на такое количество бит столь неспецифичны, что в реальных программах вряд ли будут использованы.Кстати, не мешает дополнить TSTVM2 двумя вариантами теста команды ASHC с положительными значениями в R0 и R1. Есть серьёзные подозрения, что эмулятор E11 глючит только при сдвиге положительных значений, что в текущем варианте тест команды ASHC не выявляет.
Кстати, не мешает дополнить TSTVM2 двумя вариантами теста команды ASHC с положительными значениями в R0 и R1. Есть серьёзные подозрения, что эмулятор E11 глючит только при сдвиге положительных значений, что в текущем варианте тест команды ASHC не выявляет.
Ну, это вы сами можете легко модифицировать, поменяв константы в этом месте таблицы:
.ASCIZ "ASHC (even)"<9> ;Мнемоника команды
.Even ;
.WORD InASHC ;Функция инициализации
>>> MOV #43981,R0 ;Тестируемый фрагмент
>>> MOV #61253,R1 ;
ASHC R2,R0 ;
.WORD 27115 ;Правильный результат теста
По моему нет таких эмуляторов которые эмулируют ВМ3. Поэтому у меня эталонная и испытуемая система в одном лице.
E11 ;)
Там можно настроить что угодно. Не полная конечно эмуляция будет - в частности кривой регистр MMR3 эмулироваться не будет, хотя при желании можно попробовать плугином реализовать :)
---------- Post added at 06:10 ---------- Previous post was at 06:08 ----------
Например, все процессоры делают так
Все - понятие растяжимое. Некоторые J11 процессоры при определенных условиях выполняют сдвиг не в ту сторону :)
---------- Post added at 06:12 ---------- Previous post was at 06:10 ----------
Как следует из логов - 1801ВМ3 путает местами результаты сдвига командой ASHC на [+31] и [-31] бит.
Это оно самое. ASH и ASHC при двиге на 31 и определенных значениях двигают не в ту сторону. В E11 такое поведение можно настроить (включено по умолчанию для соответствующих процессоров).
В архиве TASH+.zip (http://emulator.pdp-11.org.ru/misc/TASH+.zip) - дополненный вариант теста команд ASH и ASHC специально для проверки эмулятора E11.
На SIMH результат запуска выглядит так:
.RU TASH
Тестирование правильности выполнения команд процессора:
Команды сдвига (частичный тест):
ASH (negative) - OK
ASH (positive) - OK
ASHC (even negative) - OK
ASHC (odd negative) - OK
ASHC (even positive) - OK
ASHC (odd positive) - OK
.
Тест косяка ASH/ASHC в старых версиях J11.
.TITLE ASHBUG -- TEST ASH/ASHC SHIFT #31 BUG
.IDENT /V01.00/
.MCALL .EXIT,.PRINT
START:: MOV #100000,R1
ASH #37,R1
MOV #VASH,R0
MOV PC,R2
CALL $CBOMG
.PRINT #TASH
MOV #0,R5
MOV #100000,R4
ASHC #177737,R4
MOV #VASHC,R0
MOV R4,R1
MOV PC,R2
CALL $CBOMG
INC R0
MOV R5,R1
MOV PC,R2
CALL $CBOMG
.PRINT #TASHC
.EXIT
VALUE: .BLKW 2
TASH: .ASCII /ASH: #37 100000 -> /
VASH: .ASCIZ /XXXXXX [000000]/
TASHC: .ASCII /ASHC: #177737 000000,100000 -> /
VASHC: .ASCIZ /XXXXXX,XXXXXX [000000,000000]/
BUFF: .BLKB 80.
.END START
Правильный результат теста:
.RUN ASHBUG
ASH: #37 100000 -> 000000 [000000]
ASHC: #177737 000000,100000 -> 000000,000000 [000000,000000]
.
Результат на процессорах с ошибкой:
.RUN ASHBUG
ASH: #37 100000 -> 177777 [000000]
ASHC: #177737 000000,100000 -> 177777,177777 [000000,000000]
.
В E11 наличие/отсутствие ошибки задается командой SET CPU [NO]ASH31
Тест косяка ASH/ASHC в старых версиях J11У 1801ВМ3 косяк команды ASHC проявляется и при отсутствии единиц в старших разрядах источника:
PSW[000] ; R0[125715] ; R1[167505] ; R2[000037] >>> ASHC R2,R0 >>>
PSW[010] ; R0[177777] ; R1[177777]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000040] >>> ASHC R2,R0 >>>
PSW[011] ; R0[177777] ; R1[177777]
PSW[000] ; R0[125715] ; R1[167505] ; R2[000041] >>> ASHC R2,R0 >>>
PSW[012] ; R0[100000] ; R1[000000]
Кроме того неправильно сдвигает не только на +31, но и на -31 ( результаты этих сдвигов строго меняются местами ).
Суть глюка J11 подробно описана ЗДЕСЬ (http://simh.trailing-edge.com/docs/ucode_bugs.pdf) и там явно видно, что результаты местами не меняются - вместо левого сдвига выполняется правый, но не наоборот.
У 1801ВМ3 косяк команды ASHC проявляется и при отсутствии единиц в старших разрядах источника
Так и не требуется этого. Просто единица в старшем разряде нагляднее результат дает.
Так и не требуется этого. Просто единица в старшем разряде нагляднее результат дает.Имеется в виду значение счётчика сдвига, содержащее 037 в младших разрядах и единицы в старших - утверждается, что если старшие биты счётчика сдвига равны нулю, то у J11 глючит только команда ASH, а команда ASHC не глючит.
Имеется в виду значение счётчика сдвига, содержащее 037 в младших разрядах и единицы в старших - утверждается, что если старшие биты равны нулю, то у J11 глючит только команда ASH, а команда ASHC не глючит.
А, ну это да. Для ASHC нужно чтобы 6-15 биты были установлены кроме самого 37.
Подробно потестировать пока не на чем ибо все только на доверии к E11.
Для ASHC нужно чтобы 6-15 биты были установлены кроме самого 37.А 1801ВМ3 глючит и при "чистом" 037, и при "чистом" 041 - просто выполняя сдвиги на +31 и на -31 вместо друг друга.
А 1801ВМ3 глючит и при "чистом" 037, и при "чистом" 041 - просто выполняя сдвиги на +31 и на -31 вместо друг друга.
Наверное это "исправленный" по-советски вариант :D
Подробно потестировать пока не на чемНо есть исходник глючного микрокода J11 (http://simh.trailing-edge.com/docs/ucode_bugs.pdf) с описанием его работы.
Такой вопрос - команда MARK во всех PDP11 реализована? Или есть такие, где она даст TRAP?
Такой вопрос - команда MARK во всех PDP11 реализована?У процессора T-11 нет команды MARK, так же как и у VAX в режиме совместимости с PDP-11.
...
Похоже, что в логике теста команды DIV в TSTVM2 есть неточность :
2$: DIV R2,R0 ;Команда сигнатуры
MFPS R0 ;R0 = PSW
ADD R4,R5 ;R5 = R5 + R4
ADD R0,R5 ;R5 = R5 + PSW
ADD R5,R5 ;R5 = R5 rol 1 (декoрреляция)
ADC R5 ;
ADD R1,R5 ;R5 = R5 + R1
ADD R2,R5 ;R5 = R5 + R2
При таком использовании R0 - в контрольную сумму не попадает находящийся в R0 результат деления.
Похоже, что вместо R0 предполагалось использовать регистр R2, содержащий неизменный делитель
У процессора T-11 нет команды MARK, так же как и у VAX в режиме совместимости с PDP-11.
Что произойдет, если в программе встретится MARK на таком процессоре?
Что произойдет, если в программе встретится MARK на таком процессоре?
Как обычно - trap to 10.
---------- Post added at 18:45 ---------- Previous post was at 18:23 ----------
Команда MARK ничем не отличается от любой другой команды. В традиционных примерах ее заносят в стек, это может сбивать с толку, но на самом деле и в этих примерах она выполняется штатно: до нее доходит PC и она выполняется :)
Обновления в тесте:
1. Улучшено тестирование команды деления (спасибо за замечание Patron'у).
2. Сделано жесткое тестирование команды MARK (на реале не проверено, проверено на эмуляторах УКНЦ - EmuStudio и UKNCBTL).
TSTVM2 v0.3a (http://sderni.ru/247758)
тестирование команды MARK
MOV #^O006400,R0 ; R0 - код команды MARK N
Ассемблер допускает написание
MOV #MARK,R0(MARK определять не нужно - фича).
Для тестирования необязательно загонять в стек. Пример использованя команды MARK и так и так (а заодно использования мнемоники вместо кода):
.TY MARK.MAC
.TITLE MARK -- ПРИМЕРЫ ИСПОЛЬЗОВАНИЯ MARK
.IDENT /V01.00/
.MCALL .EXIT,.PRINT
;+
;ПРИМЕР БЕЗ ИСПОЛЬЗОВАНИЯ СТЕКА
;-
START:: MOV #RSTRT,R5 ;АДРЕС ДЛЯ ПЕРЕХОДА
MARK 4 ;ИДЕМ ТУДА, УСТАНАВЛИВАЕМ СТЕК
STACK:: .BLKW 4 ;ОБЛАСТЬ СТЕКА
.WORD 123456 ;ЗНАЧЕНИЕ ДЛЯ R5
;+
;ПОСЛЕ ВЫПОЛНЕНИЯ КОМАНДЫ MARK В R5 БУДЕТ ПОМЕЩЕНО
;123456, А SP БУДЕТ УКАЗЫВАТЬ НА #RSTRT
;-
RSTRT:: MOV R5,R1 ;ПЕРЕВОДИМ R5 В ASCII
MOV #VR5,R0 ;
MOV PC,R2 ;
CALL $CBOMG ;
MOV #VSP,R0 ;ПЕРЕВОДИМ SP В ASCII
MOV SP,R1 ;
MOV PC,R2 ;
CALL $CBOMG ;
MOV #VRS,R0 ;ПЕРЕВОДИМ АДРЕС #RSTRT В ASCII
MOV #RSTRT,R1 ;...ДОЛЖЕН БЫТЬ РАВЕН SP
MOV PC,R2 ;
CALL $CBOMG ;
.PRINT #R5VAL ;ПЕЧАТАЕМ ЗНАЧЕНИЯ
;+
;ПРИМЕР С ИСПОЛЬЗОВАНИЕМ СТЕКА
;-
MOV R5,-(SP) ;СОХРАНЯЕМ R5
MOV #1,-(SP) ;ПОМЕЩАЕМ В СТЕК АРГУМЕНТ #1
MOV #2,-(SP) ;...#2
MOV #3,-(SP) ;...#3
MOV #MARK+3,-(SP) ;ПОМЕЩАЕМ В СТЕК КОМАНДУ MARK
MOV SP,R5 ;УСТАНАВЛИВАЕМ ЕЕ АДРЕС ДЛЯ RTS
CALL SUBR ;ВЫЗЫВАЕМ ПОДПРОГРАММУ
MOV #VSP2,R0 ;ПЕРЕВОДИМ SP В ASCII
MOV SP,R1 ;
MOV PC,R2 ;
CALL $CBOMG ;
.PRINT #LEAVE ;ПЕЧАТАЕМ СООБЩЕНИЕ ВЫХОДА
.EXIT ;ВЫХОД В СИСТЕМУ
SUBR: .PRINT #ENTER ;ПЕЧАТАЕМ СООБЩЕНИЕ ВЫХОДА
RTS R5 ;ВОЗВРАТ И ВОССТАНОВЛЕНИЕ СТЕКА
R5VAL: .ASCII /R5=/
VR5: .ASCII /XXXXXX, SP=/
VSP: .ASCII /XXXXXX, #RSTRT=/
VRS: .ASCIZ /XXXXXX/
ENTER: .ASCIZ /SUBROUTINE ENTERED/
LEAVE: .ASCII /SUBROUTINE LEAVED WITH SP=/
VSP2: .ASCIZ /XXXXXX/
.END START
.EX MARK
R5=123456, SP=001020, #RSTRT=001020
SUBROUTINE ENTERED
SUBROUTINE LEAVED WITH SP=001020
.
А это отвлеченно - пример когда команда MARK работает не так как ожидается:
.LIN MARK/ID
.RU MARK !SPLIT I/D SPACE PROGRAM
?MON-F-Trap to 4 001010
.
Для тестирования необязательно загонять в стек.
В моем тесте это неприемлемо, ибо тестируются все комбинации N от 0 до 63. Надеюсь, всегда можно рассчитывать, что стек у нас имеет размер не менее 128 байт?
В моем тесте это неприемлемо, ибо тестируются все комбинации N от 0 до 63. Надеюсь, всегда можно рассчитывать, что стек у нас имеет размер не менее 128 байт?
Очень даже приемлимо. Никто не мешает создать буфер "под стек" как в примере и помещать в нужное место команду BR перед тестированием, а то и заполнить его весь командами с таким расчетом чтобы проверять точность перехода :)
По умолчанию в RT-11 стек устанавливается на 1000 и до 500 (чуть больше чем 500 на самом деле - 476 уже область векторов в RT-11) его безопасно можно понижать.
Очень даже приемлимо. Никто не мешает создать буфер "под стек" как в примере и помещать в нужное место команду BR перед тестированием, а то и заполнить его весь командами с таким расчетом чтобы проверять точность перехода :)
По умолчанию в RT-11 стек устанавливается на 1000 и до 500 его безопасно можно понижать.
Отлично, 192 байта - это то, что надо)
Можно сделать буфер, но это более громоздко. Зачем ехать в Киев через Магадан, если так компактнее)
Отлично, 192 байта - это то, что надо)
Можно сделать буфер, но это более громоздко. Зачем ехать в Киев через Магадан, если так компактнее)
Да ничем не компактнее - можно буфер поместить в конце программы и тогда он заранее будет в наличии - только команды вставить в нужное место и код будет на порядок компактнее :)
Или еще проще - запользовать как буфер ту же область 500-1000 :)
Кстати, судя по вашему примеру, системе при выходе из программы все равно, что вы установили стек в другое место и не вернули его?
Кстати, судя по вашему примеру, системе при выходе из программы все равно, что вы установили стек в другое место и не вернули его?
Абсолютно все-равно. Главное чтобы хватило стека под выполнение команды EMT (.EXIT). Ну и в RT-11SJ/FB/SB на DCJ11 процессорах важно чтобы стек не падал ниже 400 в момент EMT - иначе будет yellow stack trap по 4.
Да ничем не компактнее - можно буфер поместить в конце программы и тогда он заранее будет в наличии - только команды вставить в нужное место и код будет на порядок компактнее :)
Ничего не будет. Зачем мне в конце программы балласт в виде лишнего буфера? В конце концов тест может вырасти до таких размеров, что не будет умещаться в память (как уже было с тестом скорости). Так что буферами лишними я разбрасываться не хочу.
А ставить буфер на место стека - это фактически то, что я сейчас и делаю, но извращеннее)
Ничего не будет. Зачем мне в конце программы балласт в виде лишнего буфера? В конце концов тест может вырасти до таких размеров, что не будет умещаться в память (как уже было с тестом скорости). Так что буферами лишними я разбрасываться не хочу.
А ставить буфер на место стека - это фактически то, что я сейчас и делаю, но извращеннее)
Я предложил другой вариант - использовать существующий стек под буфер - это все-равно будет по количеству команд короче чем пример с загонкой в стек :)
При том можно тест выполнять так, чтобы после выполнения MARK стек оставался на том же месте всегда...
А что касается размера теста - в крайнем случае его можно порезать на оверлеи - зачем все тесты одновременно в пямяти хранить? :)
---------- Post added at 11:43 ---------- Previous post was at 11:40 ----------
Иными словами - тест MARK без вызова подпрограммы :)
---------- Post added at 13:04 ---------- Previous post was at 11:43 ----------
Кстати все спросить забываю... Не придумалось ли надежных способов точно идентифицировать ВМ1 и ВМ2 процессор? С ВМ3 все просто...
Кстати все спросить забываю... Не придумалось ли надежных способов точно идентифицировать ВМ1 и ВМ2 процессор? С ВМ3 все просто...
Не знаю, у меня такой задачи не стояло.
Может быть по наличию таймера, оставшегося с незапамятных времен? ;)
Не знаю, у меня такой задачи не стояло.
Может быть по наличию таймера, оставшегося с незапамятных времен? ;)
Это как я понимаю только в ВМ1?
Надо еще посмотреть не пересекается ли с чем-то обычным...
Толи дело с ВМ3 - там все просто - смотрим содержимое @#172516 и сразу все понятно :)
В архиве TDIV.zip (http://emulator.pdp-11.org.ru/misc/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 ).
...
form, А RT11 как то определяет процессор командой SH CON. Может там какие то вызовы есть.
Толи дело с ВМ3 - там все просто - смотрим содержимое @#172516 и сразу все понятно :) В этом случае можно сделать коррекцию ошибок ASH и ASHC где программа определяет что процессор именно ВМ3.
form, А RT11 как то определяет процессор командой SH CON. Может там какие то вызовы есть.
Там есть алгоритм определения процессора (основанный на частичном анализе того что уже определил загрузчик RT-11), но он не определяет процессоры ВМ1-ВМ2-ВМ3. Есть лучший алгоритм из автоконфигуратора RSX. Но он разумеется тоже про ВМ ничего не знает. В том и цель - хочу определитель написать с учетом советских вариантов там где отличить можно. Как отличить ВМ3 известно.
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]
form, Хорошо, тогда Фодос уже должен определять процессоры.
Увы, он всего лишь заменяет буржуйские названия на советские и ничего больше.
---------- 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]
.
Тест Эл.85
(захват с видеокарты)
Тест ВМ3Теперь понятны отличия выполнения нестандартных делений процессорами 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 (http://zx-pk.ru/showpost.php?p=749151&postcount=981) на ВМ3 и других машинах. Интересует последняя страница теста, где тест команды MARK.
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot