PDA

Просмотр полной версии : Помощь с разбором прошивки клона 1201.02



SaTaN5076
12.02.2022, 11:44
Здравствуйте. Есть плата - промышленный клон Э60+ОЗУ+ПЗУ. Вот такая - http://chpu.ru/images/D60.jpg (фото с сайта производителя)

соответственно, прошивка в ней - прошивка платы 1201.02, плюс матобеспечение станка ЧПУ, для которого эта плата изготовлена (в моем случае - система 2Р22).
Считал я эту прошивку, пытаюсь разбирать в IDA PRO с плагином от товарища yu.zxpk. Прошу помочь разобраться. Раньше дизассемблированием программ под 1801ВМ2 я не занимался. Ну так вот. Почему-то большинство значений, записываемых в РОНы у меня идут с "$" перед числом. Например, mov $0, R1. Почему так? Смотрю чистый код - вижу там 012701 000000, а в книге по 1801 написано, что должно быть 012731 000000. Почему так?

Очень интересно разобраться с алгоритмами работы ЧПУ, может кто найдет время помочь? Так же неясно, с каких адресов какие участки кода располагать. В данной версии участок 173000 находится в ОЗУ. Прилагаю прошивку, документацию на плату и экселевский файл с memorymap.
77001
77002
77003

SuperMax
12.02.2022, 12:38
Здравствуйте. Есть плата - промышленный клон Э60+ОЗУ+ПЗУ. Вот такая - http://chpu.ru/images/D60.jpg (фото с сайта производителя)

соответственно, прошивка в ней - прошивка платы 1201.02, плюс матобеспечение станка ЧПУ, для которого эта плата изготовлена (в моем случае - система 2Р22).
Считал я эту прошивку, пытаюсь разбирать в IDA PRO с плагином от товарища yu.zxpk. Прошу помочь разобраться. Раньше дизассемблированием программ под 1801ВМ2 я не занимался. Ну так вот. Почему-то большинство значений, записываемых в РОНы у меня идут с "$" перед числом. Например, mov $0, R1. Почему так? Смотрю чистый код - вижу там 012701 000000, а в книге по 1801 написано, что должно быть 012731 000000. Почему так?


012701 000000 это MOV #0,R1

я дизассемблировал чистым IDA PRO 5.xx
а вообще лучше взять что-то нативное под БК или ДВК

SaTaN5076
12.02.2022, 13:25
я дизассемблировал чистым IDA PRO 5.xx

Попробовал в IDA 5.0, совсем другой результат, гораздо лучше. Спасибо за наводку!

svinka
12.02.2022, 18:49
У меня есть такая. Но немного отличается печатная плата. на ПЗУ надписи выполнены на принтере и отличаются
Зато в родной коробке с книжкой где есть схема
Плата называется КВАРЦ-60.1

xolod
12.02.2022, 19:11
А в какую ее корзину нужно вставлять?

SaTaN5076
12.02.2022, 19:32
У меня есть такая. Но немного отличается печатная плата. на ПЗУ надписи выполнены на принтере и отличаются

У меня плата Д60.2 называется. Сайт производитель - chpu.ru, г. Новосибирск. А ПЗУ во-первых, без наклеек вообще, а во-вторых, разных фирм..Ну да это к делу не относится)

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


А в какую ее корзину нужно вставлять?

В стойках ЧПУ 2Р22 и 2С42-65, где используется эта плата, изначально конфигурация такая - На дверце шкафа висит козина Э-60. Изначально 1201.02, а также ОЗУ и плата интерфейса со станком стоят тут. В станке стоит огромная двухэтажная корзина, в которой стоит ПЗУ матобеспечения станка, блоки умножения, преобразования кодов, ЦАПы, АЦП, 4 платы связи с БОСИ (блок отображения символьной информации), платы ввода и вывода, КНМЛ, перфоратора и ФСУ, клавиатуры и прочее. Вот эта плата вставляется в эту огромную корзину. Конкретно в моем случае станок был модернизирован и двухэтажная корзина заменена на одноэтажную. Помимо обсуждаемой здесь платы ПРЦ, стоит ещё одна модернизированная плата, которая собой ещё десяток плат заменяет..Ниже фото моей корзины, сорри, что такие неудачные, какие есть..

