======================================================== РУКОВОДСТВО ПО ИСПОЛЬЗОВАНИЮ ПРОГРАММЫ "DESS", V05.00c ======================================================== КЛИМОВ Д.Л., 536-56-34, 20-Apr-87 Программа предназначена для экранного редактирования файлов в форматах .SAV, .REL, .SYS и т.п. под управлением ОС RT-11 V03, V04, V05 (Single Job, Foreground/Background, eXtended Memory и Time-Sharing без режима редактирования ОЗУ). При написании программы использовался алгоритм дизассем- блирования, предложенный Michael Levine, Naval Weapons Center и Yukoh Kobayashi, Instraction and Research Computer Center, Ohio state university, (c) 1980. В описании функций и команд используются обозначения клавиш терминала VDT52100-C. Программа прошла проверку: 1. На терминалах VDT52100-C, 15ИЭ-00-013, VT220 (in VT52 mode). 2. На компьютерах ДВК2М, ДВК3, ДВК3М2, ДВК4, LSI11/23, PDP11/45. ЗАПУСК ПРОГРАММЫ ================ Запуск под TS монитором: .RUN/S DESS - если программа находится на DK: .R/S DESS - если программа находится на SY: Запуск программы под SJ, FB или XM мониторами: .RUN DESS - если программа находится на DK: .R DESS - если программа находится на SY: По своим возможностям программа аналогична системным программам PATCH и SIPP (утилиты RT-11). ВВОД ИМЕНИ ФАЙЛА ================ Команда: ile (или после запуска программы) Действие: Имя выходного и входного файла вводится в формате CSI, если входной файл не найден, то программа выдаст сообщение: ?DESS-F-File not found DDN:FILNAM.TYP и произойдет рестарт программы. В выходной файл выводится информация, полученная после использования команд rite и race. Если выходной файл не задан, то вывод будет осу- ществляться на устройство с логическим именем LP:. На выходной файл запрашивается максимальная свобод- ная область на диске. Пример: *SY:RT11SJ.SYS *PIP=SY:PIP *MEMORY= РЕДАКТИРОВАНИЕ ОЗУ ================== Для входа в режим редактирования ОЗУ, на запрос имени файла нажать . В этом режиме не рекомендуется адресоваться к словам с адресами: 1. 0 .. 376 (syscom area & trap vectors) 2. 400 .. 776 (stack area) 3. @USERPC .. @USERTOP (DESS programm) 4. $RMON .. IOPAGE-4 (resident monitor & input/output page) ВВОД НОМЕРА БЛОКА ================= Команда: lock Действие: Производится чтение указанного блока и вывод дампа Примеры: Block: 432. Block: 14227 Ошибки: Неверный номер блока, I/O error ВВОД АДРЕСА =========== Команда: ddress Действие: Производится вычисление номера блока, его чтение и адресация по указанному адресу. возможно использо- вать 26-ти разрядную адресацию для адресации в файлах или дисковых накопителях большой емкости к блокам с номером большим 177 (128.) После использования адресации с двойной точностью все последующие команды будут выполняться логически корректно. Примеры: Address: 17556 - блок 1, адрес 556 Address: 45076446 - блок 45076, адрес 446 Ошибки: Неверный адрес, I/O error ПОКОМАНДНЫЙ ПРОСМОТР ФАЙЛА ========================== Команда: race Действие: С текущего адреса (ADDR) произойдет дизассемблирование программы и изменение адреса на N слов. N - количество слов в команде. Для вывода в выходной файл: rite. После окончания вывода: owrite. Пример: Macro-11: MOV #001000,SP Macro-11: MOV #002000,R0 Macro-11: EMT 351 Ошибки: Конец файла, I/O error ДОПОЛНИТЕЛЬНЫЙ ВЫВОД ==================== Команда: nformation Действие: Для задание типа дополнительного вывода надо ввести один из следующих символов: adix - вывод в радиксе ex - шестнадцатиричный вывод ecimal - десятичный вывод ctal - восьмеричный вывод yte - двоичный вывод - восьмеричный вывод слова как двух байтов - для отмены дополнительного вывода Пример: Bynary: 1 000 111 000 111 000 ЗАМЕЩЕНИЕ БЛОКА =============== Команда: eplace Действие: Происходит замещение текущего блока (используется при восстановлении файлов) на блок, находящийся в ОЗУ если при записи блока происходит ошибка ("Output error, ignore? "), можно еще раз попытаться записать информа- цию, ответив , и, если все-таки запись производится с ошибкой, выйти из данного режима можно подтвердив игнорирование. После возникновения ошибки ввода/вывода признак "ис- правление" сбрасывается. Пример: Replace? Y Output error, ignore? N Output error, ignore? N Output error, ignore? Y Ошибки: I/O error ЗАДАНИЕ МОДЕЛИ ПОИСКА ===================== Команда: odel Действие: Для задания модели надо указать дополнительно тип модели: ord - десятичная/восьмеричная модель слова adix - модель слова, заданная в радиксе. В этом режиме необходимо использовать допустимые символы. yte - модель байта (кроме байта 0) tring - строковая модель (до 30 байт)

