


    Министерство приборостроения, средств автоматизации

                   и систем управления









               Операционная система МОС ВП


           ПОДСИСТЕМА РЕЖИМА СОВМЕСТИМОСТИ С ОС РВ

                 Руководство пользователя


                    Лист утверждения

                 2б.00152-01 92 08-ЛУ

                        Листов 2



                 Руководитель темы

                        Зам. директора ИНЭУМ

                        _______________ Хрущев С.Н.

                        "___"__________ 1987 г.

                 Представители предприятия-разработчика

                        Зав. отделом КФ ИПИ АН СССР

                        _______________ Штильман Л.Ф.

                        "___"__________ 1987 г.

                        Научный сотрудник КФ ИПИ АН СССР

                        _______________ Рытвинская М.С.

                        "___"__________ 1987 г.





Перв. примен.           1987                  Литера

2б.00152-01


                          - 2 -


                 Представители ИНЭУМ

                        Ответственный исполнитель темы

                        Зав. отделением

                        _______________ Остапенко Г.П.

                        Нормоконтроллер

                        _______________ Скворцов В.А.

                        "___"__________ 1987 г.












Утвержден

2б.00152-01 92 08 ЛУ












               Операционная система МОС ВП


          ПОДСИСТЕМА РЕЖИМА СОВМЕСТИМОСТИ С ОС РВ


                Руководство пользователя

                   2б.00152-01 92 08

                     Листов 231/4K




























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
















         


               Операционная система МОС ВП

          ПОДСИСТЕМА РЕЖИМА СОВМЕСТИМОСТИ С ОС РВ

                Руководство пользователя

                   00152-01 92 08

                     Листов 227

























                           1987




                          - 2 -

                      00152-01 92 08


                   АННОТАЦИЯ



     Руководство пользователя подсистемы режима  совмести-

мости содержит информацию,  необходимую  программисту  при

организации выполнения задач ОС РВ в операционной  системе

МОС ВП. Под системой ОС РВ в данном руководстве понимается

система ОС РВ 3 (все ее редакции).

     В руководстве дано определение  режима  совместимости

СМ 1700, описание базовых понятий МОС ВП, таких  как  про-

цесс и образ, и их взаимосвязь с задачей  ОС  РВ.  Большое

внимание уделено использованию системы ввода-вывода МОС ВП

для выполнения операций ввода-вывода образом ОС РВ, а так-

же  рассмотрены  ограничения,  накладываемые  операционной

системой МОС ВП на директивы управляющей программы ОС  РВ.

приведено описание директивы разбора спецификаций  файлов,

расширяющей возможности ОС РВ.


                          - 3 -

                      00152-01 92 08


                    СОДЕРЖАНИЕ



1.       Общие сведения о режиме совместимости..........10

1.1.     Совместимость СМ 1700 с моделями М16-СМ........12

1.2.     Совместимость МОС ВП с ОС РВ...................13

1.3.     Вызов директив ОС РВ...........................14

1.4.     Реализация возможностей управления памятью

         системы ОС РВ в системе МОС ВП.................15

1.5.     Эмуляция инструкций плавающей арифметики.......16

1.6.     Системные понятия МОС ВП.......................17

1.7.     Различие среды МОС ВП и ОС РВ..................19

2.       Среда системы МОС ВП...........................21

2.1.     Привилегии.....................................21

2.2.     Защита по UIC..................................21

2.3.     Лимиты использования ресурсов..................23

2.4.     Имена процессов................................24

2.5.     Кластеры флагов событий........................26

2.6.     Системные коды завершения......................29

2.7.     Управление памятью.............................30

2.7.1.   Балансный набор и рабочий набор................30

2.7.2.   Функции планировщика памяти....................31

2.7.3.   Функции программы обмена страниц...............32

2.8.     Системные события..............................33

2.9.     Системные часы.................................33

2.10.    ПрограмMные приоритеты.........................34

2.11.    Глобальные секции..............................34

2.12.    Состояние спячки...............................37

2.13.    Завершение образа..............................38

2.13.1.  Нормальное завершение..........................38

2.13.2.  Аварийное завершение...........................39


                          - 4 -            6+

                      00152-01 92 08


2.14.    Разбор спецификаций файлов.....................42

2.15.    Ввод-вывод в системе МОС ВП....................43

3.       Система ввода-вывода МОС ВП....................45

3.1.     Система управления данными МОС ВП..............45

3.2.     Программы  системного   обслуживания

         ввода-вывода...................................47

3.2.1.   Программы системного обслуживания ASSIGN

         (назначить канал ввода-вывода).................47

3.2.2.   Программы системного обслуживания QIO

         (поставить в очередь запрос ввода-вывода)......48

3.2.3.   Программа системного обслуживания CREMBX

         (создать почтовый ящик и назначить канал)......49

3.2.4.   Дополнительные  программы системного

         обслуживания ввода-вывода......................50

3.3.     Драйверы ввода-вывода и ACP....................51

3.4.     Интерфейс  между  образом ОС РВ и системой

         ввода-вывода  МОС ВП...........................52

3.5.     Назначение устройства..........................53

3.6.     Отображение имени устройства...................54

3.6.1.   Отображение имен псевдоустройств...............56

3.6.2.   Имя псевдоустройства LB и скрытые устройства...57

3.7.     Обработка кодов функций QIO....................59

3.8.     Почтовые ящики.................................59

3.8.1.   Почтовые ящики для директив посылки  и

         получения данных...............................60

3.8.2.   Ввод-вывод в почтовые ящики....................61

3.9.     Функции ACP....................................62

3.10.    Устройства, обслуживаемые через спул...........62

3.10.1.  Эмуляция возможностей спула системы FCS........63

4.       Oписание директив..............................65


                          - 5 -

                      00152-01 92 08


4.1.     Обработка директив в МОС ВП....................65

4.2.     Описание системных директив....................72

4.2.1.   Директива ABRT$ (аварийно завершить задачу)....73

4.2.2.   Директива ALTP$ (изменить приоритет задачи)....75

4.2.3.   Директива ALUN$ (назначить логический номер

         устройства)....................................75

4.2.4.   Директива ASTX$S (выход  из  программы

         обслуживания AST)..............................77

4.2.5.   Директива CLEF$ (очистить флаг)................78

4.2.6.   Директива CMKT$  (отменить   запросы

         директивы MRKT$)...............................80

4.2.7.   Директива CRGF$ (создать   групповые

         глобальные флаги)..............................80

4.2.8.   Директива CSRQ$ (отменить требования запуска

         задачи по времени).............................82

4.2.9.   Директива DECL$S (об'явить важное событие).....83

4.2.10.  Директива DSAR$S (или IHAR$S) (запретить

         распознавание AST).............................84

4.2.11.  Директива DSCP$S (запретить  выгружаемость

         задачи)........................................85

4.2.12.  Директива ELGF$  (уничтожить  групповые

         глобальные флаги)..............................86

4.2.13.  Директива   ENAR$S   (разрешить

         распознавание AST).............................87

4.2.14.  Директива ENCP$S (разрешить выгружаемость

         задачи)........................................88

4.2.15.  Директива EXIF$ (завершить задачу, если).......89

4.2.16.  Директива EXIT$S (завершить задачу)............90

4.2.17.  Директива EXST$ (завершить задачу  и  выдать

         состояние).....................................91


                          - 6 -

                      00152-01 92 08


4.2.18.  Директива EXTK$ (расширить память задачи)......91

4.2.19.  Директива  GLUN$  (дать информацию  об

         устройстве с заданным логическим номером)......93

4.2.20.  Директива GMCR$ (дать командную строку)........95

4.2.21.  Директива GPRT$ (дать параметры раздела).......98

4.2.22.  Директива GTIM$ (дать параметры времени).......99

4.2.23.  Директива GTSK$ (дать параметры задачи).......100

4.2.24.  Директива  MRKT$ (об'явить важное событие

         через таймерный интервал).....................101

4.2.25.  Директива QIO$ (поставить в очередь запрос

         ввода-вывода).................................104

4.2.26.  Директива QIOW$ (поставить в очередь запрос

         ввода-вывода и ждать).........................106

4.2.27.  Директива RCST$ (получить данные  или

         остановить задачу)............................108

4.2.28.  Директива RCVD$ (получить данные).............111

4.2.29.  Директива RCVX$ (получить данные или выйти)...112

4.2.30.  Директива RDAF$ (считать все флаги)...........114

4.2.31.  Директива RDXF$ (считать расширенные флаги)...116

4.2.32.  Директива RQST$ (запустить задачу)............117

4.2.33.  Директива RSUM$ (возобновить задачу)..........119

4.2.34.  Директива RUN$ (запустить задачу в указанное

         время)........................................121

4.2.35.  Директива SDAT$ (послать данные)..............124

4.2.36.  Директива SETF$ (установить флаг).............126

4.2.37.  Директива SFPA$ (AST по ошибкам команд с

         плавающей точкой).............................127

4.2.38.  Директива SPND$S (приостановить задачу).......129

4.2.39.  Директива SPRA$ (AST по восстановлению

         питания)......................................130


                          - 7 -

                      00152-01 92 08


4.2.40.  Директива SPWN$ (породить задачу).............132

4.2.41.  Директива SRDA$ (AST по получению данных).....134

4.2.42.  Директива STLO$ (остановить задачу до

         установки диз'юнкции флагов)..................137

4.2.43.  Директива STOP$S (остановить задачу)..........138

4.2.44.  Директива STSE$ (остановить задачу  до

         установки единичного флага)...................140

4.2.45.  Директива SVDB$ (задать таблицу SST-векторов

         для отладочных средств).......................141

4.2.46.  Директива SVTK$ (задать таблицу  SST-векторов

         для задачи)...................................143

4.2.47.  Директива USTP$ (вывести задачу из останова)..144

4.2.48.  Директива WSIG$S (ждать важное событие).......147

4.2.49.  Директива WTLO$ (ждать диз'юнкцию флагов).....147

4.2.50.  Директива WTSE$ (ждать единичный флаг)........149

5.       Драйверы ввода-вывода.........................150

5.1.     Устройства, поддерживаемые системой МОС ВП....151

5.2.     Директива GLUN$...............................152

5.3.     Стандартные функции ввода-вывода..............152

5.3.1.   Функции присоединения/отсоединения устройства

         ввода-вывода (IO.ATT и IO.DET)................152

5.3.2.   Функция отмены запросов ввода-вывода (IO.KIL).154

5.4.     Блок состояния ввода-вывода и коды завершения.154

5.5.     Драйверы устройств............................155

5.6.     Терминальный драйвер..........................156

5.6.1.   Функция IO.ATT................................157

5.6.1.1. Функции IO.ATT!TF.AST и IO.ATA................158

5.6.1.2. Функция IO.ATT!TF.ESQ.........................158

5.6.2.   Функция IO.DET................................159

5.6.3.   Функция IO.KIL................................159


                          - 8 -

                      00152-01 92 08


5.6.4.   Функции IO.RLB, IO.RAL, IO.RNE, IO.RST   и

         IO.RTT........................................159

5.6.4.1. Функции IO.RLB!TF.RAL и IO.RAL................160

5.6.4.2. Функции IO.RLB!TF.RNE и IO.RNE................161

5.6.4.3. Функции IO.RLB!TF.RST и IO.RST................162

5.6.4.4. Функции IO.RLB!TF.RTT и IO.RTT................162

5.6.5.   Функция IO.RPR................................162

5.6.5.1. Функция IO.RPR!TF.XOF.........................163

5.6.6.   Функция IO.RVB................................163

5.6.7.   Функция IO.RPB................................164

5.6.8.   Функции IO.WLB, IO.CCO и IO.WBT...............164

5.6.8.1. Функции IO.WLB!TF.CCO и IO.CCO................164

5.6.8.2. Функции IO.WLB!TF.WBT и IO.WBT................164

5.6.9.   Функция IO.WVB................................165

5.6.9.1. Функции IO.WLB!TF.WAL, IO.WAL и IO.CCO!TF.WAL.165

5.6.10.  Функция IO.WPB................................166

5.6.11.  Функция IO.GTS................................166

5.6.12.  Функция SF.GMC................................166

5.6.13.  Функция SF.SMC................................167

5.6.14.  Коды завершения операции терминального чтения.167

5.7.     Драйвер считывателя с перфокарт...............169

5.8.     Пустое устройство.............................169

5.9.     Файловые процессы дисков и магнитных лент.....170

5.9.1.   Параметры запросов к ACP в ОС РВ и МОС ВП.....173

5.9.2.   Функция IO.CRE................................175

5.9.3.   Функция IO.DEL................................176

5.9.4.   Функция IO.ACR................................177

5.9.5.   Функции IO.ACW и IO.ACE.......................177

5.9.6.   Функция IO.DAC................................178

5.9.7.   Функция IO.EXT................................178


                          - 9 -

                      00152-01 92 08


5.9.8.   Функция IO.WAT................................179

5.9.9.   Функция IO.RAT................................179

5.9.10.  Функция IO.FNA................................180

5.9.11.  Функция IO.RNA................................181

5.9.12.  Функция IO.ENA................................182

5.9.13.  Функция IO.APC................................183

Приложение 1. Набор инструкций режима совместимости

              СМ 1700..................................184

Приложение 2. Директива разбора........................186

Приложение 3. Интерфейс между образом ОС РВ и системой

              ввода-вывода МОС ВП......................192

Приложение 4. Коды завершения ввода-вывода.............193

Приложение 5. Соответствие кодов функций и параметров

              для стандартных устройств................204

Приложение 6. Соответствие кодов функций и параметров

              для терминалов...........................217

Перечень ссылочных документов..........................227


                          - 9K -

                    2б.00152-01 92 08


5.9.8.   Функция IO.WAT................................179

5.9.9.   Функция IO.RAT................................179

5.9.10.  Функция IO.FNA................................180

5.9.11.  Функция IO.RNA................................181

5.9.12.  Функция IO.ENA................................182

5.9.13.  Функция IO.APC................................183

Приложение 1. Набор инструкций режима совместимости

              СМ 1700..................................184

Приложение 2. Директива разбора........................186

1.   Режимы разбора....................................186

1.1. Нормальный режим разбора..........................187

1.2. Режим устройства..................................188

1.3. Режим использования блока имени файла по

     умолчанию.........................................188

1.4. Режим СУД.........................................189

1.5. Вызов директивы и форматы DPB.....................189

Приложение 3. Интерфейс между образом ОС РВ и системой

              ввода-вывода МОС ВП......................192

Приложение 4. Коды завершения ввода-вывода.............193

Приложение 5. Соответствие кодов функций и параметров
                                                          
              для стандартных устройств................204

Приложение 6. Соответствие кодов функций и параметров

              для терминалов...........................217

Перечень ссылочных документов.........................227K


                          - 10 -

                      00152-01 92 08


         1. Общие сведения о режиме совместимости



     Режим совместимости - это состояние процессора, кото-

рое позволяет выполнять  программы  для  16-битных моделей

СМ ЭВМ (М16-СМ) на процессоре СМ 1700. Чтобы программа вы-

полнялась в режиме совместимости, необходимо удовлетворить

ее потребности на двух уровнях:

    1) на уровне набора инструкций оборудования;

    2) на уровне программного  интерфейса  с  операционной

системой.

     На уровне оборудования процессор  СМ  1700  выполняет

набор  инструкций,  который  совместим   с   подмножеством

инструкций M16-СМ. Этот набор инструкций потенциально поз-

воляет выполнить любую пользовательскую программу для  мо-

делей М16-СМ на СМ 1700 под управлением операционной  сис-

темы МОС ВП.

     Кроме того, МОС ВП дополняет подмножество  инструкций

моделей М16-СМ, которое может быть использовано  в  режиме

совместимости, программно эмулируемыми  инструкциями  про-

цессора с плавающей точкой (FPP). Инструкции  с  плавающей

точкой СМ 4 (FIS) и инструкции расширителя арифметики СМ 3

(EAE) не эмулируются.

     Соответственно  двум  наборам  инструкций  процессора

СМ 1700 работает в двух базовых режимах: основном режиме и

режиме совместимости. В основном режиме процессор выполня-

ет инструкции собственного набора; в режиме  совместимости

он выполняет инструкции моделей М16-СМ. Программное  обес-

печение управляет режимами процессора. Когда программа го-

това к выполнению в режиме совместимости, МОС  ВП,  прежде

чем передать управление программе, переводит  процессор  в


                          - 11 -

                      00152-01 92 08


режим совместимости. Эти действия  системы  прозрачны  для

пользователя.

     Если образ задачи OC PB, выполняющийся в режиме  сов-
                                 
местимости, пытается связаться с операционной системой, то

генерируется аппаратное прерывание. Прерывания этого  типа

являются средством, с  помощью которого процессор извещает

мос вп о запросе  на эмуляцию  среды  операционной системы

ОС РВ. Прерывание, возникшее в режиме совместимости, авто-

матически переводит процессор в основной режим.

     Работая в основном режиме, МОС ВП эмулирует интерфейс

"задача - система ОС РВ". Перед тем, как вернуть  управле-

ние задаче, МОС ВП снова устанавливает процессор  в  режим

совместимости.

     Например, задачи в ОС РВ для обращения к операционной

системе используют инструкцию EMT 377.  Попытка  выполнить

эту инструкцию на оборудовании СМ 1700 приводит к прерыва-

нию. По этому прерыванию МОС ВП эмулирует требуемое обслу-

живание в основном режиме, затем переводит процессор в ре-

жим совместимости и возвращает управление  задаче.  Задача

продолжает свое выполнение в режиме совместимости.

     Режим совместимости системы  МОС  ВП  позволяет  осу-

ществлять  перенос образов  задач  из операционной системы

ос рв в систему МОС ВП, а также  создавать  образы  задач,

которые могут выполняться в ОС РВ на моделях М16-СМ [1,2].

режим совместимости позволяет пользователю  выполнять  су-

ществующие образы задач, полностью  используя  возможности

МОС ВП.

     Программы в режиме совместимости, требующие  эмуляции

инструкций плавающей арифметики, выполняются под  управле-

нием МОС ВП в СМ 1700 медленнее, чем на СМ 1420. Программы


                          - 12 -

                      00152-01 92 08


в режиме совместимости, не требующие  эмуляции  инструкций

плавающей арифметики, выполняются под  управлением МОС  ВП

быстрее, чем в системе, для которой они написаны.

     В режиме совместимости могут выполняться образы  неп-

ривилегированных задач системы ОС РВ. Большинство  образов

непривилегированных задач ОС РВ не требует  модификаций  и

перекомпоновки. Однако, в некоторых случаях задачи  должны

быть построены заново. Для изменения задач ОС РВ, выполня-

емых в режиме совместимости, МОС ВП обеспечивает  выполне-

ние в режиме совместимости таких компонентов  ОС  РВ,  как

МАКРОАССЕМБЛЕР и построитель задач.

     Чтобы образ задачи ОС РВ успешно выполнился в системе

МОС ВП, необходимо придерживаться требований,  пред'являе-

мых к работе в режиме совместимости оборудования СМ 1700 и

системы МОС ВП.



     1.1. Совместимость СМ 1700 с моделями М16-СМ



     Режим совместимости СМ 1700 поддерживает работу  про-

цессоров моделей М16-СМ в пользовательском  режиме.  Иными

словами, любая программа, написанная для моделей М16-СМ  и

работающая только в пользовательском режиме М16-СМ, потен-

циально  может  выполняться   в  режиме  совместимости  на

СМ 1700.
                                                
     Любая инструкция  или  операция,  не  допустимая  для

программы в пользовательском режиме М16-СМ, не допустима и

в режиме совместимости  СМ  1700.  Например,  попытка  ис-

пользовать такие привилегированные инструкции, как HALT  и

RESET, вызывает прерывание в МОС ВП и вывод  соответствую-

щего сообщения об ошибке.


                          - 13 -

                      00152-01 92 08


     Набор инструкций режима совместимости СМ 15+0 не  со-

держит инструкций плавающей арифметики FIS и FPP, но  сис-

тема МОС ВП эмулирует инструкции FPP. В приложении 1 пере-

числены все инструкции  режима  совместимости  СМ  1700  .

     МОС ВП  накладывает  дополнительные  условия  на  ис-

пользование оборудования образами задач ОС РВ, выполняющи-

мися в режиме совместимости.



     1.2. Совместимость МОС ВП с ОС РВ



     МОС ВП позволяет выполнять образы задач  ОС  РВ.  Для

выполнения образа задачи  в  режиме  совместимости  задача

должна удовлетворять следующим требованиям:

     1) должна придерживаться требований, пред'являемых  к

оборудованию при работе в режиме совместимости;

     2) должна быть построена построителем  задач  ОС  РВ,

либо построителем задач, вызываемым в системе  МОС  ВП  по

команде DCL LINK/DOS интерпретатора  DCL;

     3) должна быть выполнимой в системе ОС РВ с диспетче-

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

многопользовательские задачи. Такие задачи не могут выпол-

няться в ОС РВ;

     4) не должна использовать возможности ОС РВ, не  под-

держиваемые в системе МОС ВП, такие как разделы, директивы

управления памятью, важные события;

     5) должна выполняться в соответствии с правилами вза-

имодействия задачи и  управляющей  программы  ОС  РВ.  Она

должна   быть  непривилегированной,  т.е.  ее  виртуальное

пространство не должно отображаться в пространство  управ-

ляющей  программы  ОС РВ,  поскольку управляющей программы


                          - 14 -

                      00152-01 92 08


ОС РВ нет в системе МОС ВП;

     6) не должна отображаться во внешнюю страницу памяти,

поскольку внешней страницы памяти моделей М16-СМ в аппара-

туре СМ 1700 нет;

     7) не должна зависеть от  устройства  управления  па-

мятью, обеспечивающего разбиение памяти на 32-словные бло-

ки;

     8) не должна использовать сетевые функции.

     Образы задач ОС РВ не должны зависеть от  таких  воз-

можностей управления памятью, которые доступны только при-

вилегированным задачам ОС РВ. Однако, задачи могут  выпол-

нять привилегированные функции, не связанные с отображени-

ем в управляющую программу. Например, задача, выполняющая-

ся в режиме совместимости, может использовать коды функций

QIO IO.RLB и IO.WLB для чтения и записи непосредственно на

монтированный том, если администратор системы не  запретил

пользователю выполнять эти операции.

     Образы задач ОС РВ нужно перестраивать перед выполне-

нием  в  МОС  ВП  только  в  случае, если требуется внести

какие-либо  изменения  в  программу или изменить параметры

построителя задач. Задача  должна  быть  построена  заново

также  в  том  случае,  когда  необходимо  воспользоваться

расширением  логических  имен  системы  управления файлами

(FCS) и системы управления данными (СУД), которое позволя-

ет обрабатывать спецификации  файлов МОС ВП.



     1.3. Вызов директив ОС РВ



     В ОС РВ образ задачи связывается с операционной  сис-

темой при помощи директив. В результате  вызова  директивы


                          - 15 -

                      00152-01 92 08


система ОС РВ выполняет требуемую функцию и возвращает уп-

равление задаче. МОС ВП эмулирует этот интерфейс "задача -

система". Когда образ задачи ОС РВ вызывает директиву, ге-

нерируется аппаратное  прерывание,  передающее  управление

МОС ВП. Эмуляция требуемой функции ОС РВ может иметь  один

из следующих исходов:

     1) МОС ВП эмулирует функцию директивы ОС РВ, и  образ

задачи продолжает выполнение;

     2) МОС ВП не может эмулировать требуемую функцию,  но

предпринимает шаги, которые необходимы для продолжения вы-

полнения задачи.

     Мос вп эмулирует функции большинства директив ОС  РВ.

если МОС ВП не может эмулировать директиву ОС РВ, то при-

чиной этого являются различия в базовых понятиях двух сис-

тем, которые об'ясняются различиями среды этих  двух  сис-

тем.

     Например, в МОС ВП нельзя об'являть  важное  событие.

поэтому, когда происходит вызов такой директивы, МОС ВП не

выполняет никаких действий и передает код успешного завер-

шения в издавший директиву образ задачи, после чего  зада-

ча продолжает выполнение.



     1.4. Реализация возможностей управления памятью

системы ОС РВ в системе МОС ВП



     МОС ВП допускает использование в образах задач  ОС РВ

перекрытий, создаваемых с помощью языка описания  перекры-

тий построителем задач ОС РВ. МОС ВП загружает  перекрытия

из файла образа во время выполнения образа.

     МОС ВП допускает также использование разделяемых рай-


                          - 16 -

                      00152-01 92 08


онов образами задач ОС РВ; образы могут иметь доступ  и  к

разделяемым общим районам, и  к  разделяемым  библиотекам.

Постоянно доступные разделяемые районы задаются для систе-

мы МОС ВП администратором системы  [3].  Временные  районы

динамически загружаются во время выполнения образа задачи,

запросившего их.

     Кроме того, МОС ВП поддерживает многопользовательские

(разделяемые) образы задач.  Если  при  построении  задачи

указывается, что образ задачи должен содержать разделяемую

и неразделяемую секции, МОС ВП разрешает  иметь  доступ  к

разделяемой секции многим пользователям одновременно. Каж-

дый пользователь  имеет  собственную  копию  неразделяемой

секции. Следует заметить, что такие  образы  задач  нельзя

выполнять в ОС РВ.

     МОС ВП не допускает использование тех директив управ-

ления памятью ОС РВ, которые расширяют логическое адресное

пространство задачи ОС РВ. Образу задачи, издавшему  такую

директиву, МОС ВП возвращает код ошибки.



     1.5. Эмуляция инструкций плавающей арифметики



     МОС ВП обеспечивает программную  эмуляцию  инструкций

плавающей арифметики FPP, которые используются  в  образах

задач, выполняющихся в режиме совместимости. Время, затра-

чиваемое на эмуляцию таких инструкций, как инструкции сло-

жения ADDF (регистр к регистру) или  ADDF  (память  к  ре-

гистру), приблизительно в 25 раз превышает то время, кото-

рое требуется для выполнения этих  инструкций на  СМ 1420.

такой расход времени характерен для  эмуляции  большинства

инструкций FPP.


                          - 17 -

                      00152-01 92 08


     Результаты эмуляции инструкций  плавающей  арифметики

такие же, как при работе процессоров плавающей  арифметики

моделей М16-СМ, за следующим исключением:

     1) при эмуляции результат инструкции MOD является бо-

лее точным;

     2) при  переполнении  эмулятор  генерирует  резервный

операнд со значением 0 вместо остатка.



     1.6. Системные понятия МОС ВП



     В МОС ВП понятие задачи ОС РВ разбивается на две сос-

тавные части:

     - программный образ, который выполняется;

     - управляющая   информация  и  виртуальное   адресное

пространство, необходимые для выполнения образа.

     Эти составные части  соответствуют  базовым  понятиям

мос вп - понятиям образа и процесса.

     Процесс - это базовая программная единица диспетчери-

зации, выполняемая на процессоре СМ 1700. Процесс  состоит

из виртуального адресного пространства и  управляющей  ин-

формации, такой как сохраненное содержимое регистров и ин-

формация о состоянии. Эта управляющая информация называет-

ся контекстом процесса.

     Образ - это результат  компоновки  одного  или  более

об'ектных модулей. Для выполнения в основном режиме  образ

создается компоновщиком МОС ВП, а для выполнения в  режиме

совместимости - построителем задач ОС РВ. Образ выполняет-

ся в виртуальном адресном пространстве процесса под управ-

лением процесса.

     Виртуальное адресное пространство процесса делится на


                          - 18 -

                      00152-01 92 08


две области: область программы и  область  управления.  По

существу, область программы обеспечивает образ виртуальной

памятью. Область управления содержит информацию, необходи-

мую системе для управления процессом. На  рис.1  приведена

схема разбиения виртуального адресного  пространства  про-

цесса.

        0__________________________________________

        !                                         !

        !    O б л а с т ь   п р о г р а м м ы    !

        !       (образы ОС РВ  выполняются        !

        !             в этой области)             !

        !_________________________________________!

        !                                         !

        !                                         !

        !   О б л а с т ь   у п р а в л е н и я   !

        !                                         !

   2**31!_________________________________________!



                        Рис. 1



     Понятие процесса с образом подобно понятию  задачи  в

ОС РВ. Основное отличие заключается в том,  что  задача  -

это вид процесса, выполняющего определенный  образ,  в  то

время как процесс в МОС ВП может  выполнять  любой  образ.

более того, когда текущий образ завершается, процесс оста-

ется для выполнения последующих образов.

     В ОС РВ ссылка к  определенной  задаче  подразумевает

также определенную ссылку к образу. Этого нет в МОС ВП.  В

МОС ВП точно указывается, относится  операция  к  процессу

или к его образу. В данном документе вместо термина задача


                          - 19 -

                      00152-01 92 08


употребляются термины процесс и образ.



     1.7. Различие среды МОС ВП и ОС РВ



     МОС ВП обеспечивает образы  ОС  РВ  средой,  подобной

среде ОС РВ. Иными словами, при загрузке образ ОС РВ имеет

виртуальное адресное пространство с  адреса  0.  Он  имеет

доступ к копии заголовка задачи на обычном  месте,  и  ре-

гистры с R0 по R7 инициируются, как в ОС РВ.  Такая  среда

позволяет создавать, транслировать, компоновать, выполнять

и отлаживать образы ОС РВ [1]. Однако, МОС ВП не  пытается

полностью дублировать среду операционной системы ОС РВ.

     Некоторые аспекты среды ОС РВ имеют  непосредственные

эквиваленты в среде МОС ВП.  Например,  имя  задачи  ОС РВ

можно рассматривать как имя процесса в МОС ВП; флаги собы-

тий ОС РВ можно перевести во флаги событий МОС ВП.

     Когда процесс в МОС ВП выполняет образ ОС РВ, система

мос вп получает ловушки и исключительные ситуации, вызван-

ные этой задачей, и интерпретирует их причину так, как ин-

терпретировала  бы  ОС РВ. Затем  МОС ВП обрабатывает их в

соответствии со своей средой. Например, операции ввода-вы-

вода и посылки/получения данных заменяются соответствующи-

ми функциями МОС ВП.

     Некоторым аспектам ОС РВ соответствуют подобные функ-

ции в МОС ВП. Например, обе системы используют код иденти-

фикации пользователя (UIC). В ОС РВ UIC является идентифи-

катором учета (при регистрации), задает каталог  пользова-

тельских файлов по умолчанию  и  используется  для  защиты

файлов. В МОС ВП понятие UIC отделено от понятий идентифи-

катора  учета  и  имени каталога по умолчанию. Понятие UIC


                          - 20 -

                      00152-01 92 08


расширено  в  направлении  дополнительной  защиты (подраз-

дел 2.2).

     Некоторые аспекты ОС РВ не имеют аналогов в МОС ВП. В

результате  МОС  ВП  не  может  транслировать  их  в  свои

функции. В качестве примеров таких аспектов ОС РВ, не эму-

лируемых в МОС ВП, можно привести разделы, важные события,

приоритеты  в  границах  от 1  до 250. Хотя МОС ВП не дуб-

лирует эти возможности ОС РВ, она принимает запросы образа

связанные с этими аспектами, и предпринимает соответствую-

щие действия с тем, чтобы образ мог продолжить выполнение.




                          - 21 -

                      00152-01 92 08


                2. Среда системы МОС ВП



     Среда, предоставляемая  системой  МОС ВП  для  образа

ос рв, определяется двумя факторами:

     1) привилегиями,   кодом  идентификации  пользователя

(UIC) и лимитами использования ресурсов, которые  назнача-

ются пользователю, инициирующему образ;

     2) соглашениями и компонентами системы МОС ВП, касаю-

щимися поддержки директив ОС РВ, изданных образом.



     2.1. Привилегии



     Администратор системы  обслуживает  файл  авторизации

пользователей, содержащий запись для каждого пользователя.

такая запись включает список  привилегий,  предоставляемых

данному пользовательскому процессу [1].

     Если образ ОС РВ запрашивает функцию, на  которую  он

не имеет соответствующей привилегии, МОС ВП  возвращает  в

слове состояния директивы (DSW) код завершения IE.PRI. При

описании директив (раздел 4)  приведены коды завершения  в

DSW для каждой директивы.



     2.2. Защита по UIC



     В МОС ВП каждый процесс имеет свой UIC. UIC  содержит

32 бита (1 длинное слово). Код члена  группы  находится  в

битах с 0 по 15, а код группы - в битах с 16 по 31.

     МОС ВП использует UIC процесса и  привилегии,  назна-

ченные ему администратором системы, для управления  досту-

пом к программам системного  обслуживания,  воздействующим


                          - 22 -

                      00152-01 92 08


на другие процессы в системе.

     Когда образ ОС РВ издает директиву, МОС ВП  выполняет

соответствующую программу  системного  обслуживания.  Если

это обслуживание имеет ограничения, связанные с защитой по

UIC, то до завершения обслуживания  производится  проверка

номера группы и  привилегий  процесса, выполняющего  образ

ОС РВ. Если издавший директиву процесс не входит  в  соот-

ветствующую группу или не имеет соответствующих привилегий

для воздействия на другой  процесс,  то  возвращается  код

ошибки. В качестве примера директивы ОС РВ, которая  имеет

ограничение в МОС ВП, связанное с защитой  по  UIC,  можно

привести директиву ABRT$ (аварийно завершить задачу).

     МОС ВП игнорирует UIC, указанный во время  построения

образа ОС РВ.

     Образ ОС РВ может узнать UIC процесса, в  котором  он

выполняется, по директиве GTSK$ (дать  параметры  задачи).

UIC возвращается в двух словах буфера, заданного в GTSK$:

     1) младший байт номера группы и младший  байт  номера

члена группы возвращаются в слове 7 (как и в ОС РВ) в  ви-

де:

     - биты 0-7 - младший байт номера члена группы;

     - биты 8-15 - младший байт номера группы;

     2) старший байт номера группы и старший  байт  номера

члена группы возвращаются в слове 15 и в виде:

     - биты 0-7 - старший байт номера члена группы;

     - биты 8-15 - старший байт номера группы.

     Возвращаемый UIC используется только для информацион-

ных целей. Образ ОС РВ не может использовать его для  воз-

действия на защиту по группе или на защиту файла.

     Нельзя считать, что учетное имя по умолчанию для  об-


                          - 23 -

                      00152-01 92 08


раза ОС РВ связано с его UIC. Мос вп предоставляет  специ-

альную директиву, которая используется FCS и СУД ОС РВ для

доступа к фактическому учетному имени.



     2.3. Лимиты использования ресурсов



     МОС ВП контролирует использование процессом системных

ресурсов, исходя из лимитов, заданных в файле  авторизации

пользователей [1].

     К образу ОС РВ, выполняющемуся в МОС ВП, имеют  отно-

шение следующие квоты:

     1) число активных запросов на буферированный ввод-вы-

вод;

     2) число байтов системной  динамической  памяти,  ис-

пользуемых для буферированного ввода-вывода;

     3) число активных запросов на прямой ввод-вывод;

     4) число файлов, открытых одновременно;

     5) дисковые квоты.

     По умолчанию МОС ВП переводит образ ОС РВ  или  образ

основного режима, пытающийся превысить лимиты  ресурса,  в

состояние ожидания, пока не появится возможность выполнить

функцию без превышения лимитов, например, пока не заверша-

тся другие активные запросы ввода-вывода. Образы основного

режима могут запрещать и разрешать ожидание ресурсов.  Ко-

манда RUN интерпретатора DCL или MCR предоставляет подпро-

цессам и отсоединенным процессам возможность управлять ре-

жимом ожидания ресурсов.

     Если образ ОС РВ пытается превысить лимиты  ресурсов,

когда ожидание ресурсов запрещено,  он  получает  в  слове

состояния директивы (DSW) код IE.UPN (недостаточно динами-


                          - 24 -

                      00152-01 92 08


ческой памяти).



     2.4. Имена процессов



     Каждый процесс в МОС ВП  имеет  уникальный  32-битный

идентификатор процесса и имя процесса. Имя процесса и  его

UIC однозначно определяют процесс в системе.

     Когда пользователь  инициирует  образ  задачи  ОС РВ,

имеющий в блоке метки имя задачи  (имя  задачи,  указанное

при построении), МОС ВП назначает это имя задачи  процессу

при инициации образа. Имя остается в силе, пока не  завер-

шится образ. Затем МОС  ВП  восстанавливает  имя,  которое

процесс имел до выполнения образа ОС РВ. Поскольку  в  МОС

ВП нет понятия установленной задачи, нет  другого  способа

присвоить имя образу задачи ОС РВ, кроме как при  построе-

нии задачи.

     Образ ОС РВ должен иметь имя  задачи  в  блоке  метки

(для обеспечения имени процессу) в следующих случаях:

     1) если образ должен получить данные,  используя  ди-

рективы RCVD$ (получить данные),  RCVX$  (получить  данные

или выйти) или RCST$ (получить данные или остановить зада-

чу);

     2) если образ взаимодействует с другими образами, ис-

пользуя флаги событий;

     3) если процесс, содержащий образ, является  об'ектом

действия директивы; например,  если  процесс  должен  быть

запрошен или возобновлен.

     Директивы ОС РВ, использующие имя задачи  в  качестве

аргумента:

     - ABRT$ (аварийно завершить задачу);


                          - 25 -

                      00152-01 92 08


     - CSRQ$ (отменить требования запуска задачи по време-

ни);

     - RQST$ (запустить задачу);

     - RSUM$ (возобновить задачу);

     - RUN$ (запустить задачу в указанное время);

     - SDAT$ (послать данные);

     - SPWN$ (породить задачу).

     МОС ВП поддерживает соглашения ОС РВ для многопользо-

вательских задач, имена  KOTOрых начинаются  с многоточия,

например, ...PIP.  Образ  с  именем  такого   типа   может

выполняться одновременно более, чем  одним  пользователем.

Для таких образов МОС ВП не  назначает  в  качестве  имени

процесса имя задачи и не обеспечивает для них механизм по-

лучения данных от других процессов и механизм  синхрониза-

ции с другими процессами по флагам событий.

     Если образ ОС РВ должен издать директивы,  которые  в

качестве об'екта действия указывают  процесс,  выполняющий

образ в основном режиме, пользователю необходимо знать до-

пустимые длины имен задачи и процесса.  Имя  задачи  имеет

максимальную длину 6 символов. Имя процесса  имеет  макси-

мальную длину 15 символов. Поэтому, если образ ОС РВ  дол-

жен взаимодействовать с процессом, выполняющим  образ  ос-

новного режима, имя этого процесса не должно  превышать  6

символов. Образ ОС РВ  не  может  сослаться  к процессу по

имени, превышающему 6 символов.

     Процесс, выполняющий образ  основного  режима,  может

создать подпроцесс или отсоединенный процесс, дать ему имя

