Вход

Просмотр полной версии : DisAsm-11



Страницы : 1 [2]

Hunta
19.04.2025, 00:20
Для образов системы некоторое количество неточностей и ошибок исправлено. Ещё тесты - на других образах и .TSK файлах

Hunta
19.04.2025, 14:27
При разборе полётов в образе P/OS обнаружился забавный нюанс оной. Даже в поставке для разработчиков из файла глобальных символов (может, конечно, мне с конкретной поставкой так свезло) ака .STB - отсутствуют символы для слов масок фич 2, 3, 4 и 5. Почему так - могу только предположить, но выглядит так, как будто DEC старательно тормозило сторонних разработчиков всякого, имеющего доступ к ядру системы. Потом гляну на другие варианты P/OS, для которых так же есть .STB - как оно там.

Hunta
20.04.2025, 19:55
Уф.. Что-то задолбался руками тесты прогонять (большая часть из которых - загрузить файл и сгенерить исходники. Надо посмотреть, что там сломалось в работе из командной строки при очередной доработке и пофиксить

Hunta
21.04.2025, 21:30
Вспомнил, что сломалось в разборке командной строки :) Стали по другому (доработка в плане избавления части DisAsm от PDP-11 зависимости) передаваться некоторые параметры в методы парсинга. По быстрому сделал фикс под образы RSX, так что теперь тесты можно гонять командниками.

Очередная порция обнаруженных ошибок и не доработок пофиксина. Но всё ещё тесты..

Hunta
30.04.2025, 14:14
Устал от DisAsm-а :) И по взаимосвязанным секциям пока ничего путного в голову не приходит - значит - перерыв.

Начал разбирать файлопомойку и как обычно - постоянно используемый инструмент - ImageUtils :) Налетел на ошибки - и переключился на него. Дальше в его теме :)

vva
30.04.2025, 20:59
Начал разбирать файлопомойку
Что нибудь интересное нашли?

Hunta
30.04.2025, 21:50
Она до какой-то степени разобрана, но есть большой каталог, где пока конь не валялся - а там есть и относящееся к DEC, но есть ли что-то интересное - пока не знаю..

Кроме того - много образов дисков и лент, до которых я ещё не добрался ImageUtils - в их содержимом тоже может быть что-то интересеное...

Плюс есть некоторое количество зеркал (полный и не очень) сайтов - та же хрень :)

Hunta
27.07.2025, 23:59
Для возможности использовать функционал DisAsm11 в других программах (типа - API) - внутренняя перетряска и резка зависимостей. Не могу сказать, что уже все сделано - но ещё некоторое количество подвижек.

Использовал функционал в ImageUtilsX для дизасма (пока) первичного загрузчика дисков RT-11 :)

Но свободное время закончилось, опять рабочие дни..

Hunta
28.07.2025, 10:43
Как обычно после более-менее существенной доработки, а часто и без неё - некоторый рефакторинг по результатам понимания процесса и написанного кода :)

Hunta
30.07.2025, 23:14
Вожусь с внутренней перетряской DisAsm11 (более правильный вариант работы с WPF - шаблон MVVM). Да, надо было с самого начала делать "по правильному", но.. Некоторые вещи не понятно было как сделать в WPF - и сделал, как получилось :) Постепенно набрался опыта - и много из непонятного стало понятным :) Но... Снаружи это не как не видно, это больше вариант - как сделать проще написание, в том числе - DisAsm11 :)

Так вот.. Возился я, возился, и вдруг пришло в голову странное :) Попробовал.. хм.. Работает :) Итак, вниманию всех представляется...

Метка на .TITLE :)




Test MACRO V05.06R Thursday 31-Jul-25 00:04 Page 1


