Редакторы кодов

В ФОДОС есть две утилиты корректировки: PATCH для загрузочных и PAT для объектных модулей, в МДОС — ZAP и PAT соответственно.

Утилиты PATCH и ZAP. Утилита PATCH позволяет редактировать коды загрузочного модуля по адресу, который может быть получен из листинга макроассемблера и карты памяти, создаваемой при компоновке. Можно также изменять константы или начальные значения переменных в загрузочных модулях, полученные из Фортран-программ, что позволяет избежать перекомпиляции. При этом, однако, должен быть сохранен размер модуля. После окончания процесса отладки изменения должны быть внесены и в исходный текстовой файл.

PATCH позволяет редактировать как обычные, так и оверлейные загрузочные модули. При этом может вычисляться контрольная сумма внесенных изменений. Чтение и коррекция слова (или байта) происходит обычно в восьмеричном коде; однако допускаются также коды ASCII и RAD-50.

PATCH управляется несколькими ключами, которые указываются за именем входного файла, и затем командами, подобными командам отладчика ODT. Аналогичные функции в МДОС выполняются утилитой ZAP.

Утилита PAT. В ФОДОС и МДОС они практически идентичны. Позволяют внести изменения в объектный модуль, не прибегая к машинным командам; текст изменения подготавливается на языке макроассемблера. Возможны два типа коррекции:

  • замена участка в произвольном месте; при этом заменяемый и замененный участки должны занимать (после трансляции) одинаковое количество слов;
  • добавление участка программы, представленного в виде подпрограммы и размещаемого в конце модуля, в месте вставки путем замены размещается команда перехода к подпрограмме.

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

Утилиты PAT вычисляют и проверяют контрольную сумму исходного модуля (в МДОС и сумму вставки). Командная строка имеет вид:

<имя__рез__файл> = <имя__исх__модуля> [/С[ : n]]

<имя__вставки> [/С [ : n]]

где С — ключ вычисления контрольной суммы; n — проверяемая сумма.