Редакторы кодов
В ФОДОС есть две утилиты корректировки: PATCH для загрузочных и PAT для объектных модулей, в МДОС — ZAP и PAT соответственно.
Утилиты PATCH и ZAP. Утилита PATCH позволяет редактировать коды загрузочного модуля по адресу, который может быть получен из листинга макроассемблера и карты памяти, создаваемой при компоновке. Можно также изменять константы или начальные значения переменных в загрузочных модулях, полученные из Фортран-программ, что позволяет избежать перекомпиляции. При этом, однако, должен быть сохранен размер модуля. После окончания процесса отладки изменения должны быть внесены и в исходный текстовой файл.
PATCH позволяет редактировать как обычные, так и оверлейные загрузочные модули. При этом может вычисляться контрольная сумма внесенных изменений. Чтение и коррекция слова (или байта) происходит обычно в восьмеричном коде; однако допускаются также коды ASCII и RAD-50.
PATCH управляется несколькими ключами, которые указываются за именем входного файла, и затем командами, подобными командам отладчика ODT. Аналогичные функции в МДОС выполняются утилитой ZAP.
Утилита PAT. В ФОДОС и МДОС они практически идентичны. Позволяют внести изменения в объектный модуль, не прибегая к машинным командам; текст изменения подготавливается на языке макроассемблера. Возможны два типа коррекции:
- замена участка в произвольном месте; при этом заменяемый и замененный участки должны занимать (после трансляции) одинаковое количество слов;
- добавление участка программы, представленного в виде подпрограммы и размещаемого в конце модуля, в месте вставки путем замены размещается команда перехода к подпрограмме.
Новые глобальные имена из вставок добавляются в список имен объектного модуля. Одноименные секции из исходного модуля и вставки накладываются, так что результирующая длина равна длине большей секции. Новая секция из вставки размещается в конце модуля.
Утилиты PAT вычисляют и проверяют контрольную сумму исходного модуля (в МДОС и сумму вставки). Командная строка имеет вид:
<имя__рез__файл> = <имя__исх__модуля> [/С[ : n]]
<имя__вставки> [/С [ : n]]
где С — ключ вычисления контрольной суммы; n — проверяемая сумма.