1 000000 TEST: .TITLE Test
2 .IDENT /KXX.01/
3
4 .MCALL .EXIT, .PRINT
5
6 000044 $JSW =: <^o44>
7 000400 CHAIN$ =: <^o400>
8
9 000054 $SYPTR =: <^o54>
10
11 000300 CONFIG =: <^o300>
12 000040 CLK50$ =: <^o40>
13 100000 CLOCK$ =: <^o100000>
14
15 000000 .ASECT
16
17 000044 .=$JSW
18 000044 000400 .WORD CHAIN$
19
20 000500 .=^O<500>
21
22 000500 START:
23 000500 012737 000100 000004 MOV #100, @#4
24 000506 012737 000340 000006 MOV #340, @#6
25
26 000514 013705 000054 MOV @#$SYPTR, R5 ;Get the pointer to the base of the RMON
27 000520 052765 100040 000300 BIS #CLOCK$!CLK50$, CONFIG(R5)
28 000526 010701 MOV PC, R1
29 000530 062701 000020 ADD #MESS-., R1
30 000534 .PRINT R1
31 000540 .PRINT #MESS-.
32
33 000546 .EXIT
34 000550 MESS:
35 000550 124 105 123 .ASCIZ /TEST/
000553 124 000
36 .EVEN
37
38 000500 .END START
Test MACRO V05.06R Thursday 31-Jul-25 00:04 Page 1-1
Symbol table

CHAIN$ 000400 CLOCK$ 100000 MESS 000550 TEST 000000R $SYPTR 000054
CLK50$ 000040 CONFIG 000300 START 000500 $JSW 000044 ...V1 = 000003


. ABS. 000556 000 (RW,I,GBL,ABS,OVR)
000000 001 (RW,I,LCL,REL,CON)
Errors detected: 0

*** Assembler statistics


Work file reads: 0
Work file writes: 0
Size of work file: 10565 Words ( 42 Pages)
Size of core pool: 16128 Words ( 63 Pages)
Operating system: RT-11

Elapsed time: 00:00:00.01
DK:TEST,DK:TEST=DK:TEST


Если посмотреть таблицу символов, видно, что метка TEST - относительная и - раз ни какой секции ещё на было заявлено - она в секции .PSECT :)

НА вопрос - нафига такое нужно - у меня ответа (возможно пока) - нет :)

Hunta
31.07.2025, 09:56
В общем, попытка переделки внутренностей DisAsm11 выявила некоторые внутренние проблемы. Не серьёзные, но всё же :)

Hunta
11.09.2025, 14:02
Первый этап внутренних переделок (механизма визуализации и приёма команд) близок к завершению - вроде осталось только восстановить работку кнопок (и скорее всего и шоткатов). Основная переделка будет на втором этапе - кнопки зависят от типа процессора, сделаю так, что бы их количество и предназначения не были жестко зашиты в часть, относящуюся к визуализации и интерфейсу пользователя.

Как проверка концепции - будет добавлена (ограниченная) поддержка ещё процессоров. Желательно, что бы один был одно- и нуль-операндным, а второй - трех-, двух-, одно- и нуль операдным. Под операндами понимаются не регистры, а ссылки какого-либо вида на ячейки памяти.

Хотелось бы ещё и нуль-операндого, но что я такого вообще не припоминаю..

Одно-операндный - вроде пойдёт 580-ый, а трёх-операндным может быть VAX, но надо проверить - точно ли у него все ли три операнда могут быть НЕ регистрами :)

Hunta
13.09.2025, 23:07
Первый этап завершён. По крайне мере на текущий момент - проблем не заметил. И автоматические тесты дали идентичный результат.

Теперь оценка того, что наворатил :)

Дальше этап два - выпиливание жестко прибитых к визуальному интерфейсу кнопок - они будут создаваться по описанию команд, доступных в модуле собственно дизасма

Ну и ещё один функционал, который нужно будет доделать - сохранение-восстановление сеанса. Хотя тут, скорее всего, особых проблем не будет

Hunta
14.09.2025, 11:04
По результатам ночного бдения нашёл один... косячок :) Не смертельный, но - неприятный. Плюс начал дизасмить одну программу, а поскольку до сохранения сеанса ещё не добрался и не проверил - прерывать сильно не хотелось :) Так что воспользовался VS и поменял программу прямо в отладчике :)

Ну а затем нашёл ещё один косяк - неправильно выставился статус на ячейке, что она - второй операнд команды. Этот косяк уже хуже - попробую так же пофиксить, не выходя из программы - под отладчиком :)

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

Хм.. Странно, что на этот косяк не налетел раньше. Но, правда, сценарий специфический, что бы он сработал :) Поправил.

Hunta
14.09.2025, 20:08
Ещё один не критичный косячок найден и прямо в отладке, не прерывая работу с DisAsm, пофиксин :)

Hunta
17.09.2025, 13:43
Когда активно начинаешь работать с программой - начинаешь понимать - чего не хватает :) В планах

