Рафос плюс Форматы файлов

Материал из Emuverse
Данный материал защищён авторскими правами!

Использование материала заявлено как добросовестное, исключительно для образовательных некоммерческих целей.







   УТВЕРЖДЕН

   -ЛУ










                 ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ СМ ЭВМ

   ОПЕРАЦИОННАЯ СИСТЕМА ДЛЯ ОРГАНИЗАЦИИ ВЫСОКОПРОИЗВОДИТЕЛЬНЫХ
                  СИСТЕМ С РАЗДЕЛЕНИЕМ ФУНКЦИЙ

                     Р  А  Ф  О  С - П Л Ю С

                         ФОРМАТЫ ФАЙЛОВ

               РУКОВОДСТВО СИСТЕМНОГО ПРОГРАММИСТА







                           ЛИСТОВ 92

























                              1984
  ПЕРВ.ПРИМЕН.
                                                        ЛИТЕРА
 �
                             - 2 -








                           СОДЕРЖАНИЕ




   1.  ВВЕДЕНИЕ                                              4


   2.  ФОРМАТ ИСХОДНОГО ФАЙЛА                                6


   3.  ФОРМАТ ОБ'ЕКТНОГО МОДУЛЯ                              7

   3.1.    БЛОК GSD                                         10
   3.1.1.    ИНФОРМАЦИЯ ОБ ОБ'ЕКТНОМ МОДУЛЕ (КИЭБ=0)        11
   3.1.2.    ИНФОРМАЦИЯ   О    КОНТРОЛЬНОЙ    СЕКЦИИ
             (КИЭБ=1)                                       12
   3.1.3.    ИНФОРМАЦИЯ   О    ТАБЛИЦЕ    ВНУТРЕННИХ
             СИМВОЛОВ (КИЭБ=2)                              13
   3.1.4.    ИНФОРМАЦИЯ О СТАРТОВОМ АДРЕСЕ (КИЭБ=3)         14
   3.1.5.    ИНФОРМАЦИЯ   О   ГЛОБАЛЬНЫХ    СИМВОЛАХ
             (КИЭБ=4)                                       15
   3.1.6.    ИНФОРМАЦИЯ   О    ПРОГРАММНОЙ    СЕКЦИИ
             (КИЭБ=5)                                       16
   3.1.7.    ИДЕНТИФИКАТОР ВЕРСИИ ПРОГРАММЫ (КИЭБ=6)        18
   3.1.8.    ОБ'ЯВЛЕНИЕ МАССИВА ОТОБРАЖЕНИЯ (КИЭБ=7)        19
   3.2.    БЛОК ENDGSD                                      20
   3.3.    БЛОК TXT                                         20
   3.4.    БЛОК RLD                                         21
   3.4.1.    ВНУТРЕННЕЕ ПЕРЕМЕЩЕНИЕ                         23
   3.4.2.    ГЛОБАЛЬНОЕ ПЕРЕМЕЩЕНИЕ                         23
   3.4.3.    ВНУТРЕННЕЕ ПЕРЕМЕЩАЕМОЕ СМЕЩЕНИЕ               24
   3.4.4.    ГЛОБАЛЬНОЕ ПЕРЕМЕЩАЕМОЕ СМЕЩЕНИЕ               24
   3.4.5.    ГЛОБАЛЬНОЕ АДДИТИВНОЕ СМЕЩЕНИЕ                 25
   3.4.6.    ГЛОБАЛЬНОЕ   АДДИТИВНОЕ    ПЕРЕМЕЩАЕМОЕ
             СМЕЩЕНИЕ                                       25
   3.4.7.    ОПРЕДЕЛЕНИЕ СОДЕРЖИМОГО СЧЕТЧИКА АДРЕСА        26
   3.4.8.    МОДИФИКАЦИЯ СЧЕТЧИКА АДРЕСОВ                   26
   3.4.9.    УСТАНОВКА ГРАНИЦ ПРОГРАММЫ                     27
   3.4.10.   СМЕЩЕНИЕ ПРОГРАММНОЙ СЕКЦИИ                    27
   3.4.11.   ПЕРЕМЕЩАЕМОЕ    СМЕЩЕНИЕ    ПРОГРАММНОЙ
             СЕКЦИИ                                         28
   3.4.12.   АДДИТИВНОЕ СМЕЩЕНИЕ ПРОГРАММНОЙ СЕКЦИИ         29
   3.4.13.   АДДИТИВНОЕ    ПЕРЕМЕЩАЕМОЕ     СМЕЩЕНИЕ
             ПРОГРАММНОЙ СЕКЦИИ                             29
   3.4.14.   СЛОЖНОЕ СМЕЩЕНИЕ                               30
   3.5.    БЛОК ENDMOD                                      32

   4.  ФОРМАТ ФАЙЛА STB                                     33


   5.  ФОРМАТ БИБЛИОТЕЧНЫХ ФАЙЛОВ                           34

   5.1.    СТРУКТУРА МАКРОБИБЛИОТЕКИ                        36
   5.2.    СТРУКТУРА ОБ'ЕКТНОЙ БИБЛИОТЕКИ                   38
 �
                             - 3 -




   5.3.    ФОРМАТ БЛОКА КОНЦА БИБЛИОТЕКИ                    39

   6.  ФОРМАТ ФАЙЛА LDA                                     40


   7.  ФОРМАТ ФАЙЛА SAV                                     42


   8.  ФОРМАТ ФАЙЛА REL                                     44

   8.1.    НЕОВЕРЛЕЙНАЯ ОПЕРАТИВНАЯ ПРОГРАММА               45
   8.2.    ОВЕРЛЕЙНАЯ ОПЕРАТИВНАЯ ПРОГРАММА                 46

   9.  ФОРМАТ ФАЙЛА ПЕРЕКРЕСТНЫХ ССЫЛОК                     49


   10. ФОРМАТ ФАЙЛА ПРОТОКОЛИРОВАНИЯ ОШИБОК                 51


   11. СТРУКТУРА УСТРОЙСТВА ПРЯМОГО ДОСТУПА                 55

   11.1.   БЛОК ИНФОРМАЦИИ СИСТЕМЫ                          56
   11.2.   КАТАЛОГ ФАЙЛОВ                                   58
   11.2.1.   ФОРМАТ ЗАГОЛОВКА СЕГМЕНТА КАТАЛОГА             58
   11.2.2.   ФОРМАТ ЗАПИСИ О ФАЙЛЕ В КАТАЛОГЕ               59
   11.2.2.1. СЛОВО СОСТОЯНИЯ ФАЙЛА                          60
   11.2.2.2. ИМЯ И ТИП ФАЙЛА                                61
   11.2.2.3. ДЛИНА ФАЙЛА                                    61
   11.2.2.4. НОМЕР ЗАДАНИЯ (ЛИНИИ) И НОМЕР КАНАЛА           61
   11.2.2.5. ДАТА                                           62
   11.2.2.6. ДОПОЛНИТЕЛЬНЫЕ СЛОВА                           63
   11.3.   РАЗМЕР И КОЛИЧЕСТВО ФАЙЛОВ, РАЗМЕЩЕННЫХ
           НА НОСИТЕЛЕ                                      63
   11.4.   АЛГОРИТМ ЗАПОЛНЕНИЯ СЕГМЕНТОВ ЗАПИСЯМИ           65
   11.4.1.   ВОССТАНОВЛЕНИЕ    ДАННЫХ    В    СЛУЧАЕ
             ПОЯВЛЕНИЯ ДЕФЕКТНЫХ БЛОКОВ В КАТАЛОГЕ          67
   11.4.1.1. ПРОВЕРКА СЕГМЕНТА 1                            67
   11.4.1.2. ОПРЕДЕЛЕНИЕ СТРУКТУРЫ СВЯЗИ СЕГМЕНТОВ          68
   11.4.1.3. ПОЛУЧЕНИЕ  ДАННЫХ  ИЗ   СЕГМЕНТОВ,   НЕ
             СОДЕРЖАЩИХ ДЕФЕКТНЫЕ БЛОКИ                     70
   11.4.1.4. ПОЛУЧЕНИЕ   ДАННЫХ   ИЗ   СЕГМЕНТА    С
             ДЕФЕКТНЫМИ БЛОКАМИ                             70
   11.5.   СОЗДАНИЕ И РАЗМЕЩЕНИЕ ФАЙЛОВ В СИСТЕМЕ           71
   11.6.   ГИБКИЕ ДИСКИ В ФОРМАТЕ ОБМЕНА                    73
   11.7.   МНОГОТОМНАЯ ФАЙЛОВАЯ СТРУКТУРА                   76
   11.7.1.   РАБОТА  С  ВИРТУАЛЬНЫМИ  НОСИТЕЛЯМИ   В
             RM/SJ/FB/XM-МОНИТОРАХ                          77
   11.7.1.1. ДРАЙВЕР ВИРТУАЛЬНОГО ФАЙЛОВОГО НОСИТЕЛЯ        77
   11.7.1.2. СТРУКТУРА КАТАЛОГА ДИСКА И ВИРТУАЛЬНОГО
             НОСИТЕЛЯ                                       78
   11.7.2.   РАБОТА  С  ВИРТУАЛЬНЫМИ  НОСИТЕЛЯМИ   В
             TS-МОНИТОРЕ                                    81

   12. СТРУКТУРА УСТРОЙСТВА ПОСЛЕДОВАТЕЛЬНОГО ДОСТУПА       83

   12.1.   СТРУКТУРА ФАЙЛОВ НА МАГНИТНОЙ ЛЕНТЕ              83
   12.2.   СТРУКТУРА КАССЕТНОГО ФАЙЛА                       87


 �
                             - 4 -




                          1. ВВЕДЕНИЕ




        СИСТЕМА УПРАВЛЯЕТ ТРЕМЯ ТИПАМИ ИНФОРМАЦИИ:

          - СИМВОЛЬНОЙ;
          - ФОРМАТНОЙ ДВОИЧНОЙ;
          - НЕФОРМАТНОЙ ДВОИЧНОЙ.

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

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

        ПОСЛЕ ОБРАБОТКИ ОБ'ЕКТНОГО ФАЙЛА КОМПОНОВЩИКОМ  (ПРОГ-
   РАММА LINK) ПОЛУЧЕННЫЙ ФАЙЛ СОДЕРЖИТ  НЕФОРМАТНЫЙ  ДВОИЧНЫЙ
   ТИП ИНФОРМАЦИИ. ЭТОТ ЖЕ ТИП ИНФОРМАЦИИ СОДЕРЖАТ ФАЙЛЫ  ДАН-
   НЫХ.

        В СИСТЕМЕ СУЩЕСТВУЮТ ТРИ ФОРМАТА ФАЙЛОВ (РИС. 1):

          - ИСХОДНЫЕ (ТИП MAC, FOR, DAT, BAS И ДР.); ЭТО ПРОГ-
            РАММЫ ИЛИ ДАННЫЕ В СИМВОЛЬНОМ ВИДЕ;

          - ОБ'ЕКТНЫЕ (ТИП OBJ); ОНИ ОБРАЗУЮТСЯ  В  РЕЗУЛЬТАТЕ
            ТРАНСЛЯЦИИ ИСХОДНЫХ ФАЙЛОВ; ОБ'ЕКТНЫЙ  ФАЙЛ  МОЖЕТ
            СОСТОЯТЬ ИЗ ОДНОГО ИЛИ НЕСКОЛЬКИХ ОБ'ЕКТНЫХ  МОДУ-
            ЛЕЙ; ОБ'ЕДИНЕНИЕ ЭТИХ  МОДУЛЕЙ  В  ОБ'ЕКТНЫЙ  ФАЙЛ
            ОСУЩЕСТВЛЯЕТСЯ С  ПОМОЩЬЮ  КОМАНДЫ  COPY  И  КЛЮЧА
            /CONCATENATE; БИБЛИОТЕЧНЫЕ ФАЙЛЫ НЕЛЬЗЯ ОБ'ЕДИНЯТЬ
            С ПОМОЩЬЮ ЭТОЙ КОМАНДЫ,  ОНИ  ОБРАБАТЫВАЮТСЯ  СПЕ-
            ЦИАЛЬНОЙ ПРОГРАММОЙ БИБЛИОТЕКАРЬ (LIBR);

          - В  ФОРМАТЕ  ЗАГРУЗКИ  (ТИП  SAV,  REL,  LDA);  ЭТО
            ОБ'ЕКТНЫЕ ФАЙЛЫ, СКОМПОНОВАННЫЕ  ПРОГРАММОЙ  LINK;
            КОМПОНОВЩИК  СОЗДАЕТ  ИЗ  ОБ'ЕКТНОГО   ФАЙЛА   ИЛИ
            ФАЙЛ-"КОПИЮ ПАМЯТИ" (SAV)  ДЛЯ  ФОНОВОГО  РАЗДЕЛА,
            ИЛИ ПЕРЕМЕЩАЕМЫЙ ФАЙЛ (REL) ДЛЯ ОПЕРАТИВНОГО  РАЗ-
            ДЕЛА,  ИЛИ  ФАЙЛ  В  ФОРМАТЕ  АБСОЛЮТНОЙ  ЗАГРУЗКИ
            (LDA); ТИП ФАЙЛА ЗАВИСИТ ОТ КЛЮЧА,  КОТОРЫЙ  БУДЕТ
            ЗАДАН В КОМАНДЕ LINK.














 �
                             - 5 -




              СХЕМА ПРЕОБРАЗОВАНИЯ ФАЙЛОВ В СИСТЕМЕ


                         ИСХОДНЫЕ  ФАЙЛЫ

        !-------!           !-------!           !-------!
        ! *.MAC !           ! *.FOR !           ! *.XXX !
        !-------!           !-------!           !-------!
            !                   !                   !
            !                   !                   !
            Y                   Y                   Y
    !----------------!    !------------!    !---------------!
    !                !    ! КОМПИЛЯТОР !    !  КОМПИЛЯТОР,  !
    ! МАКРОАССЕМБЛЕР !    !            !    !  НАПИСАННЫЙ   !
    !                !    !  ФОРТРАН   !    ! ПОЛЬЗОВАТЕЛЕМ !
    !----------------!    !------------!    !---------------!
            !                   !                   !
            !         ОБ'ЕКТНЫЕ ! ФАЙЛЫ (МОДУЛИ)    !
            Y                   Y                   Y
        !-------!           !-------!           !-------!
        ! *.OBJ !           ! *.OBJ !           ! *.OBJ !
        !-------!           !-------!           !-------!
            !                   !                   !
            Y                   Y                   Y
            !-------------------!-------------------!
                           !                     !
                           !                     !
                           !                     Y
                           !                !---------------!
                           !   !-------!    !               !
                           !   ! *.OBJ !<---! БИБЛИОТЕКАРЬ  !
                           !   !-------!    !               !
            !----------!   !       !        !---------------!
            !          !   !       !
            !          Y   Y       Y
            !        !---------------!
        !-------!    !               !
        ! *.STB !<---!  КОМПОНОВЩИК  !
        !-------!    !               !
                     !---------------!
                         !   !   !
                 !-------!   !   !-------!
                 !           !           !
                 Y           Y           Y
             !-------!   !-------!   !-------!  ФАЙЛЫ
             ! *.SAV !   ! *.REL !   ! *.LDA !  В ФОРМАТЕ
             !-------!   !-------!   !-------!  ЗАГРУЗКИ



                             РИС. 1








 �
                             - 6 -




                   2. ФОРМАТ ИСХОДНОГО ФАЙЛА




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

        ОБЫЧНО ТЕКСТОВЫЙ ФАЙЛ РАЗБИВАЕТСЯ НА "СТРАНИЦЫ", КОТО-
   РЫЕ ОТДЕЛЯЮТСЯ ДРУГ  ОТ  ДРУГА  УПРАВЛЯЮЩИМ  СИМВОЛОМ  <FF>
   (ПЕРЕВОД СТРАНИЦЫ). СТРАНИЦЫ МОГУТ РАЗБИВАТЬСЯ  НА  СТРОКИ,
   КОТОРЫЕ ОТДЕЛЯЮТСЯ ДРУГ ОТ ДРУГА ПОСЛЕДОВАТЕЛЬНОСТЬЮ УПРАВ-
   ЛЯЮЩИХ СИМВОЛОВ <CR><LF>. ТЕКСТОВЫЕ  ФАЙЛЫ  НЕ  ИМЕЮТ  СПЕ-
   ЦИАЛЬНЫХ ЗАГОЛОВКОВ ИЛИ БЛОКОВ ОКОНЧАНИЯ И НЕ СОДЕРЖАТ ФОР-
   МАТНЫХ ДВОИЧНЫХ БЛОКОВ.

        КОД 32 (ИЛИ <CTRL/Z>) МОЖЕТ ЗАВЕРШАТЬ ТЕКСТОВОЙ  ФАЙЛ.
   ЕСЛИ КОМАНДНАЯ СТРОКА ДЛЯ PIP ЗАДАНА С КЛЮЧОМ /A (ИЛИ  ЕСЛИ
   ИСПОЛЬЗУЕТСЯ КОМАНДА МОНИТОРА COPY/ASCII)  ДЛЯ  КОПИРОВАНИЯ
   ТЕКСТОВЫХ ФАЙЛОВ, ТО ПРИ ВЫПОЛНЕНИИ ОПЕРАЦИИ ОНА  ОСУЩЕСТВ-
   ЛЯЕТ ПРОВЕРКУ НА  НАЛИЧИЕ  УПРАВЛЯЮЩЕГО  СИМВОЛА  <CTRL/Z>.
   ЕСЛИ ФАЙЛ СОДЕРЖИТ  <CTRL/Z>,  PIP  ПРЕДПОЛАГАЕТ,  ЧТО  ЭТО
   КОНЕЦ ФАЙЛА. ЕСЛИ PIP ИСПОЛЬЗУЕТСЯ В РЕЖИМЕ "ПО  УМОЛЧАНИЮ"
   (ИЛИ ЗАДАНА КОМАНДА МОНИТОРА COPY БЕЗ КЛЮЧЕЙ) ДЛЯ КОПИРОВА-
   НИЯ  ТЕКСТОВОГО  ФАЙЛА,  ОНА   НЕ   ОТСЛЕЖИВАЕТ   ПОЯВЛЕНИЕ
   <CTRL/Z>. КОПИРОВАНИЕ ПРОДОЛЖАЕТСЯ ДО ОБНАРУЖЕНИЯ  ФИЗИЧЕС-
   КОГО КОНЦА ФАЙЛА.





























 �
                             - 7 -




                  3. ФОРМАТ ОБ'ЕКТНОГО МОДУЛЯ




        ОБЫЧНО МОДУЛЬ  ПРОГРАММЫ,  НАПИСАННЫЙ  НА  АССЕМБЛЕРЕ,
   НАЧИНАЕТСЯ С ДИРЕКТИВЫ .TITLE (ЗА КОТОРОЙ СЛЕДУЕТ ИМЯ МОДУ-
   ЛЯ) И ЗАКАНЧИВАЕТСЯ ДИРЕКТИВОЙ .END (ПРИЗНАК КОНЦА ПРОГРАМ-
   МЫ). ЕСЛИ ИМЯ МОДУЛЯ ОТСУТСТВУЕТ, ТО, ПО УМОЛЧАНИЮ,  МОДУЛЬ
   ПОЛУЧАЕТ ИМЯ ".MAIN.".

        ОБ'ЕКТНЫЙ МОДУЛЬ ОБЫЧНО СОЗДАЕТСЯ ПРИ  АССЕМБЛИРОВАНИИ
   ИЛИ ПРИ КОМПИЛЯЦИИ, ЕСЛИ ИСХОДНЫЙ МОДУЛЬ НАПИСАН  НА  ЯЗЫКЕ
   ВЫСОКОГО УРОВНЯ (ИСКЛЮЧАЯ ПАСКАЛЬ).

        МОДУЛЬ СОСТОИТ ИЗ ДВОИЧНЫХ БЛОКОВ. КАЖДЫЙ БЛОК  -  ЭТО
   ПОСЛЕДОВАТЕЛЬНОСТЬ БАЙТОВ, КОТОРАЯ МОЖЕТ ХРАНИТЬСЯ НА ЛЮБОМ
   ВНЕШНЕМ НОСИТЕЛЕ, В ТОМ ЧИСЛЕ И НА ПЕРФОЛЕНТЕ.

        СТРУКТУРА ДВОИЧНОГО БЛОКА ПРЕДСТАВЛЕНА НА РИС. 2.

             !-------------------------!-----
             !            1            !   A
             !-----               -----!   !
             !            0            !   !
             !-------------------------!   !
             !     СЧЕТЧИК  БАЙТОВ     ! КОЛИЧЕСТВО БАЙТОВ,
             !-----               -----! УКАЗАННОЕ
             !        В БЛОКЕ          ! В СЧЕТЧИКЕ
             !-------------------------!   !
             .                         .   !
             .        Д А Н Н Ы Е      .   !
             .                         .   V
             !-------------------------!-----
             ! БАЙТ КОНТРОЛЬНОЙ СУММЫ  !
             !        БЛОКА            !
             !-------------------------!

                      РИС. 2

        ПЕРВЫЕ ДВА БАЙТА КАЖДОГО БЛОКА СОДЕРЖАТ  ИДЕНТИФИКАТОР
   НАЧАЛА БЛОКА:

                 МЛАДШИЙ БАЙТ - 1;
                 СТАРШИЙ БАЙТ - 0.

        2-Й И 3-Й БАЙТЫ ЯВЛЯЮТСЯ СЧЕТЧИКОМ И  УКАЗЫВАЮТ  КОЛИ-
   ЧЕСТВО БАЙТОВ В БЛОКЕ (БАЙТ КОНТРОЛЬНОЙ СУММЫ НЕ УЧИТЫВАЕТ-
   СЯ).

        ЗНАЧЕНИЕ БАЙТА КОНТРОЛЬНОЙ  СУММЫ  БЛОКА  РАВНО  СУММЕ
   ЗНАЧЕНИЙ ВСЕХ БАЙТОВ БЛОКА  В  ДОПОЛНИТЕЛЬНОМ  КОДЕ.  ТАКИМ
   ОБРАЗОМ, СУММА ВСЕХ БАЙТОВ БЛОКА (ВКЛЮЧАЯ КОНТРОЛЬНУЮ  СУМ-
   МУ) ДОЛЖНА БЫТЬ РАВНА НУЛЮ.

        ДАННЫЕ, НАХОДЯЩИЕСЯ  В  ДВОИЧНОМ  БЛОКЕ,  ОПРЕДЕЛЯЮТСЯ
   ТИПОМ БЛОКА. ТИП БЛОКА ЗАПИСЫВАЕТСЯ В ТРЕТЬЕ СЛОВО ДВОИЧНО-
   ГО БЛОКА.

 �
                             - 8 -




        КАЖДЫЙ ТИП БЛОКА ИМЕЕТ СВОЙ  КОД  ИДЕНТИФИКАТОРА  ТИПА
   БЛОКА (КОД ИТБ). ТИПЫ БЛОКОВ ПРЕДСТАВЛЕНЫ В ТАБЛ. 1.

                                          ТАБЛИЦА 1
              -------------------------------------
               КОД ИТБ ! ТИП БЛОКА !    ФУНКЦИЯ
              -------------------------------------
                       !           ! ИНФОРМАЦИЯ О
                  1    !      GSD  ! ГЛОБАЛЬНЫХ
                       !           ! СИМВОЛАХ
              ---------!-----------!---------------
                       !           ! ПРИЗНАК КОНЦА
                  2    !   ENDGSD  ! БЛОКОВ GSD В
                       !           ! МОДУЛЕ
              ---------!-----------!---------------
                       !           ! МАШИННЫЕ
                  3    !      TXT  ! КОДЫ
                       !           ! ПРОГРАММЫ
              ---------!-----------!---------------
                       !           ! ИНФОРМАЦИЯ О
                  4    !      RLD  ! ПЕРЕМЕЩАЕМЫХ
                       !           ! ЛОКАЛЬНЫХ
                       !           ! СИМВОЛАХ
              ---------!-----------!---------------
                       !           ! ИНФОРМАЦИЯ О
                       !           ! ВНУТРЕННИХ
                  5    !      ISD  ! СИМВОЛАХ (НЕ
                       !           ! ПОДДЕРЖИВАЕТСЯ
                       !           ! СИСТЕМОЙ)
              ---------!-----------!---------------
                       !           ! ПРИЗНАК КОНЦА
                  6    !   ENDMOD  ! ОБ'ЕКТНОГО
                       !           ! МОДУЛЯ
              ---------!-----------!---------------
                       !           ! ЗАГОЛОВОК
                  7    !   TITLIB  ! БИБЛИОТЕЧНОГО
                       !           ! ФАЙЛА
              ---------!-----------!---------------
                       !           ! ПРИЗНАК КОНЦА
                 10    !   ENDLIB  ! БИБЛИОТЕЧНОГО
                       !           ! ФАЙЛА

        ПЕРВЫМ БЛОКОМ ОБ'ЕКТНОГО МОДУЛЯ ДОЛЖЕН БЫТЬ БЛОК  GSD.
   ЕСЛИ В МОДУЛЕ СОДЕРЖИТСЯ НЕСКОЛЬКО БЛОКОВ GSD, ТО ЭТИ БЛОКИ
   МОГУТ ЧЕРЕДОВАТЬСЯ С ДРУГИМИ БЛОКАМИ (РИС.  3).  ВСЕ  БЛОКИ
   GSD ДОЛЖНЫ БЫТЬ РАСПОЛОЖЕНЫ ПЕРЕД  БЛОКОМ  ENDGSD  (ПРИЗНАК
   КОНЦА БЛОКОВ GSD). БЛОК ISD МОЖЕТ БЫТЬ РАСПОЛОЖЕН  В  ЛЮБОМ
   МЕСТЕ МЕЖДУ БЛОКАМИ GSD И ENDMOD.

        НЕОБХОДИМО ОБ'ЯВИТЬ  ВСЕ  ПРОГРАММНЫЕ  СЕКЦИИ  (PSECT,
   VSECT И CSECT), ОПРЕДЕЛЯЕМЫЕ В МОДУЛЕ  В  БЛОКАХ  GSD.  ПРИ
   РЕЗЕРВИРОВАНИИ ОБЛАСТИ ДЛЯ СЕКЦИИ РАЗМЕР КАЖДОЙ  ОПРЕДЕЛЯЕ-
   МОЙ ПРОГРАММНОЙ СЕКЦИИ УКАЗЫВАЕТСЯ В БАЙТАХ.

        ЕСЛИ ПРОГРАММНАЯ СЕКЦИЯ ОБ'ЯВЛЯЕТСЯ  НЕСКОЛЬКО  РАЗ  В
   ОДНОМ И ТОМ ЖЕ ОБ'ЕКТНОМ МОДУЛЕ, КОМПОНОВЩИК  УСТАНАВЛИВАЕТ
   САМЫЙ БОЛЬШОЙ ОБ'ЯВЛЕННЫЙ РАЗМЕР ДЛЯ ЭТОЙ СЕКЦИИ. ВСЕ  ГЛО-
   БАЛЬНЫЕ СИМВОЛЫ, КОТОРЫЕ ОПРЕДЕЛЕНЫ  В  ДАННОЙ  ПРОГРАММНОЙ
   СЕКЦИИ, ДОЛЖНЫ БЫТЬ ОПИСАНЫ В БЛОКАХ  GSD,  НЕПОСРЕДСТВЕННО
 �
                             - 9 -




   СЛЕДУЮЩИХ ЗА ОБ'ЯВЛЕНИЕМ ЭТОЙ ПРОГРАММНОЙ СЕКЦИИ.

        СПЕЦИАЛЬНАЯ ПРОГРАММНАЯ СЕКЦИЯ, НАЗЫВАЕМАЯ  АБСОЛЮТНОЙ
   СЕКЦИЕЙ (.ABS.), РАЗМЕЩАЕТСЯ КОМПОНОВЩИКОМ, НАЧИНАЯ С ЯЧЕЙ-
   КИ 0 В ПАМЯТИ (ОЗУ). НЕПОСРЕДСТВЕННО ПОСЛЕ  ТИПА  ЗАПИСИ  В
   БЛОКЕ GSD, КОТОРЫЙ ОПРЕДЕЛЯЕТ АБСОЛЮТНУЮ СЕКЦИЮ, ОБ'ЯВЛЯЮТ-
   СЯ ВСЕ ГЛОБАЛЬНЫЕ СИМВОЛЫ, КОТОРЫЕ СОДЕРЖАТ АБСОЛЮТНЫЕ ЗНА-
   ЧЕНИЯ (НЕПЕРЕМЕЩАЕМЫЕ).

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

        ГЛОБАЛЬНЫЙ СИМВОЛ, НА КОТОРЫЙ ИМЕЮТСЯ ССЫЛКИ, НО КОТО-
   РЫЙ НЕ ОПРЕДЕЛЕН В ТЕКУЩЕМ ОБ'ЕКТНОМ МОДУЛЕ,  ДОЛЖЕН  ТАКЖЕ
   БЫТЬ ОПИСАН В БЛОКЕ GSD. ЭТИ ГЛОБАЛЬНЫЕ ССЫЛКИ  МОГУТ  БЫТЬ
   ОПИСАНЫ В ЛЮБОМ БЛОКЕ GSD (КРОМЕ  САМОГО  ПЕРВОГО,  КОТОРЫЙ
   СОДЕРЖИТ ИМЯ МОДУЛЯ) ПОСЛЕ  АБСОЛЮТНОЙ  PSECT.  ОНИ  ВСЕГДА
   ОПРЕДЕЛЯЮТ ПОСЛЕДНЮЮ ОБ'ЯВЛЕННУЮ PSECT.


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

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



























 �
                             - 10 -




                    ФОРМАТ ОБ'ЕКТНОГО МОДУЛЯ


             !--------!
             !   GSD  !  ИНИЦИАЛИЗАЦИЯ БЛОКОВ GSD
             !--------!
             !   RLD  !  ИНИЦИАЛИЗАЦИЯ БЛОКОВ RLD
             !--------!
             !   GSD  !  ДОПОЛНИТЕЛЬНЫЙ БЛОК GSD
             !--------!---
             !   TXT  ! !
             !--------! !  ТЕКСТОВЫЕ БЛОКИ
             !   TXT  ! V
             !--------!---
             !   RLD  !  ИНФОРМАЦИЯ О ПЕРЕМЕЩАЕМЫХ
             !--------!  ЛОКАЛЬНЫХ СИМВОЛАХ
                 ...
                 ...
                 ...
             !--------!
             !   GSD  !
             !--------!
             ! ENDGSD !  БЛОК КОНЦА БЛОКОВ GSD
             !--------!---
             !   ISD  ! !  ИНФОРМАЦИЯ О
             !--------! !  ВНУТРЕННИХ
             !   ISD  ! V  СИМВОЛАХ
             !--------!---
             !   TXT  !
             !--------!
             !   TXT  !
             !--------!
             !   TXT  !
             !--------!
             !   RLD  !
             !--------!
             ! ENDMOD !  БЛОК КОНЦА МОДУЛЯ
             !--------!

                             РИС. 3

        БЛОК ENDMOD (ПРИЗНАК КОНЦА ОБ'ЕКТНОГО  МОДУЛЯ)  ДОЛЖЕН
   БЫТЬ ПОСЛЕДНИМ В ОБ'ЕКТНОМ МОДУЛЕ.



        3.1. БЛОК GSD



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

        БЛОК GSD СОСТОИТ ИЗ ЭЛЕМЕНТОВ, КАЖДЫЙ ИЗ КОТОРЫХ ИМЕЕТ
   ФОРМАТ, ПРЕДСТАВЛЕННЫЙ НА РИС. 4.



 �
                             - 11 -




               ФОРМАТ ЭЛЕМЕНТА БЛОКА


               !-------------------!  ИДЕНТИФИКАТОР
               !    0    !    1    !  БЛОКА GSD
               !-------------------!
               ! ИМЯ В КОДЕ RAD50  !
               !---             ---!
               !     (2 СЛОВА)     !
               !---------!---------!
               !  КИЭБ   ! ФЛАЖКИ  !
               !---------!---------!
               ! ДЛИНА ИЛИ СМЕЩЕНИЕ!
               !-------------------!

                      РИС. 4

        СТАРШИЙ БАЙТ ЧЕТВЕРТОГО СЛОВА БЛОКА GSD  СОДЕРЖИТ  КОД
   ИДЕНТИФИКАТОРА ЭЛЕМЕНТА БЛОКА (КИЭБ). ЗНАЧЕНИЕ КИЭБ  УКАЗЫ-
   ВАЕТ НА ТИП СОДЕРЖАЩЕЙСЯ ИНФОРМАЦИИ:

   0      - ИНФОРМАЦИЯ ОБ ОБ'ЕКТНОМ МОДУЛЕ;

   1      - ИМЯ КОНТРОЛЬНОЙ СЕКЦИИ (.CSECT);

   2      - ИМЯ  ТАБЛИЦЫ  ВНУТРЕННИХ  СИМВОЛОВ  (СИСТЕМОЙ   НЕ
            ИСПОЛЬЗУЕТСЯ);

   3      - ИНФОРМАЦИЯ О СТАРТОВОМ АДРЕСЕ;

   4      - ИНФОРМАЦИЯ О ГЛОБАЛЬНЫХ СИМВОЛАХ;

   5      - ИНФОРМАЦИЯ О ПРОГРАММНОЙ  СЕКЦИИ  (.ASECT,  .CSECT
            ИЛИ .PSECT);

   6      - ИДЕНТИФИКАТОР ВЕРСИИ ПРОГРАММЫ (.IDENT);

   7      - ИНФОРМАЦИЯ   О   ВИРТУАЛЬНОЙ   СЕКЦИИ    ПРОГРАММЫ
            (.VSECT).



        3.1.1. ИНФОРМАЦИЯ ОБ ОБ'ЕКТНОМ МОДУЛЕ (КИЭБ=0)



        ЭЛЕМЕНТ ОБ'ЕКТНОГО  МОДУЛЯ  ОБ'ЯВЛЯЕТ  ИМЯ  ОБ'ЕКТНОГО
   МОДУЛЯ И ИМЕЕТ СТРУКТУРУ, ПРЕДСТАВЛЕННУЮ НА РИС. 5.











 �
                             - 12 -




             !-----------------!
             !   ИМЯ МОДУЛЯ    !
             !---           ---!
             !   В КОДЕ RAD50  !
             !-----------------!
             !    0   !   0    !
             !-----------------!
             !        0        !
             !-----------------!

                   РИС. 5

        ИМЯ  ОБ'ЕКТНОГО  МОДУЛЯ  НЕ  ОБЯЗАНО  БЫТЬ  УНИКАЛЬНЫМ
   (ЕДИНСТВЕННЫМ) ПО ОТНОШЕНИЮ  К  ДРУГИМ  ОБ'ЕКТНЫМ  МОДУЛЯМ,
   ПОСКОЛЬКУ МОДУЛИ ИДЕНТИФИЦИРУЮТСЯ ФАЙЛОМ, А НЕ ИМЕНЕМ МОДУ-
   ЛЯ. ОДНАКО ТОЛЬКО ОДНО ИМЯ МОДУЛЯ МОЖЕТ  БЫТЬ  ОБ'ЯВЛЕНО  В
   ОДНОМ ОБ'ЕКТНОМ МОДУЛЕ.

        ЭЛЕМЕНТ ОБ'ЕКТНОГО МОДУЛЯ СОДЕРЖИТ СЛЕДУЮЩУЮ  ИНФОРМА-
   ЦИЮ:

   СЛОВА 1 И 2
          - ИМЯ МОДУЛЯ В  КОДЕ  RAD50;  ИМЯ  МОДУЛЯ  ДАЕТСЯ  В
            ДИРЕКТИВЕ .TITLE;

   СЛОВО 3
          - МЛАДШИЙ БАЙТ (ФЛАЖКИ) = 0;
          - СТАРШИЙ БАЙТ (КИЭБ) = 0;

   СЛОВО 4
          - СМЕЩЕНИЕ = 0.



        3.1.2. ИНФОРМАЦИЯ   О    КОНТРОЛЬНОЙ    СЕКЦИИ
               (КИЭБ=1)



        ЗАПИСЬ СОДЕРЖИТ ИМЯ  КОНТРОЛЬНОЙ  СЕКЦИИ.  КОМПОНОВЩИК
   ПРЕОБРАЗУЕТ КОНТРОЛЬНЫЕ СЕКЦИИ  (КОТОРЫЕ  ВКЛЮЧАЮТ  .ASECT,
   НЕИМЕНОВАННУЮ  И  ИМЕНОВАННЫЕ  .CSECT)  В   СООТВЕТСТВУЮЩИЕ
   .PSECT. ЭТО ПРЕОБРАЗОВАНИЕ ВЫПОЛНЯЕТСЯ ДЛЯ СОВМЕСТИМОСТИ  С
   ДРУГИМИ СИСТЕМАМИ.

        ФОРМАТ КОНТРОЛЬНОЙ СЕКЦИИ ПРЕДСТАВЛЕН НА РИС. 6.

             !-------------------!
             !  ИМЯ КОНТРОЛЬНОЙ  !
             !---             ---!
             !СЕКЦИИ В КОДЕ RAD50!
             !-------------------!
             !    1   !НЕ ИСПОЛЬ-!
             !        ! ЗУЕТСЯ   !
             !-------------------!
             ! МАКСИМАЛЬНАЯ ДЛИНА!
             !-------------------!

                   РИС. 6
 �
                             - 13 -




        МОЖНО ОБ'ЯВИТЬ .ASECT И  .CSECT  С  ПОМОЩЬЮ  ДИРЕКТИВЫ
   .PSECT.  НАПРИМЕР,  ДЛЯ  ОБ'ЯВЛЕНИЯ  НЕИМЕНОВАННОЙ   .CSECT
   ИСПОЛЬЗУЕТСЯ .PSECT СО СЛЕДУЮЩИМИ АТРИБУТАМИ:

           .PSECT ,RW,I,LCL,REL,CON

        ДЛЯ ОБ'ЯВЛЕНИЯ ИМЕНОВАННОЙ .CSECT ИСПОЛЬЗУЕТСЯ  .PSECT
   СО СЛЕДУЮЩИМИ АТРИБУТАМИ:

           .PSECT NAME,RW,I,GBL,REL,OVR

        ДЛЯ ОБ'ЯВЛЕНИЯ .ASECT ИСПОЛЬЗУЕТСЯ .PSECT СО СЛЕДУЮЩИ-
   МИ АТРИБУТАМИ:

           .PSECT .ABS.,RW,I,GBL,ABS,OVR

        КОМПОНОВЩИК ПРЕОБРАЗУЕТ .ASECT И  .CSECT  В  .PSECT  С
   ФИКСИРОВАННЫМИ АТРИБУТАМИ, УКАЗАННЫМИ ВЫШЕ.



        3.1.3. ИНФОРМАЦИЯ   О    ТАБЛИЦЕ    ВНУТРЕННИХ
               СИМВОЛОВ (КИЭБ=2)



        ЗАПИСЬ СОДЕРЖИТ ИМЯ ВНУТРЕННЕГО СИМВОЛА (СИМВОЛ СОДЕР-
   ЖИТСЯ В ДАННОМ МОДУЛЕ). Т.К. КОМПОНОВЩИК НЕ ИСПОЛЬЗУЕТ ТАБ-
   ЛИЦУ ВНУТРЕННИХ СИМВОЛОВ, ТО ЭТА ЗАПИСЬ НЕ СОДЕРЖИТ  ДОПОЛ-
   НИТЕЛЬНОЙ ИНФОРМАЦИИ. ПРИ ОБРАБОТКЕ БЛОКОВ GSD  КОМПОНОВЩИК
   ИГНОРИРУЕТ ЭТУ ИНФОРМАЦИЮ.

        ФОРМАТ ЗАПИСИ ПРЕДСТАВЛЕН НА РИС. 7.


























 �
                             - 14 -




             !-------------------!
             !    ИМЯ СИМВОЛА    !
             !---             ---!
             !    В КОДЕ RAD50   !
             !-------------------!
             !    2    !    0    !
             !-------------------!
             !  НЕ ИСПОЛЬЗУЕТСЯ  !
             !-------------------!


                   РИС. 7

        ЭЛЕМЕНТ ПРОГРАММНОЙ СЕКЦИИ СОДЕРЖИТ СЛЕДУЮЩУЮ ИНФОРМА-
   ЦИЮ:

   СЛОВА 1 И 2
          - ИМЯ СИМВОЛА В КОДЕ RAD50;

   СЛОВО 3
          - МЛАДШИЙ БАЙТ (ФЛАЖКИ) РАВЕН 0;
          - СТАРШИЙ БАЙТ (КИЭБ) РАВЕН 2;

   СЛОВО 4
          - НЕ ИСПОЛЬЗУЕТСЯ.



        3.1.4. ИНФОРМАЦИЯ О СТАРТОВОМ АДРЕСЕ (КИЭБ=3)



        ЭЛЕМЕНТ СТАРТОВОГО АДРЕСА  ОБ'ЯВЛЯЕТ  СТАРТОВЫЙ  АДРЕС
   МОДУЛЯ ОТНОСИТЕЛЬНО PSECT И СОДЕРЖИТ СЛЕДУЮЩУЮ ИНФОРМАЦИЮ:

   СЛОВА 1 И 2
          - ИМЯ ПРОГРАММНОЙ СЕКЦИИ В КОДЕ RAD50;

   СЛОВО 3
          - МЛАДШИЙ БАЙТ (ФЛАЖКИ) = 0;
          - СТАРШИЙ БАЙТ (КИЭБ) = 3;

   СЛОВО 4
          - АДРЕС МЕТКИ, УКАЗАННОЙ В ДИРЕКТИВЕ  .END,  ОТНОСИ-
            ТЕЛЬНО НАЧАЛА ПРОГРАММНОЙ  СЕКЦИИ;  ЕСЛИ  АДРЕС  В
            ДИРЕКТИВЕ ОТСУТСТВУЕТ, ТО АССЕМБЛЕР  ЗАПИСЫВАЕТ  В
            ЭТО СЛОВО 1; ПРИ КОМПОНОВКЕ LINK ПРОСМАТРИВАЕТ ВСЕ
            СТАРТОВЫЕ АДРЕСА, ВЫБИРАЕТ ПЕРВЫЙ ЧЕТНЫЙ СТАРТОВЫЙ
            АДРЕС; ЕСЛИ ВСЕ  АДРЕСА  ОКАЗАЛИСЬ  НЕЧЕТНЫМИ,  ТО
            КОМПОНОВЩИК ЗАПИСЫВАЕТ 1 В ЯЧЕЙКУ 40 НУЛЕВОГО БЛО-
            КА.

        ФОРМАТ ЗАПИСИ О СТАРТОВОМ АДРЕСЕ ПРЕДСТАВЛЕН  НА  РИС.
   8.





 �
                             - 15 -




             !-------------------!
             !     ИМЯ PSECT     !
             !---             ---!
             !    В КОДЕ RAD50   !
             !-------------------!
             !    3    !    0    !
             !-------------------!
             !     СМЕЩЕНИЕ      !
             !-------------------!

                   РИС. 8


        ПРИМЕЧАНИЕ. В СЛУЧАЕ, КОГДА PSECT ЯВЛЯЕТСЯ АБСОЛЮТНОЙ,
   ТО СМЕЩЕНИЕ  СООТВЕТСТВУЕТ  ФАКТИЧЕСКОМУ  АДРЕСУ  ПЕРЕДАЧИ,
   ЕСЛИ ОН НЕ ЭКВИВАЛЕНТЕН 000001.



        3.1.5. ИНФОРМАЦИЯ   О   ГЛОБАЛЬНЫХ    СИМВОЛАХ
               (КИЭБ=4)



        ЭЛЕМЕНТ ГЛОБАЛЬНОГО СИМВОЛА ИМЕЕТ  СЛЕДУЮЩУЮ  ИНФОРМА-
   ЦИЮ:

   СЛОВА 1 И 2
          - ИМЯ ГЛОБАЛЬНОГО СИМВОЛА В КОДЕ RAD50;

   СЛОВО 3
          - МЛАДШИЙ БАЙТ (ФЛАЖКИ);
          - СТАРШИЙ БАЙТ (КИЭБ = 4);

   СЛОВО 4
          - КОНСТАНТА; ГЛОБАЛЬНЫЙ СИМВОЛ МОЖЕТ БЫТЬ РАСПОЛОЖЕН
            В АБСОЛЮТНОЙ ИЛИ ПЕРЕМЕЩАЕМОЙ СЕКЦИИ;  В  СВЯЗИ  С
            ЭТИМ 4-Е СЛОВО ЭЛЕМЕНТА БУДЕТ СОДЕРЖАТЬ АБСОЛЮТНЫЙ
            АДРЕС ИЛИ СМЕЩЕНИЕ ОТНОСИТЕЛЬНО НАЧАЛА  ПЕРЕМЕЩАЕ-
            МОЙ СЕКЦИИ.

        ДЛЯ ХАРАКТЕРИСТИКИ  ГЛОБАЛЬНОГО  СИМВОЛА  ИСПОЛЬЗУЮТСЯ
   ДВА ФЛАЖКА: БИТЫ 3 И 5.

        ФЛАЖКИ СОДЕРЖАТ СЛЕДУЮЩУЮ ИНФОРМАЦИЮ О ГЛОБАЛЬНОМ СИМ-
   ВОЛЕ:

    БИТ 3
            0 - НЕ ОПРЕДЕЛЕН В ДАННОЙ ПРОГРАММНОЙ СЕКЦИИ;
            1 - ОПРЕДЕЛЕН;
    БИТ 5
            0 - АБСОЛЮТНОЕ ЗНАЧЕНИЕ;
            1 - ПЕРЕМЕЩАЕМОЕ ЗНАЧЕНИЕ.






 �
                             - 16 -




        3.1.6. ИНФОРМАЦИЯ   О    ПРОГРАММНОЙ    СЕКЦИИ
               (КИЭБ=5)



        СИСТЕМА ПОЗВОЛЯЕТ ПРИ СОЗДАНИИ И  КОРРЕКТИРОВКЕ  ПРОГ-
   РАММ ПРИМЕНЯТЬ МЕТОД СЕКЦИОНИРОВАНИЯ.

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

        ФОРМАТ ЗАПИСИ О ПРОГРАММНОЙ СЕКЦИИ ПРЕДСТАВЛЕН НА РИС.
   9.

             !-------------------!
             !  ИМЯ ПРОГРАММНОЙ  !
             !---             ---!
             !СЕКЦИИ В КОДЕ RAD50!
             !-------------------!
             !    5    ! ФЛАЖКИ  !
             !-------------------!
             ! МАКСИМАЛЬНАЯ ДЛИНА!
             !-------------------!

                   РИС. 9

        ЭЛЕМЕНТ ПРОГРАММНОЙ СЕКЦИИ СОДЕРЖИТ СЛЕДУЮЩУЮ ИНФОРМА-
   ЦИЮ:

   СЛОВА 1 И 2
          - ИМЯ ПРОГРАММНОЙ СЕКЦИИ В КОДЕ RADIX 50;

    СЛОВО 3
          - МЛАДШИЙ БАЙТ (ФЛАЖКИ);
          - СТАРШИЙ БАЙТ (КИЭБ = 5);

   СЛОВО 4
          - КОНСТАНТА, РАВНАЯ ДЛИНЕ ПРОГРАММНОЙ СЕКЦИИ ПЛЮС  2
            (Т.Е. УКАЗЫВАЕТ НА  СЛЕДУЮЩИЙ  АДРЕС,  С  КОТОРОГО
            ПРОГРАММНАЯ СЕКЦИЯ МОЖЕТ БЫТЬ ПРОДОЛЖЕНА).

        ПРИМЕЧАНИЯ:
        1. ДЛИНА ВСЕХ АБСОЛЮТНЫХ СЕКЦИЙ РАВНА ДЛИНЕ НАИБОЛЬШЕЙ
   ИЗ НИХ.
        2. В СИСТЕМЕ  ИСПОЛЬЗУЕТСЯ  ДИРЕКТИВА  МАКРОАССЕМБЛЕРА
   .PSECT ИЛИ ОПЕРАТОР COMMON В ФОРТРАНЕ ДЛЯ ОПРЕДЕЛЕНИЯ ПРОГ-
   РАММНОЙ СЕКЦИИ. ПРОГРАММНАЯ  СЕКЦИЯ  ИМЕЕТ  ИМЯ.  ЕСЛИ  ИМЯ
   ОТСУТСТВУЕТ, ТО ВМЕСТО НЕГО ДОЛЖНА СТОЯТЬ  ЗАПЯТАЯ.  НАПРИ-
   МЕР, ЕСЛИ ИМЯ ПРОГРАММНОЙ СЕКЦИИ SYM,  ТО  ДИРЕКТИВА  ИМЕЕТ
   ВИД:

             .PSECT SYM,АРГУМЕНТЫ

        ЕСЛИ ИМЯ ОТСУТСТВУЕТ, ТО ДИРЕКТИВА ИМЕЕТ ВИД:


 �
                             - 17 -




             .PSECT ,АРГУМЕНТЫ

        МАКРОАССЕМБЛЕР ДОПУСКАЕТ 256 ПРОГРАММНЫХ СЕКЦИЙ:

          - ОДНУ АБСОЛЮТНУЮ ПРОГРАММНУЮ СЕКЦИЮ;
          - ОДНУ НЕИМЕНОВАННУЮ ПЕРЕМЕЩАЕМУЮ  ПРОГРАММНУЮ  СЕК-
            ЦИЮ;
          - 254 ИМЕНОВАННЫЕ ПЕРЕМЕЩАЕМЫЕ ПРОГРАММНЫЕ СЕКЦИИ.

        ПРОГРАММНАЯ СЕКЦИЯ ИМЕЕТ  СЛЕДУЮЩИЙ  НАБОР  АРГУМЕНТОВ
   (ФЛАЖКОВ):

   ЧТЕНИЕ И ЗАПИСЬ (RW)
          - АРГУМЕНТ, УКАЗЫВАЮЩИЙ, ЧТО ИНФОРМАЦИЯ ДАННОЙ ПРОГ-
            РАММНОЙ СЕКЦИИ МОЖЕТ СЧИТЫВАТЬСЯ И КОРРЕКТИРОВАТЬ-
            СЯ;

   ТОЛЬКО ЧТЕНИЕ (RO)
          - АРГУМЕНТ, УКАЗЫВАЮЩИЙ, ЧТО ИНФОРМАЦИЮ ДАННОЙ ПРОГ-
            РАММНОЙ СЕКЦИИ МОЖНО ТОЛЬКО СЧИТЫВАТЬ, НО НЕ  КОР-
            РЕКТИРОВАТЬ (НЕ ПОДДЕРЖИВАЕТСЯ СИСТЕМОЙ);

   АБСОЛЮТНАЯ СЕКЦИЯ (ABS)
          - ПРОГРАММНАЯ СЕКЦИЯ, КОТОРАЯ СОДЕРЖИТ ТОЛЬКО  АБСО-
            ЛЮТНЫЕ АДРЕСА; ЕСЛИ ЭТОТ АРГУМЕНТ ОТСУТСТВУЕТ,  ТО
            ПО УМОЛЧАНИЮ СЕКЦИЯ ВОСПРИНИМАЕТСЯ КАК  ПЕРЕМЕЩАЕ-
            МАЯ;

   ПЕРЕМЕЩАЕМАЯ СЕКЦИЯ (REL)
          - ПРОГРАММНАЯ СЕКЦИЯ, СОДЕРЖАЩАЯ ПЕРЕМЕЩАЕМЫЕ  АДРЕ-
            СА;  ПРИ  КОМПОНОВКЕ  ОПЕРАТИВНОЙ  ПРОГРАММЫ  LINK
            ПОМЕЩАЕТ ВСЕ ЯЧЕЙКИ  ПРОГРАММНОЙ  СЕКЦИИ  В  БЛОКИ
            ПЕРЕМЕЩЕНИЙ; АРГУМЕНТ УСТАНАВЛИВАЕТСЯ  ПО  УМОЛЧА-
            НИЮ;

   ГЛОБАЛЬНАЯ СЕКЦИЯ (GBL)
          - АРГУМЕНТ,  ИСПОЛЬЗУЕМЫЙ  ПРИ  СОЗДАНИИ  ОВЕРЛЕЙНОЙ
            ПРОГРАММЫ; В ЭТОМ СЛУЧАЕ  ВСЕ  ГЛОБАЛЬНЫЕ  СЕКЦИИ,
            ОПИСАННЫЕ В РАЗЛИЧНЫХ ОВЕРЛЕЙНЫХ МОДУЛЯХ, ПРИ КОМ-
            ПОНОВКЕ  ПЕРЕСЫЛАЮТСЯ  В  КОРНЕВОЙ  СЕГМЕНТ;   ПРИ
            ОТСУТСТВИИ  АРГУМЕНТА  СЕКЦИЯ  ВОСПРИНИМАЕТСЯ  КАК
            ЛОКАЛЬНАЯ ДЛЯ ОВЕРЛЕЙНОГО СЕГМЕНТА, ГДЕ РАЗМЕЩАЕТ-
            СЯ ДАННЫЙ МОДУЛЬ;

   ЛОКАЛЬНАЯ СЕКЦИЯ (LCL)
          - ПРОГРАММНАЯ СЕКЦИЯ, РАСПОЛОЖЕННАЯ ВНУТРИ ОБ'ЕКТНО-
            ГО МОДУЛЯ, В КОТОРОМ ОНА ОБ'ЯВЛЕНА; АРГУМЕНТ УСТА-
            НАВЛИВАЕТСЯ ПО УМОЛЧАНИЮ;

   ДАННЫЕ (D)
          - АРГУМЕНТ,  УКАЗЫВАЮЩИЙ,  ЧТО  ПРОГРАММНАЯ   СЕКЦИЯ
            СОДЕРЖИТ ТОЛЬКО ДАННЫЕ;  ПО  УМОЛЧАНИЮ  УСТАНАВЛИ-
            ВАЕТСЯ, ЧТО  ПРОГРАММНАЯ  СЕКЦИЯ  СОДЕРЖИТ  ТОЛЬКО
            ИНСТРУКЦИИ;

   ИНСТРУКЦИИ (I)
          - АРГУМЕНТ,  УКАЗЫВАЮЩИЙ,  ЧТО  ПРОГРАММНАЯ   СЕКЦИЯ
            СОДЕРЖИТ  ТОЛЬКО  ИНСТРУКЦИИ;  УСТАНАВЛИВАЕТСЯ  ПО
            УМОЛЧАНИЮ;
 �
                             - 18 -




   ОВЕРЛЕЙНАЯ СЕКЦИЯ (OVR)
          - АРГУМЕНТ, УКАЗЫВАЮЩИЙ, ЧТО ВСЕ ПРОГРАММНЫЕ  СЕКЦИИ
            С ОДИНАКОВЫМИ ИМЕНАМИ, ОБ'ЯВЛЕННЫЕ В РАЗНЫХ  МОДУ-
            ЛЯХ, НАКЛАДЫВАЮТСЯ ДРУГ НА  ДРУГА  ПРИ  КОМПОНОВКЕ
            МОДУЛЕЙ В ПРОГРАММУ; ПРИ ЭТОМ  РАЗМЕР  ПРОГРАММНОЙ
            СЕКЦИИ БУДЕТ РАВЕН ДЛИНЕ САМОЙ БОЛЬШОЙ  ИЗ  ОБ'ЯВ-
            ЛЕННЫХ СЕКЦИЙ; ПО УМОЛЧАНИЮ УСТАНАВЛИВАЕТСЯ  АРГУ-
            МЕНТ "ПРИСОЕДИНЯЕМАЯ СЕКЦИЯ";

   ПРИСОЕДИНЯЕМАЯ СЕКЦИЯ (CON)
          - АРГУМЕНТ, УКАЗЫВАЮЩИЙ, ЧТО ВСЕ  ОДНОИМЕННЫЕ  ПРОГ-
            РАММНЫЕ СЕКЦИИ, ОБ'ЯВЛЕННЫЕ В НЕСКОЛЬКИХ  МОДУЛЯХ,
            ДОБАВЛЯЮТСЯ  К  ПЕРВОЙ  ОБ'ЯВЛЕННОЙ  СЕКЦИИ;  ЭТОТ
            АРГУМЕНТ УСТАНАВЛИВАЕТСЯ ПО УМОЛЧАНИЮ.

        ЭЛЕМЕНТ ПРОГРАММНОЙ СЕКЦИИ ИСПОЛЬЗУЕТ СЛЕДУЮЩИЕ ФЛАЖКИ
   ДЛЯ ХАРАКТЕРИСТИК СЕКЦИИ:

         БИТ 2
                 0 - НЕОВЕРЛЕЙНАЯ ПРОГРАММНАЯ СЕКЦИЯ (CON);
                 1 - ОВЕРЛЕЙНАЯ (OVR);
         БИТ 5
                 0 - АБСОЛЮТНАЯ (ABS);
                 1 - ПЕРЕМЕЩАЕМАЯ (REL);
         БИТ 6
                 0 - ЛОКАЛЬНАЯ (LCL);
                 1 - ГЛОБАЛЬНАЯ (GBL);
         БИТ 7
                 0 - СОДЕРЖИТ ТОЛЬКО ИНСТРУКЦИИ (I);
                 1 - СОДЕРЖИТ ТОЛЬКО ДАННЫЕ (D).

        ДЛЯ СОВМЕСТИМОСТИ С РАННИМИ  ВЕРСИЯМИ  СИСТЕМЫ  ДОПУС-
   КАЕТСЯ ИСПОЛЬЗОВАНИЕ СЛЕДУЮЩИХ ПРОГРАММНЫХ СЕКЦИЙ: .ASECT И
   .CSECT. ОДНАКО ЭТИ ПРОГРАММНЫЕ СЕКЦИИ ИМЕЮТ СТРОГО  ОПРЕДЕ-
   ЛЕННЫЕ АРГУМЕНТЫ. ПРИ ПОПЫТКЕ ПОЛЬЗОВАТЕЛЯ  ИЗМЕНИТЬ  АРГУ-
   МЕНТЫ ПРИ ТРАНСЛЯЦИИ ВЫДАЕТСЯ СООБЩЕНИЕ ОБ ОШИБКЕ.

        НИЖЕ ПРИВЕДЕНЫ АРГУМЕНТЫ, КОТОРЫЕ  МОГУТ  ИМЕТЬ  ПРОГ-
   РАММНЫЕ СЕКЦИИ СИСТЕМЫ:

           .ASECT        RW, I, GBL, ABS, OVR
           .CSECT        RW, I, LCL, REL, CON
           .CSECT  /ИМЯ/ RW, I, GBL, REL, OVR
            COMMON /ИМЯ/ RW, D, GBL, REL, OVR



        3.1.7. ИДЕНТИФИКАТОР ВЕРСИИ ПРОГРАММЫ (КИЭБ=6)



        ИДЕНТИФИКАТОР ВЕРСИИ ПРОГРАММЫ СОДЕРЖИТ  НОМЕР  ВЕРСИИ
   МОДУЛЯ. КОМПОНОВЩИК ИЗВЛЕКАЕТ  НОМЕР  ВЕРСИИ  ИЗ  ДИРЕКТИВЫ
   .IDENT ПЕРВОГО МОДУЛЯ, В КОТОРОМ ОН ЗАДАН, И ВКЛЮЧАЕТ ЕГО В
   КАРТУ ЗАГРУЗКИ ПАМЯТИ.

        ФОРМАТ ЗАПИСИ ПРЕДСТАВЛЕН НА РИС. 10.


 �
                             - 19 -




             !-------------------!
             !    СИМВОЛЬНОЕ     !
             !---             ---!
             ! ИМЯ В КОДЕ RAD50  !
             !-------------------!
             !    0    !    0    !
             !-------------------!
             !         0         !
             !-------------------!

                   РИС. 10

        ЭЛЕМЕНТ СОДЕРЖИТ СЛЕДУЮЩУЮ ИНФОРМАЦИЮ:

   СЛОВА 1 И 2
          - ИДЕНТИФИКАТОР ВЕРСИИ В КОДЕ RAD50;

   СЛОВА 3 И 4
          - НЕ ИСПОЛЬЗУЮТСЯ.



        3.1.8. ОБ'ЯВЛЕНИЕ МАССИВА ОТОБРАЖЕНИЯ (КИЭБ=7)



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

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

        КОМПОНОВЩИК ПРЕОБРАЗУЕТ VSECT В  PSECT  СО  СЛЕДУЮЩИМИ
   АТРИБУТАМИ:

           .PSECT .VIR.,RW,D,GBL,REL,CON

        ДЛИНА    СООТВЕТСТВУЕТ    КОЛИЧЕСТВУ     ЗАПРАШИВАЕМЫХ
   32-СЛОВНЫХ БЛОКОВ. ЕСЛИ ДЛИНА РАВНА НУЛЮ, ТО  ЭТО  КОРНЕВОЙ
   СЕГМЕНТ.

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


        ПРИМЕЧАНИЕ. ДОПОЛНИТЕЛЬНОЕ АДРЕСНОЕ ОКНО  РАЗМЕЩАЕТСЯ,
   КОГДА ОБ'ЯВЛЕН МАССИВ ОТОБРАЖЕНИЯ.

        ФОРМАТ  ЭЛЕМЕНТА  "ОБ'ЯВЛЕНИЕ   МАССИВА   ОТОБРАЖЕНИЯ"
   ПРЕДСТАВЛЕН НА РИС. 11.



 �
                             - 20 -




                     !-------------------!
                     !   ИМЯ МАССИВА     !
                     !   ОТОБРАЖЕНИЯ     !
                     !---             ---!
                     !   В КОДЕ RAD50    !
                     !-------------------!
                     !    7    ! НЕ ИСП. !
                     !-------------------!
                     !      ДЛИНА        !
                     !-------------------!

                           РИС. 11



        3.2. БЛОК ENDGSD



        БЛОК ENDGSD УКАЗЫВАЕТ, ЧТО ПРЕДСТАВЛЕНЫ ВСЕ БЛОКИ GSD,
   СОДЕРЖАЩИЕСЯ В ДАННОМ МОДУЛЕ.

        В КАЖДОМ ОБ'ЕКТНОМ МОДУЛЕ ДОЛЖЕН БЫТЬ ВСЕГО ОДИН  БЛОК
   ENDGSD. ДЛИНА БЛОКА ДАННЫХ РАВНА ОДНОМУ СЛОВУ (РИС. 12).

                    !-------------------!
                    !    0    !    2    !
                    !-------------------!

                          РИС. 12



        3.3. БЛОК TXT



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

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

        БЛОК ДАННЫХ TXT ТАК ЖЕ, КАК  И  БЛОК  RLD,  НЕ  ДОЛЖЕН
   ИМЕТЬ ДЛИНУ БОЛЬШЕ 42 БАЙТОВ.

        ФОРМАТ БЛОКА TXT ПРЕДСТАВЛЕН НА РИС. 13.






 �
                             - 21 -




                    !----------------!
                    !    КОД  ИТБ    !
                    !----------------!
                    ! АДРЕС ЗАГРУЗКИ !
                    !----------------!
                    .    ДВОИЧНЫЕ    .
                    .      КОДЫ      .
                    .    ПРОГРАММЫ   .
                    !----------------!

                         РИС. 13

        БЛОК ДАННЫХ TXT ИМЕЕТ КОД  ИДЕНТИФИКАТОРА  ТИПА  БЛОКА
   (КОД ИТБ), РАВНЫЙ 3.

        АДРЕС ЗАГРУЗКИ БЛОКА  TXT  СООТВЕТСТВУЕТ  СМЕЩЕНИЮ  ОТ
   ТЕКУЩЕГО БАЗОВОГО АДРЕСА PSECT. ПЕРВОМУ  БЛОКУ  TXT  ДОЛЖЕН
   ПРЕДШЕСТВОВАТЬ, ПО КРАЙНЕЙ МЕРЕ, ОДИН БЛОК  RLD  ЭТОТ  БЛОК
   RLD ДОЛЖЕН ОБ'ЯВИТЬ ТЕКУЩУЮ PSECT.



        3.4. БЛОК RLD



        В БЛОКАХ RLD СОДЕРЖИТСЯ  ИНФОРМАЦИЯ  О  ВСЕХ  СЕКЦИЯХ,
   ИМЕЮЩИХСЯ В ПРОГРАММЕ, И ИХ БАЗОВЫХ АДРЕСАХ, О ПЕРЕМЕЩАЕМЫХ
   ГЛОБАЛЬНЫХ И ЛОКАЛЬНЫХ СИМВОЛАХ.

        БЛОК RLD МОЖЕТ  СОДЕРЖАТЬ  14  ТИПОВ  КОМАНД.  КОМАНДА
   (РИС. 14) МОЖЕТ ЗАНИМАТЬ МАКСИМАЛЬНО ЧЕТЫРЕ СЛОВА. В  ЗАВИ-
   СИМОСТИ ОТ ТИПА КОМАНДЫ ИЗМЕНЯЕТСЯ ЕЕ ДЛИНА.  ПЕРВОЕ  СЛОВО
   КОМАНДЫ ПРИСУТСТВУЕТ ВО ВСЕХ ТИПАХ КОМАНД.

                    ФОРМАТ КОМАНДЫ БЛОКА RLD

                !15            8!    7!6         0!
                !---------------!-----!-----------!
                ! ОТНОСИТЕЛЬНОЕ !  B  !    КОД    !
                !    СМЕЩЕНИЕ   !     ! КОМАНДЫ   !
                !---------------!-----!-----------!
                !    ИМЯ ( ДВА СЛОВА В КОДЕ       !
                !-----                       -----!
                !            RADIX 50 )           !
                !---------------------------------!
                !            КОНСТАНТА            !
                !---------------------------------!

                             РИС. 14

        БЛОКИ ПЕРЕМЕЩЕНИЯ RLD (СМ. РИС. 14) СОДЕРЖАТ  ИНФОРМА-
   ЦИЮ, НЕОБХОДИМУЮ LINK ДЛЯ ПЕРЕМЕЩЕНИЯ И КОМПОНОВКИ, И ПРЕД-
   ШЕСТВУЮЩУЮ БЛОКУ ТЕКСТОВОЙ ИНФОРМАЦИИ.

        КАЖДЫЙ МОДУЛЬ ДОЛЖЕН ИМЕТЬ, ПО КРАЙНЕЙ МЕРЕ, ОДИН БЛОК
   RLD, КОТОРЫЙ ПРЕДШЕСТВУЕТ ПЕРВОМУ БЛОКУ TXT. ПЕРВЫЙ БЛОК НЕ
   МОДИФИЦИРУЕТ ПРЕДШЕСТВУЮЩИЙ БЛОК TXT, А ОПРЕДЕЛЯЕТ  ТЕКУЩУЮ
   PSECT И РАЗМЕЩЕНИЕ.
 �
                             - 22 -




        НА РИС. 14 ПРЕДСТАВЛЕН ОБЩИЙ ВИД КОМАНДЫ, КОТОРАЯ СОС-
   ТОИТ ИЗ СЛЕДУЮЩИХ КОМПОНЕНТОВ:

          - ОТНОСИТЕЛЬНОЕ  СМЕЩЕНИЕ;  УКАЗЫВАЕТ  СМЕЩЕНИЕ   ОТ
            НАЧАЛА БЛОКА TXT ДО  СООТВЕТСТВУЮЩЕГО  БАЙТА  (ИЛИ
            СЛОВА) ДАННЫХ; БАЙТ СМЕЩЕНИЯ СУММИРУЕТСЯ СО ЗНАЧЕ-
            НИЕМ,  ВЫЧИСЛЯЕМЫМ  ОТНОСИТЕЛЬНО  АДРЕСА  ЗАГРУЗКИ
            ПРЕДШЕСТВУЮЩЕГО  БЛОКА  TXT;  ПОЛУЧЕННОЕ  ЗНАЧЕНИЕ
            ЯВЛЯЕТСЯ ВИРТУАЛЬНЫМ АДРЕСОМ, КОТОРЫЙ ДОЛЖЕН  БЫТЬ
            МОДИФИЦИРОВАН;

          - ТИП КОМАНДЫ (БИТЫ 0-6); МОЖНО УКАЗАТЬ ДО 128 ТИПОВ
            КОМАНД; В СИСТЕМЕ  ИСПОЛЬЗУЕТСЯ  ТОЛЬКО  14  ТИПОВ
            КОМАНД;

          - БИТ МОДИФИКАЦИИ (БИТ "B"); НЕ ИСПОЛЬЗУЕТСЯ  СИСТЕ-
            МОЙ; ЕСЛИ БИТ УСТАНОВЛЕН, ТО ОН ИГНОРИРУЕТСЯ; КОМ-
            ПОНОВЩИК ОБСЛУЖИВАЕТ ПЕРЕМЕЩЕНИЕ СЛОВА, НО НЕ БАЙ-
            ТА:
                 - ПРИ B=0 КОМАНДА МОДИФИЦИРУЕТ ВСЕ СЛОВО;
                 - ПРИ B=1 КОМАНДА МОДИФИЦИРУЕТ БАЙТ;

          - ИМЯ ГЛОБАЛЬНОГО ИЛИ  ЛОКАЛЬНОГО  СИМВОЛА  ИЛИ  ИМЯ
            ПРОГРАММНОЙ СЕКЦИИ;

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

        СУЩЕСТВУЮТ СЛЕДУЮЩИЕ ТИПЫ КОМАНД:

   ТИП 1  - ВНУТРЕННЕЕ ПЕРЕМЕЩЕНИЕ;

   ТИП 2  - ГЛОБАЛЬНОЕ ПЕРЕМЕЩЕНИЕ;

   ТИП 3  - ВНУТРЕННЕЕ ПЕРЕМЕЩАЕМОЕ СМЕЩЕНИЕ;

   ТИП 4  - ГЛОБАЛЬНОЕ ПЕРЕМЕЩАЕМОЕ СМЕЩЕНИЕ;

   ТИП 5  - ГЛОБАЛЬНОЕ АДДИТИВНОЕ СМЕЩЕНИЕ;

   ТИП 6  - ГЛОБАЛЬНОЕ АДДИТИВНОЕ ПЕРЕМЕЩАЕМОЕ СМЕЩЕНИЕ;

   ТИП 7  - ОПРЕДЕЛЕНИЕ СОДЕРЖИМОГО СЧЕТЧИКА АДРЕСОВ;

   ТИП 10 - МОДИФИКАЦИЯ СЧЕТЧИКА АДРЕСОВ;

   ТИП 11 - УСТАНОВКА ГРАНИЦ ПРОГРАММЫ (.LIMIT);

   ТИП 12 - СМЕЩЕНИЕ ПРОГРАММНОЙ СЕКЦИИ;

   ТИП 13 - НЕ ИСПОЛЬЗУЕТСЯ;

   ТИП 14 - ПЕРЕМЕЩАЕМОЕ СМЕЩЕНИЕ ПРОГРАММНОЙ СЕКЦИИ;

   ТИП 15 - АДДИТИВНОЕ СМЕЩЕНИЕ ПРОГРАММНОЙ СЕКЦИИ;

   ТИП 16 - АДДИТИВНОЕ ПЕРЕМЕЩАЕМОЕ СМЕЩЕНИЕ ПРОГРАММНОЙ  СЕК-
            ЦИИ;
 �
                             - 23 -




   ТИП 17 - СЛОЖНОЕ СМЕЩЕНИЕ.



        3.4.1. ВНУТРЕННЕЕ ПЕРЕМЕЩЕНИЕ



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


             ПРИМЕР 1.                    ПРИМЕР 2.

    A:      MOV     #A,R0               .WORD   A


        КОМАНДА ВНУТРЕННЕГО ПЕРЕМЕЩЕНИЯ ИМЕЕТ  ФОРМАТ,  ПРЕДС-
   ТАВЛЕННЫЙ НА РИС. 15.

                        !-------------------!
                        !СМЕЩЕНИЕ ! B  ! 1  !
                        !-------------------!
                        !    КОНСТАНТА      !
                        !-------------------!

                              РИС. 15



        3.4.2. ГЛОБАЛЬНОЕ ПЕРЕМЕЩЕНИЕ



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


             ПРИМЕР 1.                    ПРИМЕР 2.

           MOV     #GLOBAL,R0           .WORD   GLOBAL


        ФОРМАТ ТИПА КОМАНДЫ ПРЕДСТАВЛЕН НА РИС. 16.

                       !-------------------!
                       !СМЕЩЕНИЕ ! B  ! 2  !
                       !-------------------!
                       !  СИМВОЛЬНОЕ ИМЯ   !
                       !---            ----!
                       !  В КОДЕ RAD50     !
                       !-------------------!
                              РИС. 16

 �
                             - 24 -




        3.4.3. ВНУТРЕННЕЕ ПЕРЕМЕЩАЕМОЕ СМЕЩЕНИЕ



        ЭТОТ ТИП ЗАПИСИ  ОПРЕДЕЛЯЕТ  ОТНОСИТЕЛЬНУЮ  ССЫЛКУ  НА
   АБСОЛЮТНЫЙ АДРЕС ВНУТРИ ПЕРЕМЕЩАЕМОЙ КОНТРОЛЬНОЙ СЕКЦИИ.


             ПРИМЕР 1.                    ПРИМЕР 2.

           CLR     177550               MOV     177550,R0


        ФОРМАТ ТИПА КОМАНДЫ ПРЕДСТАВЛЕН НА РИС. 17.

                      !-------------------!
                      !СМЕЩЕНИЕ ! B  ! 3  !
                      !-------------------!
                      !    КОНСТАНТА      !
                      !-------------------!

                            РИС. 17



        3.4.4. ГЛОБАЛЬНОЕ ПЕРЕМЕЩАЕМОЕ СМЕЩЕНИЕ



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


             ПРИМЕР 1.                    ПРИМЕР 2.

            CLR     GLOBAL              MOV        GLOBAL,R0


        ФОРМАТ ТИПА КОМАНДЫ ПРЕДСТАВЛЕН НА РИС. 18.

                      !-------------------!
                      !СМЕЩЕНИЕ ! B  ! 4  !
                      !-------------------!
                      !  СИМВОЛЬНОЕ ИМЯ   !
                      !---             ---!
                      !   В КОДЕ RAD50    !
                      !-------------------!

                             РИС. 18





 �
                             - 25 -




        3.4.5. ГЛОБАЛЬНОЕ АДДИТИВНОЕ СМЕЩЕНИЕ



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


             ПРИМЕР 1.                    ПРИМЕР 2.

           MOV       #GLOBAL+2,R0       .WORD      GLOBAL-4


        ФОРМАТ ТИПА КОМАНДЫ ПРЕДСТАВЛЕН НА РИС. 19.

                      !-------------------!
                      !СМЕЩЕНИЕ ! B  ! 5  !
                      !-------------------!
                      !  СИМВОЛЬНОЕ ИМЯ   !
                      !---            ----!
                      !  В КОДЕ RAD50     !
                      !-------------------!
                      !    КОНСТАНТА      !
                      !-------------------!

                            РИС. 19



        3.4.6. ГЛОБАЛЬНОЕ   АДДИТИВНОЕ    ПЕРЕМЕЩАЕМОЕ
               СМЕЩЕНИЕ



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


             ПРИМЕР 1.                    ПРИМЕР 2.

           CLR     GLOBAL+2             MOV     GLOBAL-5,R0


        ФОРМАТ ТИПА КОМАНДЫ ПРЕДСТАВЛЕН НА РИС. 20.









 �
                             - 26 -




                      !-------------------!
                      !СМЕЩЕНИЕ ! B  ! 6  !
                      !-------------------!
                      !  СИМВОЛЬНОЕ ИМЯ   !
                      !---            ----!
                      !  В КОДЕ RAD50     !
                      !-------------------!
                      !    КОНСТАНТА      !
                      !-------------------!

                            РИС. 20



        3.4.7. ОПРЕДЕЛЕНИЕ СОДЕРЖИМОГО СЧЕТЧИКА АДРЕСА



        ЭТОТ ТИП ЗАПИСИ ОБ'ЯВЛЯЕТ ТЕКУЩУЮ PSECT И ТЕКУЩЕЕ ЗНА-
   ЧЕНИЕ СЧЕТЧИКА. КОМПОНОВЩИК  ЗАПОМИНАЕТ  ПОСЛЕДНИЙ  АДРЕС+2
   ПРЕДШЕСТВУЮЩЕГО ОБ'ЯВЛЕНИЯ ДАННОЙ СЕКЦИИ.  ОН  ДОБАВЛЯЕТ  К
   ЭТОМУ АДРЕСУ УКАЗАННУЮ КОНСТАНТУ И ЗАПОМИНАЕТ РЕЗУЛЬТАТ КАК
   ТЕКУЩЕЕ ЗНАЧЕНИЕ СЧЕТЧИКА.

        ФОРМАТ ТИПА КОМАНДЫ ПРЕДСТАВЛЕН НА РИС. 21.

                      !-------------------!
                      !    0    ! B  ! 7  !
                      !-------------------!
                      !   ИМЯ СЕКЦИИ      !
                      !---            ----!
                      !  В КОДЕ RAD50     !
                      !-------------------!
                      !     КОНСТАНТА     !
                      !-------------------!

                            РИС. 21



        3.4.8. МОДИФИКАЦИЯ СЧЕТЧИКА АДРЕСОВ



        ЭТОТ ТИП ЗАПИСИ МОДИФИЦИРУЕТ ТЕКУЩЕЕ ЗНАЧЕНИЕ  СЧЕТЧИ-
   КА. КОМПОНОВЩИК  ДОБАВЛЯЕТ  К  ТЕКУЩЕМУ  ЗНАЧЕНИЮ  БАЗОВОГО
   СЧЕТЧИКА PSECT УКАЗАННУЮ КОНСТАНТУ И  ЗАПОМИНАЕТ  РЕЗУЛЬТАТ
   КАК ТЕКУЩЕЕ ЗНАЧЕНИЕ СЧЕТЧИКА.


             ПРИМЕР 1.                    ПРИМЕР 2.

           .  =   .+N                   .BLKB     N


        ФОРМАТ ТИПА КОМАНДЫ ПРЕДСТАВЛЕН НА РИС. 22.



 �
                             - 27 -




                      !-------------------!
                      !   0     ! B  ! 10 !
                      !-------------------!
                      !    КОНСТАНТА      !
                      !-------------------!

                             РИС. 22



        3.4.9. УСТАНОВКА ГРАНИЦ ПРОГРАММЫ



        ЭТОТ ТИП ЗАПИСИ СОЗДАЕТСЯ ПРИ ИСПОЛЬЗОВАНИИ  ДИРЕКТИВЫ
   АССЕМБЛЕРА .LIMIT. КОМПОНОВЩИК ИЗВЛЕКАЕТ ПЕРВЫЙ АДРЕС  ВЫШЕ
   ЗАГОЛОВКА (С КОТОРОГО ОБЫЧНО  НАЧИНАЕТСЯ  СТЕК)  И  ВЕРХНИЙ
   АДРЕС РАЗМЕЩЕНИЯ ПРОГРАММЫ. ЗАТЕМ ОН ЗАПИСЫВАЕТ ЭТИ  АДРЕСА
   В ВЫХОДНОЙ ФАЙЛ В ДВА СЛОВА.


   ПРИМЕР.

           .LIMIT


        ФОРМАТ ТИПА КОМАНДЫ ПРЕДСТАВЛЕН НА РИС. 23.

                      !-------------------!
                      !СМЕЩЕНИЕ ! B  ! 11 !
                      !-------------------!

                             РИС. 23



        3.4.10. СМЕЩЕНИЕ ПРОГРАММНОЙ СЕКЦИИ



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


            ПРИМЕР 1.                    ПРИМЕР 2.

           .PSECT  A                   .PSECT  A
    B:                        B:
           . . .                       . . .
           . . .                       . . .
           . . .                       . . .

           .PSECT  C                   .PSECT  C
           MOV     #B,R0               .WORD B


 �
                             - 28 -




        ФОРМАТ ТИПА КОМАНДЫ ПРЕДСТАВЛЕН НА РИС. 24.

                      !-------------------!
                      !СМЕЩЕНИЕ ! B  ! 12 !
                      !-------------------!
                      !    ИМЯ СЕКЦИИ     !
                      !---            ----!
                      !   В КОДЕ RAD50    !
                      !-------------------!

                            РИС. 24



        3.4.11. ПЕРЕМЕЩАЕМОЕ    СМЕЩЕНИЕ    ПРОГРАММНОЙ
                СЕКЦИИ



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


   ПРИМЕР.

           .PSECT  A
    B:
           . . .
           . . .
           . . .

           .PSECT  C
           MOV     B,R0


        ФОРМАТ ТИПА КОМАНДЫ ПРЕДСТАВЛЕН НА РИС. 25.

                      !-------------------!
                      !СМЕЩЕНИЕ ! B  ! 14 !
                      !-------------------!
                      !    ИМЯ СЕКЦИИ     !
                      !---            ----!
                      !   В КОДЕ RAD50    !
                      !-------------------!

                            РИС. 25









 �
                             - 29 -




        3.4.12. АДДИТИВНОЕ СМЕЩЕНИЕ ПРОГРАММНОЙ СЕКЦИИ



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


            ПРИМЕР 1.                    ПРИМЕР 2.

           .PSECT  A                   .PSECT  A
    B:                       B:
           . . .                       . . .
           . . .                       . . .
           . . .                       . . .
    C:                       C:
           . . .                       . . .
           . . .                       . . .
           . . .                       . . .

           .PSECT  D
           MOV     #B+10,R0            .WORD   B+10
           MOV     #C,R0               .WORD   C


        ФОРМАТ ТИПА КОМАНДЫ ПРЕДСТАВЛЕН НА РИС. 26.

                      !-------------------!
                      !СМЕЩЕНИЕ ! B  ! 15 !
                      !-------------------!
                      !    ИМЯ СЕКЦИИ     !
                      !---            ----!
                      !  В КОДЕ RAD50     !
                      !-------------------!
                      !     КОНСТАНТА     !
                      !-------------------!

                            РИС. 26



        3.4.13. АДДИТИВНОЕ    ПЕРЕМЕЩАЕМОЕ     СМЕЩЕНИЕ
                ПРОГРАММНОЙ СЕКЦИИ



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




 �
                             - 30 -




   ПРИМЕР.

           .PSECT  A
    B:
           . . .
           . . .
           . . .

    C:

           .PSECT  D
           MOV     B+10,R0
           MOV     C,R0


        ФОРМАТ ТИПА КОМАНДЫ ПРЕДСТАВЛЕН НА РИС. 27.

                      !-------------------!
                      !СМЕЩЕНИЕ ! B  ! 16 !
                      !-------------------!
                      !    ИМЯ СЕКЦИИ     !
                      !---            ----!
                      !  В КОДЕ RAD50     !
                      !-------------------!
                      !     КОНСТАНТА     !
                      !-------------------!

                            РИС. 27



        3.4.14. СЛОЖНОЕ СМЕЩЕНИЕ



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

        СЛОВО КОМАНДЫ RLD СОДЕРЖИТ СТРОКУ ЗНАКОВ, ОПРЕДЕЛЯЮЩУЮ
   КОДЫ ОПЕРАЦИИ И АРГУМЕНТЫ.  КАЖДЫЙ  КОД  ОПЕРАЦИИ  ЗАНИМАЕТ
   ОДИН БАЙТ, И ПОЛНАЯ  КОМАНДА  RLD  ДОЛЖНА  РАСПОЛАГАТЬСЯ  В
   ОДНОМ БЛОКЕ ДАННЫХ. КОМАНДА "СОХРАНИТЬ РЕЗУЛЬТАТ" (КОДЫ  12
   И 13) УКАЗЫВАЕТ, ЧТО ЗНАЧЕНИЕ ДОЛЖНО БЫТЬ ЗАПИСАНО В ВЫХОД-
   НОЙ ФАЙЛ ПО СООТВЕТСТВУЮЩЕМУ АДРЕСУ.


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

        КОМПОНОВЩИК ВОСПРИНИМАЕТ ВСЕ  ОПЕРАНДЫ  КАК  16-БИТНЫЕ
   ЗНАКОВЫЕ ЗНАЧЕНИЯ, ИСПОЛЬЗУЯ ДВОИЧНУЮ АРИФМЕТИКУ С ДОПОЛНЕ-
   НИЕМ ДО  2.  РЕЗУЛЬТАТЫ  ЭКВИВАЛЕНТНЫ  ВЫРАЖЕНИЯМ,  КОТОРЫЕ
   ВЫЧИСЛЯЮТСЯ АССЕМБЛЕРОМ ПРИ ТРАНСЛЯЦИИ.
 �
                             - 31 -




        ПРИМЕЧАНИЯ:
        1. ПОПЫТКА ДЕЛЕНИЯ НА НУЛЬ СООТВЕТСТВУЕТ РЕЗУЛЬТАТУ 0.
   КОМПОНОВЩИК ВЫДАЕТ ПРЕДУПРЕЖДАЮЩЕЕ СООБЩЕНИЕ.
        2. ВСЕ РЕЗУЛЬТАТЫ УСЕКАЮТСЯ СЛЕВА ДО 16 РАЗРЯДОВ. ЕСЛИ
   ЧИСЛО СЛИШКОМ ВЕЛИКО,  ТО  ДИАГНОСТИКА  НЕ  ВЫДАЕТСЯ.  ЕСЛИ
   РЕЗУЛЬТАТ МОДИФИЦИРУЕТ БАЙТ, КОМПОНОВЩИК РАССМАТРИВАЕТ ДАН-
   НУЮ СИТУАЦИЮ КАК ОШИБКУ УСЕЧЕНИЯ (БАЙТОВЫЕ ОПЕРАЦИИ  ЗАПРЕ-
   ЩЕНЫ).
        3. ВСЕ ОПЕРАЦИИ ПРОИЗВОДЯТСЯ НАД ПЕРЕМЕЩАЕМЫМИ  (АДДИ-
   ТИВНОЕ) ИЛИ АБСОЛЮТНЫМИ 16-РАЗРЯДНЫМИ ЗНАЧЕНИЯМИ PC.

        В СИСТЕМЕ ИСПОЛЬЗУЮТСЯ СЛЕДУЮЩИЕ КОДЫ ОПЕРАЦИЙ:

    0     - НЕТ ОПЕРАЦИЙ;

    1     - СЛОЖЕНИЕ (+);

    2     - ВЫЧИТАНИЕ (-);

    3     - УМНОЖЕНИЕ (*);

    4     - ДЕЛЕНИЕ (/);

    5     - ЛОГИЧЕСКОЕ "И" (&);

    6     - ЛОГИЧЕСКОЕ "ИЛИ" (!);

    7     - ИСКЛЮЧАЮЩЕЕ "ИЛИ" ;

   10     - ОТРИЦАНИЕ (-);

   11     - ДОПОЛНЕНИЕ (^C);

   12     - СОХРАНИТЬ РЕЗУЛЬТАТ (ЗАВЕРШЕНИЕ КОМАНДЫ);

   13     - СОХРАНИТЬ  РЕЗУЛЬТАТ  С   ПЕРЕМЕЩАЕМЫМ   СМЕЩЕНИЕМ
            (ЗАВЕРШЕНИЕ КОМАНДЫ);

   16     - ВЫЗВАТЬ ГЛОБАЛЬНЫЙ  СИМВОЛ;  ЗА  КОМАНДОЙ  СЛЕДУЮТ
            ЧЕТЫРЕ БАЙТА, СОДЕРЖАЩИЕ  СИМВОЛЬНОЕ  ИМЯ  В  КОДЕ
            RAD50;

   17     - ВЫЗВАТЬ ПЕРЕМЕЩАЕМОЕ ЗНАЧЕНИЕ; ЗА КОМАНДОЙ СЛЕДУЕТ
            ОДИН БАЙТ, СОДЕРЖАЩИЙ НОМЕР СЕКЦИИ, И  ДВА  БАЙТА,
            СОДЕРЖАЩИЕ СМЕЩЕНИЕ В СЕКЦИИ;

   20     - ВЫЗВАТЬ КОНСТАНТУ; ЗА КОМАНДОЙ СЛЕДУЮТ ДВА  БАЙТА,
            СОДЕРЖАЩИЕ КОНСТАНТУ.











 �
                             - 32 -




   ПРИМЕР.

           .PSECT  ALPHA
    A:
           . . .
           . . .
           . . .

           .PSECT  BETA
    B:
           . . .
           . . .
           . . .

           MOV     #A+B-<G1/G2&^C<177120!G3>>,R1


        ФОРМАТ ТИПА КОМАНДЫ ПРЕДСТАВЛЕН НА РИС. 28.

                      !-------------------!
                      !СМЕЩЕНИЕ ! B  ! 17 !
                      !-------------------!
                      !  СЛОЖНАЯ СТРОКА   !
                      !-------------------!
                      !   12    !         !
                      !-------------------!

                            РИС. 28



        3.5. БЛОК ENDMOD



        КАЖДЫЙ ОБ'ЕКТНЫЙ МОДУЛЬ  ДОЛЖЕН  ЗАКАНЧИВАТЬСЯ  БЛОКОМ
   ENDMOD (БЛОК КОНЦА МОДУЛЯ). БЛОК ENDMOD  ИМЕЕТ  ОДНО  СЛОВО
   ДАННЫХ, КОТОРОЕ СОДЕРЖИТ КОД ИДЕНТИФИКАТОРА ТИПА БЛОКА (КОД
   ИТБ=6).




















 �
                             - 33 -




                      4. ФОРМАТ ФАЙЛА STB




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

          - ЕСЛИ ИСХОДНЫЙ ФАЙЛ СОДЕРЖИТ ОПЕРАТОР "X == 10", ТО
            В ФАЙЛ STB ЗАПИСЫВАЕТСЯ "X = 10", Т.Е. ОПРЕДЕЛЕНИЕ
            ГЛОБАЛЬНОГО СИМВОЛА Х;

          - ЕСЛИ ИСХОДНЫЙ ФАЙЛ СОДЕРЖИТ A = FOO, ТО В ФАЙЛ STB
            ЗАПИСЫВАЕТСЯ АБСОЛЮТНОЕ ЗНАЧЕНИЕ АДРЕСА FOO.

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

        ФАЙЛ STB (РИС. 29) СОДЕРЖИТ ТОЛЬКО БЛОКИ  ДАННЫХ  GSD,
   ЗА КОТОРЫМИ СЛЕДУЮТ БЛОКИ ENDGSD И ENDMOD.

                      ФОРМАТ ФАЙЛА STB
                   !-----------------------!
                   ! ИМЯ ОБ'ЕКТНОГО МОДУЛЯ !
                   !   (БЛОК GSD КИЭБ=0)   !
                   !-----------------------!
                   ! ИДЕНТИФИКАТОР ВЕРСИИ  !
                   !      ПРОГРАММЫ        !
                   !   (БЛОК GSB КИЭБ=6)   !
                   !-----------------------!
                   ! ИМЯ КОНТРОЛЬНОЙ СЕКЦИИ!
                   !   (БЛОК GSB КИЭБ=1)   !
                   !-----------------------!
                   ! ИНФОРМАЦИЯ О ГЛОБАЛЬ- !
                   ! НОМ СИМВОЛЕ           !
                   !   (БЛОК GSB КИЭБ=4)   !
                   !-----------------------!
                   .                       .
                   .                       .
                   .                       .
                   !-----------------------!
                   ! ИНФОРМАЦИЯ О ГЛОБАЛЬ- !
                   ! НОМ СИМВОЛЕ           !
                   !   (БЛОК GSB КИЭБ=4)   !
                   !-----------------------!
                   !     БЛОК ENDGSD       !
                   !-----------------------!
                   !     БЛОК ENDMOD       !
                   !-----------------------!

                           РИС. 29
 �
                             - 34 -




                 5. ФОРМАТ БИБЛИОТЕЧНЫХ ФАЙЛОВ




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

        ОБ'ЕКТНЫЙ МОДУЛЬ, ВКЛЮЧЕННЫЙ В  БИБЛИОТЕКУ,  ПЕРЕСТАЕТ
   БЫТЬ НЕЗАВИСИМЫМ. МОДУЛИ ОБ'ЕДИНЯЮТСЯ И  СТАНОВЯТСЯ  ЧАСТЬЮ
   БИБЛИОТЕЧНОЙ СТРУКТУРЫ.

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

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

































 �
                             - 35 -




                 ДВА СПОСОБА ОБ'ЕДИНЕНИЯ МОДУЛЕЙ


                   БАЙТЫ                        СЛОВА
       МОДУЛЬ 1   !-----!                   !-----!-----!
                  !  1  !                   !  2  !  1  !
                  !-----!                   !-----!-----!
                  !  2  !                   !  4  !  3  !
                  !-----!                   !-----!-----!
                  !  3  !                         !  5  !
                  !-----!                         !-----!
                  !  4  !
                  !-----!
                  !  5  !
                  !-----!

                   БАЙТЫ                        СЛОВА
      МОДУЛЬ 2    !-----!                   !-----!-----!
                  !  1  !                   !  2  !  1  !
                  !-----!                   !-----!-----!
                  !  2  !                   !  4  !  3  !
                  !-----!                   !-----!-----!
                  !  3  !                         !  5  !
                  !-----!                         !-----!
                  !  4  !
                  !-----!
                  !  5  !
                  !-----!

                    ОБ'ЕДИНЯЕМЫЕ МОДУЛИ (1 И 2).

                   БАЙТЫ                       СЛОВА
      МОДУЛЬ 1    !-----!      МОДУЛЬ 1    !-----!-----!
                  !  1  !                  !  2  !  1  !
                  !-----!                  !-----!-----!
                  !  2  !                  !  4  !  3  !
                  !-----!                  !-----!-----!
                  !  3  !      МОДУЛЬ 2    !  1  !  5  !
                  !-----!                  !-----!-----!
                  !  4  !                  !  3  !  2  !
                  !-----!                  !-----!-----!
                  !  5  !                  !  5  !  4  !
      МОДУЛЬ 2    !-----!                  !-----!-----!
                  !  1  !
                  !-----!
                  !  2  !
                  !-----!
                  !  3  !
                  !-----!
                  !  4  !
                  !-----!
                  !  5  !
                  !-----!

                             РИС. 30

        СИСТЕМА ПОДДЕРЖИВАЕТ ДВА ТИПА БИБЛИОТЕК:  МАКРОБИБЛИО-
   ТЕКУ И ОБ'ЕКТНУЮ БИБЛИОТЕКУ. ПО УМОЛЧАНИЮ ОБ'ЕКТНЫЕ БИБЛИО-
   ТЕКИ ИМЕЮТ ТИП ФАЙЛА OBJ, МАКРОБИБЛИОТЕКИ - MAC.
 �
                             - 36 -




        БИБЛИОТЕЧНЫЙ ФАЙЛ СОСТОИТ ИЗ  ЗАГОЛОВКА  ФАЙЛА,  ЗАТЕМ
   ИДУТ КАТАЛОГ БИБЛИОТЕКИ, МОДУЛИ, ВКЛЮЧЕННЫЕ В БИБЛИОТЕКУ, И
   БЛОК КОНЦА БИБЛИОТЕЧНОГО ФАЙЛА (РИС. 31).


                   ФОРМАТ БИБЛИОТЕЧНОГО ФАЙЛА

                     !---------------!
                     !   ЗАГОЛОВОК   !
                     ! БИБЛИОТЕЧНОГО !
                     !     ФАЙЛА     !
                     !---------------!
                     !    КАТАЛОГ    !
                     !   ОБ'ЕКТНЫХ   !
                     !    МОДУЛЕЙ    !
                     !---------------!
                     !               !
                     .   ОБ'ЕКТНЫЕ   .
                     .    МОДУЛИ     .
                     .               .
                     !---------------!
                     !  БЛОК КОНЦА   !
                     ! БИБЛИОТЕЧНОГО !
                     !     ФАЙЛА     !
                     !---------------!

                          РИС. 31

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



        5.1. СТРУКТУРА МАКРОБИБЛИОТЕКИ



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

        ВСЕ ЗНАЧЕНИЯ ЧИСЕЛ ПРЕДСТАВЛЕНЫ В  ВОСЬМЕРИЧНОМ  ВИДЕ.
   ДАТА И ВРЕМЯ, КОТОРЫЕ ИМЕЮТ СТАНДАРТНЫЙ ФОРМАТ  В  СИСТЕМЕ,
   ЯВЛЯЮТСЯ ДАТОЙ И ВРЕМЕНЕМ СОЗДАНИЯ БИБЛИОТЕКИ.













 �
                             - 37 -




                                           ТАБЛИЦА 2
     -----------------------------------------------
      ЯЧЕЙКА ! ЗНАЧЕНИЕ !   ВЫПОЛНЯЕМАЯ ФУНКЦИЯ
     -----------------------------------------------
         0   !   1001   ! КОД ИДЕНТИФИКАТОРА И ТИПА
     --------!----------!---------------------------
         2   !    310   ! НОМЕР ВЕРСИИ БИБЛИОТЕКИ
     --------!----------!---------------------------
         4   !      0   !      НЕ ИСПОЛЬЗУЕТСЯ
     --------!----------!---------------------------
         6   !          !  ДАТА ( 0 - ЕСЛИ НЕТ )
     --------!----------!---------------------------
        10   !          !      ВРЕМЯ СОЗДАНИЯ
     --------!----------!----                   ----
        12   !          !       В ДВУХ СЛОВАХ
     --------!----------!---------------------------
        14   !      0   !      НЕ ИСПОЛЬЗУЕТСЯ
     --------!----------!---------------------------
        .    !      .   !
        .    !      .   !      НЕ ИСПОЛЬЗУЕТСЯ
        .    !      .   !
     --------!----------!---------------------------
        32   !     10   ! РАЗМЕР ЗАПИСЕЙ КАТАЛОГА
     --------!----------!---------------------------
        34   !          ! ОТНОСИТЕЛЬНЫЙ НОМЕР БЛОКА
             !          !      НАЧАЛА КАТАЛОГА
     --------!----------!---------------------------
             !          !МАКСИМАЛЬНОЕ ЧИСЛО ЗАПИСЕЙ,
        36   !          !    КОТОРОЕ МОЖЕТ БЫТЬ В
             !          ! КАТАЛОГЕ (ПО УМОЛЧАНИЮ
             !          ! ОТВОДИТСЯ 200)
     --------!----------!---------------------------
        40   !          ! СЧЕТЧИК СВОБОДНЫХ ЗАПИСЕЙ
             !          ! В КАТАЛОГЕ

        ЯЧЕЙКА 36 УКАЗЫВАЕТ МАКСИМАЛЬНОЕ  КОЛИЧЕСТВО  ЗАПИСЕЙ,
   КОТОРЫЕ МОГУТ ПОМЕСТИТЬСЯ В КАТАЛОГЕ. ЭТО ЗНАЧЕНИЕ  ОПРЕДЕ-
   ЛЯЕТСЯ ПРИ СОЗДАНИИ БИБЛИОТЕКИ С ПОМОЩЬЮ ПРОГРАММЫ  LIBR  И
   КЛЮЧА /M:N. "N" ПО УМОЛЧАНИЮ БЕРЕТСЯ РАВНЫМ 200 (ФАКТИЧЕСКИ
   ДЛИНА КАТАЛОГА ПОЛУЧАЕТСЯ РАВНОЙ 2 БЛОКАМ).

        ДЛЯ МАКРОБИБЛИОТЕКИ КАТАЛОГОМ ЯВЛЯЕТСЯ ТАБЛИЦА МАКРОИ-
   МЕН (MNT). СТРУКТУРА ЗАПИСИ  В  КАТАЛОГЕ  ОДИНАКОВА  ДЛЯ  2
   ТИПОВ БИБЛИОТЕК И ПРЕДСТАВЛЕНА НА РИС. 32.  БИТ  15  В  3-М
   СЛОВЕ ЗАПИСИ ИСПОЛЬЗУЕТСЯ ТОЛЬКО В ОБ'ЕКТНОЙ БИБЛИОТЕКЕ.

        !-------------------------------------------!
        !            И М Я  (ДВА СЛОВА              !
        !--------                           --------!
        !              В КОДЕ RAD50)                !
        !-------------------------------------------!
        !  ! НОМЕР БЛОКА ОТНОСИТЕЛЬНО НАЧАЛА ФАЙЛА  !
        !-------------------------------------------!
        ! НЕ ИСПОЛЬЗУ- ! ОТНОСИТЕЛЬНЫЙ БАЙТ В БЛОКЕ !
        ! ЕТСЯ (7 БИТ) !         (9 БИТ)            !
        !-------------------------------------------!

                             РИС. 32

 �
                             - 38 -




        КАТАЛОГ МАКРОБИБЛИОТЕКИ НАЧИНАЕТСЯ С  ПЕРВОГО  ОТНОСИ-
   ТЕЛЬНОГО БЛОКА БИБЛИОТЕЧНОГО ФАЙЛА. В НУЛЕВОМ ОТНОСИТЕЛЬНОМ
   БЛОКЕ МАКРОБИБЛИОТЕКИ РАСПОЛОЖЕН ЕЕ ЗАГОЛОВОК. ДЛИНА  КАТА-
   ЛОГА ОПРЕДЕЛЯЕТСЯ ЗАРАНЕЕ, ПО УМОЛЧАНИЮ ДЛИНА РАВНА 2  БЛО-
   КАМ. ОНА МОЖЕТ БЫТЬ ИЗМЕНЕНА КЛЮЧОМ  /M  (ПРОГРАММА  LIBR).
   НЕИСПОЛЬЗУЕМЫЕ ВХОДЫ В  КАТАЛОГ  ЗАПОЛНЯЮТСЯ  КОДОМ  177777
   (-1). ФАЙЛЫ МАКРОБИБЛИОТЕКИ ЗАПОЛНЯЮТСЯ, НАЧИНАЯ С  ПЕРВОГО
   БЛОКА ПОСЛЕ КАТАЛОГА. ЭТО ОТНОСИТЕЛЬНЫЙ БЛОК 3 БИБЛИОТЕЧНО-
   ГО ФАЙЛА, ЕСЛИ ДЛИНА КАТАЛОГА ОПРЕДЕЛЕНА ПО УМОЛЧАНИЮ.



        5.2. СТРУКТУРА ОБ'ЕКТНОЙ БИБЛИОТЕКИ


        СТРУКТУРА ЗАГОЛОВКА ОБ'ЕКТНОЙ БИБЛИОТЕКИ ОТЛИЧАЕТСЯ ОТ
   СТРУКТУРЫ МАКРОБИБЛИОТЕКИ И ПРЕДСТАВЛЕНА В ТАБЛ. 3.

                                           ТАБЛИЦА 3
     -----------------------------------------------
      ЯЧЕЙКА ! ЗНАЧЕНИЕ !   ВЫПОЛНЯЕМАЯ ФУНКЦИЯ
     -----------------------------------------------
         0   !      1   !    КОД ЗАГОЛОВКА БЛОКА
     --------!----------!----                   ----
         2   !     42   !        БИБЛИОТЕКИ
     --------!----------!---------------------------
         4   !      7   !      КОД БИБЛИОТЕКИ
     --------!----------!---------------------------
         6   !    310   !  НОМЕР ВЕРСИИ БИБЛИОТЕКИ
     --------!----------!---------------------------
        10   !      0   !     НЕ ИСПОЛЬЗУЕТСЯ
     --------!----------!---------------------------
        12   !          ! ДАТА (0-ЕСЛИ ОТСУТСТВУЕТ)
     --------!----------!---------------------------
        14   !          !     ВРЕМЯ СОЗДАНИЯ
     --------!----------!----                   ----
        16   !          !      В ДВУХ СЛОВАХ
     --------!----------!---------------------------
        20   !      0   ! 1, ЕСЛИ БИБЛИОТЕКА СОЗДАНА
             !          ! С КЛЮЧОМ /X
     --------!----------!---------------------------
         .   !      .   !
         .   !      .   !     НЕ ИСПОЛЬЗУЕТСЯ
         .   !      .   !
     --------!----------!---------------------------
        26   !     10   !   ОТНОСИТЕЛЬНЫЙ АДРЕС
             !          !     НАЧАЛА КАТАЛОГА
     --------!----------!---------------------------
        30   !          !     КОЛИЧЕСТВО БАЙТОВ,
             !          !   ОТВЕДЕННЫХ ПОД КАТАЛОГ
     --------!----------!---------------------------
        32   !      0   !     НЕ ИСПОЛЬЗУЕТСЯ
     --------!----------!---------------------------
        34   !          !ОТНОСИТЕЛЬНЫЙ НОМЕР ПЕРВОГО
             !          !   НЕЗАПОЛНЕННОГО БЛОКА
     --------!----------!---------------------------
        36   !          !ПЕРВЫЙ СВОБОДНЫЙ БАЙТ БЛОКА
     --------!----------!---------------------------
        40   !          !      НАЧАЛО КАТАЛОГА
 �
                             - 39 -




        ДАТА СОЗДАНИЯ БИБЛИОТЕКИ ДАНА В ФОРМАТЕ СИСТЕМЫ.

        ФОРМАТ ЗАПИСИ В КАТАЛОГЕ  ОБ'ЕКТНОЙ  БИБЛИОТЕКИ  ТАКОЙ
   ЖЕ, КАК И ДЛЯ МАКРОБИБЛИОТЕКИ (СМ. РИС. 32). ОТЛИЧИЕ ЗАКЛЮ-
   ЧАЕТСЯ В ТОМ, ЧТО ДЛЯ ОБ'ЕКТНЫХ БИБЛИОТЕК КАТАЛОГОМ ЯВЛЯЕТ-
   СЯ ТАБЛИЦА ТОЧЕК ВХОДА (ЕРТ).

        СЛЕДУЕТ ПОМНИТЬ, ЧТО  ПРИ  ВКЛЮЧЕНИИ  ИМЕН  МОДУЛЕЙ  В
   ОБ'ЕКТНУЮ БИБЛИОТЕКУ С ПОМОЩЬЮ КЛЮЧА /N  (ПРОГРАММА  LIBR),
   БИТ 15 СЛОВА "НОМЕР БЛОКА ОТНОСИТЕЛЬНО НАЧАЛА ФАЙЛА"  УСТА-
   НАВЛИВАЕТСЯ В 1. ЕСЛИ ЖЕ БИБЛИОТЕКА СОЗДАНА КОМАНДОЙ  МОНИ-
   ТОРА LIBRARY, ТО ИМЕНА МОДУЛЕЙ НЕ ВКЛЮЧАЮТСЯ.

        КАТАЛОГ ОБ'ЕКТНОЙ БИБЛИОТЕКИ НАЧИНАЕТСЯ НЕПОСРЕДСТВЕН-
   НО ЗА ЗАГОЛОВКОМ (СЛОВО 40). КАТАЛОГ ИМЕЕТ ДЛИНУ, ДОСТАТОЧ-
   НУЮ ДЛЯ ВКЛЮЧЕНИЯ ТОЛЬКО ОПРЕДЕЛЕННОГО ЧИСЛА МОДУЛЕЙ В БИБ-
   ЛИОТЕКУ.  НЕИСПОЛЬЗУЕМЫЕ  ОБЛАСТИ  В  КАТАЛОГЕ  ЗАПОЛНЯЮТСЯ
   НУЛЯМИ.



        5.3. ФОРМАТ БЛОКА КОНЦА БИБЛИОТЕКИ


        ВСЕ БИБЛИОТЕКИ, ОПИСАННЫЕ ВЫШЕ,  ИМЕЮТ  В  КОНЦЕ  СПЕ-
   ЦИАЛЬНЫЙ БЛОК. ЭТОТ БЛОК УКАЗЫВАЕТ НА  КОНЕЦ  БИБЛИОТЕЧНОГО
   ФАЙЛА. СТРУКТУРА ПОСЛЕДНЕГО БЛОКА ПРЕДСТАВЛЕНА НА РИС. 33.

                     !-----!-----!
                     !  0  !   1 !
                     !-----!-----!
                     !  0  !  10 !
                     !-----!-----!
                     !  0  !  10 !
                     !-----!-----!
                     !  0  !   0 !
                     !-----!-----!
                     !     ! 357 !
                     !-----!-----!

                       РИС. 33

        ВСЕ СТАРШИЕ БАЙТЫ РАВНЫ 0.  СЛОВА  СОДЕРЖАТ  СЛЕДУЮЩУЮ
   ИНФОРМАЦИЮ:

   СЛОВО 1
          - ПРИЗНАК НАЧАЛА БЛОКА;

   СЛОВО 2
          - СЧЕТЧИК БАЙТОВ В БЛОКЕ;

   СЛОВО 3
          - КОД БЛОКА КОНЦА БИБЛИОТЕКИ;

   СЛОВО 4
          - НЕ ИСПОЛЬЗУЕТСЯ (РАВНО 0);



 �
                             - 40 -




   СЛОВО 5
          - ИСПОЛЬЗУЕТСЯ ТОЛЬКО МЛАДШИЙ БАЙТ, КОТОРЫЙ СОДЕРЖИТ
            КОНТРОЛЬНУЮ СУММУ.




                      6. ФОРМАТ ФАЙЛА LDA




        ПРОГРАММА В ФОРМАТЕ LDA МОЖЕТ БЫТЬ ЗАГРУЖЕНА В  ПАМЯТЬ
   ТОЛЬКО С ПОМОЩЬЮ АБСОЛЮТНОГО ПЕРФОЛЕНТОЧНОГО ЗАГРУЗЧИКА ИЛИ
   КОМАНДЫ МОНИТОРА ABSLOAD (ПРОГРАММА LDA.SAV).

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

        ФАЙЛ ТИПА LDA  СОЗДАЕТСЯ  ПРОГРАММОЙ  MACRO  С  КЛЮЧОМ
   /ENABL:ABS ИЛИ ПРОГРАММОЙ LINK С КЛЮЧОМ  /L,  ИЛИ  КОМАНДОЙ
   МОНИТОРА LINK С КЛЮЧОМ /LDA.

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

        СТРУКТУРА ПРОГРАММЫ В ФОРМАТЕ LDA ПРЕДСТАВЛЕНА НА РИС.
   34.

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




















 �
                             - 41 -




                   !--------------------------!
                   !            1             !
                   !-----                -----!
                   !            0             !
                   !--------------------------!
                   !     СЧЕТЧИК  БАЙТОВ      !
                   !-----                -----!
                   !        В БЛОКЕ           !
                   !--------------------------!
                   !     АБСОЛЮТНЫЙ АДРЕС     !
                   !------               -----!
                   !       ЗАГРУЗКИ           !
                   !--------------------------!
                   .                          .
                   .      Д А Н Н Ы Е         .
                   .                          .
                   !--------------------------!
                   !  БАЙТ КОНТРОЛЬНОЙ СУММЫ  !
                   !        БЛОКА 1           !
                   !--------------------------!
                   .                          .
                   .                          .
                   !--------------------------!
                   !            1             !
                   !-----                -----!
                   !            0             !
                   !--------------------------!
                   !     СЧЕТЧИК  БАЙТОВ      !
                   !-----                -----!
                   !        В БЛОКЕ           !
                   !--------------------------!
                   !      АБСОЛЮТНЫЙ АДРЕС    !
                   !-----                -----!
                   !        ЗАГРУЗКИ          !
                   !--------------------------!
                   .                          .
                   .       Д А Н Н Ы Е        .
                   .                          .
                   !--------------------------!
                   !  БАЙТ КОНТРОЛЬНОЙ СУММЫ  !
                   !         БЛОКА N          !
                   !--------------------------!
                   !             1            !
                   !-----                -----!
                   !             0            !
                   !--------------------------!
                   !             6            !
                   !-----                -----!
                   !             0            !
                   !--------------------------!
                   !     СТАРТОВЫЙ АДРЕС      !
                   !-----                -----!
                   !       ПРОГРАММЫ          !
                   !--------------------------!
                   !  БАЙТ КОНТРОЛЬНОЙ СУММЫ  !
                   !--------------------------!

                            РИС. 34

 �
                             - 42 -




                      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-МОНИТОРЕ ИСПОЛЬЗУЕТСЯ  ДЛЯ  УКАЗАНИЯ  РАЗМЕРА
            ОБЛАСТИ В КСЛОВАХ, ТРЕБУЕМОЙ ДЛЯ РАБОТЫ ПРОГРАММЫ;

 �
                             - 43 -




   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.

 �
                             - 44 -




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




                      8. ФОРМАТ ФАЙЛА REL




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

        ПРОГРАММЫ В ФОРМАТЕ ЗАГРУЗКИ REL СОЗДАЮТСЯ ДЛЯ  РАБОТЫ
   С FB/XM-МОНИТОРОМ.

        ДЛЯ СОЗДАНИЯ ОПЕРАТИВНОЙ ПРОГРАММЫ ИСПОЛЬЗУЕТСЯ  ПРОГ-
   РАММА  LINK  С  КЛЮЧОМ  /R  ИЛИ  КОМАНДА  LINK   С   КЛЮЧОМ
   /FOREGROUND.  КОМПОНОВЩИК  ОБ'ЕДИНЯЕТ  ОБ'ЕКТНЫЕ  МОДУЛИ  И
   ВЫЧИСЛЯЕТ ГЛОБАЛЬНЫЕ ССЫЛКИ.

        ОБ'ЕКТНЫЕ МОДУЛИ, ИСПОЛЬЗУЕМЫЕ ДЛЯ СОЗДАНИЯ ФАЙЛА ТИПА
   REL, КОМПОНУЮТСЯ ТАК ЖЕ, КАК ФАЙЛЫ ТИПА SAV С БАЗОВЫМ АДРЕ-
   СОМ 1000. ЭТО ДАЕТ ВОЗМОЖНОСТЬ  ПОЛЬЗОВАТЕЛЯМ  ИСПОЛЬЗОВАТЬ
   ДИРЕКТИВЫ .ASECT ДЛЯ РАЗМЕЩЕНИЯ ИНФОРМАЦИИ В ОБЛАСТЬ  ОТ  0
   ДО 777 В ФАЙЛЕ ТИПА REL. НО, В ОТЛИЧИЕ ОТ ФАЙЛА  ТИПА  SAV,
   ФАЙЛ ТИПА REL НЕ НАСТРАИВАЕТСЯ НА АДРЕСА  ПАМЯТИ  ВО  ВРЕМЯ
   КОМПОНОВКИ. ИНФОРМАЦИЯ О ПЕРЕМЕЩЕНИИ ВКЛЮЧЕНА ДЛЯ ИСПОЛЬЗО-
   ВАНИЯ ПРИ ЗАГРУЗКЕ КОМАНДОЙ FRUN (SRUN)  И  НЕОБХОДИМА  ДЛЯ
   ОПРЕДЕЛЕНИЯ, КАКИЕ ЯЧЕЙКИ В ПРОГРАММЕ ДОЛЖНЫ БЫТЬ НАСТРОЕНЫ
   ПРИ ЗАГРУЗКЕ ПРОГРАММЫ В ПАМЯТЬ.

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

        В НУЛЕВОМ БЛОКЕ, ПОМИМО ИНФОРМАЦИИ, ОПИСАННОЙ ДЛЯ ФАЙ-
   ЛА SAV, СОДЕРЖИТСЯ:

   52     - РАЗМЕР КОРНЕВОГО СЕГМЕНТА В БАЙТАХ;

   54     - РАЗМЕР СТЕКА В  БАЙТАХ;  ПО  УМОЛЧАНИЮ  РАВЕН  128
            (ДЕСЯТИЧНОЕ); ИЗМЕНЯЕТСЯ КЛЮЧОМ КОМПОНОВЩИКА /R:N;

   56     - РАЗМЕР ОВЕРЛЕЙНОЙ ОБЛАСТИ В БАЙТАХ  (0,  ЕСЛИ  НЕТ
            ОВЕРЛЕЕВ);

   60     - ТИП ФАЙЛА (REL) В КОДЕ RAD50;

   62     - НОМЕР БЛОКА, С КОТОРОГО  НАЧИНАЕТСЯ  ИНФОРМАЦИЯ  О
            ПЕРЕМЕЩЕНИИ;

   64     - АДРЕС ТАБЛИЦЫ  ДРАЙВЕРА  ОВЕРЛЕЕВ  ДЛЯ  ОВЕРЛЕЙНЫХ
            ФАЙЛОВ.
 �
                             - 45 -




        СУЩЕСТВУЕТ ДВА ВИДА ФАЙЛОВ ТИПА REL: ОВЕРЛЕЙНЫЕ И НЕО-
   ВЕРЛЕЙНЫЕ.



        8.1. НЕОВЕРЛЕЙНАЯ ОПЕРАТИВНАЯ ПРОГРАММА



        СТРУКТУРА НЕОВЕРЛЕЙНОЙ ОПЕРАТИВНОЙ ПРОГРАММЫ ПРЕДСТАВ-
   ЛЕНА НА РИС. 35.

                      !---------------!
                      !    НУЛЕВОЙ    !
                      !      БЛОК     !
                      !---------------!
                      !               !
                      . БЛОКИ ТЕКСТА  .
                      .   ПРОГРАММЫ   .
                      .               .
                      !---------------!
                      !               !
                      .     БЛОКИ     .
                      . ПЕРЕМЕЩЕНИЙ   .
                      .               .
                      !---------------!

                          РИС. 35

        КАЖДАЯ ЯЧЕЙКА БЛОКА ИНФОРМАЦИИ О ПЕРЕМЕЩЕНИИ  СОДЕРЖИТ
   СМЕЩЕНИЕ ОТНОСИТЕЛЬНО  НАЧАЛА  ПРОГРАММЫ  (НАЧАЛЬНЫЙ  АДРЕС
   РАВЕН 1000). ДЛЯ ТОГО, ЧТОБЫ ПЕРЕМЕЩЕНИЕ ВЫПОЛНЯЛОСЬ ВСЕГДА
   НА ГРАНИЦУ СЛОВА, АДРЕС РАЗДЕЛЕН НА ДВА. БИТ  15  УКАЗЫВАЕТ
   ЗНАК ПЕРЕМЕЩЕНИЯ (ПОЛОЖИТЕЛЬНЫЙ ИЛИ ОТРИЦАТЕЛЬНЫЙ). НА РИС.
   36 ПРЕДСТАВЛЕН БЛОК ИНФОРМАЦИИ О ПЕРЕМЕЩЕНИИ.

    BLOCK NUMBER 003
    000/ 000002 000007 100012 000040 . . .
    020/ 177776 000000 000000 000000 . . .
    040/ 000000 000000 000000 000000 . . .
     .
     .
     .
    760/ 000000 000000 000000 000000 . . .

              РИС. 36

        В ПРОГРАММЕ (СМ.  РИС.  36)  КОРРЕКТИРУЮТСЯ  СЛЕДУЮЩИЕ
   ЯЧЕЙКИ: 4, 16, 24, 100. ЯЧЕЙКА 24 ИМЕЕТ ОТРИЦАТЕЛЬНОЕ  СМЕ-
   ЩЕНИЕ. ЯЧЕЙКА, СОДЕРЖАЩАЯ ЧИСЛО 177776 (-2), ЯВЛЯЕТСЯ ПРИЗ-
   НАКОМ КОНЦА ДАННЫХ В БЛОКЕ ИНФОРМАЦИИ О ПЕРЕМЕЩЕНИИ.

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

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




   БОЖДЕННУЮ ОБЛАСТЬ ПАМЯТИ.

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

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



        8.2. ОВЕРЛЕЙНАЯ ОПЕРАТИВНАЯ ПРОГРАММА


        СТРУКТУРА ОПЕРАТИВНОЙ ПРОГРАММЫ, СОДЕРЖАЩЕЙ ОВЕРЛЕЙНЫЕ
   СЕГМЕНТЫ (РИС. 37), ПОДОБНА СТРУКТУРЕ НЕОВЕРЛЕЙНОЙ ПРОГРАМ-
   МЫ (СМ. РИС. 35). ОДНАКО, КРОМЕ КОРНЕВОГО СЕГМЕНТА, ИМЕЮТСЯ
   ТАКЖЕ ПЕРЕМЕЩАЕМЫЕ ОВЕРЛЕЙНЫЕ СЕГМЕНТЫ.

        ОВЕРЛЕЙНЫЕ СЕГМЕНТЫ НЕ ЯВЛЯЮТСЯ РЕЗИДЕНТНЫМИ В ПАМЯТИ.
   ОНИ ЗАГРУЖАЮТСЯ ТОЛЬКО ПРИ ВЫЗОВЕ ИЗ КОРНЕВОГО ИЛИ ИЗ ОВЕР-
   ЛЕЙНОГО СЕГМЕНТА. ДЛЯ СВЕДЕНИЯ К МИНИМУМУ ВРЕМЕННЫХ  ЗАТРАТ
   НА  КОРРЕКТИРОВКУ  ОВЕРЛЕЙНЫХ  СЕГМЕНТОВ  ПРИ  МНОГОКРАТНЫХ
   ВЫЗОВАХ В ПАМЯТЬ,  НАСТРОЙКА  ВСЕХ  СЕГМЕНТОВ  ПРОИЗВОДИТСЯ
   КАЖДЫЙ РАЗ ПРИ ЗАГРУЗКЕ ПРОГРАММЫ ПО КОМАНДЕ FRUN ИЛИ SRUN.

        ПРИЗНАКОМ КОНЦА СЕГМЕНТА (ОВЕРЛЕЙНОГО  ИЛИ  КОРНЕВОГО)
   ЯВЛЯЕТСЯ КОД 177777 (-1), ПРИЗНАКОМ КОНЦА ИНФОРМАЦИИ В БЛО-
   КЕ ПЕРЕМЕЩЕНИЙ - 177776 (-2).




























 �
                             - 47 -




                       !--------------!
                       !    НУЛЕВОЙ   !
                       !     БЛОК     !
                       !--------------!
                       ! БЛОКИ ТЕКСТА !
                       !  КОРНЕВОГО   !
                       !  СЕГМЕНТА 1  !
                       !--------------!
                       ! БЛОКИ ТЕКСТА !
                       ! ОВЕРЛЕЙНОГО  !
                       !  СЕГМЕНТА 1  !
                       !--------------!
                       .              .
                       .              .
                       .              .
                       !--------------!
                       ! БЛОКИ ТЕКСТА !
                       ! ОВЕРЛЕЙНОГО  !
                       !  СЕГМЕНТА N  !
                       !--------------!
                       !    БЛОКИ     !
                       ! ПЕРЕМЕЩЕНИЙ  !
                       ! КОРНЕВОГО    !
                       !  СЕГМЕНТА    !
                       !--------------!
                       !      -1      !
                       !--------------!
                       !    БЛОКИ     !
                       ! ПЕРЕМЕЩЕНИЙ  !
                       ! ОВЕРЛЕЙНОГО  !
                       ! СЕГМЕНТА  1  !
                       !--------------!
                       !      -1      !
                       !--------------!
                       .              .
                       .              .
                       .              .
                       !--------------!
                       !    БЛОКИ     !
                       ! ПЕРЕМЕЩЕНИЙ  !
                       ! ОВЕРЛЕЙНОГО  !
                       ! СЕГМЕНТА  N  !
                       !--------------!
                       !      -2      !
                       !--------------!

                           РИС. 37

        ПРОЦЕСС ОБРАБОТКИ ОВЕРЛЕЙНОЙ ПРОГРАММЫ СОСТОИТ В  СЛЕ-
   ДУЮЩЕМ:

          - НУЛЕВОЙ БЛОК СЧИТЫВАЕТСЯ KMON ВО ВНУТРЕННИЙ  БУФЕР
            KMON; USR ОПРЕДЕЛЯЕТ ИЗ ЯЧЕЕК 52 И 56 РАЗМЕР  ВСЕЙ
            ПРОГРАММЫ И ОПРЕДЕЛЯЕТ МЕСТО В ПАМЯТИ И АДРЕС ЗАГ-
            РУЗКИ;

          - БЛОКИ TXT КОРНЕВОГО СЕГМЕНТА ЗАГРУЖАЮТСЯ В ПАМЯТЬ;
            БЛОК ПЕРЕМЕЩЕНИЙ КОРНЕВОГО СЕГМЕНТА (НОМЕР  СОДЕР-
            ЖИТСЯ В  ЯЧЕЙКЕ  62)  ЗАПИСЫВАЕТСЯ  ВО  ВНУТРЕННИЙ
 �
                             - 48 -




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

        ПРИ НОВОЙ ЗАГРУЗКЕ ПРОГРАММЫ ПО  КОМАНДЕ  FRUN  (SRUN)
   ПРОЦЕДУРА, ОПИСАННАЯ ВЫШЕ, ПОВТОРЯЕТСЯ СНОВА.

        ЭТО  ВОЗМОЖНО  БЛАГОДАРЯ  ОТЛИЧИЮ  БЛОКОВ  ПЕРЕМЕЩЕНИЯ
   ОВЕРЛЕЙНОЙ ПРОГРАММЫ ОТ НЕОВЕРЛЕЙНОЙ. РАЗНИЦА ЗАКЛЮЧАЕТСЯ В
   ТОМ, ЧТО, КРОМЕ АДРЕСОВ ЯЧЕЕК, ПОДЛЕЖАЩИХ ПЕРЕМЕЩЕНИЮ, БЛОК
   СОДЕРЖИТ И ДАННЫЕ, ХРАНЯЩИЕСЯ В ЭТИХ ЯЧЕЙКАХ (РИС.  38):  В
   ПЕРВОМ СЛОВЕ УКАЗАНО <СМЕЩЕНИЕ * 2>, ВО ВТОРОМ СЛОВЕ - ПЕР-
   ВОНАЧАЛЬНОЕ СОДЕРЖИМОЕ ЭТОГО СЛОВА.

    BLOCK NUMBER 003
    000/ 000002 177777 000007 000340 100012 000020 . . .
    020/ 177776 000000 000000 000000 000000 000000 . . .
    040/ 000000 000000 000000 000000 000000 000000 . . .
     .
     .
     .
    760/ 000000 000000 000000 000000 000000 000000 . . .

                             РИС. 38

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

          - РАЗНЫЕ ВЕРСИИ МОНИТОРА;
          - ИЗМЕНЕНИЕ КОНФИГУРАЦИИ ПАМЯТИ;
          - ДРУГИЕ ДРАЙВЕРЫ УСТРОЙСТВ РЕЗИДЕНТНЫ В ПАМЯТИ.





















 �
                             - 49 -




              9. ФОРМАТ ФАЙЛА ПЕРЕКРЕСТНЫХ ССЫЛОК




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

        ДО ВЫЗОВА CREF ПО ЦЕПОЧКЕ НЕОБХОДИМО ЗАПОЛНИТЬ ОПРЕДЕ-
   ЛЕННЫЕ ЯЧЕЙКИ ОБЛАСТИ СОХРАНЕНИЯ ДАННЫХ В ВЫЗЫВАЮЩЕЙ  ПРОГ-
   РАММЕ СПЕЦИАЛЬНОЙ ИНФОРМАЦИЕЙ (ЯЧЕЙКИ ПАМЯТИ С  АБСОЛЮТНЫМИ
   АДРЕСАМИ ОТ 500 ДО 776). CREF ТРЕБУЕТ СЛЕДУЮЩУЮ ИНФОРМАЦИЮ:

        500   .RAD50 /SY /
        502   .RAD50 /CRE/
        504   .RAD50 /F  /
        506   .RAD50 /SAV/

          - СПЕЦИФИКАЦИЯ ФАЙЛА ДЛЯ ВЫЗОВА CREF;

       510
          - НОМЕР КАНАЛА ВЫХОДНОГО ФАЙЛА;

       512
          - ИМЯ ВЫХОДНОГО УСТРОЙСТВА В КОДЕ .RAD50;

       514
          - НОМЕР СТАРШЕГО ЗАПИСАННОГО БЛОКА ПЛЮС 1 (ВЫХОДНОГО
            ФАЙЛА);

       516
          - НОМЕР КАНАЛА ВХОДНОГО ФАЙЛА;

       520
          - ИМЯ ВХОДНОГО УСТРОЙСТВА В КОДЕ .RAD50;

       524
          - ФОРМАТ РАСПЕЧАТКИ:

               0 - 80 ПОЗИЦИЙ;

              -1 - 132 ПОЗИЦИИ;

        526   .RAD50 /DEV/
        530   .RAD50 /FIL/
        532   .RAD50 /NAM/
        534   .RAD50 /TYP/

          - ПРОГРАММА, КОТОРОЙ CREF ВОЗВРАЩАЕТ  УПРАВЛЕНИЕ  ПО
            ЦЕПОЧКЕ; ЕСЛИ ЗАДАНО ЗНАЧЕНИЕ 0, ТО CREF ЗАКРЫВАЕТ
            ФАЙЛ ЛИСТИНГА И ПЕРЕДАЕТ УПРАВЛЕНИЕ МОНИТОРУ;

    536-776
          - СТРОКА КОДОВ КОИ-7, ИСПОЛЬЗУЕМАЯ CREF КАК  ЗАГОЛО-
            ВОК СТРАНИЦЫ РАСПЕЧАТКИ (БЕЗ НОМЕРА СТРАНИЦЫ).
 �
                             - 50 -




        ВХОДНОЙ  ФАЙЛ,  СОЗДАВАЕМЫЙ  CREF,  ДОЛЖЕН   СОДЕРЖАТЬ
   12-БАЙТОВЫЕ (ДЕСЯТИЧНОЕ) ЗАПИСИ ДЛЯ КАЖДОЙ ССЫЛКИ  НА  СИМ-
   ВОЛ. ЗАПИСЬ ДЛЯ ВХОДНОГО ФАЙЛА CREF ИМЕЕТ СЛЕДУЮЩИЙ  ФОРМАТ
   (СМЕЩЕНИЕ В БАЙТАХ ДАНО В ВОСЬМЕРИЧНОМ ВИДЕ):

    0     - ОПИСАТЕЛЬ СЕКЦИИ ТАБЛИЦЫ:

            РАЗРЯДЫ 0 - 4
                 - СОДЕРЖАТ ЗНАК, КОТОРЫЙ CREF ИСПОЛЬЗУЕТ  КАК
                   ИМЯ СЕКЦИИ; ЗНАЧЕНИЕ КОИ-7 УСЕКАЕТСЯ  ДО  5
                   РАЗРЯДОВ;

            РАЗРЯДЫ 5 - 7
                 - СОДЕРЖАТ НОМЕР СЕКЦИИ; ЭТО ЗНАЧЕНИЕ ИСПОЛЬ-
                   ЗУЕТСЯ ДЛЯ УПОРЯДОЧЕНИЯ СЕКЦИЙ В  РАСПЕЧАТ-
                   КЕ;

    1 -  6
          - ИМЯ СИМВОЛА В КОИ-7;

    7 - 10
          - НОМЕР СТРАНИЦЫ (ДВОИЧНОЕ); ЕСЛИ НОМЕР СТРАНИЦЫ  НЕ
            ИСПОЛЬЗУЕТСЯ, ТО ДОЛЖНО СОДЕРЖАТЬ -1;

   11 - 12
          - НОМЕР СТРОКИ (ДВОИЧНОЕ);

   13     - ОДНОСИМВОЛЬНЫЙ ИДЕНТИФИКАТОР, ВЫВОДИМЫЙ CREF ПОСЛЕ
            ЭТОЙ ССЫЛКИ; ОБЫЧНО  ЭТОТ  ЗНАК  ИСПОЛЬЗУЕТСЯ  ДЛЯ
            УКАЗАНИЯ ТОЧКИ  ОПРЕДЕЛЕНИЯ  ИЛИ  ДЛЯ  РАЗРУШАЮЩЕЙ
            ПРЕДЫДУЩЕЕ ЗНАЧЕНИЕ ССЫЛКИ.




























 �
                             - 51 -




            10. ФОРМАТ ФАЙЛА ПРОТОКОЛИРОВАНИЯ ОШИБОК




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

        ЗАДАНИЕ ПРОТОКОЛИРОВАНИЯ ОШИБОК ПРИОСТАНАВЛИВАЕТСЯ  ДО
   ТЕХ ПОР, ПОКА ВО ВХОДНОМ БУФЕРЕ ПРОТОКОЛА НЕ ЗАПОЛНИТСЯ 200
   ИЛИ БОЛЕЕ СЛОВ ИЗ ОБЩЕГО ОБ'ЕМА БУФЕРА В 256 СЛОВ (ДЕСЯТИЧ-
   НОЕ). БЛОК КОПИРОВАНИЯ ЗАДАНИЯ EL ИНФОРМИРУЕТ ОБ ЭТОМ МОНИ-
   ТОР, УСТАНАВЛИВАЯ БИТ "C" СЛОВА  СОСТОЯНИЯ  ПРОЦЕССОРА  ПРИ
   ВОЗВРАТЕ УПРАВЛЕНИЯ. Т.Е. ЗАДАНИЕ  ПРОТОКОЛИРОВАНИЯ  ОШИБОК
   РАЗБЛОКИРУЕТСЯ МОНИТОРОМ ТОЛЬКО ТОГДА, КОГДА ВХОДНОЙ  БУФЕР
   ПРОТОКОЛА СОДЕРЖИТ ДОСТАТОЧНО МНОГО ИНФОРМАЦИИ ДЛЯ ОБРАБОТ-
   КИ.

        ДЛЯ ОШИБОК УСТРОЙСТВ, ОШИБОК КЭШ-ПАМЯТИ, ОШИБОК  ПАРИ-
   ТЕТА ПАМЯТИ МОДУЛЬ ПРОТОКОЛИРОВАНИЯ ОШИБОК СНАЧАЛА  СОЗДАЕТ
   ИЛИ ОБНОВЛЯЕТ СТАТИСТИЧЕСКУЮ  ИНФОРМАЦИЮ  ОБ  УСТРОЙСТВЕ  В
   КОПИИ ЗАГОЛОВКА ДИСКОВОГО ФАЙЛА, КОТОРАЯ НАХОДИТСЯ В  ПАМЯ-
   ТИ. ЗАДАНИЕ EL ЗАПИСЫВАЕТ ИНФОРМАЦИЮ ОБ ОШИБКЕ  В  ВЫХОДНОЙ
   БУФЕР (ИЛИ В ОДИН ИЗ ДВУХ ПРИ ИСПОЛЬЗОВАНИИ ДВОЙНОЙ БУФЕРИ-
   ЗАЦИИ) ДО ТЕХ ПОР, ПОКА 256-СЛОВНЫЙ (ДЕСЯТИЧНОЕ)  БУФЕР  НЕ
   ЗАПОЛНИТСЯ. Т.Е. ЗАПИСИ ОБ ОШИБКАХ ЗАПИСЫВАЮТСЯ ДО ТЕХ ПОР,
   ПОКА В БУФЕРЕ ЕСТЬ МЕСТО ДЛЯ СЛЕДУЮЩЕЙ ЗАПИСИ. В  ПРОТИВНОМ
   СЛУЧАЕ ПРОИЗВОДИТСЯ ЗАПИСЬ ОБНОВЛЕННОГО ЗАГОЛОВКА  ФАЙЛА  И
   ЗАПИСЬ БУФЕРА (Т.Е. НАКОПЛЕННОЙ ДИАГНОСТИКИ) В ФАЙЛ НА ДИС-
   КЕ С ИМЕНЕМ ERRLOG.DAT. НА РИС. 39 ПРЕДСТАВЛЕНА  ПОДСИСТЕМА
   ПРОТОКОЛИРОВАНИЯ ОШИБОК.

        ДЛЯ УСПЕШНЫХ ОПЕРАЦИЙ ОБМЕНА  МОДУЛЬ  ПРОТОКОЛИРОВАНИЯ
   ОШИБОК СОЗДАЕТ ИЛИ ОБНОВЛЯЕТ СТАТИСТИЧЕСКУЮ  ИНФОРМАЦИЮ  ОБ
   УСТРОЙСТВЕ В КОПИИ ЗАГОЛОВКА  ФАЙЛА,  КОТОРАЯ  НАХОДИТСЯ  В
   ПАМЯТИ, АНАЛОГИЧНО ТОМУ, КАК  ЭТО  ПРОИСХОДИТ  ПРИ  ОШИБКАХ
   УСТРОЙСТВ ИЛИ ПАМЯТИ. ОБНОВЛЕННЫЙ ЗАГОЛОВОК ЗАПИСЫВАЕТСЯ НА
   ДИСК ТОЛЬКО ПОСЛЕ 10 (ДЕСЯТИЧНОЕ) ЗАПРОТОКОЛИРОВАННЫХ  ОПЕ-
   РАЦИЙ ВВОДА/ВЫВОДА.









 �
                             - 52 -





               ПОДСИСТЕМА ПРОТОКОЛИРОВАНИЯ ОШИБОК


       !------------!
       ! ДРАЙВЕР #1 !--
       !------------! !        !--------------------!
           .....      !------->!  БЛОК КОПИРОВАНИЯ  !---!
       !------------! !        !--------------------!   !
       ! ДРАЙВЕР #N !--        !   ВХОДНОЙ  БУФЕР   !<--!
       !------------!          !--------------------!   !
                               !                    !---!
       !---------------!       !  БЛОК ВЫВОДА       !
       ! М О Н И Т О Р !------>!           НА ДИСК  !----!
       !---------------!/ \    !--------------------!    !
                         !   --!  ЗАГОЛОВОК ФАЙЛА   !-!  !
                         !   ! !--------------------! !  !
                         !   !-! ВЫХОДНОЙ БУФЕР # 1 ! !  !
            !------------!   ! !--------------------! !<--
            !                !-! ВЫХОДНОЙ БУФЕР # 2 !-!
           / \               ! !--------------------!
            !                !
            !                V
       !--------!      !-----------------!      !--------!
       ! ERROUT !<-----! ФАЙЛ ERRLOG.DAT !<-----! ELINIT !
       !--------!      !-----------------!      !--------!
            !
            V
         !-----!
         ! / \ !  ПРОТОКОЛ ОШИБОК
         !/   \!     И СТАТИСТИКИ


   ДРАЙВЕРЫ
          - РАЗМЕЩАЮТ ИНФОРМАЦИЮ ВО ВХОДНОМ БУФЕРЕ ЧЕРЕЗ  УКА-
            ЗАТЕЛЬ $ELPTR В RMON;

   ELINIT - ИНИЦИАЛИЗАЦИЯ ФАЙЛА ERRLOG.DAT И ЗАПУСК EL;

   МОНИТОР
          - РАЗБЛОКИРУЕТ ЗАДАНИЕ EL ДЛЯ ОСВОБОЖДЕНИЯ  ВХОДНОГО
            БУФЕРА И ПОДГОТОВКИ ДАННЫХ ДЛЯ ВЫВОДА;

   ERROUT - ЗАДАНИЕ РАСПЕЧАТКИ; СВЯЗЫВАЕТСЯ С  EL  ДЛЯ  ВЫВОДА
            ТЕКУЩИХ  ДАННЫХ  ИЗ   ВХОДНОГО   БУФЕРА   В   ФАЙЛ
            ERRLOG.DAT ДЛЯ СОЗДАНИЯ ПОЛНОЙ ИТОГОВОЙ  РАСПЕЧАТ-
            КИ.


                             РИС. 39

        РИС. 40 ИЛЛЮСТРИРУЕТ ФОРМАТ ЗАПИСИ ВО ВНУТРЕННЕМ ВХОД-
   НОМ БУФЕРЕ МОДУЛЯ ПРОТОКОЛИРОВАНИЯ ОШИБОК.






 �
                             - 53 -




        ФОРМАТ ЗАПИСИ ОБ ОШИБКЕ УСТРОЙСТВА ВО ВНУТРЕННЕМ
             БУФЕРЕ МОДУЛЯ ПРОТОКОЛИРОВАНИЯ ОШИБОК

     !--------------------------!--------------------------!
     !      НОМЕР    ЗАПИСИ     !     РАЗМЕР    ЗАПИСИ     !
     !--------------------------!--------------------------!
     ! ИДЕНТИФИКАТОР УСТРОЙСТВА !     СЧЕТЧИК ПОПЫТОК      !
     !--------------------------!--------------------------!
     !     ФИЗИЧЕСКИЙ    НОМЕР     БЛОКА     (Q.BLKN)      !
     !--------------------------!--------------------------!
     ! РЕЗЕРВ!  НОМЕР !НОМЕР УС-!  КОД                     !
     !(1 РАЗ-! ЗАДАНИЯ!ТРОЙСТВА !    СПЕЦИФИКАЦИИ          !
     ! РЯД)  ! (4 РАЗ-! (3 РАЗ- !        (8 РАЗРЯДОВ)      !
     !       ! РЯДА)  ! РЯДА)   !                          !
     !--------------------------!--------------------------!
     !        АДРЕС    БУФЕРА    ПОЛЬЗОВАТЕЛЯ              !
     !--------------------------!--------------------------!
     !             СЧЕТЧИК    СЛОВ    (Q.WCNT)             !
     !--------------------------!--------------------------!
     !    ЗНАЧЕНИЕ PAR1 (Q.PAR) - ТОЛЬКО В ХМ-МОНИТОРЕ     !
     !--------------------------!--------------------------!
     !    ОБЩЕЕ                 !  ЧИСЛО                   !
     !         ЧИСЛО            !       ФИКСИРУЕМЫХ        !
     !              ПОПЫТОК     !   РЕГИСТРОВ УСТРОЙСТВА   !
     !--------------------------!--------------------------!
     !                 РЕГИСТРЫ  УСТРОЙСТВА :              !
     !                    ...............                  !
     !--------------------------!--------------------------!

                             РИС. 40
   НА РИС. 41 ПОКАЗАН ФОРМАТ ЗАПИСИ ОБ УСПЕШНОЙ ПЕРЕДАЧЕ.

       ФОРМАТ ЗАПИСИ ОБ УСПЕШНОЙ ПЕРЕДАЧЕ ВО ВНУТРЕННЕМ
            БУФЕРЕ МОДУЛЯ ПРОТОКОЛИРОВАНИЯ ОШИБОК

     !--------------------------!--------------------------!
     !      НОМЕР    ЗАПИСИ     !     РАЗМЕР    ЗАПИСИ     !
     !--------------------------!--------------------------!
     ! ИДЕНТИФИКАТОР УСТРОЙСТВА !           - 1            !
     !--------------------------!--------------------------!
     ! РЕЗЕРВ!  НОМЕР !НОМЕР УС-!  КОД                     !
     !(1 РАЗ-! ЗАДАНИЯ!ТРОЙСТВА !    СПЕЦИФИКАЦИИ          !
     ! РЯД)  ! (4 РАЗ-! (3 РАЗ- !        (8 РАЗРЯДОВ)      !
     !       ! РЯДА)  ! РЯДА)   !                          !
     !--------------------------!--------------------------!
     !             СЧЕТЧИК    СЛОВ    (Q.WCNT)             !
     !--------------------------!--------------------------!

                             РИС. 41

        НА РИС. 42 ПРЕДСТАВЛЕН ФОРМАТ ЗАПИСИ ОБ  ОШИБКАХ  КЭШ-
   ПАМЯТИ И ОШИБКАХ ПАРИТЕТА ПАМЯТИ.

        ЗНАЧЕНИЕ ИДЕНТИФИКАТОРА ID НА РИС. 42 СЛЕДУЮЩЕЕ:

   -2     - ДЛЯ ОШИБОК КЭШ-ПАМЯТИ;

   -3     - ДЛЯ ОШИБОК ПАРИТЕТА ПАМЯТИ;

 �
                             - 54 -




   -4     - ДЛЯ ОШИБОК ПАРИТЕТА ПАМЯТИ И  КЭШ-ПАМЯТИ  ОДНОВРЕ-
            МЕННО.

         ФОРМАТ ЗАПИСИ ОБ ОШИБКЕ КЭШ-ПАМЯТИ И/ИЛИ ОШИБКЕ
          ЧЕТНОСТИ ПАМЯТИ ВО ВНУТРЕННЕМ БУФЕРЕ МОДУЛЯ
                    ПРОТОКОЛИРОВАНИЯ ОШИБОК

     !--------------------------!--------------------------!
     !      НОМЕР    ЗАПИСИ     !     РАЗМЕР    ЗАПИСИ     !
     !--------------------------!--------------------------!
     !  ЧИСЛО РЕГИСТРОВ ПАМЯТИ  !           ID             !
     !--------------------------!--------------------------!
     !                          PC                         !
     !--------------------------!--------------------------!
     !                          PS                         !
     !--------------------------!--------------------------!
     !                         MPR1                        !
     !--------------------------!--------------------------!
     !                    АДРЕС     MPR1                   !
     !--------------------------!--------------------------!
     !     ИНФОРМАЦИЯ О РЕГИСТРАХ ПАМЯТИ ( ДО 16 ШТ.)      !
     !                    ..............                   !
     !--------------------------!--------------------------!
     ! РЕГИСТР СИСТЕМНОЙ ОШИБКИ ПАМЯТИ (ТОЛЬКО ПРИ НАЛИЧИИ !
     !                     КЭШ-ПАМЯТИ)                     !
     !--------------------------!--------------------------!
     ! РЕГИСТР УПРАВЛЕНИЯ КЭШ-ПАМЯТЬЮ (ТОЛЬКО ПРИ НАЛИЧИИ  !
     !                     КЭШ-ПАМЯТИ)                     !
     !--------------------------!--------------------------!
     !   РЕГИСТР HIT/MISS (ТОЛЬКО ПРИ НАЛИЧИИ КЭШ-ПАМЯТИ)  !
     !--------------------------!--------------------------!

                             РИС. 42


























 �
                             - 55 -




            11. СТРУКТУРА УСТРОЙСТВА ПРЯМОГО ДОСТУПА




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

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

        В НУЛЕВОМ И СО 2 ПО 5 БЛОКАХ НОСИТЕЛЯ СОДЕРЖИТСЯ  СИС-
   ТЕМНЫЙ ЗАГРУЗЧИК. БЛОК НОМЕР 1 ЯВЛЯЕТСЯ  БЛОКОМ  ИНФОРМАЦИИ
   СИСТЕМЫ.

        ИНФОРМАЦИЯ О КАЖДОМ ИМЕЮЩЕМСЯ НА НОСИТЕЛЕ ФАЙЛЕ  (ИМЯ,
   ТИП ФАЙЛА, ЕГО МЕСТОПОЛОЖЕНИЕ НА НОСИТЕЛЕ И Т.Д.) СОДЕРЖИТ-
   СЯ В ТАБЛИЦЕ, КОТОРАЯ НАЗЫВАЕТСЯ КАТАЛОГОМ ФАЙЛОВ. НА  КАЖ-
   ДОМ ФИЗИЧЕСКОМ НОСИТЕЛЕ ИМЕЕТСЯ ОДИН КАТАЛОГ ФАЙЛОВ.

        НА РИС. 43 ПОКАЗАНА СТРУКТУРА УСТРОЙСТВА ПРЯМОГО  ДОС-
   ТУПА.































 �
                             - 56 -




             СТРУКТУРА УСТРОЙСТВА ПРЯМОГО ДОСТУПА

       ВОСЬМЕРИЧНЫЙ НОМЕР           СОДЕРЖИМОЕ
            БЛОКА

       !----------------!
       !         0      !  ПЕРВИЧНЫЙ СИСТЕМНЫЙ ЗАГРУЗЧИК
       !----------------!
       !         1      !  БЛОК ИНФОРМАЦИИ СИСТЕМЫ
       !----------------!----
       !         2      !  A
       !----------------!  !
       !         3      !  ! ВТОРИЧНЫЙ СИСТЕМНЫЙ
       !----------------!  !    ЗАГРУЗЧИК
       !         4      !  !
       !----------------!  !
       !         5      !  V
       !----------------!----
       !         6      !\
       !----------------! >------  1-Й СЕГМЕНТ КАТАЛОГА
       !         7      !/
       !----------------!
       !        10      !\
       !----------------! >------  2-Й СЕГМЕНТ КАТАЛОГА
       !        11      !/
       !----------------!
       !       ...      !
       !----------------!
       !         Х      !\
       !----------------! >------  N-Й СЕГМЕНТ КАТАЛОГА
       !       Х+1      !/
       !----------------!
       !      ФАЙЛЫ     !
       !       ...      !
       !----------------!
           КОНЕЦ ТОМА
                             РИС. 43



        11.1. БЛОК ИНФОРМАЦИИ СИСТЕМЫ



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










 �
                             - 57 -




                                                   ТАБЛИЦА 4
    --------------------------------------------------------
             !                            ! ЗНАЧЕНИЕ ПОЛЯ
             !                            ! (ПО УМОЛЧАНИЮ
     ЯЧЕЙКА  !      СОДЕРЖИМОЕ            ! ЗАПИСЫВАЕТСЯ
             !                            ! В КОДЕ КОИ-7)
    --------------------------------------------------------
     000-201 ! ТАБЛИЦА ЗАМЕЩЕНИЯ ДЕФЕКТНЫХ!
             ! БЛОКОВ НА НОСИТЕЛЕ         !
    ---------!----------------------------!-----------------
     204-251 ! ОБЛАСТЬ ДАННЫХ ДЛЯ КОМАНД  !
             ! INITIALIZE/RESTORE         !
    ---------!----------------------------!-----------------
     700-701 !      РЕЗЕРВИРУЕТСЯ         ! 000000 (В ВОСЬ-
             !                            ! МЕРИЧНОМ ВИДЕ)
    ---------!----------------------------!-----------------
     702-703 ! НОМЕР БЛОКА ПЕРВОГО ФАЙЛА  ! 000000 (В ВОСЬ-
             !ПОЛЬЗОВАТЕЛЯ (РЕЗЕРВИРУЕТСЯ)! МЕРИЧНОМ ВИДЕ)
    ---------!----------------------------!-----------------
     722-723 !                            ! 000001 (В ВОСЬ-
             !                            ! МЕРИЧНОМ ВИДЕ)
    ---------!----------------------------!-----------------
     724-725 ! НОМЕР БЛОКА ПЕРВОГО        ! 000006 (В ВОСЬ-
             ! СЕГМЕНТА КАТАЛОГА          ! МЕРИЧНОМ ВИДЕ)
    ---------!----------------------------!-----------------
     726-727 ! ВЕРСИЯ СИСТЕМЫ             ! V3A (В КОДЕ
             !                            ! RAD50)
    ---------!----------------------------!-----------------
     730-743 ! ИДЕНТИФИКАТОР ТОМА         ! RAFOS И
             !                            ! 3 ПРОБЕЛА
    ---------!----------------------------!-----------------
     744-757 ! ПРИНАДЛЕЖНОСТЬ             !
             ! (ИМЯ ВЛАДЕЛЬЦА)            !
    ---------!----------------------------!-----------------
     760-773 ! ИДЕНТИФИКАЦИЯ СИСТЕМЫ      ! INERAFOS И
             !                            ! 4 ПРОБЕЛА
    ---------!----------------------------!-----------------
     776-777 ! КОНТРОЛЬНАЯ СУММА          !

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

        ПРИ  ИНИЦИАЛИЗАЦИИ  НОСИТЕЛЯ   ПО   КОМАНДЕ   МОНИТОРА
   INITIALIZE МОЖНО УКАЗАТЬ ИДЕНТИФИКАТОР НОСИТЕЛЯ  С  ПОМОЩЬЮ
   КЛЮЧА /VOLUMEID. ЗАПИСЬ СОСТОИТ ИЗ ИМЕНИ ТОМА (ДЛИНОЙ ОТ  1
   ДО 12 СИМВОЛОВ) И ИМЕНИ ВЛАДЕЛЬЦА (ОТ 1 ДО 12 СИМВОЛОВ).

        НАПРИМЕР, ДЛЯ СОЗДАНИЯ КАТАЛОГА НА УСТРОЙСТВЕ  RK1:  И
   ИДЕНТИФИКАЦИИ УСТРОЙСТВА НЕОБХОДИМО ЗАДАТЬ СЛЕДУЮЩУЮ КОМАН-
   ДУ:

             .INITIALIZE/VOLUMEID RK1:
             RK1:/INIT ARE YOU SURE?Y
             VOL ID? #1985
             OWNER NAME? SIMFOR

        ЭТА ИНФОРМАЦИЯ  ЗАПИСЫВАЕТСЯ  НА  НОСИТЕЛЬ  С  ПОМОЩЬЮ
   ПРОГРАММЫ DUP. РАСПЕЧАТАТЬ ИДЕНТИФИКАТОР НОСИТЕЛЯ  МОЖНО  С
   ПОМОЩЬЮ ПРОГРАММЫ DUP ИЛИ DIR.
 �
                             - 58 -




        11.2. КАТАЛОГ ФАЙЛОВ



        КАТАЛОГ СОДЕРЖИТ ИНФОРМАЦИЮ О  ФАЙЛАХ  НА  НОСИТЕЛЕ  И
   РАЗБИТ НА СЕГМЕНТЫ. РАЗМЕР КАТАЛОГА МОЖЕТ БЫТЬ ОТ 1  ДО  31
   СЕГМЕНТА. СЕГМЕНТ СОСТОИТ ИЗ ДВУХ ЛОГИЧЕСКИХ БЛОКОВ.

        ПРИ  СОЗДАНИИ  КАТАЛОГА  С  ПОМОЩЬЮ  КОМАНДЫ  МОНИТОРА
   INITIALIZE И КЛЮЧА /SEGMENT:N МОЖНО ЗАДАТЬ ЛЮБОЕ КОЛИЧЕСТВО
   СЕГМЕНТОВ N В ДОПУСТИМЫХ ПРЕДЕЛАХ. ДЛЯ ЗАДАНИЯ  НЕСТАНДАРТ-
   НОГО КОЛИЧЕСТВА СЕГМЕНТОВ  КАТАЛОГА  МОЖНО  ВОСПОЛЬЗОВАТЬСЯ
   ПРОГРАММОЙ DUP.

        ПО УМОЛЧАНИЮ СИСТЕМА УСТАНАВЛИВАЕТ СЛЕДУЮЩИЕ  ЗНАЧЕНИЯ
   АРГУМЕНТА N ДЛЯ РАЗЛИЧНЫХ ТИПОВ УСТРОЙСТВ  ПРЯМОГО  ДОСТУПА
   (ТАБЛ. 5). РАЗМЕРЫ СОДЕРЖАТ ДЕСЯТИЧНЫЕ ЗНАЧЕНИЯ.

                                                ТАБЛИЦА 5
        -------------------------------------------------
         УСТРОЙСТВО!РАЗМЕР КАТАЛОГА! РАЗМЕР ФИЗИЧЕСКОГО
                   !  В СЕГМЕНТАХ  ! БЛОКА В СЛОВАХ
        -------------------------------------------------
            RK:    !      16       !        256
        -----------!---------------!---------------------
            RF:    !       4       !         64
        -----------!---------------!---------------------
            DP:    !      31       !        256
        -----------!---------------!---------------------
            DX:    !       4       !         64



        11.2.1. ФОРМАТ ЗАГОЛОВКА СЕГМЕНТА КАТАЛОГА



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

        ЗАГОЛОВОК СЕГМЕНТА СОДЕРЖИТ СЛЕДУЮЩУЮ ИНФОРМАЦИЮ:

   1 СЛОВО
          - ЧИСЛО СЕГМЕНТОВ, ОТВЕДЕННЫХ ПОД КАТАЛОГ; ЭТО  ЗНА-
            ЧЕНИЕ МОЖЕТ БЫТЬ ЗАДАНО ПРИ  СОЗДАНИИ  КАТАЛОГА  С
            ПОМОЩЬЮ ПРОГРАММЫ DUP ИЛИ ВЗЯТО ПО УМОЛЧАНИЮ;

   2 СЛОВО
          - НОМЕР СЛЕДУЮЩЕГО  ЛОГИЧЕСКОГО  СЕГМЕНТА  КАТАЛОГА;
            КАТАЛОГ ПРЕДСТАВЛЯЕТ СОБОЙ СВЯЗАННЫЙ  СПИСОК;  ЭТО
            СЛОВО ЯВЛЯЕТСЯ СВЯЗУЮЩИМ МЕЖДУ ЛОГИЧЕСКИ  СМЕЖНЫМИ
            (ПОСЛЕДОВАТЕЛЬНЫМИ)   СЕГМЕНТАМИ;   В    ПОСЛЕДНЕМ
            ИСПОЛЬЗУЕМОМ СЕГМЕНТЕ 2-Е СЛОВО СОДЕРЖИТ НУЛЬ;


 �
                             - 59 -




   3 СЛОВО
          - СЧЕТЧИК СЕГМЕНТОВ, ИМЕЮЩИХ  ЗАПИСИ.  ПРИ  ОТКРЫТИИ
            НОВОГО СЕГМЕНТА СЧЕТЧИК  КОРРЕКТИРУЕТСЯ  ТОЛЬКО  В
            ПЕРВОМ СЕГМЕНТЕ; В ПОСЛЕДУЮЩИХ СЕГМЕНТАХ  СОДЕРЖИ-
            МОЕ ЭТОГО СЛОВА НЕ ИЗМЕНЯЕТСЯ;

   4 СЛОВО
          - ЧИСЛО ДОПОЛНИТЕЛЬНЫХ БАЙТОВ В  ЗАПИСИ  О  ФАЙЛЕ  В
            КАТАЛОГЕ; ОНО МОЖЕТ БЫТЬ ОПРЕДЕЛЕНО ПРИ  ИНИЦИАЛИ-
            ЗАЦИИ УСТРОЙСТВА С ПОМОЩЬЮ ПРОГРАММЫ DUP;

   5 СЛОВО
          - НОМЕР БЛОКА, С КОТОРОГО НАЧИНАЮТСЯ ФАЙЛЫ,  ОПИСАН-
            НЫЕ В ДАННОМ СЕГМЕНТЕ.



        11.2.2. ФОРМАТ ЗАПИСИ О ФАЙЛЕ В КАТАЛОГЕ


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

             ФОРМАТ ЗАПИСИ О ФАЙЛЕ В КАТАЛОГЕ

            !----------!-----------!---
            !ВИД ФАЙЛА !НЕ ИСПОЛЬЗ.! СЛОВО СОСТОЯНИЯ ФАЙЛА
            !----------!-----------!---
            ! ИМЯ ФАЙЛА  ( 2 СЛОВА !
            !---                ---!
            !     В КОДЕ RAD50 )   !
            !----------------------!
            ! ТИП ФАЙЛА (КОД RAD50)!
            !----------------------!
            ! ДЛИНА ФАЙЛА В БЛОКАХ !
            !----------!-----------!
            ! N ЗАДАНИЯ! N КАНАЛА  !
            !   (ЛИНИИ)!           !
            !----------!-----------!
            !    ДАТА СОЗДАНИЯ     !
            !----------------------!---
            .                      .     СИСТЕМОЙ
            . ДОПОЛНИТЕЛЬНЫЕ СЛОВА . НЕ ОБСЛУЖИВАЮТСЯ
            .                      .
            !----------------------!---

                             РИС. 44









 �
                             - 60 -




        11.2.2.1. СЛОВО СОСТОЯНИЯ ФАЙЛА



        СЛОВО СОСТОЯНИЯ ФАЙЛА СОДЕРЖИТ СЛЕДУЮЩУЮ ИНФОРМАЦИЮ:

   МЛАДШИЙ БАЙТ
          - НЕ ИСПОЛЬЗУЕТСЯ;

   СТАРШИЙ БАЙТ
          - УКАЗЫВАЕТ ВИД ФАЙЛА.

        В СИСТЕМЕ ИМЕЕТСЯ ПЯТЬ ВИДОВ ФАЙЛОВ, КОТОРЫЕ ПРИВОДЯТ-
   СЯ В ТАБЛ. 6 (ДАНЫ ВОСЬМЕРИЧНЫЕ ЗНАЧЕНИЯ КОДА ВИДА ФАЙЛА):

   ВРЕМЕННЫЙ
          - ФАЙЛ, СОЗДАННЫЙ ПО МАКРОКОМАНДЕ .ENTER. ЕСЛИ ПОСЛЕ
            ИСПОЛЬЗОВАНИЯ ФАЙЛ НЕ БЫЛ ЗАКРЫТ  ПО  МАКРОКОМАНДЕ
            .CLOSE, ТО ОН ВОСПРИНИМАЕТСЯ СИСТЕМОЙ  КАК  ПУСТОЙ
            (<UNUSED>);

   ПУСТОЙ - ФАЙЛ НА ДИСКЕ, КОТОРЫЙ НЕ БЫЛ ЗАКРЫТ  ПО  МАКРОКО-
            МАНДЕ .CLOSE. ИСПОЛЬЗУЕТСЯ СИСТЕМОЙ  ПРИ  СОЗДАНИИ
            НОВЫХ ФАЙЛОВ; ИНФОРМАЦИЯ О ПУСТОМ ФАЙЛЕ, КРОМЕ ЕГО
            ДЛИНЫ, НЕ ИСПОЛЬЗУЕТСЯ (ИМЯ, ТИП,  ДАТА  И  Т.Д.).
            ПРОГРАММА  DIR  РАСПЕЧАТЫВАЕТ   ЭТУ   ЗАПИСЬ   КАК
            <UNUSED>,  ЗА  КОТОРОЙ  СЛЕДУЕТ  ДЛИНА   СВОБОДНОЙ
            ОБЛАСТИ. НЕСКОЛЬКО  ПОСЛЕДОВАТЕЛЬНО  РАСПОЛОЖЕННЫХ
            ПУСТЫХ ФАЙЛОВ РАСПЕЧАТЫВАЮТСЯ ПРОГРАММОЙ  DIR  КАК
            ОДИН <UNUSED>;

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

   ПОСТОЯННЫЙ ЗАЩИЩЕННЫЙ
          - ФАЙЛ, КОТОРЫЙ НЕЛЬЗЯ СТЕРЕТЬ КОМАНДОЙ DELETE; ОПЕ-
            РАЦИЯ ЗАЩИТЫ ФАЙЛА ВЫПОЛНЯЕТСЯ ПО КОМАНДЕ МОНИТОРА
            RENAME С КЛЮЧОМ /PROTECTION ИЛИ С ПОМОЩЬЮ ПРОГРАМ-
            МЫ PIP И КОМБИНАЦИИ КЛЮЧЕЙ /F/R;

   МАРКЕР КОНЦА СЕГМЕНТА
          - СИСТЕМА ИСПОЛЬЗУЕТ  ЭТОТ  МАРКЕР  ДЛЯ  ОПРЕДЕЛЕНИЯ
            КОНЦА ДАННЫХ В СЕГМЕНТЕ КАТАЛОГА ВО  ВРЕМЯ  ПОИСКА
            НЕОБХОДИМОЙ ЗАПИСИ.








 �
                             - 61 -




                                     ТАБЛИЦА 6
                   ---------------------------
                    ВИД ФАЙЛА !СЛОВО СОСТОЯНИЯ
                              !     ФАЙЛА
                   ---------------------------
                    ВРЕМЕННЫЙ !       400
                   -----------!---------------
                    ПУСТОЙ    !      1000
                   -----------!---------------
                    ПОСТОЯННЫЙ!      2000
                   -----------!---------------
                    ПОСТОЯННЫЙ!
                    ЗАЩИЩЕННЫЙ!    102000
                   -----------!---------------
                      МАРКЕР  !
                      КОНЦА   !      4000
                     СЕГМЕНТА !



        11.2.2.2. ИМЯ И ТИП ФАЙЛА



        ТРИ СЛОВА СОДЕРЖАТ СИМВОЛЬНОЕ ИМЯ И ТИП В КОДЕ  RAD50,
   КОТОРЫЕ ПРИСВОЕНЫ ФАЙЛУ. СИМВОЛЬНОЕ ИМЯ МОЖЕТ СОДЕРЖАТЬ  ОТ
   1 ДО 6 СИМВОЛОВ, А ТИП ФАЙЛА - ОТ 1 ДО 3 СИМВОЛОВ.



        11.2.2.3. ДЛИНА ФАЙЛА



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



        11.2.2.4. НОМЕР ЗАДАНИЯ (ЛИНИИ) И НОМЕР КАНАЛА


        ЭТА ИНФОРМАЦИЯ НЕОБХОДИМА СИСТЕМЕ ТОЛЬКО ПРИ РАБОТЕ  С
   ВРЕМЕННЫМ ФАЙЛОМ. ДЛЯ ПОСТОЯННОГО ФАЙЛА ЭТА  ИНФОРМАЦИЯ  НЕ
   ИСПОЛЬЗУЕТСЯ.

        В ЗАВИСИМОСТИ ОТ ТИПА МОНИТОРА СВЯЗЬ ВРЕМЕННОГО  ФАЙЛА
   С ЗАДАНИЕМ ОСУЩЕСТВЛЯЕТСЯ ПО-РАЗНОМУ:

   RM ИЛИ SJ
          - ПРИ РАБОТЕ RM/SJ-МОНИТОРА СТАРШИЙ БАЙТ 6-ГО  СЛОВА
            НЕ ИСПОЛЬЗУЕТСЯ; ДАННЫЕ О НОМЕРЕ КАНАЛА, ПО  КОТО-
            РОМУ БЫЛ ОТКРЫТ ФАЙЛ, ЗАПИСЫВАЮТСЯ В МЛАДШИЙ БАЙТ;
            ЭТО ПОЗВОЛЯЕТ МОНИТОРУ ПО МАКРОКОМАНДЕ .CLOSE НАЙ-
            ТИ НУЖНЫЙ ВРЕМЕННЫЙ ФАЙЛ И СДЕЛАТЬ ЕГО ПОСТОЯННЫМ;



 �
                             - 62 -




   FB ИЛИ XM
          - ПРИ РАБОТЕ FB/XM-МОНИТОРА МОГУТ БЫТЬ ОТКРЫТЫ  ВРЕ-
            МЕННЫЕ ФАЙЛЫ ДЛЯ  ВОСЬМИ  РАЗЛИЧНЫХ  ЗАДАНИЙ;  ПРИ
            ЭТОМ МОГУТ ОКАЗАТЬСЯ ОДИНАКОВЫМИ ИМЯ И ТИП  ОТКРЫ-
            ТЫХ ФАЙЛОВ, А ТАКЖЕ НОМЕРА КАНАЛОВ (ТАК КАК  НУМЕ-
            РАЦИЯ КАНАЛОВ ПРОИЗВОДИТСЯ НЕЗАВИСИМО ДЛЯ  КАЖДОГО
            ЗАДАНИЯ); ПОЭТОМУ, ДЛЯ  ОДНОЗНАЧНОЙ  ИДЕНТИФИКАЦИИ
            ВРЕМЕННОГО ФАЙЛА, КРОМЕ НОМЕРА КАНАЛА, ПРИ  ВЫПОЛ-
            НЕНИИ МАКРОКОМАНДЫ .CLOSE, НЕОБХОДИМА ИНФОРМАЦИЯ О
            НОМЕРЕ ЗАДАНИЯ,  ИСПОЛЬЗУЮЩЕГО  ЭТОТ  ФАЙЛ;  НОМЕР
            ЗАДАНИЯ ПОМЕЩАЕТСЯ В СТАРШИЙ БАЙТ 6-ГО СЛОВА ЗАПИ-
            СИ О ФАЙЛЕ; СЛЕДУЕТ ПОМНИТЬ,  ЧТО  ПРИ  ВЫПОЛНЕНИИ
            ОПЕРАЦИИ .CLOSE ДЛЯ ВРЕМЕННЫХ ФАЙЛОВ С ОДИНАКОВЫМИ
            АТРИБУТАМИ (ИМЯ И ТИП ОДИНАКОВЫ, ЗАДАНИЯ РАЗЛИЧНЫ)
            В КАТАЛОГЕ ОСТАНЕТСЯ ЗАПИСЬ ТОЛЬКО О ФАЙЛЕ,  КОТО-
            РЫЙ БЫЛ ЗАКРЫТ ПОСЛЕДНИМ;

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


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

        НОМЕР ЗАДАНИЯ ДЛЯ  RM/SJ-МОНИТОРА  РАВЕН  НУЛЮ  (МОЖЕТ
   ВЫПОЛНЯТЬСЯ ТОЛЬКО ФОНОВОЕ ЗАДАНИЕ).

        ПРИ РАБОТЕ FB/XM-МОНИТОРА ЗАДАНИЯМ НАЗНАЧАЮТСЯ СЛЕДУЮ-
   ЩИЕ НОМЕРА:

   0      - ДЛЯ ФОНОВОГО ЗАДАНИЯ;

   2-14   - ДЛЯ СИСТЕМНЫХ ЗАДАНИЙ;

   16     - ДЛЯ ОПЕРАТИВНОГО ЗАДАНИЯ.

        ПРИ РАБОТЕ TS-МОНИТОРА ВМЕСТО НОМЕРА  ЗАДАНИЯ  ИСПОЛЬ-
   ЗУЕТСЯ НОМЕР ЛИНИИ. НУМЕРАЦИЯ ЛИНИЙ ВЫПОЛНЯЕТСЯ ПРИ ГЕНЕРА-
   ЦИИ TS-МОНИТОРА.



        11.2.2.5. ДАТА



        ПРИ СОЗДАНИИ ВРЕМЕННОГО ФАЙЛА ПО  МАКРОКОМАНДЕ  .ENTER
   ТЕКУЩАЯ СИСТЕМНАЯ ДАТА ПОМЕЩАЕТСЯ В СЕДЬМОЕ СЛОВО ЗАПИСИ  О
   ДАННОМ ФАЙЛЕ (РИС. 45).

                   !15!14  10!9    5!4    0!
                   !--!------!------!------!
 �
                             - 63 -




                   !  ! МЕСЯЦ! ДЕНЬ ! ГОД  !
                   !--!------!------!------!

     ГОД (РАЗРЯДЫ  0 -  4)
          - ИНФОРМАЦИЯ О ТЕКУЩЕМ ГОДЕ В  ВИДЕ  РАЗНОСТИ  МЕЖДУ
            ДВУМЯ ПОСЛЕДНИМИ ЦИФРАМИ ТЕКУЩЕГО ГОДА  (НАПРИМЕР,
            84) И КОНСТАНТОЙ РАВНОЙ 72;

    ДЕНЬ (РАЗРЯДЫ  5 -  9)
          - ЧИСЛО С 1 ПО 31;

   МЕСЯЦ (РАЗРЯДЫ 10 - 14)
          - ЧИСЛО С 1 ПО 12.
                             РИС. 45


        ПРИМЕЧАНИЕ. ЕСЛИ  СИСТЕМНАЯ  ДАТА  НЕ  УСТАНОВЛЕНА,  В
   СЕДЬМОМ СЛОВЕ ЗАПИСЫВАЕТСЯ 0.



        11.2.2.6. ДОПОЛНИТЕЛЬНЫЕ СЛОВА


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

        В СИСТЕМЕ ПРЕДУСМОТРЕНА ВОЗМОЖНОСТЬ ПРИ СОЗДАНИИ КАТА-
   ЛОГА ПРОГРАММОЙ DUP ИЛИ КОМАНДОЙ INITIALIZE  УКАЗАТЬ  КОЛИ-
   ЧЕСТВО ДОПОЛНИТЕЛЬНЫХ СЛОВ В ЗАПИСИ О ФАЙЛЕ.  ПО  УМОЛЧАНИЮ
   ДОПОЛНИТЕЛЬНЫЕ СЛОВА НЕ ОТВОДЯТСЯ.

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



        11.3. РАЗМЕР И КОЛИЧЕСТВО ФАЙЛОВ, РАЗМЕЩЕННЫХ
              НА НОСИТЕЛЕ


        ЛЮБОЕ ВНЕШНЕЕ УСТРОЙСТВО, ОБСЛУЖИВАЕМОЕ  СИСТЕМОЙ,  НЕ
   МОЖЕТ ИМЕТЬ БОЛЬШЕ 31 СЕГМЕНТА В КАТАЛОГЕ.

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

        МАКСИМАЛЬНОЕ ЧИСЛО ЗАПИСЕЙ (MAX), КОТОРЫЕ  МОГУТ  БЫТЬ
   РАЗМЕЩЕНЫ В КАТАЛОГЕ, РАССЧИТЫВАЕТСЯ ПО ФОРМУЛЕ:

                      MAX  =  31 * S                   (4.1)



 �
                             - 64 -




    ГДЕ

     S    - ВЫЧИСЛЯЕТСЯ ПО СЛЕДУЮЩЕЙ ФОРМУЛЕ:

                        (512 - 5)
                    S = --------- - 2                  (4.2)
                         (7 + M)

           ГДЕ

              M  - ЧИСЛО ДОПОЛНИТЕЛЬНЫХ СЛОВ В ЗАПИСИ;

            512  - РАЗМЕР СЕГМЕНТА В СЛОВАХ;

              5  - ЧИСЛО СЛОВ, ОТВОДИМЫХ ПОД ЗАГОЛОВОК СЕГМЕН-
                   ТА.

        В ФОРМУЛЕ (4.2) КОРРЕКТИРОВКА НА "-2"  НЕОБХОДИМА  ДЛЯ
   КАЖДОГО СЕГМЕНТА ПО ДВУМ ПРИЧИНАМ: ДЛЯ ТОГО, ЧТОБЫ  СОЗДАТЬ
   ФАЙЛ, ЗАПИСЬ O ВРЕМЕННОМ ФАЙЛЕ ДОЛЖНА БЫТЬ РАЗМЕЩЕНА ВМЕСТО
   ЗАПИСИ О СВОБОДНОЙ ОБЛАСТИ (<UNUSED>) И ДОЛЖНА БЫТЬ СОЗДАНА
   ЗАПИСЬ О КОНЦЕ СЕГМЕНТА (МАРКЕР КОНЦА СЕГМЕНТА).

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

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

        МАКСИМАЛЬНОЕ ЧИСЛО ЗАПИСЕЙ МОЖЕТ БЫТЬ ПОЛУЧЕНО  ТОЛЬКО
   ПОСЛЕ ВЫПОЛНЕНИЯ ОПЕРАЦИИ "СБОРКА МУСОРА" НА НОСИТЕЛЕ.  ЭТА
   ОПЕРАЦИЯ ВЫПОЛНЯЕТСЯ С ПОМОЩЬЮ КЛЮЧА /S ПРОГРАММЫ  DUP  ИЛИ
   КОМАНДЫ МОНИТОРА SQUEEZE.

        ЕСЛИ ФАЙЛЫ НЕПРЕРЫВНО ДОБАВЛЯЮТСЯ НА УСТРОЙСТВО  И  НЕ
   БЫЛА ПРОВЕДЕНА "СБОРКА МУСОРА", ТО МАКСИМАЛЬНОЕ ЧИСЛО ЗАПИ-
   СЕЙ МОЖЕТ БЫТЬ ВЫЧИСЛЕНО ПО ФОРМУЛЕ (4.3):

                              S
             MAX = (N - 1) * --- + S                   (4.3)
                              2

    ГДЕ

     N    - ЧИСЛО СЕГМЕНТОВ, ОТВЕДЕННЫХ ПОД КАТАЛОГ.

        ФОРМУЛА (4.3) УЧИТЫВАЕТ СПЕЦИФИКУ ЗАПОЛНЕНИЯ СЕГМЕНТОВ
   ЗАПИСЯМИ. ТАКОЙ АЛГОРИТМ ЗАПОЛНЕНИЯ ПОЗВОЛЯЕТ  ВОССТАНАВЛИ-
   ВАТЬ "ПОТЕРЯННЫЕ" ФАЙЛЫ. ВРЕМЕННЫЕ ФАЙЛЫ, КОТОРЫЕ ПО КАКОЙ-
   ЛИБО ПРИЧИНЕ (СБОЙ СИСТЕМЫ ИЛИ ПРОГРАММЫ) НЕ БЫЛИ  ЗАКРЫТЫ,
   МОГУТ БЫТЬ ВОССТАНОВЛЕНЫ ПРОГРАММОЙ DUP.

 �
                             - 65 -




        11.4. АЛГОРИТМ ЗАПОЛНЕНИЯ СЕГМЕНТОВ ЗАПИСЯМИ


        ОПИСАНИЕ ЗАПОЛНЕНИЯ СЕГМЕНТОВ ЗАПИСЯМИ ИМЕЕТ СЛЕДУЮЩИЕ
   ОБОЗНАЧЕНИЯ:

            1    !-!
                 !*!  ЭТО СЕГМЕНТ КАТАЛОГА С НЕСКОЛЬКИМИ
                 !*!  ЗАПИСЯМИ; НОМЕР СЕГМЕНТА 1
                 ! !
                 ! !
                 !-!


            1    !-!
                 !*!  СЕГМЕНТ 1 ПОЛНОСТЬЮ ЗАПОЛНЕН, Т.Е.
                 !*!  НЕТ МЕСТА ДЛЯ НОВЫХ ЗАПИСЕЙ
                 !*!  В ЭТОТ СЕГМЕНТ
                 !*!
                 !-!

        КАТАЛОГ НАЧИНАЕТСЯ  С  ЗАПИСЕЙ,  КОТОРЫМИ  ЗАПОЛНЯЕТСЯ
   СЕГМЕНТ 1:

            1    !-!
                 !*!
                 !*!
                 ! !
                 ! !
                 !-!

        ПО МЕРЕ ДОБАВЛЕНИЯ ЗАПИСЕЙ СЕГМЕНТ 1 ЗАПОЛНЯЕТСЯ:

            1    !-!
                 !*!
                 !*!
                 !*!
                 !*!
                 !-!

        ЕСЛИ СЕГМЕНТ  ЗАПОЛНЕН  И  НЕОБХОДИМО  ДОБАВИТЬ  НОВУЮ
   ЗАПИСЬ В КАТАЛОГ, ТО СИСТЕМА ДОЛЖНА ОТКРЫТЬ ДРУГОЙ  СЕГМЕНТ
   КАТАЛОГА. ЕСЛИ ИМЕЕТСЯ СВОБОДНЫЙ  СЕГМЕНТ  В  КАТАЛОГЕ,  ТО
   ПРОИЗВОДЯТСЯ СЛЕДУЮЩИЕ ДЕЙСТВИЯ:

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

        ПРИ ПОПЫТКЕ ЗАПИСАТЬ НОВУЮ ЗАПИСЬ В  ПОЛНОСТЬЮ  ЗАПОЛ-
   НЕННЫЙ ПОСЛЕДНИЙ СЕГМЕНТ  КАТАЛОГА  ВЫДАЕТСЯ  СООБЩЕНИЕ  ОБ
   ОШИБКЕ (ПЕРЕПОЛНЕНИЕ КАТАЛОГА).

 �
                             - 66 -




        ОБЫЧНО СЕГМЕНТ ЗАПОЛНЯЕТСЯ СЛЕДУЮЩИМ ОБРАЗОМ:

           1   !-!
               !*!    ПЕРЕД РАСШИРЕНИЕМ СЕГМЕНТ 1
               !*!    ЗАПОЛНЕН ПОЛНОСТЬЮ
               !*!
               !*!
               !-!


           1   !-!    ПОСЛЕ РАСШИРЕНИЯ: ПРИБЛИЗИТЕЛЬНО
               !*!    ПОЛОВИНА ЗАПИСЕЙ - В СКОРРЕКТИРО-
               !*!    ВАННОМ СЕГМЕНТЕ И ОСТАЛЬНАЯ ЧАСТЬ
               ! !     - В НОВОМ. СЕГМЕНТ 1 СВЯЗЫВАЕТСЯ
               ! !    С СЕГМЕНТОМ 2
               !-!\
                   \  СВЯЗЬ 1-ГО И 2-ГО СЕГМЕНТОВ
                   /
           2   !-!/
               !*!
               !*!
               ! !
               ! !
               !-!

        ЕСЛИ БЫЛО ОТКРЫТО МНОГО ФАЙЛОВ, ТО ОНИ ЗАПОЛНЯЮТ  ВЕСЬ
   2-Й СЕГМЕНТ И ПЕРЕПИСЫВАЮТСЯ В 3-Й, ЕСЛИ ОН ДОСТУПЕН:

           1   !-!
               !*!
               !*!
               ! !
               ! !
               !-!\
                   \  СВЯЗЬ 1-ГО И 2-ГО СЕГМЕНТОВ
                   /
           2   !-!/
               !*!
               !*!
               ! !
               ! !
               !-!\
                   \  СВЯЗЬ 2-ГО И 3-ГО СЕГМЕНТОВ
                   /
           3   !-!/
               !*!
               !*!
               ! !
               ! !
               !-!

        В ЭТОМ СЛУЧАЕ СЕГМЕНТЫ ЯВЛЯЮТСЯ  СМЕЖНЫМИ  (ПОСЛЕДОВА-
   ТЕЛЬНЫМИ). СЕГМЕНТЫ МОГУТ БЫТЬ И НЕСМЕЖНЫМИ.

        НАПРИМЕР, ЕСЛИ СТИРАЕТСЯ БОЛЬШОЙ ФАЙЛ ИЗ СЕГМЕНТА 2  И
   ОТКРЫВАЕТСЯ МНОГО НЕБОЛЬШИХ ФАЙЛОВ, ТО В ЭТОМ СЛУЧАЕ  МОЖЕТ
   ВОЗНИКНУТЬ НЕОБХОДИМОСТЬ СНОВА СКОРРЕКТИРОВАТЬ СЕГМЕНТ 2.

        ЕСЛИ ЭТО ПРОИСХОДИТ И ОТКРЫВАЕТСЯ 4-Й СЕГМЕНТ, ТО СВЯ-
 �
                             - 67 -




   ЗИ В КАТАЛОГЕ БУДУТ ИМЕТЬ СЛЕДУЮЩИЙ ВИД:

           1   !-!
               !*!
               !*!
               ! !
               ! !
               !-!\
                   \  СВЯЗЬ 1-ГО И 2-ГО СЕГМЕНТОВ
                   /
           2   !-!/
               !*!
               !*!
             --! !    В ЭТОМ СЛУЧАЕ ЧАСТЬ СЕГМЕНТА 2
             ! ! !    ПЕРЕПИСЫВАЕТСЯ В 4-Й СЕГМЕНТ
             ! !-!
             !
           3 ! !-!
             ! !*!
             ! !*!
             ! ! !<-!
             ! ! !  !
             ! !-!  !
             !      !
           4 ! !-!  !
             ->!*!  !   СЕГМЕНТ 4 СВЯЗЫВАЕТСЯ С
               !*!  !   СЕГМЕНТОМ 3, Т.К.
               ! !--!   СЕГМЕНТ 2 ПЕРВОНАЧАЛЬНО
               ! !      БЫЛ СВЯЗАН С СЕГМЕНТОМ 3
               !-!



        11.4.1. ВОССТАНОВЛЕНИЕ    ДАННЫХ    В    СЛУЧАЕ
                ПОЯВЛЕНИЯ ДЕФЕКТНЫХ БЛОКОВ В КАТАЛОГЕ



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



        11.4.1.1. ПРОВЕРКА СЕГМЕНТА 1



        ПЕРВЫМ ШАГОМ ВОССТАНОВЛЕНИЯ ДАННЫХ ЯВЛЯЕТСЯ  ПРОВЕРКА,
   ЧИТАЮТСЯ ЛИ ЗАПИСИ ПЕРВОГО СЕГМЕНТА КАТАЛОГА. СЛЕДУЕТ  ПОМ-
   НИТЬ, ЧТО СЕГМЕНТ 1 ЗАНИМАЕТ БЛОКИ 6 И 7 НОСИТЕЛЯ. ДЛЯ ПРО-
   ВЕРКИ ПЕРВОГО СЕГМЕНТА НЕОБХОДИМО  УСТАНОВИТЬ  НОСИТЕЛЬ  НА
   УСТРОЙСТВО И ПОПЫТАТЬСЯ СДЕЛАТЬ ОБЫЧНУЮ РАСПЕЧАТКУ КАТАЛОГА
 �
                             - 68 -




   ФАЙЛОВ ЭТОГО НОСИТЕЛЯ. ДЛЯ  ЭТОГО  ДОСТАТОЧНО  ИСПОЛЬЗОВАТЬ
   КОМАНДУ МОНИТОРА DIRECTORY БЕЗ КАКИХ-ЛИБО КЛЮЧЕЙ.

        ЕСЛИ НЕМЕДЛЕННО БУДЕТ ПОЛУЧЕНО СООБЩЕНИЕ:

                   ?MON-F-DIRECTORY I/O ERROR    ИЛИ
                   ?MON-F-DIR I/O ERR,
                   ; ОШИБКА ЧТЕНИЯ КАТАЛОГА

   ТО ПЕРВЫЙ СЕГМЕНТ КАТАЛОГА НЕ ЧИТАЕТСЯ. В  ДАННОЙ  СИТУАЦИИ
   ИМЕЮТСЯ ТОЛЬКО ДВА ВАРИАНТА РАБОТЫ.

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

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

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



        11.4.1.2. ОПРЕДЕЛЕНИЕ СТРУКТУРЫ СВЯЗИ СЕГМЕНТОВ



        НОСИТЕЛЬ НЕОБХОДИМО ОТКРЫТЬ ПРИ ПОМОЩИ ПРОГРАММЫ  SIPP
   КАК УСТРОЙСТВО С НЕФАЙЛОВОЙ СТРУКТУРОЙ. ПРОСМОТР НАЧИНАЕТСЯ
   С ЯЧЕЙКИ 6000, С КОТОРОЙ НАЧИНАЕТСЯ ЗАГОЛОВОК ПЕРВОГО  СЕГ-
   МЕНТА КАТАЛОГА. ЭТА ЯЧЕЙКА СОДЕРЖИТ ОБЩЕЕ ЧИСЛО  СЕГМЕНТОВ,
   ОТВЕДЕННЫХ ПОД КАТАЛОГ. ЯЧЕЙКА 6002 СОДЕРЖИТ НОМЕР  СЛЕДУЮ-
   ЩЕГО СЕГМЕНТА, А ЯЧЕЙКА 6004 - НОМЕР  ПОСЛЕДНЕГО  СЕГМЕНТА,
   СОДЕРЖАЩЕГО ЗАПИСИ.

        ДЛЯ ПОЛУЧЕНИЯ  АБСОЛЮТНОГО  АДРЕСА  ЯЧЕЙКИ  СЛЕДУЮЩЕГО
   СЕГМЕНТА НЕОБХОДИМО СОДЕРЖИМОЕ СЛОВА (УКАЗАТЕЛЬ НА  СЛЕДУЮ-
   ЩИЙ СЕГМЕНТ) УМНОЖИТЬ НА 2000 И ПРИБАВИТЬ К 4000. НАПРИМЕР,
   ЕСЛИ УКАЗАТЕЛЬ РАВЕН 2, ТО СЛЕДУЮЩИЙ СЕГМЕНТ  НАЧИНАЕТСЯ  С
   ЯЧЕЙКИ 10000 НОСИТЕЛЯ. ЭТА ЦЕПОЧКА  МОЖЕТ  БЫТЬ  ПРОДОЛЖЕНА
   ПРИ ИСПОЛЬЗОВАНИИ СОДЕРЖИМОГО УКАЗАТЕЛЕЙ В ЦЕПОЧКЕ  СЕГМЕН-
   ТОВ. В ПРОЦЕССЕ ПРОСМОТРА СЛЕДУЕТ ЗАПИСЫВАТЬ  ИНФОРМАЦИЮ  О
   СВЯЗИ, НАПРИМЕР, В ВИДЕ, ПОКАЗАННОМ НА РИС. 46.

           ЗАПИСЬ ЦЕПОЧКИ СПИСКА СЕГМЕНТОВ КАТАЛОГА,
           СОДЕРЖАЩЕГО ЧЕТЫРЕ СЕГМЕНТА
 �
                             - 69 -





           СЕГМЕНТ:                СВЯЗАН С:

              1                       2
              2                       4
              4                       3 (ДЕФЕКТНЫЙ)
              3 (ДЕФЕКТНЫЙ)           ?

                             РИС. 46

        НА РИС. 46 ПОСЛЕДНИЙ ИСПОЛЬЗУЕМЫЙ СЕГМЕНТ -  4;  ЧИСЛО
   СЕГМЕНТОВ, ОТВЕДЕННЫХ ПОД КАТАЛОГ - 4.

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

        В ПРИМЕРЕ (СМ. РИС. 46) УКАЗАТЕЛЬ  СЕГМЕНТА  3  ДОЛЖЕН
   БЫТЬ РАВЕН 0, Т.К. ЭТО ПОСЛЕДНИЙ В ЦЕПОЧКЕ СЕГМЕНТ ИЗ ЧЕТЫ-
   РЕХ ИСПОЛЬЗУЕМЫХ. ДЛЯ ВОССТАНОВЛЕНИЯ ТАКОГО КАТАЛОГА  НЕОБ-
   ХОДИМО МОДИФИЦИРОВАТЬ ЗНАЧЕНИЕ УКАЗАТЕЛЯ СЕГМЕНТА 4,  ЧТОБЫ
   ОНО БЫЛО РАВНО 0, А НЕ 3. ЭТА  КОРРЕКЦИЯ  ПОЗВОЛИТ  УДАЛИТЬ
   СЕГМЕНТ 3 ИЗ ЦЕПОЧКИ. СПОСОБ  ИЗВЛЕЧЕНИЯ  ФАЙЛОВ  С  ТАКОГО
   НОСИТЕЛЯ ОПИСАН НИЖЕ.

        НА РИС. 47 ПРИВЕДЕН БОЛЕЕ СЛОЖНЫЙ ПРИМЕР. В ЭТОМ  СЛУ-
   ЧАЕ ДЕФЕКТНЫЙ СЕГМЕНТ НЕ ЯВЛЯЕТСЯ ПОСЛЕДНИМ СЕГМЕНТОМ КАТА-
   ЛОГА.

            ЗАПИСЬ ЦЕПОЧКИ КАТАЛОГА ИЗ 9 СЕГМЕНТОВ

           СЕГМЕНТ:                СВЯЗАН С:
              1                       2
              2                       5
              5                       4
              4                       8
              8                       7 (ДЕФЕКТНЫЙ)
              7 (ДЕФЕКТНЫЙ)           ?
              3                       0
              6                       9
              9                       3

                             РИС. 47

        В ЭТОЙ СИТУАЦИИ (СМ. РИС. 47) ПО ЦЕПОЧКЕ МОЖНО ПЕРЕМЕ-
   ЩАТЬСЯ ОТ СЕГМЕНТА 1 ДО СЕГМЕНТА 8,  КОТОРЫЙ  УКАЗЫВАЕТ  НА
   ДЕФЕКТНЫЙ СЕГМЕНТ 7. НЕТ ИНФОРМАЦИИ, НА КАКОЙ СЕГМЕНТ  УКА-
   ЗЫВАЕТ СЕГМЕНТ 7. В ДАННОМ СЛУЧАЕ  НЕОБХОДИМО  СКОРРЕКТИРО-
   ВАТЬ УКАЗАТЕЛЬ В СЕГМЕНТЕ 8. ДЛЯ ОПРЕДЕЛЕНИЯ НОМЕРА СЕГМЕН-
   ТА НУЖНО ПРОСМОТРЕТЬ ЗАПИСИ, РАСПОЛОЖЕННЫЕ НИЖЕ  ДЕФЕКТНОГО
   БЛОКА, И НАЙТИ ПОСЛЕДНИЙ СЕГМЕНТ В ЦЕПОЧКЕ (УКАЗАТЕЛЬ  ДОЛ-
   ЖЕН БЫТЬ РАВЕН 0). ТАКИМ СЕГМЕНТОМ ЯВЛЯЕТСЯ СЕГМЕНТ  3,  НА
   КОТОРЫЙ УКАЗЫВАЕТ СЕГМЕНТ 9. НА СЕГМЕНТ 9 УКАЗЫВАЕТ СЕГМЕНТ
   6. ТАКИМ ОБРАЗОМ, ДВИЖЕНИЕ ПО ЦЕПОЧКЕ СВЕРХУ ОБРЫВАЕТСЯ  НА
   8 СЕГМЕНТЕ (ДАЛЕЕ ИДЕТ ДЕФЕКТНЫЙ СЕГМЕНТ).  ДВИЖЕНИЕ  СНИЗУ
   ПО ЦЕПОЧКЕ ОБРЫВАЕТСЯ НА  6  СЕГМЕНТЕ.  СЛЕДОВАТЕЛЬНО,  8-Й
   СЕГМЕНТ ДОЛЖЕН УКАЗЫВАТЬ НА 6-Й (РИС. 48).

 �
                             - 70 -




                   (1) ---> (2)
                             !
                             !
                             V
                            (5)
                             !
                             !
                             V
                            (4)
                             !
                             !
                             V
                            (8)
                            / \
                           /   \
                          /     \
                        (6)     (7) (ДЕФЕКТНЫЙ) ---> ?
                         !
                         !
                         V
                        (9) ---> (3) ---> (0)

                             РИС. 48



        11.4.1.3. ПОЛУЧЕНИЕ  ДАННЫХ  ИЗ   СЕГМЕНТОВ,   НЕ
                  СОДЕРЖАЩИХ ДЕФЕКТНЫЕ БЛОКИ



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

           COPY DX:*.* DX1:

        ЭТА ПРОЦЕДУРА ПЕРЕПИСЫВАЕТ С НОСИТЕЛЯ ВСЕ ФАЙЛЫ, КРОМЕ
   ТЕХ, ЗАПИСИ О КОТОРЫХ НАХОДЯТСЯ В ДЕФЕКТНОМ СЕГМЕНТЕ.



        11.4.1.4. ПОЛУЧЕНИЕ   ДАННЫХ   ИЗ   СЕГМЕНТА    С
                  ДЕФЕКТНЫМИ БЛОКАМИ



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

 �
                             - 71 -




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

           *OUTDEV:FILE=INPDEV:/G:START/E:ENDBLK/I/F

   КОТОРАЯ ПЕРЕПИШЕТ ФАЙЛ С УСТРОЙСТВА INPDEV, НАЧИНАЮЩИЙСЯ  С
   БЛОКА START, НА УСТРОЙСТВО OUTDEV В УКАЗАННЫЙ ФАЙЛ С ИМЕНЕМ
   FILE. ДЛЯ ПОЛУЧЕНИЯ ТОГО ЖЕ РЕЗУЛЬТАТА МОЖЕТ БЫТЬ ИСПОЛЬЗО-
   ВАНА СЛЕДУЮЩАЯ КОМАНДА МОНИТОРА:

      COPY/DEV/FIL/STA:START/END:ENDBLK INPDEV: OUTDEV:FILE

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



        11.5. СОЗДАНИЕ И РАЗМЕЩЕНИЕ ФАЙЛОВ В СИСТЕМЕ



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

        СУЩЕСТВУЕТ  ТРИ  ВАРИАНТА  ИСПОЛЬЗОВАНИЯ  МАКРОКОМАНДЫ
   .ENTER. ЕСЛИ АРГУМЕНТ "ДЛИНА" РАВЕН 0, ТО ДЛЯ  СОЗДАВАЕМОГО
   ВРЕМЕННОГО ФАЙЛА ОТВОДИТСЯ  ИЛИ  ПОЛОВИНА  САМОГО  БОЛЬШОГО
   СВОБОДНОГО ПРОСТРАНСТВА <UNUSED>, ИЛИ ПОЛНОСТЬЮ  ВТОРОЙ  ПО
   ВЕЛИЧИНЕ <UNUSED> (КАКИМ БЫ БОЛЬШИМ ОН НИ БЫЛ). ЕСЛИ  АРГУ-
   МЕНТ РАВЕН "-1",  ТО  ВЫБИРАЕТСЯ  САМЫЙ  БОЛЬШОЙ  <UNUSED>,
   ИМЕЮЩИЙСЯ НА УСТРОЙСТВЕ. И ЕСЛИ АРГУМЕНТ БОЛЬШЕ 0,  ТО  ЭТО
   УКАЗЫВАЕТ КОНКРЕТНЫЙ РАЗМЕР ВРЕМЕННОГО ФАЙЛА.

        ВРЕМЕННЫЙ ФАЙЛ ВСЕГДА РАСПОЛАГАЕТСЯ В СВОБОДНОЙ ОБЛАС-
   ТИ.

        НА РИС. 49  ПОКАЗАН  ВРЕМЕННЫЙ  ФАЙЛ,  ЗАДАННАЯ  ДЛИНА
   КОТОРОГО РАВНА 100 БЛОКАМ.








 �
                             - 72 -




                    СОЗДАНИЕ ВРЕМЕННОГО ФАЙЛА

                          !------------!
                          !    ФАЙЛ    !
                          !  70 БЛОКОВ !
                          !------------!
                          ! ВРЕМЕННЫЙ  !
                          !    ФАЙЛ    !
                          ! 100 БЛОКОВ !
                          !------------!
                          !  <UNUSED>  !
                          !  40 БЛОКОВ !
                          !------------!
                          !    ФАЙЛ    !
                          !  81 БЛОК   !
                          !------------!

                             РИС. 49

        ПРИ РАБОТЕ ДВУХ ПРОГРАММ ДОПУСКАЕТСЯ  СОЗДАНИЕ  КАЖДОЙ
   ПРОГРАММОЙ ВРЕМЕННОГО ФАЙЛА. НАПРИМЕР, ОДНА ПРОГРАММА  СОЗ-
   ДАЛА ВРЕМЕННЫЙ ФАЙЛ, ДЛИНОЙ 100 БЛОКОВ, ДРУГАЯ СОЗДАЕТ ВРЕ-
   МЕННЫЙ ФАЙЛ, ДЛИНОЙ В 25 БЛОКОВ (РИС. 50).

                          !------------!
                          !    ФАЙЛ    !
                          !  70 БЛОКОВ !
                          !------------!
                          ! ВРЕМЕННЫМ  !
                          !    ФАЙЛ    !
                          ! 100 БЛОКОВ !
                          !------------!
                          !  <UNUSED>  !
                          !   0 БЛОКОВ !
                          !------------!
                          ! ВРЕМЕННЫЙ  !
                          !    ФАЙЛ    !
                          !  25 БЛОКОВ !
                          !------------!
                          !  <UNUSED>  !
                          !  15 БЛОКОВ !
                          !------------!
                          !    ФАЙЛ    !
                          !  81 БЛОК   !
                          !------------!

                             РИС. 50

        ЕСЛИ ПРОГРАММА ЗАКАНЧИВАЕТ ЗАПИСЬ ДАННЫХ НА  УСТРОЙСТ-
   ВО, ОНА ЗАКРЫВАЕТ ВРЕМЕННЫЙ ФАЙЛ  ПО  МАКРОКОМАНДЕ  .CLOSE.
   ВРЕМЕННЫЙ ФАЙЛ СТАНОВИТСЯ ПОСТОЯННЫМ. ЕГО ДЛИНА БУДЕТ ОПРЕ-
   ДЕЛЕНА ПО МАКСИМАЛЬНОМУ НОМЕРУ БЛОКА,  ЗАПИСАННОГО  В  ЭТОТ
   ФАЙЛ. НА РИС. 51 ПОКАЗАНО РАСПРЕДЕЛЕНИЕ ФАЙЛОВ ПОСЛЕ ЗАКРЫ-
   ТИЯ ОБОИХ ВРЕМЕННЫХ ФАЙЛОВ. ДЛИНА ПЕРВОГО ФАЙЛА -  75  БЛО-
   КОВ, ВТОРОГО - 10 БЛОКОВ.




 �
                             - 73 -




                         !------------!
                         !    ФАЙЛ    !
                         !  70 БЛОКОВ !
                         !------------!
                         ! ПОСТОЯННЫЙ !
                         !    ФАЙЛ    !
                         !  75 БЛОКОВ !
                         !------------!
                         !  <UNUSED>  !
                         !  25 БЛОКОВ !
                         !------------!
                         ! ПОСТОЯННЫЙ !
                         !    ФАЙЛ    !
                         !  10 БЛОКОВ !
                         !------------!
                         !  <UNUSED>  !
                         !  30 БЛОКОВ !
                         !------------!
                         !    ФАЙЛ    !
                         !  81 БЛОК   !
                         !------------!

                            РИС. 51

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

        ПРОГРАММА DUP С ПОМОЩЬЮ КЛЮЧА /T  ПОЗВОЛЯЕТ  СОЗДАВАТЬ
   ФАЙЛ НЕОБХОДИМОЙ ДЛИНЫ ПРИ УСЛОВИИ НАЛИЧИЯ СВОБОДНОЙ ОБЛАС-
   ТИ ДОСТАТОЧНОГО РАЗМЕРА.



        11.6. ГИБКИЕ ДИСКИ В ФОРМАТЕ ОБМЕНА



        ДЛЯ ПЕРЕДАЧИ ДАННЫХ МЕЖДУ НОСИТЕЛЯМИ СИСТЕМЫ И ГИБКИМИ
   ДИСКАМИ В ФОРМАТЕ ОБМЕНА МОЖНО ИСПОЛЬЗОВАТЬ ПРОГРАММУ FILEX
   (КЛЮЧ /U) ИЛИ  КОМАНДУ  МОНИТОРА  COPY/INTERCHANGE.  ГИБКИЙ
   ДИСК ФОРМАТА ОБМЕНА, НАЗЫВАЕМЫЙ ТАКЖЕ ГИБКИМ ДИСКОМ ЕС ЭВМ,
   СОДЕРЖИТ 77 ДОРОЖЕК. КАЖДАЯ ДОРОЖКА ИМЕЕТ  26  (ДЕСЯТИЧНОЕ)
   СЕКТОРОВ, И МОЖНО РАЗМЕЩАТЬ В ЛЮБОМ СЕКТОРЕ ОДНУ  ЗАПИСЬ  В
   КОДЕ КОИ-8. ЗАПИСЬ МОЖЕТ СОДЕРЖАТЬ ДО 128 СИМВОЛОВ.

        ДОРОЖКА 0  РЕЗЕРВИРУЕТСЯ  ДЛЯ  МЕТОК  ДАННЫХ,  КОТОРЫЕ
   ИМЕЮТ ФОРМУ КАТАЛОГА. ФУНКЦИИ ДОРОЖКИ 0 ОПИСАНЫ НИЖЕ.

        СЕКТОРЫ С 1 ПО 4 РЕЗЕРВИРУЮТСЯ В ЕС ЭВМ ДЛЯ  ИСПОЛЬЗО-
   ВАНИЯ СИСТЕМОЙ. ОНИ СОДЕРЖАТ ПО 80 ПРОБЕЛОВ НА СЕКТОР.

        БАЙТЫ С 1 ПО 13  СЕКТОРА  5  ИСПОЛЬЗУЮТСЯ  ДЛЯ  ЗАПИСИ
   ИДЕНТИФИКАЦИИ ОШИБОЧНЫХ ДОРОЖЕК. БАЙТЫ С 1  ПО  5  СОДЕРЖАТ
   ИДЕНТИФИКАТОР КАРТЫ ERMAP. ФУНКЦИИ СЕКТОРА 5 В  СИСТЕМЕ  НЕ
   ПОДДЕРЖИВАЮТСЯ.
 �
                             - 74 -




        СЕКТОР 6 РЕЗЕРВИРУЕТСЯ В ЕС ЭВМ ДЛЯ ИСПОЛЬЗОВАНИЯ СИС-
   ТЕМОЙ. ОН СОДЕРЖИТ 80 ПРОБЕЛОВ.

        СЕКТОР 7 ЯВЛЯЕТСЯ МЕТКОЙ ТОМА. БАЙТЫ С 0 ПО 3  СЕКТОРА
   СОДЕРЖАТ ЗАПИСЬ VOL1 В КОИ-8. ЭТО  ИДЕНТИФИЦИРУЕТ  НОСИТЕЛЬ
   КАК ГИБКИЙ ДИСК ФОРМАТА ЕС ЭВМ. В СМ ЭВМ ЭТИ  ЧЕТЫРЕ  БАЙТА
   СОДЕРЖАТ ИДЕНТИФИКАТОР СИСТЕМЫ, КОТОРАЯ ВЫПОЛНЯЛА ЗАПИСЬ НА
   ГИБКИЙ ДИСК. ДРУГИЕ БАЙТЫ СЕКТОРА ИДЕНТИФИЦИРУЮТ  НОСИТЕЛЬ,
   ЕГО ФОРМАТ, ПРИНАДЛЕЖНОСТЬ И  ОПРЕДЕЛЯЮТ,  ИСПОЛЬЗУЮТСЯ  ЛИ
   СТАНДАРТНЫЕ МЕТКИ. ТАБЛ. 7  ВКЛЮЧАЕТ  ОПИСАНИЕ  СОДЕРЖИМОГО
   СЕКТОРА 7 ГИБКОГО ДИСКА ФОРМАТА ОБМЕНА.

                                                    TAБЛИЦА 7

           СЕДЬМОЙ СЕКТОР ГИБКОГО ДИСКА ФОРМАТА ОБМЕНА
    ---------------------------------------------------------
    СМЕЩЕНИЕ,!               СОДЕРЖИМОЕ
     БАЙТЫ   !       (ВСЕ ЗНАЧЕНИЯ ДАНЫ В КОДЕ КОИ-8)
    ---------------------------------------------------------
          0  ! V
          1  ! O
          2  ! L
          3  ! 1
       4-11  ! ПОЛЕ ИДЕНТИФИКАТОРА ТОМА
             ! ИДЕНТИФИКАТОР СОДЕРЖИТ ОТ 1 ДО 6 ЗНАКОВ
             ! (ЦИФР ИЛИ БУКВ), ВЫРАВНЕННЫХ ПО ЛЕВОМУ КРАЮ.
             ! НЕИСПОЛЬЗУЕМЫЕ ПОЗИЦИИ ДОЛЖНЫ СОДЕРЖАТЬ
             ! ПРОБЕЛЫ
         12  ! КОД ДОСТУПА. ДОЛЖЕН БЫТЬ ПРОБЕЛОМ ДЛЯ РАЗРЕ-
             ! ШЕНИЯ ДОСТУПА К НОСИТЕЛЮ
      13-44  ! РЕЗЕРВИРУЮТСЯ ДЛЯ ЕС ЭВМ
      45-62  ! СОДЕРЖАТ ПОЛЕ ИДЕНТИФИКАЦИИ ВЛАДЕЛЬЦА
             ! ЭТО ПОЛЕ ИСПОЛЬЗУЕТСЯ НЕ ВО ВСЕХ СИСТЕМАХ
     63-113  ! РЕЗЕРВИРУЮТСЯ ДЛЯ ЕС ЭВМ
    114-115  ! ОПРЕДЕЛЯЮТ, ЯВЛЯЮТСЯ ЛИ ЗАПИСИ
             ! ПОСЛЕДОВАТЕЛЬНЫМИ, ИЛИ УКАЗЫВАЮТ
             ! ФАКТОР СМЕЖНОСТИ (ДВА ПРОБЕЛА ПРЕДСТАВЛЯЮТ
             ! ФАКТОР 1:1)
        116  ! РЕЗЕРВИРУЕТСЯ ДЛЯ ЕС ЭВМ
        117  ! ПОЛЕ МЕТКИ ВЕРСИИ. W УКАЗЫВАЕТ СТАНДАРТНЫЕ
             ! МЕТКИ

        СЕКТОРЫ С 8 ПО 26 СОДЕРЖАТ МЕТКИ НАБОРОВ  ДАННЫХ.  ОНИ
   ИМЕЮТ ДЛИНУ 40  СЛОВ  И  СОДЕРЖАТ  КАТАЛОГОВУЮ  ИНФОРМАЦИЮ.
   TАБЛ. 8 ОПИСЫВАЕТ СОДЕРЖИМОЕ СЕКТОРОВ С 8 ПО 26.














 �
                             - 75 -




                                                    ТАБЛИЦА 8

             СЕКТОРЫ 8-26 ГИБКОГО ДИСКА ФОРМАТА ОБМЕНА
    ---------------------------------------------------------
     СМЕЩЕНИЕ,!               СОДЕРЖИМОЕ
      БАЙТЫ   !     (ВСЕ ЗНАЧЕНИЯ ДАНЫ В КОДЕ КОИ-8)
    ---------------------------------------------------------
          0   ! H
          1   ! D
          2   ! R
          3   ! 1
          4   ! РЕЗЕРВИРУЕТСЯ
       5-14   ! МЕТКA ФАЙЛА
      15-25   ! РЕЗЕРВИРУЕТСЯ
      26-32   ! БАЙТЫ СОДЕРЖАТ УКАЗАНИЕ ДЛИНЫ
              ! БЛОКА/ЗАПИСИ. ЗНАЧЕНИЕМ ПО УМОЛЧАНИЮ
              ! ЯВЛЯЕТСЯ 80, НО ВОЗМОЖНО И 128
         33   ! РЕЗЕРВИРУЕТСЯ
      34-35   ! НОМЕР ДОРОЖКИ, С КОТОРОЙ НАЧИНАЮТСЯ ДАННЫЕ
         36   ! 0 (ВОСЬМЕРИЧНОЕ 360)
      37-40   ! НОМЕР СЕКТОРА, С КОТОРОГО НАЧИНАЮТСЯ ДАННЫЕ
         41   ! РЕЗЕРВИРУЕТСЯ
      42-43   ! НОМЕР ПОСЛЕДНЕЙ ДОРОЖКИ,
              ! ОТВЕДЕННОЙ ПОД ЭТОТ НАБОР ДАННЫХ
         44   ! 0 (ВОСЬМЕРИЧНОЕ 360)
      45-46   ! НОМЕР ПОСЛЕДНЕГО СЕКТОРА,
              ! ОТВЕДЕННОГО ПОД ЭТОТ НАБОР ДАННЫХ
         47   ! РЕЗЕРВИРУЕТСЯ
         50   ! ИНДИКАТОР ОБХОДА
         51   ! ГАРАНТИЯ НАБОРА ДАННЫХ
         52   ! ЗАЩИТА ЗАПИСИ
         53   ! ПРОБЕЛ (ВОСЬМЕРИЧНОЕ 100)
              ! ДЛЯ ИЗМЕНЕНИЯ ДАННЫХ
         54   ! ИНДИКАТОР МНОГОТОМНОСТИ:
              !      C       - ПРОДОЛЖАЕТСЯ НА ДР. НОСИТЕЛЕ
              !      L       - ПОСЛЕДНИЙ ТОМ ФАЙЛА
              !      ПРОБЕЛ  - БЕЗ ПРОДОЛЖЕНИЯ
      55-56   ! НОМЕР ТОМА
      57-60   ! ГОД СОЗДАНИЯ
      61-62   ! МЕСЯЦ СОЗДАНИЯ
      63-64   ! ДЕНЬ СОЗДАНИЯ
     65-101   ! РЕЗЕРВИРУЮТСЯ
    102-107   ! ДАТА ИСТЕЧЕНИЯ СРОКА ХРАНЕНИЯ НАБОРА
              ! ДАННЫХ В ТОМ ЖЕ ФОРМАТЕ, ЧТО И ДАТА
              ! СОЗДАНИЯ НАБОРА (БАЙТЫ 57-64)
        110   ! ПОМЕТКА КОНТРОЛЯ:
              !     V       - НАБОР ДАННЫХ СВЕРЕН
              !     ПРОБЕЛ  - БЕЗ СВЕРКИ
        111   ! РЕЗЕРВИРУЕТСЯ
    112-113   ! НОМЕР СЛЕДУЮЩЕЙ СВОБОДНОЙ ДОРОЖКИ В
              ! ЭТОМ НАБОРЕ ДАННЫХ
        114   ! РЕЗЕРВИРУЕТСЯ
    115-116   ! НОМЕР СЛЕДУЮЩЕГО СВОБОДНОГО СЕКТОРА В
              ! ЭТОМ НАБОРЕ ДАННЫХ
        117   ! РЕЗЕРВИРУЕТСЯ




 �
                             - 76 -




        11.7. МНОГОТОМНАЯ ФАЙЛОВАЯ СТРУКТУРА


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

        ИСПОЛЬЗОВАНИЕ ВИРТУАЛЬНЫХ НОСИТЕЛЕЙ ПОЗВОЛЯЕТ:

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

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

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





















 �
                             - 77 -




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

          !-----------------!
          !     КАТАЛОГ     !
          !      ДИСКА      !
          !-----------------!
          !     ФАЙЛ #1     !
          !-----------------!
          !     ФАЙЛ #2     !
          !-----------------!    /!-----------------!
          !     <UNUSED>    !   / !     КАТАЛОГ     !
          !-----------------!  /  !  ВИРТУАЛЬНОГО   !
          !     ФАЙЛ #3     ! /   !     НОСИТЕЛЯ    !
          !-----------------!/    !-----------------!
          !     ФАЙЛ #4     !     !     ФАЙЛ #1     !
          !-----------------!\    !-----------------!
          !     ФАЙЛ #5     ! \   !     ФАЙЛ #2     !
          !-----------------   \  !-----------------!
          !                 !   \ !     <UNUSED>    !
          !     <UNUSED>    !    \!-----------------!
          !                 !
          !-----------------!

                             РИС. 52

        В РАЗЛИЧНЫХ  ТИПАХ  МОНИТОРОВ  РАБОТА  С  ВИРТУАЛЬНЫМИ
   НОСИТЕЛЯМИ     РЕАЛИЗОВАНА     ПО-РАЗНОМУ.      ЕСЛИ      В
   RM/SJ/FB/XM-МОНИТОРАХ ЭТО ВЫПОЛНЯЕТСЯ С ПОМОЩЬЮ СПЕЦИАЛЬНЫХ
   ДРАЙВЕРОВ  (UX,  UY,  UZ)  И  ПРОГРАММЫ   CNT.SAV,   ТО   В
   TS-МОНИТОРЕ РЕАЛИЗУЕТСЯ С ПОМОЩЬЮ СРЕДСТВ МОНИТОРА.



        11.7.1. РАБОТА  С  ВИРТУАЛЬНЫМИ  НОСИТЕЛЯМИ   В
                RM/SJ/FB/XM-МОНИТОРАХ





        11.7.1.1. ДРАЙВЕР ВИРТУАЛЬНОГО ФАЙЛОВОГО НОСИТЕЛЯ



        В СИСТЕМЕ ИМЕЕТ ТРИ ТИПА  ДРАЙВЕРОВ  ДЛЯ  ОБСЛУЖИВАНИЯ
   ВИРТУАЛЬНЫХ НОСИТЕЛЕЙ UX:, UY:,  UZ:.  ДРАЙВЕРЫ  ОТЛИЧАЮТСЯ
   ДРУГ ОТ ДРУГА ТОЛЬКО РАЗМЕРОМ ВИРТУАЛЬНОГО НОСИТЕЛЯ,  КОТО-
   РЫЙ ОНИ ОБСЛУЖИВАЮТ.  РАЗМЕР  ВИРТУАЛЬНОГО  НОСИТЕЛЯ  МОЖНО
   ИЗМЕНЯТЬ ЛИБО ПРИ ГЕНЕРАЦИИ,  ЛИБО  КОМАНДОЙ  МОНИТОРА  SET
   (НАПРИМЕР, SET UX=320). НИЖЕ ДАНЫ РАЗМЕРЫ ВИРТУАЛЬНЫХ НОСИ-
   ТЕЛЕЙ, КОТОРЫЕ УСТАНАВЛИВАЮТСЯ ПО УМОЛЧАНИЮ:

   UX     - ДРАЙВЕР, ОБСЛУЖИВАЮЩИЙ ВИРТУАЛЬНЫЙ НОСИТЕЛЬ ДЛИНОЙ
            В 280 БЛОКОВ;

   UY     - 546 БЛОКОВ;

   UZ     - 1100 БЛОКОВ.

 �
                             - 78 -




        КАЖДЫЙ ИЗ ДРАЙВЕРОВ МОЖЕТ ОБСЛУЖИВАТЬ ДО  ВОСЬМИ  ВИР-
   ТУАЛЬНЫХ НОСИТЕЛЕЙ (НАПРИМЕР, ОТ UX0: ДО UX7:).



        11.7.1.2. СТРУКТУРА КАТАЛОГА ДИСКА И ВИРТУАЛЬНОГО
                  НОСИТЕЛЯ



        КОМАНДА CONNECT, ИСПОЛЬЗУЯ ПРОГРАММУ  CNT.SAV,  ПОЗВО-
   ЛЯЕТ ПОЛЬЗОВАТЕЛЮ СОЗДАТЬ СОБСТВЕННЫЙ ВИРТУАЛЬНЫЙ  НОСИТЕЛЬ
   НА ДИСКЕ И/ИЛИ ОБ'ЯВИТЬ ФАЙЛ ВИРТУАЛЬНЫМ НОСИТЕЛЕМ.  НАПРИ-
   МЕР, ПО СЛЕДУЮЩЕЙ КОМАНДЕ  СОЗДАЕТСЯ  ВИРТУАЛЬНЫЙ  НОСИТЕЛЬ
   UY1: ДЛИНОЙ В 546 БЛОКОВ НА УСТРОЙСТВЕ RK0:.

         .LOAD UY
         .CONNECT RK0:DISK,UY1:

         CREATE NEW FILE?Y

        ЕСЛИ ФАЙЛ ДО ЭТОГО НЕ СУЩЕСТВОВАЛ, ТО  СИСТЕМА  ВЫДАЕТ
   ПРЕДУПРЕЖДАЮЩЕЕ СООБЩЕНИЕ И  СПРАШИВАЕТ,  ДЕЙСТВИТЕЛЬНО  ЛИ
   ПОЛЬЗОВАТЕЛЬ ХОЧЕТ СОЗДАТЬ НОВЫЙ  ФАЙЛ  (ВИРТУАЛЬНЫЙ  НОСИ-
   ТЕЛЬ). ТОЖЕ САМОЕ МОЖНО ВЫПОЛНИТЬ С ПОМОЩЬЮ ПРОГРАММЫ CNT.

         .R CNT
         *RK0:DISK,UY1:

         CREATE NEW FILE?Y

        ПО ЭТОЙ КОМАНДЕ НА ДИСКЕ RK0: СОЗДАЕТСЯ  ФАЙЛ  DISK  И
   ОБ'ЯВЛЯЕТСЯ ВИРТУАЛЬНЫМ НОСИТЕЛЕМ UY1:, КОТОРЫЙ БУДЕТ  ОБС-
   ЛУЖИВАТЬСЯ ДРАЙВЕРОМ UY. В  КАТАЛОГЕ  ДИСКА  RK0:  ПОЯВИТСЯ
   СЛЕДУЮЩАЯ ЗАПИСЬ: ИМЯ ФАЙЛА - DISK.SYS, ДЛИНА ФАЙЛА  -  546
   БЛОКОВ.

        ЕСЛИ ОТСУТСТВУЕТ ТИП ФАЙЛА, ТО  ПО  УМОЛЧАНИЮ  БЕРЕТСЯ
   РАСШИРЕНИЕ .SYS.

        ПРОГРАММА CNT (ИЛИ КОМАНДА МОНИТОРА  CONNECT)  ЗАПИСЫ-
   ВАЕТ ВО ВНУТРЕННЮЮ ТАБЛИЦУ ДРАЙВЕРА UY СПЕЦИФИКАЦИЮ ФАЙЛА И
   НОМЕР БЛОКА, С КОТОРОГО НАЧИНАЕТСЯ ЭТОТ ФАЙЛ НА ДИСКЕ. ДЛИ-
   НА КАТАЛОГА ВИРТУАЛЬНОГО НОСИТЕЛЯ ЗАДАЕТСЯ ПРИ  ИНИЦИАЛИЗА-
   ЦИИ. ПО УМОЛЧАНИЮ ОТВОДИТСЯ 4 СЕГМЕНТА.

          .INITIALIZE/SEGMENT:N UY1:

          UY1:/INIT ARE YOU SURE?Y

        ПО ЭТОЙ КОМАНДЕ НА ВИРТУАЛЬНОМ НОСИТЕЛЕ UY1: СОЗДАЕТСЯ
   КАТАЛОГ ДЛИНОЙ В "N" СЕГМЕНТОВ.

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

        ДАЛЕЕ ПРИВЕДЕН ПРИМЕР ИНИЦИАЛИЗАЦИИ ДИСКА RK1: И  СОЗ-
   ДАНИЯ НА НЕМ ВИРТУАЛЬНЫХ НОСИТЕЛЕЙ.
 �
                             - 79 -




    .INIT RK1:/VOLUMEID
    RK1:/INIT ARE YOU SURE?Y

    VOL ID? WORK

    OWNER NAME? МОСКВА

        СОЗДАЕТСЯ ФАЙЛ VIR0 НА ДИСКЕ RK1: И  ОБ'ЯВЛЯЕТСЯ  ВИР-
   ТУАЛЬНЫМ НОСИТЕЛЕМ UX:. ЕСЛИ НЕ ЗАДАН НОМЕР НОСИТЕЛЯ, ТО ПО
   УМОЛЧАНИЮ СИСТЕМА ВОСПРИНИМАЕТ НОМЕР НОСИТЕЛЯ  КАК  НУЛЕВОЙ
   (В ДАННОМ ПРИМЕРЕ UX0:).

    .LOAD UX

    .CONNECT RK1:VIR0
    DRIVER ? UX:

    CREATE NEW FILE ?Y

   СИСТЕМА СООБЩАЕТ, ЧТО УКАЗАННОГО ФАЙЛА НЕТ НА ДИСКЕ, И ЗАП-
   РАШИВАЕТ ПОДТВЕРЖДЕНИЕ НА ЕГО СОЗДАНИЕ.

    .DIR RK1:/VOL
    7-FEB-84
    VOLUME ID: WORK
    OWNER    : МОСКВА
    VIR0  .SYS   280 7-FEB-84
    1 FILES, 280 BLOCKS
    4482 FREE BLOCKS

        ИНИЦИАЛИЗАЦИЯ ВИРТУАЛЬНОГО НОСИТЕЛЯ  UX0:,  СОЗДАННОГО
   НА RK1:

    .INIT UX:/VOL

    UX:/INIT ARE YOU SURE?Y

    VOL ID? VIRTUL/X

    OWNER NAME? ##00

    .DIR UX:/VOL
    7-FEB-84
    VOLUME ID: VIRTUL/X
    OWNER    : ##00

    0 FILES, 0 BLOCKS
    266 FREE BLOCKS

        СОЗДАНИЕ ВИРТУАЛЬНОГО НОСИТЕЛЯ UY: НА ДИСКЕ RK1:.

    .LOAD UY:

    .CONNECT RK1:VIR1,UY1:

    CREATE NEW FILE ?Y

    .INIT UY1:/VOL

 �
                             - 80 -




    UY1:/INIT ARE YOU SURE?Y

    VOL ID? VIRTUAL/Y

    OWNER NAME? ##01

    .DIR UX:/SUM
    7-FEB-84

        3 FILES IN SEGMENT 1

        4 AVAILABLE SEGMENTS, 1 IN USE

    3 FILES, 3 BLOCKS
    263 FREE BLOCKS

    .DIR UY1:/SUM
    7-FEB-84

        0 FILES IN SEGMENT 1

        4 AVAILABLE SEGMENTS, 1 IN USE

    0 FILES, 0 BLOCKS
    532 FREE BLOCKS

        НЕОБХОДИМО  ПОМНИТЬ,  ЧТО  ПОСЛЕ  ВЫПОЛНЕНИЯ   КОМАНДЫ
   SQUEEZE (СЖАТИЕ ИНФОРМАЦИИ НА НОСИТЕЛЕ) ИЛИ ПОВТОРНОЙ  ЗАГ-
   РУЗКИ СИСТЕМЫ НУЖНО ЗАНОВО ПРОИЗВЕСТИ ОБ'ЯВЛЕНИЕ  НЕОБХОДИ-
   МОГО ФАЙЛА ВИРТУАЛЬНЫМ НОСИТЕЛЕМ. ПРИ ЭТОМ МОЖНО ПРОИЗВЕСТИ
   ПРИВЯЗКУ ФАЙЛА К ЛЮБОМУ ИЗ СВОБОДНЫХ ВИРТУАЛЬНЫХ  НОСИТЕЛЕЙ
   СООТВЕТСТВУЮЩЕГО ТИПА. НАПРИМЕР, ФАЙЛ VIR0 ПРИ ЕГО СОЗДАНИИ
   БЫЛ ОБ'ЯВЛЕН ВИРТУАЛЬНЫМ НОСИТЕЛЕМ UX:. ПОСЛЕ  ПЕРЕЗАГРУЗКИ
   СИСТЕМЫ ЭТОТ ФАЙЛ МОЖЕТ БЫТЬ ОБ'ЯВЛЕН КАК ВИРТУАЛЬНЫЙ НОСИ-
   ТЕЛЬ UX3:.

    .BOOT SY:
    RAFOS+/XM (S) V2.1/4.00
    .
    .
    .
    .DIR RK1:/VOL
    7-FEB-84
    VOLUME ID: WORK
    OWNER    : МОСКВА
    VIR0  .SYS   280 7-FEB-84     VIR1  .SYS   546 7-FEB-84
    2 FILES, 826 BLOCKS
    3936 FREE BLOCKS

    .LOAD UX,UY

    .CONNECT RK1:VIR1,UY5:

    .CONNECT RK1:VIR0,UX3:

        НАИБОЛЕЕ ЧАСТО ВСТРЕЧАЮЩИЕСЯ ОШИБКИ ПРИ РАБОТЕ С  ВИР-
   ТУАЛЬНЫМИ НОСИТЕЛЯМИ:

        1) НЕ ЗАГРУЖЕН ДРАЙВЕР СООТВЕТСТВУЮЩЕГО ТИПА ВИРТУАЛЬ-
 �
                             - 81 -




   НОГО НОСИТЕЛЯ. ЕСЛИ ЭТО  ИМЕЕТ  МЕСТО,  ТО  СИСТЕМА  ВЫДАЕТ
   СООБЩЕНИЕ ОБ  ОШИБКЕ.  НАПРИМЕР,  ПРОИЗВОДИТСЯ  СОЗДАНИЕ  И
   ОБ'ЯВЛЕНИЕ ФАЙЛА VIR0 ВИРТУАЛЬНЫМ НОСИТЕЛЕМ UX:

        .CONNECT
        VOLUME ? RK1:VIR0
        DRIVER ? UX:
        ?CNT-F-LOAD DRIVER

   ПОЯВИЛОСЬ СООБЩЕНИЕ О ТОМ, ЧТО ДРАЙВЕР ВИРТУАЛЬНОГО НОСИТЕ-
   ЛЯ НЕ ЗАГРУЖЕН В ПАМЯТЬ;

        2) ОШИБОЧНОЕ УКАЗАНИЕ  НОМЕРА  ВИРТУАЛЬНОГО  НОСИТЕЛЯ,
   НАПРИМЕР:

          - ВМЕСТО ОБ'ЯВЛЕННОГО UX: ПРИ ЗАДАНИИ КОМАНДЫ РАСПЕ-
            ЧАТКИ КАТАЛОГА ВИРТУАЛЬНОГО  НОСИТЕЛЯ  БЫЛ  УКАЗАН
            UX1:

              .DIR UX1:
              ?DIR-F-ERROR READING DIRECTORY

          - ПРИ ЗАДАНИИ КОМАНДЫ КОПИРОВАНИЯ ОДНОГО ВИРТУАЛЬНО-
            ГО НОСИТЕЛЯ НА ДРУГОЙ  БЫЛ  УКАЗАН  НЕСУЩЕСТВУЮЩИЙ
            ВИРТУАЛЬНЫЙ НОСИТЕЛЬ UY: ВМЕСТО UX:

              .COPY UX: UY:
              FILES COPIED:

              ?MON-F-DIRECTORY I/O ERROR
              ; ОШИБКА ЧТЕНИЯ КАТАЛОГА

        3) НЕСООТВЕТСТВИЕ ДЛИНЫ ФАЙЛА И  РАЗМЕРА  ОБ'ЯВЛЯЕМОГО
   ВИРТУАЛЬНОГО  НОСИТЕЛЯ.  ПРИ  ПОСЛЕДУЮЩИХ  ОБ'ЯВЛЕНИЯХ  УЖЕ
   СУЩЕСТВУЮЩЕГО ФАЙЛА ВИРТУАЛЬНЫМ НОСИТЕЛЕМ  НЕОБХОДИМО  ПОМ-
   НИТЬ О ТИПЕ ПЕРВОГО ОБ'ЯВЛЕННОГО НОСИТЕЛЯ.

        .LOAD UX,UY

        .CONNECT
        VOLUME ? RK1:VIR0,UY5:
        ?CNT-F-ILLEGAL FILE LENGTH FOR DRIVER
        ; НЕКОРРЕКТНАЯ ДЛИНА ДЛЯ ДРАЙВЕРА

   ПОЯВИЛОСЬ СООБЩЕНИЕ, ЧТО ДЛИНА ФАЙЛА НЕ СООТВЕТСТВУЕТ  РАЗ-
   МЕРУ ОБ'ЯВЛЯЕМОГО ВИРТУАЛЬНОГО НОСИТЕЛЯ. ФАЙЛ VIR0 БЫЛ ПЕР-
   ВОНАЧАЛЬНО ОБ'ЯВЛЕН UX: И ЕГО ДЛИНА РАВНА 280 БЛОКАМ.  СЛЕ-
   ДОВАТЕЛЬНО, ТАКОЙ ВИРТУАЛЬНЫЙ НОСИТЕЛЬ  (ФАЙЛ  VIR0)  МОЖЕТ
   ОБСЛУЖИВАТЬСЯ ТОЛЬКО ДРАЙВЕРОМ UX.



        11.7.2. РАБОТА  С  ВИРТУАЛЬНЫМИ  НОСИТЕЛЯМИ   В
                TS-МОНИТОРЕ



        ПРОЦЕДУРА СОЗДАНИЯ ВИРТУАЛЬНОГО НОСИТЕЛЯ СЛЕДУЮЩАЯ: ПО
   КОМАНДЕ CREATE НА ФИЗИЧЕСКОМ ДИСКЕ СОЗДАЕТСЯ  ФАЙЛ,  РАЗМЕР
 �
                             - 82 -




   КОТОРОГО УКАЗЫВАЕТСЯ КЛЮЧОМ /ALL:N. ПОСЛЕ ЭТОГО  НЕОБХОДИМО
   ВЫПОЛНИТЬ КОМАНДУ CONNECT ДЛЯ ОБ'ЯВЛЕНИЯ ФАЙЛА  ВИРТУАЛЬНЫМ
   НОСИТЕЛЕМ. ПОСЛЕ ВЫПОЛНЕНИЯ КОМАНДЫ  INITIALIZE  УСТРОЙСТВО
   ГОТОВО К РАБОТЕ.

        НАПРИМЕР, ПО СЛЕДУЮЩЕМУ НАБОРУ КОМАНД  СОЗДАЕТСЯ  ФАЙЛ
   ДЛИНОЙ В 1000 БЛОКОВ НА УСТРОЙСТВЕ RK0: И ОБ'ЯВЛЯЕТСЯ  ВИР-
   ТУАЛЬНЫМ НОСИТЕЛЕМ F:.

         .CREATE RK0:DISK/ALL:1000
         .CONNECT RK0:DISK F:


   ЕСЛИ НЕОБХОДИМО ТОЛЬКО ЧИТАТЬ ИЗ ВИРТУАЛЬНОГО НОСИТЕЛЯ,  ТО
   МОЖНО ВМЕСТО КОМАНДЫ CONNECT ИСПОЛЬЗОВАТЬ ASSIGN.

        РАЗМЕР КАТАЛОГА  ВИРТУАЛЬНОГО  НОСИТЕЛЯ  ЗАДАЕТСЯ  ПРИ
   ИНИЦИАЛИЗАЦИИ И ЗАВИСИТ ОТ РАЗМЕРА СОЗДАВАЕМОГО ВИРТУАЛЬНО-
   ГО НОСИТЕЛЯ.  ПРИ  ИНИЦИАЛИЗАЦИИ  МОЖНО  УКАЗАТЬ  ТРЕБУЕМОЕ
   КОЛИЧЕСТВО СЕГМЕНТОВ:

          .INITIALIZE/SEGMENT:N F:

          F:/INIT ARE YOU SURE?Y

   ПО ЭТОЙ КОМАНДЕ НА ВИРТУАЛЬНОМ НОСИТЕЛЕ F: СОЗДАЕТСЯ  КАТА-
   ЛОГ ИЗ N СЕГМЕНТОВ.


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


























 �
                             - 83 -




       12. СТРУКТУРА УСТРОЙСТВА ПОСЛЕДОВАТЕЛЬНОГО ДОСТУПА




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



        12.1. СТРУКТУРА ФАЙЛОВ НА МАГНИТНОЙ ЛЕНТЕ



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

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

        СТАНДАРТНЫЕ МЕТКИ:

   МЕТКА ТОМА (VOL1)
          - МАГНИТНАЯ ЛЕНТА В СИСТЕМЕ ИМЕЕТ ТОЛЬКО  ОДИН  ТОМ;
            НЕ ИСПОЛЬЗУЕТСЯ  МЕТКА  КОНЦА  ТОМА  EOV,  ПОЭТОМУ
            НЕЛЬЗЯ РАСПОЛАГАТЬ ФАЙЛ НА ДВУХ ЛЕНТАХ;

   ЛЕНТОЧНЫЙ МАРКЕР (*)
          - МЕТКИ ОТ ДАННЫХ ОТДЕЛЯЮТСЯ ЛЕНТОЧНЫМ МАРКЕРОМ; ДВА
            ЛЕНТОЧНЫХ МАРКЕРА ОЗНАЧАЮТ ЛОГИЧЕСКИЙ КОНЕЦ ЛЕНТЫ;

   МЕТКА НАЧАЛА ФАЙЛА (HDR1)
          - МЕТКА СОДЕРЖИТ ВСЮ НЕОБХОДИМУЮ ИНФОРМАЦИЮ О ФАЙЛЕ,
            ЗА ИСКЛЮЧЕНИЕМ ДЛИНЫ ФАЙЛА; ДЛИНА ФАЙЛА РАВНА 0;

   МЕТКА КОНЦА ФАЙЛА (EOF1)
          - МЕТКА ПОЛНОСТЬЮ ПОВТОРЯЕТ ИНФОРМАЦИЮ, СОДЕРЖАЩУЮСЯ
            В МЕТКЕ HDR1, ЗА ИСКЛЮЧЕНИЕМ  ДЛИНЫ  ФАЙЛА;  ДЛИНА
            РАВНА ЧИСЛУ БЛОКОВ ДАННЫХ;

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

        ЕСЛИ ДАННЫЕ НА МАГНИТНОЙ ЛЕНТЕ НЕ  ИМЕЮТ  СТАНДАРТНОГО
   ФОРМАТА, ТО ОНИ МОГУТ БЫТЬ ПРОЧИТАНЫ С ПОМОЩЬЮ МАКРОКОМАНДЫ
 �
                             - 84 -




   .SPFUN И ДРАЙВЕРА, ПОДДЕРЖИВАЮЩЕГО ФАЙЛОВУЮ СТРУКТУРУ.

        СИСТЕМНЫЕ ПРОГРАММЫ DIR, DUP, PIP И Т.Д.  ОСУЩЕСТВЛЯЮТ
   ЗАПИСЬ НА ЛЕНТУ ИЛИ СЧИТЫВАНИЕ ПОБЛОЧНО, Т.Е.  ЗАПИСЯМИ  ПО
   512 БАЙТ.

        ФАЙЛ, СОЗДАННЫЙ НА МАГНИТНОЙ ЛЕНТЕ, ИМЕЕТ ВИД:

       HDR1 * ДАННЫЕ * EOF1 *

        ТОМ, СОДЕРЖАЩИЙ ОДИН ФАЙЛ, ИМЕЕТ ФОРМАТ:

       VOL1 HDR1 * ДАННЫЕ * EOF1 * * *

        ТОМ, СОДЕРЖАЩИЙ ДВА ФАЙЛА, ИМЕЕТ ФОРМАТ:

       VOL1 HDR1 * ДАННЫЕ * EOF1 * HDR1 * ДАННЫЕ * EOF1 * * *

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

       VOL1 HDR1 * * EOF1 * * *

        НАЧАЛЬНЫЙ ЗАГРУЗЧИК МАГНИТНОЙ ЛЕНТЫ ТОМА ИМЕЕТ ФОРМАТ:

       VOL1 МBOOT  HDR1 * ДАННЫЕ * EOF1 * * *

        ПРИ  СОЗДАНИИ  ЗАГРУЗЧИКА  НА  МАГНИТНОЙ  ЛЕНТЕ   ФАЙЛ
   MBOOT.BOT (ПЕРВИЧНЫЙ ЗАГРУЗЧИК) ДОЛЖЕН  ИСПОЛЬЗОВАТЬСЯ  ДЛЯ
   КОПИРОВАНИЯ ВТОРИЧНОГО ЗАГРУЗЧИКА МАГНИТНОЙ  ЛЕНТЫ.  ПЕРВЫЙ
   ФАЙЛ, КОТОРЫЙ ДОЛЖЕН БЫТЬ ЗАПИСАН ПОСЛЕ ПЕРВИЧНОГО  ЗАГРУЗ-
   ЧИКА (МBOOT), ЭТО MSBOOT.BOT,  КОТОРЫЙ  СОДЕРЖИТ  ВТОРИЧНЫЙ
   ЗАГРУЗЧИК МАГНИТНОЙ  ЛЕНТЫ.  ПЕРВИЧНЫЙ  ЗАГРУЗЧИК  ЗАНИМАЕТ
   ОДИН БЛОК (512 БАЙТОВ).

        КАЖДАЯ МЕТКА НА МАГНИТНОЙ ЛЕНТЕ ИСПОЛЬЗУЕТ ТОЛЬКО ПЕР-
   ВЫЕ 80 БАЙТОВ (ИЗ ЗАНИМАЕМЫХ 512 БАЙТОВ), И КАЖДЫЙ  БАЙТ  В
   МЕТКЕ СОДЕРЖИТ ИНФОРМАЦИЮ В  СИМВОЛЬНОМ  КОДЕ.  ИНФОРМАЦИЯ,
   СОДЕРЖАЩАЯСЯ В МЕТКЕ ТОМА, ПРЕДСТАВЛЕНА В ТАБЛ. 9.




















 �
                             - 85 -




                                                 ТАБЛИЦА 9

                ФОРМАТ МЕТКИ ТОМА (VOL1)

   -------------------------------------------------------
             !        !ДЛИНА !      ЗНАЧЕНИЕ ПОЛЯ
    ПОЗИЦИЯ  !ИМЯ ПОЛЯ!ПОЛЯ, ! (ПО УМОЛЧАНИЮ ЗАПИСЫВАЕТСЯ
     ПОЛЯ    !        !БАЙТЫ !      В КОДЕ КОИ-7)
   -------------------------------------------------------
             !ИДЕНТИ- !  3   !
             !ФИКАТОР !      !
     1 -  3  ! (ID)   !      !           VOL
             ! МЕТКИ  !      !
   ----------!--------!------!----------------------------
          4  ! НОМЕР  !  1   !            1
             ! МЕТКИ  !      !
   ----------!--------!------!----------------------------
             !        !      ! RAFOS, ЗА КОТОРЫМ СЛЕДУЕТ
     5 - 10  ! ID ТОМА!  6   ! ОДИН ПРОБЕЛ (МЕТКА ТОМА),
             !        !      ! ЕСЛИ НЕТ, ТО ID ТОМА
   ----------!--------!------!----------------------------
         11  !        !  1   !          ПРОБЕЛ
   ----------!--------!------!----------------------------
             !   НЕ   !      !
    12 - 37  ! ИСПОЛЬ-! 26   !          ПРОБЕЛЫ
             ! ЗУЕТСЯ !      !
   ----------!--------!------!----------------------------
    38 - 50  !ID ПОЛЬ-! 13   ! С 38 ПО 40  ID  D&B;
             !ЗОВАТЕЛЯ!      ! С 41 ПО 50  ID ПОЛЬЗОВАТЕЛЯ
             !        !      ! ИЛИ ПРОБЕЛЫ
   ----------!--------!------!----------------------------
             !СТАНДАР-!      !
         51  ! ТНАЯ   !  1   !            1
             ! ВЕРСИЯ !      !
             ! СИСТЕМЫ!      !
   ----------!--------!------!----------------------------
             !   НЕ   !      !
    52 - 79  !ИСПОЛЬ- ! 28   !          ПРОБЕЛЫ
             ! ЗУЕТСЯ !      !
   ----------!--------!------!----------------------------
             !СТАНДАР-!      !
         80  !  ТНАЯ  !  1   !            3
             ! ВЕРСИЯ !      !
             !  МЕТКИ !      !

        ИНФОРМАЦИЯ, СОДЕРЖАЩАЯСЯ В МЕТКЕ ФАЙЛА, ПРЕДСТАВЛЕНА В
   ТАБЛ. 10.












 �
                             - 86 -




                                                 ТАБЛИЦА 10

                 ФОРМАТ МЕТКИ ФАЙЛА (HDR1)

   -------------------------------------------------------
             !         !ДЛИНА !      ЗНАЧЕНИЕ ПОЛЯ
    ПОЗИЦИЯ  !ИМЯ ПОЛЯ !ПОЛЯ, !(ПО УМОЛЧАНИЮ ЗАПИСЫВАЕТСЯ
     ПОЛЯ    !         !БАЙТЫ !      В КОДЕ КОИ-7)
   -------------------------------------------------------
     1 -  3  !ID МЕТКИ !   3  !          HDR
   ----------!---------!------!---------------------------
          4  ! НОМЕР   !   1  !           1
             ! МЕТКИ   !      !
   ----------!---------!------!---------------------------
     5 - 21  !ID ФАЙЛА !  17  !   ИМЯ, РАЗДЕЛИТЕЛЬ (".")
             !         !      !         И ТИП
   ----------!---------!------!---------------------------
    22 - 27  !ID ЗАПИСИ!   6  ! RAFOS, ЗА КОТОРЫМ СЛЕДУЕТ
             ! ФАЙЛА   !      !        ОДИН ПРОБЕЛ
   ----------!---------!------!---------------------------
             ! НОМЕР   !      !
    28 - 31  ! СЕКЦИИ  !   4  !         0001
             ! ФАЙЛА   !      ! (В ВОСЬМЕРИЧНОМ ВИДЕ)
   ----------!---------!------!---------------------------
             !ПОРЯДКО- !      !  ПЕРВЫЙ ФАЙЛ ИМЕЕТ НОМЕР
    32 - 35  !ВЫЙ НОМЕР!   4  !  0001; НОМЕР СЛЕДУЮЩЕГО
             ! ФАЙЛА   !      !  ФАЙЛА УВЕЛИЧИВАЕТСЯ НА 1;
             !         !      !  ПОСЛЕ ИНИЦИАЛИЗАЦИИ ЛЕНТЫ
             !         !      !  ЕГО ЗНАЧЕНИЕ РАВНО 0000
             !         !      ! (В ВОСЬМЕРИЧНОМ ВИДЕ)
   ----------!---------!------!---------------------------
             ! НОМЕР   !      !         0001
    36 - 39  !ГЕНЕРАЦИИ!   4  ! (В ВОСЬМЕРИЧНОМ ВИДЕ)
   ----------!---------!------!---------------------------
             ! ВЕРСИЯ  !      !          00
    40 - 41  !ГЕНЕРАЦИИ!   2  ! (В ВОСЬМЕРИЧНОМ ВИДЕ)
   ----------!---------!------!---------------------------
             !  ДАТА   !      ! ПРОБЕЛ, ЗА КОТОРЫМ СЛЕДУ-
    42 - 47  !СОЗДАНИЯ !   6  !  ЕТ (ГОД * 1000 + ДЕНЬ)
   ----------!---------!------!---------------------------
             !  ДАТА   !      ! ПРОБЕЛ, ЗА КОТОРЫМ СЛЕДУЮТ
    48 - 53  !ОКОНЧАНИЯ!   6  !         ПЯТЬ НУЛЕЙ
   ----------!---------!------!---------------------------
         54  ! МЕТОД   !   1  !         ПРОБЕЛ
             ! ДОСТУПА !      !
   ----------!---------!------!---------------------------
    55 - 60  ! СЧЕТЧИК !   6  !         000000
             ! БЛОКОВ  !      ! (В ВОСЬМЕРИЧНОМ ВИДЕ)
   ----------!---------!------!---------------------------
    61 - 73  !   КОД   !  13  !        INERAFOS
             ! СИСТЕМЫ !      !
   ----------!---------!------!---------------------------
             !   НЕ    !      !
    74 - 80  ! ИСПОЛЬ- !   7  !         ПРОБЕЛЫ
             ! ЗУЕТСЯ  !      !


        ПРИМЕЧАНИЕ. ДАТА СОЗДАНИЯ (DAT) ЗАПОМИНАЕТСЯ СЛЕДУЮЩИМ
   ОБРАЗОМ:
 �
                             - 87 -




             DAT = Г * 1000 + Д                   (4.4)

   ГДЕ

   Г      - ГОД;

   Д      - КОЛИЧЕСТВО ДНЕЙ ОТ НАЧАЛА ГОДА.

        НАПРИМЕР, ДАТА 5.05.83. БУДЕТ ПРЕДСТАВЛЕНА В ВИДЕ

       83 * 1000 + (31 + 28 + 31 + 30 + 5) = 83125

   ЕСЛИ ДАТА ОТСУТСТВУЕТ, ТО ДАННЫЕ ПОЗИЦИИ ЗАПОЛНЯЮТСЯ НУЛЯМИ
   (ПРИЧЕМ, ПЕРВЫМ СТОИТ ОДИН ПРОБЕЛ, ЗА КОТОРЫМ СЛЕДУЮТ  ПЯТЬ
   НУЛЕЙ).

        МЕТКА КОНЦА ФАЙЛА (EOF1) ТОЧНО ТАКАЯ ЖЕ, КАК  И  МЕТКА
   НАЧАЛА ФАЙЛА  (HDR1),  ЗА  ИСКЛЮЧЕНИЕМ  НЕСКОЛЬКИХ  БАЙТОВ,
   КОТОРЫЕ УКАЗАНЫ В ТАБЛ. 11.

                                                 ТАБЛИЦА 11

             СТРУКТУРА МЕТКИ КОНЦА ФАЙЛА (EOF1)
   -------------------------------------------------------
             !        !ДЛИНА !      ЗНАЧЕНИЕ ПОЛЯ
    ПОЗИЦИЯ  !ИМЯ ПОЛЯ!ПОЛЯ, ! (ПО УМОЛЧАНИЮ ЗАПИСЫВАЕТСЯ
     ПОЛЯ    !        !БАЙТЫ !      В КОДЕ КОИ-7)
   -------------------------------------------------------
     1 -  3  !ID МЕТКИ!  3   !          EOF
   ----------!--------!------!----------------------------
             !        !      !КОЛИЧЕСТВО БЛОКОВ ДАННЫХ,
             !        !      !СОДЕРЖАЩИХСЯ В ФАЙЛЕ (ЕСЛИ
    55 - 60  ! СЧЕТЧИК!  6   !ФАЙЛ НЕ СОЗДАН МАКРОКОМАНДОЙ
             ! БЛОКОВ !      !.SPFUN); ПРИ СОЗДАНИИ ФАЙЛА
             !        !      !МАКРОКОМАНДОЙ .SPFUN СЧЕТЧИК
             !        !      !РАВЕН НУЛЮ; ЕСЛИ .SPFUN ПРИ
             !        !      !ЗАПИСИ ИСПОЛЬЗУЕТ БЛОКИ ПО
             !        !      !256 (ДЕСЯТИЧНОЕ) СЛОВ, ТО
             !        !      !СЧЕТЧИК БЛОКОВ УСТАНАВЛИВА-
             !        !      !ЕТСЯ КАК ОБЫЧНО



        12.2. СТРУКТУРА КАССЕТНОГО ФАЙЛА



        ОБЫЧНО КАССЕТНЫЕ ФАЙЛЫ ИМЕЮТ ДАННЫЕ, КОТОРЫЕ  ЗАПИСАНЫ
   БЛОКАМИ ПО 128 БАЙТОВ. СЛУЖЕБНАЯ ИНФОРМАЦИЯ ЗАПИСЫВАЕТСЯ  В
   БЛОКИ ДЛИНОЙ 32 БАЙТА.

        СТАНДАРТНЫЕ ОБОЗНАЧЕНИЯ:

   НАЧАЛЬНЫЙ УЧАСТОК ЛЕНТЫ
          - ЧИСТАЯ ЧАСТЬ ЛЕНТЫ В НАЧАЛЕ КАССЕТЫ С ЛЕНТОЙ;

   РАСШИРЕННЫЙ ПРОМЕЖУТОК
          - БЛОК, ОТДЕЛЯЮЩИЙ НАЧАЛЬНЫЙ УЧАСТОК ЛЕНТЫ ОТ  МЕТКИ
            ПЕРВОГО ФАЙЛА;
 �
                             - 88 -




   МЕТКА ФАЙЛА
          - БЛОК, КОТОРЫЙ СОДЕРЖИТ ЗАГОЛОВОК ФАЙЛА;

   МЕТКА КОНЦА ФАЙЛА
          - БЛОК, КОТОРЫЙ ОТЛИЧАЕТСЯ ОТ МЕТКИ ФАЙЛА  ТЕМ,  ЧТО
            ПЕРВЫЙ БАЙТ РАВЕН НУЛЮ;

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

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

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

        ПОСЛЕ  ИНИЦИАЛИЗАЦИИ  КАССЕТНЫЙ  ФАЙЛ  ИМЕЕТ   ФОРМАТ,
   ПРЕДСТАВЛЕННЫЙ НА РИС. 53.

                     !-------------!
                     !  НАЧАЛЬНЫЙ  !
                     !   УЧАСТОК   !
                     !    ЛЕНТЫ    !
                     !-------------!
                     ! РАСШИРЕННЫЙ !
                     !  ПРОМЕЖУТОК !
                     !-------------!
                     ! МЕТКА ФАЙЛА !
                     !-------------!
                     ! ОСТАТОЧНАЯ  !
                     ! ИНФОРМАЦИЯ  !
                     !      .      !
                     !      .      !
                     !      .      !
                     \/\/\/\/\/\/\/

                         РИС. 53

        ПОСЛЕ ЗАПИСИ ФАЙЛА ИНФОРМАЦИЯ НА КАССЕТЕ БУДЕТ  РАСПО-
   ЛОЖЕНА СЛЕДУЮЩИМ ОБРАЗОМ (РИС. 54).
















 �
                             - 89 -




                     !-------------!
                     !  НАЧАЛЬНЫЙ  !
                     !   УЧАСТОК   !
                     !    ЛЕНТЫ    !
                     !-------------!
                     ! РАСШИРЕННЫЙ !
                     !  ПРОМЕЖУТОК !
                     !-------------!
                     ! МЕТКА ФАЙЛА !
                     !-------------!
                     !  МЕЖБЛОЧНЫЙ !
                     !  ПРОМЕЖУТОК !
                     !-------------!
                     ! БЛОК ДАННЫХ !
                     !-------------!
                     !  МЕЖБЛОЧНЫЙ !
                     !  ПРОМЕЖУТОК !
                     !-------------!
                     .             .
                     .             .
                     .             .
                     !-------------!
                     ! БЛОК ДАННЫХ !
                     !-------------!
                     ! МЕТКА КОНЦА !
                     !    ФАЙЛА    !
                     !-------------!

                         РИС. 54

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

























 �
                             - 90 -




                      !-------------!
                      .             .
                      .             .
                      .             .
                      !-------------!
                      !  МЕЖБЛОЧНЫЙ !
                      !  ПРОМЕЖУТОК !
                      !-------------!
                      ! БЛОК ДАННЫХ !
                      !-------------!
                      !  МЕЖБЛОЧНЫЙ !
                      !  ПРОМЕЖУТОК !
                      !-------------!
                      !  ЧАСТИЧНО   !
                      ! ЗАПИСАННЫЙ  !
                      !    БЛОК     !
                      !-------------!
                      !    МАРКЕР   !
                      ! КОНЦА ЛЕНТЫ !
                      !-------------!

                         РИС. 55


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































 �
                             - 91 -




        ФОРМАТ МЕТКИ ФАЙЛА ПРЕДСТАВЛЕН В ТАБЛ. 12.

                                          ТАБЛИЦА 12

                СТРУКТУРА МЕТКИ ФАЙЛА
   --------------------------------------------------
             !        !ДЛИНА !    ЗНАЧЕНИЕ ПОЛЯ
    ПОЗИЦИЯ  !ИМЯ ПОЛЯ!ПОЛЯ, ! (ПО УМОЛЧАНИЮ ЗАПИСЫ-
     ПОЛЯ    !        !БАЙТЫ !  ВАЕТСЯ В КОДЕ КОИ-7)
   --------------------------------------------------
     1 -  9  !ID ФАЙЛА!   9  !      ИМЯ И ТИП
   ----------!--------!------!-----------------------
         10  !  ТИП   !   1  !          0
             ! ДАННЫХ !      !
   ----------!--------!------!-----------------------
             !  ДЛИНА !      !
    11 - 12  !  БЛОКА !   2  !         200
             ! ДАННЫХ !      !    (ВОСЬМЕРИЧНОЕ)
   ----------!--------!------!-----------------------
             !        !      !0 ДЛЯ ФАЙЛА ОДНОГО ТОМА
             !ПОРЯДКО-!      !  ИЛИ ФАЙЛА 1-ОГО ТОМА
         13  !  ВЫЙ   !   1  !(ЕСЛИ ИМЕЕТСЯ НЕСКОЛЬКО
             ! НОМЕР  !      !ТОМОВ); НОМЕР СЛЕДУЮЩЕ-
             ! ФАЙЛА  !      !ГО ФАЙЛА УВЕЛИЧИВАЕТСЯ
             !        !      !        НА 1
   ----------!--------!------!-----------------------
         14  ! УРОВЕНЬ!   1  !          1
   ----------!--------!------!-----------------------
    15 - 20  !  ДАТА  !   6  !  0 ИЛИ ПРОБЕЛ, ЕСЛИ
             !СОЗДАНИЯ!      !   ДАТА ОТСУТСТВУЕТ
   ----------!--------!------!-----------------------
    21 - 22  !        !   2  !          0
   ----------!--------!------!-----------------------
         23  !АТРИБУТ !   1  !    0 - ДЛЯ КАССЕТЫ
             ! ЗАПИСИ !      !
   ----------!--------!------!-----------------------
             !   НЕ   !      !
    24 - 29  !ИСПОЛЬ- !   6  !  РЕЗЕРВ ДЛЯ СИСТЕМЫ
             !ЗУЕТСЯ  !      !
   ----------!--------!------!-----------------------
             !   НЕ   !      !
    30 - 32  !ИСПОЛЬ- !   3  !РЕЗЕРВ ДЛЯ ПОЛЬЗОВАТЕЛЯ
             !ЗУЕТСЯ  !      !

        ЕСЛИ ИМЕЕТСЯ ДАТА СОЗДАНИЯ, ТО ОНА ЗАПИСЫВАЕТСЯ В КОДЕ
   КОИ-7 В СЛЕДУЮЩЕМ ВИДЕ:

          - ДЕНЬ (01 - 31);
          - МЕСЯЦ (01 - 12);
          - ДВЕ ПОСЛЕДНИЕ ЦИФРЫ - РАЗНИЦА МЕЖДУ ТЕКУЩИМ  ГОДОМ
            И 1972.

        ДЛИНА БЛОКА ДАННЫХ (ПОЗИЦИИ 11-12) ЗАВИСИТ ОТ  АППАРА-
   ТУРЫ. ПЕРВЫЙ БАЙТ УКАЗЫВАЕТ НИЖНИЙ ПРЕДЕЛ ДЛИНЫ (0), ВТОРОЙ
   БАЙТ - ВЕРХНИЙ ПРЕДЕЛ ДЛИНЫ (200).