https://pic.maxiol.com/images2/1644683024.1522300809.img202201251143023.jpg
https://pic.maxiol.com/images2/1644683088.1522300809.img202201251143065.jpg
https://pic.maxiol.com/images2/1644683120.1522300809.img202201251143110.jpg

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


У меня есть такая.

А у вас от какой ЧПУ? 2Р22 или 2С42-65?

yu.zxpk
12.02.2022, 21:49
`012731 000000` - это `MOV #0, @(R1)+`

В моей случае плагин работает корректно в IDA 7.
Можно попросить скрин того, где "работает не так"?

SaTaN5076
13.02.2022, 05:48
В моей случае плагин работает корректно в IDA 7.
Можно попросить скрин того, где "работает не так"?

Здравствуйте. Да, конечно. Ниже скрины. почти перед всеми числами ставит $. Хрен бы с ним, но этот $ нельзя привести, например, к двоичному виду..И на втором скрине - периодически ошибка вываливается такая.

https://pic.maxiol.com/images2/1644720429.1522300809.screen1.jpg
https://pic.maxiol.com/images2/1644720453.1522300809.screenerror.jpg

CodeMaster
13.02.2022, 06:47
Есть плата - промышленный клон Э60+ОЗУ+ПЗУ.
А если переразвести краевой разъём по стандартную корзину QBus она будет полностью повторять функционал 1201.02? Если можно считать прошивку ПЛИС, то я так понимаю получается легкий для повтрения клон на двухсторонней плате?

svinka
13.02.2022, 07:17
А у вас от какой ЧПУ? 2Р22 или 2С42-65?

В документации написано 2Р22 2С42-65 и 2С42-61


на пзу написано ПМО 0001-03 ГФ

gid
13.02.2022, 09:35
где "работает не так"?

почти перед всеми числами ставит $.
Да, в плагине с непонятной целью заменили # на $, получилась как бы bsdшная нотация ассемблера, которая в PDPшном юниксе стала использоваться, но при этом мнемоники остались старые (в юниксе условные переходы записывали так: jgt, jne, jcc и т.п. ), получилось ни то ни сё.

SaTaN5076
13.02.2022, 12:39
А если переразвести краевой разъём по стандартную корзину QBus она будет полностью повторять функционал 1201.02? Если можно считать прошивку ПЛИС, то я так понимаю получается легкий для повтрения клон на двухсторонней плате?
Завтра сфоткаю плату (на работе лежит) - переходник с QBUS на вот эту корзину. AlteraBlaster у меня есть, jtag впаять могу, но вероятность того, что ПЛИСина не залочена стремится к нулю. Это же коммерческий продукт..Ну и функционал 1201.02 она и так повторяет, но вот в этой прошивке я не увидел кусков, похожих на 055 стандартную прошивку от 1201.02..Потому и предлагаю глянуть более опытным. Описание платы в аттаче к первому сообщению.

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


на пзу написано ПМО 0001-03 ГФ
Может, выложите? У меня наверняка другая версия..

CodeMaster
13.02.2022, 15:11
Завтра сфоткаю плату (на работе лежит) - переходник с QBUS на вот эту корзину.
Даже так?


но вероятность того, что ПЛИСина не залочена стремится к нулю. Это же коммерческий продукт.
Та я понимаю, но вдруг ;-) Иногда коммерция не в железе/софте, а в поддержке. Но, в данном случае такая вероятность минимальна.

SaTaN5076
13.02.2022, 16:21
Ещё вопрос - команды ассемблера смотрю тут - http://www.asvcorp.ru/darch/electronics/1801vm1/opcodes.html
в IDA встречаются команды как с буквой b, так и без неё. Например, tst и tstb, mov и movb. В чем тут разница?
Также, вижу команды типа bic #-200, R0. Как может быть отрицательной битовая маска? Вообще много отрицательных чисел вижу...

upd: С буквой b разобрался.