- упростить добавление/изменение комментария, думаю, можно будет использовать - Ctrl/V для заполнения комментария
- слегка изменю работу с блочными комментариями - теперь кнопка двоеточия (начать редактировать комментарий ячейки памяти) будет работать и как - начать редактирование блочного комментария, если стоим на нём, а alt+двоеточие - теперь всегда будет - добавить блочный комментарий перед текущей ячейков (сейчас - редактировать блочный комментарий если стоим на нём, иначе - добавить блочный комментарий)
- думаю над возможностью добавления не только блочных комментариев (сейчас - единственное что можно добавить), но и над добавлением операторов условной трансляции (.IF, .IFT, .IFF, .IFTF, .ENDC) - сильно понадобилось при восстановлении исходников F11ACP, пока приходится вставлять просто как блочные комментарии. Но надо продумать - как будут вставляться и как будут использоваться самим DisAsm-ом
- так же думаю над возможностью добавления именованных констант с возможностью ссылки на них из команд PDP-11 - примерно как это делается в MACRO-11 - а то всякие смещения в блоках данных, которые обычно делаются через константы (типа I.IOSB(R5)) - показываются числами - и приходится в комментах добавлять именованный вариант

Два последних пункта требуют ешё обдумывания - как это сделать в визуализирующей части независимым от вида процессора (типа - открыли что-то PDP-шное - доступно, открыли не-PDP-шное - может быть и не доступным или доступным в другом виде)

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

Вдогонку.
- При условной трансляции ещё бывает требуется, что бы метка была на отдельной строке. В DisAsm она пока всегда связана с ячейкой памяти. Так что возможно будет добавка не только операторов условной трансляции, но и "самостоятельных" меток :) Тоже подумать - как правильней реализовать - учитывая, что идея DisAsm ни в каком виде не предполагает добавления, редактирования или удаления ячеек памяти - визуализация основывается исключительно на аттрибутах, выставленных автоматом при анализе или вручную.

Hunta
17.09.2025, 19:51
Ещё вдогонку
- Ещё наткнулся на сценарий, где нужна отдельная "самостоятельная метка" - когда метка маркирует первый байт после какой-то области (что-то типа - конец буфера). Но это вариант - метка-после, в отличии от предыдущего варианта метка-перед.

Hunta
23.09.2025, 19:36
Изменения комментария (в том числе блочного) по Ctrl/V - да
Вставка блочного комментария - до и после ячейки - по Insert и Alt/Insert - да
Редактирование и блочного комментария по ":" - да

Hunta
25.09.2025, 09:59
Для файла-библиотеки системы DOS-11 в своё время добавил возможность "распилить" библиотеку на отдельные модули. Теперь сделал механизм "распила" до какой-то степени штатным - то есть если формат файла подразумевает, что он состоит из отдельных частей, то (при соотвествующей поддержке в коде) - его так же можно будет "распилить" на части. Прицел сделан на образ систем RSX-11, но пока функционал в отработке нюансов.

Но образ P/Os уже как-то распилился :) Прицел - продолжение работы по восстановлению исходников F11ACP из него :)

Hunta
28.09.2025, 13:55
Битва за восстановление функционала - сохранение-восстановление сеанса работы.
В целом - вроде восстановил (хотя ещё надо потестировать не только на образе P/Os)
Основная битва была за восстановление текущего оверлея, содержимого окон дизасма и положения в них
Немного потестирую на других вариантах файлов и, скорее всего, вернусь к восстановлению исходников F11ACP P/Os

Hunta
28.09.2025, 22:53
Погонял на других типах файлов. В целом - основной функционал - ок. Некоторое количество (порядка 4-ых) ошибок из-за неучтённых сценариев и доработка парсера CIL - я с ним прервалася до того, как реализовал полноценный вариант ссылок на ячейки памяти ЗА пределами модуля, включая оверлеи.

Остальные идеи (из нереализованного в https://zx-pk.ru/threads/32983-disasm-11.html?p=1218411&viewfull=1#post1218411) - нужно обдумывание, так что - не сейчас. Пока меня больше интересуют исходники P/Os :)

Hunta
04.10.2025, 17:26
Не сдержался :)

