      РУКОВОДСТВО ПО ИСПОЛЬЗОВАНИЮ ПРОГРАММЫ "DESS", V05.00C
       с доработками для БК0011М,  "DESS" V05.11


      Программа  предназначена  для  экранного  редактирования
   файлов в форматах .SAV, .BIN, .SYS и т.п.  под  управлением
   ОС RT-11 V03, V04, V05 , ОС БК-11, с Режимом редактирования
   озу.
      При написании программы использовался алгоритм дизассем-
   блирования,  предложенный  Michael  Levine,  Naval  Weapons
   center и Yukoh Kobayashi, Instraction and research computer
   center, Ohio state university, 1980г.
      В описании функций  и  команд  используются  обозначения
   клавиш терминала БК0011М.


                        ЗАПУСК ПРОГРАММЫ

    .RUN DESS   - если программа находится на DK:
    .R DESS     - если программа находится на SY:

        По своим  возможностям  программа  аналогична  системным
   программам PATCH И SIPP (утилиты RT-11).


                        ВВОД ИМЕНИ ФАЙЛА

   ДЕЙСТВИЕ: имя выходного и входного файла вводится  в  формате
             CSI, если входной  файл  не  найден,  то  программа
             выдаст сообщение:

                   ?DESS-F-FILE NOT FOUND DDN:FILNAM.TYP

             и произойдет рестарт программы.
             В выходной файл  выводится  информация,  полученная
             после использования команд <W>RITE и <T>RACE.
             Если выходной файл не задан, то  вывод  будет  осу-
             ществляться на устройство с логическим именем  LP:.
             На выходной файл запрашивается максимальная свобод-
             ная область на диске.

   ПРИМЕР:   DESS SY:RT11SJ.SYS
             DESS NAME.TXT=SY:NAME.SAV


                       РЕДАКТИРОВАНИЕ ОЗУ

      Для входа в режим  редактирования  ОЗУ,  на  запрос  имени
   файла нажать <ВК>.
            В этом  режиме  не  рекомендуется  адресоваться  к  словам
     с адресами:
   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)


                       ВВОД НОМЕРА БЛОКА

   КОМАНДА:  <B>LOCK

   ДЕЙСТВИЕ: производится чтение указанного блока и вывод дампа

   ПРИМЕРЫ:  BLOCK: 432.
             BLOCK: 14227

   ОШИБКИ:   неверный номер блока, I/O ERROR


                       ВВОД АДРЕСА

   КОМАНДА:  <A>DDRESS

   ДЕЙСТВИЕ: производится вычисление номера блока, его чтение  и
             адресация по указанному адресу. Возможно  использо-
             вать 26-ти  разрядную  адресацию  для  адресации  в
             файлах или дисковых накопителях большой  емкости  к
             блокам с номером большим 177 (128.)

   ПРИМЕРЫ:  ADDRESS: 17556      - блок 1, адрес 556
             ADDRESS: 45076446   - блок 45076, адрес 446

   ОШИБКИ:   неверный адрес, I/O ERROR


                  ПОКОМАНДНЫЙ ПРОСМОТР ФАЙЛА

   КОМАНДА:  <T>RACE

   ДЕЙСТВИЕ: с текущего адреса (ADDR) произойдет дизассемблиро-
             вание программы и изменение адреса на N слов. N -
             количество слов в команде.
             Для начала вывода в выходной файл: <W>RITE.
             Далее - набор команд <T> ...
             Для окончания вывода: <N>OWRITE.

   ПРИМЕР:   MACRO-11: MOV   #001000,SP
             <T>
             MACRO-11: MOV   #002000,R0
             <T>
             MACRO-11: EMT   351

   ОШИБКИ:   конец файла, I/O ERROR


                    ДОПОЛНИТЕЛЬНЫЙ ВЫВОД

    КОМАНДА: <I>NFORMATION

   ДЕЙСТВИЕ: Для задание типа дополнительного вывода надо ввести
             один из следующих символов:

             <R>ADIX   - вывод в радиксе
             <H>EX     - шестнадцатиричный вывод
             <D>ECIMAL - десятичный вывод
             <O>CTAL   - восьмеричный вывод
             <B>YTE    - двоичный вывод
             <V>       - восьмеричный вывод слова как двух байтов
             <ВК>      - для отмены дополнительного вывода

     ПРИМЕР: <I><B>
             BYNARY: 1 000 111 000 111 000


                       ЗАМЕЩЕНИЕ БЛОКА

  КОМАНДА:  <R>EPLACE

  ДЕЙСТВИЕ: происходит замещение текущего блока (используется при
            восстановлении файлов) на блок, находящийся  в  озу.
            Если при записи блока происходит ошибка ("OUTPUT ERROR,
            IGNORE? "), можно еще раз попытаться записать информацию,
            ответив <N>, и, если все-таки запись производится
            с ошибкой, выйти из данного режима можно подтвердив
            игнорирование.
            После возникновения ошибки ВВОДА/ВЫВОДА признак "ИС-
            ПРАВЛЕНИЕ" сбрасывается.

  ПРИМЕР:   <R>
            REPLACE? Y
            OUTPUT ERROR, IGNORE? N
            OUTPUT ERROR, IGNORE? N
            OUTPUT ERROR, IGNORE? Y

   ОШИБКИ:  I/O ERROR


                    ЗАДАНИЕ МОДЕЛИ ПОИСКА

   КОМАНДА:  <M>ODEL
   ДЕЙСТВИЕ: для задания модели надо указать дополнительно тип
             модели:
             <W>ORD    - десятичная/восьмеричная модель слова
             <R>ADIX   - модель слова, заданная в радиксе.
                        В этом режиме необходимо использовать
                        допустимые символы.
             <B>YTE    - модель байта (кроме байта 0)
             <S>TRING  - строковая модель (до 30 байт)
             <P>ATTERN - модель слова, заданная по маске,
                         например:

                     ----------------------------
                     ! МОДЕЛЬ ! НАЙДЕННЫЕ СЛОВА !
                     ----------------------------
                     ! -1-1-1 ! 112121,012131   !
                     ! ---7-- ! 177777,012700   !
                     ! 1----1 ! 122711,104351   !
                     ! ------ ! ЛЮБОЕ СЛОВО     !
                     ----------------------------

             <BK> - отказ от модели

   ПРИМЕР:   MODEL WORD: -1000.          <ВК>
             MODEL RADIX: SYS            <ВК>
             MODEL BYTE: 341             <ВК>
             MODEL STRING: FILE NOT FOUND <ВК>
             MODEL PATTERN: -1-2-3       <ВК>


                       ПОИСК МОДЕЛИ

   КОМАНДА:  <S>EARCH

   ДЕЙСТВИЕ: происходит поиск подели "СВЕРХУ ВНИЗ", прекраще-
             ние поиска - <CTRL>/<C> или КОНЕЦ ФАЙЛА.
             Прерывание поиска по <CTRL>/<C> меняет исходное
             состояние и текущее слово будет равно последнему
             сравниваемому слову (байту). Прекращение поиска
             по КОНЦУ ФАЙЛА сохраняет состояние, существующее
             до поиска.
             При поиске символьных строк учитывается состояние:

             BLOCK N               BLOCK N+1
             +---------------------+---------------------+
             !            /////////!///////////////      !
             +---------------------+---------------------+
             НАЧАЛО МОДЕЛИ     	        	КОНЕЦ МОДЕЛИ

   ОШИБКИ:          I/O ERROR, "МОДЕЛЬ НЕ НАЙДЕНА"


                       ЗАДАНИЕ СМЕЩЕНИЯ

   КОМАНДА:  <O>FFSET

   ДЕЙСТВИЕ: запрашивается величина смещения относительно ADDR:
             NEWADDR = OLDADDR + OFFSET

     ПРИМЕР: ADDR=000000
             <A>
             ADDRESS: 54
             ADDR=SYSPTR
             <@>
             ADDR=¤RMON
             <O>
             OFFSET: 262
             ADDR=¤DATE

   ОШИБКИ:   НЕВЕРНЫЙ АДРЕС, I/O ERROR


               ПЕРЕХОД ПО АДРЕСУ КОМАНДЫ ВЕТВЛЕНИЯ

   КОМАНДА:  <J>UMP

     ДЕЙСТВИЕ: происходит переход по адресу, вычисленному
               дизассемблером, для команд типа BRANCH.
               Старое значение адреса заносится в "STACK".

     ПРИМЕР:   ADDR=001000
               BCC    001012
               <J>
               ADDR=001012

   ОШИБКИ:   НЕВЕРНЫЙ АДРЕС, I/O ERROR


                ВОЗВРАТ ПО АДРЕСУ ИЗ "STACK"

   КОМАНДА:  <K>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


                АССЕМБЛИРОВАНИЕ

   КОМАНДА:  <C>OMMAND

   ДЕЙСТВИЕ: происходит запрос на ввод строки в формате
             дизассемблера программы.

   ПРИМЕР:   MOV    (R1),(R2)   <ВК>


                ВЫХОД ИЗ ПРОГРАММЫ

   КОМАНДА:  <Q>UIT

   ДЕЙСТВИЕ: происходит выход без запроса на замещение.

   КОМАНДА:  <E>XIT

   ДЕЙСТВИЕ: происходит выход с запросом на замещение.

   ПРИМЕР:   <E>XIT
             REPLACE?    <ВК>
             EXIT?       <ВК>

   ОШИБКИ:          I/O ERROR


                             П Р И М Е Ч А Н И Е:

   1. Если   курсор  находится  на  цифровом  поле  дампа   то
      формат вывада дампа (WORDS, BYTES, RADIX) можно изменить
      командой <R>. В формате RADIX перейдите на строчные
      символы.

   2. Для вывода (командой TRACE) дизассемблированной программы
      в выходной файл используйте команду <W>RITE, для
      завершения вывода - команду <N>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. Клавиатура управления курсором:
      Для перехада в символьное поле и обратно
        АР2/стрелка влево, стрелка вправо
      Для перехада на страницу вверх или вниз
        АР2/стрелка влево, стрелка вверх или вниз

   4. Формат дампа на экране дисплея:

    номер блока             адрес слова/байта    тип дампа        	
BLCK=000036/000030.  ADDR=036340/036340   TYPE=WORDS               DESS V05.011
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                - дополнительная информация
                                     (дополнительный вывод)