и указать образ, который этот  процесс  должен  выполнить.

Следовательно, процесс может создать  именованный  подпро-

цесс или отсоединенный процесс, выполняющий образ  ОС  РВ.


                          - 26 -

                      00152-01 92 08


Когда процесс создан, другие процессы могут издавать  зап-

росы на системное обслуживание в основном режиме  или  ди-

рективы в режиме совместимости, которые  указывают  в  ка-

честве об'екта действия вновь созданный процесс. Создателю

подпроцесса всегда разрешается воздействовать на созданный

им подпроцесс. Другие процессы и подпроцессы должны  иметь

либо групповые, либо общие привилегии для  воздействия  на

подпроцесс. Создание подпроцессов и отсоединенных  процес-

сов описывается в [4].



     2.5. Кластеры флагов событий



     Задача ОС РВ может иметь до трех кластеров флагов со-

бытий, каждый по 32 бита.  Эмуляция  этих  флагов  событий

полностью прозрачна для образов задач ОС РВ. Флаги событий

разделены на следующие кластеры:

     - локальные флаги событий (нумеруются от 1 до 32);

     - общие флаги событий (нумеруются от 33 до 64);

     - групповые глобальные флаги событий  (нумеруются  от

65 до 96).

     Хотя эмуляция флагов событий  прозрачна  для  образов

задач ОС РВ, обработка этих флагов имеет  важное  значение

при взаимодействии между процессами МОС  ВП,  выполняющими

образы в основном режиме, и образами задач ОС РВ.  Процесс

МОС ВП в основном режиме не может связываться с  кластером

общих или групповых глобальных флагов  событий  вне  своей

группы, определяемой UIC.

     Локальные флаги событий (флаги от 1 до  32)  доступны

только самому образу задачи. Образ задачи может  читать  и

устанавливать свои локальные флаги событий.


                          - 27 -

                      00152-01 92 08


     Каждый образ задачи связан со своим собственным клас-

тером локальных флагов событий. Процесс  основного  режима

МОС ВП не может быть связан с кластером  локальных  флагов

событий образа задачи ОС РВ.

     Общие флаги событий (флаги с 33 по 64) доступны  всем

процессам, связанным с данным кластером флагов. Любой про-

цесс может читать и устанавливать флаги в связанном с  ним

кластере общих флагов событий.

     Имя кластера общих флагов событий - RSXCOMEFN. Мос вп

использует это имя вместе с номером группы UIC  для  того,

чтобы защитить флаги от использования их процессами с дру-

гими номерами групп UIC. Только процессы с соответствующим

номером группы UIC могут  связываться  с  кластером  общих

флагов событий RSXCOMEFN для данной группы UIC.

     Образ задачи ОС РВ связывается с кластером общих фла-

гов событий, если только его блок метки содержит имя зада-

чи. В противном случае образ задачи не имеет общих  флагов

событий.

     Процесс основного режима МОС ВП может  связываться  с

общими флагами событий образа задачи ОС РВ. Для этого про-

цесс должен издать запрос к программе системного  обслужи-

вания ASCEFC (создать связь с кластером общих флагов собы-

тий), указав номер флага события в диапазоне от 64 до 95 и

имя кластера RSXCOMEFN. Следует заметить, что процесс  ос-

новного режима рассматривает общие флаги событий как флаги

от 64 до 95; образ задачи ОС РВ рассматривает их как флаги

от 33 до 64.

     Групповые глобальные флаги событий (флаги  от  65  до

96) доступны всем образам задач, связанным с данным  клас-

тером флагов. Любой процесс, связанный с кластером группо-


                          - 28 -

                      00152-01 92 08


вых глобальных флагов событий, может читать  и  устанавли-

вать флаги в этом кластере.

     Имя кластера групповых глобальных  флагов  событий  -

RSXGROUPEFN. МОС ВП использует это имя  вместе  с  номером

группы UIC, чтобы защитить флаги от использования их  про-

цессами с другими номерами групп UIC.  Только  процессы  с

соответствующим номером группы  UIC  могут  связываться  с

кластером групповых глобальных флагов событий  RSXGROUPEFN

для данной группы UIC.

     Образ задачи ОС РВ связывается с кластером  групповых

глобальных флагов событий, только если он издал для данно-

го кластера директиву CRGF$ (создать групповые глобальные

флаги). Иначе  образ задачи не имеет групповых  глобальных

флагов.

     Процесс основного режима МОС ВП может  связываться  с

кластером групповых глобальных флагов событий образа зада-

чи ОС РВ. Для этого процесс должен издать запрос  на  сис-

темное обслуживание ASCEFC (создать связь с кластером  об-

щих флагов событий), указав номер флага события в диапазо-

не от 96 до 127 и имя кластера RSXGROUPEFN. Следует  заме-

тить, что процесс  основного  режима  рассматривает  общие

флаги событий как флаги с 96 до 127; образ ОС РВ  расСМат-

ривает их как флаги с 65 до 96.

     В итоге, флаги событий, задаваемые ОС РВ,  преобра-

зуются в соответствующие флаги МОС ВП следующим образом:

     - локальные флаги ОС РВ 1-32 - 32-63 в МОС ВП;

     - общие флаги ос вр 33-64 - 64-95 в МОС ВП;

     - групповые глобальные флаги ОС РВ 65-96 - 96-127 в

МОС ВП.




                          - 29 -

                      00152-01 92 08


     2.6. Системные коды завершения



     В МОС ВП символическое имя для кода завершения  прог-

раммы системного обслуживания имеет следующий формат:

     SS$_имя

     Когда образ издает директиву ОС РВ, МОС  ВП  пытается

эмулировать требуемую функцию и затем возвращает в DSW.Kод

успешного или неуспешного завершения. В большинстве случа-

ев МОС ВП вызывает программу системного обслуживания,  ко-

торая  выполняет  действия,  эквивалентные   запрашиваемой

функции, и затем преобразует код завершения программы сис-

темного обслуживания в эквивалентный код завершения ОС РВ.

Например, код SS$_NORMAL становится кодом успешного завер-

шения IS.SUC для ОС РВ.

     Однако, в некоторых случаях  директива  заканчивается

такой ошибкой МОС ВП, для которой нет точного  эквивалента

в ОС РВ. Эта ситуация возникает тогда, когда образ пытает-

ся нарушить какую-либо концепцию МОС ВП, не имеющую  экви-

валента в ОС РВ. МОС ВП обрабатывает такие ситуации  одним

из следующих способов:

     1) возвращает в слове состояния директивы  (DSW)  код

завершения по умолчанию;

     2) возвращает в DSW код, который отражает смысл ошиб-

ки, но который не мог бы быть возвращен по завершении  ди-

рективы, если бы образ выполнялся в ОС РВ.

     Коды завершения по умолчанию используются в тех  слу-

чаях, когда не существует однозначного соответствия  между

кодами МОС ВП и ОС РВ. Например, код МОС ВП  соответствует

двум кодам завершения ОС РВ.

     Новый код завершения возвращается в тех случаях, ког-


                          - 30 -

                      00152-01 92 08


да ошибка в МОС ВП не имеет  аналога  в  ОС  РВ.  Так  код

IE.PRI указывает, что образ пытался издать  директиву,  на

которую процесс не имеет соответствующей привилегии.  Нап-

ример, образ пытался возобновить другой процесс  из  своей

группы, не имея групповой привилегии.

     В некоторых случаях после неуспешного завершения  ди-

рективы система МОС ВП возвращает в DSW код ошибки в виде,

который обычно полезен для операций ввода-вывода.  В  этих

случаях старший байт DSW содержит 0. В  качестве  примеров

кодов, возвращаемых в DSW байтами,  а  не  словами,  можно

привести коды IE.PRI и IE.DUN (для ALUN$).  Образы  ОС  РВ

могут определить, представлен ли код в DSW байтом или сло-

вом, проверив значение старшего байта DSW на 0.



     2.7. Управление памятью



     Средства управления памятью в МОС ВП обеспечивают ис-

пользование физической и виртуальной памяти. МОС ВП управ-

ляет использованием физической памяти  с  помощью  понятий

балансного и рабочего наборов.



     2.7.1. Балансный набор и рабочий набор



     МОС  ВП  делит  виртуальное  и  физическое   адресные

пространства на области  фиксированной  длины,  называемые

страницами. При создании процесса МОС ВП назначает ему на-

чальное число страниц, которые процесс может использовать,

находясь в физической памяти. Страницы, принадлежащие всем

процессам, находящимся в физической памяти, называются ба-

лансным  набором. Процессы в балансном  наборе конкурируют


                          - 31 -

                      00152-01 92 08


за доступ к системным ресурсам. Общее число страниц, кото-

рое каждый процесс имеет в  балансном  наборе,  называется

рабочим набором процесса.



     2.7.2. Функции планировщика памяти



     При необходимости выделения дополнительной физической

памяти планировщик памяти МОС ВП может  сократить  размеры

рабочих наборов выбранных им  процессов.  Если  требование

дополнительной физической памяти не удовлетворено за  счет

уменьшения размера рабочих наборов, МОС ВП может выгрузить

выбранные рабочие наборы во вторичную память.

     МОС ВП сокращает рабочие наборы, а также выгружает  и

загружает в главную память процессы (выполняет обмен рабо-

чих наборов), чтобы обеспечить выполнение процессов с  са-

мыми высокими приоритетами. Планировщик  памяти  выполняет

более сложные функции, чем функции  загрузки/выгрузки  для

выгружаемых задач в ОС РВ. Однако, именно он  обеспечивает

эквивалентный механизм, позволяющий эмулировать  директивы

ос рв ENCP$S (разрешить  выгружаемость  задачи)  и  DSCP$S

(запретить выгружаемость задачи).

     В начальном состоянии для образа ОС РВ, выполняющего-

ся в процессе, режим обмена (выгружаемость) разрешен.  Это

состояние идентично начальному состоянию образа в  ОС  РВ.

чтобы воспользоваться директивой  DSCP$S,  процесс  должен

иметь привилегию на разрешение/запрещение для себя  режима

обмена.

     Управляя использованием физической памяти через меха-

низм усечения рабочих наборов, а также  через  выгрузку  и

загрузку процессов в балансный набор, МОС ВП не  поддержи-


                          - 32 -

                      00152-01 92 08


вает концепцию разбиения физической памяти на  разделы.  В

результате, когда образ ОС РВ издает директиву GPRT$ (дать

параметры раздела), МОС  ВП  стандартно  выдает  параметры

системно-управляемого раздела GEN (п. 4.2.21).

     МОС ВП игнорирует имя раздела в блоке метки образа.



     2.7.3. Функции программы обмена страниц



     Программа обмена страниц МОС ВП управляет  страницами

виртуального адресного пространства процесса, находящимися

в физической памяти (т. е. в рабочем наборе) в каждый  мо-

мент выполнения процесса. Когда рабочий набор процесса по-

лон и  требуется  новая  страница  виртуального  адресного

пространства, программа обмена страниц заменяет самую ста-

рую страницу рабочего набора процесса на новую страницу.

     Возможности,  предоставляемые  МОС ВП  для управления

виртуальным адресным пространством  процесса,  значительно

отличаются от подхода ОС РВ к понятию  виртуальной  памяти

задачи. В результате МОС ВП не допускает использования ди-

ректив управления памятью ОС РВ.

     Каждому образу ОС РВ доступны 64 Кбайтов  (32  кслов)

виртуальной памяти. Так как адресное пространство является

виртуальным, а не физическим, то образы ОС РВ  могут  быть

построены без перекрытий; образ выполняется  более  эффек-

тивно в системе управления памятью МОС ВП, которая опреде-

ляет, какие страницы должны быть  в  физической  памяти  и

когда они там нужны. Еще большая эффективность может  быть

достигнута, если строить  образы  ОС  РВ  как  разделяемые

(/MU). Tакие образы ОС РВ могут быть частично разделяемыми

в МОС ВП. Следует заметить, что выполнение разделяемых за-


                          - 33 -

                      00152-01 92 08


дач в ОС РВ не поддерживается.





     2.8. Системные события



     Под системным событием в МОС ВП  понимается  событие,

которое влияет на способность одного или  более  процессов

выполняться. Например, выполняющийся процесс может  поста-

вить себя в состояние ожидания или установить  флаг  собы-

тия, который делает возможным выполнение другого процесса.

системные события подобны понятию важного события в ОС РВ.

однако, в МОС ВП образ не может запросить об'явления  сис-

темного события. В МОС ВП не существует  эквивалентов  для

директив DECL$S (об'явить важное событие) и WSIG$S  (ждать

важное событие). Издание любой  из  этих  директив  безре-

зультатно в МОС ВП; образу, издавшему директиву, возвраща-

ется код успешного завершения.

     Поэтому  образы задач, выполняющиеся в МОС ВП, должны

использовать для связи между задачами только  флаги  собы-

тий, почтовые ящики (подраздел 3.8) и асинхронные  систем-

ные прерывания (AST). БесСМысленно использовать важные со-

бытия.



     2.9. Системные часы



     В моделях М16-СМ число тиков в секунде меняется в за-

висимости от типа используемых часов и их частоты. Для ди-

ректив, связанных со временем, МОС ВП эмулирует часы, име-

ющие в секунде 100 тиков. Это отличие  может  повлиять  на

эмуляцию следующих директив, имеющих связанные со временем


                          - 34 -

                      00152-01 92 08


аргументы:

     - MRKT$ (об'явить важное событие через таймерный

интервал);

     - RUN$ (запустить задачу в указанное время);

     - GTIM$ (дать параметры времени).

     В режиме совместимости недопустимо использование  ди-

рективы ОС РВ STIM$ (установить системное время).



     2.10. Программные приоритеты



     В МОС ВП для обычных процессов приоритеты меняются  в

пределах от 0 до 15, а для процессов реального времени - в

пределах от 16 до 31.

     Ввиду того, что приоритеты задач ОС РВ во  многом  не

соответствуют приоритетам процессов МОС ВП, система МОС ВП

не преобразует приоритет задачи, указанный в заголовке об-

раза задачи, в приоритет МОС ВП.

     Образ ОС РВ выполняется на приоритете, равном приори-

тету по умолчанию, указанному в записи  файла  авторизации

пользователей, которая отведена пользователю, инициировав-

шему процесс. Издание директивы ALTP$ (изменить  приоритет

задачи) не влечет за собой никаких действий в  МОС  ВП,  и

выполнение образа продолжается на первоначальном приорите-

те процесса. Образ, требующий высокого приоритета,  должен

выполняться в процессе, который имеет  достаточно  высокий

приоритет, соответствующий потребностям образа.



     2.11. Глобальные секции



     В МОС ВП глобальные секции содержат данные или  прог-


                          - 35 -

                      00152-01 92 08


раммы, которые могут быть загружены в память и стать  дос-

тупными процессам. Глобальные секции создаются выполняющи-

мися образами и администратором системы.

     При создании глобальной секции ей назначается ряд ха-

рактеристик. Глобальная секция может иметь  следующие  ха-

рактеристики:

     1) доступна только для чтения или для чтения/записи;

     2) временная или постоянная;

     3) групповая или общесистемная;

     4) является секцией дискового файла или файла обмена

страниц.

     Временная глобальная секция остается в системе только

на то время, пока есть процессы, отображающие ее; если нет

процессов, отображающих такую секцию, МОС  ВП  удаляет  ее

автоматически. Постоянная  глобальная  секция  остается  в

системе до тех пор, пока не будет удалена явно.

     МОС ВП обеспечивает групповую  защиту  для  групповых

глобальных секций. К системной глобальной секции может по-

лучить доступ любой процесс. Чтобы создать постоянную  или

общесистемную глобальную секцию, процесс должен иметь  со-

ответствующую привилегию.

     МОС ВП не накладывает ограничений на число глобальных

секций, являющихся дисковыми файлами, которые процесс  мо-

жет отображать. Системное ограничение на число  глобальных

секций файла обмена страниц устанавливается при  генерации

системы.

     Глобальные секции дискового файла отображаются в дис-

ковые файлы, тогда  как  глобальные  секции  файла  обмена

страниц в них не отображаются.

     Когда МОС ВП загружает образ задачи ОС РВ,  построен-


                          - 36 -

                      00152-01 92 08


ный с указанием одного из параметров COMMON, LIBR,  RESCOM

или RESLIB, она отображает указанную библиотеку или  общую

область как глобальную секцию. При загрузке  образа  ОС РВ

система МОС ВП определяет, существует  ли  уже  глобальная

секция для этой библиотеки или общей области.

     Если такая секция существует, то она:

     1) либо создана администратором  системы  и  является

постоянной глобальной секцией;

     2) либо создана МОС ВП в результате выполнения преды-

дущего образа ОС РВ и является временной.

     В любом из этих случаев МОС ВП будет отображать  гло-

бальную секцию для образа задачи ОС РВ.

     Если глобальной секции не существует, то МОС ВП  соз-

дает временную групповую глобальную секцию для  библиотеки

или общей области, определенной при построении параметрами

COMMON, LIBR, RESCOM или RESLIB.  Файл  образа  для  любой

библиотеки или общей области  должен  быть  расположен  на

устройстве и в каталоге,  определенных  логическим  именем

SYS$LIBRARY.

     Когда МОС ВП создает глобальную секцию для  использо-

вания ее образами ОС РВ, секция имеет  следующие  характе-

ристики:

     1) в соответствии со спецификациями, данными построи-

телем задач, глобальная секция  доступна  или  только  для

чтения, или для чтения/записи и  является  либо  позицион-

но-зависимой, либо позиционно-независимой;

     2) является групповой и временной;

     3) именем глобальной секции является либо имя библио-

теки, указанное в параметре COMMON или LIBR, либо имя фай-

ла, указанное в параметре RESCOM или RESLIB.


                          - 37 -

                      00152-01 92 08


     Дисковый файл для глобальной  секции,  доступной  для

чтения/записи, корректируется в соответствии  с  изменени-

ями, выполняемыми процессами, отображающими эту глобальную

секцию.

     В МОС ВП нет понятия установленной глобальной секции,

которая может быть переустановлена для получения новой ко-

пии. Дисковый файл для глобальной  секции,  доступной  для

чтения/записи, корректируется,  чтобы  отразить  изменение

данных в глобальной секции. Поэтому, если необходимо  сох-

ранить первоначальное состояние доступной для чтения/запи-

си глобальной секции (общей области), пользователь  должен

создать защищенную копию файла, содержащего общую область,

и разместить ее на устройстве, отличном от SYS$LIBRARY.

     Если библиотека или общая область, на которую сделана

ссылка, не найдена, МОС ВП выводит на SYS$ERROR  сообщение

об ошибке, указывающее имя библиотеки или общей области.



     2.12. Состояние спячки



     Спящий процесс известен системе, но неактивен. Приос-

танов или останов выполнения образа задачи вызывает  пере-

ход процесса, выполняющего образ, в состояние  спячки.

     Приостановленный образ задачи может быть заново акти-

визирован одним из следующих средств:

     1) асинхронным системным прерыванием (AST);

     2) директивой RQST$ (запустить задачу);

     3) директивой RSUM$ (возобновить задачу);

     4) директивой RUN$ (запустить задачу в указанное вре-

мя).

     Остановленный образ задачи может быть заново  активи-


                          - 38 -

                      00152-01 92 08


зирован только при помощи:

     1) директивы USTP$ (вывести задачу из останова),  из-

данной из программы обслуживания AST;

     2) директивы USTP$ (вывести задачу из останова),  из-

данной из другого процесса;

     3) установки указанного флага события.

     В DCL и в MCR параметры команды RUN позволяют создать

подпроцесс или отсоединенный процесс, который вначале  на-

ходится в состоянии спячки (не активен).  Перед  тем,  как

перевести процесс в состояние спячки, МОС ВП загружает об-

раз, назначает ему требуемые устройства и загружает нужные

библиотеки и общие области.



     2.13. Завершение образа



     Выполняющийся в МОС ВП образ может  завершиться  нор-

мально или аварийно. Нормальное  завершение  имеет  место,

когда образ завершается выполнением соответствующей дирек-

тивы. Аварийное завершение имеет место, когда система  или

другой процесс вынуждают образ прервать выполнение.



     2.13.1. Нормальное завершение



     Когда образ ОС РВ нормально завершается, МОС  ВП  вы-

полняет такие же завершающие операции, как если бы это был

собственный образ. Если образ ОС РВ издает директиву EXIT$

(завершить задачу), МОС ВП выполняет программу  системного

обслуживания EXIT (завершить образ) и возвращает  код  ус-

пешного завершения SS$_NORMAL.

     Образы ОС РВ могут также издать директиву EXST$  (за-


                          - 39 -

                      00152-01 92 08


вершить задачу и выдать состояние), которая позволяет ука-

зать собственный код завершения. При завершении как  обра-

зов МОС ВП, так и образов ОС РВ  код  завершения  доступен

интерпретатору команд.

     Интерпретаторы команд DCL и MCR используют  коды  за-

вершения при обработке косвенных командных файлов [1,2,5].

DCL использует код завершения в команде ON  для  обработки

ошибок. MCR использует код завершения при обработке коман-

ды .ONERR.



     2.13.2. Аварийное завершение



     Когда образ МОС ВП подвергается воздействию  условия,

потенциально вызывающего фатальную ошибку, имеет место од-

на из следующих ситуаций:

     - образ может обработать это условие;

     - образ не может обработать это условие, что ведет  к

завершению образа.

     Образы МОС ВП могут реагировать на  фатальные  ошибки

через механизм обработки условий исключительных  ситуаций.

С помощью этого механизма образ может обеспечить одну  или

более программ обработки, которые должны  выполняться  для

обработки условий исключительной ситуации (ошибки).  Меха-

низм  обработки  условий  можно  сравнить   с   механизмом

синхронных системных прерываний (SST) в ОС РВ, но в МОС ВП

он более гибок [4].

     Если образ обрабатывает исключительную  ситуацию,  он

может продолжить выполнение или нормально завершиться. Ес-

ли образ не обрабатывает исключительную ситуацию,  система

вызывает программу системного обслуживания EXIT для завер-


                          - 40 -

                      00152-01 92 08


шения образа. Программа EXIT инициирует относящиеся к  об-

разу завершающие операции и сохраняет код завершения,  ко-

торый доступен интерпретатору команд или следующему образу

при выполнении в процессе.

     Аварийное завершение образа ОС РВ может иметь место в

результате возникновения одного из следующих условий:

     1) нарушено соглашение по аппаратуре для образов, вы-

полняющихся в режиме совместимости;

     2) издана инструкция, вызывающая прерывание, отличная

от EMT 377;

     3) неправильный формат инструкций JMP или JSR;

     4) ошибка нечетного адреса;

     5) нарушение защиты памяти;

     6) запрос на аварийное завершение из другого  процес-

са;

     7) попытка превысить лимиты использования виртуальной

памяти.

     Образ ОС РВ может обрабатывать некоторые из вышепере-

численных ошибок с помощью программ обслуживания системных

синхронных прерываний (SST). Если таблица векторов SST со-

держит адрес программы обслуживания SST для какой-то ошиб-

ки и эта ошибка возникает, МОС ВП выполняет программу  SST

от имени образа. Эта программа определяет, нужно завершить

образ или продолжить его выполнение. Если адреса программы

SST нет в таблице векторов SST, МОС ВП завершает образ.

     Если возникшая ошибка не может быть обработана  прог-

раммой обслуживания SST или если указан недопустимый адрес

программы SST, МОС ВП издает  сообщение  о  завершении  на

устройство, назначенное к SYS$ERROR и к SYS$OUTPUT. МОС ВП

завершает образ с кодом завершения, который  доступен  ин-


                          - 41 -

                      00152-01 92 08


терпретатору команд.

     Кодам завершения образов ОС РВ соответствуют  сообще-

ния, указывающие причину ошибки. Некоторые ошибки не могут

быть обработаны программами обслуживания SST.  При  выводе

сообщения о завершении в конце сообщения в круглых скобках

выводится значение кода завершения. Эти значения определе-

ны в макрокоманде $RSXDEF.

     Список кодов завершения

RSX$_IOT  -  IOT EXECUTION

     - образ выполнил инструкцию IOT.

RSX$_BREAK  -  BPT EXECUTION

     - образ выполнил инструкцию BPT.

RSX$_TBIT  -  T-BIT EXECUTION

     - образ выполнил инструкцию, требующую прерывания  по

биту T.

RSX$_TRAP - TRAP EXECUTION

     - образ выполнил инструкцию TRAP.

RSX$_NONRSXEMT  -  NON-RSX EMT EXECUTION

     - образ выполнил недопустимую инструкцию EMT.

RSX$_ILLINST  -  ILLEGAL INSTRUCTION

     - образ выполнил инструкцию JMP или JSR с регистром в

качестве операнда-приемника.

RSX$_ACCVIO  -  MEMORY PROTECTION VIOLATION

     - образ обратился к адресу  вне  своего  виртуального

адресного пространства.

RSX$_ODDADDR  -  ODD ADDRESS ERROR

     - образ адресовался к слову по нечетному  адресу  (не

на границе слова).

RSX$_RESERVED  -  RESERVED INSTRUCTION

     - образ  выполнил   инструкцию,   которая недопустима


                          - 42 -

                      00152-01 92 08


в  режиме   совместимости   (HALT,  MARK,  RESET, SPL  или

WAIT).

RSX$_BADSTACK  -  BAD STACK

     - указатель стека содержит адрес вне виртуального ад-

ресного пространства образа.

RSX$_INSFDYNMEM  -  NO DYNAMIC SPACE

     - запрошенная программа системного обслуживания  тре-

бует больше динамического  пространства,  чем  может  быть

доступно процессу.

     Примечания:

     1. Для ошибок  с  кодами  RSX$_ILLINST,  RSX$_ACCVIO,

RSX$_ODDADDR, RSX$_RESERVED, возвращAEMOE значение PC  яв-

ляется адресом самой недопустимой инструкции, а не продви-

нутым адресом.

     2. Ошибки с кодами RSX$_BADSTACK, RSX$_INSFDYNMEM  не

могут быть обработаны программами обслуживания SST.



     2.14. Разбор спецификаций файлов



     В связи с расширением возможностей логических имен  в

мос вп  отдельные части спецификаций файлов МОС  ВП  могут

отличаться от соответствующих частей  спецификаций  файлов

ОС РВ. Обычные программы разбора ОС РВ не  предусматривают

умолчаний для таких спецификаций файлов МОС ВП.  Выполняю-

щиеся в МОС ВП системы FCS и  суд  используют  специальную

директиву МОС ВП, с помощью которой устанавливаются  необ-

ходимые  умолчания;  эти  действия  прозрачны  для  образа

ОС РВ. Любой образ  ОС РВ,  выполняющий  свой  собственный

разбор, также должен  вызвать  эту  специальную  директиву

(приложение 2). Эта директива использует те  же  источники


                          - 43 -

                      00152-01 92 08


информации об умолчаниях, что и в ОС  РВ,  например,  блок

имени файла по умолчанию и строку каталога. После  издания

директивы система МОС ВП строит необходимые структуры дан-

ных и вызывает СУД-32. Когда СУД-32 возвращает расширенную

спецификацию файла, МОС ВП передает ее образу  в  формате,

принятом в FCS и СУД,  например,  в  результирующем  блоке

имени файла и строке каталога.

     Программное  обеспечение  режима  совместимости   ис-

пользует отрицательные номера версий для файлов в  манере,

присущей МОС ВП и отличающейся от использования в  ОС  РВ.

Для указания самой поздней версии файла можно использовать

номер версии 0 (как и в ОС РВ), для указания самой  ранней

версии файла номер версии -0 (в отличие от -1 в ОС РВ),  а

для указания версий, следующих за самой ранней версией,  -

номера -1, -2 и так далее (в отличие от ОС РВ).



     2.15. Ввод-вывод в системе МОС ВП



     МОС ВП использует свою систему ввода-вывода при  реа-

лизации операций ввода-вывода ОС РВ.  Функции  компонентов

системы ввода-вывода МОС ВП на всех уровнях подобны  экви-

валентным функциям в  ОС РВ.  Например,  функции  программ

системного  обслуживания  ввода-вывода  МОС   ВП   подобны

функциям директив ввода-вывода ОС РВ. Различия между двумя

системами ввода-вывода возникают в случаях, когда:

     1) реализация функции в МОС ВП  обеспечивает  большую

гибкость или эффективность по сравнению с ОС РВ, например,

для некоторых кодов функций QIO;

     2) при  эмуляции  ввода-вывода  ОС РВ   используются

функции или концепции МОС ВП, не поддерживаемые в ОС РВ.


                          - 44 -

                      00152-01 92 08


     Эти различия влияют на эмуляцию следующих  относящих-

ся к вводу-выводу директив:

     - ALUN$ (назначить логический номер устройства);

     - GLUN$ (дать информацию об устройстве с заданным ло-

гическим номером);

     - QIO$ (поставить в очередь запрос ввода-вывода);

     - QIOW$ (поставить в очередь  запрос  ввода-вывода  и

ждать);

     - SDAT$ (послать данные);

     - RCVD$ (получить данные);

     - RCVX$ (получить данные или выйти);

     - RCST$ (получить данные или остановить задачу).




                          - 45 -

                      00152-01 92 08


             3. Система ввода-вывода МОС ВП



     Система ввода-вывода МОС ВП включает в себя следующие

компоненты:

     1) систему управления данными MOC вп (СУД-32) для вы-

полнения независимого от устройств ввода-вывода на  уровне

пользователя (только в основном режиме) [6];

     2) программы  системного  обслуживания  ввода-вывода,

предоставляющие образу средства для назначения устройств и

непосредственного издания запросов ввода-вывода;

     3) вспомогательные управляющие процессы (ACP) для вы-

полнения файловых функций на дисковых  томах  и  томах  на

магнитной ленте;

     4) драйверы ввода-вывода.

     Соотношение между этими компонентами при программиро-

вании в основном режиме показано на рис. 2.



     3.1. Система управления данными МОС ВП



     Благодаря СУД-32 образы основного режима МОС ВП имеют

возможность выполнять независимый от  устройства  ввод-вы-

вод. Образы издают команды открытия файла, команды  закры-

тия файла, чтения и записи логических записей или чтения и

записи блоков. В свою  очередь  СУД-32 вызывает  программы

системного обслуживания ввода-вывода, которые обращаются к

драйверу или вспомогательному управляющему процессу  (ACP)

для выполнения запрошенной пользователем функции.

     СУД-32 является эквивалентом FCS и СУД системы ОС РВ.

она не оказывает прямого воздействия на образ ОС  РВ,  вы-

полняющийся в режиме совместимости, и недоступна ему.  Од-


                          - 46 -

                      00152-01 92 08


нако, МОС ВП вызывает СУД-32, чтобы выполнить часть обслу-

живания ввода-вывода от имени образа ОС РВ.

     Описание СУД СМ 1700 дано в [6].



     Компоненты системы ввода-вывода МОС ВП



     ********************

     *   Образ МОС ВП   *--------I

     ********************        I

              V                  I

     ********************        I

     *      СУД-32      *        I

     ********************        I

              I<-----------------I

              V

     ***************************

     * Программа системного об-*

     * служивания ввода-вывода *---------I

     ***************************         I

              V                          V

    ********************        ********************

    *     Драйверы     *<------>*  Вспомогательные *

    *   ввода-вывода   *        *  управляющие про-*

    ********************        *  цессы (ACP)     *

              V                 ********************

    ********************

    *   Периферийные   *

    *   устройства     *

    ********************

                        Рис. 2


                          - 47 -

                      00152-01 92 08


     3.2. Программы системного обслуживания ввода-вывода



     Образ основного режима может вызвать  программу  сис-

темного обслуживания ввода-вывода  МОС  ВП,  чтобы  непос-

редственно, т.е. без  использования  СУД-32  описать  свой

запрос ввода-вывода. Запрос может быть  издан  либо  самим

образом, либо СУД-32 от имени образа. Программы системного

обслуживания  ввода-вывода  позволяют  процессам  с  соот-

ветствующими привилегиями запросить следующие функции:

     1) назначить канал ввода-вывода и отменить назначение

канала;

     2) поставить в очередь запрос ввода-вывода и  (необя-

зательно) ожидать его завершения;

     3) создать и уничтожить почтовый ящик;

     4) закрепить и открепить устройство;

     5) монтировать и демонтировать тома или наборы томов;

     6) получить информацию об устройстве;

     7) отменить ввод-вывод на канале.



     3.2.1. Программа системного обслуживания ASSIGN

(назначить канал ввода-вывода)



     Прежде чем образ МОС ВП может запросить операцию вво-

да-вывода, он должен установить связующий путь от  процес-

са, в котором образ выполняется, к устройству, на  котором

должна быть выполнена операция ввода-вывода. В МОС ВП этот

путь становится доступным после вызова программы системно-

го обслуживания ASSIGN (назначить канал ввода-вывода), ко-

торая возвращает номер канала (указатель связующего  пути)

для назначенного устройства. Номер канала остается  значи-


                          - 48 -

                      00152-01 92 08


мым, пока образ не отменит назначение канала или не завер-

шится сам.

     Кроме каналов, назначенных образом, процесс имеет ка-

налы, назначенные системой. Эти каналы назначаются на  все

время существования процесса. Они  обеспечивают  связующие

пути к постоянным для процесса файлам, которые используют-

ся для системного ввода (SYS$INPUT и SYS$COMMAND), систем-

ного вывода (SYS$OUTPUT), сообщений об ошибках (SYS$ERROR)

и для любых, созданных пользователем постоянных  для  про-

цесса файлов. Для образов ОС РВ в МОС ВП созданные пользо-

вателем постоянные для процесса файлы выступают как ориен-

тированные на записи терминальные устройства.

     Образ может запросить операции ввода-вывода на  кана-

лах, которые он сам назначает, а также на каналах, которые

система назначает постоянным файлам процесса. Однако,  для

операций ввода-вывода с такими постоянными файлами,  кото-

рые не отображаются в терминальные устройства, должна быть

использована  СУД-32. Программа   системного  обслуживания

мос вп ASSIGN эквивалентна директиве ALUN$ (назначить  ло-

гический номер устройства) системы ОС РВ.



     3.2.2. Программа системного обслуживания QIO

(поставить в очередь запрос ввода-вывода)



     После назначения канала ввода-вывода к устройству об-

раз может запросить операцию ввода-вывода, вызвав програм-

му системного обслуживания QIO и указав в  качестве  аргу-

мента номер  канала,  возвращенный  программой  системного

обслуживания ASSIGN (назначить канал ввода-вывода). Допол-

нительные аргументы  описывают  функционально-зависимые  и


                          - 49 -

                      00152-01 92 08


функционально-независимые данные, необходимые для операции

ввода-вывода.

     Программа системного  обслуживания  QIO  размещает  и

строит пакет запроса ввода-вывода, который описывает  опе-

рацию ввода-вывода, исходя из переданных образом  аргумен-

тов. Когда пакет построен, программа системного обслужива-

ния QIO ставит его в очередь  запросов  к  указанному  ус-

ройству.

     Запросы ставятся в очередь согласно  приоритету  про-

цесса, из которого образ издал запрос. Драйвер  устройства

выбирает запросы из очереди по приоритету и выполняет их.



     3.2.3. Программа системного обслуживания CREMBX

(создать почтовый ящик и назначить канал)



     Программа системного  обслуживания  CREMBX  позволяет

образу создать виртуальное устройство, называемое почтовым

ящиком, и назначить к нему  канал  ввода-вывода.  Почтовые

ящики обеспечивают механизм для  защищенной  межпроцессной

связи. Обычно образ создает почтовый ящик, из которого  он

читает и в который другие образы из взаимодействующих про-

цессов пишут. Доступ к почтовому  ящику  ограничивается  с

помощью обычной защиты, основанной на UIC,  соответственно

для системного пользователя, владельца, группового и обще-

го пользователя. Образ выполняет операции  ввода-вывода  с

почтовым ящиком при помощи команд $GET и $PUT  СУД-32  или

программы системного обслуживания QIO (поставить в очередь

запрос ввода-вывода).

     Почтовый ящик не имеет эквивалента в ОС  РВ.  Однако,

МОС ВП использует именно почтовые ящики при  эмуляции  ди-


                          - 50 -

                      00152-01 92 08


ректив ОС РВ посылки/получения данных (п. 3.8.1). Если су-

ществующему почтовому ящику присвоено логическое имя,  об-

раз ОС РВ может издавать запросы ввода-вывода к  почтовому

ящику, используя его логическое имя. Образ ОС РВ не  может

непосредственно создавать почтовые ящики.



     3.2.4. Дополнительные программы системного

обслуживания ввода-вывода



     Программа системного  обслуживания  ALLOC  (закрепить

устройство) позволяет  образу  зарезервировать  устройство

для использования его только тем процессом, в котором  вы-

полняется образ [4]. Устройство остается  закрепленным  за

процессом до тех пор, пока оно не  будет  явно  откреплено

или пока не завершится образ. МОС ВП автоматически закреп-

ляет любое неразделяемое  устройство,  например,  терминал

или считыватель с перфокарт, при назначении ему канала. Но

разделяемое устройство, например, диск, она не  закрепляет

автоматически. Понятие закрепления устройства в МОС ВП эк-

вивалентно понятию присоединения устройства в ОС РВ.

     Программы системного обслуживания позволяют пользова-

телям монтировать и демонтировать тома  или  наборы  томов

[4]. Программа системного обслуживания MOUNT  (монтировать

том) связывает том с устройством и (необязательно)  назна-

чает логическое имя этому устройству. Программа системного

обслуживания DISMOU (демонтировать том) уничтожает эту ин-

формацию.

     Программа системного  обслуживания  GETDVI  (получить

информацию об устройстве  ввода-вывода)  позволяет  образу

получить имя и характеристики устройства,  назначенного  к


                          - 51 -

                      00152-01 92 08


данному каналу [4]. Эта программа  эквивалентна  директиве

ос рв GLUN$ (дать информацию об устройстве с заданным  ло-

гическим номером).

     Программа системного  обслуживания  CANCEL  (отменить

ввод-вывод на канале) позволяет образу отменить все запро-

сы ввода-вывода к указанному каналу [4]. Эта программа эк-

вивалентна директиве ОС РВ QIO$ (поставить в очередь  зап-

рос ввода-вывода) с кодом функции IO.KIL.



     3.3. Драйверы ввода-вывода и аср



     Используя информацию из пакета запроса  ввода-вывода,

драйвер устройства, к которому запрос был поставлен в оче-

редь, инициирует операцию на устройстве, выполняющую  зап-

рошенную функцию. После инициации операции передачи данных

драйвер возвращает управление программе системного  обслу-

живания QIO (поставить в очередь запрос ввода-вывода), ко-

торая, в свою очередь,  передает  информацию  о  состоянии

запроса в программу, вызвавшую операцию  ввода-вывода.  По

