ZX Турбо Дизассемблер.
Немного информации для тех,
кто заинтересовался этой штукой.
Divide et impera
(разделяй и властвуй)
(C) Иноземцев Алексей.
Special for ZX Power.
________________________________
Итак, вы уже побаловались с
этим программным продуктом и те-
перь решили найти ответы на воп-
рос: зачем это нужно, и как этим
пользоваться? Отлично, это как
раз то место,в котором эти отве-
ты и находятся.
Ответ на вопрос, для чего
предназначена эта программа, не
так и прост. Сначала попробуем
ответить на вопрос, для чего эта
программа не предназначена. Эта
программа не может отлаживать
ваши творения, ломать чужие или
снимать защиту с UFO-2. Это не
отладчик, не вьюер и даже не мо-
нитор, хотя очень на них похоже.
Это именно дизассемблер, един-
ственным назначением которого
является получение текста на
языке ассемблера, максимально
приближенного к тому тексту, ко-
торый в начале веков, в далекой,
далекой Англии был написан и ас-
семблирован в игрушку легендар-
ной Ocean Software. И теперь,
разглядывая прошедшую огонь, во-
ду и волшебные кнопки, програм-
му, вы уже не будете ломать се-
бе голову, чем же порубить на
куски сей многострадальный про-
дукт интеллектуального труда,
чтобы затем использовать эти
запчасти в своих шедеврах.
Этот дизассемблер был зачат
двумя монстрами отладки: MONS'ом
и STS'ом 4.0. Но как и каждый
сын он на порядок перерос своих
родителей в деле получения ис-
ходного текста, которым, по чис-
той случайности, забыл поде-
литься с вами ваш незнакомый
друг-кодер.
Те, кто пытался достать исход-
ник с помощью MONS'а или STS'а,
воистину должны были запастись
терпением индийского йога, для
того чтобы получить текст, так-
же полезный, как и полное собра-
ние сочинений В.И.Ленина на мон-
гольском языке.
Теперь же, вы можете получить
текст, пусть не 100%-но такой
же, как у автора (комментарии,
увы, не восстанавливаются) но,
тем не менее, который позволит
вам как угодно переписать, до-
полнить, урезать разобрать по
косточкам (хрящам, сухожилиям
и.. см. "Атлас анатомии") любую
программу отечественного или им-
портного производства (реклам-
ная пауза).
Теперь как же эти все чудеса
сотворить. Надеемся не надо
обьяснять как запустить сие чу-
до техники (для тех, кому надо,
сообщаем: наберите в TR-DOS RUN
"ZXD" и.. о чудо! Оно закрути-
лось!!!) Посему сразу престу-
паем к описанию программы.
После запуска (см. выше) вы
узрите приблизительно такую кар-
тинку: сверху полоса меню, со
всякими словами, а внизу полоса
подсказок, которая в данный мо-
мент подсказывает вам название
программы. В середине находится
рабочее поле (Desktop по ихнему)
на котором и будет происходить
все самое интересное, но сейчас
оно закрашено приятным серо-бу-
ро-малиновым цветом, что озна-
чает, что никакая программа по-
ка не загружена в рабочую об-
ласть.
Поразглядываем теперь внима-
тельнее слова в полосе меню. Их
там четыре штуки: FILE (файл, а
не филе), VIEW (глазеть),
DISASSM (о..! майн готт!!) и
OPTIONS (непонятно что). Заме-
тим, что одна из букв в этих
словах выделена красным цветом
(именно красным, даже если крас-
ного там и в помине нет, напри-
мер: все слово написано синим, а
первая буква фиолетовым, код си-
него 1, код фиолетового 3, вычи-
таем из большего меньшее полу-
чаем 2 - красный цвет! Дальтони-
ки могут проделывать этот рас-
чет каждый раз) так вот если на-
жать на такую вот клавишу, то
получите интересный эффект: вы-
падет кубик с еще одной кучкой
слов.
Для FILE эти слова будут та-
кими:
Load prog - грузануть прог-
рамму, которую вы собственно и
собрались разделывать. Наберите
ее имечко (фамилия всегда <C>) и
все будет тип топ.
Save work - если после того
как вы отделили коды от данных
(см. пункт VIEW) вам, возможно,
захотелось сохранить это разде-
ление на диске, чтобы в следую-
щий раз не глядеть тупо на дев-
ственный код, а продолжить (ис-
править) свой work, то вам пря-
мая дорога в этот пункт меню.
Введите имя (фамилия по-мужу бу-
дет <w>) и, вставив в дисковод
какой-нибудь круглый предмет
(желательно дискету) смело жми-
те <ENTER>.
Open work - если вы уже че-
го-то наковыряли и даже ухитри-
лись это самое сохранить на дис-
ке перед тем как в вашем районе
вырубили свет, то этот пункт ме-
ню позволит вам получить назад
ваши труды праведные для
дальнейшего поливания их твор-
ческим потом. Имя вводится и
т.д. и т.п.. Но! файл с исходным
кодом обязан присутствовать на
диске и именно под тем именем,
которое было у него на момент
сохранения вашего workа (понят-
но, что его имя может не совпа-
дать с именем workа, просто ес-
ли вы сделаете ему Rename, то
программа его никакими водолаза-
ми не отыщет).
Catalogue - поглядеть, чего
еще не доели вирусы на вашей
дискете. Вам покажут прибли-
зильно тоже, что и LIST в
TR-DOSе, но это все это можно
полистать туда-сюда-обратно
(кнопки на полосе подсказок) и
посмотреть в десятиричной (если
вы умеете считать только до 10)
или 16-ричной системе.
Drive - самая приятная менюшка
для тех, у кого один дисковод -
вам никогда не придется сюда
лазить. Для остальных приятная
возможность выбрать флоппер ко-
торый меньше глючит (Всем прият-
но - кайф).
Quit - если вам насто..доело
все это и вам просто захотелось
поиграть в UFO-2 (класс!), ну
что ж поделать... Reset конечно
проще, однако из этой опции
иногда удается выпасть в Бейсик
откуда потом можно попытаться
вернуться (sorry,paradise lost).
Покончив с филе.. с FILE идем
к следующему пункту Главного.
VIEW - тут все очень просто. Вы-
берите вид отображения информа-
ции Code или Dump и... (Wellcome
to hell!!).
Тут-то все и начинается. Но (с
горбачевским акцентом) не надо,
товарищи, отчаиваться. Совмес-
тными усилиями мы придем к кон-
сенсусу (апплодисменты). Если вы
загрузились file, в смысле филе,
то вы сей prog и увидите в зака-
заном виде (Dump или Code). Те-
перь ваша задача правильно раз-
метить (расписать, раскрасить)
этот prog по четырем типам дан-
ных: byte, word, code, space,
для чего применяется такая шту-
ка как БЛОК. Сначала блок надо
отметить сначала и с конца той
области, которую надо преобразо-
вать к нужному типу (сам понял
че сказал?). Начало БЛОКа отме-
чается кнопкой "q", а конец "a".
После того, как вы проделаете
все эти операции вам покажут
(инверсией) свежевыделеный БЛОК,
а в правом верхнем углу зами-
гает слово "block". И затем
кнопками 1,2,3,4 (только не все
сразу) устанавливаете нужный
тип. Без БЛОКа жать их абсолют-
но бесполезно. Определившись с
типом блока, советуем снять БЛОК
клавишей "z" от греха подальше,
дабы гуляющие по клавиатуре та-
раканы случайно не испортили го-
ды кропотливой работы. Если вы
сразу не запомнили столько кно-
пок то это не страшно - нажмите
<EXT> (для тех, кто не понял,
коробка конопок в конце файла)
вывалится менюха со всеми клави-
шами. Если у вас какая-то кноп-
ка дребезжит, заедает или ее ам-
путировали в детстве, то курсор-
ными клавишами выберите чего на-
до и давите <ENTER> - эффект бу-
дет тот-же.
Теперь подробнее о типах дан-
ных:
byte - просто байт данных,
в тексте будет стоять после
DEFB. Если он попадает в диапа-
зон #20..#7f то будет заменен на
соотв. символ (sorry, других ва-
риантов нет). На дампе выделяет-
ся белым цветом.
word - слово-метка (если по-
падает в программу) или просто
слово данных (если попадает в
другое место) будет стоять пос-
ле DEFW и на дампе выделяется
желтым цветом.
code - просто код, ничего
больше, голубой цвет.
space - если вам не важно
что именно лежит здесь, главное,
чтобы оно занимало место, это
тип как раз то, что нужно. Если
там 6 симфония Баха для биппера
с оркестром, не волнуйтесь она
сохранится в отдельном файле. На
экране этот тип отображается
как DEFS мmm, где mmm - это не
АО"МММ", а количество байт кото-
рые вы ухитрились запихнуть в
эту строчку. В текстовом файле
эта строчка будет выглядеть как
insert "nnmmm", где nn (бес)по-
рядковый номер insertа, а mmm -
длина угадайте чего. Если вы
смотрите на CODE,то увидите жал-
кую, намазанную зеленкой, строч-
ку, но переключившись на DUMP
увидите обширное, успокаивающее
глаза, зеленое поле.
Как же угадать какой байт ка-
ким цветом красить? К сожалению
готовых рецептов не дает даже
"Книга о вкусной и здоровой пи-
ще" Но, к счастью, есть нес-
колько полезных кнопочек, нажи-
мать которые мы сейчас научимся:
r - (не путать с R) самая
полезная кнопка. Она позволяет
найти первого, кто указывает на
данную строчку (т.е. ту на кото-
рую положили курсором) если та-
кой товарищ найдется то вам его
покажут, если нет - вы услышите
длинный гудок и останетесь на
месте.
R - (не путать с r) находит
следующего, кто указывал на ту
строчку.
j - если в данной строке есть
метка, то вы к ней и перейдете,а
если нет то испытаете на проч-
ность свои барабанные перепонки.
l - если в данной строке
есть метка, но вы хотите чтобы
ее не стало, например:
#7ffa 01fd7f ld bc,l7ffd
#7ffd ed79 out (c),a
Ежу понятно, что 7ffd это адрес
порта конфигурации ZX128, а не
метка команды out.Из этой ситуа-
ции есть только два выхода: либо
подвести курсор к строке и на-
жать l, либо ковырять только те
progи в которых делается только
out (#fd),a (ау, скорпионщики!).
m - если в данной строке нет
метки, а переехать куда-нибудь
хочется - жмите эту кнопку и
вводите адрес станции назначе-
ния. Перед 16-ричным числом ста-
вится забор (#), а десятиричное
покатит и так.
i - (не путать с I) если у вас
голубым цветом остались покраше-
ны лишь отдельные байты пора за-
даться вопросом "Как так - на 30
килобайт программы 200 байт ко-
да?". Жмите эту кнопку и вы сра-
зу узнаете где делается CALL/JP/
JR/DJNZ в середину, как вам ка-
жется, какой-нибудь порнокартин-
ки. Смотрите внимательно, ис-
правляйте. Если же все так и бы-
ло задумано, то жмите
I - (не путать с i) следую-
щий такой CALL/JP и так далее.
b - и, наконец, если после
всех этих утомительных путешест-
вий вам захотелось вернуться
назад (I'll be back) - пра-
вильно, но только на один шаг.
Остальные кнопки понажимаете
сами, ничего особо интересного
они не делают, кроме пожалуй
<GRAF> которая в DUMPе перекиды-
вает курсор с HEXа на TEXT и об-
ратно.
Теперь, собственно, то, ради
чего мы все здесь и собрались.
Следующий пункт Главного -
DISASSM. В этом подменю всего
четыре пункта, так что мы сей-
час их по-быстренькому и дока-
наем. Первый пункт:
Build labels - вообще сюда
попал по ошибке. Обычно с него и
надо начинать работу, но ничего
не поделаешь - торчит он именно
здесь. Ну чтож, выберем его. Ми-
нуты две компьютер будет показы-
вать вам, как он быстро умеет
считать до ..надцати тысяч,а по-
том адреса,на которые есть пере-
ходы, обращения и т.п. (словом
будущие метки) засветятся как
синяки на роже боксера, помогая
вам разобраться что к чему.
Clear labels - если вам ос-
точертела эта иллюминация, пожа-
луйста - все метки быстренько
потухнут (а вот зажечь их обрат-
но так быстренько не получится).
Disassm all - вот он Момент
Истины, Минута Озарения, Час X.
После трудов праведных да воз-
дастся нам по делам нашим. Помо-
лившись и перекрестившись (сот-
ворив намаз, воспев Кришну или
на худой конец трижды плюнув че-
рез плечо) быстренько вводим имя
будущего текста (7 букв по гори-
зонтали). Компьютер еще раз сде-
лает инвентаризацию всем меткам
и затем начнет великое таинство
записи текста на диск. Но не то-
ропитесь уходить за пивом, в
сортир или еще куда. Запись тек-
ста 40ка килобайтной игрушки за-
нимает меньше минуты (в турбе).
Дождавшись конца можете смело
выходить (эй, а work кто списы-
вать будет?), грузить ассемблер
ZXASM 2.4 и смотреть почему это
все не работает. Если файлов
текста получилось больше одного,
то создается main-файл в кото-
ром кроме includов ничего нет
(загадка для любителей математи-
ки: почему не может быть двух
текстовых файлов?). Хотя дизас-
семблер написан в ZXASMе 3.0, он
поддерживает только формат тек-
ста ZXASM 2.xx, sorry сей недос-
таток будет исправлен в первую
очередь. Тем, кто любит ломать
глаза в TASMе/MASMе ничем по-
мочь не можем - обращайтесь к
окулисту. (хм.. Идя на встре-
чу пожеланиям трудящихся, воз-
можно будет сделана поддержка
TASMа 2.0).
Disassm blk - если вам пон-
равился какой-то кусочек кода, а
на остальную лабуду вам начхать,
отметьте БЛОКом тот скроллер,ко-
торый, на ваш вкус, лучше всех и
спокойно дизассемблите его в от-
дельный файл. Без БЛОКа такой
номер не проходит.
И вот последний пункт Главно-
го - Options. Зачем он нужен -
непонятно. Скорее всего он на-
фиг никому не нужен. Просто у
всех есть, а мы че хуже?
Ну раз он тут торчит, ладно,
опишем и его. Первая опция:
New start - если вы выдрали
код неизвестно откуда и вам в
облом было доктором вставить
правильный стартовый адрес, мо-
жете вставить его сейчас.
Sound - вообще-то никакого
soundа в программе нет, так па-
ровозные гудки и все. Но если у
кого будет желание послушать по
ходу дела любимый музон - пожа-
луйста, присылайте ваши ST, PT
или MOD файлы. А пока вы можете
выбрать устройство которое бу-
дет для вас гудеть и щелкать.
Это может быть:
Beeper - звенит тихо и слегка
подтормаживает, поэтому предназ-
начен для тех, кто лишен счастья
слушать
AY-Chip - классный рев при
минимуме съедаемого машинного
времени. Стоит по-умолчанию.
None - если ваши бетховенс-
кие уши категорически не перено-
сят ничего, кроме тишины, возми-
те побольше ваты и скорее сюда.
Следующим номером нашей прог-
раммы будет:
Colours - те, кому наплевать
на цвета в программе, могут вык-
лючить монитор на пару минут, а
для остальных собщаем, что изме-
нить цвета вы сможете только в
следующей версии, о чем вы еще
раз сможете прочесть в этом пун-
кте меню.
И наконец (фу-у..)
About - ..... (ну че, about
он и в Африке about).
Ну вот и все, что вам нужно
для работы Рафаэли Секко и Оли-
веры Твинсы наших дней. Надеюсь
Exolon 2 и Cybernoid 3 не заста-
вят себя долго ждать.
С надеждой в душе и шлакобло-
ком на шее.
Иноземцев А.С.
Зугрэс-2, кремль
10.11.1996 23:57
________________________________
Апендицит A.
Приветы и прочее.
Особый привет и большую благо-
дарность хочу выразить Марущен-
ко Вите за моральную поддержку и
бесполезные советы. (Витек,hi!).
Донецк:
К.Афендиков и В.Рубцов
(ZXASM-3 классная штука,thanks),
ALOS и др.
Харьков:
Cobra, James Advent, В.М.Г.,
Max Iwamoto и др.
Зугрэс:
Витек и его компания.
Харцызск:
OV (thanks за music), Ваня &
Дизя.
Апендицит B.
Гарантийные обязательства.
Автор гарантирует наличие глю-
ков в программе, посему уходит
от уголовной ответственности как
чистосердечно признавшийся и
глубоко раскаявшийся. По-этому
встретившись один-на-один с ка-
ким-нибудь глюком, не паникуйте,
не зовите адвоката, военкома или
родную маму, а возьмите ручку,
бумагу и запишите где, когда и
при каких обстоятельствах вы с
ним познакомились. Свои письма,
бандероли, посылки и контейнеры
отправляйте по адресу:
343710 г.Зугрэс-2, Донецкой обл.
ул. 60 лет Октября, д.6а, кв.41
Иноземцеву Алексею Сергеевичу
Ну, а если в вашем принтере
кончились иголки, то звоните по
телефону:
(06257) 4-31-88
с 9:30 до 17:00
в рабочие дни
________________________________