Ещё можно проверить на файлах-загрузках в КЦГД и в периферийный процессор УКНЦ. Там могут оказаться ещё какие-нибудь проблемы.
Вид для печати
Ещё можно проверить на файлах-загрузках в КЦГД и в периферийный процессор УКНЦ. Там могут оказаться ещё какие-нибудь проблемы.
Ну это если образ памяти грузится отдельной программой...
Я, очень давно, пытался дизассемблировать загрузки в КЦГД. Там большая часть программ(что были у меня) была одним файлом. Была прикольная программа, которая запускала в КЦГД часы и более ничего. Автор мне неведом... KCTIME(дай бог памяти). Небольшая. Брала время из системы и запускала в КЦГД мелкую программку, которая в углу экрана показывала время. Для меня интерес представлял механизм работы со штатным ПЗУ. И естественно автор программы не смог удержаться от защиты от дизассемблирования :) Он просто сдвинул тело программы-загрузки на один байт. До меня долго доходило что там не так... В конце-концов написал утилитку вытаскивающую программу-загрузку из исходного файла и уж её дизассемблировал. А формально файл вполне .SAV
Наверное вдохновился "независимым" временем на "фрязинском" дисплее(КСМ) :)
Ещё сталкивался с тем, что адреса в этим загрузках в КЦГД накладывались на адреса загружающей программы. В результате получался винегрет по меткам :)
Было у меня подозрение, что для этих программ писали программы загружатель и непосредственно загрузку по отдельности. Потом или утилитой, либо утилитой и ручками собирали в один файл.
Безусловно, пока такой вариант защищённой программы не будет дизассемблирован :) Но вот с ходу я даже не скажу - а можно ли сделать такой вариант защиты штатными средствами - то есть есть исходник, мы его MAC-им, LINK-им и на выходе получаем идентичный .SAV. То есть собрать ДВА .SAV-а, а потом их смержить - без вопросов - этот метод реализуем. А вот так, что бы с одним .SAV-ом и сразу после LINK идентичный...
Уф... Автоматическое тестирование - обязательно :)
Начал переделку под работу и из командной строки - начал смотреть, как очередные изменения влияют на дизасм других типов файлов. И тест процессора KDJ11-B преподнёс ошибку - DisAsm сваливался по переполнению стека. Сначала подумал, кто это декодирование инструкций (был у меня там рекурсивный вызов - заодно его хакнул), а оказывается - автоматическая перерисовка при изменении формата ячеек. Я с ней давно ковыряюсь, но вот последнее время уделял внимание только .SAV формату, а последствия изменения программы на других форматах (а точнее - файлах) и не проверял. Оказывается - зря :)
Глубоко не копал, но сваливалось оно в ситуации когда ячейки прямо или косвенно ссылаются друг на дружку :) Код поправил, но там полуэвристическое правило - надо будет ещё поглядеть на результат. По сути, это важно только при рассматривании кода в программе, если генерируется .MAC файл - то для кода генерации картинка по ячейкам - статическая, так что никакого влияния автоматическая перерисовка не окажет. Но хочется, что бы на экране всё сразу как надо отрисовывалось :)
Добавлен нужный (мне :) ) функционал
Встали на ячейку - видим все адреса, которые на неё ссылаются. Выбираем, щёлкаем JumpTo...
... и она выбрана в (основном) окне дизасма
- - - Добавлено - - -
Вдогонку :) Если показывается всего один адрес в этих двух списках (верхний - ссылка на чётный байт, нижний - на нечётный) - то можно и не выбирать :) Кнопки абсолютно идентичны, сделано три, что бы мышку меньше двигать. Возможно, повешу и шорт-кат :)
Код:K:\PDP\Soft.Not Recoded\0.WorkDir2>test.cmd
K:\PDP\Soft.Not Recoded\0.WorkDir2>dir stalk.*
Volume in drive K is Temp A
Volume Serial Number is D289-BED8
Directory of K:\PDP\Soft.Not Recoded\0.WorkDir2
06.04.2021 00:00 512 STALK.COM
04.04.2021 00:00 25 088 STALK.SRC
2 File(s) 25 600 bytes
0 Dir(s) 425 474 093 056 bytes free
K:\PDP\Soft.Not Recoded\0.WorkDir2>DisAsm11.exe /SAV "K:\PDP\Soft.Not Recoded\0.WorkDir2\STALK.SRC" /Generate
K:\PDP\Soft.Not Recoded\0.WorkDir2>K:\PDP\Emul\RTP\RT11.exe MACRO/LIST:STALK STALK
K:\PDP\Soft.Not Recoded\0.WorkDir2>K:\PDP\Emul\RTP\RT11.exe LINK STALK
K:\PDP\Soft.Not Recoded\0.WorkDir2>K:\PDP\Emul\RTP\RT11.exe DIFF/BIN STALK.SAV STALK.SRC
?BINCOM-I-No differences found
K:\PDP\Soft.Not Recoded\0.WorkDir2>dir stalk.*
Volume in drive K is Temp A
Volume Serial Number is D289-BED8
Directory of K:\PDP\Soft.Not Recoded\0.WorkDir2
06.04.2021 00:00 512 STALK.COM
08.04.2021 22:53 472 209 STALK.LST
08.04.2021 22:53 151 380 STALK.MAC
08.04.2021 22:53 26 624 STALK.OBJ
08.04.2021 22:53 25 088 STALK.SAV
04.04.2021 00:00 25 088 STALK.SRC
6 File(s) 700 901 bytes
0 Dir(s) 425 473 409 024 bytes free
K:\PDP\Soft.Not Recoded\0.WorkDir2>
Строго говоря, это не будет правильный результат дизасм-а программы. Будет результат дизасма загрузчика-дешифратора :) И такой результат будет совсем не интересен ;)
По этому поводу есть у меня мысли, но это точно будет не сейчас пробоваться к реализации - есть более приоритетные задумки и надо поиграться подольше с программой :)
Ну и так далее :)Код:DisAsm11.exe /cha ZKDJV2.BIC /g
DisAsm11.exe /image dos_rk.bin /generate /base 0 /start 0
DisAsm11.exe /image "DEC-11-L2PC-PO Absolute Loader.ptap" /base 0 /start 6 /generate "DEC-11-L2PC-PO Absolute Loader.mac"