окончании выполнения операции на  устройстве  генерируется

аппаратное прерывание, по  которому  происходит  повторный

вход в драйвер для завершения обработки запроса  ввода-вы-

вода.

     После завершения обработки запроса ввода-вывода драй-

вер издает программное прерывание для выполнения постобра-

ботки ввода-вывода. Программа  постобработки  ввода-вывода

устанавливает механизм передачи образу информации о завер-

шении операции  ввода-вывода,  запрошенной  пользователем.

например, она заполняет блок состояния ввода-вывода и  пе-

редает информацию, необходимую для установки флага события


                          - 52 -

                      00152-01 92 08


или постановки AST в очередь, если то или другое  требует-

ся.

     В случае, когда драйвер не может выполнить запрос по-

тому, что требуется обработка томов с файловой структурой,

драйвер ставит запрос в очередь к соответствующему ACP.



     3.4. Интерфейс между образом ОС РВ  и  системой

ввода-вывода МОС ВП



     Образы ОС РВ выполняют ввод-вывод при помощи запросов

либо на уровне FCS и СУД ОС РВ, либо на  уровне  директивы

QIO$. В зависимости от уровня запроса требуется  различное

число шагов для выполнения каждой  операции   ввода-вывода

(приложение 3).

     Образы ОС РВ, издающие запросы на уровне FCS  и  СУД,

используют те же самые программы FCS и СУД, что и в ОС РВ.

(Отметим, что файловый ACP системы МОС ВП не  поддерживает

захвата блоков, а потому и СУД ОС РВ не поддерживает  зах-

вата блоков на время обработки. В результате этого СУД  ОС

РВ, выполняющийся в системе МОС ВП, не допускает разделен-

ного доступа к файлам с относительной и индексной  органи-

зацией, доступным для записи). Некоторые  программы  FCS и

СУД ОС РВ были модифицированы в соответствии с  особеннос-

тями МОС ВП, такими как наименование  каталогов  и  разбор

спецификаций файлов. Чтобы воспользоваться этими модифика-

циями, образ ОС РВ нужно перестроить в МОС  ВП  с  помощью

построителя задач ОС РВ [1].

     Как FCS, так и СУД ОС РВ выполняются в режиме совмес-

тимости МОС ВП. Когда образ ОС РВ издает либо запрос  FCS,

либо запрос СУД, FCS или СУД принимает этот запрос  и  вы-


                          - 53 -

                      00152-01 92 08


полняет такие же действия, как в ОС РВ, т.е. издает  соот-

ветствующую директиву QIO$.

     Начиная с этого момента, выполняются действия,  иден-

тичные действиям, выполняемым по директиве QIO$ в ОС РВ:

     1) по директиве QIO$ происходит  прерывание,  которое

передается МОС ВП;

     2) МОС ВП определяет, была ли издана директива QIO$ к

файлу,  постоянному  для  процесса,  такому  как  TI   или

SYS$OUTPUT. Если это так и устройство не является термина-

лом, МОС ВП издает свой запрос $GET или $PUT СУД-32.  Ина-

че, МОС ВП издает запрос к программе системного обслужива-

ния QIO (поставить в очередь запрос ввода-вывода), который

соответствует директиве QIO$ ОС РВ;

     3) по завершении запроса QIO МОС ВП возвращает  соот-

ветствующий код в DSW образу, издавшему запрос;

     4) по завершении операции ввода-вывода МОС ВП возвра-

щает информацию о состоянии в блоке состояния ввода-вывода

и устанавливает флаг события или об'являет AST, если  тре-

буется.

     Eсли код завершения директивы возвращается  FCS  либо

СУД, то они, в свою  очередь,  пересылают  соответствующую

информацию о завершении ввода-вывода в вызвавший их образ.



     3.5. Назначение устройства



     МОС ВП  выполняет  назначение  устройства  для образа

ОС РВ как часть инициации образа при его загрузке.  Назна-

чение устройства может быть выполнено также  по  директиве

ALUN$ (назначить логический номер устройства) во время вы-

полнения образа.


                          - 54 -

                      00152-01 92 08


     При назначении устройства  для образа  ОС РВ  система

мос вп предпринимает следующие шаги:

     1) формирует  строку  в  коде  КОИ-8,  используя  имя

устройства и номер устройства, указанные в  образе  -  две

буквы и двоичный  номер  устройства.  Номер  устройства  в

восьмеричном представлении преобразуется в код КОИ-8.  Имя

устройства не редактируется; например,  если  указано  ус-

тройство TT1, то используется это имя, а не TT01.

     2) транслирует строку в  коде  КОИ-8  KAK  логическое

имя. Если попытка трансляции не удалась, МОС ВП  предпола-

гает, что образ указал имя физического устройства в  стан-

дартах ОС РВ. МОС ВП строит имя физического  устройства  в

стандартах МОС ВП (подраздел 3.6), используя первоначально

заданное имя, и вызывает программу системного обслуживания

ASSIGN  (назначить  канал  ввода-вывода),   указывая   имя

устройства в стандартах МОС ВП.

     Если попытка трансляции завершается успешно,  МОС  ВП

пытается выполнить еще до двух  трансляций  дополнительно.

Если выполнилось максимальное число трансляций  (три)  или

если одна из них не удалась, МОС ВП назначает  канал,  ис-

пользуя последнее эквивалентное имя.

     Например, если IN0 определено как логическое имя  для

TTB3 и процесс выполняет образ ОС РВ, который  издает  ди-

рективу ALUN$ (назначить логический номер устройства)  для

IN0, МОС  ВП  формирует  строку  в  коде  КОИ-8  для  IN0,

транслирует строку в TTB3 и назначает канал для TTB3.



     3.6. Отображение имени устройства



     Если для имени устройства ОС РВ пользователь не  наз-


                          - 55 -

                      00152-01 92 08


начил физическое устройство системы МОС ВП как  для  логи-

ческого имени, то МОС ВП автоматически выполняет  преобра-

зование  имени  устройства  ОС  РВ   в   имя   физического

устройства в стандартах МОС ВП. Исключением является  поч-

товый ящик; его имя устройства  -  MBAN,

где N - номер устройства.

Это преобразование выполняется  следующим  образом:  номер

устройства ОС РВ преобразуется в десятичное значение и де-

лится на 16 (десятичное). Частное от деления  прибавляется

к значению кода буквы а в коде КОИ-8. В результате получа-

ется код буквы, означающей номер контроллера.  Oстаток  от

деления представляет собой номер устройства МОС ВП. Напри-

мер, устройства ОС РВ TT0 и DM22  становятся  устройствами

мос вп TTA0 и DMB2 соответственно.

     Примеры:

     1. Отображение имени физического устройства ОС РВ TT0

в имя физического устройства МОС ВП TTA0:

     - восьмеричный   0   преобразуется   в   десятичный 0

0(8)=0(10);

     - контроллер и устройство = 'а'+(0/16)='а'+0 с остат-

ком 0; контроллер ='а'+0='а'; номер устройства =0.

     2. Отображение имени  физического  устройства  ОС  РВ

DM22 B имя физического устройства МОС ВП DMB2:

     - восьмеричное значение 22 преобразуется в десятичное

значение 22(8)=18(10);

     - контроллер и устройство ='а'+(18/16)='а'+1 с остат-

ком 2 контроллер ='а'+1='в'; номер устройства =2.

     МОС ВП выполняет это  преобразование  при  назначении

устройства ввода-вывода для образа ОС РВ.

     При обратном преобразовании  имени устройства МОС  ВП


                          - 56 -

                      00152-01 92 08


к виду, принятому в ОС РВ, МОС ВП выполняет обратную  опе-

рацию. Из кода буквы контроллера вычитается значение  кода

символа а (65 в коде КОИ-8), и результат умножается  на 16

(десятичное). Затем прибавляется номер устройства МОС ВП и

преобразуется в число в  восьмеричном  представлении.  Ре-

зультатом является номер устройства ОС РВ, который  добав-

ляется к двухбуквенному имени устройства.

     3. Преобразование имени устройства МОС ВП LPB1 в  имя

устройства ОС РВ LP21:

     - устройство = (('в'-'а')*16)+1=(1*16)+1=17 (десятич-

ное);

     - преобразование десятичного 17 в восьмеричное значе-

ние 17(10)=21(8).

     МОС ВП сохраняет для образа результат  преобразования

в  списке  логических  имен  ОС  РВ.  Эту  информацию   об

устройстве можно получить по директиве GLUN$ (дать  инфор-

мацию об устройстве с заданным логическим номером).



     3.6.1. Отображение имен псевдоустройств



     Исключениями из правил отображения имен устройств яв-

ляются отображение имен  псевдоустройств TI, CL,  CO,  SY,

WK, LB и OV. В табл. 1 приведены имена псевдоустройств  ОС

РВ и логические имена МОС ВП, в которые они отображаются.




                          - 57 -

                      00152-01 92 08


                                               таблица 1

            Отображение имен псевдоустройств

----------------------------------------------------------

Имя в! Имя, выдаваемое  !         Имя в МОС ВП

ОС РВ!      GLUN$       !

-----!------------------!---------------------------------

 TI  !       $I0        ! SYS$INPUT

     !       $O0        ! SYS$OUTPUT

 CL  !       $E0        ! SYS$ERROR

 CO  !       $C0        ! SYS$COMMAND

 SY  ! отображенное имя ! SYS$DISK

 SP  ! отображенное имя ! имя, назначенное администратором

     !                  ! системы

 WK  ! отображенное имя ! SYS$SCRATCH

 LB  ! отображенное имя ! SYS$SYSROOT

 OV  !        -         ! для LUN, используемых при загру-

     !                  ! зке перекрытий, OV0 отображается

     !                  ! таким образом, чтобы  обеспечить

     !                  ! доступ  к  файлу  образа задачи.

     !                  ! Для всех других LUN, назначенных

     !                  ! к ОV0, МОС ВП назначает устройс-

     !                  ! тво, на котором находится образ



     3.6.2. Имя псевдоустройства LB и скрытые устройства



     В МОС ВП определено  новое  понятие  -  "скрытое  ус-

тройство" [6]. Физическому имени скрытого устройства пред-

шествует два символа подчеркивания (__).

     В МОС ВП также введено новое понятие  каталога,  свя-

занное со скрытым устройством, - "корневой каталог". Скры-


                          - 58 -

                      00152-01 92 08


тым устройством может быть  либо  фактическое  устройство,

либо комбинация устройства и каталога, называемая  "корне-

вым устройством". Используя логические имена, к устройству

можно обратиться как к корневому устройству или как к фак-

тическому устройству, в зависимости от  определения  логи-

ческого имени. При использовании логического имени  корне-

вого устройства, такого, например, как определенного  сис-

темой логического имени SYS$SYSROOT, доступны только  под-

каталоги корневого каталога на данном устройстве,  главный

каталог файлов (MFD) и все каталоги первого уровня не дос-

тупны.

     В большинстве случаев введение понятия корневого  ка-

талога не оказывает влияния на различные прикладные  зада-

чи. Однако, псевдоустройство LB системы ОС РВ отображается

системой МОС ВП в корневое устройство  SYS$SYSROOT,  чтобы

обеспечить доступ к системным библиотекам.  Используя  имя

LB, можно сослаться только к подкаталогам корневого  ката-

лога, таким как [1,1] и [1,2]. Если образ ОС  РВ  пытается

получить доступ к файлу в другом каталоге,  используя  имя

LB как часть спецификации файла, он не  получит  доступ  к

этому каталогу как к подкаталогу  корневого  каталога  (не

MFD), пока не будет изменено назначение логического  имени

LB.

     Чтобы изменить логическое имя корневого устройства LB

на логическое имя,  которое  транслируется  в  фактическое

устройство, можно издать команду MCR ASN. Однако, пока  LB

назначено фактическому устройству, попытки получить доступ

к каталогам системных библиотек будут безуспешны.  В  этом

случае нужно просто отменить  назначение  LB,  чтобы  вер-

нуться к начальному назначению.


                          - 59 -

                      00152-01 92 08





                          - 60 -

                      00152-01 92 08


     3.7. Обработка кодов функций QIO



     На уровне программы системного обслуживания QIO  (по-

ставить в очередь запрос ввода-вывода) МОС ВП обрабатывает

как функции, независимые от устройства, так и функции, за-

висящие от устройства (раздел 5). Функции, независимые  от

устройства, включают чтение и запись  виртуального  блока,

чтение и запись логического блока, чтение и  запись  физи-

ческого блока. Функции, зависящие от устройства,  включают

такие операции, как обработка управляющих символов и  ESC-

последовательности для терминального ввода-вывода, позици-

онирования для магнитной ленты.

     Для большинства кодов функций ОС РВ  система  МОС  ВП

имеет соотвествующие коды функций или программы системного

обслуживания. Все коды функций для  дисков  и  большинство

кодов функций для магнитных лент имеют соответствующие ко-

ды в МОС ВП. Однако, различия в обслуживании устройств  ОС

РВ и МОС ВП возможны, они проявляются в двух случаях:

     1) при обслуживании терминальных устройств;

     2) при  обслуживании  устройств через  спул  (подраз-

дел 3.10).



     3.8. Почтовые ящики



     Почтовый ящик - это ориентированное на записи  вирту-

альное устройство, которое используется в МОС ВП для связи

между процессами. МОС ВП использует почтовый ящик для эму-

ляции директив ОС РВ RCVD$ (получить данные), RCVH$ (полу-

чить данные или выйти), RCST$ (получить данные или остано-

вить   задачу)   и    BDAT$   (послать   данные). Эти  ди-


                          - 61 -

                      00152-01 92 08


рективы являются обычными средствами межзадачного  взаимо-

действия в среде ОС РВ.

     Почтовый ящик имеет защиту, базирующуюся на UIC,  ко-

торый связан с этим почтовым ящиком.  Создатель  почтового

ящика может указать привилегии на чтение и запись для сис-

темного пользователя, владельца,  группы  пользователей  и

общего пользователя. Так как понятия выполнения и удаления

не применимы к почтовым  ящикам,  создатель  не  указывает

привилегий для этих функций.

     Когда система МОС ВП создает почтовый ящик для эмуля-

ции директив посылки и  получения  данных,  она  разрешает

доступ на чтение владельцу почтового ящика и доступ на за-

пись групповому пользователю. Владельцем  почтового  ящика

является образ, издавший директиву получения данных,  а  в

группу входят образы, издающие директивы  посылки  данных.

владелец и группа определяются по UIC, под которым они вы-

полняются.



     3.8.1. Почтовые ящики для директив посылки и

получения данных



     Когда система МОС ВП загружает образ в режиме совмес-

тимости, она определяет, имеет ли образ имя задачи в блоке

метки образа задачи. Наличие имени задачи  в  блоке  метки

указывает на то, что образ может  издать  директивы  RCVD$

(получить данные),  RCVX$  (получить  данные  или  выйти),

RCST$ (получить данные или остановить задачу) для  получе-

ния данных, посланных ему другими образами. Система  опре-

деляет имя процесса, которое  идентично  имени  задачи  из

блока метки. Если имя единственно  в  системе,  то  непос-


                          - 62 -

                      00152-01 92 08


редственно перед выполнением образа система создает почто-

вый ящик и связывает  его  с  процессом.  Почтовому  ящику

присваивается имя: "RCVD имя задачи".

     Имя почтового ящика определяется номером группы.  Об-

разы, посылающие данные в почтовый ящик, должны находиться

внутри той же группы и иметь групповые или общие  привиле-

гии.

     МОС ВП не создает почтового ящика для образа, имеюще-

го имя задачи в форме ...XXX, например, ...MAC.



     3.8.2. Ввод-вывод в почтовые ящики



     Почтовый ящик имеет имя устройства MBAN.  Значение  N

является номером устройства. Номера устройств в МОС  ВП  -

это 5-значные  номера в пределах от 0 до 65535. Когда  об-

раз создает почтовый ящик, МОС ВП назначает ему номер  ус-

тройства. Номер устройства, назначаемый системой почтовому

ящику, может изменяться каждый раз при выполнении  образа,

создающего этот почтовый ящик.

     Поскольку в МОС ВП почтовые ящики рассматриваются как

устройства, любой образ ОС РВ может назначить канал к поч-

товому ящику, используя его логическое  имя,  и  выполнить

ввод-вывод записей в почтовый ящик. Для ссылки к почтовому

ящику образ ОС РВ должен использовать логическое имя, а не

имя устройства (MBAN), т.к. образы ОС РВ допускают  номера

устройства в пределах от 0 до 255.

     Канал к почтовому ящику может быть назначен как обра-

зом ОС РВ, так и образом основного режима МОС ВП; но  соз-

дать почтовый ящик может только образ основного режима МОС

ВП. Образ ОС РВ может назначить канал к  почтовому  ящику,


                          - 63 -

                      00152-01 92 08


который  постоянно доступен в системе или  создан  образом

основного режима. Для образов ОС РВ  назначение  канала  к

почтовому ящику подобно назначению  других  устройств  мос

вп.

     Почтовый ящик может одновременно использоваться обра-

зами основного режима и образами ОС  РВ.  Благодаря  этому

почтовые ящики являются удобным средством для связи  обра-

зов основного режима с образами ОС  РВ.  Используемые  для

такой связи почтовые ящики могут быть созданы образами ос-

новного режима или системой МОС ВП для  эмуляции  директив

посылки и получения данных. Образ основного  режима  может

посылать сообщения в почтовый ящик, созданный для эмуляции

директив, издавая запросы на запись в него. Для выполнения

операций ввода-вывода образ может использовать либо СУД-32

либо программу системного обслуживания QIO.



     3.9. Функции ACP



     Функции  файлового  процессора  ОС  РВ  соответствуют

функциям вспомогательного управляющего процесса (ACP) фай-

ловой структуры в МОС ВП.  Отображение  функций  файлового

процессора ОС РВ в функции ACP МОС ВП прозрачно для образа

ОС РВ (см. раздел 5).



     3.10. Устройства, обслуживаемые через спул



     В МОС ВП спулирование происходит в результате взаимо-

действия вспомогательного управляющего  процесса  файловой

структуры, СУД-32  и  выводного  симбионта.




                          - 64 -

                      00152-01 92 08


Спулирование в ОС РВ происходит с помощью задачи системно-

го вывода ОС РВ.  Использование  устройств,  обслуживаемых

через спул в МОС ВП, прозрачно для образов ОС РВ.

     Если образ  назначает  устройство,  которое  является

устройством, обслуживаемым через спул, например,  построч-

но-печатающее устройство, то фактически назначается проме-

жуточное устройство, например, диск. Если образ издает ди-

рективу GLUN$ (дать информацию  об  устройстве  с заданным

логическим  номером),  система  возвращает  характеристики

промежуточного устройства, содержащего спулируемые  файлы.

Характеристики конечного  выводного  устройства  (построч-

но-печатающего устройства) образу ОС РВ не возвращаются.

     Если образ использует СУД ОС РВ или FCS для доступа к

устройству, обслуживаемому через спул, файл будет спули-

рован, когда к нему прекратится доступ.

     Если для доступа к устройству МОС ВП,  обслуживаемому

через спул, используется директива QIO без предварительно-

го издания макрокоманды OPEN$ или соответствующей  функции

ACP, то возвращается код нарушения  привилегий.  Поскольку

устройство, к  которому  фактически  направлена  директива

QIO$, является устройством с  файловой  структурой,  перед

выполнением ввода-вывода на устройстве должны быть  выпол-

нены соответствующие функции ACP, например, доступ к  фай-

лу. Использование запроса PUT$ СУД ОС РВ или FCS  гаранти-

рует выполнение функций ACP.



     3.10.1. Эмуляция возможностей спула системы FCS



     В МОС ВП поддерживается макрокоманда  PRINT$  системы

FCS для вывода спулированием и связанное с ней  обслужива-


                          - 65 -

                      00152-01 92 08


ние, выполняемое в ОС РВ. Спулирование в ОС РВ выполняется

задачей PRT... . Когда МОС ВП обнаруживает директиву SDAT$

(послать данные) к задаче PRT..., она выполняет  программу

системного обслуживания SNDSMB (послать сообщение управле-

нию симбионтами), чтобы вывести файл спулированием.




                          - 66 -

                      00152-01 92 08


             4. Описание директив



     Этот  раздел  описывает  обработку  директив  системы

ОС РВ в МОС ВП. Подраздел 4.1 описывает  различия  возмож-

ностей директив в МОС ВП и ОС РВ.  Все  директивы  системы

ОС РВ, допустимые в МОС ВП, описываются в подразделе  4.2.

Описание директив дается в алфавитном порядке.



     4.1. Обработка директив в МОС ВП



     В данном подразделе описываются различия функций  ди-

ректив в системах ОС РВ и МОС ВП. Для каждой директивы да-

ется мнемоника директивы, название директивы и  перечисля-

ются принципиальные различия в выполнении директивы в сис-

теме МОС ВП по сравнению с ОС РВ.  В  скобках  указываются

номера разделов, подразделов и пунктов, помогающих  понять

обработку директив в системе МОС ВП.

     Список директив ОС РВ

ABRT$ (аварийно  завершить  задачу)

     Обеспечивается защита процесса по группе (см. подраз-

     дел 2.1, 2.2). Аварийно  завершаемый  образ  задается

     именем процесса (подраздел 2.4).

ALTP$ (изменить приоритет задачи)

     Никаких действий не выполняется (подраздел 2.10).

ALUN$ (назначить логический номер устройства)

     Выполняется трансляция логического  имени  (подраздел

     3.5); проверяется назначение устройства (см.  подраз-

     дел 3.5);    выполняется   отображение     устройства

     (см. подраздел 3.6).


                          - 67 -

                      00152-01 92 08


ASTX$S (выход из программы  обслуживания  AST)

     Нет различий.

ATRG$ (присоединить район)

     В МОС ВП не поддерживается.

CINT$ (подключиться к вектору прерываний)

     В МОС ВП не поддерживается.

CLEF$ (очистить флаг)

     Нет различий.

CMKT$ (отменить запросы директивы  MRKT$)

     Обеспечивается защита процесса по группе (см. подраз-

     дел 2.2);  требуются   привилегии  GROUP  или   WORLD

     (см. подраздел 2.1).

CNCT$ (подключиться к задаче)

     В МОС ВП не поддерживается.

CRAW$ (создать адресное окно)

     В МОС ВП не поддерживается.

CRGF$ (создать групповые глобальные флаги)

     Обеспечивается защита групповых глобальных флагов  по

     группе (подраздел 2.5).

CRRG$ (создать район)

     В МОС ВП не поддерживается.

CSRQ$ (отменить требования запуска задачи по времени)

     Обеспечивается защита процесса по группе (см. подраз-

     дел 2.2);   требуются   привилегии  GROUP  или  WORLD

     (см. подраздел 2.1);  образ  задачи  задается  именем

     процесса (см. подраздел 2.4).

DECL$S (об'явить важное событие)

     Никаких действий не выполняется (подраздел 2.8).

DSAR$S (запретить  распознавание AST)

     Нет различий.


                          - 68 -

                      00152-01 92 08


DSCP$S (запретить  выгружаемость  задачи)

     Требуется привилегия установки режима обмена (PSWAPM)

     (см. подраздел 2.1, п. 2.7.1).

DTRG$ (отсоединить район)

     В МОС ВП не поддерживается.

ELAW$ (уничтожить адресное окно)

     В МОС ВП не поддерживается.

ELGF$ (уничтожить групповые глобальные флаги)

     Обеспечивается защита групповых глобальных флагов  по

     группе (см. подраздел 2.5).

EMST$ (выдать состояние)

     В МОС ВП не поддерживается.

ENAR$S (разрешить распознавание AST)

     Нет различий.

ENCP$S (разрешить  выгружаемость  задачи)

     Требуется   привилегия   установки   режима    обмена

     (PSWAPM). (см. подраздел 2.1, п. 2.7.1).

EXIF$ (завершить задачу, если)

     Обеспечивается завершение образа (подраздел 2.13).

EXIT$S (завершить задачу)

     Обеспечивается    завершение    образа   (см. подраз-

     дел 2.13).

EXST$ (завершить задачу и выдать состояние)

     Обеспечивается    завершение    образа   (см. подраз-

     дел 2.13).

EXTK$ (расширить память задачи)

     Нет различий.

GCCI$ (дать команду для CLI)

     В МОС ВП не поддерживается.


                          - 69 -

                      00152-01 92 08


GCII$ (дать информацию о CLI)

     В МОС ВП не поддерживается.

GLUN$ (дать информацию об устройстве с заданным логическим

номером)

     Если устройство является устройством спула, то  выда-

     ется информация  о промежуточном  устройстве (подраз-

     делы 3.10, 5.2).

GMCR$ (дать командную  строку)

     Нет  различий.

GMCX$ (дать описание окон)

     В МОС ВП не поддерживается.

GPRT$ (дать  параметры  раздела)

     Параметры возвращаются в формате, используемом систе-

     мой  ОС РВ   для   выдачи   параметров   раздела  GEN

     (см. п. 2.7.1).

GREG$ (дать параметры района)

     В МОС ВП не поддерживается.

GSSW$S (дать значение консольных переключателей)

     В МОС ВП не поддерживается.

GTIM$ (дать параметры времени)

     Используется  измерение  времени  100  тик  в секунду

     (подраздел 2.9).

GTSK$ (дать параметры задачи)

     Возвращается имя раздела GEN (см. п. 2.7.1).

MAP$ (отобразить адресное окно)

     В МОС ВП не поддерживается.

MRKT$ (об'явить важное событие через таймерный интервал)

     Используется  измерение  времени  100  тик  в секунду

     (см. подраздел 2.9).


                          - 70 -

                      00152-01 92 08


QIO$ (поставить в очередь запрос ввода-вывода)
                                        
     Коды функций ввода-вывода ОС РВ отображаются  в  коды

     функций ввода-вывода МОС ВП (см. раздел 5).

QIO$W (поставить в очередь запрос ввода-вывода и ждать)

     Коды функций ввода-вывода ОС РВ отображаются  в  коды

     функций МОС ВП (см. раздел 5).

RCST$ (получить данные  или  остановить задачу)

     Используется почтовый ящик (см. п. 3.8.1);  обеспечи-

     вается защита по группе (см. подраздел 2.2); требуют-

     ся привилегии (см. подраздел 2.1); получающийся образ

     должен иметь имя (см. подраздел 2.4).

RCVD$ (получить данные)

     Используется почтовый ящик (см. п. 3.8.1);  обеспечи-

     вается защита по группе (см. подраздел 2.2); требуют-

     ся привилегии (см. подраздел 2.1); получающийся образ

     должен иметь имя (см. подраздел 2.4).

RCVX$ (получить данные или выйти)

     Используется почтовый ящик (см. п. 3.8.1);  обеспечи-

     вается защита по группе (см. подраздел 2.2); требуют-

     ся привилегии (см. подраздел 2.1);  получающий  образ

     должен иметь имя (см. подраздел 2.4).

RDAF$ (считать все флаги)

     Нет различий.

RDXF$ (считать расширенные флаги)

     Нет различий.

RPOI$  (запросить  выполнение  и  передать  информацию   о

подключении)

     В МОС ВП не поддерживается.

RQST$ (запустить задачу)

     Целевой образ может быть активным  или  находиться  в


                          - 71 -

                      00152-01 92 08


     спячке (подраздел  2.12);  обеспечивается  защита  по

     группе    (см. подраздел 2.2);  требуются  привилегии

     (см. подраздел 2.1); целевой образ  задается  именем

     процесса (см. подраздел 2.4).

RREF$ (получить по ссылке)

     В МОС ВП не поддерживается.

RSUM$ (возобновить задачу)

     Обеспечивается защита по группе (см. подраздел  2.2);

     требуются привилегии (см. подраздел 2.1); целевой об-

     раз задается именем процесса (см. подраздел 2.4).

RUN$ (запустить задачу  в указанное время)

     Целевой образ должен быть активным или  находиться  в

     спячке (см. подраздел 2.12); обеспечивается защита по

     группе (см. подраздел 2.2); требуются привилегии (см.

     подраздел 2.1); целевой образ задается именем процес-

     са (см. подраздел 2.4).

SCAA$ (AST по получению командной строки)

     В МОС ВП не поддерживается.

SCLI$ (назначить CLI терминалу)

     В МОС ВП не поддерживается.

SDAT$ (послать данные)

     Используется почтовый ящик (см. п. 3.8.1);  обеспечи-

     вается защита по группе (см. подраздел 2.2); требуют-

     ся привилегии (см. подраздел 2.1); целевой образ  за-

     дается именем процесса  (см.  подраздел  2.4).

SDRC$ (послать данные, запросить выполнение, подключиться)

     Нет различий.

SDRP$ (послать данные, запросить выполнение, передать OCB)

     В МОС ВП не поддерживается.


                          - 72 -

                      00152-01 92 08


SETF$ (установить флаг)

     Нет различий.

SFPA$ (AST по ошибкам команд с плавающей точкой)

     Нет различий.

SMSG$ (послать сообщение)

     В МОС ВП не поддерживается.

SPND$S (приостановить  задачу)

     Приостанавливаемая задача должна иметь имя  (см. под-

     раздел 2.4).

SPRA$ (AST по восстановлению питания)

     Нет различий.

SPWN$ (породить  задачу)

     Для передачи командной строки  используется  почтовый

     ящик (см. п. 3.8.1); обеспечивается защита по  группе

     (см. подраздел 2.2); требуются привилегии  (см.  под-

     раздел 2.1).

SRDA$ (AST по получению данных)

     Нет различий.

SREA$ или SREX$ (AST по аварийному завершению задачи)

     В МОС ВП не поддерживается.

SREF$ (послать данные посредством передачи  ссылки)

     В МОС ВП не поддерживается.

SRRA$ (AST по получению данных по ссылке)

     В МОС ВП не поддерживается.

STIM$ (установить системное время)

     Нет различий.

STLO$ (остановить задачу до установки диз'юнкции флагов)

     Нет различий.

STOP$S (остановить задачу)

     Нет различий.


                          - 73 -

                      00152-01 92 08


STSE$ (остановить задачу до установки единичного флага)

     Нет различий.

SVDB$ (задать таблицу SST-векторов для отладочных средств)

     Нет различий.

SVTK$ (задать таблицу SST-векторов для задачи)

     Нет различий.

ULGF$S (разблокировать групповые глобальные  флаги)

     В МОС ВП не поддерживается.

UMAP$ (прекратить отображение адресного окна)

     В МОС ВП не поддерживается.

USTP$ (вывести  задачу из останова)

     Целевой образ может быть в активном состоянии  или  в

     состоянии спячки (см. подраздел 2.12); обеспечивается

     защита по группе (см. подраздел 2.2); требуются  при-

     вилегии (см. подраздел 2.1); целевой  образ  задается

     именем процесса (см. подраздел 2.4).

WSIG$S (ждать важное событие)

     Никаких действий не выполняется (см. подраздел 2.8).

WTLO$ (ждать диз'юнкцию флагов)

     Нет различий.

WTSE$ (ждать единичный флаг)

     Нет различий.



     4.2. Описание системных директив



     Описание директивы включает все или  часть  следующих

пунктов:

     1) описание функций директивы в МОС ВП;

     2) формат макровызова с  описанием  всех  параметров;

для необязательных параметров  за  описанием  параметра  в


                          - 74 -

                      00152-01 92 08


круглых  скобках  дается  значение   по   умолчанию.   Для

большинства параметров это 0; приводятся только  ненулевые

значения. Параметры, игнорируемые в МОС ВП и ОС РВ, введе-

ны для дальнейшего развития ОС РВ;

     3) коды  завершения  директив.  В  некоторых  случаях

вслед за кодом завершения ОС РВ в круглых  скобках  приво-

дится код завершения МОС ВП.

     Пример. IE.RSU - устройство закреплено за другим  об-

разом (SS$_DEVALLOC).

     Некоторые коды завершения МОС ВП отображаются  каждый

в несколько кодов завершения ОС РВ. В этих случаях МОС  ВП

возвращает один из кодов ОС РВ, который она выбирает в за-

висимости от выполнявшейся  директивы.  За  такими  кодами

следует фраза "(код по умолчанию)".

     Пример. IE.IDU - устройство или номер устройства  не-

известны (код по умолчанию).

     В некоторых случаях МОС ВП возвращает код  завершения

директивы в байте, а не в слове. В таких  случаях  старший

байт DSW содержит 0. Этот формат полезен для операций вво-

да-вывода;

     4)  примечания,  поясняющие   функции   директивы   и

следствия ее использования под управлением МОС ВП. Пользо-

ватель  должен  внимательно  прочитать  примечания,  чтобы

обеспечить правильное использование директивы.



     4.2.1. Директива ABRT$ (аварийно завершить задачу)



     Директива ABRT$ завершает выполнение указанного обра-

за. Образ может завершить аварийно сам себя или  завершить

образ, выполняющийся в другом процессе. ABRT$ используется


                          - 75 -

                      00152-01 92 08


для завершения задачи в критической ситуации или в  случае

ошибки.

     Макровызов

     ABRT$ имя

где  имя - имя процесса в МОС ВП.

     Коды завершения, возвращаемые в DSW

IS.SUC

     - успешное завершение директивы.

IE.INS

     - имя процесса неизвестно (код по умолчанию).

IE.PRI

     -  пользователь непривилегированный (SS$_NOPRIV).

IE.UPN

     - недостаточно динамической памяти (SS$_INSFMEM).

IE.NOD

     - превышена квота (SS$_EXQUOTA).

IE.ADP

     - часть DPB лежит вне границ адресов образа, издавше-

     го директиву.

IE.SDP

     - код директивы или размер DPB указаны неверно.

     Примечания:

     1. Для завершения указанного образа МОС ВП  выполняет

от имени  образа,  издавшего  директиву  ABRT$,  программу

системного обслуживания FORCEX (заставить завершиться).

     2. Образ, издавший директиву ABRT$, должен выполнять-

ся в процессе, который удовлетворяет одному  из  следующих

требований:

     - принадлежит той же группе, что и процесс,  который

должен быть аварийно завершен, и имеет привилегию GROUP;


                          - 76 -

                      00152-01 92 08


     - имеет привилегию WORLD.

     3. Код завершения образа формируется программой обра-

ботки завершения (обработчиком завершения).  Предполагает-

ся, что возвращается код серьезной ошибки.



     4.2.2. Директива ALTP$ (изменить приоритет задачи)



     МОС ВП не эмулирует директиву ALTP$. Вместо этого она

позволяет процессу, для которого была издана эта  директи-

ва, продолжить выполнение с его текущим приоритетом.

     Макровызов

ALTP$ [имя] [,прт]

где  имя - имя активной задачи;

     прт - новый приоритет (значение от 1 до 250.).

     Коды завершения, возвращаемые в DSW

IS.SUC

     - успешное завершение директивы.

IE.ADP

     - часть DPB лежит вне границ адресов образа, издавше-

     го директиву.

IE.SDP

     - код директивы или размер DPB указаны неверно.



     4.2.3. Директива ALUN$ (назначить логический номер

устройства)



     Директива ALUN$ назначает логический номер физическо-

му устройству. Канал ввода-вывода в МОС ВП является  экви-

валентом логического номера устройства в ОС РВ.

     При переназначении LUN от одного устройства к другому


                          - 77 -

                      00152-01 92 08


МОС ВП отменяет  все  требования  ввода-вывода  к  старому

устройству.

     Макровызов

     ALUN$ лгн, иустр, нустр

где  лгн - логический номер устройства;

     иустр - имя устройства (два символа);

     нустр - номер устройства.

     Коды завершения, возвращаемые в DSW

IS.SUC

     - успешное завершение директивы.

IE.IDU

     - устройство или номер устройства неизвестны (код  по

     умолчанию).

IE.ILU

     - недопустимый логический номер устройства.

IE.NOD

     - квота каналов ввода-вывода превышена (SS$_EXQUOTA).

IE.RSV

     - устройство закреплено за другим образом

     (SS$_DEVALLOC).

IE.DUN

     - устройство не монтировано (SS$_DEVNOTMOUNT).

IE.ADP

     - часть DPB лежит вне границ адресов образа, издавше-

     го директиву.

IE.SDP

     - код директивы или размер DPB указаны неверно.

     Примечания:

     1. МОС ВП выполняет от имени образа, издавшего дирек-

тиву ALUN$, программу системного обслуживания ASSIGN (наз-


                          - 78 -

                      00152-01 92 08


начить канал ввода-вывода).

     2.  ASSIGN  пытается   выполнить   назначение   имени

устройства ОС РВ физическому устройству МОС ВП  (см.  под-

раздел 3.5).

     3. Если имя и номер устройства ОС РВ не  назначены  в

качестве логического имени устройства МОС ВП,  то  МОС  ВП

отображает имя и номер устройства ОС РВ в  соответствующие

имя устройства, номер контроллера  и  номер  устройства  в

МОС ВП. Для этого МОС ВП преобразует номер  устройства  ОС

РВ в десятичное число и  делит  его  на  16  (десятичное),

частное прибавляет к значению символьного  кода  буквы  а;

результат дает символьный код  буквы,  обозначающей  номер

контроллера.  Остаток  дает  номер  устройства   МОС   ВП.

     Пример.

     Имя и номер устройства в ОС РВ - DM2

'а'+(2/16)='а'+о, остаток 2

Соответствующие имя устройства, номер контроллера и  номер

устройства в МОС ВП будут DMA2.

     Если  LUN  переназначается, его предшествующее назна-

чение отменяется, что приводит к  отмене  ввода-вывода  по

предшествующему назначению.  Если  попытка  сделать  новое

назначение оказывается неудачной, LUN остается неназначен-

ным.



     4.2.4. Директива  ASTX$S (выход из программы

обслуживания AST)



     Директива  ASTX$S  обеспечивает  выход  из  программы

обслуживания AST-прерывания.

     Если в  очереди  AST  есть  еще  AST  и  обслуживание


                          - 79 -

                      00152-01 92 08


AST-прерываний не запрещено,  то  сразу  после  выхода  из

AST-программы выполняется обслуживание следующего  AST.  В

противном случае система восстанавливает состояние образа,

бывшее до AST-прерывания.

     Макровызов

     ASTX$S [ош]

где  ош - адрес программы обработки ошибки директивы.

     Коды завершения, возвращаемые в DSW

IS.SUC

     - успешное завершение директивы.

IE.AST

     - директива издана не в программе обслуживания AST.

IE.ADP

     - часть DPB или стек лежит вне границ адресов образа,

     издавшего директиву.

IE.SDP

     - код директивы или размер DPB указаны неверно.

     Примечание. При  AST-прерывании  МОС  ВП  засылает  в