Пока ОЧЕНЬ концепт (http://www.kpxx.ru/Soft/Utils/DisAsm11/DisAsm11-098.jpg)

И делалось для проверки-выявления-оценки зависимостей ядра DisAsm от PDP-11.
Вариант загрузки образа ПЗУ и визуализация в виде .BYTE xxx занял примерно три вечера по полтора-два часа и часа два сегодня. Плюс ещё примерно полчаса-час на добавление двух инстркций :)

Предварительная оценка - выявленных зависимостей - очень мало, кое что уже пофиксино, но основная зависимостей - набор команд (и кнопок). Над чем неспешно и буду работать.

Периодически буду продолжать работу по добавлению очередной порции инструкций, но есть некоторая проблема - на языке ассемблера не программировал, так что параллельно предстоит разборка с его архитектурой, командами, режимами адресации и ассемблером Macro-32 :) Так что ожидать скорого появления такого же функционала, как для PDP-11 - не стоит.

Ну и из готового - автогенерация меток для ссылок, показ списка ссылок, .ASCIZ ... :)

Hunta
05.10.2025, 10:22
Основная проблема декодера команд (ну по крайне мере для меня сейчас) - менее предсказуемая длина команды - её, как правило, нельзя оценить по первому байту команды. В отличии от PDP-11, где по первому слову команды сразу ясно - 1, 2 или 3 слова. Поэтому подход, который был использован для PDP-11 - менее применим..

Hunta
06.10.2025, 00:07
Расписал заготовки для всех (ну, по крайне мере по EK-VAXAR-RM-001) команд VAX-11

Hunta
06.10.2025, 10:39
Пытаюсь разобраться с методами адресации (точнее - с некоторыми вариантами) - всю голову уже сломал.. Пока много не понятного.. Э.. Точнее - много вопросов без ответов.. Надо сделать стенд с VMS, что бы Macro32 подсказывал..

Alex
06.10.2025, 10:52
Там на некоторых моделях VAX можно дополнительные команды вводить, если очень надо(с ограничениями конечно), через микропрограмму, но, чтобы это кто-то на практике применял, я упоминаний не видел.

Hunta
06.10.2025, 12:46
Там на некоторых моделях VAX можно дополнительные команды вводить
Это не только на VAX-ах, такоe возможно как минимум на LSI-11 (который 581-ый), на PDP-11/40 (вариант -11/40E), и из того, что память подсказывает - вроде было ещё на -11/44 и -11/60

shattered
06.10.2025, 22:06
кстати о LSI-11 (processor handbook)

opcode 00021R читает внутренние регистры микрокода
opcode 000220 делает переход на микроадрес 3000, или trap to 10, если его не существует

Alex
07.10.2025, 11:24
Способность интересная, но ни одного упоминания применения на LSI-11 и PDP-11 не слышал :( В теории реально.
Про VAX было упоминание, вычисления каких-то хитрых полиномов посредством добавочных команд... Но как именно это реализовано не говорилось. Даже не говорилось кто этим занимался.

Hunta
07.10.2025, 14:21
ни одного упоминания применения на LSI-11 и PDP-11 не слышал
Попадалось. И где-то вроде даже примеры - как сделать - валяются.
От DEC есть доки, хрень называется Writable Control Store (WCS), но есссвенно - оно разное для LSI-11 и VAX-ов

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

О, даже нашёл :)