attern - модель слова, заданная по маске, например: ---------------------------- ! Модель ! Найденные слова ! ---------------------------- ! -1-1-1 ! 112121,012131 ! ---------------------------- ! ---7-- ! 177777,012700 ! ---------------------------- ! 1----1 ! 122711,104351 ! ---------------------------- ! ------ ! любое слово ! ---------------------------- - отказ от модели Пример: Model word: -1000. Model radix: SYS Model byte: 341 Model string: File not found Model pattern: -1-2-3 ПОИСК МОДЕЛИ ============ Команда: earch Действие: Происходит поиск подели "сверху вниз", прекращение поиска - / или конец файла. Прерывание поиска по / меняет исходное состояние и текущее слово будет равно последнему сравниваемому слову (байту). Прекращение поиска по концу файла состояние, существующее до поиска, сохраняется. При поиске символьных строк учитывается состояние: Block N Block N+1 +---------------------+---------------------+ ! /////////!/////////////// ! +---------------------+---------------------+ Начало модели Конец модели Ошибки: I/O error, "Модель не найдена" ЗАДАНИЕ СМЕЩЕНИЯ ================ Команда: ffset Действие: Запрашивается величина смещения относительно ADDR: NEWADDR = OLDADDR + OFFSET Пример: ADDR=000000 Address: 54 ADDR=SYSPTR <@> ADDR=$RMON Offset: 262 ADDR=$DATE Ошибки: Неверный адрес, I/O error ПЕРЕХОД ПО АДРЕСУ КОМАНДЫ ВЕТВЛЕНИЯ =================================== КОМАНДА: ump Действие: Происходит переход по адресу, вычисленному дизассемб- лером, для команд типа BRANCH. Старое значение адреса заносится в "Stack". Пример: ADDR=001000 BCC 001012 ADDR=001012 Ошибки: Неверный адрес, I/O error ВОЗВРАТ ПО АДРЕСУ ИЗ "STACK" ============================ Команда: ill Действие: Происходит возврат из "Stack", указатель перемещается влево. Ошибки: Недопустимый адрес, вершина стека, I/O error РЕАЛИЗАЦИЯ АДРЕСАЦИЙ ==================== Команда: <@> Действие: Осуществляется адресация типа INDEX: NEWADDR = @OLDADDR Пример: ADDR=40 <@> ADDR=USERPC Команда: <_> Действие: Осуществляется адресация типа INDEX DEFFERED: NEWADDR = @(OLDADDR+2) + ADDR + 2 Пример: JMP 003456 <_> ADDR=003456 EMT 350 Ошибки: Неверный адрес, I/O error АССЕМБЛИРОВАНИЕ =============== Команда: ommand Действие: Происходит запрос на ввод строки в формате дизассемблера программы. Пример: MOV (R1),(R2) ВЫХОД ИЗ ПРОГРАММЫ ================== Команда: uit Действие: Происходит выход без запроса на замещение. Команда: xit Действие: Происходит выход с запросом на замещение. Пример: xit Replace? Exit? Ошибки: I/O error П_Р_И_М_Е_Ч_А_Н_И_Е: 1. Если кусор находится на цифровом поле (DUMP типа Words или Bytes, или иначе говоря не может произойти изменение содержимого), то для всех команд "GOLD с символьной клавишей" нажатие клавиши GOLD не обязательно. 2. Для вывода (командой TRACE) дизассемблированной программы в выходной файл используйте команду rite, для завершения вывода команду owrite. Формат дизассемблирования: 001000 EMT 355 ;104355 001002 MOV #000005,R0 ;012700 000005 001006 MOV #022542,-(SP) ;012746 022542 001012 EMT 353 ;104353 001014 MOV #022123,R0 ;012700 022123 001020 EMT 351 ;104351 3. Клавиатура управления курсором (нижние функции с GOLD): +----------------+----------------+----------------+ ! Задание ! Вверх ! Аналогично ! ! модели ! ! ! ! -------------- ! -------------- ! -------------- ! ! Поиск ! На 16 строк ! Не используется! ! модели ! вверх ! ! +----------------+----------------+----------------+ ! Влево ! Gold ! Вправо ! ! ! ! ! ! -------------- ! -------------- ! -------------- ! ! На одно слово ! Сброс Gold ! На одно слово ! ! влево ! ! вправо ! +----------------+----------------+----------------+ ! Не используется! Вниз ! Не используется! ! ! ! ! ! -------------- ! -------------- ! -------------- ! ! Не используется! На 16 строк ! Не используется! ! ! вниз ! ! +----------------+----------------+----------------+ ! Gold ! Установить ! Сменить поле ! ! ! метку ! (левое/правое) ! ! -------------- ! -------------- ! -------------- ! ! Сброс Gold ! Уйти к метке ! Сменить тип ! ! ! ! дампа ! +----------------+----------------+----------------+ 4. Формат ДАМПА на экране дисплея: Номер блока Адрес слова/байта Тип ДАМПА ----------- ----------------- --------- BLCK=000036/000030. ADDR=036340/036340 TYPE=Words DESS V05.00e 000/ 000350 000404 010005 122625 004767 000364 005205 012666 *h......%w.t...6.* 020/ 000004 012602 000740 004067 000020 044401 073156 066141 *....`.7....Inval* 040/ 062151 062040 073145 061551 000145 012706 000000 105737 *id device.F..._.* 060/ 000052 100425 112037 000052 005767 000566 001020 004067 **.....*.w.v...7.* 100/ 000010 041477 044523 043055 100055 104351 012600 104351 *..?CSI-F-.i...i.* 120/ 005727 000000 001420 052777 040000 176462 104350 052767 *W......U.@2}h.wU* 140/ 000001 000520 012702 000010 012701 007664 012146 077202 *..P.B...A.4.f..~* 160/ 000177 173056 000634 012702 007656 016704 177202 012700 *...v..B...D..~@.* 200/ 001402 104374 105300 002375 000167 176346 010046 005760 *..|.@.}.w.f|&.p.* 220/ 000002 001006 012746 007524 104342 103675 005710 100752 *....f.T.b.=.H.j.* 240/ 005012 121527 000133 001007 004767 000126 121527 000135 *..W#[...w.V.W#].* 260/ 001341 005305 012612 012600 000207 010246 005022 004767 *a.E.......&...w.* 300/ 000062 001425 121527 000072 001007 005762 000002 001004 *2...W#:...r.....* 320/ 011267 000006 004767 000034 012742 015270 062702 000006 *7...w...b.8.Be..* 340/ 011112 121527 000056 001004 004737 010756 005742 022222 *J.W#...._.n.b..$* 360/ 005722 000741 016777 177010 000004 000137 010746 011040 *R.a....~.._.f. .* Stack : 000000 000000 000000 000000 000000 000000 000000 000000 000000 Программный стек Macro-11: MOV (R1),(R2) - Мнемоника команды Rad50 : B7B - Дополнительная информация