стек, как минимум, следующую информацию:

     - 0 (SP + 06 - SP + 012);

     - PS процесса в момент AST-прерывания (SP + 04);

     - PC процесса в момент AST-прерывания (SP + 02);

     - DSW процесса в момент AST-прерывания (SP + 00).

     При выполнении директивы ASTX$S  стек  задачи  должен

быть в этом же состоянии.



     4.2.5. Директива CLEF$ (очистить флаг)



     Директива CLEF$ очищает  указанный флаг события и со-

общает кодом завершения директивы значение флага перед его


                          - 80 -

                      00152-01 92 08


очисткой.

     Макровызов

     CLEF$ флг

где  флг - номер флага события.

     Коды завершения, возвращаемые в DSW

IS.CLR

     - успешное завершение директивы; флаг был  уже  сбро-

     шен.

IS.SET

     - успешное завершение директивы; флаг был установлен.

IE.IEF

     - неверный номер флага события: флаг в пределах от 33

     до 64, но образ не связан с этим общим  флагом  собы-

     тия; либо флаг в пределах от 65 до 96,  но  образ  не

     связан с этим групповым  глобальным  флагом  события;

     либо флаг не в пределах от 1 до 96.

IE.ADP

     - часть DPB лежит вне границ адресов образа, издавше-

     го директиву.

IE.SDP

     - код директивы или размер DPB неверны.

     Примечания:

     1. МОС ВП выполняет от имени образа, издавшего дирек-

тиву CLEF$, программу системного обслуживания CLREF (очис-

тить флаг события).

     2. Для доступа к флагам в кластере общих или  группо-

вых глобальных флагов событий  образ  задачи  должен  быть

связан с соответствующим кластером (см. подраздел 2.5).

     3. Флаги событий, задаваемые в ОС РВ, преобразуются в

допустимые в МОС ВП флаги (см. подраздел 2.5).


                          - 81 -

                      00152-01 92 08




     4.2.6. Директива CMKT$ (отменить запросы директивы

MRKT$)



     Директива CMKT$ отменяет все запросы директивы MRKT$,

изданные образом.

     Макровызов

     CMKT$ [,,ош]

где  ош - адрес программы обработки ошибки.

     Коды завершения, возвращаемые в DSW

IS.SUC

     - успешное завершение директивы.

IE.ADP

     - часть DPB лежит вне границ адресов образа, издавше-

     го директиву.

IE.SDP

     - код директивы или размер DPB указаны неверно.

     Примечание. Для отмены всех запросов MRKT$,  изданных

образом, МОС ВП выполняет программу системного  обслужива-

ния CANTIM (отменить запрос к таймеру).



     4.2.7. Директива CRGF$ (создать групповые глобальные

флаги)



     Директива CRGF$  связывает  указанный  кластер  общих

флагов событий с процессом, издавшим директиву. Если  ука-

занный кластер не существует, то директива сначала создает

указанный кластер (все флаги в нем обнуляются), затем свя-

зывает его с процессом, издавшим директиву.

     Если директива CRGF$ издана для кластера флагов,  ко-


                          - 82 -

                      00152-01 92 08


торый отмечен к удалению изданной ранее директивой  ELGF$,

но еще не удален, то запрос на удаление отменяется.

     Макровызов

     CRGF$ [нгр]

где  нгр - номер группы пользователей, для которой  созда-

ются флаги.

     Коды завершения, возвращаемые в DSW

IS.SUC

     - успешное выполнение директивы.

IE.UPN

     - недостаточно динамической памяти (SS$_INSFMEM).

IE.IUI

     - недопустимый  номер  группы;  группа  должна  соот-

     ветствовать коду идентификации, заданному в блоке за-

     головка задачи (H.CUIC).

IE.ADP

     - часть DPB лежит вне границ адресов образа, издавше-

     го директиву.

IE.SDP

     - код директивы или размер DPB указаны неверно.

     Примечания:

     1. МОС ВП выполняет от имени образа, издавшего дирек-

тиву CRGF$, программу системного обслуживания ASCEFC (соз-

дать связь с кластером общих флагов событий).

     2. Для доступа к  флагам в кластере общих или группо-

вых глобальных флагов событий  образ  задачи  должен  быть

связан с флагами в соответствующем кластере.

     3. Флаги событий, задаваемые в ОС РВ, преобразуются в

допустимые в МОС ВП флаги (см. подраздел 2.5).

     4. Если в макровызове указан номер группы, он  должен


                          - 83 -

                      00152-01 92 08


соответствовать номеру группы в UIC,  указанному  в  блоке

заголовка задачи, издавшей директиву; процессы с таким  же

номером группы имеют доступ к создаваемым флагам.  Если  в

макровызове номер группы  опущен,  то  используется  номер

группы, указанный в блоке заголовка задачи (H.CUIC).



     4.2.8. Директива CSRQ$ (отменить требования запуска

задачи по времени)



     Директива CSRQ$ отменяет все требования на  пробужде-

ние по времени указанного образа, не считаясь с источником

каждого требования.

     Макровызов

     CSRQ$ имя

где  имя - имя процесса в МОС ВП.

     Коды завершения, возвращаемые в DSW

IS.SUC

     - успешное завершение директивы.

IE.INS

     - указанное имя процесса неизвестно (код  по  умолча-

     нию).

IE.PRI

     - нарушение привилегий (SS$_NOPRIV).

IE.ADP

     - часть DPB лежит вне границ адресов образа, издавше-

     го директиву.

IE.SDP

     - код директивы или размер DPB указаны неверно.

     Примечания:

     1. МОС ВП выполняет от имени образа, издавшего дирек-


                          - 84 -

                      00152-01 92 08


тиву CSRQ$, программу системного обслуживания CANWAK  (от-

менить пробуждение).

     2. Образ, издавший директиву CSRQ$, должен выполнять-

ся в процессе, который удовлетворяет одному  из  следующих

требований:

     - принадлежит той же группе, что и процесс, для  ко-

торого отменяются требования запуска по времени,  и  имеет

привилегию GROUP;

     - имеет привилегию WORLD.



     4.2.9. Директива DECL$S (об'явить важное событие)



     Директива DECL$S об'являет важное событие. Об'явление

важного события в системе МОС ВП никаких действий не вызы-

вает, т.к. понятия важного события в МОС ВП не существует.

     Макровызов

     DECL$S [,ош]

где  ош - адрес программы обработки ошибки.

     Коды завершения, возвращаемые в DSW

IS.SUC

     - успешное завершение директивы.

IE.ADP

     - часть DPB лежит вне границ адресов образа, издавше-

     го директиву.

IE.SDP

     - код директивы или размер DPB указаны неверно.

     Примечание. Никаких действий не выполняется,  возвра-

щается код успешного завершения.




                          - 85 -

                      00152-01 92 08


     4.2.10. Директива DSAR$S (или IHAR$S) (запретить

распознавание AST)



     Директива DSAR$S запрещает распознавание AST  пользо-

вательского  уровня  для  образа,   издавшего   директиву.

AST-прерывания, которые возникают после запрещения распоз-

навания AST, ставятся в очередь и будут обработаны,  когда

распознавание AST станет  возможным. На  время  выполнения

программы обработки AST распознавание AST запрещено. В на-

чале выполнения образа распознавание AST разрешено.

     Макровызов

     DSAR$S [ош]

      или

     IHAR$S [ош]

где  ош - адрес программы обработки ошибки.

     Коды завершения, возвращаемые в DSW

IS.SUC

     - успешное завершение директивы.

IE.ITS

     - распознавание AST уже запрещено.

IE.ADP

     - часть DPB лежит вне границ адресов образа, издавше-

     го директиву.

IE.SDP

     - код директивы или размер DPB указаны неверно.

     Примечание. AST-прерывания, возникшие  за  то  время,

пока распознавание AST запрещено, ставятся в очередь. Дис-

циплина очереди - первым пришел, первым обслужен.




                          - 86 -

                      00152-01 92 08


     4.2.11. Директива DSCP$S (запретить выгружаемость

задачи)



     Директива DSCP$S запрещает режим обмена для процесса.

     Макровызов

     DSCP$S [ош]

где  ош - адрес программы обработки ошибки.

     Коды  завершения, возвращаемые в DSW

IS.SUC

     - успешное завершение директивы.

IE.ITS

     - режим обмена уже запрещен.

IE.PRI

     - нарушение привилегий (SS$_NOPRIV).

IE.ADP

     - часть DPB лежит вне границ адресов образа, издавше-

     го директиву.

IE.SDP

     - код директивы или размер DPB указаны неверно.

     Примечания:

     1. МОС ВП выполняет от имени образа, издавшего дирек-

тиву DSCP$S, программу системного обслуживания SETSWM (ус-

тановить режим обмена для процесса).

     2. В начале выполнения образа режим обмена разрешен.

     3. Образ, запрещающий режим обмена, должен иметь при-

вилегию на разрешение для себя этого режима (PSWAPM).




                          - 87 -

                      00152-01 92 08


     4.2.12. Директива ELGF$ (уничтожить групповые

глобальные флаги)



     Директива ELGF$ отсоединяет процесс, издавший  дирек-

тиву, от указанного кластера общих флагов событий.

     Если других процессов, связанных с указанным  класте-

ром, нет, то  кластер  немедленно  удаляется. Однако, если

существуют процессы, связанные с этим кластером, то  клас-

тер не удаляется до тех пор, пока все  процессы, связанные

с ним, не будут отсоединены.

     Макровызов

     ELGF$ [нгр]

где  нгр - номер группы пользователей, для которой флаги

должны быть уничтожены.

     Коды завершения директивы, возвращаемые в DSW

IS.SUC

     - успешное завершение директивы.

IE.IUI

     - недопустимый  номер группы; номер   группы   должен

     Соответствовать номеру группы в UIC, указанным в бло-

     ке заголовка задачи (H.CUIC).

IE.ADP

     - часть DPB лежит вне границ адресов образа, издавше-

     го директиву.

IE.DIC

     - код директивы или размер DPB указаны неверно.

     Примечания:

     1. МОС ВП выполняет от имени образа, издавшего дирек-

тиву ELGF$, программу системного обслуживания DLCEFC (уда-

лить кластер общих флагов событий).


                          - 88 -

                      00152-01 92 08


     2. Для доступа к флагам в кластере общих или  группо-

вых  глобальных  флагов событий образ задачи  должен  быть

связан с соответствующим кластером.

     3. Флаги событий, задаваемые в ОС РВ, преобразуются в

допустимые в МОС ВП флаги (см. подраздел 2.5).

     4. Если в макровызове указан номер группы, то он дол-

жен соответствовать номеру группы, указанному в блоке  за-

головка задачи, которая  издала  этот  вызов.  Если  номер

группы опущен, то используется номер группы,  указанный  в

блоке заголовка задачи (H.CUIC).



     4.2.13. Директива  ENAR$S  (разрешить

распознавание AST)



     Директива ENAR$S разрешает распознавание AST для  об-

раза, издавшего директиву; другими словами, ENAR$S отменя-

ет  действие  директивы  DSAR$S  (запретить  распознавание

AST). AST, поставленные в очередь за время запрещения рас-

познавания AST, обрабатываются в порядке очереди. В начале

выполнения образа распознавание AST разрешено.

     Макровызов

     ENAR$S [ош]

где  ош - адрес программы обработки ошибки.

     Коды завершения, возвращаемые в DSW

IS.SUC

     - успешное выполнение директивы.

IE.ITS

     - распознавание AST не было запрещено.

IE.ADP

     - часть DPB лежит вне границ адресов образа, издавше-


                          - 89 -

                      00152-01 92 08


     го директиву.

IE.SDP

     - код директивы или размер DPB указаны неверно.



     4.2.14. Директива  ENCP$S  (разрешить  выгружаемость

задачи)



     Директива ENCP$S разрешает режим обмена для процесса.

     Макровызов

     ENCP$S [ош]

где  ош - адрес программы обработки ошибки.

     Коды завершения, возвращаемые в DSW

IS.SUC

     - успешное завершение директивы.

IE.ITS

     - выгружаемость не была запрещена.

IE.PRI

     - нарушение привилегии (SS$_NOPRIV).

IE.ADP

     - часть DPB лежит вне границ адресов образа, издавше-

     го директиву.

IE.SDP

     - код директивы или размер DPB указаны неверно.

     Примечания:

     1. МОС ВП выполняет от имени процесса, издавшего  ди-

рективу ENCP$S, программу системного  обслуживания  SETSWM

(установить режим обмена для процесса).

     2. В начале выполнения образа режим обмена разрешен.

     3. Для установки режима обмена  процесс,  выполняющий

образ, который издал директиву ENAR$S, должен иметь приви-


                          - 90 -

                      00152-01 92 08


легию PSWAPM.



     4.2.15. Директива EXIF$ (завершить задачу, если)



     Директива EXIF$ завершает выполнение образа, издавше-

го директиву, если указанный флаг событий  не  установлен.

МОС ВП возвращает управление образу, издавшему  директиву,

если флаг установлен.

     Макровызов

     EXIF$ флг

где  флг - номер флага события.

     Коды завершения, возвращаемые в DSW

IS.SET

     - указанный флаг установлен, образ не завершается.

IE.IEF

     - неверный номер флага события: флаг в пределах от 33

     до 64, но образ не связан с этим общим  флагом;  либо

     флаг в пределах от 65 до 96, но  образ  не  связан  с

     этим групповым глобальным флагом; либо флаг не в пре-

     делах от 1 до 96.

IE.ADP

     - часть DPB лежит вне границ адресов образа, издавше-

     го директиву.

IE.SDP

     - код директивы или размер DPB указаны неверно.

     Примечания:

     1. Для доступа к флагам в кластере общих или  группо-

вых глобальных флагов событий образ должен быть  связан  с

соответствующим кластером.

     2. Флаги событий, задаваемые в ОС РВ, преобразуются в


                          - 91 -

                      00152-01 92 08


допустимые в МОС ВП флаги (см. подраздел 2.5).

     3. В МОС ВП такая директива отсутствует; она  исполь-

зуется в ОС РВ. В МОС ВП для завершения образа по  условию

используются две программы системного обслуживания: READEF

(читать флаг события) и, если необходимо, EXIT  (завершить

образ).



     4.2.16. Директива EXIT$S (завершить задачу)



     Директива EXIT$S завершает выполнение образа,  издав-

шего директиву.

     Макровызов

     EXIT$S [ош]

где  ош - адрес программы обработки ошибки.

     Коды завершения, возвращаемые в DSW

IE.ADP

     - часть DPB лежит вне границ адресов образа, издавше-

     го директиву.

IE.SDP

     - код директивы или размер DPB указаны неверно.

     Примечания:

     1. Возврат в образ возможен только в том случае, ког-

да директива отвергнута.

     2. МОС ВП выполняет от имени образа, издавшего дирек-

тиву EXIT$S, программу системного обслуживания  EXIT  (за-

вершить образ). Система выдает код успешного завершения.




                          - 92 -

                      00152-01 92 08


     4.2.17. Директива EXST$ (завершить задачу и выдать

состояние)



     Директива EXST$ завершает выполнение образа, издавше-

го директиву, и передает код завершения образа.

     Макровызов

     EXST$ сост [,ош]

где  сост - код состояния при выходе,

     ош - адрес программы обработки ошибки.

     Возможные значения кодов состояния

EX$SUC - нормальное завершение (RSX$_EXITSTATUS).

EX$WAR - предупреждение (RSX$_EXITSTATUS).

EX$ERR - ненормальное завершение (RSX$_EXITSTATUS).

EX$SEV - завершение из-за грубой ошибки (RSX$_EXITSTATUS).

     Коды завершения, возвращаемые в DSW

IE.ADP

     - часть DPB лежит вне границ адресов образа, издавше-

     го директиву.

IE.SDP

     - код директивы или размер DPB указаны неверно.

     Примечания:

     1. Возврат в образ возможен только в том случае, если

директива отвергнута.

     2. МОС ВП выполняет от имени образа, издавшего дирек-

тиву EXST$, программу системного обслуживания EXIT (завер-

шить образ), указывая код состояния образа.



     4.2.18. Директива EXTK$ (расширить память задачи)



     Директива EXTK$ изменяет размер памяти задачи, издав-


                          - 93 -

                      00152-01 92 08


шей директиву, на положительную или отрицательную величину

в 32-словных блоках. Если в директиве не указано  значение

приращения, МОС ВП восстанавливает  первоначальный  размер

образа.

     Макровызов

     EXTK$ [прир]

где  прир -  положительное  или  отрицательное  число, ра-

вное числу 32-словных блоков, на которое увеличивается или

уменьшается размер задачи.

     Коды завершения, возвращаемые в DSW

IS.SUC

     - успешное завершение директивы.

IE.ALG

     - образ, издавший директиву, пытается уменьшить  раз-

     мер своей памяти до размера, меньшего, чем длина бло-

     ка заголовка задачи; либо  образ  пытается  расширить

     свой размер свыше 32 Kслов; либо образ пытается  рас-

     ширить свой размер свыше базы библиотеки  или  общего

     блока, отображаемого задачей.

IE.ADP

     - часть DPB лежит вне границ адресов образа, издавше-

     го директиву.

IE.SDP

     - код директивы или размер DPB указаны неверно.

     Примечания:

     1. Образ  не  может  быть  расширен  свыше 64 Кбайтов

(32 Кслов) адресного пространства или, если задача исполь-

зует библиотеки или общие блоки, свыше базы библиотеки или

общего блока.

     2. Образ может расширить себя до базы  своей  секции,


                          - 94 -

                      00152-01 92 08


доступной только для чтения.



     4.2.19. Директива GLUN$ (дать информацию об

устройстве с заданным логическим номером)



     Директива GLUN$ заполняет 6-словный буфер информацией

о физическом устройстве, логический номер  (LUN)  которого

указан в директиве.

     Макровызов

     GLUN$ лгн, буф

где  лгн - логический  номер  устройства,

     буф - адрес 6-словного буфера для получения  информа-

ции об устройстве.

     Формат буфера

WD.00 - имя назначенного устройства.

WD.01 - номер назначенного устройства в младшем байте; ус-

      тановленный старший бит слова указывает, что драйвер

      загружен.

WD.02 - первое слово характеристик устройства.

WD.03, WD.04 - информация, зависящая от устройства. Содер-

             жимое  этого  длинного  слова  описано в [7].

             Диска в  этом  поле возвращается максимальный

             логический номер блока.

WD.05 - размер стандартного буферA устройства, по  умолча-

      нию.

     Формат первого слова характеристик устройства (WD.02)

бит 0 - устройство ориентировано на записи (FD.REC).

бит 1 - устройство с управлением кареткой (FD.CCL).

бит 2 - терминальное устройство (1=да) (FD.TTY).

бит 3 - устройство с файловой структурой (FD.DIR).


                          - 95 -

                      00152-01 92 08


бит 4 - устройство с единственным каталогоM (FD.SDI).

бит 5 - устройство последовательного доступа (FD.SQD).

бит 6 - устройство, обслуживаемое через спул.

бит 7 -  резерв.

бит 8 -  резерв.

бит 9 -  резерв.

бит 10 - обеспечивается выполнение диагностических

       функций.

бит 11 - обеспечивается программная  блокировка записи

       на устройство.

бит 12 - 0.

бит 13 - 0.

бит 14 - устройство, монтируемое как устройство с фай-

       ловой структурой ОС РВ.

бит 15 - монтируемое устройство.

     Коды завершения, возвращаемые в DSW

IS.SUC

     - успешное завершение директивы.

IE.ULN

     - неназначенный LUN.

IE.ILU

     - недопустимый логический номер устройства.

IE.аDP

     - часть DPB или буфер лежат вне границ адресов  обра-

     за, издавшего директиву.

IE.SDP

     - код директивы или размер DPB указаны неверно.

     Примечания:

     1. МОС ВП выполняет от имени образа, издавшего дирек-

тиву GLUN$, программу системного обслуживания GETCHN  (по-


                          - 96 -

                      00152-01 92 08


лучить информацию о канале ввода-вывода).

     2. Прежде, чем будет возвращена информация об устрой-

стве, МОС ВП преобразует имя и номер устройства, назначен-

ные логическому номеру, из стандартов  МОС ВП  в  стандарт

ОС РВ.

     Для этого МОС ВП  вычитает  код  символа  A  (в  коде

КОИ-8) из символьного  кода  буквы,  представляющей  номер

контроллера, и результат умножает на 16 (десятичное).  По-

лученное   значение  суммируется  с   номером   устройства

МОС ВП, преобразованным из десятичного значения в  восьме-

ричное. В результате  будет  получен  номер  устройства  в

стандартах ОС РВ; он добавляется к  двухбуквенному   имени

устройства. Например, имя устройства TTA2 преобразуется  в

имя устройства ОС РВ TT2.

     TTA2 к TT2: номер устройства=('A'-'A')*16+2=0*16+2=2

     3. Если устройство, к которому назначен LUN, является

устройством, обслуживаемым через спул, например, построч-

но-печатающее устройство, МОС ВП возвращает характеристи-

ки промежуточного устройства, например, диска.

     4. Почтовые ящики имеют 16-битные  номера  устройств.

Директива GLUN$ возвращает в первом слове буфера младшие 8

бит номера устройства. Поэтому при использовании почтового

ящика обращение по логическому имени предпочтительнее, чем

использование возвращаемого номера устройства.



     4.2.20. Директива GMCR$ (дать командную строку)



     Директива GMCR$ позволяет системе передать 80-байтную

командную строку образу, издавшему директиву.  Эта  строка

является командной строкой, использованной для вызова  об-


                          - 97 -

                      00152-01 92 08


раза.

     Макровызов

     GMCR$

     Коды завершения, возвращаемые в DSW

+N

     - успешное завершение директивы; N - это число  пере-

     данных байтов, исключая ограничительный символ  стро-

     ки; однако ограничительный символ находится в буфере.

IE.AST

     - для  образа,  издавшего  директиву,  нет  командной

     строки, т.е. либо образ был  запрошен  командой  RUN,

     либо образ уже получил строку по директиве GMCR$.

IE.ADP

     - часть DPB лежит вне границ адресов образа, издавше-

     го директиву.

IE.SDP

     - код директивы или размер DPB указаны неверно.

     Примечания:

     1. Система обрабатывает  командную  строку  следующим

образом:

     - заменяет знаки табуляции на единичные пробелы;

     - заменяет несколько пробелов одним;

     - преобразует маленькие символы в большие;

     - удаляет все концевые пробелы.

     2. Ограничитель <CR> является  последним  символом  в

строке.

     3. Строка, предназначенная  образу,  может  быть  ре-

зультатом команды интепретатора DCL, изданной  пользовате-

лем.


                          - 98 -

                      00152-01 92 08


     Форматы командной строки в DCL:

     1) $ MCR имя строка

     Пример. $ MCR PIP  LP:=MYFILE

     2) $ MCR

        MCR>имя  командная строка

     Пример. $ MCR

             MCR> PIP LP:=MYFILE

     4. Строка, передаваемая образу может быть результатом

команды интерпретатора MCR, изданной пользователем.

     Форматы командной строки в мCR:

     1) >имя строка

     Пример. >PIP LP:=MYFILE

     2) >имя_задачи

     Пример. >PIP

             PIP>LP:=MYFILE

     5. Строка, получаемая по директиве GMCR$, зависит  от

способа издания команды. Если команда издана из MCR и  со-

держит строку для образа, например, LP:=MYFILE, то  образу

передаются команда, строка  и общая длина командной  стро-

ки. Если команда была издана из DCL, TO команда MCR и сле-

дующие за ней пробелы удаляются до того, как строка  будет

передана образу.

     Пример.

     $ MCR PIP LP:=MYFILE

     или

     >PIP LP:=MYFILE

     В результате любой из этих  команд  образу, издавшему

директиву GMCR$, передается одна и та же  строка длиной 14

байтов, а именно, PIP LP:=MYFILE.

     Если строка для образа не задана, то МОС ВП возвраща-


                          - 99 -

                      00152-01 92 08


ет командную строку нулевой длины.

     6. Если образ вызывается по команде RUN интерпретато-

ра MCR или DCL, то длина командной строки равна 0.



     4.2.21. Директива GPRT$ (дать параметры раздела)



     Директива GPRT$ возвращает информацию о разделе в за-

данном трехсловном буфере. В МОС ВП нет  понятия  раздела,

поэтому система возвращает данные, совпадающие с  информа-

цией, которую выдает система ОС РВ о  системно-управляемом

разделе GEN, начинающемся с адреса 40000(8).

     Макровызов

     GPRT$ [разд],буф

где  разд - имя раздела;

     буф - адрес 3-словного буфера для параметров раздела.

     Формат буфера

WD.0 - 400(8).

WD.1 - размер  образа, включая все библиотеки (в  32-слов-

     ных блоках).

WD.2 - значение 0 - признак системно-управляемого раздела.

     Коды завершения, возвращаемые в DSW.

     Успешное завершение директивы указывается  установкой

в 0 бита C, в DSW засылается нуль, чтобы указать, что сис-

тема с диспетчером памяти.

IE.ADP

     - часть DPB или буфер лежат вне границ адресов  обра-

     за, издавшего директиву.

IE.SDP

     - код директивы или размер DPB указаны неверно.




                          - 100 -

                      00152-01 92 08


     4.2.22. Директива GTIM$ (дать параметры времени)



     Директива GTIM$ заполняет 8-словный буфер  значениями

текущего времени. Все параметры времени  возвращаются  как

двоичные числа. Диапазон значений  параметров  (десятичные

значения) приведен в описании формата буфера.

     Макровызов

     GTIM$ буф

где буф - адрес 8-словного буфера.

     Формат буфера

WD.0 - год (начиная с 1900).

WD.1 - месяц года (1 - 12).

WD.2 - день месяца (1 - 31).

WD.3 - час дня (0 - 23).

WD.4 - минуты (0 - 59).

WD.5 - секунды (0 - 59).

WD.6 - тики (0 - 99).

WD.7 - число тиков в секунду (100 тиков в секунду).

     Коды завершения, возвращаемые в DSW

IS.SUC

     - успешное завершение директивы.

IE.ADP

     - часть DPB или буфер лежат вне границ адресов  обра-

     за, издавшего директиву.

IE.SDP

     - код директивы или размер DPB указаны неверно.

     Примечания:

     1. МОС ВП выполняет от имени образа, издавшего дирек-

тиву GTIM$, программу системного обслуживания GETTIM  (по-

лучить время).


                          - 101 -

                      00152-01 92 08


     2. МОС ВП поддерживает часы с измерением одна секунда

равна 100 тикам.



     4.2.23. Директива GTSK$ (дать параметры задачи)



     Директива GTSK$ заполняет 16-словный буфер параметра-

ми, относящимися к процессу, издавшему директиву.

     Макровызов

     GTSK$ буф

где  буф - адрес 16-словного буфера.

     Формат буфера

WD.00 - первая половина имени  процесса  в  RADIX-50, если

      имя есть.

WD.01 - вторая половина имени процесса  в  RADIX-50,  если

      имя есть.

WD.02 - имя раздела в RADIX-50 (GEN).

WD.03 - имя раздела в RADIX-50 (пробелы).

WD.04 - не определяется.

WD.05 - не определяется.

WD.06 - приоритет выполнения из заголовка задачи ОС РВ.

WD.07 - младшие байты кода группы и члена группы UIC.

WD.08 - число логических устройств ввода-вывода (LUN).

WD.09 - не определяется.

WD.10 - не определяется.

WD.11 - адрес таблицы SST-векторов задачи.

WD.12 - размер таблицы SST-векторов задачи в словах.

WD.13 - размер в байтах адресного  окна  образа,  исключая

      библиотеки и общие области.

WD.14 - признак системы, в  которой  процесс   выполняется

      (для МОС ВП - 5).


                          - 102 -

                      00152-01 92 08


WD.15 - старшие байты кода группы и члена группы UIC.

     Коды завершения, возвращаемые в DSW

IS.SUC

     - успешное завершение директивы.

IE.ADP

     - часть DPB или буфер лежат вне границ адресов  обра-

     за, издавшего директиву.

IE.SDP

     - код директивы или размер DPB указаны неверно.



     4.2.24. Директива MRKT$  (об'явить важное событие

через таймерный интервал)



     Директива MRKT$ заставляет управляющую программу  ус-

тановить флаг события и/или об'явить AST-прерывание  через

указанный интервал времени.

     Интервал отсчитывается с момента  издания  директивы.

Если флаг события определен, то он обнуляется при  издании

директивы и устанавливается,  когда  интервал  закончился.

Если адрес точки входа в AST-программу задан, то AST имеет

место по истечении интервала.

     Макровызов

     MRKT$ [флг], врем, еднц [,ACT]

где  флг - номер флага события;

     врем - величина интервала времени;

     еднц - единица измерения интервала времени;

     ACT - адрес входа в программу обслуживания AST-преры-

вания.


                          - 103 -

                      00152-01 92 08


     Коды завершения, возвращаемые в DSW

IS.SUC

     - успешное завершение директивы.

IE.ITI

     - неверный параметр времени.

IE.IEF

     - неверный номер флага события: флаг в пределах от 33

     до 64, но образ не связан с этим общим  флагом  собы-

     тия; либо флаг в пределах от 65 до 96,  но  образ  не

     связан с этим групповым  глобальным  флагом  события;

     либо флаг не в пределах от 1 до 96.

IE.UPN

     - недостаточно динамической памяти (SS$_INSFMEM).

IE.NOD

     - превышена квота процесса (SS$_EXQUOTA).

IE.ADP

     - часть DPB лежит вне границ образа, издавшего дирек-

     тиву.

IE.SDP

     - код директивы или размер DPB указаны неверно.

     Примечания:

     1. МОС ВП выполняет от имени процесса, издавшего  ди-

рективу MRKT$, программу системного  обслуживания  SETTIMR

(установить таймер).

     2.  Если  адрес  AST-программы  задан , то на   входе

AST-программа получит следующее состояние стека:

     - 0 (SP+08 - SP+14);

     - PS процесса в момент AST-прерывания (SP+06);

     - PC процесса в момент AST-прерывания (SP+04);

     - DSW процесса в  момент AST-прерывания (SP+02);


                          - 104 -

                      00152-01 92 08


     - номер флага события или 0, если  флаг  Hе был задан

в директиве MRKT$ (SP+00).

     Номер флага события должен быть удален из стека перед

тем, как выполнится директива ASTX$S (выход  из  программы

обслуживания AST).

     3. МОС ВП возвращает код  IE.ITI,  если  в  директиве

указан недопустимый  параметр  времени.  Параметр  времени

состоит из двух компонентов:  величина  интервала  времени

(врем) и единицы измерения интервала времени  (еднц).  До-

пустимая величина времени (врем) зависит от единиц измере-

ния интервала времени (еднц). Интервал времени может изме-

ряться в следующих единицах:

     - тики (тик - 1/100 секунды) - 1;

     - секунды - 2;

     - минуты - 3;

     - часы - 4.

     Величина "врем" есть число единиц времени.  Следующий

список описывает допустимые значения интервала времени. Ни

в одном из перечисленных случаев величина "врем" не должна

превышать 24 часа:

     - если "еднц" = 0, 1 или 2, то "врем" может быть  по-

ложительным числом, занимающим не более 15 битов;

     - если "еднц" = 3, то  максимальное  значение  "врем"

может быть 1440(10);

     - если "еднц" = 4, то  максимальное  значение  "врем"

может быть 24(10).

     4. Для доступа к флагам в кластере общих или  группо-

вых глобальных флагов событий  образ  задачи  должен  быть

связан с соответствующим кластером.

     5. Флаги событий, задаваемые в ОС РВ, преобразуются в


                          - 105 -

                      00152-01 92 08


допустимые в МОС ВП флаги (см. подраздел 2.5).

     6. МОС ВП определяет для процесса квоту AST,  которые

процесс может иметь одновременно.



     4.2.25. Директива QIO$  (поставить в очередь запрос

ввода-вывода)



     Директива QIO$ ставит запрос ввода-вывода  в  очередь

запросов к указанному физическому устройству,  упорядочен-

ную по приоритетам. Физическое устройство  задается  логи-

ческим номером (LUN).

     Если в директиве указан флаг события, то МОС ВП обну-

ляет его, когда запрос ставится в очередь, и устанавливает

при завершении обработки этого запроса.

     Кроме того, когда запрос  ставится  в  очередь,  блок

состояния ввода-вывода очищается; при завершении запроса в

блок состояния засылается код завершения ввода-вывода.

     Если адрес AST-программы задан, то по завершении вво-

да-вывода будет об'явлено AST-прерывание, программа  обра-

ботки AST получит в стеке слово маски ожидаемых  процессом

флагов (WAITFOR), PS, PC, DSW и адрес блока состояния вво-

да-вывода.

     Макровызов

     QIO$ кдф, лгн, [флг], [прт], [ствв], [ACT], [прм]

где  кдф - код функции ввода-вывода;

     лгн - логический номер устройства;

     флг - номер флага события;

     прт - приоритет  (игнорируется,  но  место  параметра

должно быть указано запятой);

     ствв - адрес блока состояния ввода-вывода;


                          - 106 -

                      00152-01 92 08


     ACT - адрес программы обработки асинхронного прерыва-

ния;

     прм - список параметров в формате <Р1,...,Р6>.

     Коды завершения, возвращаемые в DSW

IS.SUC

     - успешное завершение директивы.

IE.ULN

     - неназначенный LUN.

IE.ILU

     - неверный LUN.

IE.IEF

     - неверный номер флага события: флаг в пределах от 33

     до 64, но образ не связан с этим общим  флагом  собы-

     тия; либо флаг в пределах от 65 до 96,  но  образ  не

     связан с этим групповым  глобальным  флагом  события;

     либо флаг не в пределах от 1 до 96.

IE.NOD

     - превышена квота (SS$_EXQUOTA).

IE.UPN

     - недостаточно динамической памяти (SS$_INSFMEM).

IE.ADP

     - часть DPB или блок состояния ввода-вывода лежат вне

     границ адресов образа, издавшего директиву.

IE.SDP

     - код директивы или размер DPB указаны неверно.

     Примечания:

     1. МОС ВП выполняет от имени процесса, издавшего  ди-

рективу QIO$, программу системного обслуживания QIO  (пос-

тавить в очередь запрос ввода-вывода) (см. раздел 5).

     2. Если адрес AST-программы задан, то при входе в нее


                          - 107 -

                      00152-01 92 08


состояние стека будет следующее:

     - 0 (SP+10 - SP+16);

     - PS процесса в момент AST-прерывания (SP+06);

     - PC процесса в момент AST-прерывания (SP+04);

     - DSW процесса в момент AST-прерывания (SP+02);

     - адрес блока состояния ввода-вывода или 0 (SP+00).

если в директиве QIO$ он не задан.

     Адрес блока состояния ввода-вывода, который  является

параметром, зависящим от типа прерывания, должен быть уда-

лен из стека до выполнения директивы ASTX$S.

     3. МОС ВП  посылает  четыре  нулевых  слова  в   стек

с SP+16 до SP+10. ОС РВ посылает в стек три  слова с неоп-

ределенным содержимым и однословную маску флагов событий.

     4. Если директива  отвергнута,  то  не  гарантируется

очистка или установка указанного  флага  события.  Поэтому

процесс, который ожидает отвергнутую директиву QIO$, может

ожидать сколь угодно долго.

     5. Для доступа к флагам в кластере общих или  группо-

вых глобальных флагов событий  образ  задачи  должен  быть

связан с соответствующим кластером.

     6. Флаги событий, задаваемые в ОС РВ, преобразуются в

допустимые в МОС ВП флаги (см. подраздел 2.5).

     8. МОС ВП определяет для процесса квоту AST,  которые

процесс может иметь одновременно.



     4.2.26. Директива QIOW$  (поставить в очередь запрос

ввода-вывода и ждать)



     Директива QIOW$ отличается от директивы  QIO$  только

одним: если в директиве QIOW$ указан флаг  события,  то  к


                          - 108 -

                      00152-01 92 08


директиве QIO$ автоматически добавляется  директива  WTSE$

(ждать единичный флаг). Если флаг не задан,  то  директива

QIOW$ выполняется так же, как директива QIO$.

     Макровызов

     QIOW$ кдф, лгн, флг, [прт], [ствв], [ACT], [прм]

где  кдф - код функции ввода-вывода;

     лгн - логический номер устройства;

     флг - номер флага события;

     прт - приоритет  (игнорируется,  но  место  параметра

должно быть указано запятой);

     ствв - адрес блока состояния ввода-вывода;

     ACT - адрес AST-программы;

     прм - список параметров в виде <Р1,...,Р6>.

     Коды завершения, возвращаемые в DSW

IS.SUC

     - успешное завершение директивы.

IE.ULN

     - неназначенный LUN.

IE.ILU

     - неверный LUN.

IE.IEF

     - неверный номер флага события: флаг в пределах от 33

     до 64, но образ не связан с этим общим  флагом  собы-

     тия; либо флаг в пределах от 65 до 96,  но  образ  не

     связан с этим групповым  глобальным  флагом  события;

     либо флаг не в пределах от 1 до 96.

IE.UPN

     - недостаточно динамической памяти (SS$_INSFMEM).

IE.NOD

     - превышена квота (SS$_EXQUOTA).


                          - 109 -

                      00152-01 92 08


IE.ADP

     - часть DPB или блока  состояния  ввода-вывода  лежат
      
     вне границ образа, издавшего директиву.

IE.SDP

     - код директивы или размер DPB указаны неверно.

     Примечания:

     1. МОС ВП выполняет от имени образа, издавшего дирек-

тиву QIOW$, программу системного обслуживания QIOW (поста-

вить в очередь запрос ввода-вывода и ждать флаг события).

     2. Остальные особенности выполнения директивы  совпа-

дают   с   особенностями    выполнения   директивы   QIO$

(п. 4.2.25).



     4.2.27. Директива RCST$ (получить данные или

остановить задачу)



     По директиве RCST$ система пытается читать  сообщение

из почтового ящика, созданного в момент  загрузки  образа,

содержащего директиву. Если данные не были посланы в  поч-

товый ящик другим процессом, то процесс, издавший директи-

ву,  останавливается  (переводится  в  состояние  спячки).

эта директива не может быть издана из программы обслужива-

ния AST.

     Oбраз получает имя посылающего процесса (два слова  B

коде RADIX-50) и 13-словный блок данных в 15-словном буфе-

ре.

     Макровызов

     RCST$ [имя], буф

где  имя - имя задачи, пославшей данные  (системой  МОС ВП

игнорируется);


                          - 110 -

                      00152-01 92 08


     буф - адрес 15-словного буфера, в котором задача  по-

лучит имя посылающей задачи и посланные ею данные.

     Коды завершения, возвращаемые в DSW

IS.SUC

     - успешное завершение директивы; данные из  почтового

     ящика получены.