Посоветуйте книжку/методичку по 1801ВМ2....

Hunta
13.02.2022, 17:16
Как может быть отрицательной битовая маска
Легко. В данном случае - неучёт контекста использования числа

Sandro
13.02.2022, 17:43
Также, вижу команды типа bic #-200, R0. Как может быть отрицательной битовая маска? Вообще много отрицательных чисел вижу...


Потому, что так удобнее на самом деле. При ограниченном наборе команд. А им же надо было в несколько бит запихать все нужные операции!
Кроме того, кстати, в отличие от AND, BIC (при разрешённых константах) полна по Тьюрингу. Что позволяет, например, сделать на ней XOR, которого в ранних PDP-11 не было в виде команды.

Hunta
13.02.2022, 18:38
Потому, что так удобнее на самом деле.
Удобней и наглядней в данном случае будет #^C<177>

yu.zxpk
13.02.2022, 20:05
У меня # перед константой. Вот как на скрине
77009

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

По NULL - да, непонятно. Можно временно поменять на 0 в тех местах, где вылетает.

По синтаксису ассемблера: оно выставлятся где-то в опицях.
Вот обработка в Python коде в ф-и notify_set_idp_options():

https://github.com/yshestakov/ida_proc_1801/blob/d0aeec29f41af4834d32bde03c6f312af5210288/procs/k1801vm1.py#L923

И еще ниже в коде на строке 725 по-умолчанию выставляется macro11_assembler, а не bsd_assembler

725 assembler = macro11_assembler
726 # assembler = bsd_assembler

SaTaN5076
14.02.2022, 05:00
Даже так?

Ниже фото..Называется "Субблок SB-473" Нужно добыть ещё одну такую и можно экспериментировать)

https://pic.maxiol.com/images2/1644803192.3285230150.qbus.jpg
https://pic.maxiol.com/images2/1644803416.3285230150.qbus2.jpg


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


Легко. В данном случае - неучёт контекста использования числа

А можно для невъезжающих - какой будет результат выполнения команды bic #-200, R0, если в R0 0b1010101011110000

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


Та я понимаю, но вдруг ;-) Иногда коммерция не в железе/софте, а в поддержке. Но, в данном случае такая вероятность минимальна.

Я попробую, но срочность не обещаю..Вылезла проблема с USB Blasterом - мне новый комп на работе поставили, с 10кой..Как только я подключаю бластер - 10ка валится в BSOD. Пока нет решения..Пробовал разные драйвера, не помогает. Накатил убунту, но в её ядре нет поддержки моей сетевухи - realtek 8125, надо более новое качать..

Hunta
14.02.2022, 07:30
если в R0 0b1010101011110000
В R0 будет ^b<1110000>

SaTaN5076
14.02.2022, 07:53
В R0 будет ^b<1110000>

т.е. в младшей части все работает, как будто минуса нет, а старшая полностью обнуляется?

Hunta
14.02.2022, 08:02
то есть выполняется побитово операция (not Первый операнд) and (Второй операнд) и результат заносится на место Второго операнда

SaTaN5076
14.02.2022, 09:11
то есть выполняется побитово операция (not Первый операнд) and (Второй операнд) и результат заносится на место Второго операнда

Спасибо! Дошло..

Hunta
14.02.2022, 09:35
Спасибо! Дошло
Ну и главное - нужно помнить, что внутри проца это всё - просто набор бит (которые объединены в байты и слова), как конкретный набор бит должен интепретироваться - зависит от контекста, а как он будет визуализироваться для человека - в большинсте случаев роли (для команды) вообще не играет. Та же константа маски в той команде - это 1 111 111 100 000 000, но её (для удобства) можно записать как ^O<177600> или ^C<^O<177>>, а если интепретировать как число со знаком, то ^O<-200>, но всё это - те же самые 1 111 111 100 000 000 биты

SaTaN5076
17.03.2022, 04:48
Собрал корзину из 4х разъемов, удалось запустить систему

https://pic.maxiol.com/images2/1647481588.3285230150.222.jpg

Теперь надо приколхозить клавиатуру..