;THIS IS AN LSI-11 MICRO CODE SUBROUTINE
;TO MOVE A BLOCK OF MEMORY FROM ONE PLACE TO SOME PLACE
;ELSE.
; THIS ROUTINE ILLUSTRATES...
; 1) HOW A LONG RUNNING MICROCODE SUBROUTINE ENSURES THAT
; PENDING INTERRUPTS GET SERVICED IN A TIMELY FASHION.
; THE INPUT PARAMETERS ARE
; R0:SOURCE ADDRESS
; R1:DESTINATION ADDRESS
; R2:NR. OF WORDS TO BE MOVED
LOC 3000
JMP 0
JMP MOV
JMP 0
ERROR: JMP 0
LOC 3004 ;UNNECESSARY,JUST FOR CLARITY.
;AN INTERRUPT HAS OCCURRED. MUST SUSPEND THIS OPERATION
;IN SUCH A WAY AS TO ALLOW THE OPERATION TO BE RESUMED RATHER
;THAN RESTARTED AFTER THE INTERRUPT HAS BEEN PROCESSED
;TO ACCOMPLISH THIS IT IS NECESSARY TO UPDATE THE INPUT PARAMETERS
;AND BACK UP THE BASE MACHINE PROGRAM COUNTER, THEN EXIT
;MICROCODE. IN THIS WAY THE INTERRUPT WILL BE PROCESSED, AND
;THE NEXT INSTRUCTION FETCH WILL AGAIN EXECUTE THE 076000 INSTRUCTION
;ONLY NOW WITH UPDATED VALUES IN THE SOURCE, DESTINATION, AND SIZE
;PARAMETERS
LL 0,RIRH ;UPDATE LSI-11 R0 TO POINT TO
LGL RIRH ; NEXT SOURCE WORD
MW RSRC,G
LL 1,RIRH ;UPDATE LSI-11 R1 TO POINT TO
LGL RIRH ; NEXT DESTINATION WORD
MW RDST,G
AL 376,PCL,RSVC ;DECREMENT BASE MACHINE PC BY TWO
CDB PCH ;AND EXIT MICROCODE
;PROCESS THE BLOCK MOVE INSTRUCTION
MOV: CL 175,RIRL ;LEGAL INSTRUCTION?
JZBF ERROR
AL 100,RIRH ;IF LEGAL C8=1
JC8F ERROR
LL 0,RIRH ;COPY CONTENTS OF LSI-11 R0
LGL RIRH ; INTO MICRO-REG RSRC
MW G,RSRC ;GET SOURCE BLOCK ADDR
LL 1,RIRH ;COPY CONTENTS OF LSI-11 R1
LGL RIRH ; INTO MICRO-REG RDST
MW G,RDST ;GET DEST BLOCK ADDR
;FROM THIS POINT ON
LL 2,RIRH ;MICRO REG G WILL ALWAYS POINT TO
LGL RIRH ; LSI-11 REG R2 (WORD COUNT REG)
TW G,G ;IS THE WORD COUNT REG (R2) = 0?
JZBT EXIT
LOOP: RIW2 RSRCH,RSRCL ;PUT SOURCE ADDR. ON DATA ACCESS LINES.
;(ALSO BUMPING SOURCE ADDR POINTER).
DW1F G,G ;TAKE ADVANTAGE OF IDLE TIME TO UPDATE
;CONTENTS OF LSI-11 R2
IW ,RBA ;COPY SOURCE OPERAND INTO SCRATCH
WIW2 RDSTH,RDSTL ;THEN MOVE WORD BACK OUT TO DEST
OW RBAH,RBAL ; BLOCK ALSO BUMPING DEST ADDR
SI I6 ;THIS FLAG ALTERS THE INTERRUPT DECISION CHAIN
;SUCH THAT AFTER THE EXECUTION
;OF A MICRO CODE RSVC, CONTROL
;WILL BE RETURNED TO THE MICROCODE
;IN ONE OF TWO WAYS. IF AN INTERRUPT
;IS PENDING CONTROL WILL GO
;TO MICRO LOCATION 3004. IF NO
;INTERRUPTS PENDING CONTROL WILL
;GO TO THE INSTRUCTION FOLLOWING
;THE RI INSTRUCTION.
NOP RSVC ;EXIT TO SERVICE ANY INTERRUPT
RI I6 ;RESET FLAG
;CONTROL RETURNS HERE IF NO
;INTERRUPT.
JZF LOOP ;IF ANY MORE WORDS, MOVE THEM.
EXIT: NOP RSVC ; ELSE, RETURN TO BASE MACHINE
NOP
.END


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



.TITLE MICRO ASSEMBLER
.SBTTL YET TO BE IMPLEMENTED FEATURES

Hunta
08.10.2025, 23:21
Подход к декодированию команд и операндов для VAX сильно отличается от того, как я сделал для PDP-11.

Отработал на CMPB, а потом в лоб добавил MOVB (http://www.kpxx.ru/Soft/Utils/DisAsm11/DisAsm11-099.jpg)

С MOVB повезло - те же режимы адресации :)

Помимо кнопки Код проверил (более менее) кнопку Сброс

Hunta
10.10.2025, 00:10
Понемногу движение вперёд (http://www.kpxx.ru/Soft/Utils/DisAsm11/DisAsm11-100.jpg)
Часть функционала достаётся почти даром - как результат доработок для PDP-11, но встречаются и свои трудности. Одна из них - БОЛЬШОЕ адресное пространство. Поэтому некоторые решения, прокатывающие для PDP-11 - не подходят для VAX-11..

Команды процессора добавляются по принципе - та, накоторый дизасм остановился :)

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