IS.SET

     - данные из почтового ящика не были получены или поч-

     тового ящика нет и процесс  был  остановлен  (прежде,

     чем задача получит этот код  завершения,  она  должна

     быть выведена из останова).

IE.NOD

     - превышена квота (SS$_EXQUOTA).

IE.UPN

     - недостаточно динамической памяти (SS$_INSFMEM).

IE.AST

     - директива была издана из AST-программы и данные  из

     почтового ящика не получены или почтового ящика нет.

IE.ADP

     - часть DPB находится вне границ адресов образа,  из-

     давшего директиву.

IE.SDP

     - код директивы или размер DPB указаны неверно.

     Примечания:

     1. МОС ВП выполняет от имени процесса, издавшего  ди-

рективу RCST$, программу системного обслуживания QIO (пос-

тавить в очередь запрос ввода-вывода) и, если  необходимо,

программу системного обслуживания HIBER (заснуть).  Опера-

ция ввода-вывода читает данные из почтового ящика, связан-

ного с процессом системой МОС ВП, при загрузке образа.


                          - 111 -

                      00152-01 92 08


     2. Имя почтового ящика имеет вид: RCVDимя_процесса.

     3. Почтовый ящик не создается до тех пор, пока  образ

не начнет выполняться.

     4. Если образ использует директиву получения  данных,

то при построении задачи ей должно быть дано имя. Это  оз-

начает, что блок метки образа должен содержать имя задачи.

МОС ВП использует наличие имени задачи как указатель того,

что образ может получать данные, и  выполняет  необходимые

действия.

     5. Для почтового ящика  устанавливается  код  защиты,

разрешающий доступ на чтение для владельца (для получающе-

го процесса) и доступ на запись для группы (для посылающих

процессов). Поэтому директива RCST$ может быть использова-

на только для передачи данных между процессами внутри  од-

ной и той же группы.

     6. Если почтовый ящик не содержит  данных   или  если

почтового ящика нет, то для процесса, издавшего  директиву

RCST$, МОС ВП выполняет программу системного  обслуживания

HIBER (заснуть) и выдает код завершения  IS.SET.  Процесс,

который издал директиву,  не  может  получить этот код за-

вершения до тех пор, пока процесс не будет  возобновлен по

директиве USTP$ (программой системного обслуживания WAKE).

     7. Если процесс, издавший директиву RCST$, остановлен

из-за отсутствия данных в почтовом ящике, то когда  данные

помещаются в почтовый ящик, процесс автоматически из оста-

нова не выводится. Задача, посылающая данные,  должна  во-

зобновить остановленную задачу, издав директиву USTP$ (вы-

вести задачу из останова). Чтобы получить  данные,  возоб-

новленная задача должна снова издать одну из директив  по-

лучения данных: RCVD (получить  данные),  RCST$  (получить


                          - 112 -

                      00152-01 92 08


данные или остановить задачу), RCVX$ (получить данные  или

выйти).



     4.2.28. Директива RCVD$ (получить данные)



     По директиве RCVD$ система получает сообщение из поч-

тового ящика, созданного при загрузке образа,  и  помещает

это сообщение в буфер задачи.

     Директива  передает  задаче   в   15-словном   буфере

двухсловное имя посылающего процесса (в коде  RADIX-50)  и

13-словный блок данных.

     Макровызов

     RCVD$ [имя], буф

где имя - имя задачи, пославшей данные  (системой  МОС  ВП

игнорируется);

    буф - адрес 15-словного буфера для  получения данных.

     Коды завершения, возвращаемые в DSW

IS.SUC

     - успешное завершение директивы.

IE.NOD

     - превышена квота (SS$_EXQUOTA).

IE.UPN

     - недостаточно динамической памяти (SS$_INSFMEM).

IE.ITS

     - в текущий момент нет данных в  почтовом  ящике  или

     нет почтового ящика (код по умолчанию).

IE.ADP

     - часть DPB или буфер лежат вне границ адресов  обра-

     за, издавшего директиву.


                          - 113 -

                      00152-01 92 08


IE.SDP

     - код директивы или размер DPB указаны неверно.

     Примечания:

     1. МОС ВП выполняет от имени процесса, издавшего  ди-

рективу RCVD$, программу системного обслуживания QIO (пос-

тавить в очередь запрос ввода-вывода) с  функцией  чтения.

Операция ввода-вывода читает данные  из  почтового  ящика,

который система связала с данным  процессом  при  загрузке

образа.

     2. Имя почтового ящика имеет вид: RCVDимя_процесса.

     3. Почтовый ящик не создается до тех пор, пока  образ

не начнет выполняться.

     4. Для почтового ящика  устанавливается  код  защиты,

разрешающий доступ на чтение для владельца (для получающе-

го процесса) и доступ на запись для группы (для посылающих

процессов). Поэтому директива RCVD$ может быть использова-

на только для передачи данных между процессами внутри  од-

ной и той же группы.

     5. Образ, использующий директиву  RCVD$,  должен  при

построении получить имя, то есть блок метки образа  должен

содержать имя задачи. МОС ВП использует наличие имени  за-

дачи как указатель того, что образ может получить  данные,

и выполняет необходимые действия.



     4.2.29. Директива RCVX$  (получить данные или выйти)



     По директиве RCVX$ система получает сообщение из поч-

тового ящика, созданного при  загрузке  образа.  Предвари-

тельно другой процесс должен послать в почтовый ящик сооб-

щение. Если данные не были посланы, то образ завершается.


                          - 114 -

                      00152-01 92 08


     Двухсловное имя посылающего образа (в коде  RADIX-50)

и 13-словный блок данных передаются  в  15-словный  буфер,

указанный в директиве.

     Макровызов

     RCVX [имя], буф

где имя - имя задачи пославшей данные (системой МОС ВП иг-

норируется);

    буф - адрес 15-словного буфера для получения данных.

     Коды завершения, возвращаемые в DSW

IS.SUC

     - успешное завершение директивы.

IE.NOD

     - превышена квота (SS$_EXQUOTA).

IE.UPN

     - недостаточно динамической памяти (SS$_INSFMEM).

IE.ADP

     - часть DPB или буфер лежат вне границ адресов  обра-

     за, издавшего директиву.

IE.SDP

     - код директивы или размер DPB указаны неверно.

     Примечания:

     1. МОС ВП выполняет от имени процесса, издавшего  ди-

рективу RCVX$, программу системного обслуживания QIO (пос-

тавить в очередь запрос ввода-вывода) и, если  необходимо,

программу системного обслуживания EXIT (завершить  образ).

операция ввода-вывода читает данные  из  почтового  ящика,

который система МОС ВП связала с  процессом  при  загрузке

образа.

     2. Имя почтового ящика имеет вид: RCVDимя_процесса.

     3. Почтовый ящик не  создается до тех пор, пока образ


                          - 115 -

                      00152-01 92 08


не начнет выполняться.

     4. Для  почтового ящика устанавливается  код  защиты,

разрешающий доступ на чтение для владельца (для получающе-

го процесса) и доступ на запись для группы (для посылающих

процессов). Поэтому эта директива  RCVX$  может  быть  ис-

пользована только для пересылки  данных  между  процессами

внутри одной и той же группы.

     5. Если данные  из  почтового  ящика  не получены, то

мос вп выполняет для образа программу системного  обслужи-

вания EXIT (завершить образ). Выдается код завершения  об-

раза SS$_NORMAL.

     6. Образ, использующий директиву  RCVX$,  должен  при

построении получить имя, указанное во время построения за-

дачи, то есть блок метки образа должен содержать имя зада-

чи. МОС ВП использует наличие имени задачи, как  указатель

того, что образ может получить данные, и выполняет необхо-

 димые действия.

     7. Эта директива не обеспечивает взаимную  блокировку

между получающим  и  посылающим  процессами, такую  как  в

ос рв.

     8. Если почтовый ящик не существует, то образ  завер-

шается с кодом успешного завершения образа.



     4.2.30. Директива RDAF$  (считать все флаги)



     Директива RDAF$ считывает локальные и общие флаги со-

бытий для процесса, издавшего директиву, и  записывает  их

значение в 64-битный (4-словный) буфер.

     Макровызов

     RDAF$ буф


                          - 116 -

                      00152-01 92 08


где  буф - адрес 4-словного буфера.

     Формат буфера

WD.00 - локальные флаги  1-16.

WD.01 - локальные флаги 17-32.

WD.02 - общие флаги 33-48.

WD.03 - общие флаги 49-64.

     Коды завершения, возвращаемые в DSW

IS.SUC

     - успешное завершение директивы.

IE.ADP

     - часть DPB или буфер лежат вне границ адресов  обра-

     за, издавшего директиву.

IE.SDP

     - код директивы или размер DPB указаны неверно.

     Примечания:

     1. МОС ВП выполняет от имени образа, издавшего дирек-

тиву RDAF$, программу системного обслуживания READEF  (чи-

тать флаг события).

     2. Директива RDAF$ не считывает групповые  глобальные

флаги. Все 96 флагов считывает директива RDXF$.

     3. Если нет кластера общих флагов событий, связанного

с процессом, то в качестве значений общих флагов возвраща-

ются нули.

     4. Для доступа к флагам в кластере общих флагов собы-

тий образ задачи  должен  быть  связан  с  соответствующим

кластером.

     5. Флаги событий, задаваемые в ОС РВ, преобразуются в

допустимые в МОС ВП флаги (см. подраздел 2.5).




                          - 117 -

                      00152-01 92 08


     4.2.31. Директива RDXF$  (считать расширенные флаги)



     Директива RDXF$ считывает для процесса, издавшего ди-

рективу, все локальные, общие и глобальные флаги и записы-

вает их значение в 96-битный (6-словный) буфер.

     Макровызов

     RDXF$ буф

где  буф - адрес 6-словного буфера.

     Формат буфера

WD.00 - локальные флаги 1-16.

WD.01 - локальные флаги 17-32.

WD.02 - общие флаги 33-48.

WD.03 - общие флаги 49-64.

WD.04 - групповые глобальные флаги 65-80.

WD.05 - групповые глобальные флаги 81-96.

     Коды завершения, возвращаемые в DSW

IS.SUC

     - успешное завершение директивы.

IS.CLR

     - групповые глобальные флаги не существуют; четвертое

     и пятое слова буфера содержат нули.

IE.ADP

     - часть DPB и буфер лежат вне границ адресов  образа,

     издавшего директиву.

IE.SDP

     - код директивы или размер DPB указаны неверно.

     Примечания:

     1. МОС ВП выполняет от имени образа, издавшего дирек-

тиву RDXF$, программу системного обслуживания READEF  (чи-

тать флаг события).


                          - 118 -

                      00152-01 92 08


     2. Для доступа к флагам в кластере общих или  группо-

вых глобальных флагов событий  образ  задачи  должен  быть

связан с соответствующим кластером.

     3. Флаги событий, задаваемые в ОС РВ, преобразуются в

допустимые в МОС ВП флаги (см. подраздел 2.5).

     4. Если нет кластера общих флагов событий, связанного

с процессом, то в качестве значений общих флагов возвраща-

ются нули.

     5. Если нет кластера групповых глобальных флагов  со-

бытий, связанного с процессом, то глобальные флаги возвра-

щаются как все нули, и выдается код IS.CLR.



     4.2.32. Директива RQST$ (запустить задачу)



     Директива RQST$ активизирует спящий процесс. Эта  ди-

ректива является часто  используемым  вариантом  директивы

RUN$.

     Макровызов

     RQST$ имя, [рзд], [прт] [, гр, чл]

где  имя - имя процесса в МОС ВП;

     рзд - имя раздела (параметр  игнорируется,  но  место

параметра должно быть указано запятой;

     прт - приоритет  (игнорируется,  но  место  параметра

должно быть указано запятой);

     гр - номер группы в коде  идентификации  пользователя

(игнорируется);

     чл - номер члена группы в коде идентификации  пользо-

вателя (игнорируется).


                          - 119 -

                      00152-01 92 08


     Коды завершения, возвращаемые в DSW

IS.SUC

     - успешное завершение директивы.

IE.INS

     - имя процесса неизвестно (код по умолчанию).

IE.PRI

     - нарушение привилегий (SS$_NOPRIV).

IE.UPN

     - недостаточно динамической памяти (SS$_INSFMEM).

IE.NOD

     - превышена квота процесса (SS$_EXQUOTA).

IE.ADP

     - часть DPB лежит вне границ адресов образа, издавше-

     Го директиву.

IE.SDP

     - код директивы или размер DPB указаны неверно.

     Примечания:

     1. МОС ВП выполняет от имени процесса, издавшего  ди-

рективу  RQST$,  программу  системного  обслуживания  WAKE

(пробудить процесс).

     2. Запрашиваемый процесс в текущий момент должен при-

сутствовать в системе, т. е. он  должен  либо   находиться

в спячке, либо быть активным.

     3. Образ, издавший директиву,  должен  выполняться  в

процессе, удовлетворяющем одному из следующих требований:

     - принадлежит той же самой группе, что и  запрашивае-

мый процесс, и имеет привилегию GROUP;

     - имеет привилегию WORLD.

     4. МОС ВП  имеет  индикатор,  указывающий,  не был ли

издан запрос  на  пробуждение для активного процесса. Если


                          - 120 -

                      00152-01 92 08


индикатор установлен   и процесс  издал запрос на  переход

в состояние  спячки, то  процесс  остается   активным,   а

индикатор очищается. Последующий запрос на переход процес-

са  в состояние спячки переводит процесс в спячку.

     5. Состояние спячки, которое вызвано директивами  ос-

танова RCST$  (получить  данные  или  остановить  задачу),

STLO$ (остановить задачу до установки диз'юнкции  флагов),

STOP$S (остановить задачу), STSE$  (остановить  задачу  до

установки единичного флага), не может быть отменено дирек-

тивой RQST$.



     4.2.33. Директива RSUM$  (возобновить задачу)



     Директива RSUM$ пробуждает процесс, который находился

в состоянии спячки.

     Макровызов

     RSUM$ имя

где  имя - имя процесса в МОС ВП.

     Коды завершения, возвращаемые в DSW

IS.SUC

     - успешное завершение директивы.

IE.INS

     - имя процесса неизвестно (код по умолчанию).

IE.PRI

     - нарушение привилегии (SS$_NOPRIV).

IE.UPN

     - недостаточно динамической памяти (SS$_INSFMEM).

IE.NOD

     - превышена квота процесса (SS$_EXQUOTA).


                          - 121 -

                      00152-01 92 08


IE.ADP

     - часть DPB лежит вне границ адресов образа, издавше-

     го директиву.

IE.SDP

     - код директивы или размер DPB указаны неверно.

     Примечания:

     1. МОС ВП выполняет от имени процесса, издавшего  ди-

рективу  RSUM$,  программу  системного  обслуживания  WAKE

(пробудить процесс).

     2. Образ, издавший  директиву  RSUM$,  должен  выпол-

няться в процессе, который удовлетворяет одному из следую-

щих требований:

     - принадлежит той же группе, что и процесс,  подлежа-

щий возобновлению, и имеет привилегию GROUP;

     - имеет привилегию WORLD.

     3. МОС ВП имеет индикатор, указывающий, не был ли из-

дан запрос на пробуждение  для  активного  процесса.  Если

процесс издает запрос на переход в состояние спячки, когда

индикатор установлен, то процесс остается активным, а  ин-

дикатор очищается. Последующий запрос на переход  процесса

в состояние спячки переводит процесс в спячку.

     4. Если директива RSUM$ издана для активного  образа,

то выдается код успешного завершения. Процесс остается ак-

тивным.

     5. Состояние спячки, которое вызвано директивами  ос-

танова RCST$  (получить  данные  или  остановить  задачу),

STLO$ (остановить задачу до установки диз'юнкции  флагов),

STOP$S (остановить задачу), STSE$  (остановить  задачу  до

установки единичного флага), не может быть отменено дирек-

тивой RSUM$.


                          - 122 -

                      00152-01 92 08


     4.2.34. Директива RUN$ (запустить задачу в указанное

время)



     Директива RUN$ заставляет систему активизировать про-

цесс, находящийся в спячке, в определенный момент  времени

и по желанию пользователя  периодически  повторять  запуск

этой задачи. Время диспетчеризации задачи задается  прира-

щением относительно момента запуска директивы. Если  пара-

метры прир, инт, еднц1 опущены, то директива RUN$  подобна

директиве RQST$ (запустить задачу)  с  тем  отличием,  что

процесс будет активизирован через один тик от момента  из-

дания директивы RUN$.

     Макровызов

     RUN$  имя, [рзд], [прт], [гр], [чл], [прир], еднц

[, инт, еднц1]

где  имя - имя процесса в МОС ВП;

     рзд - имя раздела (игнорируется, но  место  параметра

должно быть указано запятой);

     прт - приоритет (игнорируется);

     гр  - номер группы в коде идентификации пользователя;

     чл  - номер  члена  группы в коде идентификации поль-

зователя;

     прир - приращение времени для диспетчеризации задачи;

     еднц - единицы, в которых задано приращение времени;

     инт - величина интервала передиспетчеризации;

     еднц1 - единицы, в которых задан интервал передиспет-

черизации.

     Коды завершения, возвращаемые в DSW

IS.SUC

     - успешное завершение директивы.


                          - 123 -

                      00152-01 92 08


IE.INS

     - имя процесса неизвестно.

IE.PRI

     - нарушение привилегий (SS$_NOPRIV).

IE.UPN

     - недостаточно динамической памяти (SS$_INSFMEM).

IE.NOD

     - превышена квота процесса (SS$_EXQUOTA).

IE.ITI

     - недопустимый параметр времени.

IE.ADP

     - часть DPB лежит вне границ адресов образа, издавше-

     го директиву.

IE.SDP

     - код директивы или размер DPB указаны неверно.

     Примечания:

     1. МОС ВП выполняет от имени процесса, издавшего  ди-

рективу RUN$,  программу  системного  обслуживания  SCHDWK

(планировать пробуждение).

     2. Запрашиваемый процесс должен присутствовать в сис-

теме.

     3. Образ, издавший директиву RUN$, должен выполняться

в процессе, удовлетворяющем одному из  следующих  требова-

ний:

     - принадлежит той же группе, что  и  вызываемый  про-

цесс, и имеет привилегию GROUP;

     - имеет привилегию WORLD.

     4. МОС ВП имеет индикатор, указывающий, не был ли из-

дан запросов  на  пробуждение для активного процесса. Если

процесс издает запрос на переход в состояние спячки, когда


                          - 124 -

                      00152-01 92 08


индикатор установлен, то процесс остается активным, а  ин-

дикатор очищается. Последующий запрос на переход  процесса

в состояние спячки переводит процесс в спячку.

     5. МОС ВП возвращает в DSW код IE.ITI, если в  дирек-

тиве указан неверный параметр  времени.  Параметр  времени

состоит из  двух  компонент:  величина  интервала  времени

(прир или инт) и единицы  измерения  интервала  (еднц  или

еднц1).

     Значения интервалов времени могут измеряться в следу-

ющих единицах:

     - тики (тик равен 1/100 секунды) - 1;

     - секунды - 2;

     - минуты - 3;

     - часы - 4.

     Величина интервала времени зависит от единиц  измере-

ния интервала.  Допустимы  следующие  значения  интервалов

времени для каждой из возможных единиц измерения (во  всех

случаях величина интервала времени не должна превышать  24

часа):

     - если единица измерения 1 или 2, то величина  интер-

вала может быть любым положительным числом, занимающим  15

битов;

     - если единица измерения 3, то величина интервала  не

должнA превышать 1440 (10);

     - если единица измерения 4, то величина интервала  не

должнA превышать 24 (10).

     6. Интервал диспетчеризации - это время между издани-

ем директивы RUN$ и фактическим запуском процесса. Величи-

на этого интервала может быть задана в пределах от 1  тика

до 24 часов.


                          - 125 -

                      00152-01 92 08


     7. Состояние спячки, которое вызвано директивами  ос-

танова RCST$  (получить  данные  или  остановить  задачу),

STLO$ (остановить задачу до установки диз'юнкции  флагов),

STOP$S (остановить задачу), STSE$  (остановить  задачу  до

установки единичного флага), не может быть отменено по ди-

рективе RUN$.



     4.2.35. Директива SDAT$ (послать данные)



     Директива SDAT$ посылает 13-словное сообщение в  поч-

товый ящик.

     Если в директиве задан флаг события, то он устанавли-

вается для посылающего процесса.

     Макровызов

     SDAT$ имя, буф [, флг]

где  имя - имя получающего процесса в МОС ВП,

     буф - адрес 13-словного буфера данных,

     флг - номер флага события.

     Коды завершения, возвращаемые в DSW

IS.SUC

     - успешное завершение директивы.

Iе.INS

     - имя получающего процесса неизвестно  (код по  умол-

чанию).

IE.NOD

     - превышена квота (SS$_EXQUOTA).

IE.UPN

     - недостаточно динамической памяти (SS$_INSFMEM).

IE.PRI

     - нарушение привилегий (SS$_NOPRIV).


                          - 126 -

                      00152-01 92 08


IE.IEF

     - неверный номер флага события: флаг в пределах от 33

     до 64, но образ не связан с этим флагом события; либо

     флаг в пределах от 65 до 96, но  образ  не  связан  с

     этим групповым глобальным флагом события;  либо  флаг

     не в пределах от 1 до 96.

IE.ADP

     - часть DPB или блок данных лежAт вне границ  адресов

     образа, издавшего директиву.

IE.SDP

     - код директивы или размер DPB указаны неверно.

     Примечания:

     1. МОС ВП выполняет от имени процесса, издавшего  ди-

рективу SDAT$, программу системного обслуживания QIO (пос-

тавить в очередь запрос ввода-вывода).

операция ввода-вывода с функцией  записи записывает данные

в почтовый ящик, именуемый RCVDимя, где имя - имя получаю-

щего процесса.

     2. Посылающий процесс должен быть в  той  же  группе,

что и процесс, получающий сообщение, так  как  код  защиты

почтового ящика позволяет доступ на запись в почтовый ящик

только процессам одной группы и запрещает  доступ  процес-

сам, входящим в категорию "общий".

     3. Образ, использующий  директивы  получения  данных,

должен получить имя во время построения задачи; блок метки

такой задачи должен содержать имя задачи. МОС ВП использу-

ет наличие имени задачи как указатель того, что образ  мо-

жет получить данные, и выполняет необходимые действия.

     4. Для доступа к флагам в кластере общих или  группо-

вых глобальных флагов событий  образ  задачи  должен  быть


                          - 127 -

                      00152-01 92 08


связан с в соответствующим кластером (см. подраздел 2.5).

     5. Флаги событий, задаваемые в ОС РВ, преобразуются в

допустимые в МОС ВП флаги (см. подраздел 2.5).



     4.2.36. Директива SETF$ (установить флаг)



     Директива SETF$ устанавливает указанный флаг  события

и сообщает кодом завершения значение флага,  которое  было

перед его установкой.

     Макровызов

     SETF$ флг

где  флг - номер флага события.

     Коды завершения, возвращаемые в DSW

IS.CLR

     - перед  установкой  флаг был сброшен.

IS.SET

     - флаг уже был установлен.

IE.IEF

     - неверный номер флага события: флаг в пределах от 33

     до 64, но образ не связан с этим общим  флагом;  либо

     флаг в пределах от 65 до 96, но  образ  не  связан  с

     этим групповым глобальным флагом; либо флаг не в пре-

     делах от 1 до 96.

IE.ADP

     - часть DPB лежит вне границ адресов образа, издавше-

     го директиву.

IE.SDP

     - код директивы или размер DPB указаны неверно.

     Примечания:

     1. МОС ВП выполняет от имени образа, издавшего дирек-


                          - 128 -

                      00152-01 92 08


тиву SETF$, программу системного обслуживания SETEF (уста-

новить флаг события).

     2. Для доступа к флагам в кластере общих или  группо-

вых глобальных флагов событий  образ  задачи  должен  быть

связан с в соответствующим кластером.

     3. Флаги событий, задаваемые в ОС РВ, преобразуются в

допустимые в МОС ВП флаги (см. подраздел 2.5).



     4.2.37. Директива SFPA$ (аSт по ошибкам команд с

плавающей точкой)



     Директива SFPA$ разрешает или запрещает  AST-прерыва-

ния по ошибкам команд с плавающей точкой для  задачи,  из-

давшей директиву.

     Если адрес точки входа программы,  обслуживающей  AST

(AST-программы), задан, то для процесса, издавшего  дирек-

тиву, AST-прерывания по ошибкам команд с плавающей  точкой

будут обрабатываться, и управление будет  передаваться  на

указанную  AST-программу  всякий   раз,   как   произойдет

AST-прерывание  этого  типа.  Если   адрес   точки   входа

AST-программы не задан, AST-прерывания по ошибкам команд с

плавающей точкой не будут иметь места  до  тех  пор,  пока

снова не будет задана AST-программа.

     Макровызов

     SFPA$ [аст]

где аст - адрес точки входа AST-программы.

     Коды завершения, возвращаемые в DSW

IS.SUC

     - успешное завершение директивы.


                          - 129 -

                      00152-01 92 08


IE.UPN

     - недостаточно динамической памяти (SS$_INSFMEM).

IE.ITS

     - AST-программа уже отменена.

IE.AST

     - директива была издана из AST-программы или AST-пре-

     рывания запрещены.

IE.ADP

     - часть DPB лежит вне границ адресов образа, издавше-

     го директиву.

IE.SDP

     - код директивы или размер DPB указаны неверно.

     Примечания:

     1. Директива SFPA$ требует динамическую память.

     2. МОС ВП ставит AST по ошибке  команды  с  плавающей

точкой в очередь AST, когда происходит прерывание  процес-

сора плавающей точки по исключительной ситуации выполнения

команды данной задачи.  Последующие  AST-прерывания  этого

типа не будут ставиться в очередь AST-прерываний  процесса

до тех пор, пока поставленное в очередь прерывание не  бу-

дет фактически обработано.

     3. AST-программа по ошибкам команд с плавающей точкой

имеет на входе в стеке задачи следующие данные:

     - слово маски флагов событий (SP+12);

     - PS задачи в момент AST-прерывания (SP+10);

     - PC задачи в момент AST-прерывания (SP+06);

     - DSW задачи в момент AST-прерывания (SP+04);

     - код ошибки  процессора  плавающей  точки, вызвавшей

прерывание (SP+02).

     - адрес команды, вызвавшей прерывание (SP+00).


                          - 130 -

                      00152-01 92 08


     Код ошибки процессора плавающей точки и адрес  коман-

ды, вызвавшей прерывание, должны быть удалены из стека  до

выполнения директивы ASTX$ (выход из программы  обслужива-

ния AST).

     4. Эта директива не может быть издана, если  обслужи-

вание AST запрещено, а также из AST-программы.



     4.2.38. Директива SPND$S (приостановить задачу)



     Директива SPND$S переводит процесс в состояние  спяч-

ки. Образ может приостановить только процесс, в котором он

выполняется. Приостановленный процесс может  быть  выведен

из состояния спячки другим процессом  по  директиве  RSUM$

(возобновить задачу).

     Макровызов

     SPND$S [ош]

где  ош - адрес программы обработки ошибки.

     Коды завершения, возвращаемые в DSW

IS.SUC

     - успешное завершение директивы.

IE.INS

     - процесс не имеет имени.

IE.ADP

     - часть DPB лежит вне границ образа, издавшего дирек-

     тиву.

IE.SDP

     - код директивы или размер DPB указаны неверно.

     Примечания:

     1. МОС ВП выполняет от имени процесса, издавшего  ди-

рективу SPND$S, программу  системного  обслуживания  HIBER


                          - 131 -

                      00152-01 92 08


(заснуть).

     2. Приостановленный процесс сохраняет управление сис-

темными ресурсами, распределенными для него. МОС ВП не де-

лает попытки освободить эти ресурсы.

     3. МОС ВП имеет индикатор, указывающий не был ли  из-

дан запрос на пробуждение  для  активного  процесса.  Если

процесс издает запрос на переход в состояние спячки, когда

индикатор установлен, то процесс остается активным, а  ин-

дикатор очищается. Последующий запрос на переход в состоя-

ние спячки переводит процесс в спячку.

     4. Если директива SPND$S издана образом, для которого

заранее был издан запрос на возобновление, то имеет  место

следующее:

     - возвращается код успешного завершения;

     - процесс остается активным;

     - индикатор, отмечающий наличие запроса на  пробужде-

ние, очищается.

     5. Процесс может быть возобновлен, только если указы-

вается имя процесса, поэтому процессу не разрешается  при-

останавливать себя, если он не имеет имени.

     6. Процесс, переведенный в состояние спячки по дирек-

тиве SPND$S, не может быть возобновлен по директиве  USTP$

(вывести задачу из останова).



     4.2.39. Директива SPRA$ (AST по восстановлению

питания)



     Директива SPRA$ либо разрешает для процесса обработку

AST-прерываний по восстановлению питания  и  задает  адрес

точки входа программы, обслуживающей AST этого типа,  либо


                          - 132 -

                      00152-01 92 08


извещает систему, что для процесса,  издавшего  директиву,

AST по восстановлению питания игнорируются.

     Если адрес AST-программы указан, дальнейшие  AST-пре-

рывания по восстановлению питания для процесса,  издавшего

директиву, допустимы. МОС ВП будет  передавать  управление

по указанному адресу всякий раз, когда происходит  восста-

новление после отказа питания. Если адрес AST-программы не

указан, дальнейшие AST по восстановлению питания не  будут

иметь места до тех пор, пока снова не  будет  задан  адрес

точки входа AST-программы.

     Макровызов

     SPRA$ [ACT]

где  ACT - адрес точки входа обслуживающей AST-программы.

     Коды завершения, возвращаемые в DSW

IS.SUC

     - успешное завершение директивы.

IE.ITS

     - AST-программа уже отменен.

IE.AST

     - директива была издана AST-программой или AST-преры-

     вания запрещены.

IE.ADP

     - часть DPB лежит вне границ адресов образа, издавше-

     го директиву.

IE.SDP

     - код директивы или размер DPB указаны неверно.

     Примечания:

     1. МОС ВП выполняет от имени образа, издавшего дирек-

тиву SPRA$, программу системного обслуживания SETPRA  (ус-

тановить AST по восстановлению питания).


                          - 133 -

                      00152-01 92 08


     2. На время выполнения  AST-программы  AST-прерывания

этого типа запрещены. Они  остаются  запрещенными  до  тех

пор, пока не будет издана директива ASTX$S (выход из прог-

раммы обслуживания AST).

     3. Программа, обслуживающая AST по восстановлению пи-

тания, получает стек задачи со следующими данными:

     - 0 (SP+06 - SP+12);

     - PS процесса в момент AST-прерывания (SP+04);

     - PC процесса в момент AST-прерывания (SP+02);

     - DSW процесса в момент AST-прерывания (SP+00).

     Специальных параметров, связанных с AST по восстанов-

лению питания, нет, так что  директива  ASTX$S  (выход  из

программы обслуживания AST) может выполняться с тем же со-

тоянием стека, какое было при входе в AST-программу.

     4. Эта директива не может быть издана, когда AST-пре-

рывания запрещены, а также из AST-программы.



     4.2.40. Директива SPWN$ (породить задачу)



     Директива SPWN$  создает  подпроцесс  для  выполнения

указанного образа или, в зависимости  от  параметров,  для

выполнения командной строки.

     Если в директиве командная строка не задана, то  под-

процесс выполняет указанный образ; устройством TI  подпро-

цесса является устройство, указанное в параметрах, или  TI

порождающего процесса.

     Если в директиве задана командная строка, то создает-

ся почтовый ящик и командная строка записывается в него. В

качестве образа в  подпроцессе  выполняется  интерпретатор

командных строк. Заметим, что используется тот интерпрета-


                          - 134 -

                      00152-01 92 08


тор,  который  указан  в  файле  авторизации  пользователя

(UAF). Поскольку TI устанавливается эквивалентным почтово-

му ящику, интерпретатор командных строк  читает  командную

строку из почтового ящика. Заметим, что  используется  тот

интерпретатор командной строки, который указан в файле ав-

торизации пользователей (UAF).

     Koгда созданный подпроцесс завершается, его  код  за-

вершения передается  программе  обработки  AST-прерывания,

об'являемого по завершению подпроцесса. Для этих целей со-

здается почтовый ящик.

     Макровызов

     SPWN$ имя,,, [нгр], [нчл],  [флг],  [ACT],  [блс],

[стр], [длстр], [нустр], [иустр]

где  имя - имя образа, который должен  быть  выполнен; это

имя также используется как имя подпроцесса;

     нгр - не используется;

     нчл - не используется;

     флг - флаг события,  устанавливаемый  при  завершении

подпроцесса;

     ACT - адрес   программы   обработки   AST-прерывания,

об'являемого по завершению подпроцесса;

     блс - адрес 8-словного блока состояния; первое  слово

заполняется при завершении  порожденного подпроцесса; дру-

гие слова не используются;

     стр - адрес командной строки, которая должна быть вы-

полнена; этот параметр отвергает имя образа, заданного па-

раметром 'имя';

     длстр - длина командной строки;

     нустр - номер терминала, назначаемого в качестве уст-

ройства TI подпроцесса; если параметр опущен, то в качест-


                          - 135 -

                      00152-01 92 08


ве TI используется устройство TI задачи-родителя;

     иустр - имя устройства, назначенного в качестве  уст-

ройства TI процесса; если параметр опущен, то  в  качестве

TI используется устройство TI задачи-родителя.

     Коды завершения, возвращаемые в DSW

IS.SUC

     - успешное завершение директивы.

IE.UPW

     - недостаточно динамической памяти (SS$_INSFMEM).

IE.INS

     - недопустимое имя задачи.

IE.ACT

     - имя подпроцесса уже существует.

IE.IEF

     - неверный номер флага события: флаг в пределах от 33

     до 64, но образ не связан с этим общим  флагом  собы-

     тия; либо флаг в пределах от 65 до 96,  но  образ  не

     связан с этим групповым глобальным флагом; либо  флаг

     не в пределах от 1 до 96.

IE.ADP

     - часть DPB, блок состояния или командная строка  ле-

     жат вне границ адресов образа, издавшего директиву.

IE.SDP

     - код директивы или размер DPB указаны неверно.



     4.2.41. Директива SRDA$ (AST по получению данных)



     Директива SRDA$ выполняет в зависимости от  параметра

одно из следующих действий:

     1) указывает, что AST-прерывания по получению  данных


                          - 136 -

                      00152-01 92 08


будут обрабатываться, и задает точку входа в программу об-

работки AST, на которую будет передано  управление,  когда

данные помещаются в почтовый ящик образа  (RCVDимя_процес-

са);

     2) указывает системе, что AST по получению данных для

задачи, издавшей директиву, обрабатываться не будут.

     Если в директиве задан адрес  точки  входа  программы

обработки AST-прерывания, то AST-прерывание  по  получению

данных для образа происходит, как только данные помещаются

в почтовый ящик образа (RCVDимя_процесса). Мос вп передает

управление на заданную AST-программу.

     Если в директиве адрес точки  входа  в  обслуживающую

AST-программу не задан, МОС ВП запрещает AST-прерывания по

получению данных для образа, издавшего директиву. AST-пре-

рывания по получению данных недопустимы до тех  пор,  пока

директивой SRDA$ снова не будет определена точка  входа  в

AST-программу.

     Макровызов

     SRDA$ [ACT]

где  ACT - адрес AST-программы.

     Коды завершения, возвращаемые в DSW

IS.SUC

     - успешное завершение директивы.

IE.ITS

     - AST-программа уже  отменена.

IE.AST

     - директива издана из AST-программы или  AST-прерыва-

     ния запрещены.

IE.ADP

     - часть DPB лежит вне границ адресов образа, издавше-


                          - 137 -

                      00152-01 92 08


     го директиву.

IE.SDP

     - код директивы или размер DPB указаны неверно.

     Примечания:

     1. Вход в обслуживающую  AST-программу  по  получению

данных осуществляется со следующим содержимым стека  зада-

чи:

     - 0 (SP+06 - SP+12);

     - PS процесса в момент AST-прерывания (SP+04);

     - PC процесса в момент AST-прерывания (SP+02);

     - DSW процесса в момент AST-прерывания (SP+00).

     Параметров, зависящих от этого типа прерывания,  нет,

поэтому директива ASTX$S (выход из программы  обслуживания

AST) должна выполняться с тем же состоянием  стека,  какое

было при входе в программу обработки AST.

     2. Эта директива не может быть издана, если  AST-пре-

рывания запрещены, а также из AST-программы.

     3. МОС ВП выполняет директиву SRDA$,  используя  про-

грамму системного обслуживания QIO с  функцией  разрешения

AST по незапланированному поступлению сообщения в почтовый

ящик. Когда сообщение посылается в почтовый ящик, для  об-

раза происходит AST-прерывание. AST-прерывания этого  типа

на время обработки прерывания запрещаются  и  будут  вновь

разрешены директивой ASTX$S (выход из программы обслужива-

ния AST).

     4. Для более  полного  понимания  необходимо  ознако-

миться  с  описанием  директивы  RCVD$  (получить  данные)

(п. 4.2.28).




                          - 138 -

                      00152-01 92 08


     4.2.42. Директива STLO$ (остановить задачу до

установки диз'юнкции флагов)



     Директива STLO$ останавливает задачу, издавшую дирек-

тиву, до тех пор, пока не будет установлен один или  более

из указанных флагов в одной из следующих групп флагов:

     - группа 0 (флаги 1-16);

     - группа 1 (флаги 17-32);

     - группа 2 (флаги 33-48);

     - группа 3 (флаги 49-64);

     - группа 4 (флаги 65-80);

     - группа 5 (флаги 81-96).

     Процесс не будет остановлен, если  в  момент  издания

директивы какие-либо флаги из числа указанных уже установ-

лены.

     Эта директива не может быть издана из AST-программы.

     Процесс, остановленный до установки  диз'юнкции  фла-

гов, может быть выведен из останова только за  счет  уста-

новки одного или нескольких указанных флагов событий.  Вы-

вести из останова такой процесс с помощью директивы  USTP$

(вывести задачу из останова) нельзя.

     Макровызов

     STLO$ грп, мск

где  грп - номер группы флагов;

     мск - 16-битная маска флагов.

     Коды завершения, возвращаемые в DSW

IS.SUC

     - успешное завершение директивы.

IE.AST

     -  директива  была  издана  из  программы   обработки


                          - 139 -

                      00152-01 92 08


     AST-прерывания.

IE.IEF

     - неверный номер флага события: флаг в пределах от 33

     до 64, но образ не связан с этим общим  флагом;  либо

     флаг в пределах от 65 до 96, но  образ  не  связан  с

     этим групповым глобальным флагом; либо флаг не в пре-

     делах от 1 до 96.

IE.ADP

     - часть DPB лежит вне границ адресов образа, издавше-

     го директиву.

IE.SDP

     - код директивы или размер DPB указаны неверно.

     Примечания:

     1. МОС ВП выполняет от имени образа, издавшего дирек-

тиву STLO$, программу системного обслуживания WFLOR (ждать

"логическое или" флагов событий).

     2. Для доступа к флагам в кластере общих или  группо-

вых глобальных флагов событий  образ  задачи  должен  быть

связан с соответствующим кластером.

     3. Флаги событий, задаваемые в ОС РВ, преобразуются в

допустимые в МОС ВП флаги (см. подраздел 2.5).



     4.2.43. Директива  STOP$S (остановить задачу)



     Директива STOP$S переводит процесс  в состояние спяч-

ки. Директива  STOP$S может остановить только процесс, из-

давший директиву. Эта  директива  не  может быть издана из

программы обработки AST.

     Процесс, остановленный по STOP$S, может быть  выведен

из останова только по директиве USTP$ (вывести  задачу  из


                          - 140 -

                      00152-01 92 08


останова), изданной одной из собственных AST-программ  или

другим процессом.

     Макровызов

     STOP$S

     Коды завершения, возвращаемые в DSW

IS.SUC

     - успешное завершение директивы.

IE.INS

     - процесс не имеет имени.

IE.AST

     -  директива  была  издана  из  программы   обработки

     АST-прерывания.

IE.ADP

     - часть DPB лежит вне границ aдресов образа, издавше-

     го директиву.

IE.SDP

     - код директивы или размер DPB указаны неверно.

     Примечания:

     1. МОС ВП выполняет от имени процесса, издавшего  ди-

рективу STOP$S, программу  системного  обслуживания  HIBER

(заснуть).

     2. Остановленный процесс сохраняет управление систем-

ными ресурсами, выделенными процессу. МОС ВП не делает по-

пытки освободить эти ресурсы.

     3. МОС ВП имеет индикатор, указывающий, не был ли из-

дан запрос на пробуждение  для  активного  процесса.  Если

процесс издает запрос на переход в состояние спячки, когда

индикатор установлен, то процесс остается активным, а  ин-

дикатор очищается. Последующий запрос на переход  процесса

в состояние спячки переводит процесс в спячку. Таким обра-


                          - 141 -

                      00152-01 92 08


зом, если директива STOP$S издана процессом, для  которого

есть еще не выполнившийся запрос на вывод процесса из  ос-

танова, то происходит следующее:

     - выдается код успешного завершения;

     - процесс остается активным;

     - индикатор, отмечающий наличие запроса на  пробужде-

ние, очищается.

     4. Процесс, остановленный по директиве STOP$S,  может

быть выведен из останова по директиве USTP$ (вывести зада-

чу из останова), только если указано имя  этого  процесса;

поэтому процессу не разрешается останавливать  себя,  если

он не имеет имени.



     4.2.44. Директива STSE$  (остановить задачу до

установки единичного флага)



     Директива STSE$ останавливает образ, издавший  дирек-

тиву, до установки указанного флага события. Если в момент

издания директивы флаг уже установлен, то образ продолжает

выполняться. Эта директива не может быть издана задачей из

AST-программы.

     Процесс, остановленный по директиве STSE$, может быть

выведен из останова только после установки соответствующе-

го флага. Такой остановленный процесс не может быть  выве-

ден  из останова по директиве USTP$ (вывести задачу из ос-

танова).

     Макровызов

     STSE$ флг

где  флг - номер флага.


                          - 142 -

                      00152-01 92 08


     Коды завершения, возвращаемые в DSW

IS.SUC

     - успешное завершение директивы.

IE.AST

     - директива была издана из AST-программы.

IE.IEF

     - неверный номер флага события: флаг в пределах от 33

     до 64, но образ не связан с этим общим  флагом  собы-

     тия; либо флаг в пределах от 65 до 96,  но  образ  не

     связан с этим групповым  глобальным  флагом  события;

     либо флаг не в пределах от 1 до 96.

IE.ADP

     - часть DPB лежит вне границ адресов образа, издавше-

     го директиву.

IE.SDP

     - код директивы или размер DPB указаны неверно.

     Примечания:

     1. МОС ВП выполняет от имени образа, издавшего дирек-

тиву STSE$, программу системного обслуживания WFLOR (ждать

"логическое или" флагов событий).

     2. Для доступа к флагам в кластере общих или  группо-

вых локальных флагов событий образ задачи должен быть свя-

зан с флагами в соответствующем кластере.

     3. Флаги событий, задаваемые в ОС РВ, преобразуются в

допустимые в МОС ВП флаги (см. подраздел 2.5).



     4.2.45. Директива SVDB$  (задать таблицу SST-векторов

для отладочных средств)



     Директива SVDB$ задает  адрес  таблицы  точек  входов


                          - 143 -

                      00152-01 92 08


программ,  обслуживающих  SST-прерывания  (адрес   таблицы

SST-векторов для отладочных средств, используемых задачей,

например, для отладчика.

     Если параметры опущены,  то  SVDB$  отменяет  таблицу

SST-векторов для отладочных средств.

     Если точка входа программы обслуживания  SST-прерыва-

ния определена как в таблице  SST-векторов,  заданной  для

образа, так и в таблице SST-векторов, заданной  для  отла-

дочных средств, то прерывание  обслуживается  SST-програм-

мой, указанной для отладочных средств, но не для образа.

     Макровызов

     SVDB$ [тбл] [,дл]

где  тбл - адрес таблицы SST-векторов;

     дл - длина таблицы в словах (число элементов).

     Формат таблицы векторов

WD.00 - адрес программы  обработки  прерывания  по  ошибке

        четности адресации или по ошибке обращения к несу-

        ществующей памяти.

WD.01 - адрес программы обработки прерывания по  нарушению

        защиты памяти.

WD.02 - адрес программы обработки прерывания по биту T или

        по инструкции BPT.

WD.03 - адрес программы обработки прерывания по инструкции

        IOT.

WD.04 - адрес программы обработки прерывания по выполнению

        неверной или резервной инструкции.

WD.05 - адрес программы обработки прерывания по инструкции

        EMT, не принадлежащей ОС РВ.

WD.06 - адрес программы обработки прерывания по инструкции

        TRAP.


                          - 144 -

                      00152-01 92 08


WD.07 - не используется.

     Если вместо адреса SST-программы указан 0, то SST та-

кого типа не обрабатываются.

     Коды завершения, возвращаемые в DSW

IS.SUC

     - успешное завершение директивы.

IE.ADP

     - часть DPB или таблица лежAт вне границ адресов  об-

        раза, издавшего директиву.

IE.SDP

     - код директивы или размер DPB указаны неверно.



     4.2.46. Директива SVTK$  (задать таблицу SST-векторов

для задачи)



     Директива SVTK$ задает  адрес  таблицы  точек  входов

программы обработки SST-прерываний для  образа,  издавшего

директиву.

     Если параметры опущены, то директива отменяет таблицу

SST-векторов.

     Если SST-программа определена как в таблице,  исполь-

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

средствах,  то  прерывание  имеет  место  для   отладочных

средств, но не для образа.

     Макровызов

     SVTK$ [табл] [,дл]

где  тбл - адрес таблицы SST-векторов;

     дл - длина таблицы в словах (число элементов).

     Формат таблицы векторов

WD.00 - адрес программы  обработки  прерывания  по  ошибке


                          - 145 -

                      00152-01 92 08


        четности адресации или по ошибке обращения к несу-

        ществующей памяти.

WD.01 - адрес программы обработки прерывания по  нарушению

        защиты памяти.

WD.02 - адрес программы обработки прерывания по биту T или

        по инструкции BPT.

WD.03 - адрес программы обработки прерывания по инструкции

        IOT.

WD.04 - адрес программы обработки прерывания по выполнению

        неверной или резервной инструкции.

WD.05 - адрес программы обработки прерывания по инструкции

        EMT, не принадлежащей ОС РВ.

WD.06 - адрес программы обработки прерывания по инструкции

        TRAP.

WD.07 - не используется.

     Если  вместо  адреса  SST-программы  указан   0,   то

SST-прерывания этого типа не обрабатываются.

     Коды завершения, возвращаемые в DSW

IS.SUC

     - успешное завершение директивы.

IE.ADP

     - часть DPB или таблица SST-векторов лежат вне границ

     адресов образа, издавшего директиву.

IE.SDP

     - код директивы или размер DPB указаны неверно.



     4.2.47. Директива USTP$  (вывести задачу из останова)



     Директива USTP$ выводит процесс из состояния  спячки.

директива USTP$ возобновляет  указанный  процесс,  который


                          - 146 -

                      00152-01 92 08


остановил себя директивой STOP$S (остановить процесс)  или

директивой RCST$ (получить данные или остановить процесс).

Директива USTP$ не выводит из останова  процесс,  останов-

ленный в ожидании флага события.

     Если процесс был остановлен по  директиве  STOP$  или

RCST$,  но  в  момент  издания  директивы  USTP$  выполнял

AST-программу, то останов задачи будет снят  только  после

завершения обработки AST.

     Макровызов

     USTP$ имя

где имя - имя процесса в МОС ВП, который должен быть выве-

ден из состояния останова.

     Коды завершения, возвращаемые в DSW

IS.SUC

     - успешное завершение директивы.

IE.INS

     - имя процесса неизвестно.

IE.PRI

     - нарушение привилегий (SS$_NOPRIV).

IE.UPN

     - недостаточно динамической памяти (SS$_INSFMEM).

IE.NOD

     - превышена квота (SS$_EXQUOTA).

IE.ADP

     - часть DPB лежит вне границ образа, издавшего дирек-

     тиву.

IE.SDP

     - код директивы или размер DPB указаны неверно.

     Примечания:

     1. МОС ВП выполняет от имени процесса, издавшего  ди-


                          - 147 -

                      00152-01 92 08


рективу   USTP$,   программу    системного   обслуживания"

WAKE (пробудить процесс).

     2. Процесс, издавший директиву USTP$, должен удовлет-

ворять одному из следующих требований:

     - иметь такой же UIC, что и процесс,  который  должен

быть выведен из останова,

     - должен быть в той же группе, что и выводимый из ос-

танова процесс, и иметь привилегию GROUP.

     В противном случае процессу не  требуется  привилегий

для издания директивы USTP$. Ответственность  за  своевре-

менное пробуждение лежит на самом процессе,  выводимом  из

останова.

     3. МОС ВП имеет индикатор, указывающий, не был ли из-

дан запрос на пробуждение  для  активного  процесса.  Если

процесс издает запрос на переход в состояние спячки, когда

индикатор установлен, то процесс остается активным, а  ин-

дикатор очищается. Последующий запрос на переход  процесса

в состояние спячки переводит процесс в спячку. Таким обра-

зом, если директива STOP$ издана процессом,  для  которого

имеется еще не выполнившийся запрос на вывод  процесса  из

останова, то происходит следующее:

     - возвращается код успешного завершения;

     - процесс остается активным;

     - индикатор, отмечающий наличие запроса на  пробужде-

ние, очищается.

     4. Если директива USTP$ издана  для  образа,  который

активен, выдается код успешного завершения, процесс  оста-

ется активным.




                          - 148 -

                      00152-01 92 08


     4.2.48. Директива WSIG$S  (ждать важное событие)



     Поскольку понятие важного события в МОС ВП не сущест-

вует, директива WSIG$S не соответствует  никакому  запросу

системного обслуживания МОС ВП. Издание директивы  не  по-

рождает важного события.

     Макровызов

     WSIG$S [ош]

где  ош - адрес программы обработки ошибки директивы.

     Коды завершения, возвращаемые в DSW

IS.SUC

     - успешное завершение директивы.

IE.ADP

     - часть DPB лежит вне границ адресов образа, издавше-

     го директиву.

IE.SDP

     - код директивы или размер DPB указаны неверно.



     4.2.49. Директива WTLO$  (ждать диз'юнкцию флагов)



     Директива WTLO$ блокирует выполнение образа, издавше-

го директиву, до тех пор, пока  МОС ВП не  установит  один

из  указанных  флагов  событий  в одной из следующих групп

флагов:

     - группа 0 (флаги 1 - 16);

     - группа 1 (флаги 17 - 32);

     - группа 2 (флаги 33 - 48);

     - группа 3 (флаги 49 - 64);

     - группа 4 (флаги 65 - 80);

     - группа 5 (флаги 81 - 96).


                          - 149 -

                      00152-01 92 08


     Если при издании директивы  какой-либо  из  указанных

флагов установлен, то процесс не переходит в ожидание.

     Макровызов

     WTLO$ грп, мск

где  грп - номер группы флагов;

     мск - 16-битное слово маски флагов событий.

     Коды завершения, возвращаемые в DSW

IS.SUC

     - успешное завершение директивы.

IE.IEF

     - неверный номер флага события: флаг в пределах от 33

     до 64, но образ не связан с этим общим  флагом  собы-

     тия; либо флаг в пределах от 65 до 96,  но  образ  не

     связан с этим групповым  глобальным  флагом  события;

     либо флаг не в пределах от 1 до 96.

IE.ADP

     - часть DPB лежит вне границ адресов образа, издавше-

     го директиву.

IE.SDP

     - код директивы или размер DPB указаны неверно.

     Примечания:

     1. МОС ВП выполняет от имени образа, издавшего дирек-

тиву WTLO$, программу системного обслуживания WFLOR (ждать

"логическое или" флагов событий).

     2. Для доступа к флагам в кластере общих или  группо-

вых глобальных флагов событий  образ  задачи  должен  быть

связан с соответствующим кластером.

     Флаги событий, задаваемые в ОС  РВ,  преобразуются  в

допустимые в МОС ВП флаги (см. подраздел 2.5).




                          - 150 -

                      00152-01 92 08


     4.2.50. Директива WTSE$  (ждать единичный флаг)



     Директива WTSE$ блокирует выполнение образа, издавше-

го директиву, до тех пор, пока не будет установлен указан-

ный флаг события. Если при издании директивы этот флаг со-

бытия уже установлен, выполнение образа продолжается.

     Макровызов

     WTSE$ флг

где  флг - номер флага события.

     Коды завершения, возвращаемые в DSW

IS.SUC

     - успешное завершение директивы.

IE.IEF

     - неверный номер флага события: флаг в пределах от 33

     до 64, но образ не связан с этим общим  флагом;  либо

     флаг в пределах от 65 до 96, но  образ  не  связан  с

     этим групповым глобальным флагом; либо флаг не в пре-

     делах от 1 до 96.

IE.ADP

     - часть DPB лежит вне границ адресов образа, издавше-

     го директиву.

IE.SDP

     - код директивы или размер DPB указаны неверно.

     Примечания:

     1. МОС ВП выполняет от имени образа, издавшего дирек-

тиву WTSE$, программу системного обслуживания WFLOR (ждать

"логическое или" флагов событий).

     2. Для доступа к флагам в кластере общих или  группо-

вых глобальных флагов событий  образ  задачи  должен  быть

связан с соответствующим кластером.


                          - 151 -

                      00152-01 92 08


                5. Драйверы  ввода-вывода



     Образы МОС ВП запрашивают обслуживание непосредствен-

но от драйверов ввода-вывода и от вспомогательных управля-

ющих процессов (ACP) через директиву QIO$.  Директива  со-

держит следующие параметры:

     1) код функции ввода-вывода;

     2) функционально-независимые параметры, например, ка-

нал ввода-вывода и номер флага события;

     3) функционально-зависимые параметры Р1-Р6.

     Имя кода функции в МОС ВП имеет вид: IO$_функция.

     Многие коды функций  имеют  модификаторы  подфункций.

имя модификатора подфункции имеет вид: IO$M_подфункция.

     Когда  образ  задачи ОС РВ,  выполняющийся  в системе

мос вп, издает директиву  QIO$, МОС ВП находит собственную

эквивалентную функцию  и  выполняет  программу  системного

обслуживания QIO (поставить в очередь запрос ввода-вывода)

от имени образа. Запрос ввода-вывода обрабатывается систе-

мой ввода-вывода МОС ВП, а функция выполняется  драйверами

стандартных  устройств МОС ВП  или  ACP.  Обычно  запросам

ввода-вывода ОС РВ соответствуют подобные  запросы МОС ВП,

поэтому  для  образа  ОС РВ  подмена  системы ввода-вывода

ОС РВ  системой  ввода-вывода  МОС ВП  не заметна. Однако,

если издан запрос на ввод-вывод, который зависит от харак-

теристик системы ввода-вывода ОС РВ, не  присуших  системе

ввода-вывода МОС ВП, запрошенная операция ввода-вывода мо-

жет выполниться несколько иначе, чем в ОС РВ. В этом  слу-

чае пользователю необходимо ознакомиться с  данным  разде-

лом.

     Каждый  запрос  ввода-вывода  ОС  РВ   содержит   код


                          - 152 -

                      00152-01 92 08


функции, функционально-независимые  параметры  и  функцио-

нально-зависимые  параметры.  МОС  ВП,  получив  директиву

QIO$, формирует эквивалентный аргумент для  каждого  пара-

метра, заданного в директиве. Поскольку МОС ВП обрабатыва-

ет запросы QIO, используя свою систему  ввода-вывода,  она

преобразует QIO-запрос из формата ОС РВ в собственный фор-

мат.

     Система МОС ВП обрабатывает функционально-независимые

параметры, например, номер флага события, логический номер

устройства, адрес программы обработки AST  в  соответствии

со своими стандартами (разделы 2, 3,  п.  4.2.25).  Данный

раздел описывает обработку системой МОС ВП  кодов  функций

ввода-вывода и функционально-зависимых параметров.



     5.1. Устройства, поддерживаемые системой МОС ВП



     МОС ВП обрабатывает функции ввода-вывода  ОС  РВ  для

устройств, которые   поддерживаются  как  в ОС РВ, так и в

МОС ВП, т.е. для дисков, терминалов, печатающих устройств,

устройств чтения с  перфокарт,  магнитных  лент  и  пустых

устройств [1].

     Eсли  образ   ОС   РВ   запрашивает   ввод-вывод   на

устройство, которое не поддерживается системой  МОС  ВП  и

которое не требует специального  программого  обеспечения,

то запрос ввода-вывода обрабатывается так, как  если  бы в

запросе было указано   дисковое  устройство.  Код  функции

ввода-вывода и параметры P1-P6  обрабатываются  точно  так

же, как для диска. Биты подфункций не используются.




                          - 153 -

                      00152-01 92 08


     5.2. Директива GLUN$



     Директива GLUN$ (дать информацию об устройстве с  за-

данным логическим номером), выполняемая в МОС  ВП,  выдает

такую же информацию, не зависящую от типа устройства,  как

и в ОС РВ (п. 4.2.19).  Формат  информации,  зависящей  от

устройства, описан в [7].



     5.3. Стандартные функции ввода-вывода



     Стандартные функции ввода-вывода ОС РВ  (присоединить

устройство, отсоединить устройство,  отменить  ввод-вывод,

чтение и запись виртуального блока, чтение и запись  логи-

ческого блока) поддерживаются для всех устройств ввода-вы-

вода МОС ВП. Обработка функций  присоединения  устройства,

отсоединения устройства, отмены ввода-вывода в МОС ВП име-

ет некоторые особенности по сравнению с ОС РВ.



     5.3.1. Функции присоединения/отсоединения

устройства ввода-вывода (IO.ATT и IO.DET)



     В системе МОС ВП существуют разделяемые и неразделяе-

мые устройства. Разделяемые устройства, такие  как  диски,

могут быть доступны многим пользователям без нарушения це-

лостности данных. Неразделяемые устройства, такие как тер-

миналы, в каждый  момент времени могут быть доступны толь-

ко одному процессу. Когда образ назначает канал к неразде-

ляEмому устройству, МОС ВП  неявно  закрепляет  устройство

для исключительного  использования  процессом.  В понятиях

ОС РВ система МОС ВП присоединяет устройство процессу. По-


                          - 154 -

                      00152-01 92 08


скольку МОС ВП  выполняет  неявное закрепление устройства,

образы во время своего выполнения могут явно не закреплять

и  не откреплять неразделяемые устройства.

     Чтобы только один образ имел доступ к  неразделяемому

устройству, устройство должно  быть  закреплено  одним  из

следующих способов:

     1) образ должен вызвать программу системного обслужи-

вания ALLOC (закрепить устройство);

     2) должна быть издана команда ALLOCATE интерпретатора

