Цитата Сообщение от Titus Посмотреть сообщение
Вопрос PDP-шникам - подскажите формат нулевого сектора .SAV файла, какие там битовые поля и чего к чему.
Код:
                      7. ФОРМАТ ФАЙЛА SAV


        ФОРМАТ SAV ИСПОЛЬЗУЕТСЯ ДЛЯ  ПРОГРАММ,  КОТОРЫЕ  БУДУТ
   РАБОТАТЬ В ФОНОВОМ РАЗДЕЛЕ. ЭТОТ ФОРМАТ СОДЕРЖИТ АБСОЛЮТНЫЕ
   АДРЕСА ПАМЯТИ.

        В НУЛЕВОМ БЛОКЕ ФАЙЛА НАХОДИТСЯ ИНФОРМАЦИЯ, СОСТАВЛЕН-
   НАЯ КОМПОНОВЩИКОМ ДЛЯ МОНИТОРА.  ОСТАЛЬНЫЕ  БЛОКИ  СОДЕРЖАТ
   ДВОИЧНЫЕ КОДЫ ПРОГРАММЫ.

        В ЯЧЕЙКАХ НУЛЕВОГО  БЛОКА  ФАЙЛА  НАХОДИТСЯ  СЛЕДУЮЩАЯ
   ИНФОРМАЦИЯ ДЛЯ МОНИТОРА:

   0      - ПЕРВЫЕ ТРИ СИМВОЛА  (VIR)  КЛЮЧА  VIRTUAL  В  КОДЕ
            RAD50; ИСПОЛЬЗУЕТСЯ, ЕСЛИ КОМПОНОВКА ПРОИЗВОДИЛАСЬ
            С КЛЮЧОМ /V;

   2      - ВЕРХНИЙ  ВИРТУАЛЬНЫЙ  АДРЕС  ПАМЯТИ,  ИСПОЛЬЗУЕМЫЙ
            ПРОГРАММОЙ; ИСПОЛЬЗУЕТСЯ, ЕСЛИ  ПРИ  КОМПОНОВКЕ  В
            КОМАНДНОЙ СТРОКЕ БЫЛ УКАЗАН КЛЮЧ /V;

   4 - 12 - НЕ ИСПОЛЬЗУЮТСЯ;

   14, 16 - ВЕКТОР ПРЕРЫВАНИЙ ПО  ИНСТРУКЦИИ  BPT;  УСТАНАВЛИ-
            ВАЕТСЯ  ТОЛЬКО,  ЕСЛИ  ПРИ  РАБОТЕ  XM-МОНИТОРА  В
            КОМАНДНОЙ СТРОКЕ КОМПОНОВЩИКА БЫЛ УКАЗАН КЛЮЧ /R;

   20, 22 - ВЕКТОР ПРЕРЫВАНИЙ ПО  ИНСТРУКЦИИ  IOT;  УСТАНАВЛИ-
            ВАЕТСЯ  ТОЛЬКО  ПРИ  РАБОТЕ  XM-МОНИТОРА,  ЕСЛИ  В
            КОМАНДНОЙ СТРОКЕ КОМПОНОВЩИКА УКАЗАН КЛЮЧ /R;

   24 - 32
          - НЕ ИСПОЛЬЗУЮТСЯ;

   34, 36 - ВЕКТОР ПРЕРЫВАНИЙ ПО ИНСТРУКЦИИ  TRAP;  УСТАНАВЛИ-
            ВАЕТСЯ, ЕСЛИ ПРИ КОМПОНОВКЕ В КОМАНДНОЙ СТРОКЕ БЫЛ
            УКАЗАН КЛЮЧ /R;

   40     - СТАРТОВЫЙ АДРЕС ПРОГРАММЫ;

   42     - НАЧАЛЬНОЕ  ЗНАЧЕНИЕ  УКАЗАТЕЛЯ  СТЕКА  (ИЗМЕНЯЕТСЯ
            КЛЮЧОМ КОМПОНОВЩИКА /M);

   44     - СЛОВО СОСТОЯНИЯ ПРОГРАММЫ (JSW);

   46     - АДРЕС ЗАГРУЗКИ USR (0 ОЗНАЧАЕТ СТАНДАРТНОЕ  РАЗМЕ-
            ЩЕНИЕ);

   50     - ВЕРХНИЙ АДРЕС ПАМЯТИ, ИСПОЛЬЗУЕМЫЙ ПРОГРАММОЙ;

   52 - 54
          - НЕ ИСПОЛЬЗУЮТСЯ;

   56     - В TS-МОНИТОРЕ ИСПОЛЬЗУЕТСЯ  ДЛЯ  УКАЗАНИЯ  РАЗМЕРА
            ОБЛАСТИ В КСЛОВАХ, ТРЕБУЕМОЙ ДЛЯ РАБОТЫ ПРОГРАММЫ;

   60 - 64
          - НЕ ИСПОЛЬЗУЮТСЯ;

   66     - АДРЕС НАЧАЛА БЛОКОВ ОПРЕДЕЛЕНИЯ  ОКОН  (УСТАНАВЛИ-
            ВАЕТСЯ, ЕСЛИ БЫЛ ЗАДАН КЛЮЧ КОМПОНОВЩИКА /V);

   70 - 356
          - НЕ ИСПОЛЬЗУЮТСЯ;

   360 - 377
          - КАРТА ЗАГРУЗКИ ПРОГРАММЫ В ПАМЯТЬ.

        ЯЧЕЙКА 40, СОДЕРЖАЩАЯ АДРЕС ЗАПУСКА  ПРОГРАММЫ,  МОЖЕТ
   БЫТЬ УСТАНОВЛЕНА ПРИ КОМПОНОВКЕ КЛЮЧОМ /TRANSFER. НАПРИМЕР,
   УКАЗАТЬ АДРЕС ЗАПУСКА ПРОГРАММЫ РАВНЫМ 2000 (ВОСЬМЕРИЧНОЕ):

           .LINK PROGR.OBJ/TRANSFER:2000

        ПРОГРАММА PROGR.SAV, СОЗДАВАЕМАЯ КОМПОНОВЩИКОМ,  БУДЕТ
   ЗАПУСКАТЬСЯ С 2000 АДРЕСА. ОБЫЧНО АДРЕС  ЗАПУСКА  ПРОГРАММЫ
   ОПРЕДЕЛЯЕТСЯ ИЗ ДИРЕКТИВЫ .END.

        ЯЧЕЙКИ 360 - 377 В НУЛЕВОМ  БЛОКЕ  ФАЙЛА  ИСПОЛЬЗУЮТСЯ
   КОМПОНОВЩИКОМ ДЛЯ ПЕРЕДАЧИ ИНФОРМАЦИИ О РАСПРЕДЕЛЕНИИ ПАМЯ-
   ТИ KMON. КАЖДЫЙ БИТ ЯЧЕЕК СООТВЕТСТВУЕТ ОПРЕДЕЛЕННОМУ БЛОКУ
   ПАМЯТИ ИЗ 256 СЛОВ И УСТАНАВЛИВАЕТСЯ  В  ТОМ  СЛУЧАЕ,  ЕСЛИ
   ПРОГРАММА ЗАНИМАЕТ ХОТЯ БЫ ОДНО СЛОВО В ДАННОМ БЛОКЕ  ПАМЯ-
   ТИ. ЭТА ИНФОРМАЦИЯ ИСПОЛЬЗУЕТСЯ KMON ДЛЯ ОПРЕДЕЛЕНИЯ, БУДЕТ
   ЛИ ПОЛЬЗОВАТЕЛЬСКАЯ ПРОГРАММА ПЕРЕКРЫВАТЬ KMON И USR.

        ПРИ ЗАГРУЗКЕ НУЛЕВОГО БЛОКА В KMON  ПРОИЗВОДИТСЯ  ПРО-
   ВЕРКА ЯЧЕЕК БЛОКА ОТНОСИТЕЛЬНО БИТОВОЙ СХЕМЫ ЗАЩИТЫ  СИСТЕ-
   МЫ, КОТОРАЯ СОДЕРЖИТСЯ В RMON. В ЯЧЕЙКИ, КОТОРЫЕ ЗАЩИЩЕНЫ В
   СХЕМЕ, ТАКИЕ,  КАК  НАПРИМЕР,  ВЕКТОРЫ  УСТРОЙСТВ  СИСТЕМЫ,
   ЗАПИСЬ ИНФОРМАЦИИ ИЗ НУЛЕВОГО БЛОКА НЕ ПРОИЗВОДИТСЯ.

        КОМАНДЫ МОНИТОРА R И RUN СЛУЖАТ ДЛЯ ЗАГРУЗКИ И ЗАПУСКА
   ПРОГРАММ ТИПА SAV. КОМАНДА RUN ОБ'ЕДИНЯЕТ ДВЕ КОМАНДЫ:  GET
   И START. ПРИ ВЫПОЛНЕНИИ ЭТОЙ КОМАНДЫ KMON СЧИТЫВАЕТ НУЛЕВОЙ
   БЛОК ФАЙЛА ТИПА  SAV  ВО  ВНУТРЕННИЙ  БУФЕР  USR,  ВЫБИРАЕТ
   ИНФОРМАЦИЮ ИЗ ЯЧЕЕК  40-62  И  360-377.  СРАВНИВАЯ  БИТОВУЮ
   ЗАЩИТУ ПАМЯТИ (LOWMAP), НАХОДЯЩУЮСЯ В RMON,  С  ЯЧЕЙКАМИ  В
   НУЛЕВОМ БЛОКЕ, KMON ЗАГРУЖАЕТ В ПАМЯТЬ  (В  СООТВЕТСТВУЮЩУЮ
   ОБЛАСТЬ RMON) ИЗ БУФЕРА USR ТЕ ЯЧЕЙКИ, КОТОРЫЕ НЕ ЗАЩИЩЕНЫ.
   НАПРИМЕР, ВЕКТОРЫ ПРЕРЫВАНИЙ  УСТРОЙСТВ,  ДРАЙВЕРЫ  КОТОРЫХ
   ВКЛЮЧЕНЫ В СИСТЕМНЫЕ ТАБЛИЦЫ RMON, НЕ БУДУТ ИЗМЕНЕНЫ. ЗАТЕМ
   KMON УСТАНАВЛИВАЕТ В ЯЧЕЙКУ 50 ВЕРХНИЙ  АДРЕС  ИСПОЛЬЗУЕМОЙ
   ПАМЯТИ ИЛИ ВЕРХНИЙ АДРЕС ПРОГРАММЫ, КАКИМ БЫ БОЛЬШИМ ОН  НИ
   БЫЛ.

        ПРИ ВЫПОЛНЕНИИ КОМАНДЫ RUN ИЛИ GET KMON ПРОВЕРЯЕТ ВОЗ-
   МОЖНОСТЬ ПЕРЕКРЫТИЯ ЕГО ЗАГРУЖАЕМОЙ  ПРОГРАММОЙ.  ЕСЛИ  ЭТО
   ИМЕЕТ МЕСТО, ТО KMON ПЕРЕСЫЛАЕТ ПЕРЕКРЫВАЮЩИЕ  БЛОКИ  ПРОГ-
   РАММЫ В ФАЙЛ СВОПИНГА SWAP.SYS. ПОСЛЕ ВЫПОЛНЕНИЯ ВСЕХ НЕОБ-
   ХОДИМЫХ ОПЕРАЦИЙ KMON,  ПЕРЕД  ПЕРЕДАЧЕЙ  УПРАВЛЕНИЯ  RMON,
   ПРОИЗВОДИТ СЧИТЫВАНИЕ В ПАМЯТЬ ТЕХ БЛОКОВ ПРОГРАММЫ,  КОТО-
   РЫЕ БЫЛИ ЗАПИСАНЫ В ФАЙЛ SWAP.SYS И ОБМЕНИВАЛИСЬ С  БЛОКАМИ
   KMON И, ВОЗМОЖНО, USR.

         В СЛУЧАЕ ВЫПОЛНЕНИЯ КОМАНДЫ R, KMON НЕ ВЫБИРАЕТ  КАРТУ
   ЗАГРУЗКИ ДЛЯ ПРОСМОТРА, КАКИЕ БЛОКИ ФАЙЛА ДОЛЖНЫ ЗАГРУЖАТЬ-
   СЯ. ВМЕСТО ЭТОГО ОН  ОБРАЩАЕТСЯ  К  RMON  И  СЧИТЫВАЕТ  ВСЮ
   ИНФОРМАЦИЮ В ПАМЯТЬ СВЫШЕ 1000 АДРЕСА (КОМАНДА R НЕ ИСПОЛЬ-
   ЗУЕТ ФАЙЛ SWAP.SYS). МОНИТОР СЧИТАЕТ, ЧТО KMON И  USR  БЫЛИ
   УЖЕ ВЫГРУЖЕНЫ, И НАЧИНАЕТ ВЫПОЛНЕНИЕ ПРОГРАММЫ.