Надо найти листинг побольше.. А то описание в документации - так себе - не очень много примеров синтаксиса.. приходится гадать - насколько правильно генерируются команды...

Hunta
11.10.2025, 14:09
Уф... Я ошибся - у VAX-а может быть до 6 операндов:v2_dizzy_facepalm:
Но DisAsm-у всё равно - сколько операндов - окна операндов он создаёт динамически - количество указывается в описании соотвествующего объекта.

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

В общем, на текущий момент все однобайтные инструкции для декодирования описаны, но

- один режим адресации (индексный) пока не реализован - надо подумать, как его вписать в модель аттрибутов инструкции.
- инструкция CASE - отдельный прикол - после неё может идти МНОГО описания смещений - как с ними работать - надо подумать, но скорее всего будет ручной вариант
- у инструкции EDITPC один из аргументов - ссылка на таблицу описания комманд-аттрибутов - которую тоже можно распарсить, но пока не.
- результат дисзасм пока никак не проверить
- может, что-то ещё

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

А, да, оказывается для VAX-ов ещё делалось векторное расширение :) До него тоже пока - не :)

Hunta
11.10.2025, 21:38
Индексный режим вроде тоже ожил. Зачистка огрехов. Ну и в отличии от PDP-11, где я программу понимаю в лёт, тутова не всё так простова...

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

Ещё движение вперёд (http://www.kpxx.ru/Soft/Utils/DisAsm11/DisAsm11-101.jpg)

Теперь надо придумать способ, как всё это проверить..

Hunta
12.10.2025, 16:08
В общем, ещё некоторое время погоняю дизасм для VAX-ов на предмет ошибок, а так же, по возможности, поудаляю из визуализации зависимости от PDP-11 и VAX и на этом, наверное, с дизасмом для VAX-11 всё. Попробую так же поискать исходники ПЗУ начальной загрузки - вдруг получится найти под какую-то модель - тогда можно будет оценить точность дизасма. Так надо подумать над созданием стенда (на simh), что бы как никак, но можно было транслировать-собирать и проверять качество дизасма. Собственно - то, что я делал для PDP-11, но там всё прощё было - опыт, как никак, присутствовал..

Hunta
13.10.2025, 10:31
В общем, листинг, более менее совпадающий с двоичным файлом - нашёлся, так что есть на чём проверить. Чем и буду заниматься - ошибки в дизасме точно есть, уже убедился..

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

В декодере команд нашлась существенная ошибка. Она влияет на небольшое количество команд, но часть из них связана с переходом на другие команды - а вот это уже влияет на процесс дизасма весьма существенно. Как поправить - уже понятно, но.. придётся изменять описание команд для декодировщика. Порядка 250 штук :) То есть долго и нудно. И из-за нудности - риск ошибиться.. Порядка 77 уже поправил (с ними было легче), надеюсь - без ошибок :)

Hunta
14.10.2025, 09:58
Поправил ошибку, связанную с описанием длины операндов (см. пред сообщние) - в описании команд и в декодере. Вроде теперь всё выглядит норм и даже начинает совпадать с листингом.

Как обычно - опять проверки. Визуальные и на совпадение с листингом. Плюс доработка команд и отвязка зависимостей визуализирющей части от PDP-11 и VAX-11

И ещё немного вперёд... (http://www.kpxx.ru/Soft/Utils/DisAsm11/DisAsm11-102.jpg)

xolod
14.10.2025, 13:51
Привет, попробуй вот это тут совсем мало, но хоть что-то.
https://zx-pk.ru/threads/35186-tsp-m10-kvi-ms0107-(microvax-ii).html?p=1183057&viewfull=1#post1183057

Hunta
14.10.2025, 13:57
попробуй вот это
Привет, Саш! Ты имеешь ввиду - попробовать дезассемблировать твою программу чтения ПЗУ?

xolod
14.10.2025, 14:31
Да

Hunta
14.10.2025, 15:11
Да
Да, неплохой вариант :) Вечером попробую :) Спасибо!