MCR или DCL.

     Использование команды ALLOCATE имеет преимущество пе-

ред  использованием  программы   системного   обслуживания

ALLOC: команда исключает необходимость исправления  ошибки

образом, если устройство не может быть закреплено.

     Задачи, работающие в  системе ОС РВ,  часто присоеди-

няют терминалы и другие устройства, препятствуя  использо-

ванию  этих  устройств  другими задачами.  В  ОС  РВ   эти

устройства являются разделяемыми. Когда образ ОС  РВ,  вы-

полняющийся в МОС ВП, издает директиву QIO$ на присоедине-

ние устройства, МОС ВП не  выполняет  никаких  действий  и

возвращает образу код успешного завершения. Если  запраши-

ваемое устройство неразделяемое, МОС ВП закрепляет устрой-

ство, когда образ назначает  на  него  LUN.  В  результате

устройство становится присоединенным. Если устройство раз-

деляемое, то образу возвращается код успешного  завершения

директивы, но устройство остается  не  закрепленным.  Если

образу ОС РВ требуется закрепить  разделяемое  устройство,

то оно должно быть закреплено по команде ALLOCATE,  издан-

ной с терминала или из косвенного командного файла.

     Функции IO.ATT и IO.DET системы ОС РВ имеют в МОС  ВП


                          - 155 -

                      00152-01 92 08


особый смысл для терминалов (подраздел 5.6).  Так  запросы

на присоединение и отсоединение терминала вызывают  подав-

ление функций CTRL/O (<DLE>) при последующей операции  за-

писи.



     5.3.2. Функция отмены запросов ввода-вывода (IO.KIL)



     По  запросу  образа  ОС  РВ  на  отмену  ввода-вывода

(функция IO.KIL) для устройств МОС  ВП  система  выполняет

программу   системного   обслуживания   CANCEL   (отменить

ввод-вывод на канале), которая отменяет все  запросы  вво-

да-вывода к указанному каналу. Этот подход  отличается  от

подхода в ОС РВ. В ОС РВ по IO.KIL отменяются все  запросы

ввода-вывода задачи к указанному устройству. Если требова-

ние отмены ввода-вывода касается  дисковых  устройств,  TO

никаких действий не выполняется, МОС ВП возвращает  образу

код успешного завершения.

     Программа системного  обслуживания  CANCEL  (отменить

ввод-вывод на канале) немедленно отменяет  запросы  ввода-

вывода, поставленные в очередь. Однако запрос  ввода-выво-

да, который в текущий момент обрабатывается драйвером,  не

обязательно отменяется.



     5.4. Блок состояния ввода-вывода и коды завершения



     После завершения операции ввода-вывода МОС ВП возвра-

щает код завершения запроса в блоке состояния  ввода-выво-

да.

     Если  запрос  ввода-вывода  издается  образом  ОС РВ,

МОС ВП возвращает информацию о завершении запроса в блоке


                          - 156 -

                      00152-01 92 08


состояния ввода-вывода в таком же формате, как и в ОС РВ.

Формат блока состояния ввода-вывода показан на рис. 3.



                Байт 1             Байт 0

        -------------------------------------------

Слово 0 ! Всегда 0, кроме  ! Код завершения       !

        ! операции чтения  ! запроса ввода-вывода !

        ! с терминала      !                      !

        -------------------------------------------

Слово 1 !                                         !

        !      Число переданных байтов            !

        !                                         !

        -------------------------------------------

                        Рис. 3



     Возвращаемый код может быть кодом успешного  заверше-

ния (IS.SUC) или кодом аварийного завершения. Система  МОС

ВП своим кодам завершения ставит в соответствие  коды  за-

вершения ОС РВ ( приложение 4).  В  блоке  состояния  вво-

да-вывода в старшем байте нулевого слова всегда содержится

0, за исключением операции терминального чтения. Для  зап-

роса терминального чтения этот байт содержит код ограничи-

теля строки (п. 5.6.14). Второе слово блока состояния вво-

да-вывода содержит число выведенных или введенных байтов.



     5.5. Драйверы устройств



     Система МОС ВП ставит в соответствие кодам функций  и

функционально-зависимым параметрам директивы QIO в  ОС  РВ

свои коды функций и параметры. Система МОС ВП ставит в со-


                          - 157 -

                      00152-01 92 08


ответствие кодам функций стандартных устройств и  функцио-

нально-зависимым параметрам, используемым в запросах, свои

коды функций и функционально-зависимые параметры (приложе-

ние 5).

     В системе МОС ВП налагаются  ограничения  на  функции

ввода-вывода,  которые  могут   выполняться   на   псевдо-

устройствах TI, CO, CL, поскольку эти устройства отобража-

ются в постоянные файлы процессов. Налагаются также  неко-

торые ограничения на ввод-вывод постоянных файлов  процес-

са, созданных пользователем (см. п. 5.6.14).



     5.6. Терминальный драйвер



     Система МОС ВП ставит  в  соответствие кодам  функций

ввода-вывода  и  функционально-зависимым  параметрам,  ис-

пользуемым в запросах к терминалам в ОС РВ, свои коды фун-

кций и  функционально-зависимые  параметры (приложение 6).

МОС ВП устанавливает соответствие битов подфункций  терми-

нальных функций в ОС РВ и МОС ВП (см. приложение 6).

     Различия, существующие между  терминальным  драйвером

режима совместимости системы МОС ВП и терминальным драйве-

ром ОС РВ, могут выявиться при вводе-выводе  с  терминала.

Эти различия касаются управляющих символов  <CR>  и  <LF>,

посылаемых на терминал, и проявляются в следующих случаях:

     1) при выводе сообщения на терминал различие проявля-

ется, если выполняются оба следующих условия:

     - последним   выведенным   символом   или   последним

эхо-символом был символ <LF>;

     - первым символом следующего запроса на вывод являет-

ся символ <LF>.


                          - 158 -

                      00152-01 92 08


     В  этом  случае  МОС ВП  пробрасывает (не посылает на

экран) ведущий  символ  <LF> в следующем запросе на вывод.

Запись одного символа <LF> вместо двух <LF> изменяет  кар-

тину  вывода по сравнению с ОС РВ - при  тех  же  условиях

ОС РВ  посылает на терминал оба символа <LF>;

     2) при вводе с терминала различие проявляется, когда

операция чтения завершается нажатием <CR>. МОС ВП, выпол-

няя эхо-сопровождение, посылает <CR>, а вслед за ним <LF>.

В ОС РВ выводится только <CR>. Это различие отражается в

картине вывода на экран.

     Однако, когда образ выполняет запрос на чтение  стро-

ки, которая заканчивается символом <CR>,  а  следующий  за

ним запрос является запросом на запись с ведущим  символом

<LF>, то указанные различия компенсируют друг друга.



     5.6.1. Функция IO.ATT



     Когда образ ОС РВ издает запрос с функцией IO.ATT для

терминала, система МОС ВП не выполняет никаких условий  по

изменению статуса присоединенности терминала  (п.  5.3.1).

Однако, при последующей операции записи на терминал МОС ВП

издает запрос к терминальному драйверу на  отмену  функций

управляющего символа CTRL/O (<DLE>). Символическое имя мо-

дификатора подфункции терминального драйвера МОС ВП, отме-

няющего  CTRL/O, - IO$M_CANCTRLO.  Терминальный    драйвер

ОС РВ  при   присоединении  терминала отменяет CTRL/O (код

подфункции TF.CCO).

     Функция IO.ATT для псевдоустройств TI, CO  или  CL  в

системе МОС ВП является пустой операцией.




                          - 159 -

                      00152-01 92 08


     5.6.1.1. Функции IO.ATT!TF.AST и IO.ATA



     В системе МОС ВП образу  предоставляется  возможность

получать AST-прерывания  по вводу незапланированного  сим-

вола и CTRL/C (<ETX>). Получив AST, образ может  обрабаты-

вать этот ввод по своему усмотрению.

     Коды функций ОС РВ  IO.ATT!TF.AST  и  IO.ATA  эквива-

лентны. Когда образ ОС РВ, выполняющийся в системе МОС ВП,

запрашивает одну из этих функций, МОС ВП издает  запрос  к

терминальному драйверу, разрешающий передачу образу AST по

незапланированному вводу символа или CTRL/C в  зависимости

от параметров P1 и P3.



     5.6.1.2. Функция IO.ATT!TF.ESQ



     В системе МОС ВП некоторые характеристики  терминала,

в частности, характеристики терминальной строки,  устанав-

ливаются по функции IO$_SETMODE. Характеристики  терминала

не могут быть изменены на время выполнения одного  запроса

за счет задания в запросе модификатора; они не могут  быть

также изменены при закреплении терминала. Возможность рас-

познавания  ESC-последовательности в  терминальной  строке

является характеристикой терминала  и может быть разрешена

либо по запросу с функцией IO$_SETMODE,  либо  по  команде

интерпретатора MCR или DCL SET TERMINAL.

     В системе ОС РВ подфункция TF.ESQ используется с  лю-

бой из функций присоединения (IO.ATT или IO.ATA). Установ-

ка этого бита означает, что образ будет распознавать любые

ESC-последовательности, генерируемые указанным терминалом.

когда МОС ВП получает от образа ОС РВ запрос ввода-вывода,


                          - 160 -

                      00152-01 92 08


содержащий код подфункции TF.ESQ, она игнорирует эту  под-

функцию; характеристики  терминала  не  изменяются.  Чтобы

разрешить  распознавание  ESC-последовательностей,   образ

ОС РВ должен издать  запрос  на  установку  характеристики

терминала (запрос с функцией SF.SMC).



     5.6.2. Функция IO.DET



     Когда образ ОС РВ издает запрос с функцией IO.DET для

терминала, МОС ВП не выполняет эту функцию  для  изменения

статуса присоединенности терминала (см. п. 5.3.1). Однако,

система МОС ВП издает запрос к терминальному  драйверу  на

отмену CTRL/O при последующей операции записи на терминал.

символическое  имя  модификатора  подфункции,   отменяющей

CTRL/O, в  МОС  ВП - IO$M_CANCTRLO.  Терминальный  драйвер

ОС РВ при отсоединении терминала отменяет CTRL/O (код под-

функции TF.CCO).

     Для псевдоустройств TI, CO или CL функция IO.DET ин-

терпретируется как пустая операция.



     5.6.3. Функция IO.KIL



     Функция IO.KIL для TI, CO или CL интерпретируется как

пустая операция, т.е. игнорируется.



     5.6.4.  Функции  IO.RLB,  IO.RAL,  IO.RNE,  IO.RST  и

IO.RTT



     Функции  IO.RLB,  IO.RAL,  IO.RNE,  IO.RST  и  IO.RTT

выполняют операцию чтения логического  блока  с терминала.


                          - 161 -

                      00152-01 92 08


Когда МОС ВП получает запрос на  чтение логического  блока

от образа ОС РВ, она издает от имени образа запрос с функ-

цией IO$_READLBLK. Функция IO$_READLBLK соответствует фун-

кции IO.RLB в  системе ОС РВ. Коды  функций  ОС РВ  IO.RAL

IO.RNE и IO.RST эквивалентны выражению,  являющемуся логи-

ческим "или" функции IO.RLB и  соответствующей  подфункции

(см. приложение 6).



     5.6.4.1. Функции IO.RLB!TF.RAL и IO.RAL



     Терминальный драйвер МОС ВП при обработке запроса  на

чтение по умолчанию перехватывает и интерпретирует  управ-

ляющие символы, например, <TAB>,  CTRL/R  (<DC2>),  CTRL/U

(<NAK>), RUBOUT (<DEL>). Однако, перехват драйвером управ-

ляющих символов может быть ограничен двумя способами:

     1)  с  одной   из   функций   чтения   (IO$_READLBLK,

IO$_READVBLK или IO$_READPROMT) может быть указан  модифи-

катор  подфункции  IO$M_NOFILTR,  который  запрещает   ин-

терпретацию драйвером символов CTRL/U, CTRL/R, RUBOUT;

     2) может быть использована функция чтения физического

блока (IO$_READPBLK), которая предотвращает  интерпретацию

драйвером любых символов.

     Обычно  образ ОС РВ, издающий запрос на чтение  логи-

ческого блока с передачей всех битов,  в  действительности

хочет получить только подмножество управляющих символов  -

CTRL/U, CTRL/R и RUBOUT. Поэтому МОС ВП, получив от образа

ОС РВ запрос с функцией  IO.RLB!TF.RAL или IO.RAL,  издает

от имени этого образа запрос IO$_READLBLK!IO$M_NOFILTR.

     Функция чтения физического блока (IO$_READPBLK)  сис-

темы МОС ВП эквивалентна в ОС РВ функции чтения логическо-


                          - 162 -

                      00152-01 92 08


го блока с  передачей всех битов. Функция IO$_READLBLK со-

ответствует функции IO.RPB системы ОС РВ.  Функция  IO.RPB

добавлена к кодам функций системы ОС РВ и  позволяет  сис-

теме МОС ВП  выполнять функцию чтения логического блока  с

передачей всех битов. Образ  ОС РВ,  использующий  функцию

чтения логического блока с  передачей всех битов и  выпол-

няющийся в МОС ВП, должен  быть модифицирован для  издания

функции IO.RPB. Образ, издающий функцию IO.RPB  в  системе

ОС РВ, выполняется без ошибок, т.е. функция IO.RPB являет-

ся допустимой  функцией.  Заметим,  что  в  системе  ОС РВ

функция IO.RPB эквивалентна функции IO.RLB с установленным

соответствующим  битом  подфункции.  Функция  IO.RAL   или

IO.RPB выполняется как в системе МОС ВП, так и  в  системе

ОС РВ.

     Система МОС ВП требует, чтобы образ, выполняющий чте-

ние физического блока, имел соответствующую привилегию.



     5.6.4.2. Функции IO.RLB!TF.RNE и IO.RNе



     В системе ОС РВ функции IO.RLB!IO.RNE и IO.RNE  экви-

валентны. Эти  функции  соответствуют  в  системе  МОС  ВП

функциям IO$_READLBLK  или  IO$_READVBLK  с  модификатором

подфункции IO$M_NOECHO (без эхо-сопровождения).




                          - 163 -

                      00152-01 92 08


     5.6.4.3. Функции IO.RLB!TF.RST и IO.RST



     В системе ОС РВ функции IO.RLB!TF.RST и IO.RST  экви-

валентны. Эти  функции  соответствуют  в  МОС  ВП  функции

IO$_READLBLK с модификатором подфункции  IO$M_TRMNOECHO  и

параметром P4,  задающим  возможные  ограничители  записи,

равным 0. Подфункция IO$M_TRMNOECHO запрещает эхо-сопрово-

ждение ограничителя строки. Нулевое значение параметра  P4

означает, что все символы, коды  которых  (в  коде  КОИ-8)

меньше, чем код пробела, кроме символов <FF>, <VT>, <HT> и

<DEL>, являются ограничителями строки.



     5.6.4.4. Функции IO.RLB!TF.RTT  и  IO.RTT



     В системе ОС РВ функции IO.RLB!TF.RTT и IO.RTT  экви-

валентны. В МОС ВП  этим  функциям  соответствует  функция

IO$_READVBLK с модификатором подфункции  IO$M_TRMNOECHO  и

ненулевым параметром P4, задающим  возможные  ограничители

строки.



     5.6.5. Функция IO.RPR



     Функция IO.RPR соответствует  функции  IO$_READPROMPT

системы МОС ВП. Однако,  параметр  P6  (символ  управления

вертикальным форматом), который задается в ОС РВ, системой

МОС ВП игнорируется. МОС ВП эмулирует  подфункции  TF.RAL,

TF.RNE и TF.RST для функции IO.RPR таким же образом, как и

для функции IO.RLB. Подфункция TF.BIN системой МОС  ВП  не

поддерживается. МОС ВП также игнорирует подфункцию TF.XOF,

если она указана в запросе.


                          - 164 -

                      00152-01 92 08


     Если функция IO.RPR издана для  псевдоустройства  TI,

CO или CL и эти устройства назначены к  постоянным  файлам

процесса, то вывод подсказки игнорируется.



     5.6.5.1. Функция IO.RPR!TF.XOF



     В системе МОС ВП такие характеристики терминала,  как

характеристики терминальной строки, устанавливаются с  по-

мощью функции IO$_SETMODE. Модификатор подфункции указыва-

ет характеристику, которая должна быть изменена.  Характе-

ристики терминала нельзя изменить при закреплении термина-

ла; они не могут быть также изменены на  время  выполнения

одного запроса ввода-вывода за счет  задания  модификатора

подфункции. Возможность синхронизации вывода  на  терминал

по CTRL/Q (<DC3>) и CTRL/S (<DC1>) является  характеристи-

кой терминала, которая должна быть установлена по  функции

IO$_SETмODE.

     В системе ОС РВ бит подфункции TF.XOF используется  с

функцией IO.RPR для управления интерпретацией  управляющих

символов  CTRL/S и  CTRL/Q  на  указанном терминале. Когда

МОС ВП получает от образа ОС РВ запрос  ввода-вывода,  со-

держащий код подфункции TF.XOF, она игнорирует  этот  бит;

характеристики терминала не изменяются. Для управления ин-

терпретацией CTRL/S и CTRL/Q образ  ОС  РВ  должен  издать

запрос  с  функцией  установки   характеристик   терминала

(SF.SMC).



     5.6.6. Функция IO.RVB



     Функция IO.RVB системы  ОС РВ  соответствует  функции


                          - 165 -

                      00152-01 92 08


IO$_READVBLK системы МОС ВП. В системе  ОС  РВ  коды  под-

функций с функцией IO.RVB не используются.



     5.6.7. Функция IO.RPB



     Функция IO.RPB и ее эмуляция в системе  МОС ВП расс-

мотрены при описании функции IO.RAL (подпункт 5.6.4.1).



     5.6.8. Функции IO.WLB, IO.CCO и IO.WBT



     Функции IO.WLB, IO.CCO и IO.WBT системы ОС РВ  выпол-

няют запись логического блока на терминал.  Когда  система

МОС ВП получает от образа ОС РВ запрос на запись  логичес-

кого блока, она издает запрос  с  функцией  IO$_WRITELBLK.

Между функциями IO.WLB и IO$_WRITELBLK имеет место  прямое

соответствие. Функции IO.CCO и IO.WBT эквивалентны логиче-

скому "или" функции IO.WLB и соответствующей подфункции.



     5.6.8.1. Функции IO.WLB!тF.CCO и IO.CCO



     В системе ОС РВ коды функций IO.WLB!TF.CCO  и  IO.CCO

