Index of /ukdwk_archive/dwkwebcomplekt/WALK2
Источник - публикация на форуме ZX-PK.RU участником AFZ
ОПИСАНИЕ ПРОГРАММЫ WALK-2
ВЕРСИЯ 2.2
ФТИ ИМ. А.Ф.ИОФФЕ АН СССР
КЛОЧКОВ А.В., ТЕЛ. 247-91-52
ЛЕНИНГРАД
Программа WALK-2 предназначена для преобразования
файлов форматов .SAV, .REL операционной системы RT-11
версий 3, 4 и 5, а также абсолютного формата - образа
памяти (без учета информации, содержащейся в нулевом
блоке файла) в текст на языке ассемблера.
Сама программа WALK-2 работает под управлением
RT-11, версии 5.0 и выше.
Могут реассемблироваться не оверлейные и оверлейные
программы всех версий, а также программы с оверлеями
в расширенной памяти для версий 4 и 5. При ручном
определении оверлейной структуры можно реассемблировать
любые программы.
Программа создает, кроме выходного файла с ассемблерным
текстом (расширение .DEC) файл карты (.MPW) и, если
указано, файл комментариев (.CMW). Они позволяют
полностью запоминать текущее состояние задачи и продолжить
процесс реассемблирования после перерыва в работе.
Вид расшифровки в директивы ассемблера (команда,
директивы .BYTE, .WORD, .RAD50, наличие меток) определяется
флажками. Флажки расставляются к каждому слову исходной
программы автоматически или вручную. При первом обращении
к WALK-2 только с файлом программы ко всем словам установлен
только флажок S - слово содержит значение и подлежит
рассмотрению. Те слова, которые не имеют флажка S будут
пропускаться при автоматической расстановке флажков,
на них не могут быть автоматически установлены метки
или другие флажки. При отсутствии у слова или группы
слов всех флажков они сворачиваются в директиву .BLKB.
Перед началом автоматической расстановки флажков
рекомендуется снять флажки S в нулевом блоке файла
(слова с 0 по 776), исключая, может быть, системную
область связи (если она используется в программе). Также,
если известны пустые зоны буферов внутри программы, в них
полезно снять флажки S.
Если заранее известно, что какие-то области программы
представляют собой данные, то удобно перед автоматической
расстановкой флажков установить ко всем словам этих
областей флажок X - слово данных, или комбинацию флажков,
в зависимости от необходимого представления данных.
Автоматическую расстановку флажков необходимо начинать
с команды. Для смены адреса, на котором вы в данный момент
находитесь (в дальнейшем будет обозначаться VPC),
используйте команду J. Для того, чтобы его узнать - команду
L или D без аргументов.
ОПИСАНИЕ КОМАНД WALK-2
Предварительные определения
< > - В угловые скобки заключается некоторое условное
обозначение, используемое в дальнейшем как целое.
Вместо угловых скобок и заключенного в них
обозначения подставляется то, что определено.
[ ] - В квадратные скобки заключаются необязательные элементы
команд. Сами квадратные скобки не должны присутствовать
в команде WALK-2
- Восьмеричное число
- Аргумент команды. Может быть в следующих видах:
1. Пропущен Если в описании команды не оговорено
другое, команда относится к VPC
2. Если команда может относиться к интервалу
адресов, то интервал между VPC и ,
если не может, то адрес
3. + Либо интервал VPC+- - VPC, либо
- адрес VPC+-
4. / Конец текущего корневого или оверлейного
сегмента, или до конца
5. // В оверлейном сегменте то же, что и /,
В корневом - до конца всех оверлейных
сегментов, если они есть, если нет -
то же, что и /. При использовании //
как указателя на адрес, а не на интервал
указывает на конец текущего сегмента.
6. @ Может быть добавлен перед любым из первых
пяти вариантов аргумента. Обозначает
косвенность. Используется не во всех
командах. Где не используется - игнорируется,
ошибки не вызывает. При использовании `
адрес вычисляется следующим образом:
сначала вычисляется адрес, указанный
остальной частью аргумента, затем берется
содержимое этого адреса и используется
в качестве значения аргумента.
При использовании @ в командах, требующих
интервала, интервал, заданный остальной
частью аргумента используется в качестве
таблицы адресов, по которым проводится
указанное в команде действие.
- Клавиша ESC дисплея (или АР2, или CTRL/[ - код 33).
При наборе нескольких команд в одной строке может возникнуть
необходимость ограничить команду (например ввод комментария).
В качастве разделителя используется . При вводе
как команды игнорируется.
СИНТАКСИС И ВЫПОЛНЕНИЕ КОМАНД
1. КОМАНДА L
L
Вывод на терминал указанного аргументом интервала адресов в
виде команд, независимо от установленных флажков. Дополнительно
выводятся флажки, счетчик команд, метка и содержимое первого
слова всех распечатываемых команд. Косвенность игнорируется.
2. КОМАНДА I
I
То же, что команда L, но вывод идет в файл .DEC
3. КОМАНДА D
D
Вывод на терминал указанного аргументом интервала адресов в
виде данных, независимо от установленных флажков. Распечатываются
флажки, счетчик команд, метка, содержимое слова, байтовое представление,
ASCII представление (при этом не учитывается восьмой бит), RADIX-50
представление (если существует), имя (если определено в таблице)
или автометка (если слово является ссылкой на помеченное флажком R
слово). Косвенность игнорируется.
4. КОМАНДА P
P
То же, что команда D, но вывод идет в файл .DEC
5. КОМАНДА T
T
Вывод на терминал указанного аргументом интервала адресов в
виде ассемблерного текста с учетом флажков. Выводится метка (если
есть), команда или директива ассемблера. При использовании аргумента
//, перед выводом оверлейного сегмента будет выводится его заголовок.
Косвенность в команде игнорируется.
6. КОМАНДА A
A
То же, что команда T, но вывод идет в файл .DEC. Текст,
полученный в файле пригоден для ассемблирования. Если вы определяли
имена (кроме меток), то для того, чтобы файл можно было ассемблировать,
перед подачей команды A выведите в него таблицу символов командой O.
7. КОМАНДА J
J J<ИМЯ>
Команда перехода на другой адрес. Команда J имеет два варианта
формата. Первый используется для перехода на указанный адрес, или
по указанному адресу (если применяется @). Второй - для перехода
только на указанный адрес. <ИМЯ> - имя метки или глобальной метки
из таблицы имен. При попытке перейти на нечетный адрес, будет
произведен переход на соответствующий ему четный.
8. КОМАНДА B
B[]
Переход в начало корневого или оверлейного сегмента. Если
задан, то переход в указанный сегмент, если нет - в текущем сегменте
номер сегмента 0 - корневой сегмент. Косвенность игнорируется.
9. КОМАНДА V
V
Вывод на терминал заголовков оверлейных сегментов и таблицы
символов. Метки оверлейных сегментов помечаются номером сегмента
в скобках.
10. КОМАНДА O
O
То же, что и команда V, но вывод идет в файл .DEC. таблица
символов выводится в виде, пригодном для ассемблирования. Все
назначения меток снабжены признаком комментария, а остальные
назначения определяются через присваивание. В комментариях к
ним указывается тип назначения в таблице символов.
11. КОМАНДА F
F
Установка длины страницы в файле .DEC. При старте программы
установлена равной 60 строкам. В конце страницы вставляется .
Если равен нулю, то устанавливается режим вывода сплошным
текстом. Исключение составляют переходы к новым оверлейным
сегментам.
12. КОМАНДА X
X
Завершение работы с программой. По этой команде дописываются
и закрываются все файлы. Если в файл .DEC не производилось никакой
записи, то он не будет создан. При ошибке записи в файл .MPW
WALK-2 не завершит работу, и останется в командном режиме. Если
вы все же хотите завершить работу, то необходима следующая
последовательность команд: X. При этом
файл .MPW может содержать недостоверную информацию.
13. КОМАНДА W
[@]W
Автоматическая расстановка флажков. Команда либо не должна
иметь аргумента, либо иметь признак косвенности. Во втором
случае идет автоматическая расстановка флажков в подпрограммах
по таблице адресов подпрограмм. Автоматическая расстановка
флажков должна начинаться с команды. Она идет до тех пор,
пока не встретится команда, за которой могут идти данные
(JMP, BR, JSR, EMT, TRAP и пр.) или пока не встретится переход
с данных на неопределенное слово. При этом распечатывается
в первом случае: команда, вызвавшая останов и следующая
команда в виде команды и в виде данных. Во втором случае
распечатывается: последняя команда перед областью данных,
но VPC установлен на первом неопределенном слове. WALK-2
переходит в командный режим. Далее можно либо повторить
команду W (если дальше команды), либо установить флажки
данных. Во время автоматической расстановки флажков
пропускаются слова без флажка S и слова данных.
14. КОМАНДА ;
;<комментарий>
Ввод комментария. <комментарий> - это любая текстовая строка.
Она будет относится к VPC, при котором подана команда ;.
Комментарий распечатывается на терминале и выводится в файл
при выводе соответствующей команды или слова данных. На терминале
комментарий распечатывается в следующей строке, в файле - в той же
строке и отделяется табуляцией и точкой с запятой. Один VPC может
иметь только один комментарий, но команда, состоящая из 2 или 3
слов - 2 или 3 комментария, соответственно. Для их ввода используйте
команду +2J, а затем ;. Выводятся такие комментарии в следующей
за командой строке. При вводе комментария к VPC, уже имеющему
комментарий, он заменяется. Этим не следует злоупотреблять, т.к.
замененный комментарий не удаляется из файла .CMW.
Команда ; работает только если в командной строке при запуске
WALK-2 был указан файл комментариев.
15. КОМАНДА S
S...
Установка флажков. Перечисленные в команде флажки устанавливаются
в указанном аргументом диапазоне. Если использован флажок A -
устанавливаются все флажки. Такого же результата можно достичь,
перечислив все флажки, но A - короче.
16. КОМАНДА C
C...
Очистка флажков. Работает как и команда S.
17. КОМАНДА Y
Y
Определение и удаление имен. В ответ на команду Y выводится
приглашение:
+
далее можно вводить - конец команды Y, или строки определений
вида:
<ИМЯ> <ПРИЗНАК> <ЗНАЧЕНИЕ>
или строки удалений вида:
<ИМЯ> [<ПРИЗНАК>] /
Строка определения вводит указанное имя с указанным признаком
в таблицу. Не допускается вводить одинаковые имена с одинаковыми
признаками и одинаковые значения с одинаковыми признаками.
Исключение составляют метки в различных оверлейных сегментах,
которые могут совпадать. Этим удобно пользоваться для
восстановления правильных ссылок в оверлейных программах.
Строка удаления при указанном признаке удаляет из таблицы
имя с указанным признаком. Без признака - все указанные имена.
Разделителем между именем и признаком может служить пробел,
табуляция, или сам признак = или :. В именах можно употреблять
все символы, представимые в RADIX-50.
Метки для оверлейных сегментов нужно определять находясь
в том сегменте, метки для которого определяются.
Признаки:
: определение метки
G определение глобальной метки. По использованию совпадает
с меткой. В ассемблерном листинге помечается ::.
= прямое присваивание
E назначение для кодов команды EMT
T назначение для кодов команды TRAP
для E и T признаков значение не более 377
I назначение кода операции. При дешифрации команды
она сначала ищется в таблице имен. Если найдена, то
подставляется заданное имя. Такие команды не могут
иметь аргументов. Можно использовать для EMT и TRAP
команд с определенными значениями аргументов, или
для команд из набора резервных инструкций, используемых
в микропроцессорах 1801ВМ1 И 1801ВМ2.
18. КОМАНДА R
R
Ввод определений имен из файла. Файл должен иметь формат
команды Y. В ответ на команду R запрашивается имя файла, из
которого следует вводить определения. Расширение имени файла
по умолчанию - .TBW. Драйвер устройства, с которого вводится
файл должен либо быть загружен перед запуском WALK-2 командой
LOAD, либо усторойство должно совпадать с одним из устройств,
определенных в командной строке при старте WALK-2, либо с SY:.
19. ГРУППА КОМАНД G
Группа команд поиска поиск производится от следующего за
VPC слова или байта до конца текущего сегмента. В случае
успешного поиска VPC позиционируется на начало найденной
последовательности, и происходит печать в виде команды
или в виде данных, в зависимости от режима поиска.
В противном случае позиция VPC не изменяется и распечатки
не происходит.
КОМАНДА GA
GA<СТРОКА>
Поиск текстовой строки. При поиске не учитываются признаки
регистров ни во входной строке, ни в искомой.
КОМАНДА GB
GB[,,....,]
Поиск последовательности байтов.
КОМАНДА GW
GW[,,....,]
Поиск последовательности слов.
КОМАНДА G#
G#
Поиск непосредственной адресации, при которой слово
данных может представлять собой метку в программе,
т.е. находится в пределах программы и соответствующий
адрес помечен флажком S.
20. КОМАНДА H
H
Вывод на терминал краткого справочного текста о
командах WALK-2.
ИСПОЛЬЗУЕМЫЕ ФЛАЖКИ И ИХ КОМБИНАЦИИ
S Слово содержит информацию и подлежит рассмотрению
I Первое слово команды. Флажок наиболее приоритетный
при выводе в виде ассемблера
X Второе или третье слово команды или слово данных
B Байтовые данные. Если этим флажком помечено
отдельно стоящее слово данных, то будет выведена
директива .BYTE, если второе или третье слово
команды при непосредственной адресации к нему,
то либо ASCII - представление в команде, либо
директива .BYTE после команды (со сменой адресации
на (PC)+).
L Слово имеет символьную метку. Флажок автоматически
устанавливается при вводе метки в таблицу. Флажок
имеет приоритет перед R.
R На слово имеется ссылка. Будет генерироваться
автометка. Если имеется комбинация RB, то автометки
будут генерироваться к каждому байту.
C Данные представляют собой числовую константу.
Флажок устанавливается только вручную.
D Если C не установлен, то определяет приоритет поиска
в таблице имен. При отсутствии флажка сначала ищется
метка с данным значением, затем прямое присваивание.
При наличии - наоборот. При отсутствии в таблице имени
флажок не влияет на результат - распечатывается константа.
Флажок устанавливается только вручную.
CD Слово данных представить в виде директивы .RAD50
CB Преобразовать байты данных в ASCII представление, если
это возможно.
CBD Представить байты данных в виде восьмеричных чисел.
Остальные комбинации флажков не дают каких-либо специфических
эффектов, и работают как отдельно взятые флажки.
О РАСШИФРОВКЕ КОМАНД
Если код команды не определен по команде Y с признаком I,
то он поступает на дешифратор команд. Для большинства команд
результат однозначен. Исключения составляют FPP - команды,
для которых всегда идет расшифровка в инструкции одинарной
точности, т.к. они по коду операции совпадают с инструкциями
двойной точности, а выполнение зависит от текущего состояния
FPP - процессора, а также команды BCS и BCC, которые имеют по
две мнемоники. Для них выполняется следующее правило: если
предыдущая команда была двухадресной - идет расшифровка в
мнемоники BHIS и BLO, в остальных случаях BCC и BCS.
Команды JSR PC... всегда расшифровываются в мнемонику
CALL..., команды RTS PC - RETURN.
При расшифровке операндов, если оказывается, что при
непосредственной или абсолютной адресации операнд помечен
как команда, или имеющий метку, то в команде будет использована
адресация (PC)+, или @(PC)+, а слово будет реассемблироваться
в соответствии с его флажками. Исключение составляет следующая
комбинация: первый операнд с непосредственной или абсолютной
адресацией, а второй - с индексной или косвенно-индексной.
В этом случае первый операнд никогда не будет расшифровываться
в отдельное слово, т.к. это вызывает ошибку ассемблирования.
ОПРЕДЕЛЕНИЕ ТОЧКИ СТАРТА
Если в программе определена точка старта - слово 40
нулевого блока файла отлично от единицы, то в таблицу символов
автоматически вводится глобальная метка START, со значением,
равным стартовому адресу. При этом в директиве .END будет
записана метка START. Если по каким-то причинам стартовый
адрес не нужен, то метку START нужно удалить из таблицы.
В директиве .END уже не будет метки START. Однако, если
метку поставить снова (в любое место программы), то она
появиться в директиве .END.
РАБОТА С ПРОГРАММОЙ
При вызове WALK-2 печатает * и ждет команды. При вводе
он печатает HELP и опять переходит к вводу.
Формат входной строки:
FILE[/OPT.../OPT]
FILE - Входной файл в стандартном формате RT-11. Тип файла
по умолчанию - стандартный .SAV формат, программа
может быть оверлейной. Указывать это не нужно.
Устройство по умолчанию - DK:, расширение по умолчанию
определяется ключами:
БЕЗ КЛЮЧЕЙ .SAV
/M .SAV
/R .REL
/A .ROM
Ключи:
/R - файл .REL формата.
/M - ручное определение оверлейной структуры программы.
/A - абсолютный файл образа памяти.
/V: - задание номера версии операционной системы, под
которой была сделана реассемблируемая программа.
Для неоверлейной программы безразлично. По
умолчанию устанавливается /V:5.
Дальнейшие ключи могут определять имена файлов в стандартном
формате RT-11. Имена и устройства для файлов по умолчанию
совпадают с именем и устройством входного файла, расширения
определяются ключами:
/N, /O .MPW
/C .CMW
/N[:FILE] - новый файл карты
/O[:FILE] - старый файл карты
/C[:FILE] - файл комментариев
Если не задан никакой файл карты, то создается новый по
умолчанию. Если задан только старый - идет работа только с ним.
При этом длина таблицы символов определяется величиной,
введенной при его создании. Если задан и старый и новый файл -
длина таблицы символов может быть увеличена. Работа с файлом
комментариев описана ниже.
После ввода командной строки в случае создания нового
файла карты WALK-2 запрашивает длину таблицы символов. Можно
ответить числом или - максимально возможная длина. Она
определяется свободной оперативной памятью. При использовании
SJ - монитора длина таблицы больше. Размер файла карты
увеличивается с увеличением длины таблицы. Рекомендуется
задавать примерно необходимый размер таблицы, тем более, что
ее всегда можно увеличить, задав новый и старый файлы карты.
Если был использован ключ /M, то будет запрашиваться
ввод оверлейной структуры: адрес сегмента в памяти, адрес
сегмента на диске (в блоках от начала файла), количество
слов в сегменте для каждого оверлейного сегмента, начиная с
корневого (номер 0). Три эти параметра вводятся через
запятую. Если известно количество байтов, а не слов, то
можно третьим параметром ввести его, добавив в конце букву B.
Затем WALK-2 входит в командный режим, печатая подсказку #.
В командном режиме запрещен выход в монитор по CTRL/C. Для
выхода используйте команду X. В командном режиме разрешен
ввод кириллицы, буквы совпадают с соответствующими латинскими
везде, кроме комментариев.
РАБОТА С ФАЙЛОМ КОММЕНТАРИЕВ
При использовании ключа /C во входной строке происходит
работа с файлом комментариев. Только в этом случае можно
использовать команду ;. Файл комментариев создается новый
или используется старый в зависимости от режима, заданного
для файла карты. При создании нового файла карты - создается
новый файл комментариев, при использовании старого файла
карты - используется старый, при расширении - расширяется.
Не рекомендуется при использовании старого файла комментариев
вводить новые комментарии. Если у вас не хватит места в
каталоге комментариев могут возникнуть серьезные ошибки.
Если вы уже начали реассемблировать программу без
файла комментариев, а затем захотели его иметь, то можно
сделать следующее. Вызвать WALK-2 и задать на вход любой
.SAV файл с ключом /C. После входа в командный режим тут же
завершить работу. Созданный пустой файл комментариев можно
использовать в качестве исходного для любой другой программы.
СООБЩЕНИЯ ОБ ОШИБКАХ
Сообщения при вводе командной строки:
COMMAND STRING ERROR. FOR HELP PRESS
Любая ошибка в синтаксисе командной строки.
Наберите строку снова.
FILE NOT FOUND
Не найден один из файлов, заданных в командной
строке. Наберите строку с существующими именами.
PROTECTED FILE FOUND
При попытке создать новый файл был обнаружен
защищенный файл с тем же именем. Выйдите по
CTRL/C и переименуйте файл или снимите защиту.
NO VN OVERLAY STRUCTURE - ASSUME ABS MODE
Программа имеет в JSW бит оверлейности, но
не отвечает соглашениям версии N операционной
системы об оверлейных программах. Программа
реассемблируется в виде абсолютного файла.
Если это не устаривает завершите работу и
при повторном входе установите правильную
версию системы ключом /V.
NO .REL FILE - ASSUME ABS MODE
Программа не имеет .REL структуры. Реассемблируется
в виде абсолютного файла. Если это не устраивает
завершите работу и при повторном входе не
используйте ключ /R.
INVALID VECTOR
Неверный ввод параметров при ручном определении
оверлейной структуры.
Сообщения, которые могут появиться в любой момент:
READ ERROR
Аппаратная ошибка считывания файла
MAP FILE ERROR
Ошибка в файле карты (аппаратная или неверный формат)
COMMENT FILE ERROR
Аппаратная ошибка в файле комментариев
Сообщения в командном режиме:
?
Любая ошибка в синтаксисе команды. Все команды после
ошибочной до конца строки игнорируются
INVALID OVERLAY SEGMENT NUMBER
Попытка перейти в неопределенный оверлейный сегмент
FETCH ERROR
Попытка обращения к адресу вне программы.
Как правило возникает при попытке распечатать
данные в конце сегмента в виде команды, причем
второе или третье слово команды находится
вне сегмента
WRONG ADRESS
Попытка обращения к адресу вне программы
SYMBOL TABLE FULL
Переполнение таблицы символов. Завершите работу
и запустите WALK-2 снова с ключами /N и /O
DUBLE DEFINITION
Попытка повторно определить имя командой Y или R.
С существующими совпадают либо имя и тип, либо
значение и тип. Имя игнорируется
SYMBOL FILE ERROR
Аппаратная ошибка чтения таблицы символов
HANDLER MUST BY LOAD
Драйвер устройства для файла, задаваемого в команде
R должен быть предварительно загружен
DECODE FILE WRITE ERROR
Ошибка записи в выходной файл. Мало места на диске
или аппаратная ошибка
IM-STACK OVF
Переполнение стека при выполнении команды W. Слишком
много неудовлетворенных ссылок назад. Следует выполнить
команду еще раз, возможно с другого места программы