Hunta
14.10.2025, 20:03
попробуй вот это тут совсем мало
Проверяй :)
Исходник (http://www.kpxx.ru/Soft/Utils/DisAsm11/VAX-ROM-READ.MAR.txt)
И листинг... (http://www.kpxx.ru/Soft/Utils/DisAsm11/VAX-ROM-READ.LIS.txt)

BlaireCas
19.10.2025, 15:37
А нельзя-ли программу сделать не RequestWare а там ну не знаю даже ShareWare шаровары одним словом. Чтобы можно было вот зайти в первую страницу - увидеть ссылку "скачать".
Пофигу там рабочий не рабочий вариант (специально написать мол софт всегда в разработке, матюками крыть меня не надо). :)
Но чтобы его одним словом сразу можно было скачать. Софт хороший я юзал древнюю версию какую-то и вполне даже помогала.

Hunta
19.10.2025, 20:38
сразу можно было скачать.
Есть такое в мыслях. Но точно не раньше, чем DisAsm будет разделён на части. Визуализирующую и дизассемблирующую.

Это, в частности, позволит решить проблему сеансов - сейчас сеанс, созданный в одной "версии" программы - с большой вероятностью не загрузиться в более новой. Когда то думал над написанием конвертеров (из более старой в более новую версию), но.. там конвертеры получались больше самой программы.

После распила будет .exe-шник, который собственно будет визуализировать, ну и некоторые сервисные функции выполнять (типа открыть файл, сохранить сеанс, сгенерировать разное) и dll, которая будет дизасмить и выполнять всякие команды типа - пометить ячейку как Ascii или ещё как-то. Вот эти dll можно сделать версионными и тогда сеанс будет подгружаться и отправляться в работу в нужную версию dll. Коих может быть сколько угодно. Не только на разные процы, но и разные версии под один проц.

Чем, по большей части, я сейчас и занимаюсь. В частности, за выходные получилось так:

То, что выделено - пока ещё жестко зашито (подумать надо, как отвязать) (http://www.kpxx.ru/Soft/Utils/DisAsm11/DisAsm11-103.jpg)

Остальное (ну кроме самой первой линии с кнопками типа Открыть, Сохранить, Сгенерировать) - генерируется по всякой информации из модулей дизасма, коих сейчас два.
Кнопки первой линии тоже не зависят от конкретного проца, но показываются всегда, так как с них начинается работа)

Hunta
20.10.2025, 21:37
На текущий момент - так... (http://www.kpxx.ru/Soft/Utils/DisAsm11/DisAsm11-104.jpg)
... и вот так (http://www.kpxx.ru/Soft/Utils/DisAsm11/DisAsm11-105.jpg)

То, что в окне - всё определяется по соотвествущим описаниям дизассемблируемой сущности и отрисовывается динамически.

То, что за окном (без кнопок, только шоткаты) - вставка и редактирование комментариев, копи-паст и поиск - пока зашито. Вырезание этого - следующие шаги

Hunta
22.10.2025, 08:11
На текущий момент остались жёстко зашитыми команды редактирования комментария, поиск (в трёз вариантах) и копи-паст. Учитывая, что они, фактически, не зависят от процессора - скорее всего они такими и останутся..

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

Вдогонку. Бонус переделок стало - возможность добавлять не только блочный комментарии - но и некоторые другие типы ячеек-операторов MACRO-11. Так что возможность добавить, скажем, условную трансляцию - стала ближе :)

Hunta
26.10.2025, 21:31
Более менее монолит DisAsm11 порезан, даже набросан метод, который проверяет dll библиотеки и подгружает те, которые реализуют нужный функционл дизассемблирования и добавляет поддерживаемые ими процессора в список. Так что теперь без этих библиотек DisAsm11 показывается только "Сохранённый сеанс", а с ними - плюс ещё PDP-11 и VAX-11. Это из хороших новостей :)

Из плохих - я стараюсь оставить в модуле, отвечающий за визуализацию, только нужный функционал, а всё остальное вынести в модули дизассемблирования. Но есть некоторые нюансы, которые надо понять и решить создаваемыми ими проблемы. В процессе..

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

Некоторое количество проблем пофиксино.. Но ещё остались..

Hunta
29.10.2025, 22:56
Подгрузка библиотек более менее отлажена - и в варианте .NET 4.0 и в варианте .NET 9.0 (да, теперь девятка - перешёл с семерки), но пока без работы с несколькими версиями библиотек (то есть подгрузить то она подгрузит все и... покажет в какой-то степени все - и как будет бедный пользователь выбирать между несколькими PDP-11??? :) )