эквивалентны. Эти функции соответствуют  функции   МОС ВП

IO$_WRITELBLK с модификатором подфункции IO$M_CANCTRLO.



     5.6.8.2. Функции IO.WLB!TF.WBT и IO.WBT



     В системе МОС ВП  функция "записать  логический  блок

несмотря на занятость устройства"  выполняется  с  помощью

программы системного обслуживания  BRDCST  (распространить

сообщение). В результате  система МОС ВП не имеет драйвер-


                          - 166 -

                      00152-01 92 08


ной функции, прямо соответствуюшей функциям  IO.WLB!TF.WBT

и IO.WBT системы ОС РВ. По  запросу  "записать  логический

блок  несмотря  на  занятость  устройства"   образа  ОС РВ

системы МОС ВП издает запрос с функцией IO$_WRITELBLK. Вы-

полняется обычная функция записи логического блока.



     5.6.9. Функция IO.WVB



     Код функции IO.WVB в ОС РВ соответствует коду функции

IO$_WRITEVBLK системы МОС ВП. МОС ВП эмулирует подфункции,

допустимые с функцией IO.WVB, таким же образом, как и  для

функции IO.WLB. Однако, результатом операции  ввода-вывода

будет запись виртуального блока.



     5.6.9.1. Функции IO.WLB!TF.WAL, IO.WAL и

IO.CCO!TF.WAL



     В системе ОС РВ функции IO.WLB!TF.WAL и IO.WAL  экви-

валентны. Функция IO.CCO!TF.WAL системы ОС РВ  содержит  в

себе  подфункцию  отмены  CTRL/O  и  функцию  IO.WAL.   По

запросу  на   запись  с  передачей  всех  битов, изданному

образом  ОС РВ,  МОС ВП   издает   запрос   с     функцией

IO$_WRITELBLK!IO$_NOFORMAT, который записыват  блок данных

в указанный буфер, не  интерпретируя  передаваемые данные.

В системе  МОС  ВП  образ  должен  иметь  соответствующую

привилегию для записи физического блока. Образ ОС РВ дол-

жен  иметь  такую  же  привилегию  для выполнения функции

IO.WAL.




                          - 167 -

                      00152-01 92 08


     5.6.10. Функция IO.WPB



     Функция IO.WPB системы  ОС РВ  соответствует  функции

IO$_WRITEPBLK системы МОС ВП. Биты подфункций не использу-

ются.



     5.6.11. Функция IO.GTS



     МОС ВП не имеет параметров генерации системы, которые

управляют возможностями терминального драйвера. Когда  об-

раз ОС РВ издает запрос с функцией IO.GTS, МОС ВП  возвра-

щает в четырехсловном  буфере информацию, которая описыва-

ет возможности терминального драйвера.  Поскольку  возмож-

ности драйвера не могут быть изменены, всегда возвращается

одна и та же информация (см. приложение 6). Эта информация

включает все возможности терминального драйвера, о которых

может сообщать система ОС РВ, кроме следующих  битов  сло-

ва 0, всегда равных 0:

     - бита, разрешающего  вывод,  несмотря  на  занятость

устройства (F1.BIW);

     - бита, разрешающего выгрузку во время  терминального

ввода (F1.BUF);

     - бита, разрешающего буферирование  ввода в  адресном

пространстве задачи;

     - бита, указывающего на переменную длину терминальных

буферов (F1.VBF).



     5.6.12. Функция SF.GMC



     По запросу с  функцией SF.GMC  образа  ОС РВ  система


                          - 168 -

                      00152-01 92 08


МОС ВП  издает запрос  с функцией IO$_SENSEMODE. По  этому

запросу система возвращает образу ряд характеристик   тер-

минала (см. приложение 6). Значение характеристики TC.PRI,

возвращаемое в ОС РВ,  никогда  не  возвращается  системой

МОС ВП, поскольку в МОС ВП нет понятия  привилегированного

терминала. Функция SF.GMC для TI, CO или CL, назначенных к

постоянным  файлам процесса,  является  пустой  операцией.



     5.6.13. Функция  SF.SMC



     По запросу образа ОС РВ с функцией SF.SMC МОС ВП из-

дает запрос с функцией IO$_SETMODE. Соответствие между би-

тами характеристик терминала в системе ОС РВ и модификато-

рами   подфункций,   которые   используются   с   функцией

IO$_SETMOD в системе МОС ВП, позволяет эмулировать функцию

SF.SMC (см. приложение 6).  Характеристика TC.TTP, опреде-

ляющая тип терминала, может быть установлена   для   типов

терминалов PR36, PRA120, PR34,  PR38,  TL05,  TL55, TL100,

TL101, TL102, TL105,  TL131  и  TL132.  По запросу SF.SMC

с заданным битом характеристики  TC.TBF  очищается  буфер

предварительного ввода.

     Функция SF.SMC для TI, CO или CL, назначенных к  пос-

тоянным файлам процесса, является пустой операцией.



     5.6.14. Коды завершения операции терминального чтения



     Блок состояния ввода-вывода (IOSB) для всех  QIO-зап-

росов к терминалу,  кроме запросов  на  чтение,   содержит

стандартную информацию. Для операции терминального  чтения

первое слово IOSB содержит код, старший байт которого ука-


                          - 169 -

                      00152-01 92 08


зывает символ или последовательность, завершившие операцию

чтения. Возможны следующие коды:

     - IS.CR  - чтение завершено по <CR>;

     - IS.ESC - чтение завершено по ALTMODE;

     - IS.ESQ - чтение завершено по  ESC-последовательнос-

ти;

     - -      - другой символ завершения строки;

     - 0      - чтение завершено по переполнению буфера.

     Работая с терминалами в системе  МОС  ВП,  необходимо

помнить следующее:

     1) в МОС ВП терминалы могут обслуживаться через спул;

     2) для издания запросов с функциями IO.WLB и IO.WVB к

устройству, обслуживаемому через спул, должны быть  соблю-

дены определенные требования (см. подраздел 3.10);

     3)  если  образ  ОС  РВ  издает  директиву GLUN$   на

устройство, обслуживаемое через спул, возвращаемая  инфор-

мация относится к промежуточному устройству - к диску;

     4) псевдоустройства TI, CO и CL отображаются в МОС ВП

в постоянные файлы процесса следующим образом:

     - TI - SYS$INPUT и SYS$OUTPUT;

     - CO - SYS$COMMAND;

     - CL - SYS$ERROR.

     5) управление постоянными файлами процесса выполняет-

ся с помощью СУД-32, если только они  не  отображаются  на

терминал. Поэтому  МОС ВП ограничивает коды функций, кото-

рые могут быть использованы для  доступа  к  этим  файлам,

только функциями чтения или записи.  Все  биты  подфункций

игнорируются. Функции, отличные от чтения и записи, являю-

тся недопустимыми, и результатом их выполнения  будет  код

ошибки IE.IFC (недопустимая  функция для данного устройст-


                          - 170 -

                      00152-01 92 08


ва);

     6) постоянные файлы процесса,  созданные  пользовате-

лем, для образа ОС РВ являются терминальными устройствами,

ориентированными на записи;

     7) если постоянные файлы процесса отображены на  тер-

миналы, то QIO-запросы могут быть изданы;

     8) устройства TI, CO и CL имеют следующие характерис-

тики:

     - устройство, ориентированное на записи;

     - терминальное устройство;

     - размер буфера 132 байта;

     - устройство с управлением кареткой;

     - без преобразования маленьких букв в большие.



     5.7. Драйвер считывателя с перфокарт



     Система МОС ВП эмулирует функции ввода-вывода, допус-

тимые в ОС РВ для считывателя с перфокарт,  выполняя  либо

соответствующую функцию ввода-вывода, либо соответствующую

программу системного обслуживания (см. приложение 5).



     5.8. Пустое устройство



     МОС ВП допускает использование образами ОС РВ  пустых

устройств.

     Так же, как и в системе ОС РВ,  на  запрос  чтения  с

пустого  устройства  возвращается  код  завершения  IE.EOF

(конец файла), на запрос записи  возвращается  код  IE.SUC

(успешное завершение).

     Ввод-вывод на пустое устройство обрабатывается  точно


                          - 171 -

                      00152-01 92 08


так же, как ввод-вывод на устройство, которое не поддержи-

вается МОС ВП, но поддерживается системой ОС РВ (подраздел

5.1).



     5.9. Файловые процессы дисков и магнитных лент



     Для выполнения операций ввода-вывода на устройствах с

файловой структурой (таких как диски и  магнитные  ленты),

часто  требуется  вмешательство соответствующего файлового

процессора (ACP). Обычно образы ОС РВ выполняют ввод-вывод

с помощью FCS или СУД ОС РВ; сами образы не издают  дирек-

тиву QIO непосредственно к ACP.

     Любое обращение к ACP  выполняется   из  FCS  или суд

ОС РВ и прозрачно для образа. Однако, образ  может  непос-

редственно сам запрашивать выполнение функций ACP, издавая

директиву QIO с кодом функции файлового процессора.

     В данном подразделе  содержится  информация,  которая

предназначена  пользователям ОС РВ,  использующим  запросы

ввода-вывода с функциями ACP, например, создать  файл  или

ввести имя файла. Обычно  образы  ОС РВ,  выполняющиеся  в

системе МОС ВП, полагаются на FCS или  СУД ОС РВ,  которые

сами запрашивают соответствующие функции аср во время  вы-

полнения образа.

     Функции ACP в системе МОС ВП записываются через шесть

основных кодов функций и три модификатора подфункций:

     - IO$_CREATE     - создать файл;

     - IO$_ACCESS     - разрешить доступ к файлу;

     - IO$_DEACCESS   - запретить доступ к файлу;

     - IO$_MODIFY     - модифицировать файл;

     - IO$_DELETE     - удалить файл;


                          - 172 -

                      00152-01 92 08


     - IO$_ACPCONTROL - управляющая функция ACP.

     Модификаторы подфункций используются с функциями соз-

дания/удаления файла  и функциями  управления  доступом  к

файлу. Возможны следующие модификаторы:

     - IO$M_ACCESS - открыть файл на указанном канале;

     - IO$M_CREATE - создать идентификатор файла;

     - IO$M_DELETE - удалить файл.

     Использование вместе с кодом функции ввода-вывода мо-

дификатора подфункции  позволяет образу  фактически  одним

запросом ввода-вывода запрашивать несколько операций  ACP.

например, запрос с функцией IO$_CREATE!IO$M_ACCESS  запра-

шивает ACP о создании файла и разрешении доступа по задан-

ному каналу. Запрос с функцией IO$_DELETE!IO$M_DELETE уда-

ляет запись о файле в каталоге  и  заголовок  файла,  т.е.

файл  удаляется  полностью.   Если   же   задана   функция

IO$_DELETE без модификатора, то удаляется только запись  о

файле в каталоге.

     В системе МОС  ВП  для  связи  файлового  процесса  с

об'ектом, издавшим запрос ввода-вывода, используется  блок

описания файла (FIB) [7]. Для всех запросов к ACP функцио-

нально-зависимый  параметр  P1  содержит  адрес  описателя

блока FIB. В FIB содержится большая часть информации,  ко-

торая передается к ACP образом ОС РВ в параметрах P1-P6.

     Формат блока FIB показан на рис. 4.




                          - 173 -

                      00152-01 92 08


              Формат блока описания файла



31         24 23         16 15          8 7            0

I-------------I------------I---------------------------I

I FIB$B_WSIZE I        FIB$L_ACCTL                     I

I-------------I------------I---------------------------I

I                      FIB$W_FID                       I

I--------------------------I                      -----I

I                          I                           I

I----                      I---------------------------I

I                      FIB$W_DID                       I

I--------------------------I---------------------------I

I                      FIB$L_WCC                       I

I--------------------------I---------------------------I

I        FIB$W_EXCTL       I        FIB$W_NмCTL        I

I--------------------------I---------------------------I

I                      FIB$L_EXSZ                      I

I--------------------------I---------------------------I

I                      FIB$L_EXVBN                     I

I--------------------------I-------------I-------------I

I                          IFIB$B_ALALIGNI FIB$B_ALOPTSI

I----                      I-------------I-------------I

I                          I                           I

I----                 FIB$W_ALLOC                 -----I

I                          I                           I

I--------------------------I---------------------------I

                        Рис. 4




                          - 174 -

                      00152-01 92 08


     При  обращении  к  ACP в системе ОС РВ используются

следующие коды функций:

     - IO.CRE - создать файл;

     - IO.ACR - разрешить доступ на чтение;

     - IO.ACW - разрешить доступ на запись;

     - IO.ACE - разрешить доступ для расширения;

     - IO.EXT - расширить файл;

     - IO.WAT - записать атрибуты файла;

     - IO.RAT - прочитать атрибуты файла;

     - IO.DAC - запретить доступ к файлу;

     - IO.DEL - удалить файл;

     - IO.FNA - найти имя файла в каталоге;

     - IO.RNA - удалить имя файла из каталога;

     - IO.APC - управляющая функция ACP;

     - IO.ENA - ввести имя файла в каталог.

     Когда образ ОС РВ, выполняющийся в  системе  МОС  ВП,

издает запрос к ACP, МОС ВП издает свой запрос QIO к  ACP.

для заполнения блока FIB и  функционально-зависимых  пара-

метров запроса МОС ВП использует два источника:

     1) функционально-зависимые  параметры директивы  QIO,

изданной образом ОС РВ;

     2) структуры данных, заданные функционально-зависимы-

ми параметрами, например, блок имени файла.

     После выполнения запрошенной функции МОС ВП заполняет

структуры данных образа ОС РВ такой же информацией,  какую

образ получает при выполнении в системе ОС РВ.



     5.9.1. Параметры запросов к ACP в ОС РВ и МОС ВП



     Соответствие между функционально-зависимыми  парамет-


                          - 175 -

                      00152-01 92 08


рами QIO-запросов к ACP в ОС РВ и функционально-зависимыми

параметрами и полями FIB в МОС ВП приведено в табл. 2.



                                            Таблица 2

__________________________________________________________

                     !                 !

  Функция параметра  !    Параметр     !    Эквивалент

                     !    в ОС РВ      !    в  МОС ВП

_____________________!_________________!__________________

  указатель идентифи-!  P1 (указатель) ! FIB$W_FID (значе-

  фикатора файла     !                 ! ние)

                     !                 !

  указатель  списка  !  P2             ! P5 (преобразован-

  атрибутов          !                 ! ный)

                     !                 !

  управление расшире-!  P3 (старший    ! FIB$W_EXCTL

  рением             !  байт)          !

                     !                 !

  размер приращения  !  P3 (младший    ! FIB$L_EXVBN

  в блоках           ! байт) и P4      ! только для усече-

                     !                 ! ния файла

                     !                 ! FIB$L_EXSZ

                     !                 ! только для расши-

                     !                 ! рения  файла

                     !                 !

  размер окна        !  P5 (младший    ! FIB$B_WSIZE

                     !  байт)          !

                     !                 !

  управление доступом!  P5 (старший    ! FIB$L_ACCTL

                     !  байт)          !


                          - 176 -

                      00152-01 92 08


                                     Продолжение табл. 2

__________________________________________________________

                     !                 !

  Функция параметра  !    Параметр     !    Эквивалент

                     !    в ОС РВ      !    в  МОС ВП

_____________________!_________________!__________________

  указатель   блока  !  P6             ! P2 (строка имени)

  имени файла        !                 ! и P4 (результиру-

                     !                 ! ющая строка)



        5.9.2 Функция IO.CRE



     В МОС ВП эквивалентом функции IO.CRE является выраже-

ние IO$_CREATE!IO$M_CREATE.

     Примечания:

     1. Если значение размера расширения задано в  младшем

байте параметра P3 и в  P4,  то  оно  сохраняется  в  поле

FIB$L_EXSZ.

     2. Старший байт параметра P3 (управление расширением)

используется для установки битов в поле FIB$W_EXCTL:

     FIB$V_EXTEND = EX.ENA

     FIB$V_ALCON  = EX.AC1

     FIB$V_ALCONB = EX.AC2

     FIB$V_FILCON = EX.FCO

     FIB$V_ALDEF =  EX.ADF

     3. Идентификатор файла копируется из поля FIB$W_FID и

возвращается по адресу, указанному в параметре P1  (указа-

тель идентификатора файла).

     4. Если в запросе, изданном образом ОС РВ, задан спи-

сок атрибутов файла, то из него составляется список  атри-


                          - 177 -

                      00152-01 92 08


бутов запроса в МОС  ВП.

     5. Размер расширения (в блоках) возвращается  в  пер-

вом, втором и третьем байтах блока  состояния  ввода-выво-

да (IOSB).



     5.9.3. Функция IO.DEL



     В МОС ВП эквивалент функции IO.DEL зависит от  значе-

ния атрибута EX.ENA, определяющего возможность  расширения

файла.

     Если бит EX.ENA=0, TO эквивалентом   функции IO.DEL в

МОС ВП является выражение IO$_DELETE!IO$M_DELETE.

     Примечание. Идентификатор файла, указанный параметром

P1, копируется в поле FIB$W_FID.

     Если бит EX.ENA=1, TO эквивалентом функции  IO.DEL  в

мос вп является функция IO$_MODIFY.

     Примечания:

     1. Идентификатор файла, указанный в параметре P1, ко-

пируется в поле FIB$W_FID.

     2. В   поле    FIB$W_EXCTL    устанавливается     бит

FIB$V_TRUNC.

     3. Значение расширения, заданное младшим байтом пара-

метра P3 и параметром P4, увеличивается на 1 и сохраняется

в поле FIB$L_EXVBN.

     4. Значение округления файла (в блоках)  возвращается

во втором и третьем байтах блока  состояния   ввода-вывода

(значение  округления  файла - это  число  блоков, которое

прибавляется  к  заданному размеру файла для округления до

размера кластера).




                          - 178 -

                      00152-01 92 08


     5.9.4. Функция IO.ACR



     Эквивалентом функции IO.ACR в МОС ВП является выраже-

ние IO$_ACCESS!IO$M_ACCESS.

     Примечания:

     1. Идентификатор файла, указанный параметром P1,  ко-

пируется в поле FIB$W_FID.

     2. Старший байт параметра  P5  (управление  доступом)

используется для установки битов в поле FIB$L_ACCTL

FIB$V_NOWRITE = AC.LCK

FIB$V_REWIND  = AC.RWD

FIB$V_CURPOS  = AC.POS

FIB$V_UPDATE  = AC.UPD

     3. Размер блока  указателей  извлечения,  заданный  в

младшем   байте   параметра   P5,   сохраняется   в   поле

FIB$B_WSIZE.

     4. Если в запросе, изданном образом ОС РВ, задан спи-

сок атрибутов файла, то из него составляется список  атри-

бутов запроса в МОС  ВП.



     5.9.5. Функции IO.ACW и IO.ACE



     Эквивалентом функций IO.ACW и IO.ACE является выраже-

ние IO$_ACCESS!IO$M_ACCESS.

     Примечания:

     1. Идентификатор файла, указанный параметром P1,  ко-

пируется в поле FIB$W_FID.

     2. Старший байт параметра P5 используется  для  уста-

новки битов в FIB$L_ACCTL

FIB$V_DLOCK   = AC.DLK


                          - 179 -

                      00152-01 92 08


FIB$V_NOWRITE = AC.LCK

FIB$V_REWIND  = AC.RWD

FIB$V_CURPOS  = AC.POS

FIB$V_UPDATE  = AC.UPD

     Кроме того, в МОС ВП устанавливается бит FIB$V_WRITE.

     3. Размер  блока   указателей  извлечения, заданный в

младшем   байте   параметра   P5,   сохраняется   в   поле

FIB$B_WSIZE.

     4. Если в запросе, изданном образом ОС РВ, задан спи-

сок атрибутов файла, то из него составляется список  атри-

бутов запроса в МОС  ВП.



     5.9.6. Функция IO.DAC



     Эквивалентом функции IO.DAC в МОС ВП является функция

IO$_DEACCESS.

     Примечания:

     1. Идентификатор файла, указанный параметром P1,  ко-

пируется в поле FIB$W_FID.

     2. Если в запросе, изданном образом ОС РВ, задан спи-

сок атрибутов файла, то из него составляется список  атри-

бутов запроса в МОС  ВП.



     5.9.7. Функция IO.EXT



     Эквивалентом функции IO.EXT в МОС ВП является функция

IO$_MODIFY.

     Примечания:

     1. Идентификатор файла, указанный параметром P1,  ко-

пируется в поле FIB$W_FID.


                          - 180 -

                      00152-01 92 08


     2. Старший байт параметра P3 (управление расширением)

используется для установки битов в поле FIB$W_EXCTL

FIB$V_EXTEND = EX.ENA

FIB$V_ALCON  = EX.AC1

FIB$V_ALCONB = EX.AC2

FIB$V_FILCON = EX.FCO

FIB$V_ALDEF  = EX.ADF

     4. Значение расширения, которое  задается  в  младшем

байте параметра P3 и в параметре  P4, сохраняется  в  поле

FIB$L_EXSZ.

     5. Размер расширения  файла  возвращается  в  первом,

втором и третьем байтах блока IOSB.



     5.9.8. Функция IO.WAT



     Эквивалентом функции IO.WAT в МОС ВП является функция

IO$_MODIFY.

     Примечания:

     1. Идентификатор файла, указанный параметром P1,  ко-

пируется в поле FIB$W_FID.

     2. Если в запросе, изданном образом ОС РВ, задан спи-

сок атрибутов файла, то из него составляется список  атри-

бутов запроса в МОС  ВП.



     5.9.9. Функция IO.RAT



     Эквивалентом функции IO.RAT в МОС ВП является функция

IO$_ACCESS.

     Примечания:

     1. Идентификатор файла, указанный параметром P1,  ко-


                          - 181 -

                      00152-01 92 08


пируется в поле FIB$W_FID.

     2. Если в запросе, изданном образом ОС РВ, задан спи-

сок атрибутов файла, то из него составляется список  атри-

бутов запроса в МОС  ВП.



     5.9.10. Функция IO.FNA



     Эквивалентом функции IO.FNA в МОС ВП является функция

IO$_ACCESS.

     Примечания:

     1. Идентификатор файла копируется из поля FIB$W_FID и

возвращается по адресу, заданному параметром P1.

     2. Идентификатор каталога копируется из  блока  имени

файла в поле FIB$W_DID.

     3. Строка имени файла, указанная в запросе, создается

из  имени  файла, заданного  в  блоке  имени  файла в коде

RADIX-50.

     4. Если в поле N.STAT блока  имени  файла  установлен

бит NB.WLV, то результирующая строка  создается  из  имени

файла и типа файла, заданных в коде RADIX-50. Номер версии

файла хранится в поле N.FID+4 блока имени файла и является

входным параметром при вызове функции IO$_ACCESS. Если бит

NB.WLV не установлен, то результирующая строка имеет нуле-

вую длину.

     5. Возвращаемая строка имени файла - это результирую-

щая строка, возвращаемая программой системного  обслужива-

ния QIO. Oна перекодируется в код RADIX-50 и  возвращается

в блок имени файла.

     6. Управляющие биты в поле N.STAT блока имени файла

используются для установки битов поля FIB$W_NMCTL


                          - 182 -

                      00152-01 92 08


FIB$V_ALLNAM = NB.SNM

FIB$V_ALLTYP = NB.STP

FIB$V_ALLVER = NB.SVR

FIB$V_WILD   = NB.SNM!NB.STP!NB.SVR

     7. Поле N.NEXT блока имени файла используется для ус-

тановки поля FIB$L_WCC.

     Результирующее значение из FIB$L_WCC  возвращается  в

поле N.NEXT.



     5.9.11. Функция IO.RNA



     Эквивалентом функции IO.RNA в МОС ВП является функция

IO$_DELETE.

     Примечания:

     1. Идентификатор файла копируется из поля FIW$B_FID и

возвращается по адресу, заданному параметром P1.

     2. Идентификатор каталога копируется из  блока  имени

файла в поле FIB$W_DID.

     3. Строка имени файла, указанная   в запросе,  созда-

ется из имени файла, заданного в блоке  имени файла в коде

RADIX-50.

     4. Если в поле N.STAT блока  имени  файла  установлен

бит NB.WLV, то результирующая строка  создается  из  имени

файла и типа файла, заданных в коде RADIX-50. Номер версии

файла хранится в поле N.FID+4 блока имени файла и является

входным параметром при вызове функции IO$_ACCESS. Если бит

NB.WLV не установлен, то результирующая строка имеет нуле-

вую длину.

     5. Возвращаемая строка имени файла - это    результи-

рующая строка, возвращаемая программой системного обслужи-


                          - 183 -

                      00152-01 92 08


вания QIO. Она перекодируется в код RADIX-50 и возвращает-

ся в блок имени файла.

     6. Управляющие биты в поле N.STAT блока  имени  файла

используются для установки битов поля FIB$W_NMCTL

FIB$V_ALLNAM = NB.SNM

FIB$V_ALLTYP = NB.STP

FIB$V_ALLVER = NB.SVR

FIB$V_WILD   = NB.SNM!NB.STP!NB.SVR

     7. Поле N.NEXT блока имени файла используется для ус-

тановки поля FIB$L_WCC.

     Результирующее значение из FIB$L_WCC  возвращается  в

поле N.NEXT.



     5.9.12. Функция IO.ENA



     Эквивалентом функции IO.ENA в МОС ВП является функция

IO$_CREATE.

     Примечания:

     1. Идентификатор файла копируется из блока имени фай-

ла в поле FIB$W_FID.

     2. Идентификатор каталога копируется из  блока  имени

файла в поле FIB$W_DID.

     3. Строка имени файла, указанная в запросе, создается

из имени файла, заданного в блоке имени файла в RADIX-50.

     4. Возвращаемая строка имени файла - это результирую-

щая строка, возвращаемая программой системного  обслужива-

ния QIO. Она перекодируется в код RADIX-50 и  возвращается

в блок имени файла.




                          - 184 -

                      00152-01 92 08


     5.9.13. Функция IO.APC



     Эквивалентом функции IO.APC в МОС ВП является функция

IO$_ACPCONTROL.

     Примечания:

     1. Параметр  P3  содержит  идентификатор  подфункции.

Mладший байт параметра P3 расширяется нулями и сохраняется

в   поле   FIB$W_CNTRLFUNC,   которое   перекрывает   поле

FIB$W_EXCTL. Коды подфункций ACP системы ОС РВ имеют экви-

валенты в МОС ВП

FF.NV  - FIB$C_NEXTVOL

FF.POE - FIB$C_POSEND

FF.RWD - FIB$C_REWINDVOL

FF.RWF - FIB$C_REWINDFIL

FF.SPC - FIB$C_SPACE

     2. Для подфункции FF.SPC параметр P4 расширяется зна-

ком и сохраняется в поле FIB$L_CNTRLVAL, которое  перекры-

вает поле FIB$L_EXSZ. Отрицательное значение параметра  P4

задает число  блоков,  пропускаемых  назад.  Положительное

значение задает число блоков, пропускаемых вперед.




                          - 185 -

                      00152-01 92 08


                                              Приложение 1



     Набор инструкций  режима совместимости СМ 1700



     В данном приложении в таблице приведен перечень

инструкций режима совместимости СМ 1700.



     ------------------------------------------------

         Код операции       I    Мнемоника

     ------------------------------------------------

           00002            I     RTI

           00006            I     RTT

           0001DD           I     JMP

           00020R           I     RIS

           000240-000277    I иструкции кодов условий

           0003DD           I     SWAB

           000400-003777    I инструкции переходов

           100000-103777    I инструкции переходов

           004RDD           I     JSR

           .050DD           I     CLR(B)

           .051DD           I     COM(B)

           .052DD           I     INC(B)

           .053DD           I     DEC(B)

           .054DD           I     NEG(B)

           .055DD           I     ADC(B)

           .056DD           I     SBC(B)

           .057DD           I     TST(B)

           .060DD           I     RCR(B)

           .061DD           I     ROL(B)




                          - 186 -

                      00152-01 92 08


                                        Продолжение

     ------------------------------------------------

         Код операции       I    Мнемоника

     ------------------------------------------------

           .062DD           I     ASR(B)

           .063DD           I     ASL(B)

           0065SS           I     MFPI

           0066DD           I     MTPI

           1065SS           I     MFPD

           1066DD           I     MTPD

           0067DD           I     SXT

           070RSS           I     MUL

           071RSS           I     DIV

           072RSS           I     ASH

           073RSS           I     ASHC

           074RSS           I     XOR

           077RNN           I     SOB

           .1SSDD           I     MOV(B)

           .2SSDD           I     CMP(B)

           .3SSDD           I     BIT(B)

           .4SSDD           I     BIC(B)

           .5SSDD           I     BIS(B)

           06SSDD           I     ADD

           16SSDD           I     SUB



     Примечание. Инструкции MFPI, MTPI, MFPD, MTPD  выпол-

няются, как на моделях M16-СМ в пользовательском   режиме:

они игнорируют предыдущий режим и выполняются, как инстру-

кции PUSH и POP, ссылаясь к текущему стеку.




                          - 187 -

                      00152-01 92 08


                                         Приложение 2



                  Директива разбора



     Директива разбора позволяет образу ОС РВ использовать

такие спецификаторы файлов, которые не полностью определе-

ны в ОС РВ, но допустимы в  МОС  ВП  благодаря  расширению

возможностей логических имен. Эта директива заменяет обра-

зам ОС РВ,  выполняющимся  в  МОС  ВП,  программы  .PARSE,

.PRSDR, .PRSDV системы FCS и программу $PARSE СУД ОС РВ.

     Образ ОС РВ запрашивает  разбор  спецификации  файла,

издавая директиву разбора, в которой задаются адреса блока

имени файла и структур данных,  содержащих  информацию  по

умолчанию. МОС ВП создает первичную  строку  и  строку  по

умолчанию, используя информацию, предоставляемую  образом,

и информацию, содержащуюся в таблице логических имен ОС РВ

и в системной таблице логических имен. Эти строки  переда-

ются СУД-32 для выполнения фактического  разбора.   СУД-32

возвращает МОС ВП расширенное имя. МОС ВП, в свою очередь,

использует расширенное имя для заполнения структур  данных

ОС РВ, например, строки каталога и блока  имени  файла.  В

результате образ  получает  информацию  в  формате,  соот-

ветствующем системе ОС РВ.



                   1. Режимы разбора



     Образ может запросить один из четырех  различных  ре-

жимов  разбора:

     1) полный разбор спецификации файла  (нормальный  ре-

жим);


                          - 188 -

                      00152-01 92 08


     2) разбор только имени устройства (режим устройства);

     3) разбор  имени файла с  использованием  блока имени

файла по умолчанию (DFNB) как главного источника  информа-

ции  (режим использования DFNB);

     4) разбор, соответствующий разбору, выполняемому  СУД

ОС РВ (режим СУД).

     Тип режима  задается  параметром  директивы  "режим".

Возможны следующие значения этого параметра:

     - 0 - нормальный режим;

     - 1 - режим устройства;

     - 2 - режим использования DFNB;

     - 3 - режим СУД.



     1.1. Нормальный режим разбора



     В случае нормального режима разбора СУД-32  разбирает

полную спецификацию файла. МОС ВП строит первичную  строку

путем конкатенации следующих полей описателя  набора  дан-

ных:

     - устройство;

     - каталог;

     - имя файла.тип;версия.

     Для заполнения строки по умолчанию МОС ВП  использует

поля блока имени файла по умолчанию и  описатель  каталога

по умолчанию. Строка по умолчанию строится следующим обра-

зом:

     - устройство берется из LUN или из блока имени  файла

по умолчанию;

     - каталог по умолчанию берется из описателя  каталога

образа по умолчанию;


                          - 189 -

                      00152-01 92 08


     - имя файла.тип;версия берутся  из  блока имени файла

по умолчанию.

     СУД-32 возвращает образу ОС РВ заполненные блок имени

файла и описатель строки каталога в блоке имени файла. Са-

ма строка каталога возвращается по  адресу,  указанному  в

описателе.



     1.2. Режим устройства



     В случае режима устройства СУД-32 разбирает только ту

часть спецификации файла, которая  касается  устройства  и

каталога. Для создания первичной строки и строки по  умол-

чанию МОС ВП использует те же источники информации, что  и

при нормальном режиме разбора.



     1.3. Режим использования блока имени файла по

умолчанию



     В случае режима разбора с использованием блока  имени

файла по умолчанию в качестве главного источника  информа-

ции МОС ВП создает имя файла для первичной строки из  име-

ни, указанного в блоке имени файла по умолчанию,  преобра-

зуя его из кода RADIX-50 в код КОИ-8.

     Для строки по умолчанию МОС ВП берет:

     - имя устройства из блока имени файла по умолчанию;

     - имя каталога из описателя каталога по умолчанию;

     - имя файла.тип;версия из блока имени файла по  умол-

чанию.

     B DSW возвращаются те же коды  завершения,  что  и  в

случае нормального режима разбора.


                          - 190 -

                      00152-01 92 08


     1.4. Режим СУД



     В случае режима СУД система СУД-32 разбирает специфи-

кацию файла, используя такой же метод,  какой   использует

СУД ОС РВ при разборе спецификации файла.

     Формат блока описания директивы (DPB) для этого режи-

ма несколько отличается от формата DPB для остальных режи-

мов разбора.



     1.5. Вызов директивы и форматы DPB



     Директива разбора вызывается с  помощью  макрокоманды

DIR$. Вызов имеет вид:

     DIR$ #адр_DPB

где адр_DPB - адрес блока DPB.

     Формат DPB для нормального режима, режима  устройства

и режима использования DFNB

     aдр_DPB: .BYTE 145.,7

              .WORD режим

              .WORD LUN

              .WORD DSPT

              .WORD DFNB

              .WORD DFDD

              .WORD FNB

              .WORD RTDD

где адр_DPB - символический адрес DPB;

    режим - режим разбора, который может быть  задан сле-

дующими значениями:

          - 0 - нормальный режим;

          - 1 - режима устройства;


                          - 191 -

                      00152-01 92 08


          - 2 - режим использования DFNB;

          - 3 - режим СУД.

    LUN - логический номер устройства;

    DSPT - адрес описателя набора данных;

    DFNB - адрес блока имени файла по умолчанию;

    DFDD - адрес описателя строки каталога  по  умолчанию

    FNB - адрес блока имени файла;

    RTDD - адрес описателя для возвращаемой строки  ката-

лога.

     Формат DPB для режима СУД

     адр_DPB: .BYTE 145.,7

              .WORD режим

              .WORD LUN

              .WORD PRIPT

              .WORD DID

              .WORD 0 (не используется)

              .WORD FNB

              .WORD EXPNAM

где адр_DPB - символический адрес DPB;

    PRIPT - адрес описателя первичной строки;

    DID - адрес описателя строки по умолчанию;

    ЕXPNAM - адрес описателя блока, в котором возвращается

расширенное  имя. Параметры  режим, LUN, FNB  определяются

так же, как и для режимов 0, 1, 2.

     Коды завершения, возвращаемые в DSW

IS.SUC - успешное завершение.

IE.BAD - неверный режим  или  неверный  параметр  (код  по

умолчанию).

IE.NSF - каталог не найден (RMS$_DNF).

IE.BDI - ошибка синтаксиса каталога (RMS$_DIR).


                          - 192 -

                      00152-01 92 08


IE.BNM - неверное имя файла (RMS$_(SYN,FNM,LNE,TYP,VER)).

IE.DNR - устройство не готово (RMS$_DNR).

IE.DUN - устройство недоступно (RMS$_CHN).

IE.NSF - файл не найден (RMS$_FNF).

IE.BDV - неверная спецификация устройства (RMS$_DEV).

     Примечания:

     1. Описатели всех вводных параметров должны представ-

лять собой двухсловные блоки в формате

                .WORD размер

                .WORD адрес

     2. В системе ОС РВ нет  подобной  директивы  разбора.

образ ОС РВ, использующий эту директиву, может определить,

в какой системе он выполняется, проверяя по коду  заверше-

ния в DSW допустимость директивы в системе, и в зависимос-

ти от этого предпринимать соответствующие действия во вре-

мя выполнения.




                          - 193 -

                      00152-01 92 08





                          - 194 -

                      00152-01 92 08


                                             Приложение 4



                Коды завершения ввода-вывода

     В данном приложении в таблице приведены коды  завер-

шения  ввода-вывода системы ОС РВ и эквивалентные им коды

завершения в системе МОС ВП.

---------------------------------------------------------

    Символическое имя кода    !         Причина

------------------------------!

  в ОС РВ  !     в МОС ВП     !

---------------------------------------------------------

   IE.ABO  !  SS$_ABORT       ! Запрос ввода-вывода  был

           !                  ! отменен прежде , чем опе-

           !                  ! рация  завершилась,   или

           !                  ! была разорвана линия сети

           !  SS$_CANCEL      ! Запрос ввода-вывода был

           !                  ! отменен   до   завершения

           !                  ! операции

   IE.ALN  !  SS$_FILALRACC   ! Логическая линия сети уже

           !                  ! существует  или  была   в

           !                  ! ожидании

   IE.BAD  !  SS$_BADPARAM    ! Запрос к сети или файло-

           !                  ! вому ACP  содержит  недо-

           !                  ! пустимые параметры

   IE.BCC  !  SS$_DATACHECK   ! При контроле данных обна-


                          - 195 -

                      00152-01 92 08


                                             Продолжение

---------------------------------------------------------

    Символическое имя кода    !         Причина

------------------------------!

  в ОС РВ  !     в МОС ВП     !

---------------------------------------------------------

           !                  ! ружено     несоответствие

           !                  ! между данными на диске  и

           !                  ! данными в памяти

   IE.BDR  !  SS$_BADIRECTORY ! Файл, указанный как ката-

           !                  ! лог, не является  катало-

           !                  ! гом или содержит неверные

           !                  ! данные

   IE.BDV  !  SS$_NOTFILEDEV  ! Спецификация файла содер-

           !                  ! жит ссылку на каталог или

           !                  ! файл  на  устройстве,  на

           !                  ! котором не поддерживается

           !                  ! файловая структура

   IE.BHD  !  SS$_BADFILEHDR  ! Заголовок файла содержит

           !                  ! неверные  данные,  напри-

           !                  ! мер,  неверная  структура

           !                  ! заголовка или блоки,  за-

           !                  ! нятые заголовком, отмече-

           !                  ! ны в карте  распределения

           !                  ! памяти   устройства   как

           !                  ! свободные блоки

           !  SS$_FILESTRUCT  ! Файловая структура  тома

           !                  ! не соответствует  вызван-


                          - 196 -

                      00152-01 92 08


                                             Продолжение

---------------------------------------------------------

    Символическое имя кода    !         Причина

------------------------------!

  в ОС РВ  !     в МОС ВП     !

