 
                              
 
 
        Министерство приборостроения, средств автоматизации
 
                        и систем управления
 
 
 
           
 
               
 
 
 
 
                 Операционная система  МОС ВП
  
              Подсистема системного программиста
  
             ПРОГРАММА ВЫЯВЛЕНИЯ ДЕФЕКТНЫХ БЛОКОВ
 
                     Руководство оператора
 
                       Лист утверждения
 
                     2б.00152-01 34 10-ЛУ
 
                           Листов 2
 
  
  
                    Руководитель темы
 
                           Зам. директора ИНЭУМ
 
                           -----------------Хрущев С.Н.
 
                           "---"------------1987 г.
 
                    Представители предприятия-разработчика:
 
                           Зав. отделом СКБ ВМ 
 
                           -----------------Паулаускас Э.С.
 
                           "---"------------1987 г.
 
                           Инж.-конст. СКБ ВМ 
 
                           -----------------Бартлингене А.К.
 
                           "---"------------1987 г.
 




  
   
    
                         1987
 
        Перв. примен.                             Литера
 
        2б.00152-01
  
 

                             - 2 -
 
                   2б.00152-01 34 10-ЛУ
  
  
 
 
 
 
 
                    Представители ИНЭУМ:
 
                            Ответственный исполнитель темы
 
                            Зав. отделением
 
                            -----------------Остапенко Г.П.
 
                            "---"------------1987 г.
 
                            Нормоконтролер
 
                            -----------------
 
                            "---"------------1987 г.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
  
                              
 
 
   Утвержден
 
   2б.00152-01 34 10-ЛУ
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
                  Операционная система  МОС ВП
   
               Подсистема системного программиста
       
              ПРОГРАММА ВЫЯВЛЕНИЯ ДЕФЕКТНЫХ БЛОКОВ
 
                     Руководство оператора
 
                       2б.00152-01 34 10
 
                          Листов 34/2К
  
  
  
  
    
   
   
 
 
  
  
  
 1K  
 33K  
  
  
  
  
  
  
  
  


  
  
                              1987 
 
     Перв. примен.                              Литера
     2б.00152-01
 
 
 
 
  
 
 
 
 
  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
                  Операционная система  МОС ВП
   
               Подсистема системного программиста
    
              ПРОГРАММА ВЫЯВЛЕНИЯ ДЕФЕКТНЫХ БЛОКОВ
 
                     Руководство оператора
 
                       00152-01 34 10
 
                          Листов 32
  
  
  
  
    
   
   
 
 
  
  
  
  
  
  
  
  
  



  
  
  
  
  
  
                              1987 
 
 
 
 
 
 
 
 
                             - 2 -
 
                         00152-01 34 10
 
 
 
 
 
 
                            АННОТАЦИЯ
 
 
 
 
 
 
 
        Данный документ предназначен для операторов и  систем-
 
   ных программистов. В  документе  содержится  краткий  обзор
 
   возможностей программы выявления  дефектных  блоков  (BAD),
 
   приводится раз'яснения о порядке  использования  программы.
 
   Изложена краткая информация  о  командах  языка  управления
 
   заданиями DCL, которые служат для вызова программы BAD, дан
 
   перечень квалификаторов и ключевых слов, указано, как  выз-
 
   вать программу и как закончить работу с программой BAD, как
 
   управлять выдачей, а также указаны ограничения,  о  которых
 
   пользователь должен быть проинформирован.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
                             - 3 -
 
                         00152-01 34 10
 
 
 
 
 
 
                           СОДЕРЖАНИЕ
 
 
 
 
 
   1.  НАЗНАЧЕНИЕ ПРОГРАММЫ                                  5
 
 
   2.  УСЛОВИЯ ВЫПОЛНЕНИЯ ПРОГРАММЫ                          6
 
 
   2.1.    Вызов программы                                   6
 
   2.2.    Выход из программы                                7
 
 
   3.  ВЫПОЛНЕНИЕ ПРОГРАММЫ                                  8
 
 
   3.1.    Регистрация дефектных блоков                      9
 
   3.1.1.    Расположение   на   диске   файла   для
 
             регистрации дефектных блоков                    9
 
   3.1.2.    Формат      файла      с       адресами
 
             зарегистрированных дефектных блоков            1[6~
 
   3.2.    Использование    программы    BAD    на
 
           устройствах,       формат       которых
 
           преобразован к  формату  устройств,  не
 
           содержащих резервной дорожки                     11
 
   3.3.    Использование    программы    BAD     в
 
           интерактивном режиме с терминала                 13
                                                            
   3.4.    Использование программы  BAD  в  рамках
 
           командных процедур                               14
 
   3.5.    Квалификаторы команды                            15
 
   3.5.1.    Квалификатор /BAD_BLOCKS                       15
 
   3.5.2.    Квалификатор /EXERCISE                         19
 
   3.5.3.    Квалификатор /LOG                              21
 
   3.5.4.    Квалификатор /OUTPUT                           22
 
 
                             - 4 -
 
                         00152-01 34 10
 
 
   3.5.5.    Квалификатор /RETRY                            23
 
   3.5.6.    Квалификатор /SHOW                             24
 
 
   4.  СООБЩННИЕ ОПЕРАТОРУ                                  25
 
 
 
 
                             - 5 -
 
                         00152-01 34 10
 
 
                    1. НАЗНАЧЕНИЕ ПРОГРАММЫ
 
 
 
 
        Программа выявления дефектных блоков предназначена для
 
   обнаружения и регистрации дефектных блоков. Программа  про-
 
   веряет устройства с адресуемыми блоками и записывает адреса
 
   блоков, которые не обеспечивают надежного запоминания  дан-
 
   ных.
 
 
        Программа BAD обнаруживает  дефектные  блоки  на  томе
 
   путем проверки того, насколько успешно один и тот же  набор
 
   данных, записанный ранее в блоки, может быть  вновь  прочи-
 
   тан. Когда программа BAD обнаруживает дефектный  блок,  она
 
   записывает адрес этого блока в файл для  регистрации  прог-
 
   раммно обнаруженных дефектных блоков SDBBF.
 
 
        При использовании программы BAD для проверки устройст-
 
   ва (с использованием квалификатора  /EXERCISE),  необходимо
 
   иметь в виду следующее:                                   
 
 
        - устройство не может быть смонтировано как том в фор-
 
   мате FILES-11;
 
 
        - данное устройство  не  доступно  в  процессе  работы
 
   программы для других программ;
 
 
        - в процессе тестирования с помощью программы BAD  вся
 
   информация, записанная на диск, уничтожается.
 
 
        Не существует способа проверить, имеются  ли  на  томе
 
   дефектные блоки  без  разрушения  содержимого  тома.  Можно
 
   отредактировать записи файла DBBF, не разрушая  содержимого
 
   тома,  используя  квалификаторы  /NOEXERCISE,   /BAD_BLOCKS
 
 
 
                             - 6 -
 
                         00152-01 34 10
 
 
   программы BAD.
 
 
        После того, как программа BAD обнаружит дефектные бло-
 
   ки  и  запишет  их  адреса,  необходимо   набрать   команду
 
   INITIALIZE языка управления заданиями DCL для  того,  чтобы
 
   изменить формат записей на томе и перейти от неструктуриро-
 
   ванного формата к формату FILES-11, а  также  зарегистриро-
 
   вать дефектные блоки на томе в специальном  файле,  который
 
   называется [000000]BADBLK.SYS. Таким образом,  пользователи
 
   будут застрахованы от размещения  их  файлов  на  дефектных
 
   блоках тома.
 
 
 
 
                2. УСЛРВИЯ ВЫПОЛНЕНИЯ ПРОГРАММЫ
 
 
 
 
        Формат команды:
 
 
   ANALYZE/MEDIA   устройство
 
 
        Параметр  команды  устройство  указывает  наименование
 
   устройства, на которое установлен том, который будет прове-
 
   ряться с помощью программы BAD. Имя устройства  указывается
 
   в следующем виде:
 
 
   DDCU:  или логическое-имя
 
 
 
 
 
        2.1. Вызов программы
 
 
         Для вызова прораммы BAD в режиме команд языка управле-
 
   ния заданиями DCL введите команду
 
 
                             - 7 -
 
                         00152-01 34 10
 
 
       ANALYZE/MEDIA
 
 
   вместе  с  необходимыми  параметрами  или  квалификаторами,
 
   которые приведены в табл.1.
 
                                                    Таблица 1
                          Квалификаторы
 
   ----------------------------------------------------------
                                           I  Значение
     Квалификаторы  команды                I по умолчанию
                                           I
   ----------------------------------------------------------
     /BAD_BLOCKS[=(список)]                I Не используется
     /[NO]EXERCISE[=(ключевое слово[,...])]I /NOEXERCISE
     /[NO]LOG                              I /NOLOG
     /OUTPUT[=(файл-спецификация)]         I Не используется
     /[NO]RETRY                            I  /NORETRY
     /SHOW[=(ключевое слово [,...])]       I Не используется
 
 
 
        2.2. Выход из программы
 
 
 
        После вызова программа BAD работает до окончания  про-
 
   верки устройства. По окончании работы программы BAD  управ-
 
   ление передается на уровень команд языка  управления  зада-
 
   ниями DCL.
 
 
 
                             - 8 -
 
                         00152-01 34 10
 
 
                    3. ВЫПОЛНЕНИЕ ПРОГРАММЫ
 
 
 
 
        Можно  переписать  содержимое  файла  для  регистрации
 
   обнаруженных  дефектных  блоков  DETECTED  BAD  BLOCK  FILE
 
   (DBBF) в  выходной  файл,  используя  квалификатор  /OUTPUT
 
   (п.3.5.4).
 
 
        Для исключения доступа к устройству  других  программ,
 
   необходимо  резервировать  устройство  с  помощью   команды
 
   ALLOCATE языка управления заданиями DCL.
 
 
        После  резервирования  устройства,  необходимо  ввести
 
   команду DCL MOUNT, служащую  для  монтирования  устройства,
 
   совместно с квалификатором  /FOREIGN,  чтобы  в  дальнейшем
 
   операционная система не интерпретировала его как том с фор-
 
   матом записи FILES-11. После этого программа BAD  готова  к
 
   работе.
 
 
        Для обнаружения дефектных блоков на томе программа BAD
 
   выполняет следующие действия:
 
 
        - записывает тестовую запись в  каждый  из  блоков  на
 
   диске;
 
 
        - считывает содержимое блока в буфер;
 
 
        - сравнивает содержимое записи с содержанием  тестовой
 
   записи.
 
 
        При обнаружении отличия в данных, блок не пригоден для
 
   надежного хранения данных.
 
 
 
 
 
 
                             - 9 -
 
                         00152-01 34 10
 
 
        3.1. Регистрация дефектных блоков
 
 
 
        Когда программа BAD обнаруживает  дефектный  блок,  то
 
   запоминает адрес дефектного блока. Информация о  последова-
 
   тельно расположенных друг за другом дефектных блоках  запи-
 
   сывается в виде единного входа в случае,  когда  устройство
 
   не содержит резервной дорожки.  По  окончании  тестирования
 
   диска программа BAD записывает адреса  дефектных  блоков  в
 
   область на диске, именуемую файлом для регистрации  дефект-
 
   ных блоков - DETECTED BAD BLOCK FILE (DBBF).
 
 
 
        3.1.1. Расположение   на   диске   файла   для
 
               регистрации дефектных блоков
 
 
 
        Касположение на диске файла для регистрации  дефектных
 
   блоков зависит от того, является ли  тестируемый  том  уст-
 
   ройством, содержащим резервную дорожку, то  есть  устройст-
 
   вом, содержащим более чем 4096 блоков  (блок  содержит  512
 
   байтов).  На  устройствах,  содержащих  резервную  дорожку,
 
   информация о дефектных  блоках  записывается  на  последнюю
 
   дорожку диска.
 
 
        Первая половина дорожки выделяется для файла, содержа-
 
   щего информацию о дефектных блоках, обнаруженных  изготови-
 
   телем - MANUFACTURER'S DETECTED BAD FILE (MDBBF).  В  файле
 
   MDBBF хранится информация о дефектных блоках,  обнаруженных
 
   изготовителем при первоначальном форматировании устройства.
 
 
        Вторая  половина  дорожки  резервируется  для   файла,
 
   содержащего информацию о программно обнаруженных  дефектных
 
   блоках SOFTWARE DETECTED BAD BLOCK FILE (SDBBF).
 
 
                            - 10 -
 
                         00152-01 34 10
 
 
        Устройствами,  не   содержащими   резервной   дорожки,
 
   являются устройства, содержащие 4096 блоков (по 512  байтов
 
   в каждом блоке) или меньше.  На  указанных  устройствах  не
 
   предусмотрено выделение  последней  дорожки  на  диске  для
 
   накопления информации о дефектных  дорожках.  Вместо  этого
 
   программа BAD создает файл DBBF на последнем хорошем  блоке
 
   диска. Для создания программой BAD файла  DBBF  необходимо,
 
   чтобы среди последних 256 блоков на томе имелся по  крайней
 
   мере один надежный блок.
 
 
 
        3.1.2. Формат      файла      с       адресами
 
               зарегистрированных дефектных блоков
 
 
 
        В случае тома, содержащего резервную  дорожку,  каждый
 
   из входов файла DBBF содержит  адрес  цилиндра,  дорожки  и
 
   сектора дефектного блока.
 
 
        На томах, не содержащих резервной дорожки,  каждый  из
 
   входов файла DBBF содержит число, которое на единицу меньше
 
   числа дефектных блоков, а также логический номер дефектного
 
   блока или последовательности дефектных  блоков.  Каждый  из
 
   входов содержит адрес одного  дефектного  блока  или  адрес
 
   нескольких последовательно  расположенных  друг  за  другом
 
   дефектных блоков.
 
 
        Файл DBBF содержит не более, чем 126 входов. В случае,
 
   когда текущий номер дефектного блока превышает  максимально
 
   допустимое число входов файла  при  тестировании  устройств
 
   обоих типов, программа BAD прекращает свою работу  и  печа-
 
   тает сообщение об ошибке. Содержание файла  SDBBF  на  томе
 
   остается без изменений.
 
 
                            - 11 -
 
                         00152-01 34 10
 
 
        3.2. Использование    программы    BAD    на
 
             устройствах,       формат       которых
 
             преобразован к  формату  устройств,  не
 
             содержащих резервной дорожки
 
 
 
        Если используется программа BAD в  режиме  совмещения,
 
   используя для этого квалификатор /OVR  (OVERRIDE  -  отвер-
 
   гать)  на  устройствах,  которые  первоначально  созданы  с
 
   резервной дорожкой, то поверхность этого устройства  разме-
 
   щается  в  формате  устройства,  не  содержащего  резервной
 
   дорожки.
 
 
        Если используется программа BAD в исходном  режиме  на
 
   таких устройствах, то программа  BAD  воспринимает  их  как
 
   устройства, содержащие резервную дорожку и в связи  с  этим
 
   не сможет найти файл MDBSF для регистрации дефектных секто-
 
   ров, обнаруженных изготовителем -  MANUFACTURER'S  DETECTED
 
   BAD SECTOR FILE (MDBSF).
 
 
        Если при вводе команды ANALYZE/MEDIA не  было  попытки
 
   переформатировать поверхность  устройства  (например,  если
 
   использованы квалификаторы /NOEXERCISE /OUTPUT),  то  прог-
 
   рамма BAD после неудачной попытки найти  файл  MDBSF  попы-
 
   тается найти файл для регистрации  программно  обнаруженных
 
   дефектных секторов -  SOFTWARE  DETECTED  BAD  SECTOR  FILE
 
   (SDBSF) и  напечатает  листинг  в  формате  устройства,  не
 
   содержащего резервной дорожки.
 
 
        Если при  вводе  команды  ANALYZE/MEDIA  была  попытка
 
   переформатировать  поверхность  устройства  таким  образом,
 
   чтобы сохранить файл SDBSF (например, используя  квалифика-
 
 
 
                            - 12 -
 
                         00152-01 34 10
 
 
   торы /EXERCISE=KEEP или /NOEXERCISE /BAD_BLOCKS), программа
 
   BAD прекратит свою работу и выведит следующее сообщение:
 
 
   % BAD-F-MDBSFRFAIL. FAILED TO READ THE MANUFACTURER'S
 
     DETECTED BAD SECTOR FILE ON DEVICENAME
 
   (неудачная попытка прочитать файл для регистрации
 
   дефектных секторов, обнаруженных изготовителем
 
   на устройстве).
 
 
        При переформатировании поверхности устройства,  формат
 
   которого уже  преобразован,  защита  файла  SDBSF  окажется
 
   безуспешна. Однако, если не надо сохранить файл SDBSF (нап-
 
   ример, путем использования  квалификатора  /EXERCISE=KEEP),
 
   то программа BAD создаст повторно файлы  MDBSF  и  SDBSF  и
 
   продолжит процедуру тестирования. Например, можно использо-
 
   вать следующие команды для запуска программы  BAD  с  целью
 
   проверки устройства DM1, формат которого преобразован:
 
 
        Пример.
 
 
   $ ANALYZE/MEDIA/OUTPUT=DM1TEST.ANL DM1:
 
   ANALYZE/MEDIA
 
   DM1: (DMA1:).SERIAL NUMBER: 0
 
   SOFTWARE DETECTED BAD BLOCKS
 
   LOGICAL BLOCK NUMBER  COUNT
 
      88308                0
 
   DEVICE DMA1:CONTAINS A TOTAL OF 27126 BLOCKS:
 
                                1 DEFECTIVE BLOCK DETECTED
 
   ANALYZE/MEDIA/EXERCISE/OUTPUT=DM1TEST.ANL DM1:
 
 
 
 
        Устройство DMA1 содержит всего 27126 блоков: обнаружен
 
 
 
                            - 13 -
 
                         00152-01 34 10
 
 
   1 дефектный блок.
 
 
 
        3.3. Использование    программы    BAD     в
 
             интерактивном режиме с терминала
 
 
 
        Использование программы BAD в интерактивном  режиме  с
 
   терминала иллюстрируется примером.
 
 
        Пример.
 
 
   $ ALLOCATE DMA2:
 
   DMA2: ALLOCATED
 
   $ MOUNT/FOREIGN DMA2:
 
   %MOUNT-1-MOUNTED MOUNTED ON DMA2:
 
   $ ANALYZE/MEDIA/EXERCISE DMA2:
 
   $ INITIALIZE DMA2:
 
 
        С помощью команды ALLOCATE заказано распределение спе-
 
   циального  дисковода  с  именем  DMA2.   Ответ  на  команду
 
   ALLOCATE подтверждает, что запрошенное  устройство  успешно
 
   распределено. С помощью команды MOUNT/FOREIGN том на  диске
 
   монтируется как чужой диск. Ответ на команду  MOUNT  указы-
 
   вает на то, что том на устройстве DMA2  смонтирован  успеш-
 
   но. Вызов программы BAD осуществляется  с  помощью  команды
 
   ANALYZE/MEDIA. Указание устройства  DMA2   и  квалификатора
 
   /EXERCISE соответствует тому, что программа BAD будет  ана-
 
   лизировать все блоки тома на диске и фиксировать  дефектные
 
   блоки. Команда INITIALIZE использована  для  преобразования
 
   тома в формат FILES-11 и для  занесения  адресов  дефектных
 
   блоков   в   специальный   файл   на    томе    с    именем
 
   [000000]BADBLK.SYS. После такого распределения эти блоки не
 
 
 
                            - 14 -
 
                         00152-01 34 10
 
 
   могут быть использованы другими файлами.
 
 
 
        3.4. Использование программы  BAD  в  рамках
 
             командных процедур
 
 
 
        Программа BAD может быть вызвана из командной процеду-
 
   ры системы МОС ВП. В примере приведена командная процедура,
 
   названная NEWDISK.COM, которая осуществляет вызов программы
 
   BAD и содержит ряд других команд языка управления заданиями
 
   DCL.
 
 
        Пример.
 
 
   $! эта командная процедура проверяет и инициализирует
 
   $! указанный диск.
 
   $!
 
   $! P1 устройство
 
   $! P2 имя тома
 
   $!
 
   $!
 
   $IF P1 .EQS. ""THEN $ INQUIRE P1 "DEVICE TO BE INITIALIZED"
 
   $IF P2 .EQS. "" THEN $ INQUIRE P2 "VOLUME LABEL"
 
   $ALLOCATE 'P1
 
   $MOUNT/FOREIGN 'P1
 
   $ANALYZE/MEDIA/EXERCISE 'P1
 
   $DISMOUNT/NOUNLOAD 'P1
 
   $INITIALIZE 'P1 'P2
 
   $EXIT
 
 
        Для запуска этой командной процедуры введите следующую
 
   команду в ответ на приглашение ввести команду языка  управ-
 
 
 
                            - 15 -
 
                         00152-01 34 10
 
 
   ления заданиями DCL:
 
 
   @NEWDISK  устройство том-метка
 
 
        Операционная система выполняет команды в том  порядке,
 
   в котором они указаны в командной процедуре.
 
 
 
        3.5. Квалификаторы команды
 
 
 
        Квалификаторы  команды  ANALYZE/MEDIA  представлены  в
 
   алфавитном порядке. При использовании квалификаторов  необ-
 
   ходимо следовать правилам грамматики языка управления зада-
 
   ниями DCL. Можно использовать сокращенное написание  квали-
 
   фикаторов или ключевых слов в случае, если  это  сокращение
 
   не приводит к неоднозначности. Звездочка  и  знак  процента
 
   могут быть использованы в качестве признака  комментария  в
 
   случае, если для этой цели не введены другие обозначения.
 
 
 
        3.5.1. Квалификатор /BAD_BLOCKS
 
 
 
        Квалификатор добавляет обнаруженные дефектные блоки  в
 
   файл DBBF. Если квалификатор /BAD_BLOCKS используется  сов-
 
   местно с квалификатором /EXERCISE, то поверхность устройст-
 
   ва тестируется далее после занесения в файл адресов дефект-
 
   ных блоков.
 
 
        Формат квалификатора:
 
 
        /BAD_BLOCKS список
 
 
        Ключевое слово квалификатора  список  указывает  коды,
 
   которые используются для кодирования адреса дефектного бло-
 
 
 
                            - 16 -
 
                         00152-01 34 10
 
 
   ка и должны быть  занесены  в  файл  DBBF  при  регистрации
 
   дефектного блока. Если не  указано  значение  квалификатора
 
   /BAD_BLOCKS, программа BAD напечатает следующую подсказку:
 
 
        BAD_BLOCKS=
 
 
        После  подсказки  программа  BAD  выдаст  сведения   о
 
   дефектных блоках с дублирующимися адресами. Для прекращения
 
   серии подсказок в сеансе необходимо набрать комбинацию сим-
 
   волов CTRL/Z.
 
 
        Термин "блок" означает стандартную единицу записи дли-
 
   ной в 512 байтов, в то время как термин  "сектор"  означает
 
   физический размер сектора на устройстве, который не  всегда
 
   имеет один и тот же размер для различных устройств.
 
 
        В табл.2 приведены коды для указания положения дефект-
 
   ных блоков. Можно их указать в виде комбинации целых чисел,
 
   либо в виде комбинации чисел в некоторой системе счисления.
 
 
 
                            - 17 -
 
                         00152-01 34 10
 
 
                                                    Таблица  2
 
   -----------------------------------------------------------
 
       Код              I  Значение кода
 
   -----------------------------------------------------------
 
   Лнб                  I  Указывает логический номер    блока
 
                        I  для данного дефектного блока.
 
   Лнб:счетчик          I  Указывает пределы изменения адресов
 
                        I  дефектных блоков,     расположенных
 
                        I  друг за другом, начиная с блока   с
 
                        I  логическим номером лнб   плюс число
 
                        I  дефектных блоков,   равное значению
 
                        I  счетчика.
 
   Сект.дор.цилиндр     I  Указывает      физический     адрес
 
                        I  отдельного дефектного   сектора  на
 
                        I  диске (номер    сектора,   дорожки,
 
                        I  цилиндра). Этот   код  верен только
 
                        I  для   устройств, на которых имеется
 
                        I  резервная дорожка.
 
   Сект.дор.цил:счетчик I  Указывает пределы изменения адресов
 
                        I  дефектных секторов,    начиная    с
 
                        I  указанного физического адреса    на
 
                        I  диске (номер сектора, дорожки     и
 
                        I  цилиндра) плюс   число    дефектных
 
                        I  секторов, равное счетчику.    Такая
 
                        I  кодировка верна лишь для устройств,
 
                        I  содержащих резервную дорожку.
 
 
 
                            - 18 -
 
                         00152-01 34 10
 
 
        Примеры:
 
 
        1. $ ANALYZE/MEDIA/BAD_BLOCKS=(4.4.4:3) DM1:
 
 
        С помощью квалификатора  /BAD_BLOCKS  указаны  пределы
 
   изменения адресов 3 последовательно расположенных дефектных
 
   секторов, начиная с сектора со следующим физическим адресом
 
   на диске: сектор 4, дорожка 4, цилиндр  4.  Эта  последова-
 
   тельность адресов будет занесена в файл DBBF.
 
 
        2. $ ANALYZE/MEDIA/EXERCISE/BAD_BLOCKS=(2) DM1:
 
 
        С помощью команды добавляется адрес дефектного блока в
 
   файл DBBF и  затем  продолжается  тестирование  поверхности
 
   устройства. В этом примере дефектный блок расположен в бло-
 
   ке с логическим номером, равным 2.
 
 
        3. $ ANALYZE/MEDIA/EXERCISE/BAD_BLOCKS DM1:
 
           BAD_BLOCKS = 2:3
 
           BAD_BLOCKS = 4
 
           % BAD-I-DUPBLKNUM. DUPLICATE BLOCK NUMBER 4,
 
                               ALREADY EXISTS IN SDBBF
 
           -BAD-I-SRCLIN, THE SOURCE INPUT ENTRY WAB 4
 
           BAD_BLOCKS=
 
              .
 
              .
 
              .
 
           BAD_BLOCKS= CTRL/Z
 
 
        Программа BAD выводит на экран подсказки,  необходимые
 
   для кодирования дефектных блоков.  Отметим,  что  в  режиме
 
   подсказок программа BAD  сообщает  информацию  о  дефектных
 
   блоках с дублирующимися адресами, обнаруженных при проверке
 
 
                            - 19 -
 
                         00152-01 34 10
 
 
   устройства.
 
 
 
        3.5.2. Квалификатор /EXERCISE
 
 
 
        С помощью этого квалификатора пользователь  указывает,
 
   следует ли  тестировать  поверхность  устройства.  Значение
 
   этого  квалификатора   по   умолчанию   есть   квалификатор
 
   /NOEXERCISE.
 
 
        Формат квалификатора:
 
 
        /EXERCISE [ключевое слово]
 
 
        /NOEXERCISE
 
 
        Совместно  с  квалификатором  /EXERCISE   может   быть
 
   использованы ключевые слова FULL, KEEP, NOKEEP и PATTERN.
 
 
   FULL   - при использовании этого ключевого слова  программа
 
            BAD тестирует  поверхность  устройства,  используя
 
            три тестовых набора символов (нули, единицы и  код
 
            "затруднительный случай") вместо набора "затрудни-
 
            тельный случай", используемого по умолчанию.  Клю-
 
            чевое слово FULL может быть использовано лишь сов-
 
            местно с квалификатором  /EXERCISE.  Отметим,  что
 
            набор символов,  именуемый  "затруднительный  слу-
 
            чай", всегда остается на  тестируемой  поверхности
 
            устройства   при    использовании    квалификатора
 
            /EXERCISE.
 
 
   KEEP   - это ключевое слово  обеспечивает  защиту  текущего
 
            файла  SDBBF.  При   использовании   квалификатора
 
            /NOEXERCISE по умолчанию подразумевается  ключевое
 
 
                            - 20 -
 
                         00152-01 34 10
 
 
            слово KEEP.
 
 
   NOKEEP - при использовании этого ключевого слова  программа
 
            BAD создает новый файл  SDBBF.  При  использовании
 
            квалификатора /NOEXERCISE по умолчанию  подразуме-
 
            вается ключевое слово KEEP. Это ключевое слово  не
 
            может   быть   использовано    с    квалификатором
 
            /NOEXERCISE.
                              
 
   PATTERN= (длинное слово [,...])
 
          - позволяет пользователю указать вид тестового набо-
 
            ра символов, который будет использован в  "затруд-
 
            нительном случае".  Тестовый  набор  данных  может
 
            иметь длину вплоть до восьми машинных слов в  слу-
 
            чае использования десятичного  (%D),  шестнадцате-
 
            ричного (%Х) и  восьмеричного  (%О)  представлений
 
            чисел. По умолчанию используется десятичная систе-
 
            ма счисления.
 
 
        Тестовые наборы символов задаются в виде длинных слов.
 
   Если указаны два или более длинных  слова,  то  они  должны
 
   быть заключены в скобки и разделены запятыми.
 
 
        Примеры:
 
 
        1. $ ANALYZE/MEDIA/EXERCISE=FULL DM1:
 
                                              
        Команда служит для тестирования поверхности устройства
 
   с помощью трех тестовых наборов символов. По умолчанию соз-
 
   дается новый файл SDBBF.
 
 
        2. $ ANALYZE/MEDIA/EXERCISE=KEEP DM1:
 
 
 
 
 
                            - 21 -
 
                         00152-01 34 10
 
 
        Эта команда служит для тестирования  поверхности  уст-
 
   ройства и сохраняет текущий файл SDBBF.
 
 
        3.   $ANALYZE/MEDIA/EXERCISE=PATTERN=-
 
                      (%XFFFFFFFF.%XBADBADBA) DM1:
 
 
        С помощью этой команды определяется  шестнадцатеричный
 
   тестовый набор символов, длина которого равна двум  длинным
 
   словам.
 
 
        4. $ ANALYZE/MEDIA/NOEXERCISE/BAD_BLOCKS DM1:
 
 
        Эта команда позволяет отредактировать  файл  DBBF  без
 
   уничтожения записей на томе.
 
 
 
        3.5.3. Квалификатор /LOG
 
 
 
        Квалификатор указывает, нужно ли направить сообщение о
 
   полном числе дефектных блоков, обнаруженных  программой,  в
 
   файлы SYS$OUTPUT и SYS$ERROR. По умолчанию подразумевается,
 
   что использован квалификатор /NOLOG.
 
 
        Формат квалификатора:
 
 
        /[NO]LOG
 
 
        Пример.
 
 
        $ANALYZE/MEDIA /LOG DMA1:
 
        DEVICE DMA1: CONTAINS A TOTAL OF 27126 BLOKS;
 
                     11 DEFECTIVE BLOKS DETECTED.
 
 
        Устройство DMA1: содержит всего 27126 блоков;  обнару-
 
   жено 11 дефектных блоков.
 
 
 
                            - 22 -
 
                         00152-01 34 10
 
 
        По команде, приведенной в этом примере, подается  зап-
 
   рос программе BAD сообщить полное число  дефектных  блоков,
 
   обнаруженных ею при тестировании устройства с именем DMA1.
 
 
 
        3.5.4. Квалификатор /OUTPUT
 
 
 
        Квалификатор указывает,  требуется  ли  скопировать  в
 
   определенный файл содержимое файла DBBF. Если  опущен  этот
 
   квалификатор, то выходной файл не будет сформирован.
 
 
        Если используется квалификатор /OUTPUT в  сочетании  с
 
   квалификатором /SHOW, то по умолчанию в качестве  ключевого
 
   слова в квалификаторе /SHOW будет использовано слово AFTER.
 
 
        Формат квалификатора:
 
 
        /OUTPUT= [файл-имя]
 
 
        Ключевое слово квалификатора файл-имя определяет  наи-
 
   менование  выходного  файла  записи  результатов   проверки
 
   поверхности устройства. Если указан тип файла и не  указано
 
   его имя, то по умолчанию будет использован  файл  с  именем
 
   ANALYZE. Тип файла по умолчанию - ANL. Если опущено  ключе-
 
   вое слово файл-имя, то результаты тестирования будут  запи-
 
   саны в файл с именем SYS$OUTPUT.
 
 
        Вместо ключевого слова файл-имя можно указать наимено-
 
   вание устройства вывода. В этом случае программа BAD скопи-
 
   рует содержимое файла DBBF, соответствующего данному  тому,
 
   в файл с именем ANALYZE.ANL и направит файл в  очередь  для
 
   вывода через устройство вывода.
 
 
 
 
 
                            - 23 -
 
                         00152-01 34 10
 
 
        Не допускается использование в спецификации файла сим-
 
   волов обобщения.
 
 
        Примеры:
 
 
        1. $ ANALYZE/MEDIA/OUTPUT=BADDBBF.DAT DMA2:
 
 
        По данной команде осуществляется перепись  содержимого
 
   файла    DBBF    с   устройства    DMA2  в  выходной   файл
 
   BADDBBF.DAT. Отметим, что как по умолчанию  подразумевается
 
   квалификатор /NOEXERCISE, то поверхность устройства не под-
 
   вергается тестированию.
 
 
        2. $ ANALYSE/MEDIA/OUTPUT=LPB0: DMA2:
 
 
        По команде, указанной в этом  примере,  осуществляется
 
   перепись содержимого файла DBBF с устройства DMA2  в  файл,
 
   имя которого по умолчанию есть ANALYZE.ANL; этот файл  ста-
 
   вится в очередь  для  вывода  через  печатающее  устройство
 
   LPB0.
 
 
 
        3.5.5. Квалификатор /RETRY
 
 
 
        Квалификатор позволяет драйверу устройства  попытаться
 
   исправить нефатальную ошибку. Квалификатор  /RETRY  исполь-
 
   зуется лишь в  сочетании  с  квалификатором  /EXERCISE.  По
 
   умолчанию этот квалификатор принимает значение /NORETRY.
 
 
        Формат квалификатора:
 
 
        /EXERCISE/NORETRY
 
 
        /EXERCISE/RETRY
 
 
 
 
                            - 24 -
 
                         00152-01 34 10
 
 
        Пример.
 
 
        $ ANALYZE/MEDIA/EXERCISE/RETRY DMA0:
 
 
        По команде, указанной в этом примере, подается команда
 
   драйверу устройства попытаться исправить нефатальную  ошиб-
 
   ку.
 
 
 
        3.5.6. Квалификатор /SHOW
 
 
 
        Квалификатор служит для распечатки  содержимого  блока
 
   DBBF до и/или после тестирования поверхности устройства.
 
 
        Формат квалификатора:
 
 
        /SHOW [=(ключевое слово [,...])]
 
 
        Ключевые слова квалификатора [NO]BEFORE,[NO]AFTER ука-
 
   зывают, следует ли вывести на печать содержимое файла  DBBF
 
   до и/или после проверки поверхности устройства. По  умолча-
 
   нию подразумевается ключевое слово AFTER.
 
 
        Примеры:
 
 
        1. $ ANALYZE/MEDIA/EXERCISE/OUTPUT
 
 
              /SHOW=(BEFORE,AFTER) DMA3:
 
 
        С помощью команды, указанной в этом примере,  содержа-
 
   ние файла DBBF распечатается как до, так и  после  проверки
 
   диска DMA3, при этом выходные данные направляются  на  сво-
 
   бодное устройство вывода с именем SYS$OUTPUT.
 
 
        2. $ ANALYZE/MEDIA/EXERCISE/OUTPUT/SHOW DMA3:
 
 
 
 
                            - 25 -
 
                         00152-01 34 10
 
 
        С помощью команды, указанной в этом примере,  содержа-
 
   ние файла DBBF выводится на печать  только  после  проверки
 
   диска DMA3, при этом данные для распечатки направляется  на
 
   устройство SYS$OUTPUT.
 
 
 
 
                     4. СООБЩЕНИЕ ОПЕРАТОРУ
 
 
 
 
        Программа выявления дефектных блоков формирует сообще-
 
   ния об обнаруженных противоречивых сообщениях в журнале.  В
 
   данном разделе перечислены все сообщения с  об'яснениями  и
 
   рекомендуемыми мерами.
 
 
   ALIGNDISK, 'DEVICE_NAME' CONTAINS AN ALIGNMENT CARTRIDGE
 
 
        Об'яснение:  указанное  устройство  содержит  тестовую
 
   кассету.
 
 
        Действие оператора: заменить эту кассету кассетой  для
 
   данных и перезапустить программу.
 
 
   ASSIGN, ERROR ASSIGNING CHANNEL TO 'DEVICE_NAME'
 
 
        Об'яснение: программе встретилась ошибка  при  попытке
 
   назначить канал для устройства.
 
 
        Действие оператора: изучить соответствующее  сообщение
 
   с целью выяснения проблемы, исправить ошибку  и  перезапус-
 
   тить программу.
 
 
   BBFOVF, BAD BLOCK FILE OVERFLOW ON 'DEVICE_NAME'
 
 
        Об'яснение: это сообщение указывает,  что  в  процессе
 
   анализа носителя, файл SDBSF заполнился. Это могло быть как
 
 
                            - 26 -
 
                         00152-01 34 10
 
 
   результат наличие слишком большого числа дефектных  блоков,
 
   указанных по квалификатору /BAD_BLOCKS, или  как  результат
 
   ненадежного носителя.
 
 
        Действие оператора:  повторно  выполнить  программу  в
 
   режиме ANALYZE/MEDIA без такого количества  дефектных  бло-
 
   ков, введенных по квалификатору /BAD_BLOCKS, или по умолча-
 
   нию в режиме /NOKEEP, при котором происходит  перформирова-
 
   ние файла SDBSF.
 
 
        Действие  программы:  программа  завершает  анализ   и
 
   оставляет файл SDBSF не измененным для данного носителя.
 
 
   BLK0BAD, BLOCK 0 IS BAD, DO NOT USE 'DEVICE_NAME'
 
                AS A SYSTEM DEVICE
 
 
        Об'яснение: нулевой  блок  (0)  на  носителе  является
 
   дефектным.
 
 
        Действие оператора: этот носитель  не  использовать  в
 
   качестве системного, поскольку  нулевой  блок  используется
 
   для хранения программы загрузки.
 
 
        Действие программы: устройство было проанализированно,
 
   содержит корректный файл дефектных  блоков,  и  может  быть
 
   использован для хранения данных.
 
 
   DEVNOTFOR, 'DEVICE_NAME' IS NOT MOUNTED FOREIGN
 
 
        Об'яснение: устройство не смонтировано как чужое.
 
 
        Действие оператора: смонтировать устройство с квалифи-
 
   катором /FOREIGN и перезапустить программу.
 
 
 
 
 
                            - 27 -
 
                         00152-01 34 10
 
 
   DEVRCT, UNABLE TO ANALYZE 'DEVICE_NAME', DUE TO
 
               REVECTOR CACHING
 
 
        Об'яснение: контроллер устройства способен  перевекто-
 
   рировать динамически дефектные блоки, поэтому это устройст-
 
   во всегда может рассматриваться как безупречное.
 
 
        Действие оператора: не анализируется этот носитель.
 
 
   DUPBLKNUM, DUPLICATE BLOCK NUMBER 'DDDDDDDD', ALREADY
 
                  EXISTS IN 'XDBSF'
 
 
        Об'яснение:   номер   блока,   указанный   в    списке
 
   /BAD_BLOCKS, уже записан либо в файл MDBSF, либо в SDBSF.
 
 
        Действие оператора: нет.
 
 
        Действие программы: блок игнорируется и обработка про-
 
   должается.
 
 
   FAO, ERROR FORMATTING REPORT INFORMATION
 
 
        Об'яснение: в процессе выполнения операции  форматиро-
 
   вание FAO была встречена ошибка.
 
 
        Действие  оператора:  запишите  всю  информацию  этого
 
   диагностического сообщения и известите завод-изготовитель.
 
 
   GETDVI, ERROR OBTAINING DEVICE INFORMATION FOR
 
               'DEVICE_NAME'
 
 
        Об'яснение: была получена ошибка при попытке  получить
 
   информацию, касающуюся устройства.
 
 
        Действие оператора: изучить соответствующие диагности-
 
   ческие сообщения, и где следует выполнить корректировку.
 
 
                            - 28 -
 
                         00152-01 34 10
 
 
   GETMSG, ERROR OBTAINING MESSAGE TEXT
 
 
        Об'яснение: была получена ошибка при попытке  получить
 
   текст сообщения.
 
 
        Действие оператора:  скопировать  всю  соответствующую
 
   информацию из сообщения и обратиться к заводу-изготовителю.
 
 
   IVBLKNUM, 'STRING' IS AN INVALID BLOCK NUMBER,
 
                 'POSITION' VALUE DDDDDDDD IS OUT OF RANGE
 
 
        Об'яснение:  номер  блока,  как  он  указан,  является
 
   недействительным из-за значения в поле "POSITION".
 
 
        Действие оператора: откорректировать значение в данном
 
   поле.
 
 
        Действие программы: если программа находится в  режиме
 
   подсказки, то пользователю выдается подсказка  относительно
 
   следующего блока. Если она обрабатывает значение, введенное
 
   в командной строке, то обрабатывается следующее вхождение.
 
 
   LSTTOTBK, DEVICE 'DEVICE' CONTAINS A TOTAL OF 'NUMBER'
 
                 BLOCKS; 'NUMBER' DEFECTIVE BLOCK(S)  DETEKTED
 
 
        Об'яснение: это информационное  сообщение  дает  более
 
   детальные сведения о числе дефектных блоков.
 
 
        Действие оператора: нет.
 
 
   MDBSFCRUPT, MANUFACTURER'S DETECTED BAD SECTOR FILE IS
 
                   CORRUPT ON 'DEVICE_NAME'
 
 
        Об'яснение: информация заголовка в дополнительном фай-
 
   ле MDBSF нарушена.
 
 
 
                            - 29 -
 
                         00152-01 34 10
 
 
        Действие оператора: исследовать носитель.
 
 
        Действие программы: программа BAD прекращает анализ.
 
 
   MDBSFRFAI, FAILED TO READ THE MANUFACTURER DETECTED BAD
 
                  SECTOR FILE ON 'DEVICE_NAME'
 
 
        Об'яснение: эта ошибка может возникнуть  в  результате
 
   любой из следующих причин:
 
 
        - программа BAD  не  смогла  найти  качественный  файл
 
   MDBSF;
 
 
        - программа BAD не смогла заново построить файлы MDBSF
 
   и   SDBSF    из-за    контекста    выполнения,    например,
 
   /EXERCISE=KEEP или /BAD_BLOCKS.
 
 
        - программа BAD не смогла найти  копию  дорожки  файла
 
   SDBSF (перед  копированием  последней  дорожки),  чтобы  ее
 
   вывести   на   дисплей,    из-за    контекста    выполнения
 
   /NOEXERCISE/BAD_BLOCKS/OUTPUT.
 
 
        Действие оператора: повторить запуск программы  BAD  с
 
   надлежащим контекстом выполнения,  чтобы  дать  возможность
 
   этой программе  выдать  на  дисплей  конвертированный  файл
 
   дефектных блоков устройства  без  попытки  модификации  его
 
   содержимого. Заметим, что  устройство  было  конвертировано
 
   посредством команды MCR BAD/OVR.  Не  следует  использовать
 
   квалификатор /BAD_BLOCKS или /EXERCISE=KEEP  или  позволить
 
   программе BAD перезадать заново файлы  дефектных  блоков  с
 
   контекстом выполнения ANALYZE/MEDIA/EXERCISE 'DEVISE', при-
 
   нимаемым по умолчанию. Это подразумевает наличие квалифика-
 
   тора /EXERCISE=NOKEEP и  отсутствие  какой-либо  информации
 
 
 
                            - 30 -
 
                         00152-01 34 10
 
 
   пользователя  о  дефектных  блоках.  Поэтому,  квалификатор
 
   /BAD_BLOCKS указать не следует.
 
 
        Действие программы: программа BAD будет пытаться восс-
 
   тановить и заново построит старый файл MDBSF и файл  SDBSF,
 
   если только контекст выполнения это позволит. Если контекст
 
   препятствует этой операции программы программа BAD  прекра-
 
   щает анализ.
 
 
   NOBADINFO, PO BAD BLOCK INFORMATION AVAILABLE FOR
 
                  'DEVICE_NAME'
 
 
        Об'яснение: устройство, которое не является  устройст-
 
   вом последней дорожки, не содержит файла дефектных блоков.
 
 
        Действие оператора: нет.
 
 
        Действие программы: программа создает новый файл SDBSF
 
   в формате не последней дорожки.
 
 
   NOOUTQUAL, THE /SHOW QUALIFIER IS INVALID WITHOUT
 
                  SPECIFING THE /OUTRUT QUALIFIER
 
 
        Об'яснение: квалификатор /SHOW был указан без указания
 
   квалификатора /OUTPUT.
 
 
        Действие оператора:  в  команде  указать  квалификатор
 
   /OUTPUT вместе с квалификатором /SHOW.
 
 
   REBLDWARN, INSUFFICIENT NUMER OF BAD SECTOR FILES
 
                  WRITTEN TO 'DEVICE-NAME'
 
 
        Об'яснение: когда программа BAD пыталась заново  пост-
 
   роить файл MDBSF (файл дефектных блоков, обнаруженных изго-
 
   товителем) и SDBSF  (файл  дефектных  блоков,  обнаруженных
 
 
                            - 31 -
 
                         00152-01 34 10
 
 
   программными средствами) на последней  дорожке  устройства,
 
   то ей удалось успешно записать  только  половину  последней
 
   дорожки или меньше. Это говорит о том, что  носитель  может
 
   быть ненадежным.
 
 
        Действие  оператора:  следует  произвести  техническое
 
   обслуживание носителя (или  устройства),  чтобы  обеспечить
 
   его надежность и целостность данных.
 
 
        Действие программы: продолжает анализировать  носитель
 
   на предмет обнаружения дефектов на его поверхности.
 
 
   SDBSFFULL, SOFTWARE DETECTED BAD SECTOR FILE IS FULL
 
                  ON 'DEVICE_NAME'
 
 
        Об'яснение: программа BAD обнаружила файл SDBSF, одна-
 
   ко он был уже полон.
 
 
        Действие оператора: повторить запуск программы BAD, не
 
   задавая никакого контекста выполнения, который мог бы вызы-
 
   вать попытку  программы  сохранить  файл  SDBSF.  Например,
 
   пользователь может указать квалификатор /EXERCISE=NOKEEP.
 
 
        Действие программы: программа после выдачи сообщения о
 
   том, что файл SDBSF полон, прекратит анализ.
 
 
   SDBSFRFAIL, FAILED TO READ THE SOFTWARE DETECTED BAD
 
                   SECTOR FILE ON 'DEVICE_NAME'
 
 
        Об'яснение: программа не смогла найти полноценный файл
 
   SDBSF.
 
 
        Действие оператора: следует избегать любого  контекста
 
   выполнения, при котором делается попытка получить или  пре-
 
 
 
                            - 32 -
 
                         00152-01 34 10
 
 
   дохранить файл SDBSF.  Попытка  предохранения  файла  SDBSF
 
   делается при использовании для программы BAD следующих ква-
 
   лификаторов:          /BAD_BLOCKS,          /EXERCISE=KEEP,
 
   /OUTPUT/SHOW=BEFORE. Следует  использовать  такой  контекст
 
   выполнения программы BAD, который вызывает создание  заново
 
   файла SDBSF этой программы, например, /EXERCISE
 
 
        Действие программы: по выявлению,  что  не  существует
 
   файла SDBSF, программа BAD заканчивает анализ.
 
 
   SRCLIN, THE SOURCE INPUT ENTRY WAS 'STRING'
 
 
        Об'яснение:  это  сообщение   связано   с   сообщением
 
   DUPBLKNUM и выводит  ту  часть  командной  строки,  которая
 
   содержит ошибку.
 
 
        Действие оператора: нет.
 
 
        Действие программы: дублируемый блок игнорируется.
 
 
 
 
 
 
 
 
  
                         - 33K -

                      00152-01 34 10

  
    ------------------------------------------------------------
    I                                                          I
    I                  Лист регистрации изменений              I
    I                                                          I
    I----------------------------------------------------------I
    IНомера листов (страниц)IВсего IN     IВходящий IПодп.IДатаI
    I-----------------------IлистовIдоку- IN сопро- I     I    I
    IИ IИз- IЗа- IНо- IАнну-I(стра-Iмента Iводитель-I     I    I
    Iз Iме- Iме- Iвых Iлиро-Iниц   I      Iного до- I     I    I
    Iм Iнен-Iнен-I    Iван- Iв до- I      Iкум. И   I     I    I
    I. Iных Iных I    Iных  Iкум.  I      Iдата     I     I    I
    I----------------------------------------------------------I
    I  I    I    I    I     I      I      I         I     I    I
    I  I    I    I    I     I      I      I         I     I    I
    I  I    I    I    I     I      I      I         I     I    I
    I  I    I    I    I     I      I      I         I     I    I
    I  I    I    I    I     I      I      I         I     I    I
    I  I    I    I    I     I      I      I         I     I    I
    I  I    I    I    I     I      I      I         I     I    I
    I  I    I    I    I     I      I      I         I     I    I
    I  I    I    I    I     I      I      I         I     I    I
    I  I    I    I    I     I      I      I         I     I    I
    I  I    I    I    I     I      I      I         I     I    I
    I  I    I    I    I     I      I      I         I     I    I
    I  I    I    I    I     I      I      I         I     I    I
    I  I    I    I    I     I      I      I         I     I    I
    I  I    I    I    I     I      I      I         I     I    I
    I  I    I    I    I     I      I      I         I     I    I
    I  I    I    I    I     I      I      I         I     I    I
    I  I    I    I    I     I      I      I         I     I    I
    I  I    I    I    I     I      I      I         I     I    I
    I  I    I    I    I     I      I      I         I     I    I
    I  I    I    I    I     I      I      I         I     I    I
    I  I    I    I    I     I      I      I         I     I    I
    I  I    I    I    I     I      I      I         I     I    I
    I  I    I    I    I     I      I      I         I     I    I
    I  I    I    I    I     I      I      I         I     I    I
    I  I    I    I    I     I      I      I         I     I    I
    I  I    I    I    I     I      I      I         I     I    I
    I  I    I    I    I     I      I      I         I     I    I
    I  I    I    I    I     I      I      I         I     I    I
    I  I    I    I    I     I      I      I         I     I    I
    I  I    I    I    I     I      I      I         I     I    I
    I  I    I    I    I     I      I      I         I     I    I
    I  I    I    I    I     I      I      I         I     I    I
    I  I    I    I    I     I      I      I         I     I    I
    I  I    I    I    I     I      I      I         I     I    I
    I  I    I    I    I     I      I      I         I     I    I
    I  I    I    I    I     I      I      I         I     I    I
    I  I    I    I    I     I      I      I         I     I    I
    I  I    I    I    I     I      I      I         I     I    I
    I  I    I    I    I     I      I      I         I     I    I
    I  I    I    I    I     I      I      I         I     I    I
    I  I    I    I    I     I      I      I         I     I    I
    I  I    I    I    I     I      I      I         I     I    I
    I  I    I    I    I     I      I      I         I     I    I
    I  I    I    I    I     I      I      I         I     I    I
    I  I    I    I    I     I      I      I         I     I    I
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!