Помимо этого воевал с некоторым количеством ошибок из-за внутренних изменений, связанных с распилом монолита и просто моих ошибок. Один из выводов - работу с векторами надо несколько переделать :)

На вскидку - вроде как осталось только слегка поправить вывод листинга - а то после изменений, связанных с поддержкой VAX-11 - листинг VAX-11 выводится ок, а вот листинг PDP-11 - не очень. А так же проверить сохранение-восстановление сеанса :)

Ну и - версионность модулей дизасма :)

Hunta
30.10.2025, 23:40
Листинг поправил, сеанс вроде тоже сохраняется-восстанавливается..

Hunta
04.11.2025, 00:10
Уф... Война с .NET-ами, версиями dll и динамической загрузкой
Теперь можно иметь несколько версий библиотек дизассемблирования. На скриншотах красным выделены версии библиотеки дизассемблирования PDP-11

Для сохранённого сеансы была использована "версия" 0.9.9.9, она и подгрузилась (http://www.kpxx.ru/Soft/Utils/DisAsm11/DisAsm11-106.jpg)

Если же просто открыть файл для дизассемблирования, будет подгружена "последняя" (1.0.0.0 на скриншоте) версия

Пока это только отладка - отличия в версиях созданы искусственно - в 0.9.9.9 убрана кнопка Asciz

Есть ещё некоторая заморочка с сохранением сеанса, но она пока никак не влияет на процесс загрузки сеансов, хотя попробую её тоже пофиксить

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

Даже две заморочки, но вторую скорее всего быстро исправлю - почему-то в обеих случая светится, что открывали Сохранённый сеанс, но для версии 1.0.0.0 это не так - открывался файл для дизасма...

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

Да, с проблемой показа "Сохранённого сеанса" разобрался быстро - старый код, теперь не нужен.
А вот первая заморочка (которая вроде ни на что не должна влиять)... надо подумать... Вроде действительно не должна ни на что влиять, но пока не понял - точно ли..

Hunta
04.11.2025, 23:14
Весь сегодняшний день - война с подгрузкой строго определённой версии .dll библиотеки модуля дизассемблирования.

При том, что на этапе запуска для каждого модуля дизассемблирования ищется его последняя версия (dll) и на основе последней версии создаётся объект, который управляет показом типа процессора, поддерживаемых ОС, форматов и вариантов формата файлов.

Собирается две версии DisAsm11 - под .NET 4.0 и .NET 9.0. И каждая из версий считала своим долгом выпендриться по своему. Несколько слабее четверка, а вот девятки - это был некий адЪ. Но всё было успешно преодалено.

На текущий момент мне пока не известно об ошибках, вроде всё работает более менее, так что начинается этап более глубоко тестирования.

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

А, нет, вспомнил, работа из командной строки - вот что ещё предстоит восстановить и допилить (там некоторое время была жОсткая завязка на PDP-11, которую выпилил) до универсальности и работе через инфу из модулей дизассемблирования.

Ну и прикинуть - всё ли процессорно-ОС-форматофайло-зависимое было выпилено из модуля визуализации и интерфейсной библиотеки.

Есть вероятность, что будет добавлен (в первую очередь для проверки концепции) ещё один вид процессора.

Hunta
05.11.2025, 05:10
С утра на свежую голову поигрался с попеременной загрузкой - сохранённый сеанс из более старой версии модуля дизасма - загрузка исходного файл (должна загрузиться новая версия модуля дизасма) - да, всё ок, подгружаются нужные версии dll. А то уже засыпая - пришла в голову мысль - а как оно будет, если .NET 9 так долго сопротивлялся с загрузкой нужной версии. А нормально отрабататывает :)

Hunta
05.11.2025, 11:17
Прошерстил код - вроде как да, в модуле визуализации зависимостей от pdp-11 или vax-11 не нашлось. Ну кроме работы с командной строкой.

Hunta
17.11.2025, 13:23
В версии .NET 9.0 опять стала использоваться только последняя версия... Делаю перерыв в этих попытках, пока буду доработывать внутренности без проверок выбора версии в девятке.

Ну и ещё слегка отвлекусь на другое. Долгое мусолние мысли о том, что надо бы ещё одну программу переделать с C на C# наконец разродилось - процесс пошёл :) Программа большая, процесс будет долгий, как будет что показать - создам тему :)