---------------------------------------------------------

           !                  ! ному ACP

   IE.BLK  !  SS$_ILLBLKNUM   ! Логический  номер  блока,

           !                  ! заданный  для  файла,  на

           !                  ! диске не существует

   IE.BNM  !  SS$_BADFILENAME ! Имя файла содержит  недо-

           !                  ! пустимые   символы    или

           !                  ! длина имени больше девяти

           !                  ! символов

   IE.BVR  !  SS$_BADFILEVER  ! Номер версии файла превы-

           !                  ! шает значение 32767

           !  SS$_TOOMANYVER  ! Максимальное число версий

           !                  ! файла  уже  существует, и

           !                  ! все   файлы  имеют  номер

           !                  ! версии больший, чем  ука-

           !                  ! занный

   IE.CKS  !  SS$_BADCHKSUM   ! Контрольная сумма в заго-

           !                  ! ловке файла некорректна

   IE.CLO  !  SS$_FILELOCKED  ! Процесс пытается получить

           !                  ! доступ  к  блокированному

           !                  ! файлу

   IE.CNR  !  SS$_REJECT      ! Ошибка запроса на подклю-

           !                  ! чение к об'екту  в  отда-


                          - 197 -

                      00152-01 92 08


                                             Продолжение

---------------------------------------------------------

    Символическое имя кода    !         Причина

------------------------------!

  в ОС РВ  !     в МОС ВП     !

---------------------------------------------------------

           !                  ! ленном узле сети

   IE.DAA  !  SS$_DEVALLOC    ! Запрошено     закрепление

           !                  ! устройства, уже присоеди-

           !                  ! ненного другому пользова-

           !                  ! телю

   IE.DAO  !  SS$_BUFFEROVF   ! Недостаточный размер бу-

           !                  ! фера для строки, выводи-

           !                  ! мой программой системного

           !                  ! обслуживания; строка была

           !                  ! усечена

           !  SS$_DATAOVERUN  ! Недостаточный  размер бу-

           !                  ! фера для данных,  выводи-

           !                  ! мых программой системного

           !                  ! обслуживания

           !  SS$_MBTOOSML    ! Размер  почтового  ящика

           !                  ! недостаточен для  послан-

           !                  ! ных в него данных

   IE.DFU  !  SS$_DEVICEFULL  ! На устройстве  произошло

           !                  ! переполнение или не  дос-

           !                  ! таточно непрерывных  бло-

           !                  ! ков для выполнения запро-

           !                  ! са


                          - 198 -

                      00152-01 92 08


                                             Продолжение

---------------------------------------------------------

    Символическое имя кода    !         Причина

------------------------------!

  в ОС РВ  !     в МОС ВП     !

---------------------------------------------------------

           !  SS$_DIRFULL     ! Файл не может быть создан

           !                  ! из-за  переполнения  ука-

           !                  ! занного каталога

   IE.DNA  !  SS$_DEVNOTALLOC ! Запрошено    отсоединение

           !                  ! устройства,  которое   не

           !                  ! было присоединено

           !  SS$_VOLINV      ! Для  запрашиваемого тома

           !                  ! не установлен бит подтве-

           !                  ! рждения тома

   IE.DNR  !  SS$_DEVNOTMOUNT ! Устройство,  запрошенное

           !                  ! на демонтирование, не бы-

           !                  ! ло монтировано

           !  SS$_VOLINV      ! Для  запрашиваемого  тома

           !                  ! не     установлен     бит

           !                  ! подтверждения тома

   IE.DSQ  !  SS$_EXDISKQUOTA ! Процесс превысил свою ди-

           !                  ! сковую квоту

   IE.DUP  !  SS$_DUPFILENAME ! Заданный файл в указанном

           !                  ! каталоге уже существует

   IE.EOF  !  SS$_ENDOFILE    ! Обнаружен  конец   файла.

           !                  ! (для ленты - это  марка

           !                  ! EOF, для  считывателя   с




                          - 199 -

                      00152-01 92 08


                                             Продолжение

---------------------------------------------------------

    Символическое имя кода    !         Причина

------------------------------!

  в ОС РВ  !     в МОС ВП     !

---------------------------------------------------------

           !                  ! перфокарт - карта    EOF,

           !                  ! или пустой почтовый ящик,

           !                  ! или конец виртуальной па-

           !                  ! мяти)

   IE.EOT  !  SS$_BEGOFILE    ! При   операции   пропуска

           !                  ! блоков достигнуто  начало

           !                  ! файла

           !  SS$_ENDOFTAPE   ! На ленте обнаружен маркер

           !                  ! конца ленты

   IE.EOV  !  SS$_ENDOFVOLUME ! Обнаружен конец тома

   IE.EXP  !  SS$_FILNOTEXP   ! Файл не может быть  заме-

           !                  ! щен или удален, поскольку

           !                  ! не истекло время хранения

   IE.FHE  !  SS$_CRTLERR     ! Во  время операции ввода-

           !                  ! вывода произошла аппарат-

           !                  ! ная ошибка контроллера

           !  SS$_DRVERR      ! Во время  операции ввода-

           !                  ! вывода произошла ошибка в

           !                  ! работе устройства

           !  SS$_UNSAFE      ! Устройство  неисправно

   IE.HFU  !  SS$_HEADERFULL  ! область  планирования  в

           !                  ! заголовке файла  заполне-


                          - 200 -

                      00152-01 92 08


                                             Продолжение

---------------------------------------------------------

    Символическое имя кода    !         Причина

------------------------------!

  в ОС РВ  !     в МОС ВП     !

---------------------------------------------------------

           !                  ! на, а ее расширение  зап-

           !                  ! рещено

   IE.IES  !  SS$_BADESCAPE   ! Недопустимая терминальная

           !                  ! ESC-последовательность

   IE.IFC  !  SS$_ILLCNTRFUNC ! Указана  недопустимая для

           !                  ! ACP управляющая функция

           !  SS$_ILLIOFUNC   ! В явном запросе ввода-вы-

           !                  ! вода указан  недопустимый

           !                  ! код функции

   IE.LCK  !  SS$_ACCONFLICT  ! Код защиты доступа к фай-

           !                  ! лу не разрешает запрошен-

           !                  ! ный доступ

   IE.NDR  !  SS$_NOLINKS     ! Логическая  линия сети не

           !                  ! может быть создана  из-за

           !                  ! отсутствия доступных  сло-

           !                  ! тов

   IE.NLN  !  SS$_FILNOTACC   ! На канале, указанном   в

           !                  ! операции     ввода-вывода,

           !                  ! файл не был открыт

   IE.NNN  !  SS$_NOSUCHNODE  ! Указанный сетевой  узел не

           !                  ! существует

   IE.NOD  !  SS$_ACPVAFUL    ! Том не доступен для файло-


                          - 201 -

                      00152-01 92 08


                                             Продолжение

---------------------------------------------------------

    Символическое имя кода    !         Причина

------------------------------!

  в ОС РВ  !     в МОС ВП     !

---------------------------------------------------------

           !                  ! вого ACP, т.к. ACP не име-

           !                  ! ет  свободной  виртуальной

           !                  ! памяти  для   обслуживания

           !                  ! тома

           !  SS$_EXQUOTA     ! Процесс пытается превысить

           !                  ! свои лимиты или квоты  ре-

           !                  ! сурсов

           !  SS$_INSFMEM     ! Затребовано больше систем-

           !                  ! ной  динамической  памяти,

           !                  ! чем допустимо

           !  SS$_INSFWSL     ! Процесс требует для своего

           !                  ! рабочего   набора   больше

           !                  ! страниц, чем допустимо

   IE.NSF  !  SS$_NOMOREFILES ! Файлов,    соответствующих

           !                  ! спецификации с  обобщающим

           !                  ! символом, больше  нет; был

           !                  ! найден, по  крайней  мере,

           !                  ! один файл, соответствующий

           !                  ! этой  спецификации

           !  SS$_NOSUCHFILE  ! Указанный  файл не суще-

           !                  ! ствует

   IE.OFL  !  SS$_DEVOFFLINE  ! Устройство  находится   в


                          - 202 -

                      00152-01 92 08


                                             Продолжение

---------------------------------------------------------

    Символическое имя кода    !         Причина

------------------------------!

  в ОС РВ  !     в МОС ВП     !

---------------------------------------------------------

           !                  ! автономном режиме

           !  SS$_MEDOFL      ! На запрошенном устройстве

           !                  ! не   установлен   носитель

           !                  ! (лента или диск)

   IE.PES  !  SS$_PARTESCAPE  ! Терминальная  ESC-последо-

           !                  ! вательность была усечена в

           !                  ! конце буфера ввода;  оста-

           !                  ! ток ESC-последовательности

           !                  ! был записан в буфер  пред-

           !                  ! варительного ввода

   IE.PRI  !  SS$_NOPRIV      ! Процесс запросил инициацию

           !                  ! тома, к которому   он   не

           !                  ! имеет  права  доступа   на

           !                  ! запись

   IE.RER  !  SS$_FCPREADERR  ! Произошла ошибка при чте-

           !                  ! нии   управляющих   данных

           !                  ! файла (таких как каталог)

           !  SS$_FCPREWNDERR ! Произошла ошибка при пере-

           !                  ! мотке тома

           !  SS$_FCPSPACERR  ! Произошла ошибка ввода-вы-

           !                  ! вода, когда FCP  пропускал

           !                  ! блоки внутри файла или ме-


                          - 203 -

                      00152-01 92 08


                                             Продолжение

---------------------------------------------------------

    Символическое имя кода    !         Причина

------------------------------!

  в ОС РВ  !     в МОС ВП     !

---------------------------------------------------------

           !                  ! жду файлами

   IE.RSU  !  SS$_MBFULL      ! Почтовый ящик не  доступен

           !                  ! для других сообщений, т.к.

           !                  ! он полон

           !  SS$_VECINUSE    ! Вектор CTRL/C для процесса

           !                  ! был уже использован

   IE.SNC  !  SS$_FILENUMCHK  ! Индексный файл тома содер-

           !                  ! жит неверные данные

   IE.SPC  !  SS$_ACCVIO      ! Процесс пытается обратить-

           !                  ! ся  к  памяти  вне  своего

           !                  ! виртуального     адресного

           !                  ! пространства. PC  содержит

           !                  ! адрес неверной инструкции

   IE.SQC  !  SS$_FILESEQCHK  ! Неверный  последовательный

           !                  ! номер файла в блоке  заго-

           !                  ! ловка файла. Запись  ката-

           !                  ! лога описывает  устаревший

           !                  ! или удаленный файл

   IE.TMO  !  SS$_TIMEOUT     ! Операция  ввода-вывода  не

           !                  ! завершилась  до  истечения

           !                  ! периода времени, указанно-

           !                  ! го для таймаута


                          - 204 -

                      00152-01 92 08


                                             Продолжение

---------------------------------------------------------

    Символическое имя кода    !         Причина

------------------------------!

  в ОС РВ  !     в МОС ВП     !

---------------------------------------------------------

   IE.VER  !  SS$_PARITY      ! произошла  ошибка, завися-

           !                  ! щая от устройства

   IE.WAC  !  SS$_ACCONFLICT  ! Код защиты доступа  к фай-

           !                  ! лу  не позволяет  получить

           !                  ! запрошенный доступ

   IE.WAT  !  SS$_BADATTRIB   ! Для  операции  чтения  или

           !                  ! записи, использующей  фай-

           !                  ! ловый ACP, задан  неверный

           !                  ! атрибут

   IE.WER  !  SS$_FCPWRITERR  ! Ошибка  ввода-вывода прои-

           !                  ! зошла во время, когда  FCP

           !                  ! выполнял запись

   IE.WLK  !  SS$_WRITLCK     ! На запрошенном диске вклю-

           !                  ! чен аппаратный  переключа-

           !                  ! тель блокировки записи

   IS.PND  !     -            ! Запрос ввода-вывода еще не

           !                  ! выполнился

   IS.RDD  !  SS$_RDDELDATA   ! Успешное завершение опера-

           !                  ! ции   чтения   физического

           !                  ! блока со стиранием данных

   IS.SUC  !  SS$_NORMAL      ! Успешное завершение опера-

           !                  ! ции ввода-вывода

           !                  !


                          - 205 -

                      00152-01 92 08


                                            Приложение 5



     Соответствие кодов функций и параметров для

                 стандартных устройств



     В данном приложении приведено соответствие кодов

 функций ввода-вывода и функционально-зависимых пара-

 метров для стандартных устройств в ОС РВ и МОС ВП.

     Соответствие кодов функций для дисковых устройств

 приведено в табл. 1.



                                               Таблица 1

     Соответствие кодов функций для дисковых устройств

 --------------------------------------------------------

     Функция      !    Код в ОС РВ   ! Код или действие,

                  !                  ! выполняемое   в

                  !                  ! МОС ВП

 ------------------------------------------------------

  присоединить    !      IO.ATT      ! нет операции

  устройство      !                  !

                  !                  !

  отсоединить     !      IO.DET      ! нет операции

  устройство      !                  !

                  !                  !

  отменить запро- !      IO.KIL      ! нет операции

  сы ввода-вывода !                  !

                  !                  !

  чтение логичес- !      IO.RLB      ! IO$_READLBLK

  кого блока      !                  !

                  !                  !


                          - 206 -

                      00152-01 92 08


                                     Продолжение табл. 1

 --------------------------------------------------------

     Функция      !    Код в ОС РВ   ! Код или действие,

                  !                  ! выполняемое   в

                  !                  ! МОС ВП

 --------------------------------------------------------

  запись логичес- !      IO.WLB      ! IO$_WRITELBLK

  кого блока      !                  !

                  !                  !

  чтение виртуаль-!      IO.RVB      ! IO$_READVBLK

  ного блока      !                  !

                  !                  !

  запись виртуаль-!      IO.WVB      ! IO$_WRITEVBLK

  ного блока      !                  !

                  !                  !

  чтение физичес- !      IO.RPB      ! IO$_READPBLK

  кого блока      !                  !

                  !                  !

  запись физичес- !      IO.WPB      ! IO$_WRITEPBLK

  кого блока      !                  !

                  !                  !

  запись физичес- !      IO.WDD      ! IO$_WRITEPBLK!

  кого блока (со  !                  !   IO$M_DELDATA

  стиранием дан-  !                  ! (только   для

  ных)            !                  ! гибких дисков)

                  !                  !

  загрузка        !      IO.LOV      ! специальная фор-

  перекрытия      !                  ! ма функции IO.RLB,

                  !                  ! используемая толь-


                          - 207 -

                      00152-01 92 08


                                    Продолжение табл. 1

 --------------------------------------------------------

     Функция      !    Код в ОС РВ   ! Код или действие,

                  !                  ! выполняемое   в

                  !                  ! МОС ВП

 --------------------------------------------------------

                  !                  ! ко для  загрузки

                  !                  ! перекрытий  (для

                  !                  ! устройств   OV);

                  !                  ! для  LUN,  назна-

                  !                  ! ченных к устройс-

                  !                  ! твам, отличным от

                  !                  ! OV,   выполняется

                  !                  ! функция IO.RVB

                  !                  !

  подтверждение   !       IO.STC     ! IO$_PACKACK

  тома            !                  !




                          - 208 -

                      00152-01 92 08


     В табл. 2  приведено  соответствие функционально-за-

висимых параметров директивы QIO  для  дисковых устройств

в ОС РВ и МОС ВП.

                                             Tаблица 2

      Соответствие функционально-зависимых параметров

              для дисковых устройств

 --------------------------------------------------------

    Функция        !    Параметр      !   Параметр

    параметра      !    в ОС РВ       !   в МОС ВП

 --------------------------------------------------------

   адрес  буфера   !       P1         !      P1

   данных (стад)   !                  !

                   !                  !

   размер буфера   !       P2         !      P2

   данных (разм)   !                  !

                   !                  !

   старшая часть   !       P4         !      P3

   блока (блкст)   !                  ! (старшая половина

                   !                  ! длинного слова)

   младшая часть   !       P5         !      P3

   блока (блкмл)   !                  ! (младшая половина

                   !                  ! длинного слова)


                          - 209 -

                      00152-01 92 08


     В табл.3 приведено соответствие кодов функций  дирек-

тивы QIO для магнитных лент в ОС РВ и МОС ВП.



                                             Таблица 3

     Соответствие кодов функций для магнитных лент

 --------------------------------------------------------

     Функция      !    Kод в ОС РВ   ! Kод или действиe,

                  !                  ! выполняемoе   в

                  !                  ! МОС ВП

 --------------------------------------------------------

  присоединить    !      IO.ATT      ! нет операции

  устройство      !                  !

                  !                  !

  отсоединить     !      IO.DET      ! нет операции

  устройство      !                  !

                  !                  !

  отменить запро- !      IO.KIL      ! выполняется прог-

  сы ввода-вывода !                  ! рамма  системного

                  !                  ! обслуживания

                  !                  ! CANCEL (отменить

                  !                  ! ввод-вывод на ка-

                  !                  ! нале)

                  !                  !

  чтение логичес- !      IO.RLB      ! IO$_READLBLK

  кого блока      !                  !

                  !                  !

  запись логичес- !      IO.WLB      ! IO$_WRITELBLK

  кого блока      !                  !


                          - 210 -

                      00152-01 92 08


                                     Продолжение табл. 3

 --------------------------------------------------------

     Функция      !    Код в ОС РВ   ! Код или действие,

                  !                  ! выполняемое   в

                  !                  ! МОС ВП

 --------------------------------------------------------

                  !                  !

  чтение виртуаль-!      IO.RVB      ! IO$_READVBLK

  ного блока      !                  !

                  !                  !

  запись виртуаль-!      IO.WVB      ! IO$_WRITEVBLK

  ного блока      !                  !

                  !                  !

  запись марки    !      IO.EOF      ! IO$_WRITEOF

  конца файла     !                  !

                  !                  !

  чтение логичес- !      IO.RLV      ! IO$_READPBLK!

  кого блока при  !                  !   IO$M_REVERSE

  движении ленты  !                  !

  назад           !                  !

                  !                  !

  перемотать ленту!      IO.RWD      ! IO$_REWIND

  на начало       !                  !

                  !                  !

  перемотать ленту!      IO.RWU      ! IO$_REWINDOFF

  и перевести уст-!                  !

  ройство в  авто-!                  !

  номный режим    !                  !


                          - 211 -

                      00152-01 92 08


                                    Продолжение табл. 3

 --------------------------------------------------------

     Функция      !    Код в ОС РВ   ! Код или действие,

                  !                  ! выполняемое   в

                  !                  ! МОС ВП

 --------------------------------------------------------

  монтировать лен-!      IO.SMO      ! IO$_SETMODE

  ту и установить !                  ! (устанавливает-

  характеристики  !                  ! ся только пари-

                  !                  ! тет   и   плот-

                  !                  ! ность)

                  !                  !

  получить харак- !      IO.SEC      ! IO$_SENSEMODE

  теристики ленты !                  !

                  !                  !

  пропуск блоков  !      IO.SPB      ! IO$_SPACERECORD

                  !                  !

  пропуск файлов  !      IO.SPF      ! IO$_SPACEFILE

                  !                  !

  установить хара-!      IO.STC      ! IO$_SETMODE

  ктеристики ленты!                  ! (устанавливается

                  !                  ! только   паритет

                  !                  ! и плотность)


                          - 212 -

                      00152-01 92 08


     В табл. 4 приведено соответствие  функционально-зави-

симых параметров директивы QIO для магнитных лент в ОС  РВ

и МОС ВП.



                                              Таблица 4

     Соответствие функционально-зависимых параметров

               для магнитных лент

 --------------------------------------------------------

    Функция        !    Параметр      !   Параметр

    параметра      !    в ОС РВ       !   в МОС ВП

 --------------------------------------------------------

   адрес   буфера  !       P1         !      P1

   данных (стад)   !                  !

                   !                  !

   размер буфера   !       P2         !      P2

   данных (разм)   !                  !

                   !                  !

   биты характерис-!       P1         !      P1

   тик, устанавли- !                  !

   ваемые функциями!                  !

   IO.SMO и IO.STC !                  !

   (хар)           !                  !

                   !                  !

   число пропускае-!       P1         !      P1

   мых блоков (чб) !                  !

   (для    функции !                  !

   IO.SPB)         !                  !

                   !                  !


                          - 213 -

                      00152-01 92 08


                                    Продолжение табл. 4

 --------------------------------------------------------

    Функция        !    Параметр      !   Параметр

    параметра      !    в ОС РВ       !   в МОС ВП

 --------------------------------------------------------

   число пропускае-!      P1          !      P1

   мых  марок  EOF !                  !

   (чм) (для  функ-!                  !

   ции IO.SPF)     !                  !



     В табл. 5 приведено соответствие кодов функций дирек-

тивы  QIO  для  устройства  чтения  с  перфокарт  в ОС РВ

и  МОС ВП.

                                            Таблица 5

     Соответствие кодов функций устройства чтения

                    с перфокарт

 -----------------------------------------------------

     Функция      ! Код в ОС РВ ! Код   или  действие,

                  !             ! выполняемое в МОС ВП

 -----------------------------------------------------

    присоединить  !   IO.ATT    ! нет операции

    устройство    !             !

                  !             !

    отсоединить   !   IO.DET    ! нет операции

    устройство    !             !

                  !             !

    отменить зап- !   IO.KIL    ! выполняется програм-

                  !             !


                          - 214 -

                      00152-01 92 08


                                   Продолжение табл. 5

 -----------------------------------------------------

     Функция      ! Код в ОС РВ ! Код   или  действие,

                  !             ! выполняемое в МОС ВП

 -----------------------------------------------------

    росы ввода-вы-!             ! ма системного обслу-

    вода          !             ! живания CANCEL ( от-

                  !             ! менить ввод-5;вод на

                  !             ! канале)

                  !             !

    чтение вирту- !   IO.RVB    ! IO$_READVBLK

    ального блока !             !

                  !             !

    чтение логиче-!   IO.RLB    ! IO$_READLBLK

    ского блока   !             !

                  !             !

    чтение логиче-!   IO.RBD    ! IO$_READLBLK!IO$M_BINARY

    ского   блока !             !

    (двоичное чте-!             !

    ние)          !             !



     Функционально-зависимые   параметры   (P1    и    P2)

устройства чтения с перфокарт в системе ОС РВ соответству-

ют параметрам в МОС ВП.


                          - 215 -

                      00152-01 92 08


     В табл. 6 приведено соответствие кодов функций дирек-

тивы QIO построчно-печатающего усройства в ОС РВ и МОС ВП.



                                              Таблица 6

     Соответствие кодов функций построчно-печатающего

                      устройства

 --------------------------------------------------------

     Функция      !    Код в ОС РВ   ! Код или действие,

                  !                  ! выполняемое в

                  !                  ! МОС ВП

 ------------------------------------------------------

   присоединить   !      IO.ATT      ! нет операции

   устройство     !                  !

                  !                  !

   отсоединить    !      IO.DET      ! нет операции

   устройство     !                  !

                  !                  !

   отменить запро-!      IO.KIL      ! выполняется про-

   сы ввода-вывода!                  ! грамма   систем-

                  !                  ! ного  обслужива-

                  !                  ! ния  CANCEL (от-

                  !                  ! менить  ввод-вы-

                  !                  ! вод на канале)

   запись логичес-!      IO.WLB      ! IO$_WRITELBLK

   кого  блока    !                  !

                  !                  !

   запись виртуа- !      IO.WVB      ! IO$_WRITEVBLK

   льного блока   !                  !

                  !                  !


                          - 216 -

                      00152-01 92 08


                                 Продолжение табл. 6

 -----------------------------------------------------

     Функция      !    Код в ОС РВ   ! Код или действие,

                  !                  ! выполняемое в

                  !                  ! МОС ВП

 -----------------------------------------------------

                  !                  !

  запись физичес- !      IO.WPB      ! IO$_WRITEPBLK

  кого блока      !                  !



     В табл. 7 приведено соответствие  функционально-зави-

симых параметров директивы QIO  в  ОС  РВ  и  МОС  ВП  для

построчно-печатающего устройства.



                                               Taблица 7

     Соответствие функционально-зависимых параметров

            для построчно-печатающего устройства

 --------------------------------------------------------

    Функция        !    Параметр      !   Параметр

    параметра      !    в ОС РВ       !   в МОС ВП

 --------------------------------------------------------

   адрес буфера    !       P1         !      P1

   данных (стад)   !                  !

                   !                  !

   размер буфера   !       P2         !      P2

   данных (разм)   !                  !

                   !                  !

   символ  управле-!       P3         !      P4

   ния вертикальным!                  !

   форматом (вформ)!                  !


                          - 217 -

                      00152-01 92 08




     При работе с построчно-печатающим устройством в  сис-

теме МОС ВП необходимо помнить следующее:

     1) построчно-печатающее устройство в МОС ВП  является

неразделяемым устройством, МОС ВП  неявно  закрепляет  его

при назначении каналов;

     2) построчно-печатающее устройство в  МОС  ВП  обычно

является устройством, обслуживаемым через  спул.   В  этом

случае оно закрепляется за симбионтом  печати.  В  МОС  ВП

процесс не может закрепить устройство, обслуживаемое через

спул, если он не имеет на это соответствующих  привилегий.

Образу  ОС  РВ  разрешается  исключительное  использование

устройства,   обслуживаемого   через    спул,    например,

устройства печати, только если процесс, в котором выполня-

ется образ, имеет необходимые привилегии и перед выполне-

нием образа была издана  команда  ALLOCATE  интерпретатора

MCR или DCL;

     3) если  построчно-печатающее  устройство  закреплено

или не является устройством, обслуживаемым через спул,  то

запросы образа ОС РВ с функциями IO.WLB и IO.WVB дают  та-

кой же результат, как и в ОС РВ (см. подраздел 3.10);

     4) если  образ  ОС  РВ  издает  директиву  GLUN$  для

устройства,  обслуживаемого  через  спул,   то   директива

возвращает инфорация о промежуточном устройстве.




                          - 218 -

                      00152-01 92 08


                                          Приложение 6

          Соответствие кодов функций и параметров

                      для  терминалов

     В приложении  приведено  соответствие  кодов  функций

ввода-вывода и функционально-зависимых параметров директи-

вы QIO для терминалов в ОС РВ и МОС ВП.

        Соответствие кодов  функций директивы QIO для тер-

миналов приведено в табл. 1.



                                              Таблица 1

        Соответствие кодов функций директивы QIO

                      для терминалов

 -------------------------------------------------------

      Функция     !   Код функции в   ! Код  функции или

                  !   ОС РВ           ! действие, выпол-

                  !                   ! няемое  в МОС ВП

 -------------------------------------------------------

   присоединить   !      IO.ATT       ! терминал не при-

   устройство     !                   ! соединяется; вы-

                  !                   ! зывает   отмену

                  !                   ! CTRL/O для  пос-

                  !                   ! ледующей  опера-

                  !                   ! ции записи

   отсоединить    !      IO.DET       ! терминал не  от-

   устройство     !                   ! соединяется; вы-

                  !                   ! зывает   отмену

                  !                   ! CTRL/O для  пос-

                  !                   ! следуюшей опера-


                          - 219 -

                      00152-01 92 08


                                   Продолжение табл. 1

 -------------------------------------------------------

      Функция     !   Код функции в   ! Код  функции или

                  !   ОС РВ           ! действие, выпол-

                  !                   ! няемое  в МОС ВП

 -------------------------------------------------------

                  !                   ! ции записи

                  !                   !

  отменить запро- !      IO.KIL       ! выполняется про-

  сы ввода-вывода !                   ! грамма системно-

                  !                   ! го обслуживания

                  !                   ! CANCEL (отменить

                  !                   ! ввод-вывод   на

                  !                   ! канале)

                  !                   !

  чтение логичес- !      IO.RLB       ! IO$_READLBLK

  кого блока      !                   !

                  !                   !

  запись логичес- !      IO.WLB       ! IO$_WRITELBLK

  кого блока      !                   !

                  !                   !

  чтение виртуаль-!      IO.RVB       ! IO$_READVBLK

  ного блока      !                   !

                  !                   !

  запись виртуаль-!      IO.WVB       ! IO$_WRITEVBLK

  ного блока      !                   !

                  !                   !

  чтение  физичес-!      IO.RPB       ! IO$_READPBLK

  кого блока      !                   !


                          - 220 -

                      00152-01 92 08


                                   Продолжение табл. 1

 -------------------------------------------------------

      Функция     !   Код функции в   ! Код  функции или

                  !   ОС РВ           ! действие, выпол-

                  !                   ! няемое  в МОС ВП

 -------------------------------------------------------

  запись  логичес-!      IO.WAL       ! IO$_WRITEPBLK

  кого блока, про-!                   !

  пуская все дан- !                   !

  ные             !                   !

                  !                   !

  чтение  логичес-!      IO.RPR       ! IO$_READPROMPT

  кого блока после!                   !

  вывода подсказки!                   !

                  !                   !

  получить  харак-!      SF.GMC       ! IO$_SENSEMODE

  теристики терми-!                   !

  нала            !                   !

                  !                   !

  установить хара-!      SF.SMC       ! IO$_SETMODE

  ктеристики  тер-!                   !

  минала          !                   !

                  !                   !

  получить возмож-!      IO.GTS       ! возвращаются

  ности  драйвера !                   ! стандартные

  терминала       !                   ! данные

                  !                   !




                          - 221 -

                      00152-01 92 08


     В табл. 2  приведено соответствие функционально-за-

висимых параметров директивы QIO для терминалов.

                                           Tаблица 2

       Соответствие функционально-зависимых параметров

                директивы QIO для терминалов

 --------------------------------------------------------

    Функция        !    Параметр      !    Параметр

    параметра      !    в ОС РВ       !    в МОС ВП

 --------------------------------------------------------

  начальный адрес  !       P1         !      P1

  буфера   данных  !                  !

  (стад)           !                  !

                   !                  !

  размер   буфера  !       P2         !      P2

  данных (разм)    !                  !

                   !                  !

  символ управление!       P3         !      P4

  вертикальным фор-!                  !

  матом  для опера-!                  !

  ции записи       !                  !

  (вформ)          !                  !

                   !                  !

  счетчик таймаута !       P3         !      P3

  для операции чте-!                  !

  ния с подсказкой !                  !

  (TMO)            !                  !

                   !                  !

   адрес    буфера !       P4         !      P5

   подсказки   для !                  !


                          - 222 -

                      00152-01 92 08


                                    Продолжение табл. 2

 --------------------------------------------------------

    Функция        !    Параметр      !    Параметр

    параметра      !    в ОС РВ       !    в МОС ВП

 --------------------------------------------------------

   функции чтения  !                  !

   с подсказкой    !                  !

   (адп)           !                  !

                   !                  !

   размер буфера   !       P5         !      P6

   подсказки для   !                  !

   функции чтения  !                  !

   с подсказкой    !                  !

   (размп)         !                  !

                   !                  !

   символ управле- !       P6         !       -

   ния вертикальным!                  !

   форматом   при  !                  !

   операции чтения !                  !

   с    подсказкой !                  !

   (вфпмп)         !                  !



     Примечание. Для всех функций чтения, кроме IO.RPB  и

IO.RST, параметр P4 в системе  МОС  ВП  определяет символы

RETURN, ESCAPE и CTRL/Z как символы завершения строки. Для

функции IO.RPB ни один из символов не является ограничите-

лем строки. Для функции IO.RST символами завершения строки

могут быть все символы со значением кода, меньшим значения

кода символа "пробел" (в КОИ-8), за  исключением  символов

<FF>, <VT>, <HT>, <BS> и <DEL>, при этом P4 равно нулю.


                          - 223 -

                      00152-01 92 08





                          - 224 -

                      00152-01 92 08


     В табл. 4  приведена  информация, возвращаемая дирек-

тивой QIO с функцией IO.GTS.



                                             Таблица 4

       Информация, возвращаемая директивой QIO

                с функцией IO.GTS

----------------------------------------------------------

  Слово ! Бит ! Символическое !  Смысловое  значение

        !     !      имя      !  (если бит установлен)

----------------------------------------------------------

   0    !  0  !   F1.ACR      ! автоматическое добавление

        !     !               ! <CR>  <LF>  на    длинных

        !     !               ! строках

        !     !               !

   0    !  3  !   F1.UIA      ! AST по вводу незапланиро-

        !     !               ! ванного символа

        !     !               !

   0    !  4  !   F1.CCO      ! отмена CTRL/O перед запи-

        !     !               ! сью

        !     !               !

   0    !  5  !   F1.ESC      ! распознавание ESC-последо-

        !     !               ! вательности при запланиро-

        !     !               ! рованном вводе

        !     !               !

   0    !  6  !   F1.HLD      ! режим остановленного экра-

        !     !               ! на

        !     !               !

   0    !  7  !   F1.LWC      ! преобразование   маленьких

        !     !               ! символов в большие


                          - 225 -

                      00152-01 92 08


                                  Продолжение табл. 4

----------------------------------------------------------

  Слово ! Бит ! Символическое !  Смысловое  значение

        !     !      имя      !  (если бит установлен)

----------------------------------------------------------

   0    !  8  !   F1.RNE      ! чтение без эхо-сопровожде-

        !     !               ! ния

        !     !               !

   0    !  9  !   F1.RPR      ! чтение после подсказки

        !     !               !

   0    !  10 !   F1.RST      ! чтение со специальными за-

        !     !               ! вершающими символами

        !     !               !

   0    !  11 !   F1.RUB      ! стирание на экране удаляе-

        !     !               ! мых символов

        !     !               !

   0    !  12 !   F1.SYN      ! синхронизация по CTRL/R

        !     !               !

   0    !  13 !   F1.TRW      ! чтение и запись всех битов

        !     !               !

   1    !  0  !   F2.SCH      ! установка    характеристик

        !     !               ! терминала  разрешена   (по

        !     !               ! SF.SMC)

        !     !               !

   1    !  1  !   F2.GCH      ! получение    характеристик

        !     !               ! терминала  разрешено   (по

        !     !               ! SF.GMC)


                          - 226 -

                      00152-01 92 08


                                  Продолжение табл. 4

----------------------------------------------------------

  Слово ! Бит ! Символическое !  Смысловое  значение

        !     !      имя      !  (если бит установлен)

----------------------------------------------------------

   2    !     !               ! в ОС РВ не используется

        !     !               !

   3    !     !               ! в ОС РВ не используется



     Примечание. Если  запрос с функцией IO.GTS издается

для псевдоустройств TI, CO и CL, то информация  не  воз-

вращается.



     Соответствие между битами характеристик терминалов  в

ОС РВ и МОС ВП приведено в табл. 5.



                                            Таблица 5

     Характеристики терминала для функций SF.GMC и SF.SMC

----------------------------------------------------------

     Символическое имя      ! Смысловое значение характе-

       характеристики       ! ристики (если  бит установ-

----------------------------! лен)

  в ОС РВ  !   в МОС ВП     !

--------------------------------------------------------

  TC.BIN   ! TT$M_PASSALL   ! символы не интерпретируются
                                
           !                ! как  управляющие   символы

           !                ! (режим   двоичного   ввода)

           !                !

  TC.ESQ   ! TT$M_ESCAPE    ! распознавание ESC-последо-


                          - 227 -

                      00152-01 92 08


                                  Продолжение табл. 5

----------------------------------------------------------

     Символическое имя      ! Смысловое значение характе-

       характеристики       ! ристики (если  бит установ-

----------------------------! лен)

  в ОС РВ  !   в МОС ВП     !

--------------------------------------------------------

           !                ! вательности при вводе

           !                !

  TC.HLD   ! TT$_HOLDSCREEN ! режим остановленного кадра

           !                !

           !                !

  TC.NEC   ! TT$M_NOECHO    ! режим подавления эхо

           !                !

  TC.SCP   ! TT$M_SCOPE     ! терминал  является  видео-

           !                ! терминалом (CRT)

           !                !

  TC.SLV   ! TT$M_NOTYPEAHD ! подчиненный терминал

           !                !

  TC.SMR   ! TT$M_LOWER     ! запрещено   преобразование

           !                ! маленьких  символов в боль-

           !                ! шие

           !                !

  TC.TBF   !     ---        ! число  символов  в  буфере

           !                ! предварительного ввода

           !                !

  ТC.TTP   ! тип терминала, ! тип терминала




                          - 228 -

                      00152-01 92 08


             Перечень ссылочных документов



     1. Операционная система МОС ВП. Подсистема режима со-

вместимости C ОС РВ. Справочный материал. 00152-01 97 14-1

     2. Операционная система МОС ВП. Подсистема режима со-

вместимости с ОС РВ. Справочный материал. 00152-01 97 14-2

     3. Операционная система МОС ВП. Подсистема системного

программиста. Управление  системой.  Справочный  материал.

00152-01 97 10

     4. Операционная система МОС ВП. Подсистема системного

сервиса. Программы системного обслуживания. Справочный ма-

териал. 00152-01 97 06

     5. Операционная система МОС ВП. Подсистема   управле-

ния. Использование  диалогового  командного  языка  и  ко-

мандных процедур. Справочный материал. 00152-01 97 04

     6. Операционная система МОС ВП. Система управления

данными. Проектирование файлов. Руководство  пользователя.

00152-01 92 01

     7. Операционная система МОС ВП. Подсистема системного

сервиса. Управление вводом-выводом.  Руководство  програм-

миста. 00152-01 33 03


                         - 227K -

                    2б.00152-01 92 08




             Перечень ссылочных документов



     1. Операционная система  МОС  ВП.  Подсистема  режима

совместимости с ОС РВ. Справочный материал.

2б.00152-01 97 14-1

     2. Операционная система МОС ВП. Подсистема режима со-

вместимости с ОС РВ. Справочный материал.

2б.00152-01 97 14-2

     3. Операционная система МОС ВП. Подсистема системного

программиста. Управление  системой.  Справочный  материал.

2б.00152-01 97 10

     4. Операционная система МОС ВП. Подсистема системного

сервиса. Программы системного обслуживания. Справочный ма-

териал. 2б.00152-01 97 06

     5. Операционная система МОС ВП. Подсистема   управле-

ния. Использование  диалогового  командного  языка  и  ко-

мандных процедур. Справочный материал. 2б.00152-01 97 04

     6. Операционная система МОС ВП. Система управления

данными. Проектирование файлов. Руководство  пользователя.

2б.00152-01 92 01

     7. Операционная система МОС ВП. Подсистема системного

сервиса. Управление вводом-выводом.  Руководство  програм-

миста. 2б.00152-01 33 03


                         - 228K -

                    2б.00152-01 92 08

                              
   ------------------------------------------------------------
   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
   I  I    I    I    I     I      I      I         I     I    I
   I  I    I    I    I     I      I      I         I     I    I
   I  I    I    I    I     I      I      I         I     I    I
 
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!