Uknc FODOS-2 sysmac

From Felixl.com

Jump to: navigation, search


                  ОПЕРАЦИОННАЯ СИСТЕМА ФОДОС-2
                   СИСТЕМНАЯ МАКРОБИБЛИОТЕКА
                    РУКОВОДСТВО ПРОГРАММИСТА
                   589.7545471.00042-01 33 01
                           ЛИСТОВ 158
                              1985

                          СОДЕРЖАНИЕ

                                                       ЛИСТ
1.  Назначение и условия применения
2.  Обращение к системной макробиблиотеке
2.1.   Адресация аргументов
2.2.   Ключевой аргумент CODE
3.  Входные и выходные данные
3.1.   Номер канала
3.2.   Блок устройства
3.3.   Блок аргументов ЕМТ
3.4.   Подпрограммы завершения
3.5.   Требование USR
4.  Сообщения
5.  Программные запросы
5.1.   Программные запросы для операций с файлами
5.1.1.   .CHCOPY (FB,XM)
5.1.2.   .CLOSE
5.1.3.   .DELETE
5.1.4.   .ENTER
5.1.5.   .LOOKUP
5.1.6.   .PURGE
5.1.7.   .RENAME
5.1.8.   .REOPEN
5.1.9.   .SAVESTATUS
5.2.   Программные  запросы  для   организации ввода-вывода
5.2.1.   .READ,.READC,.READW
5.2.2.   .WRITE,.WRITC,.WRITW
5.2.3.   .RCVD,.RCVDC,.RCVDW (FB,ХМ)
5.2.4.   .SDAT,.SDATC,.SDATW (FB,ХМ)
5.2.5.   .TTYIN,.TTINR
5.2.6.   .TTYOUT,.TTOUTR
5.2.7.   .PRINT
5.2.8.   .MTIN
5.2.9.   .MTOUT
5.2.10.  .MTPRNT
5.2.11.  .SPFUN
5.3.   Запросы общего назначения
5.3.1.   .CDFN
5.3.2.   .CHAIN
5.3.3.   .CMKT
5.3.4.   .CNTXSW (FB,XM)
5.3.5.   .CSIGEN
5.3.6.   .CSISPC
5.3.6.1. Передача  информации  о  переключателях программе пользователя
5.3.7.   .ABTIO
5.3.8.   .CSTAT (FB,XM)
5.3.9.   .DATE
5.3.10.  .DEVICE(FB,XM)
5.3.11.  .DSTATUS
5.3.12.  .EXIT
5.3.13.  .FETCH,.RELEAS
5.3.14.  .FORK
5.3.15.  .FPROT
5.3.16.  .GTIM
5.3.17.  .GTJB
5.3.18.  .GTLIN
5.3.19.  .GVAL,.PVAL
5.3.20.  .HERR,.SERR
5.3.21.  .HRESET
5.3.22.  .INTEN
5.3.23.  .LOCK,.UNLOCK
5.3.24.  .MFPS, .MTPS
5.3.25.  .MRKT
5.3.26.  .MTATCH
5.3.27.  .MTDTCH
5.3.28.  .MTSET
5.3.29.  .MTGET
5.3.30.  .MTSTAT
5.3.31.  .MTRCTD
5.3.32.  .MWAIT (FB,XM)
5.3.33.  .PEEK,.POKE
5.3.34.  .PROTECT,.UNPROTECT (FB,XM)
5.3.35.  .QSET
5.3.36.  .RCTRLD
5.3.37.  .SPND,.RSUM (FB,XM)
5.3.38.  .SCCA
5.3.39.  .SDTTM
5.3.40.  .SETTOP
5.3.41.  .SPCPS (FB,ХМ)
5.3.42.  .SFDAT
5.3.43.  .SFPA
5.3.44.  .SRESET
5.3.45.  .SYNCH
5.3.46.  .TLOCK
5.3.47.  .TRPSET
5.3.48.  .TWAIT
5.3.49.  .WAIT
6.  Сообщения
ПРИЛОЖЕНИЕ  1. Коды ошибок программных запросов
ПРИЛОЖЕНИЕ  2. Структура блока CBLK
ПЕРЕЧЕНЬ ССЫЛОЧНЫХ ДОКУМЕНТОВ

           1. Назначение и условия применения

    Ядром операционной системы RT11 является монитор. В зависимости от 
конфигурации технических средств и потребностей пользователя может 
использоваться один из трех мониторов RT11: монитор одного задания (SJ),
монитор основного-фонового задания (FB) и монитор расширенной памяти (XM).
все изложенное в данном документе, если не оговорено особо, относится к
любому монитору RT11.
    Монитор выполняется параллельно с прикладными программами и обеспечивает
выполнение следующих функций:
    - Инициализация и управление характеристиками операционной системы;
    - Распределение системных ресурсов и получение информации о состояниии 
	операционной системы;
    - Интерпретация команд;
    - Операции с файлами;
    - Управление вводом-выводом;
    - Обеспечение связи между заданиями;
    - Завершение или временный приостанов программы;
    - Работа с расширенной памятью.
 
    Связь пользователя с RT11 осуществляется главным образом с помощью команд 
клавиатурного монитора и программных запросов.
    Программные запросы обеспечивают разнообразные возможности для 
манипулирования файлами, выполнения операций ввода-вывода, управления 
выполнением и приостановкой программ и реализации других стандартных 
системных функций.
    Программный запрос представляет собой макрокоманду, помещаемую 
пользователем в исходный текст программы на языке ассемблера (программа 
может  содержать  несколько  программных запросов).
    Каждая  макрокоманда  заменяется   последовательностью обычных 
символических команд. этот процесс называется  макрорасширением и выполняется 
во время ассемблирования.
    Для формирования макрорасширения ассемблер использует макроопределения, 
включенные в системную макробиблиотеку SYSMAC.SML, которая находится на 
системном томе и может быть использована любой программой.
    Большинство программных запросов используют машинную команду ЕМТ, которая 
обеспечивает передачу управления монитору из программы, как только при 
выполнении этой программы очередь доходит до команды ЕМТ.
    Младший байт команды ЕМТ содержит код в интервале от 340 до 377 
(восьмеричное), определяющий  местоположение передаваемых монитору 
аргументов:

 МЛАДШИЙ          ПРОГРАММНЫЙ ЗАПРОС                    
  БАЙТ                                                  

 340-357  программный запрос с аргументами в стеке и/или в R0                                          
 360-373  используется только монитором RT11         
 374      программный запрос с одним аргументом. Регистр R0 содержит 
	  функциональный код в старшем байте и номер канала в младшем байте                
 375      программный запрос с несколькими аргументами. Регистр R0 
	  используется в качестве указателя на блок аргументов                            
 376      используется только монитором RT11         
 377      Резервный. RT11 игнорирует этот ЕМТ и возвращает управление 
	  программе пользователя.     


        2. Обращение к системной макробиблиотеке

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

    1) .PRGREQ ARG1,ARG2,...,ARGN
    2) .PRGREQ AREA,ARG1,...,ARGN

    В ЭТИХ ФОРМАТАХ PRGREQ ПРЕДСТАВЛЯЕТ СОБОЙ ИМЯ ПРОГ-
РАММНОГО ЗАПРОСА, AREA - УКАЗАТЕЛЬ НА АДРЕС БЛОКА АРГУМЕН-
ТОВ, ARG1,ARG2,...,ARGN - АРГУМЕНТЫ ПРОГРАММНОГО ЗАПРОСА.
    ПРОГРАММЫЕ ЗАПРОСЫ ПЕРВОГО ФОРМАТА ВЫЗЫВАЮТ ГЕНЕРАЦИЮ
КОМАНДЫ ЕМТ С КОДОМ 374 ИЛИ ОДНОЙ ИЗ КОМАНД ЕМТ 340-357.
    ПРОГРАММНЫЕ ЗАПРОСЫ, ИСПОЛЬЗУЮЩИЕ КОМАНДУ ЕМТ 374,
ПОМЕЩАЮТ В МЛАДШИЙ БАЙТ РЕГИСТРА R0 НОМЕР КАНАЛА, А В СТАР-
ШИЙ - ФУНКЦИОНАЛЬНЫЙ КОД (СМ.РИС.1).

          15               8 7                 0
           -------------------------------------
      R0 = ! ФУНКЦИОНАЛЬНЫЙ !   НОМЕР КАНАЛА   !
           !      КОД       !(ЕСЛИ ПРИМЕНЯЕТСЯ)!
           -------------------------------------

                          РИС.1


    ОДНИМ ИЗ ПРОГРАММНЫХ ЗАПРОСОВ, ИСПОЛЬЗУЮЩИХ ЕМТ 374,
ЯВЛЯЕТСЯ ЗАПРОС .DATE. МАКРООПРЕДЕЛЕНИЕ ДЛЯ ЭТОГО ЗАПРОСА
СЛЕДУЮЩЕЕ:
.MACRO .DATE
      MOV     #10.*^O400,%0
      EMT     ^374
.ENDM
    СООТВЕТСТВУЮЩИЙ ЗАПРОСУ .DATE ФУНКЦИОНАЛЬНЫЙ КОД, РАВ-
НЫЙ 10., ПОМЕЩАЕТСЯ В СТАРШИЙ БАЙТ РЕГИСТРА R0, А НОМЕР
XКАНАЛА (0) - В МЛАДШИЙ БАЙТ РЕГИСТРА R0.
    ПРОГРАММНЫЕ ЗАПРОСЫ, ИСПОЛЬЗУЮЩИЕ ЕМТ 340-357, ПОМЕ-
ЩАЮТ АРГУМЕНТЫ (ЕСЛИ ОНИ ЗАДАНЫ) В СТЕК И/ИЛИ В R0.
    ПРОГРАММНЫЙ ЗАПРОС .CSIGEN ЯВЛЯЕТСЯ ПРИМЕРОМ ПРОГРАММ-
НОГО ЗАПРОСА, ИСПОЛЬЗУЮЩЕГО ЕМТ 344. НИЖЕ ПРЕДСТАВЛЕНО
УПРОЩЕННОЕ МАКРООПРЕДЕЛЕНИЕ ДЛЯ ЭТОГО ЗАПРОСА:

.MACRO .CSIGEN DEVSPC,DEFEXT,CSTRNG,LINBUF
.IFF NB <LINBUF>       MOV     LINBUF,-(6.)
      MOV     DEVSPC,-(6.)
.IFF NB <LINBUF>       INC     (6.)
      MOV     DEFEXT,-(6.)
.IF B CSTRNG
      CLR     -(6.)
.IFF
.IF IDN CSTRNG,#0
       CLR     -(6.)
.IFF
       MOV     CSTRNG,-(6.)
.ENDC
.ENDC
       EMT     ^O344
.ENDM

    ВСЕ УКАЗАННЫЕ АРГУМЕНТЫ ПОМЕЩАЮТСЯ В СТЕК ПОЛЬЗОВАТЕЛЯ
(СМ.РИС.2) И ИСПОЛЬЗУЮТСЯ МОНИТОРОМ ПРИ ВЫПОЛНЕНИИ ЗАПРОСА
.CSIGEN.

                      ------------ ВЕРХНИЙ АДРЕС
                      !  LINBUF  !
                      ------------
                      !  DEVSPC  !
                      ------------
                      !  DEFEXT  !
                      ------------
 УКАЗАТЕЛЬ СТЕКА ->   !  CSTRNG  !
                      ------------ НИЖНИЙ АДРЕС

                          РИС.2


    ПРОГРАММНЫЕ ЗАПРОСЫ ВТОРОГО ФОРМАТА ВЫЗЫВАЮТ ГЕНЕРАЦИЮ
КОМАНДЫ ЕМТ С КОДОМ 375.
    ФОРМАТ БЛОКА АРГУМЕНТОВ ДЛЯ ЕМТ 375 ПРЕДСТАВЛЕН НА
РИС.3.

              ----------------------------------
R0 ->  AREA:   ! ФУНКЦИОНАЛЬНЫЙ !     НОМЕР     !
              !      КОД       !     КАНАЛА    !
              !     (CODE)     !     (CHAN)    !
              ----------------------------------
              !              ARG1              !
              ----------------------------------
              !              ARG2              !
              ----------------------------------
                               .
              ----------------------------------
              !              ARGN              !
              ----------------------------------

                          РИС.3

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

              .PRGREQ AREA,ARG1,ARG2

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

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

      1) MOV  #ARG1,AREA+2
         MOV  #ARG2,AREA+4
         .PRGREQ      #AREA

      2) MOV  #AREA,R0
         .PRGREQ      ,#ARG1,#ARG2

      3) MOV  #AREA,R0
         MOV  #ARG1,2(R0)
         MOV  #ARG2,4(R0)
         MOV  #CODE*400!CHAN,(R0)
         .PRGREQ

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

         .MCALL  .PRINT,.TWAIT
 START:  .TWAIT  #EMTBLK
         .PRINT  #MSG
         BR      START

 EMTBLK: .BYTE   0,24
         .WORD   TIME

 TIME:   .WORD   0,10.*50
         .ASCIZ  /ЧЕРЕЗ 10 СЕКУНД - ПЕЧАТЬ  СООБЩЕНИЯ/
         .END    START


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

    .PRGREQ #AREA,#4
    ЕСЛИ ВЕЛИЧИНА ЯВЛЯЕТСЯ СОДЕРЖИМЫМ РЕГИСТРА, ТО ДОЛЖНА
БЫТЬ ИСПОЛЬЗОВАНА МНЕМОНИКА РЕГИСТРА (RN). ЕСЛИ ВЕЛИЧИНА
ЯВЛЯЕТСЯ СОДЕРЖИМЫМ ЯЧЕЙКИ ПАМЯТИ, ТО ДОЛЖНА БЫТЬ ИСПОЛЬЗО-
ВАНА МЕТКА ЭТОЙ ЯЧЕЙКИ, НАПРИМЕР:

      .PRGREQ LIST,NUMBER
              .
              .
                 .
 LIST:   .WORD   AREA
 NUMBER: .WORD   4

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

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

       ПРИМЕР.
         .WRITW  #AREA,#CHAN,#BUFF,#WCNT,#BLK
            .
            .
            .
         .READW  #AREA,CODE=SET
            .
            .
            .

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

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

    3.2. БЛОК УСТРОЙСТВА
    БЛОК УСТРОЙСТВА (DBLK) ПРЕДСТАВЛЯЕТ СОБОЙ БЛОК ИНФОР-
МАЦИИ В КОДАХ RADIX-50, КОТОРЫЙ СОДЕРЖИТ ФИЗИЧЕСКОЕ ИЛИ
ЛОГИЧЕСКОЕ ИМЯ УСТРОЙСТВА, ИМЯ И ТИП ФАЙЛА. РАЗМЕР БЛОКА -
4 СЛОВА.
ПРИМЕР:

                   .RAD50/DX1/
                   .RAD50/FIL/
                   .RAD50/NAM/
                   .RAD50/TYP/

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


                   .RAD50/DX1FILNAMTYP/

ПРИ ЭТОМ КАЖДОЕ ПРОПУЩЕННОЕ ПОЛЕ ОПЕРАНДА ДОЛЖНО ЗАМЕНЯТЬСЯ
ПРОБЕЛОМ.

                                                 ТАБЛИЦА 2
-----------------------------------------------------------
! УСЛОВНОЕ   !                   АРГУМЕНТ                 !
!ОБОЗНАЧЕНИЕ !                                            !
!---------------------------------------------------------!
! ADDR       !  АДРЕС; ЗНАЧЕНИЕ АДРЕСА ЗАВИСИТ ОТ ИСПОЛЬ- !
!            !  ЗУЕМОГО ЗАПРОСА                           !
! AREA       !  АДРЕС БЛОКА АРГУМЕНТОВ ЕМТ                !
! BLK        !  НОМЕР БЛОКА ОТНОСИТЕЛЬНО НАЧАЛА ФАЙЛА, С  !
!            !  КОТОРОГО ДОЛЖНА ВЫПОЛНЯТЬСЯ ОПЕРАЦИЯ      !
!            !  ВВОДА-ВЫВОДА                              !
! BUF        !  АДРЕС БУФЕРА ПАМЯТИ                       !
! CBLK       !  АДРЕС БЛОКА ИЗ ПЯТИ СЛОВ, В КОТОРОМ ХРА-  !
!            !  НИТСЯ ИНФОРМАЦИЯ О СОСТОЯНИИ КАНАЛА       !
! CHAN       !  НОМЕР КАНАЛА                              !
! CRTN       !  ТОЧКА ВХОДА ПОДПРОГРАММЫ ЗАВЕРШЕНИЯ       !
! DBLK       !  АДРЕС БЛОКА УСТРОЙСТВА                    !
! NUM        !  ЧИСЛО, ЗНАЧЕНИЕ КОТОРОГО ЗАВИСИТ ОТ       !
!            !  ИСПОЛЬЗУЕМОГО   ЗАПРОСА                   !
! WCNT       !  СЧЕТЧИК СЛОВ; КОЛИЧЕСТВО СЛОВ, КОТОРЫЕ    !
!            !  НЕОБХОДИМО ПЕРЕДАТЬ В ИЛИ ИЗ БУФЕРА ПРИ   !
!            !  ВЫПОЛНЕНИИ ОПЕРАЦИИ ВВОДА-ВЫВОДА          !
! SEQN       !  ПОСЛЕДОВАТЕЛЬНЫЙ НОМЕР ФАЙЛА (ДЛЯ ОПЕРАЦИЙ!
!            !  С МАГНИТНОЙ ЛЕНТОЙ)                       !
! CHRCNT     !  СЧЕТЧИК СИМВОЛОВ                          !
! FUNC       !  ЧИСЛОВОЙ КОД, ОПРЕДЕЛЯЮЩИЙ ВЫПОЛНЯЕМУЮ    !
!            !  ФУНКЦИЮ                                   !
! JOBBLK     ! АДРЕС БЛОКА, СОДЕРЖАЩЕГО ИМЯ СИСТЕМНОГО    !
!            ! ЗАДАНИЯ В КОДАХ КОИ-7                      !
! JOBDEV     !  АДРЕС БЛОКА, СОДЕРЖАЩЕГО ИМЯ УСТРОЙСТВА И !
!            ! ИМЯ СИСТЕМНОГО ЗАДАНИЯ                     !
! UNIT       ! ЛОГИЧЕСКИЙ НОМЕР ТЕРМИНАЛА                 !
-----------------------------------------------------------

    3.3. БЛОК АРГУМЕНТОВ ЕМТ


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

AREA:   -----------------------------------------
       ! ФУНКЦИОНАЛЬНЫЙ    !     НОМЕР         !
       !     КОД           !    КАНАЛА         !
       !---------------------------------------!
       !           1-Й АРГУМЕНТ                !
       !---------------------------------------!
       !           2-ОЙ АРГУМЕНТ               !
       !---------------------------------------!
                           .
                           .
                           .
       -----------------------------------------
       !           N-ЫЙ АРГУМЕНТ               !
       -----------------------------------------

                РИС.4 БЛОК АРГУМЕНТОВ ЕМТ


    3.4. ПОДПРОГРАММЫ ЗАВЕРШЕНИЯ
    ПОДПРОГРАММА ЗАВЕРШЕНИЯ СОЗДАЕТСЯ ПОЛЬЗОВАТЕЛЕМ И
ВЫПОЛНЯЕТСЯ ПРИ НАСТУПЛЕНИИ СОБЫТИЯ. СОБЫТИЕ МОЖЕТ ЗАКЛЮ-
ЧАТЬСЯ В ЗАВЕРШЕНИИ ОПЕРАЦИИ ВВОДА-ВЫВОДА, МОЖЕТ БЫТЬ ВЫЗ-
ВАНО ПРЕРЫВАНИЕМ ОТ ВНЕШНЕГО УСТРОЙСТВА, ИСТЕЧЕНИЕМ ЗАДАН-
НОГО ИНТЕРВАЛА ВРЕМЕНИ И Т.Д.
    НА ВХОДЕ В ПОДПРОГРАММУ ЗАВЕРШЕНИЯ РЕГИСТР R0 СОДЕРЖИТ
СЛОВО СОСТОЯНИЯ КАНАЛА, А R1 - ВОСЬМЕРИЧНЫЙ НОМЕР КАНАЛА
ДЛЯ ОПЕРАЦИИ.
    В РЕЖИМЕ SJ ПОДПРОГРАММЫ ЗАВЕРШЕНИЯ ЯВЛЯЮТСЯ АССИНХ-
РОННЫМИ И МОГУТ ПРЕРЫВАТЬ ДРУГ ДРУГА. В РЕЖИМАХ FB И ХМ,
ПОДПРОГРАММЫ ЗАВЕРШЕНИЯ НЕ ПРЕРЫВАЮТ ДРУГ ДРУГА, А ОРГАНИ-
ЗУЮТСЯ В ОЧЕРЕДЬ.

    3.5. ТРЕБОВАНИЕ USR
    ДЛЯ ВЫПОЛНЕНИЯ НЕКОТОРЫХ ПРОГРАММНЫХ ЗАПРОСОВ НЕОБХО-
ДИМО, ЧТОБЫ КОМПОНЕНТА МОНИТОРА USR НАХОДИЛАСЬ В ОПЕРАТИВ-
НОЙ ПАМЯТИ. ТРЕБОВАНИЕ USR ПРОГРАММНЫМ ЗАПРОСАМ ОПИСАНО В
ТАБЛ.3. ЗАМЕТИМ, ЧТО ЗАПРОС CLOSE НА УСТРОЙСТВАХ НЕФАЙЛОВОЙ
СТРУКТУРЫ (LP:,TT:,PC:, И Т.Д.) НЕ ТРЕБУЕТ НАЛИЧИЯ USR В
ПАМЯТИ.
    ПРОГРАММА USR НЕ ЯВЛЯЕТСЯ РЕЕНТЕРАБЕЛЬНОЙ; ЕСЛИ USR
ИСПОЛЬЗУЕТСЯ ОДНИМ ЗАДАНИЕМ (В РЕЖИМЕ FB), ДРУГОЕ ЗАДАНИЕ,
ТРЕБУЮЩЕЕ USR, БУДЕТ ЖДАТЬ ЕЕ ОСВОБОЖДЕНИЯ.
                                                  ТАБЛИЦА 3
------------------------------------------------------------
! ПРОГРАММНЫЙ ЗАПРОС  !           ТРЕБОВАНИЕ USR           !
!                     !-------------------------------------
!                     !  РЕЖИМ SJ  !  РЕЖИМ FB !  РЕЖИМ XM !
------------------------------------------------------------
!                     !       *    !           !           !
! .CDFN               !     ДА     !    НЕТ    !    НЕТ    !
!       1)            !            !           !           !
! .CLOSE              !     ДА     !    ДА     !    ДА     !
! .CSIGEN             !     ДА     !    ДА     !    ДА     !
! .CSISPC             !     ДА     !    ДА     !    ДА     !
! .DELETE             !     ДА     !    ДА     !    ДА     !
! .DSTATUS            !     ДА     !    ДА     !    ДА     !
! .ENTER              !     ДА     !    ДА     !    ДА     !
! .EXIT               !     ДА     !    ДА     !    ДА     !
! .FETCH/.RELEAS      !     ДА     !    ДА     !    ДА     !
! .GTLIN              !     ДА     !    ДА     !    ДА     !
! .HRESET             !     ДА     !    НЕТ    !    НЕТ    !
!      2)             !            !           !           !
! .LOCK               !     ДА     !    ДА     !    ДА     !
! .LOOKUP             !     ДА     !    ДА     !    ДА     !
!                     !       *    !      *    !           !
! .QSET               !     ДА     !    ДА     !    ДА     !
! .RENAME             !     ДА     !    ДА     !    ДА     !
! .REOPEN             !     НЕТ    !    НЕТ    !    НЕТ    !
!                     !       *    !           !           !
! .SRESET             !     ДА     !    НЕТ    !    НЕТ    !
!       3)            !            !           !           !
! .TLOCK              !     ДА     !    ДА     !    ДА     !
------------------------------------------------------------

             1)               ЕСЛИ КАНАЛ БЫЛ ОТКРЫТ ПО .ENTER ;
 
             2)               ЕСЛИ USR НАХОДИТСЯ В СОСТОЯНИИ СВОПИНГА;
 
             3)               ЕСЛИ USR НЕ  ИСПОЛЬЗУЕТСЯ ДРУГИМ ЗАДАНИЕМ.
 
        ЗАПРОСЫ, ПОМЕЧЕННЫЕ В ТАБЛ.3 ЗВЕЗДОЧКОЙ, ВСЕГДА ТРЕ-
    БУЮТ ЗАГРУЗКИ НОВОЙ КОПИИ USR ПЕРЕД ИХ ВЫПОЛНЕНИЕМ (ДАЖЕ,
    ЕСЛИ USR В ЭТОТ МОМЕНТ НАХОДИТСЯ В ПАМЯТИ).
 
                          4. СООБЩЕНИЯ
        ПРИ ОБРАБОТКЕ ЗАПРОСОВ, МОНИТОР МОЖЕТ ОБНАРУЖИТЬ УСЛО-
   ВИЯ ОШИБОК. ПРОГРАММНЫЕ ЗАПРОСЫ ИНФОРМИРУЮТ ОБ ЭТОМ ПОЛЬЗО-
   ВАТЕЛЯ, ИСПОЛЬЗУЯ  С-РАЗРЯД,  БАЙТ  ОШИБОК  (52-ОЙ  БАЙТ  В
   ОБЛАСТИ СВЯЗЕЙ СИСТЕМЫ) И  ПЕЧАТЬ  НА  ТЕРМИНАЛЕ  СООБЩЕНИЙ
   МОНИТОРА. С-РАЗРЯД ОЧИЩАЕТСЯ  ПОСЛЕ  ВЫПОЛНЕНИЯ  ЗАПРОСА  И
   УСТАНАВЛИВАЕТСЯ В СЛУЧАЕ ОШИБКИ. ДЛЯ ОБНАРУЖЕНИЯ ОШИБКИ  ЗА
   ЗАПРОСОМ ДОЛЖНА СЛЕДОВАТЬ КОМАНДА BCS ИЛИ BCC. КОГДА  УСТА-
   НОВЛЕН С-РАЗРЯД, БАЙТ ОШИБОК СОДЕРЖИТ КОД ОШИБКИ.
        ПРИ ВОЗНИКНОВЕНИИ  СЕРЬЕЗНЫХ  ОШИБОК  (В  ЭТОМ  СЛУЧАЕ
   МОНИТОР ПЕЧАТАЕТ СООТВЕТСТВУЮЩЕЕ  СООБЩЕНИЕ  НА  ТЕРМИНАЛЕ)
   УПРАВЛЕНИЕ ПЕРЕДАЕТСЯ МОНИТОРУ. ДЛЯ АНАЛИЗА ПОДОБНЫХ ОШИБОК
   РЕКОМЕНДУЕТСЯ ИСПОЛЬЗОВАТЬ ПРОГРАММНЫЙ ЗАПРОС .SERR. В ПРИ-
   ЛОЖЕНИИ ПЕРЕЧИСЛЕНЫ КОДЫ ОШИБОК ПРОГРАММНЫХ ЗАПРОСОВ И ПРИ-
   ЧИНЫ, ВЫЗЫВАЮЩИЕ ЭТИ ОШИБКИ.
 
                     5. ПРОГРАММНЫЕ ЗАПРОСЫ
        СУЩЕСТВУЮТ СЛЕДУЮЩИЕ ТИПЫ ПРОГРАММНЫХ ЗАПРОСОВ:
          - ЗАПРОСЫ ДЛЯ ОПЕРАЦИЙ С ФАЙЛАМИ;
          - ЗАПРОСЫ ДЛЯ ОРГАНИЗАЦИИ ВВОДА-ВЫВОДА ДАННЫХ;
          - ЗАПРОСЫ ОБЩЕГО НАЗНАЧЕНИЯ;
          - ЗАПРОСЫ РАСШИРЕННОЙ ПАМЯТИ;
          - ЗАПРОСЫ ДЛЯ ДРАЙВЕРОВ.
        В ТАБЛИЦЕ 4 ПЕРЕЧИСЛЕНЫ ПРОГРАММНЫЕ  ЗАПРОСЫ,  КОТОРЫЕ
   МОГУТ ИСПОЛЬЗОВАТЬСЯ В ЛЮБОМ ИЗ РЕЖИМОВ (SJ,FB,XM).  ЗАПРО-
   СЫ, ПОМЕЧЕННЫЕ В ТАБЛ.4 СИМВОЛАМИ "МТ", МОЖНО  ИСПОЛЬЗОВАТЬ
   ТОЛЬКО ПРИ НАЛИЧИИ В СИСТЕМЕ МУЛЬТИТЕРМИНАЛЬНОЙ ПОДДЕРЖКИ.
        ОПИСАНИЕ ПРОГРАММНЫХ ЗАПРОСОВ ДЛЯ ПРОГРАММ - ДРАЙВЕРОВ
   УСТРОЙСТВ ДАЕТСЯ В [1].
        ОПИСАНИЕ ЗАПРОСОВ РАСШИРЕННОЙ ПАМЯТИ ДАЕТСЯ В [2].
 
 
                                                      ТАБЛИЦА 4
    ------------------------------------------------------------
    ! ПРОГРАММНЫЙ ! КОД ! ФУНК- !                              !
    !   ЗАПРОС    ! ЕМТ ! ЦИОН. !         НАЗНАЧЕНИЕ           !
    !             !     ! КОД   !                              !
    ------------------------------------------------------------
    ! .ABTIO      ! 374 !  13   ! ПРЕРЫВАЕТ ОПЕРАЦИИ ВВОДА-ВЫ- !
    !             !     !       ! ВОДА НА УКАЗАННОМ КАНАЛЕ     !
    ! .CDFN       ! 375 !  15   ! ОПРЕДЕЛЯЕТ ДОПОЛНИТЕЛЬНЫЕ    !
    !             !     !       ! КАНАЛЫ ДЛЯ ОПЕРАЦИЙ ВВОДА-   !
    !             !     !       ! ВЫВОДА                       !
    ! .CHAIN      ! 374 !   10  ! ПЕРЕДАЕТ УПРАВЛЕНИЕ ДРУГОЙ   !
    !             !     !       ! ФОНОВОЙ ПРОГРАММЕ            !
    ! .CLOSE      ! 374 !   6   ! ЗАКРЫВАЕТ КАНАЛ И ОСВОБОЖДАЕТ!
    !             !     !       ! ЕГО ДЛЯ ИСПОЛЬЗОВАНИЯ В      !
    !             !     !       ! ДРУГИХ ОПЕРАЦИЯХ             !
    ! .CMKT       ! 375 !   23  ! АННУЛИРУЕТ ОДИН ИЛИ НЕСКОЛЬКО!
    !             !     !       ! ЗАПРОСОВ .MRKT               !
    ! .CSIGEN     ! 344 !   -   ! ВЫЗЫВАЕТ РАБОТУ ИНТЕРПРЕТАТО-!
    !             !     !       ! РА КОМАНДНОЙ СТРОКИ В ОБЩЕМ  !
    !             !     !       ! РЕЖИМЕ                       !
    ! .CSISPC     ! 345 !   -   ! ВЫЗЫВАЕТ РАБОТУ ИНТЕРПРЕТАТО-!
    !             !     !       ! РА КОМАНДНОЙ СТРОКИ В СПЕ-   !
    !             !     !       ! ЦИАЛЬНОМ РЕЖИМЕ              !
    ! .CSTAT      ! 375 !   27  ! ПОЗВОЛЯЕТ ПОЛУЧИТЬ ИНФОРМАЦИЮ!
    !             !     !       ! О СОСТОЯНИИ ОПРЕДЕЛЕННОГО    !
    !             !     !       ! КАНАЛА                       !
    ! .CTIMIO     !  -  !   -   ! ИСПОЛЬЗУЕТСЯ В ПРОГРАММАХ -  !
    !             !     !       ! ДРАЙВЕРАХ УСТРОЙСТВ ДЛЯ ОТМЕ-!
    !             !     !       ! МЕНЫ ЗАПРОСОВ, ТРЕБУЮЩИХ НА- !
    !             !     !       ! ЛИЧИЯ ТАЙМЕРА                !
    ! .DATE       ! 374 !   12  ! ПЕРЕСЫЛАЕТ ТЕКУЩУЮ ДАТУ В    !
    !             !     !       ! РЕГИСТР R0                   !
    ! .DELETE     ! 375 !   0   ! СТИРАЕТ ФАЙЛ С ТОМА УКАЗАН-  !
    !             !     !       ! НОГО УСТРОЙСТВА              !
    ! .DRAST:     !     !       ! ОПРЕДЕЛЯЕТ НАЧАЛО ПОДПРОГРАМ-!
    !             !     !       ! МЫ ОБРАБОТКИ ПРЕРЫВАНИЙ      !
    ! .DRBEG      !     !       ! СОЗДАЕТ ТАБЛИЦУ ЗАГОЛОВКА    !
    !             !     !       ! ДРАЙВЕРА                     !
    ! .DRBOT      !     !       ! ОПРЕДЕЛЯЕТ НАЧАЛО ПЕРВИЧНОГО !
    !             !     !       ! ЗАГРУЗЧИКА В ДРАЙВЕРЕ        !
    ! .DRDEF      !     !       ! ОПРЕДЕЛЯЕТ ПАРАМЕТРЫ ДРАЙВЕРА!
    !             !     !       ! И УСТРОЙСТВА                 !
    ! .DREND      !     !       ! ФОРМИРУЕТ ТАБЛИЦУ АДРЕСОВ    !
    !             !     !       ! ПОДПРОГРАММ МОНИТОРА; ОПРЕДЕ-!
    !             !     !       ! ЛЯЕТ ЛОГИЧЕСКИЙ КОНЕЦ ТЕКСТА !
    !             !     !       ! ДРАЙВЕРА                     !
    ! .DRFIN      !     !       ! ПЕРЕДАЕТ УПРАВЛЕНИЕ МОНИТОРУ !
    !             !     !       ! ПО  ЗАВЕРШЕНИИ ОБСЛУЖИВАНИЯ  !
    !             !     !       ! ЭЛЕМЕНТА ОЧЕРЕДИ             !
    ! .DRSET      !     !       ! ИСПОЛЬЗУЕТСЯ ДЛЯ ФОРМИРОВАНИЯ!
    !             !     !       ! ТАБЛИЦ ПАРАМЕТРОВ ДРАЙВЕРА   !
    ! .DRVTB      !     !       ! ИСПОЛЬЗУЕТСЯ ДЛЯ ОПИСАНИЯ    !
    !             !     !       ! ТАБЛИЦЫ ВЕКТОРОВ ПРЕРЫВАНИЙ  !
    !             !     !       ! И ПОДПРОГРАММ ИХ ОБРАБОТКИ   !
    ! .DSTATUS    ! 342 !    -  ! ПОЗВОЛЯЕТ ПОЛУЧИТЬ ИНФОРМАЦИЮ!
    !             !     !       ! О СОСТОЯНИИ ОПРЕДЕЛЕННОГО    !
    !             !     !       ! УСТРОЙСТВА                   !
    ! .ENTER      ! 375 !   2   ! РЕЗЕРВИРУЕТ ОБЛАСТЬ НА ТОМЕ  !
    !             !     !       ! УКАЗАННОГО УСТРОЙСТВА ДЛЯ    !
    !             !     !       ! СОЗДАНИЯ НОВОГО ФАЙЛА        !
    ! .EXIT       ! 350 !   -   ! ЗАВЕРШАЕТ ВЫПОЛНЕНИЕ ПРОГРАМ-!
    !             !     !       ! МЫ ПОЛЬЗОВАТЕЛЯ И ПЕРЕДАЕТ   !
    !             !     !       ! УПРАВЛЕНИЕ КЛАВИАТУРНОМУ     !
    !             !     !       ! МОНИТОРУ                     !
    ! .FETCH      ! 343 !   -   ! ЗАГРУЖАЕТ ДРАЙВЕР УСТРОЙСТВА !
    ! .FPROT      ! 375 !  43   ! УСТАНАВЛИВАЕТ (ОТМЕНЯЕТ)     !
    !             !     !       ! ЗАЩИТУ ФАЙЛА                 !
    ! .GTIM       ! 375 !   21  ! ОПРЕДЕЛЯЕТ ТЕКУЩЕЕ ВРЕМЯ ДНЯ !
    ! .GTJB       ! 375 !   20  ! ОПРЕДЕЛЯЕТ ПАРАМЕТРЫ ВЫПОЛНЯ-!
    !             !     !       ! ЕМОГО ЗАДАНИЯ                !
    ! .GTLIN      ! 345 !   -   ! ПРИНИМАЕТ ВХОДНУЮ СТРОКУ С   !
    !             !     !       ! ТЕРМИНАЛА ИЛИ ИЗ КОСВЕННОГО  !
    !             !     !       ! ФАЙЛА                        !
    ! .GVAL       ! 376 !   34  ! ПЕРЕСЫЛАЕТ В R0 СОДЕРЖИМОЕ   !
    !             !     !       ! УКАЗАННОЙ ЯЧЕЙКИ МОНИТОРА    !
    ! .HERR       ! 374 !    5  ! ОТМЕНЯЕТ ДЕЙСТВИЕ ЗАПРОСА    !
    !             !     !       ! .SERR                        !
    ! .HRESET     ! 357 !   -   ! ПРЕКРАЩАЕТ ВСЕ ОПЕРАЦИИ      !
    !             !     !       ! ВВОДА-ВЫВОДА И ВЫПОЛНЯЕТ     !
    !             !     !       ! ФУНКЦИИ ЗАПРОСА .SRESET      !
    ! .INTEN      !  -  !   -   ! СООБЩАЕТ МОНИТОРУ О ТОМ, ЧТО !
    !             !     !       ! ПРОИЗОШЛО ПРЕРЫВАНИЕ ОТ      !
    !             !     !       ! УСТРОЙСТВА И УСТАНАВЛИВАЕТ   !
    !             !     !       ! ПРИОРИТЕТ ПРОЦЕССОРА НА СО-  !
    !             !     !       ! ОТВЕТСТВУЮЩИЙ УРОВЕНЬ        !
    ! .LOCK       ! 346 !   -   ! ДЕЛАЕТ ПРОГРАММУ USR РЕЗИ-   !
    !             !     !       ! ДЕНТНОЙ В ПАМЯТИ ДО ТЕХ ПОР, !
    !             !     !       ! ПОКА НЕ БУДЕТ ВЫПОЛНЕН .EXIT !
    !             !     !       ! ИЛИ .UNLOCK . ЕСЛИ НЕОБХОДИ- !
    !             !     !       ! МО, СВОПИРУЕТ ПРОГРАММУ      !
    !             !     !       ! ПОЛЬЗОВАТЕЛЯ                 !
    ! .LOOKUP     ! 375 !   1   ! ОТКРЫВАЕТ СУЩЕСТВУЮЩИЙ ФАЙЛ  !
    !             !     !       ! ДЛЯ ВВОДА И/ИЛИ ВЫВОДА НА    !
    !             !     !       ! УКАЗАННОМ КАНАЛЕ             !
    ! .MFPS       !  -  !   -   ! ВЫБИРАЕТ СОДЕРЖИМОЕ ССП      !
    ! .MRKT       ! 375 !   22  ! ПЛАНИРУЕТ ЗАПУСК ПОДПРОГРАММЫ!
    !             !     !       ! ЗАВЕРШЕНИЯ ЧЕРЕЗ ОПРЕДЕЛЕН-  !
    !             !     !       ! НЫЙ ИНТЕРВАЛ ВРЕМЕНИ         !
    ! .MTATCH(MT) ! 374 !   37  ! УСТАНАВЛИВАЕТ СВЯЗЬ МЕЖДУ    !
    !             !     !       ! ЗАДАНИЕМ И ОПРЕДЕЛЕННЫМ ТЕР- !
    !             !     !       ! МИНАЛОМ                      !
    ! .MTDTCH(MT) ! 374 !   37  ! ПРЕРЫВАЕТ СВЯЗЬ УКАЗАННОГО   !
    !             !     !       ! ТЕРМИНАЛА С ЗАДАНИЕМ И ОСВО- !
    !             !     !       ! БОЖДАЕТ ЕГО ДЛЯ ИСПОЛЬЗОВАНИЯ!
    !             !     !       ! ДРУГИМ ЗАДАНИЕМ              !
    ! .MTGET(MT)  ! 374 !   37  ! ОПРЕДЕЛЯЕТ СОСТОЯНИЕ УКАЗАН- !
    !             !     !       ! НОГО ТЕРМИНАЛА               !
    ! .MTIN(MT)   ! 374 !   37  ! ДЕЙСТВУЕТ В МУЛЬТИТЕРМИНАЛЬ- !
    !             !     !       ! НОМ РЕЖИМЕ АНАЛОГИЧНО .TTYIN !
    ! .MTOUT(MT)  ! 374 !  37   ! ДЕЙСТВУЕТ В МУЛЬТИТЕРМИНАЛЬ- !
    !             !     !       ! НОМ РЕЖИМЕ АНАЛОГИЧНО .TTYOUT!
    ! .MTPRNT(MT) ! 374 !  32   ! ДЕЙСТВУЕТ В МУЛЬТИТЕРМИНАЛЬ- !
    !             !     !       ! НОМ РЕЖИМЕ АНАЛОГИЧНО .PRINT !
    ! .MTPS       !  -  !       ! УСТАНАВЛИВАЕТ ССП            !
    ! .MTRCTD(MT) ! 374 !   37  ! ОБЕСПЕЧИВАЕТ ВЫВОД НА УКАЗАН-!
    !             !     !       ! НЫЙ ТЕРМИНАЛ                 !
    ! .MTSET(MT)  ! 374 !   37  ! УСТАНАВЛИВАЕТ И МОДИФИЦИРУЕТ !
    !             !     !       ! ХАРАКТЕРИСТИКИ ТЕРМИНАЛА В   !
    !             !     !       ! МУЛЬТИТЕРМИНАЛЬНОМ РЕЖИМЕ    !
    ! .MTSTAT(MT) ! 375 !   37  ! ПЕРЕСЫЛАЕТ ПРОГРАММЕ ИНФОРМА-!
    !             !     !       ! ЦИЮ О СОСТОЯНИИ МУЛЬТИТЕРМИ- !
    !             !     !       ! НАЛЬНОЙ СИСТЕМЫ              !
    ! .PEEK       ! 375 !   34  ! ОПРЕДЕЛЯЕТ СОДЕРЖИМОЕ ЯЧЕЕК  !
    !             !     !       ! ПАМЯТИ                       !
    ! .POKE       ! 375 !   34  ! ИЗМЕНЯЕТ СОДЕРЖИМОЕ ЯЧЕЕК    !
    !             !     !       ! ПАМЯТИ                       !
    ! .PRINT      ! 351 !   -   ! ВЫДАЕТ НА ПЕЧАТЬ СТРОКУ СИМ- !
    !             !     !       ! ВОЛОВ КОИ-7                  !
    ! .PURGE      ! 374 !   3   ! ОСВОБОЖДАЕТ КАНАЛ            !
    ! .PVAL       ! 375 !   34  ! ИЗМЕНЯЕТ СОДЕРЖИМОЕ ЯЧЕЕК    !
    !             !     !       ! МОНИТОРА                     !
    ! .QELDF      !  -  !   -   ! ОПРЕДЕЛЯЕТ МНЕМОНИЧЕСКИЕ     !
    !             !     !       ! ОБОЗНАЧЕНИЯ ДЛЯ ЭЛЕМЕНТОВ    !
    !             !     !       ! ОЧЕРЕДИ ВВОДА-ВЫВОДА         !
    ! .QSET       ! 353 !   -   ! УВЕЛИЧИВАЕТ РАЗМЕР ОЧЕРЕДИ   !
    !             !     !       ! ВВОДА-ВЫВОДА ДЛЯ МОНИТОРА    !
    ! .RCTRLD     ! 355 !   -   ! ОБЕСПЕЧИВАЕТ ВЫВОД НА ТЕРМИ- !
    !             !     !       ! НАЛ                          !
    ! .READ       ! 375 !   10  ! ПЕРЕДЕТ ДАННЫЕ ПО УКАЗАННОМУ !
    !             !     !       ! КАНАЛУ В БУФЕР ПАМЯТИ И ВОЗ- !
    !             !     !       ! ВРАЩАЕТ УПРАВЛЕНИЕ ПРОГРАММЕ !
    !             !     !       ! ПОЛЬЗОВАТЕЛЯ, КАК ТОЛЬКО ЗА- !
    !             !     !       ! ПРОС НА ЧТЕНИЕ ДАННЫХ БУДЕТ  !
    !             !     !       ! ПОСТАВЛЕН В ОЧЕРЕДЬ ВВОДА-   !
    !             !     !       ! ВЫВОДА                       !
    ! .READC      ! 375 !   10  ! ПЕРЕДЕТ ДАННЫЕ ПО УКАЗАННОМУ !
    !             !     !       ! КАНАЛУ В БУФЕР ПАМЯТИ И ВОЗ- !
    !             !     !       ! ВРАЩАЕТ УПРАВЛЕНИЕ ПРОГРАММЕ !
    !             !     !       ! ПОЛЬЗОВАТЕЛЯ, КАК ТОЛЬКО ЗА- !
    !             !     !       ! ПРОС НА ЧТЕНИЕ ДАННЫХ БУДЕТ  !
    !             !     !       ! ПОСТАВЛЕН В ОЧЕРЕДЬ ВВОДА-   !
    !             !     !       ! ВЫВОДА. ПОСЛЕ ОКОНЧАНИЯ ЧТЕ- !
    !             !     !       ! НИЯ УПРАВЛЕНИЕ ПЕРЕДАЕТСЯ    !
    !             !     !       ! ПОДПРОГРАММЕ ЗАВЕРШЕНИЯ      !
    ! .READW      ! 375 !   10  ! ПЕРЕДЕТ ДАННЫЕ ПО УКАЗАННОМУ !
    !             !     !       ! КАНАЛУ В БУФЕР ПАМЯТИ И ВОЗ- !
    !             !     !       ! ВРАЩАЕТ УПРАВЛЕНИЕ ПРОГРАММЕ !
    !             !     !       ! ПОЛЬЗОВАТЕЛЯ ПОСЛЕ ОКОНЧАНИЯ !
    !             !     !       ! ОПЕРАЦИИ                     !
    ! .RELEAS     ! 343 !   -   ! УДАЛЯЕТ ДРАЙВЕР УСТРОЙСТВА   !
    !             !     !       ! ИЗ ПАМЯТИ                    !
    ! .RENAME     ! 375 !   4   ! ПЕРЕИМЕНОВЫВАЕТ ФАЙЛ. НЕДО-  !
    !             !     !       ! ПУСТИМ В ОПЕРАЦИЯХ С МАГНИТ- !
    !             !     !       ! НОЙ ЛЕНТОЙ                   !
    ! .REOPEN     ! 375 !   6   ! ОБЕСПЕЧИВАЕТ ВОССТАНОВЛЕНИЕ  !
    !             !     !       ! ПАРАМЕТРОВ, КОТОРЫЕ ЗАПОМИНА-!
    !             !     !       ! ЛИСЬ ПО ЗАПРОСУ .SAVESTATUS  !
    !             !     !       ! И ПОВТОРНО ОТКРЫВАЕТ КАНАЛ   !
    !             !     !       ! ДЛЯ ВВОДА-ВЫВОДА             !
    ! .SAVESTATUS ! 375 !   5   ! ЗАПОМИНАЕТ ПАРАМЕТРЫ СОСТОЯ- !
    !             !     !       ! НИЯ ОТКРЫТОГО ФАЙЛА В ОПРЕДЕ-!
    !             !     !       ! ЛЕННОЙ ОБЛАСТИ ПАМЯТИ И ОСВО-!
    !             !     !       ! БОЖДАЕТ КАНАЛ                !
    ! .SCCA       ! 374 !   35  ! ПОЗВОЛЯЕТ БЛОКИРОВАТЬ ВЫПОЛ- !
    !             !     !       ! НЕНИЕ КОМАНДЫ СУ/С           !
    ! .SDTTM      ! 375 !   40  ! УСТАНАВЛИВАЕТ СИСТЕМНУЮ ДАТУ !
    !             !     !       ! И/ИЛИ ВРЕМЯ                  !
    ! .SERR       ! 374 !   4   ! БЛОКИРУЕТ ПРЕРЫВАНИЕ ПРОГРАМ-!
    !             !     !       ! МЫ ПРИ ОБНАРУЖЕНИИ МОНИТОРОМ !
    !             !     !       ! ОШИБКИ                       !
    ! .SETTOP     ! 354 !   -   ! ОПРЕДЕЛЯЕТ ВЕРХНЮЮ ГРАНИЦУ   !
    !             !     !       ! ПАМЯТИ ДЛЯ ВЫПОЛНЯЕМОГО ЗА-  !
    !             !     !       ! ДАНИЯ                        !
    ! .SFDAT      ! 375 !   42  ! ИЗМЕНЯЕТ ДАТУ СОЗДАНИЯ ФАЙЛА !
    ! .SFPA       ! 375 !   30  ! УСТАВАВЛИВАЕТ В ПРОГРАММЕ    !
    !             !     !       ! ПОЛЬЗОВАТЕЛЯ АДРЕС ПОДПРОГ-  !
    !             !     !       ! РАММЫ ОБРАБОТКИ ПРЕРЫВАНИЯ   !
    !             !     !       ! ОТ ПРОЦЕССОРА ПЛАВАЮЩЕЙ      !
    !             !     !       ! ЗАПЯТОЙ                      !
    ! .SPFUN      ! 375 !   32  ! ВЫПОЛНЯЕТ СПЕЦИАЛЬНЫЕ ФУНКЦИИ!
    !             !     !       ! ДЛЯ УСТРОЙСТВ                !
    ! .SRESET     ! 352 !   -   ! ВОССТАНАВЛИВАЕТ КАНАЛЫ ВВОДА-!
    !             !     !       ! ВЫВОДА И УДАЛЯЕТ ДРАЙВЕРЫ    !
    !             !     !       ! УСТРОЙСТВ ИЗ ПАМЯТИ          !
    ! .SYNCH      !  -  !   -   ! ОБЕСПЕЧИВАЕТ ВОЗМОЖНОСТЬ ВЫ- !
    !             !     !       ! ПОЛНЕНИЯ ПРОГРАММНЫХ ЗАПРОСОВ!
    !             !     !       ! В ПОДПРОГРАММЕ ОБРАБОТКИ     !
    !             !     !       ! ПРЕРЫВАНИЯ                   !
    ! .TIMIO      !  -  !   -   ! ПЛАНИРУЕТ ЗАПУСК ПОДПРОГРАММЫ!
    !             !     !       ! ЗАВЕРШЕНИЯ ЧЕРЕЗ ЗАДАННЫЙ    !
    !             !     !       ! ИНТЕРВАЛ ВРЕМЕНИ             !
    ! .TLOCK      ! 374 !    7  ! ОПРЕДЕЛЯЕТ, ИСПОЛЬЗУЕТСЯ ЛИ  !
    !             !     !       ! USR В ДАННЫЙ МОМЕНТ ДРУГИМ   !
    !             !     !       ! ЗАДАНИЕМ. ЕСЛИ USR НЕ ИСПОЛЬ-!
    !             !     !       ! ЗУЕТСЯ, ТО ВЫПОЛНЯЕТСЯ .LOCK !
    ! .TRPSET     ! 375 !    3  ! УСТАНАВЛИВАЕТ ОБРАБОТКУ ПРЕ- !
    !             !     !       ! РЫВАНИЙ ПО 4-ОМУ ИЛИ 10-ОМУ  !
    !             !     !       ! ВЕКТОРАМ В ПРОГРАММЕ ПОЛЬЗО- !
    !             !     !       ! ВАТЕЛЯ                       !
    ! .TTINR      ! 340 !   -   ! ПЕРЕДАЮТ ОДИН СИМВОЛ ИЗ БУ-  !
    ! .TTYIN      !     !       ! ФЕРА ТЕРМИНАЛА В РЕГИСТР R0  !
    ! .TTYOUT     ! 341 !   -   ! ПЕРЕДАЮТ ОДИН СИМВОЛ ИЗ РЕ-  !
    ! .TTOUTR     !     !       ! ГИСТРА R0 В БУФЕР ТЕРМИНАЛА  !
    ! .TWAIT      ! 375 !   24  ! ПРИОСТАНАВЛИВАЕТ ВЫПОЛНЕНИЕ  !
    !             !     !       ! ЗАДАНИЯ НА УКАЗАННЫЙ ИНТЕРВАЛ!
    !             !     !       ! ВРЕМЕНИ                      !
    ! .UNLOCK     ! 347 !   -   ! ОСВОБОЖДАЕТ ПРОГРАММУ USR,   !
    !             !     !       ! ЕСЛИ РАНЕЕ БЫЛ ВЫПОЛНЕН ЗАП- !
    !             !     !       ! РОС .LOCK И, ЕСЛИ НЕОБХОДИМО,!
    !             !     !       ! ВНОВЬ ЗАГРУЖАЕТ ПРОГРАММУ    !
    !             !     !       ! ПОЛЬЗОВАТЕЛЯ                 !
    ! .WAIT       ! 374 !   0   ! ОЖИДАЕТ ЗАВЕРШЕНИЯ ОПЕРАЦИИ  !
    !             !     !       ! ВВОДА-ВЫВОДА НА УКАЗАННОМ    !
    !             !     !       ! КАНАЛЕ                       !
    ! .WRITC      ! 375 !   11  ! ПЕРЕДАЕТ ДАННЫЕ ПО УКАЗАННО- !
    !             !     !       ! МУ КАНАЛУ НА УСТРОЙСТВО И    !
    !             !     !       ! ВОЗВРАЩАЕТ УПРАВЛЕНИЕ ПРОГ-  !
    !             !     !       ! РАММЕ ПОЛЬЗОВАТЕЛЯ КАК ТОЛЬКО!
    !             !     !       ! ЗАПРОС НА ПЕРЕДАЧУ ДАННЫХ БУ-!
    !             !     !       ! ДЕТ ПОСТАВЛЕН В ОЧЕРЕДЬ      !
    !             !     !       ! ВВОДА-ВЫВОДА. ПОСЛЕ ОКОНЧАНИЯ!
    !             !     !       ! ЗАПИСИ, УПРАВЛЕНИЕ ПЕРЕДАЕТСЯ!
    !             !     !       ! ПОДПРОГРАММЕ ЗАВЕРШЕНИЯ      !
    ! .WRITE      ! 375 !   11  ! ПЕРЕДАЕТ ДАННЫЕ ПО УКАЗАННО- !
    !             !     !       ! МУ КАНАЛУ НА УСТРОЙСТВО И    !
    !             !     !       ! ВОЗВРАЩАЕТ УПРАВЛЕНИЕ ПРОГ-  !
    !             !     !       ! РАММЕ ПОЛЬЗОВАТЕЛЯ КАК ТОЛЬКО!
    !             !     !       ! ЗАПРОС НА ПЕРЕДАЧУ ДАННЫХ БУ-!
    !             !     !       ! ДЕТ ПОСТАВЛЕН В ОЧЕРЕДЬ      !
    !             !     !       ! ВВОДА-ВЫВОДА                 !
    ! .WRITW      ! 375 !   11  ! ПЕРЕДАЕТ ДАННЫЕ ПО УКАЗАННО- !
    !             !     !       ! МУ КАНАЛУ НА УСТРОЙСТВО И    !
    !             !     !       ! ВОЗВРАЩАЕТ УПРАВЛЕНИЕ ПРОГ-  !
    !             !     !       ! РАММЕ ПОЛЬЗОВАТЕЛЯ ПОСЛЕ     !
    !             !     !       ! ОКОНЧАНИЯ ПЕРЕДАЧИ ДАННЫХ    !
    ------------------------------------------------------------
 
 
                                                      ТАБЛИЦА 5
    ------------------------------------------------------------
    ! ПРОГРАММНЫЙ ! КОД ! ФУНК- !                              !
    !   ЗАПРОС    ! ЕМТ ! ЦИОН. !         НАЗНАЧЕНИЕ           !
    !             !     ! КОД   !                              !
    ------------------------------------------------------------
    ! .CHCOPY     ! 375 !  13   ! ОТКРЫВАЕТ КАНАЛ ДЛЯ ВВОДА И  !
    !             !     !       ! ЛОГИЧЕСКИ СВЯЗЫВАЕТ ЕГО С    !
    !             !     !       ! ОТКРЫТЫМ КАНАЛОМ ДРУГОГО     !
    !             !     !       ! ЗАДАНИЯ                      !
    ! .CNTXSW     ! 375 !   33  ! ОПРЕДЕЛЯЕТ ЯЧЕЙКИ ПАМЯТИ ДЛЯ !
    !             !     !       ! ОПЕРАЦИИ ПЕРЕКЛЮЧЕНИЯ  КОН-  !
    !             !     !       ! ТЕКСТА                       !
    ! .CRAW(XM)   ! 374 !   36  ! СОЗДАЕТ ВИРТУАЛЬНОЕ АДРЕСНОЕ !
    !             !     !       ! ОКНО                         !
    ! .CRRG(XM)   ! 374 !   36  ! СОЗДАЕТ ДИНАМИЧЕСКУЮ ОБЛАСТЬ !
    !             !     !       ! ФИЗИЧЕСКОЙ ПАМЯТИ            !
    ! .DEVICE     ! 375 !   14  ! ПОЗВОЛЯЕТ ЗАПРЕТИТЬ ПРЕРЫВА- !
    !             !     !       ! НИЕ ОТ УСТРОЙСТВА В РЕЖИМЕ   !
    !             !     !       ! FB ПОСЛЕ ОКОНЧАНИЯ ВЫПОЛНЕНИЯ!
    !             !     !       ! ПРОГРАММЫ                    !
    ! .ELAW(XM)   ! 374 !   36  ! АННУЛИРУЕТ ВИРТУАЛЬНОЕ АДРЕС-!
    !             !     !       ! НОЕ ОКНО                     !
    ! .ELRG(XM)   ! 374 !   36  ! АННУЛИРУЕТ ДИНАМИЧЕСКУЮ ОБ-  !
    !             !     !       ! ЛАСТЬ ФИЗИЧЕСКОЙ ПАМЯТИ И    !
    !             !     !       ! ДЕЛАЕТ ЕЕ СВОБОДНОЙ ДЛЯ ИС-  !
    !             !     !       ! ПОЛЬЗОВАНИЯ ДРУГИМ ЗАДАНИЕМ  !
    ! .GMCX(XM)   ! 374 !   36  ! ПЕРЕСЫЛАЕТ ПРОГРАММЕ ИНФОР-  !
    !             !     !       ! МАЦИЮ О СОСТОЯНИИ ОПРЕДЕЛЕН- !
    !             !     !       ! НОГО ОКНА                    !
    ! .MAP(XM)    ! 374 !   36  ! ОТОБРАЖАЕТ ПРЕДВАРИТЕЛЬНО    !
    !             !     !       ! СОЗДАННОЕ ОКНО ВИРТУАЛЬНОГО  !
    !             !     !       ! АДРЕСА                       !
    ! .MWAIT      ! 374 !   11  ! ПЕРЕВОДИТ ТЕКУЩЕЕ ЗАДАНИЕ В  !
    !             !     !       ! СОСТОЯНИЕ ОЖИДАНИЯ ДО ЗАВЕР- !
    !             !     !       ! ШЕНИЯ ПЕРЕДАЧИ ДАННЫХ        !
    ! .PROTECT    ! 375 !   31  ! ЗАКРЕПЛЯЕТ ОДИН ИЗ ВЕКТОРОВ  !
    !             !     !       ! (АДРЕСА ОТ 0 ДО 476) ЗА ДАН- !
    !             !     !       ! НЫМ ЗАДАНИЕМ                 !
    ! .RCVD       ! 375 !   26  ! ОСУЩЕСТВЛЯЮТ ПРИЕМ СООБЩЕНИЙ !
    ! .RCVDC      !     !       ! ИЛИ ДАННЫХ, ПЕРЕДАВАЕМЫХ ДРУ-!
    ! .RCVDW      !     !       ! ГИМ ЗАДАНИЕМ В РЕЖИМЕ FB.    !
    !             !     !       ! АНАЛОГИЧНЫ ЗАПРОСАМ .READ,   !
    !             !     !       ! .READC,.READW                !
    ! .RDBBK(XM)  !  -  !   -   ! СОЗДАЕТ БЛОК ОПРЕДЕЛЕНИЯ     !
    !             !     !       ! ОБЛАСТИ                      !
    ! .RDBDF(XM)  ! -   !   -   ! ОПРЕДЕЛЯЕТ МНЕМОНИЧЕСКИЕ     !
    !             !     !       ! ОБОЗНАЧЕНИЯ ДЛЯ БЛОКА ОПРЕДЕ-!
    !             !     !       ! НИЯ ОБЛАСТИ                  !
    ! .RSUM       ! 374 !   2   ! ВОЗОБНОВЛЯЕТ ВЫПОЛНЕНИЕ ЗАДА-!
    !             !     !       ! НИЯ, КОТОРОЕ БЫЛО ПРЕРВАНО   !
    !             !     !       ! ПО ЗАПРОСУ .SPND             !
    ! .SDAT       ! 375 !   25  ! ОСУЩЕСТВЛЯЮТ ПЕРЕДАЧУ СООБЩЕ-!
    ! .SDATC      !     !       ! НИЙ ИЛИ ДАННЫХ ДРУГОЙ        !
    ! .SDATW      !     !       ! ПРОГРАММЕ. АНАЛОГИЧНЫ ЗАПРО- !
    !             !     !       ! САМ .WRITE,.WRITC,.WRITW     !
    ! .SPCPS      ! 375 !   41  ! ПОЗВОЛЯЕТ ИЗМЕНИТЬ АДРЕС     !
    !             !     !       ! ВОЗВРАТА ИЗ ПРЕРЫВАНИЯ В ПОД-!
    !             !     !       ! ПРОГРАММЕ ЗАВЕРШЕНИЯ         !
    ! .SPND       ! 374 !   1   ! ПРИОСТАНАВЛИВАЕТ ВЫПОЛНЕНИЕ  !
    !             !     !       ! ЗАДАНИЯ                      !
    ! .UNMAP(XM)  ! 374 !   36  ! ОТМЕНЯЕТ ДЕЙСТВИЕ ЗАПРОСА    !
    !             !     !       ! .MAP                         !
    ! .UNPROTECT  ! 374 !   31  ! ОТМЕНЯЕТ ДЕЙСТВИЕ ЗАПРОСА    !
    !             !     !       ! .PROTECT                     !
    ! .WDBBK(XM)  !  -  !   -   ! СОЗДАЕТ БЛОК ОПРЕДЕЛЕНИЯ ОКНА!
    ! .WDBDF(XM)  !  -  !   -   ! ОПРЕДЕЛЯЕТ МНЕМОНИЧЕСКИЕ     !
    !             !     !       ! ОБОЗНАЧЕНИЯ ДЛЯ БЛОКА ОПРЕДЕ-!
    !             !     !       ! ЛЕНИЯ ОКНА                   !
    ------------------------------------------------------------
 
 
        5.1. ПРОГРАММНЫЕ ЗАПРОСЫ ДЛЯ ОПЕРАЦИЙ С ФАЙЛАМИ
        5.1.1. .CHCOPY (РЕЖИМ FB,XM)
        ЗАПРОС .CHCOPY ОТКРЫВАЕТ  КАНАЛ  ДЛЯ  ВВОДА  ДАННЫХ  И
   ЛОГИЧЕСКИ СВЯЗЫВАЕТ ЕГО С КАНАЛОМ ДРУГОГО ЗАДАНИЯ  ОТКРЫТЫМ
   ДЛЯ ВВОДА ИЛИ ВЫВОДА. ЗАПРОС МОЖЕТ ИСПОЛЬЗОВАТЬСЯ ОСНОВНОЙ,
   ФОНОВОЙ ПРОГРАММАМИ, А  ТАКЖЕ  СИСТЕМНЫМ  ЗАДАНИЕМ.  ЗАПРОС
   .CHCOPY ДОПУСТИМ ТОЛЬКО ДЛЯ ФАЙЛОВ,  КОТОРЫЕ  НАХОДЯТСЯ  НА
   ДИСКАХ; ОДНАКО СИСТЕМА НЕ ОБНАРУЖИТ  ОШИБКИ,  ЕСЛИ  ИСПОЛЬ-
   ЗУЕТСЯ ДРУГОЕ УСТРОЙСТВО. ДЛЯ ТОГО,  ЧТОБЫ  ЗАКРЫТЬ  КАНАЛ,
   ОТКРЫТЫЙ ПО .CHCOPY НЕОБХОДИМО ИСПОЛЬЗОВАТЬ ЗАПРОСЫ  .CLOSE
   ИЛИ .PURGE.
        ФОРМАТ МАКРОКОМАНДЫ:
        .CHCOPY AREA,CHAN,OCHAN[,JOBBLK]
   ГДЕ AREA - АДРЕС БЛОКА ИЗ 3-Х СЛОВ АРГУМЕНТОВ ЕМТ;
        CHAN - НОМЕР КАНАЛА, ИСПОЛЬЗУЕМОГО ЗАДАНИЕМ ДЛЯ ЧТЕНИЯ
   ДАННЫХ;
        OCHAN - НОМЕР КАНАЛА ДРУГОГО ЗАДАНИЯ;
        JOBBLK - АДРЕС БЛОКА ИЗ ТРЕХ СЛОВ,  СОДЕРЖАЩЕГО  ЛОГИ-
   ЧЕСКОЕ ИМЯ ЗАДАНИЯ.
        ФОРМАТ БЛОКА АРГУМЕНТОВ ЕМТ:
          AREA:   .BYTE   CHAN,13
                  .WORD   OCHAN
                  .WORD   JOBBLK
  ПРИМЕР.
  ;ПРИМЕР СОСТОИТ ИЗ ДВУХ ПРОГРАММ. ПЕРВАЯ ИЗ ПРОГРАММ
  ;(ОСНОВНАЯ) ВЫПОЛНЯЕТ ПЕРЕДАЧУ ДАННЫХ ВО ВТОРУЮ -
  ;ФОНОВУЮ ПРОГРАММУ.
          .TITLE  CHCOPF.MAC
  ;ОСНОВНАЯ ПРОГРАММА
          .MCALL  .ENTER,.PRINT,.SDATW,.RCVDW,.CLOSE,.WRITW
	  .MCALL  .EXIT 
  STARTF: MOV     #AREA,R5
          .ENTER  R5,#0,#FILE,#5          ;СОЗДАТЬ ФАЙЛ
          .WRITW  R5,#0,#RECRD,#256.,#4   ;ЗАПИСАТЬ БЛОК
          BCS     ENTERR
          .SDATW  R5,#BUFR,#2             ;ПЕРЕДАТЬ СООБШЕНИЕ
          ;       .
          .RCVDW  R5,#BUFR,#1
          .CLOSE  #0
          .PRINT  #FEXIT
          .EXIT
  ENTERR: .PRINT  #ERMSG
          .EXIT
  FILE:   .RAD50  /DK QUFILE/
          .RAD50  /TMP/
  AREA:   .BLKW   5
  BUFR:   .WORD   0                       ;НОМЕР КАНАЛА
          .WORD   4                       ;НОМЕР БЛОКА
  RECRD:  .BLKW   256.
  ERMSG:  .ASCIZ  /ОШИБКА .ENTER/
  FEXIT:  .ASCIZ  /КОНЕЦ ОСНОВНОЙ ПРОГРАММЫ/
          .END    STARTF
 
          .TITLE  CHCOPB.MAC
  ;ФОНОВАЯ ПРОГРАММА
          .MCALL  .CHCOPY,.RCVDW,.READW,.EXIT,.PRINT,.SDATW
  STARTB: MOV     #AREA,R5
          .RCVDW  R5,#MSG,#2      ;ПОЛУЧИТЬ СООБЩЕНИЕ
          BCS     1$
          .CHCOPY R5,#0,MSG+2     ;НОМЕР КАНАЛА ИЗ MSG+2
          BCS     2$
          .READW  R5,#0,#BUFF,#256.,MSG+4 ;ЧИТАТЬ БЛОК
          BCS     3$
          ;       .
          .SDATW  R5,#MSG,#1
          .PRINT  #BEXIT
          .EXIT
  1$:     MOV     #NOJOB,R0
          BR      4$
  2$:     MOV     #NOCH,R0
          BR      4$
  3$:     MOV     #RDERR,R0
  4$:     .PRINT
          .EXIT
  AREA:   .BLKW   5
  MSG:    .BLKW   3               ;БУФЕР ДЛЯ СООБЩЕНИЯ
  BUFF:   .BLKW   256.
  BEXIT:  .ASCIZ  /КОНЕЦ ФОНОВОЙ ПРОГРАММЫ/
  NOJOB:  .ASCIZ  /НЕТ ОСНОВНОГО ЗАДАНИЯ/
  NOCH:   .ASCIZ  /НЕ ОТКРЫТ КАНАЛ ДЛЯ ОСНОВНОГО ЗАДАНИЯ/
  RDERR:  .ASCIZ  /ОШИБКА ЧТЕНИЯ/
          .END    STARTB
 
        5.1.2. .CLOSE
        ЗАПРОС .CLOSE ЗАВЕРШАЕТ ДЕЙСТВИЕ НА УКАЗАННОМ КАНАЛЕ И
   ОСВОБОЖДАЕТ ЕГО ДЛЯ ИСПОЛЬЗОВАНИЯ В  ДРУГОЙ  ОПЕРАЦИИ.  ДЛЯ
   ВЫПОЛНЕНИЯ ЗАПРОСА ДРАЙВЕР СООТВЕТСТВУЮЩЕГО УСТРОЙСТВА ДОЛ-
   ЖЕН НАХОДИТЬСЯ В ПАМЯТИ.
        ФОРМАТ МАКРОКОМАНДЫ
        .CLOSE CHAN
        ФОРМАТ БЛОКА АРГУМЕНТОВ ЕМТ:
          AREA:   .BYTE   CHAN,6
        ДЛЯ ТОГО, ЧТОБЫ СДЕЛАТЬ ФАЙЛ ПОСТОЯННЫМ НА ТОМЕ  НЕОБ-
   ХОДИМО НА  СООТВЕТСТВУЮЩЕМ  КАНАЛЕ,  ОТКРЫТОМ  ДЛЯ  ВЫВОДА,
   ВЫПОЛНИТЬ ЗАПРОС .CLOSE. ЗАПРОС .CLOSE НА НЕОТКРЫТОМ КАНАЛЕ
   ИГНОРИРУЕТСЯ.
        .CLOSE, ВЫПОЛНЯЕМЫЙ НА КАНАЛЕ, КОТОРЫЙ БЫЛ  ОТКРЫТ  ПО
   .ENTER ВЫЗЫВАЕТ КОРРЕКТИРОВКУ  СПРАВОЧНИКА  УСТРОЙСТВА  ДЛЯ
   ОПРЕДЕЛЕНИЯ ФАЙЛА КАК ПОСТОЯННОГО НА ЭТОМ УСТРОЙСТВЕ.  ЕСЛИ
   ФАЙЛ ОТКРЫТ ПО .LOOKUP,  ТО  КОРРЕКТИРОВКИ  СПРАВОЧНИКА  НЕ
   ПРОИСХОДИТ.
        ЕСЛИ УСТРОЙСТВО, СВЯЗАННОЕ С  УКАЗАННЫМ  КАНАЛОМ,  УЖЕ
   СОДЕРЖИТ ФАЙЛ С ТЕМ ЖЕ ИМЕНЕМ И ТИПОМ, ЧТО И ВНОВЬ  СОЗДАН-
   НЫЙ ФАЙЛ, ТО СТАРАЯ КОПИЯ ФАЙЛА СТИРАЕТСЯ, КОГДА НОВЫЙ ФАЙЛ
   СТАНОВИТСЯ ПОСТОЯННЫМ.
        ЕСЛИ НА УСТРОЙСТВЕ УЖЕ СУЩЕСТВУЕТ  ЗАЩИЩЕННЫЙ  ФАЙЛ  С
   ТЕМ ЖЕ ИМЕНЕМ, ТО ТЕКУЩИЙ ФАЙЛ ЗАКРЫВАЕТСЯ,  НО  ПОЯВЛЯЮТСЯ
   ДВА ФАЙЛА С ОДИНАКОВЫМИ ИМЕНАМИ.
        ПРИМЕЧАНИЕ. МОНИТОР ИНФОРМИРУЕТ ПРОГРАММУ ПОЛЬЗОВАТЕЛЯ
   ОБ ОШИБКЕ ПРИ ВЫПОЛНЕНИИ ЗАПРОСА .CLOSE ТОЛЬКО В  ТОМ  СЛУ-
   ЧАЕ, ЕСЛИ ДО ЭТОГО БЫЛ ВЫПОЛНЕН ЗАПРОС .SERR.
        ПРИМЕР ИСПОЛЬЗОВАНИЯ .CLOSE  СМ.  В  ОПИСАНИИ  ЗАПРОСА
   .CSISPC.
 
        5.1.3. .DELETE
        ЗАПРОС .DELETE УДАЛЯЕТ ФАЙЛ ИЗ СПРАВОЧНИКА  УКАЗАННОГО
   УСТРОЙСТВА. .DELETE НЕДОПУСТИМ ДЛЯ МАГНИТНЫХ ЛЕНТ.
        ФОРМАТ МАКРОКОМАНДЫ:
        .DELETE AREA,CHAN,DBLK
   ГДЕ AREA - АДРЕС БЛОКА ИЗ 2-Х СЛОВ АРГУМЕНТОВ ЕМТ;
        DBLK - АДРЕС БЛОКА УСТРОЙСТВА, СОДЕРЖАЩЕГО  СПЕЦИФИКА-
   ЦИЮ УДАЛЯЕМОГО ФАЙЛА.
        ПРИМЕЧАНИЯ:
        1. ОБРАЩЕНИЕ К ОТКРЫТОМУ КАНАЛУ ПРИВОДИТ К ОШИБКЕ;
        2. УДАЛЕННЫЙ ФАЙЛ В  ЛИСТИНГЕ  СПРАВОЧНИКА  УСТРОЙСТВА
   БУДЕТ ОПИСАН КАК НЕИСПОЛЬЗУЕМАЯ ОБЛАСТЬ  (UNUSED)  ТОГО  ЖЕ
   РАЗМЕРА;
        3. ЗАПРОС .DELETE НА УСТРОЙСТВАХ НЕФАЙЛОВОЙ  СТРУКТУРЫ
   ИГНОРИРУЕТСЯ;
        4. ПРИ ВЫПОЛНЕНИИ .DELETE  НЕОБХОДИМО,  ЧТОБЫ  ДРАЙВЕР
   СООТВЕТСТВУЮЩЕГО УСТРОЙСТВА НАХОДИЛСЯ В ПАМЯТИ;
        5. ПОСЛЕ ВЫПОЛНЕНИЯ .DELETE, УКАЗАННЫЙ КАНАЛ  ОСВОБОЖ-
   ДАЕТСЯ ДЛЯ ДАЛЬНЕЙШЕГО ИСПОЛЬЗОВАНИЯ.
        ПРИМЕР ИСПОЛЬЗОВАНИЯ .DELETE СМ.  В  ОПИСАНИИ  ЗАПРОСА
   .CSISPC.
 
        5.1.4. .ENTER
        ЗАПРОС .ENTER РЕЗЕРВИРУЕТ ОБЛАСТЬ НА ОПРЕДЕЛЕННОМ УСТ-
   РОЙСТВЕ И ЗАНОСИТ В СПРАВОЧНИК УСТРОЙСТВА ЗАПИСЬ О СОЗДАНИИ
   ВРЕМЕННОГО ФАЙЛА. ПО ЗАПРОСУ .ENTER МОНИТОР  ИДЕНТИФИЦИРУЕТ
   НОМЕР КАНАЛА, ОПРЕДЕЛЕННЫЙ В ЗАПРОСЕ, С  УКАЗАННЫМ  ФАЙЛОМ.
   ЗАМЕТИМ, ЧТО ЕСЛИ ПРОГРАММА ИМЕЕТ ОВЕРЛЕЙНУЮ СТРУКТУРУ,  ТО
   15-Й КАНАЛ ИСПОЛЬЗУЕТСЯ ОВЕРЛЕЙНЫМ ДРАЙВЕРОМ  И  НЕ  ДОЛЖЕН
   МОДИФИЦИРОВАТЬСЯ ПРОГРАММОЙ ПОЛЬЗОВАТЕЛЯ.
        ФОРМАТ МАКРОКОМАНДЫ:
        .ENTER AREA,CHAN,DBLK,LEN[,SEQN]
   ГДЕ AREA - АДРЕС БЛОКА ИЗ 4-Х СЛОВ АРГУМЕНТОВ ЕМТ;
        DBLK - АДРЕС БЛОКА УСТРОЙСТВА, В КОТОРОМ ОПИСАН СОЗДА-
   ВАЕМЫЙ ФАЙЛ;
        LEN - РАЗМЕР ФАЙЛА; (СМ.ТАБЛ.6);
        SEQN - ПОСЛЕДОВАТЕЛЬНЫЙ НОМЕР ФАЙЛА ДЛЯ МАГНИТНОЙ ЛЕН-
   ТЫ; ЗНАЧЕНИЯ АРГУМЕНТА SEQN И СООТВЕТСТВУЮЩИЕ  ИМ  ДЕЙСТВИЯ
   МОНИТОРА ОПИСАНЫ В ТАБЛ.7.
        ФОРМАТ БЛОКА АРГУМЕНТОВ ЕМТ:
          AREA:   .BYTE   CHAN,2
                  .WORD   DBLK
                  .WORD   LEN
                  .WORD   SEQN
 
                                                      ТАБЛИЦА 6
    ------------------------------------------------------------
    ! ЗНАЧЕНИЕ    !               ДЕЙСТВИЕ МОНИТОРА            !
    ! АРГУМЕНТА   !                                            !
    !-----------------------------------------------------------
    !     0       ! ОТВОДИТ ДЛЯ ФАЙЛА ПОЛОВИНУ НАИБОЛЬШЕЙ      !
    !             ! СВОБОДНОЙ ОБЛАСТИ ИЛИ ПОЛНОСТЬЮ ВТОРУЮ ПО  !
    !             ! ВЕЛИЧИНЕ СВОБОДНУЮ ОБЛАСТЬ НА ТОМЕ, В ЗА-  !
    !             ! ВИСИМОСТИ ОТ ТОГО, КАКАЯ ИЗ НИХ БОЛЬШЕ     !
    !     М       ! ОТВОДИТ ДЛЯ ФАЙЛА М БЛОКОВ                 !
    !     -1      ! ОТВОДИТ ДЛЯ ФАЙЛА НАИБОЛЬШУЮ СВОБОДНУЮ ОБ- !
    !             ! ЛАСТЬ НА ТОМЕ                              !
    ------------------------------------------------------------
 
 
                                                      ТАБЛИЦА 7
    ------------------------------------------------------------
    ! ЗНАЧЕНИЕ    !             ДЕЙСТВИЕ МОНИТОРА              !
    ! АРГУМЕНТА   !                                            !
    ------------------------------------------------------------
    !     0       ! ПЕРЕМАТЫВАЕТ МАГНИТНУЮ ЛЕНТУ И ПРОИЗВОДИТ  !
    !             ! ПОИСК МЕТКИ LEOT (ЛОГИЧЕСКИЙ КОНЕЦ ЛЕНТЫ)  !
    !     N       ! УСТАНАВЛИВАЕТ МАГНИТНУЮ ЛЕНТУ В ПОЛОЖЕНИЕ, !
    !             ! СООТВЕТСТВУЮЩЕЕ ФАЙЛУ С ПОСЛЕДОВАТЕЛЬНЫМ   !
    !             ! НОМЕРОМ N                                  !
    !     -1      ! ПРОИЗВОДИТ ПОИСК LEOT                      !
    !     -2      ! ПЕРЕМАТЫВАЕТ МАГНИТНУЮ ЛЕНТУ И ПРОИЗВОДИТ  !
    !             ! ПОИСК LEOT ИЛИ ФАЙЛА С ТЕМ ЖЕ ИМЕНЕМ, ЧТО  !
    !             ! И ВНОВЬ СОЗДАВАЕМЫЙ ФАЙЛ                   !
    ------------------------------------------------------------
 
        ФАЙЛ, СОЗДАННЫЙ ПО .ENTER НЕ  ЯВЛЯЕТСЯ  ПОСТОЯННЫМ  ДО
   ТЕХ ПОР, ПОКА НА СООТВЕТСТВУЮЩЕМ КАНАЛЕ НЕ  БУДЕТ  ВЫПОЛНЕН
   ЗАПРОС .CLOSE. ЗАПРОСЫ .LOOKUP  И  .SAVESTATUUS  НЕДЕЙСТВИ-
   ТЕЛЬНЫ ДЛЯ ФАЙЛОВ, КОТОРЫЕ НЕ ЯВЛЯЮТСЯ ПОСТОЯННЫМИ.  ОДНАКО
   ЧТЕНИЕ ТАКОГО ФАЙЛА ВОЗМОЖНО ПОСРЕДСТВОМ ОБРАЩЕНИЯ К НОМЕРУ
   СООТВЕТСТВУЮЩЕГО  БЛОКА.  ЕСЛИ  НА  СООТВЕТСТВУЮЩЕМ  КАНАЛЕ
   ВЫПОЛНЯЕТСЯ .CLOSE, ТО ЛЮБОЙ СУЩЕСТВУЮЩИЙ НА ТОМЕ  ПОСТОЯН-
   НЫЙ, НЕЗАЩИЩЕННЫЙ ФАЙЛ С ТЕМ ЖЕ ИМЕНЕМ И ТИПОМ СТИРАЕТСЯ  И
   НОВЫЙ ФАЙЛ СТАНОВИТСЯ ПОСТОЯННЫМ. ХОТЯ  ОБЛАСТЬ  ДЛЯ  ФАЙЛА
   РЕЗЕРВИРУЕТСЯ ПРИ ВЫПОЛНЕНИИ .ENTER, ФАКТИЧЕСКАЯ ДЛИНА ФАЙ-
   ЛА ОПРЕДЕЛЯЕТСЯ ПОСЛЕ ВЫПОЛНЕНИЯ .CLOSE.
        КАЖДОЕ ЗАДАНИЕ МОЖЕТ ИМЕТЬ ДО 255 ОДНОВРЕМЕННО  ОТКРЫ-
   ТЫХ ФАЙЛОВ. ЕСЛИ ТРЕБУЕТСЯ, ВСЕ 255 ФАЙЛОВ МОГУТ БЫТЬ  ОТК-
   РЫТЫ ДЛЯ ВЫВОДА ПОСРЕДСТВОМ .ENTER. ДЛЯ  ВЫПОЛНЕНИЯ  .ENTER
   НЕОБХОДИМО, ЧТОБЫ ДРАЙВЕР СООТВЕТСТВУЮЩЕГО УСТРОЙСТВА БЫЛ В
   ПАМЯТИ. ПОСЛЕ ВЫПОЛНЕНИЯ .ENTER РЕГИСТР R0 БУДЕТ  СОДЕРЖАТЬ
   РАЗМЕР ОБЛАСТИ ТОМА, ОТВЕДЕННЫЙ ДЛЯ СОЗДАНИЯ НОВОГО ФАЙЛА.
  ПРИМЕР.
 
          .TITLE  ENTER.MAC
  ;В СЛЕДУЮЩЕМ ПРИМЕРЕ С ИСПОЛЬЗОВАНИЕМ ЗАПРОСА .ENTER
  ;ВЫПОЛНЯЕТСЯ КОПИРОВАНИЕ ФАЙЛА ENTER.SAV НА УСТРОЙСТВО
  ;DK:.
 
          .MCALL  .LOOKUP,.ENTER,.WRITW,.READW,.CLOSE
          .MCALL  .PRINT,.EXIT
          ERRBYT = 52
  START:  .LOOKUP #AREA,#0,#ENTER         ;СВЯЗАТЬ 0-ОЙ КАНАЛ
                                          ;С ФАЙЛОМ ENTER.SAV
          BCS     5$
          MOV     R0,R3                   ;РАЗМЕР ФАЙЛА В R3
          .ENTER  #AREA,#1,#NEWFIL,R3     ;ОТКРЫТЬ НОВЫЙ ФАЙЛ
          BCS     6$
          CLR     BLK
  1$:     .READW  #AREA,#0,#BUFFR,#256.,BLK ;ЧИТАТЬ БЛОК
          BCC     2$
          TSTB    @#ERRBYT                ;КОНЕЦ ФАЙЛА?
          BEQ     3$                      ;ДА
          MOV     #RERR,R0
          BR      7$
  2$:     .WRITW  #AREA,#1,#BUFFR,#256.,BLK ;ЗАПИСАТЬ БЛОК
          INC     BLK
          BCC     1$
          MOV     #WERR,R0
          BR      7$
  3$:     .CLOSE  #1
          MOV     #DONE,R0
          BR      7$
  5$:     MOV     #NOFIL,R0
          BR      7$
  6$:     MOV     #NOENT,R0
  7$:     .PRINT
          .EXIT
 
  AREA:   .WORD   0
  BLK:    .WORD   0,0,0,0
  BUFFR:  .BLKW   256.
  ENTER:  .RAD50  /DK/
          .RAD50  /ENT/
          .RAD50  /ER/
          .RAD50  /SAV/
  NEWFIL: .RAD50  /DK/
          .RAD50  /NEWENT/
          .RAD50  /SAV/
 
  NOFIL:  .ASCIZ  /ФАЙЛ НЕ НАЙДЕН/
  NOENT:  .ASCIZ  /ОШИБКА .ENTER  /
  WERR:   .ASCIZ  /ОШИБКА .WRITW /
  RERR:   .ASCIZ  / ОШИБКА .READW /
  DONE:   .ASCIZ  /КОПИРОВАНИЕ ЗАВЕРШЕНО/
          .EVEN
          .END    START
  
        5.1.5. .LOOKUP
         ИСПОЛЬЗУЮТСЯ ДВЕ ФОРМЫ ЗАПРОСА .LOOKUP.  ПЕРВАЯ  ФОРМА
    .LOOKUP  СВЯЗЫВАЕТ  УКАЗАННЫЙ  КАНАЛ  С  УСТРОЙСТВОМ  И/ИЛИ
    СУЩЕСТВУЮЩИМ ФАЙЛОМ ДЛЯ ВЫПОЛНЕНИЯ  ОПЕРАЦИЙ  ВВОДА-ВЫВОДА.
    ИСПОЛЬЗУЕМЫЙ КАНАЛ БУДЕТ "ЗАНЯТ" ДО ТЕХ ПОР, ПОКА НЕ  БУДЕТ
    ВЫПОЛНЕН    ОДИН    ИЗ    СЛЕДУЮЩИХ    ЗАПРОСОВ:    .CLOSE,
    .SAVESTATUS,.SRESET,.HRESET,.PURGE,.CSIGEN   (ЕСЛИ    НОМЕР
    КАНАЛА В ДИАПОЗОНЕ ОТ 0 ДО 10 (ВОСЬМЕРИЧНОЙ).
         ЗАМЕТИМ, ЧТО ЕСЛИ ПРОГРАММА ИМЕЕТ ОВЕРЛЕЙНУЮ  СТРУКТУ-
    РУ, ТО 15-ЫЙ КАНАЛ ИСПОЛЬЗУЕТСЯ ОВЕРЛЕЙНЫМ ДРАЙВЕРОМ  И  НЕ
    ДОЛЖЕН ИЗМЕНЯТЬСЯ ПРОГРАММОЙ ПОЛЬЗОВАТЕЛЯ.
         ЕСЛИ ПЕРВОЕ  СЛОВО  ИМЕНИ  ФАЙЛА  В  БЛОКЕ  УСТРОЙСТВА
    (DBLK) СОДЕРЖИТ НУЛЬ И УСТРОЙСТВО ЕСТЬ УСТРОЙСТВО  ФАЙЛОВОЙ
    СТРУКТУРЫ, ТО АБСОЛЮТНЫЙ БЛОК 0  ЭТОГО  УСТРОЙСТВА  ОПРЕДЕ-
    ЛЯЕТСЯ КАК "НАЧАЛО ФАЙЛА" (В ЭТОМ СЛУЧАЕ ГОВОРЯТ О НЕФАЙЛО-
    ВОМ .LOOKUP). ЭТОТ МЕТОД ДОПУСКАЕТ  ВВОД-ВЫВОД  ДЛЯ  ЛЮБОГО
    ФИЗИЧЕСКОГО БЛОКА НА УСТРОЙСТВЕ. ЕСЛИ ИМЯ ФАЙЛА  ОПРЕДЕЛЕНО
    ДЛЯ УСТРОЙСТВА НЕФАЙЛОВОЙ СТРУКТУРЫ, ТО ИМЯ  ФАЙЛА  ИГНОРИ-
    РУЕТСЯ.
         ДЛЯ ВЫПОЛНЕНИЯ .LOOKUP ДРАЙВЕР  СООТВЕТСТВУЮЩЕГО  УСТ-
    РОЙСТВА ДОЛЖЕН БЫТЬ В ПАМЯТИ. ПОСЛЕ  ВЫПОЛНЕНИЯ  .LOOKUP  ,
    РЕГИСТР R0 БУДЕТ СОДЕРЖАТЬ ДЛИНУ ОТКРЫТОГО ФАЙЛА В  БЛОКАХ.
    ПОСЛЕ ВЫПОЛНЕНИЯ .LOOKUP ДЛЯ УСТРОЙСТВ НЕСПРАВОЧНОЙ  СТРУК-
    ТУРЫ, РЕГИСТР RO БУДЕТ СОДЕРЖАТЬ НОЛЬ.
         ФОРМАТ МАКРОКОМАНДЫ:
         .LOOKUP AREA,CHAN,DBLK[,SEQN]
    ГДЕ AREA - АДРЕС БЛОКА ИЗ 3-Х СЛОВ АРГУМЕНТОВ ЕМТ;
         SEQN - ПОСЛЕДОВАТЕЛЬНЫЙ НОМЕР ФАЙЛА ДЛЯ МАГНИТНОЙ ЛЕН-
    ТЫ; ЗНАЧЕНИЯ, КОТОРЫЕ МОЖЕТ ИМЕТЬ SEQN И СООТВЕТСТВУЮЩИЕ ИМ
    ДЕЙСТВИЯ МОНИТОРА ОПИСАНЫ В ТАБЛИЦЕ 8.
         ФОРМАТ БЛОКА АРГУМЕНТОВ ЕМТ:
           AREA:   .BYTE   CHAN,1
                   .WORD   DBLK
                   .WORD   SEQN
   ПРИМЕР 1.
  
          .TITLE  LOOKUP.MAC
   ;В ДАННОМ ПРИМЕРЕ, ИСПОЛЬЗУЮЩЕМ ЗАПРОС .LOOKUP,
  ;ОПРЕДЕЛЯЕТСЯ НАЛИЧИЕ НА УСТРОЙСТВЕ DK: РАБОЧЕГО
  ;ФАЙЛА, СОДЕРЖАЩЕГО ОЧЕРЕДЬ ФАЙЛОВ ДЛЯ ВЫВОДА НА
  ;УКАЗАННОЕ УСТРОЙСТВО.
  ;ЕСЛИ РАБОЧИЙ ФАЙЛ СУЩЕСТВУЕТ, ТО ЕГО РАЗМЕР
  ;(В БЛОКАХ) ПЕЧАТАЕТСЯ НА СИСТЕМНОМ ТЕРМИНАЛЕ.
           .MCALL  .LOOKUP,.PRINT,.EXIT
   START:  .LOOKUP #AREA,#0,#QUSPEC ;ОТКРЫТЬ ФАЙЛ
          BCC     1$
          .PRINT  #NOFILE         ;ФАЙЛА НЕТ
          .EXIT
   1$:     MOV     #SIZE,R1
          CALL    CNV10
          .PRINT  #BUFF
          .EXIT
 
  CNV10:  MOV     R0,-(SP)        ;ПОДПРОГРАММА
          CLR     R0              ;ПРЕОБРАЗОВАНИЯ РАЗМЕРА
  1$:     INC     R0              ;ФАЙЛА ДЛЯ ВЫВОДА НА
          SUB     #10.,@SP        ;ТЕРМИНАЛ
          BGE     1$
          ADD     #72,@SP
          DEC     R0
          BEQ     2$
          CALL    CNV10
   2$:     MOVB    (SP)+,(R1)+
          RETURN
 
  AREA:   .BLKW   3
  QUSPEC: .RAD50  /DK QUFILE/
          .RAD50  /TMP/
  BUFF:   .ASCII  /РАЗМЕР ФАЙЛА QUFILE.TMP = /
  SIZE:   .ASCIZ  /      /
  NOFILE: .ASCIZ  /НА DK: НЕТ ФАЙЛА QUFILE.TMP/
          .EVEN
 
          .END    START
 
 
                                                      ТАБЛИЦА 8
    ------------------------------------------------------------
    ! ЗНАЧЕНИЕ    !             ДЕЙСТВИЕ  МОНИТОРА             !
    ! АРГУМЕНТА   !                                            !
    !----------------------------------------------------------!
    !     -1      ! ПРОИЗВОДИТ ПОИСК ФАЙЛА С ТЕКУЩЕГО ПОЛОЖЕНИЯ!
    !             ! МАГНИТНОЙ ЛЕНТЫ                            !
    !      0      ! ПЕРЕМАТЫВАЕТ МАГНИТНУЮ ЛЕНТУ И ПРОИЗВОДИТ  !
    !             ! ПОИСК ФАЙЛА                                !
    !   N(N>0)    ! УСТАНАВЛИВАЕТ МАГНИТНУЮ ЛЕНТУ В ПОЛОЖЕНИЕ  !
    !             ! СООТВЕТСТВУЮЩЕЕ ФАЙЛУ С ПОСЛЕДОВАТЕЛЬНЫМ   !
    !             ! НОМЕРОМ N                                  !
    ------------------------------------------------------------
 
       ВТОРАЯ ФОРМА .LOOKUP СВЯЗЫВАЕТ КАНАЛ С УКАЗАННЫМ ЗАДА-
   НИЕМ ДЛЯ ОБМЕНА ИНФОРМАЦИЕЙ В РЕЖИМАХ FB И ХМ.
        ФОРМАТ МАКРОКОМАНДЫ:
        .LOOKUP AREA,CHAN,JOBDES
   ГДЕ AREA - АДРЕС БЛОКА ИЗ 2-Х СЛОВ АРГУМЕНТОВ ЕМТ;
        JOBDES - АДРЕС БЛОКА ИЗ 4-Х СЛОВ; 1-ОЕ СЛОВО  СОДЕРЖИТ
   ИМЯ ДРАЙВЕРА ОЧЕРЕДИ СООБЩЕНИЙ (MQ) В КОДАХ RADIX-50; 2,3,4
   СЛОВА СОДЕРЖАТ ЛОГИЧЕСКОЕ ИМЯ СИСТЕМНОГО  ЗАДАНИЯ  В  КОДАХ
   КОИ-7. ЕСЛИ 2-ОЕ СЛОВО СОДЕРЖИТ 0 , ТО КАНАЛ  (CHAN)  МОЖЕТ
   ИСПОЛЬЗОВАТЬСЯ ТОЛЬКО  ЗАПРОСАМИ  .READ/C/W  ДЛЯ  ПОЛУЧЕНИЯ
   СООБЩЕНИЯ ОТ ЛЮБОГО ЗАДАНИЯ.
        ФОРМАТ БЛОКА АРГУМЕНТОВ ЕМТ:
          AREA:   .BYTE   CHAN,1
                  .WORD   JOBDES
  ПРИМЕР 2.
          .TITLE  SJLOOK.MAC
  ;В ДАННОМ ПРИМЕРЕ ЗАПРОС .LOOKUP ОТКРЫВАЕТ КАНАЛ
  ;ДЛЯ СИСТЕМНОГО ЗАДАНИЯ QUEUE.REL.
  ;ПРИМЕР ВЫПОЛНЯЕТСЯ ПОД УПРАВЛЕНИЕМ МОНИТОРОВ FB
  ;ИЛИ ХМ.
  ;
 
          .MCALL  .LOOKUP,.PRINT,.EXIT,.WRITW,.READW
  START:  .LOOKUP #AREA,#0,#QMSG  ;ОТКРЫТЬ КАНАЛ ДЛЯ QUEUE
          BCC     1$
          .PRINT  #NOJOB
          .EXIT
  1$:     .WRITW  #AREA,#0,#RMSJ,#6
          BCS     2$
          .READW  #AREA,#0,#RMSJ,#6
          BCS     2$
          .PRINT  #QRUN
          .EXIT
  2$:     .PRINT  #MSGERR
          .EXIT
  AREA:   .BLKW   5
  QMSG:   .RAD50  /MQ/
          .ASCIZ  /QUEUE/
          .WORD   0,0
  RMSJ:   .WORD   0
          .ASCII  /SJLOOK/
  MSGERR: .ASCIZ  /ОШИБКА/
  NOJOB:  .ASCIZ  /QUEUE НЕ ЗАГРУЖЕНА/
  QRUN:   .ASCIZ  /QUEUE РАБОТАЕТ!/
          .EVEN
          .END    START
 
 
        5.1.6. .PURGE
        ЗАПРОС .PURGE ОСВОБОЖДАЕТ УКАЗАННЫЙ КАНАЛ ДЛЯ  ИСПОЛЬ-
   ЗОВАНИЯ В ДРУГОЙ ОПЕРАЦИИ БЕЗ ВЫПОЛНЕНИЯ КАКИХ-ЛИБО ФУНКЦИЙ
   ЗАПРОСОВ .HRESET,.SRESET,.SAVESTATUS ИЛИ .CLOSE.  ВРЕМЕННЫЙ
   ФАЙЛ ОТКРЫТЫЙ НА ЭТОМ КАНАЛЕ ПО .ENTER, АННУЛИРУЕТСЯ.  ЗАП-
   РОС .PURGE НА СВОБОДНОМ КАНАЛЕ ИГНОРИРУЕТСЯ.
        ФОРМАТ МАКРОКОМАНДЫ:
        .PURGE CHAN
        ФОРМАТ БЛОКА АРГУМЕНТОВ ЕМТ:
          AREA:   .BYTE   CHAN,3
        ПРИМЕР ИСПОЛЬЗОВАНИЯ .PURGE  СМ.  В  ОПИСАНИИ  ЗАПРОСА
   .HERR.
 
        5.1.7. .RENAME
        ЗАПРОС .RENAME ИЗМЕНЯЕТ ИМЯ ФАЙЛА (НЕДОПУСТИМ В ОПЕРА-
   ЦИЯХ С МАГНИТНОЙ ЛЕНТОЙ).
        ФОРМАТ МАКРОКОМАНДЫ:
        .RENAME AREA,CHAN,DBLK
   ГДЕ AREA - АДРЕС БЛОКА ИЗ 2-ХСЛОВ АРГУМЕНТОВ ЕМТ;
        DBLK - АДРЕС БЛОКА, СОДЕРЖАЩЕГО ИМЯ УСТРОЙСТВА  И  ИМЯ
   ФАЙЛА, КОТОРЫЕ ТРЕБУЕТСЯ ИЗМЕНИТЬ, И НОВОЕ ИМЯ УСТРОЙСТВА И
   ИМЯ ФАЙЛА В КОДАХ RADIX-50.
        ФОРМАТ БЛОКА АРГУМЕНТОВ ЕМТ:
 
          AREA:   .BYTE   CHAN,4
                  .WORD   DBLK
   НАПРИМЕР,
          .RENAME  #AREA,#7,#DXLK
          BCS  RNMERR
           .
           .
           .
   DBLK:  .RAD50 /DX1OLDFILMAC/
          .RAD50 /DX1NEWFILMAC/
 
        ЕСЛИ ФАЙЛ С ТЕМ ЖЕ ИМЕНЕМ, ЧТО И НОВОЕ, УЖЕ СУЩЕСТВУЕТ
   НА ТОМЕ, ТО ОН УДАЛЯЕТСЯ. ПОВТОРНОЕ ОПРЕДЕЛЕНИЕ ИМЕНИ  УСТ-
   РОЙСТВА DX1 В НОВОЙ СПЕЦИФИКАЦИИ ФАЙЛА НЕОБХОДИМО ДЛЯ  ПРА-
   ВИЛЬНОГО ВЫПОЛНЕНИЯ ОПЕРАЦИИ И НЕ ДОЛЖНО ОПУСКАТЬСЯ.  ПОСЛЕ
   ВЫПОЛНЕНИЯ .RENAME ИСПОЛЬЗУЕМЫЙ КАНАЛ ОСВОБОЖДАЕТСЯ. ЗАПРОС
   .RENAME ТРЕБУЕТ, ЧТОБЫ ДРАЙВЕР СООТВЕТСТВУЮЩЕГО  УСТРОЙСТВА
   БЫЛ В ПАМЯТИ ПЕРЕД ВЫПОЛНЕНИЕМ ОПЕРАЦИИ. ЗАПРОС .RENAME  НЕ
   ВЫПОЛНЯЕТСЯ ДЛЯ ЗАЩИЩЕННЫХ ФАЙЛОВ.
  ПРИМЕР.
          .TITLE  RENAME.MAC
  ;В ДАННОМ ПРИМЕРЕ ЗАПРОС .RENAME ИСПОЛЬЗУЕТСЯ
  ;ДЛЯ ИЗМЕНЕНИЯ ИМЕНИ ФАЙЛА.
          .MCALL  .CSISPC,.RENAME,.FETCH,.PRINT,.SRESET,.EXIT
          ERRBYT = 52
  START:  .CSISPC #FILESP,#DEFEXT ;ВВОД КОМАНДНОЙ СТРОКИ
          .FETCH  #DRVLOD,#FILESP ;ЗАГРУЗИТЬ ДРАЙВЕР
          BCS     2$
          MOV     #FILESP,R2
          MOV     #FILESP+46,R3
          MOV     @R2,#FILESP+36
          .REPT   4
          MOV     (R2)+,(R3)+
          .ENDR
          .RENAME #AREA,#0,#FILESP+36 ;ПЕРЕИМЕНОВАТЬ ФАЙЛ
          BCC     1$
          DECB    @#ERRBYT        ;АНАЛИЗ ОШИБКИ
          BEQ     3$
          MOV     #ILLOP,R0
          BR      4$
  1$:     .SRESET
          .EXIT
 
  2$:     MOV     #FERR,R0
          BR      4$
  3$:     MOV     #NOFIL,R0
  4$:     .PRINT
          BR      1$
 
  AREA:   .BLKW   5
  DEFEXT: .WORD   0,0,0,0
  NOFIL:  .ASCIZ  /ФАЙЛ НЕ НАЙДЕН/
  ILLOP:  .ASCIZ  /НЕДОПУСТИМАЯ ОПЕРАЦИЯ/
  FERR:   .ASCIZ  /ОШИБКА .FETCH/
          .EVEN
  FILESP: .BLKW   39.*2
  DRVLOD  =.
          .END    START
 
 
        5.1.8. .REOPEN
        ЗАПРОС .REOPEN ПОВТОРНО СВЯЗЫВАЕТ  УКАЗАННЫЙ  КАНАЛ  С
   ФАЙЛОМ, ДЛЯ КОТОРОГО БЫЛ ВЫПОЛНЕН ЗАПРОС .SAVESTATUS.  СОВ-
   МЕСТНОЕ ИСПОЛЬЗОВАНИЕ ЗАПРОСОВ .SAVESTATUS И  .REOPEN  ТРЕ-
   БУЕТСЯ ДЛЯ ОДНОВРЕМЕННОГО ОБРАЩЕНИЯ К БОЛЬШОМУ  ЧИСЛУ  ФАЙ-
   ЛОВ. ФАЙЛЫ ОТКРЫВАЮТСЯ ПО .LOOKUP И ПАРАМЕТРЫ ИХ  СОСТОЯНИЯ
   ЗАПОМИНАЮТСЯ ПО .SAVESTATUS. КОГДА ТРЕБУЮТСЯ ДАННЫЕ ИЗ ФАЙ-
   ЛА, .REOPEN ОБЕСПЕЧИВАЕТ ПРОГРАММЕ ВОЗМОЖНОСТЬ ЧТЕНИЯ  ЭТИХ
   ДАННЫХ. НЕ ЯВЛЯЕТСЯ ОБЯЗАТЕЛЬНЫМ ВЫПОЛНЕНИЕ .REOPEN НА  ТОМ
   ЖЕ КАНАЛЕ, НА КОТОРОМ БЫЛИ ВЫПОЛНЕНЫ .LOOKUP И .SAVESTATUS.
        ФОРМАТ МАКРОКОМАНДЫ:
        .REOPEN AREA,CHAN,CBLK
   ГДЕ AREA - АДРЕС БЛОКА ИЗ 2-Х СЛОВ АРГУМЕНТОВ ЕМТ;
        CBLK - АДРЕС БЛОКА  ИЗ  5-ТИ  СЛОВ,  ГДЕ  ЗАПОМИНАЕТСЯ
   ИНФОРМАЦИЯ О СОСТОЯНИИ КАНАЛА.
        ФОРМАТ БЛОКА АРГУМЕНТОВ ЕМТ:
          AREA:   .BYTE   CHAN,6
                  .WORD   CBLK
        ПРИМЕР СМ. В ОПИСАНИИ ЗАПРОСА .SAVESTATUS.
 
        5.1.9. .SAVESTATUS
        ЗАПРОС .SAVESTATUS ЗАПОМИНАЕТ ПЯТЬ СЛОВ  ИНФОРМАЦИИ  О
   СОСТОЯНИИ КАНАЛА В УКАЗАННОЙ ПОЛЬЗОВАТЕЛЕМ ОБЛАСТИ  ПАМЯТИ.
   ЭТИ СЛОВА СОДЕРЖАТ  ПОЛНУЮ  ИНФОРМАЦИЮ,  КОТОРАЯ  ТРЕБУЕТСЯ
   ОПЕРАЦИОННОЙ СИСТЕМЕ ДЛЯ ТОЧНОГО ОПРЕДЕЛЕНИЯ  ФАЙЛА.  ПОСЛЕ
   ВЫПОЛНЕНИЯ .SAVESTATUS УКАЗАННЫЙ КАНАЛ ОСВОБОЖДАЕТСЯ.  ЕСЛИ
   НЕОБХОДИМО ПОЛУЧИТЬ ДАННЫЕ ПО ЭТОМУ КАНАЛУ, ТО ИСПОЛЬЗУЕТСЯ
   ЗАПРОС .REOPEN. ЗАПРОС .SAVESTATUS МОЖЕТ  ИСПОЛЬЗОВАТЬСЯ  В
   ТОМ СЛУЧАЕ, ЕСЛИ ФАЙЛ  БЫЛ  ОТКРЫТ  ПО  .LOOKUP.  ЕСЛИ  БЫЛ
   ИСПОЛЬЗОВАН .ENTER, ТО .SAVESTATUS ИГНОРИРУЕТСЯ  И  ГЕНЕРИ-
   РУЕТСЯ ОШИБКА. ЗАПРОС .SAVESTATUS НЕДОПУСТИМ В ОПЕРАЦИЯХ  С
   ФАЙЛАМИ, КОТОРЫЕ НАХОДЯТСЯ НА МАГНИТНОЙ ЛЕНТЕ.
        ЗАПРОСЫ .SAVESTATUS И .REOPEN ИСПОЛЬЗУЮТСЯ ДЛЯ  РАБОТЫ
   С БОЛЬШИМ ЧИСЛОМ ФАЙЛОВ ПРИ ОГРАНИЧЕННОМ ЧИСЛЕ КАНАЛОВ.
        ФОРМАТ МАКРОКОМАНДЫ:
        .SAVESTATUS AREA,CHAN,CBLK
   ГДЕ AREA - АДРЕС БЛОКА ИЗ 2-Х СЛОВ АРГУМЕНТОВ ЕМТ;
        CBLK - АДРЕС БЛОКА ИЗ 5-ТИ СЛОВ, В КОТОРЫЙ БУДЕТ ЗАПИ-
   САНА ИНФОРМАЦИЯ О СОСТОЯНИИ КАНАЛА; АДРЕС ДОЛЖЕН БЫТЬ  УКА-
   ЗАН В ПРЕДЕЛАХ ПРОГРАММЫ ПОЛЬЗОВАТЕЛЯ. (СМ. ПРИЛОЖЕНИЕ 2).
        ФОРМАТ БЛОКА АРГУМЕНТОВ ЕМТ:
          AREA:   .BYTE   CHAN,5
                  .WORD   CBLK
 
  ПРИМЕР.
          .TITLE  SAVEST.MAC
          .MCALL  .CSIGEN,.SAVESTATUS,.READW,.WRITW,.PRINT
          .MCALL  .PURGE,.REOPEN,.CLOSE,.EXIT
          ERRBYT = 52
  START:  .CSIGEN #DSPACE,#DEFEXT ;ВВОД КОМАНДНОЙ СТРОКИ
          MOV     #3,R4           ;ВХОДНОЙ КАНАЛ
          MOV     #AREA,R3        ;УКАЗАТЕЛЬ НА БЛОК
                                  ;СОСТОЯНИЯ КАНАЛА
          MOV     #SAVBLK,R5
  1$:     .SAVEST R3,R4,R5        ;СОХРАНИТЬ ИНФОРМАЦИЮ
                                  ;О КАНАЛЕ
          BCS     2$
          ADD     #12,R5          ;УКАЗАТЕЛЬ НА СЛЕДУЮЩИЙ
                                  ;БЛОК ИНФОРМАЦИИ
          INC     R4
          CMP     #8.,R4          ;ВХОДНЫЕ ФАЙЛЫ ВСЕ?
          BGE     1$              ;НЕТ
  2$:     MOV     #SAVBLK,R5
          BEQ     7$
  4$:     .REOPEN R3,#3,R5        ;ПОВТОРНО ИСПОЛЬЗОВАТЬ
                                  ;КАНАЛ 3
          CLR     BLK
  5$:     .READW  R3,#3,#BUFF,#256.,BLK ;ЧИТАТЬ БЛОК
          BCC     6$
          TSTB    @#ERRBYT        ;КОНЕЦ ФАЙЛА?
 
          BNE     8$
          .PURGE  #3              ;ОСВОБОДИТЬ КАНАЛ
          ADD     #12,R5
          TST     @R5             ;ПОСЛЕДНИЙ ФАЙЛ?
          BNE     4$
          .CLOSE  #0              ;ЗАКРЫТЬ ВЫХ.КАНАЛ
          .PRINT  #DONE
          .EXIT
 
  6$:     .WRITW  R3,#0,#BUFF,#256.,WBLK ;ЗАПИСАТЬ БЛОК
          INC     WBLK
          INC     BLK
          BCC     5$
          MOV     #WERR,R0
          BR      9$
  7$:     MOV     #NOIMP,R0
          BR      9$
  8$:     MOV     #RERR,R0
  9$:     .PRINT
          .EXIT
 
  AREA:   .BLKW   5
  BLK:    .WORD   0
  WBLK:   .WORD   0
  SAVBLK: .BLKW   30.
  DEFEXT: .WORD   0,0,0,0
  NOIMP:  .ASCIZ  /НЕТ БОЛЬШЕ ВХОДНЫХ ФАЙЛОВ/
  WERR:   .ASCIZ  /ОШИБКА ЗАПИСИ/
  RERR:   .ASCIZ  /ОШИБКА ЧТЕНИЯ/
  DONE:   .ASCIZ  /КОНЕЦ ПРОГРАММЫ/
          .EVEN
  BUFF:   .BLKW   256.
  DSPACE  =.
 
          .END    START
 
        5.2. ПРОГРАММНЫЕ  ЗАПРОСЫ  ДЛЯ   ОРГАНИЗАЦИИ
             ВВОДА-ВЫВОДА ДАННЫХ
 
        5.2.1. .READ,.READC,.READW
        СИСТЕМА RT11 ПРЕДУСМАТРИВАЕТ ТРИ РЕЖИМА  ВЫПОЛНЕНИЯ
   ОПЕРАЦИЙ ВВОДА-ВЫВОДА:
                    .READ /.WRITE
                    .READC/.WRITC
                    .READW/.WRITW
        ПРИ ИСПОЛЬЗОВАНИИ ЗАПРОСОВ .READ И .READC ДОЛЖНЫ  БЫТЬ
   ОПРЕДЕЛЕНЫ  ДОПОЛНИТЕЛЬНЫЕ  ЭЛЕМЕНТЫ  ДЛЯ  ОЧЕРЕДИ   ВВОДА-
   ВЫВОДА.
        ЕСЛИ ЗАПРОСЫ READ/C/W ИСПОЛЬЗУЮТСЯ ДЛЯ ОБМЕНА ИНФОРМА-
   ЦИЕЙ МЕЖДУ ЗАДАНИЯМИ, ТО РАЗМЕР БУФЕРА (BUF) ДОЛЖЕН НА ОДНО
   СЛОВО ПРЕВЫШАТЬ ЧИСЛО СЛОВ ДЛЯ ЧТЕНИЯ  (WCNT)  Т.К.  ПЕРВОЕ
   СЛОВО БУФЕРА (BUF) БУДЕТ СОДЕРЖАТЬ ДЕЙСТВИТЕЛЬНОЕ КОЛИЧЕСТ-
   ВО ПЕРЕДАННЫХ СЛОВ.
        ЗАПРОС .READ ИСПОЛЬЗУЕТСЯ ДЛЯ  ПЕРЕДАЧИ  ОПРЕДЕЛЕННОГО
   КОЛИЧЕСТВА СЛОВ ПО УКАЗАННОМУ КАНАЛУ В БУФЕР ПАМЯТИ. УПРАВ-
   ЛЕНИЕ ПЕРЕДАЕТСЯ ПРОГРАММЕ  ПОЛЬЗОВАТЕЛЯ  НЕМЕДЛЕННО  ПОСЛЕ
   НАЧАЛА ВЫПОЛНЕНИЯ ЗАПРОСА .READ. ПОСЛЕ ЗАВЕРШЕНИЯ  ПЕРЕДАЧИ
   ДАННЫХ НИКАКИХ ДЕЙСТВИЙ НЕ ПРОИСХОДИТ.
 
        ФОРМАТ МАКРОКОМАНДЫ:
        .READ AREA,CHAN,BUF,WCNT,BLK
   ГДЕ AREA - АДРЕС БЛОКА ИЗ 5-ТИ СЛОВ АРГУМЕНТОВ ЕМТ;
        BUF - АДРЕС БУФЕРА ДЛЯ ЧТЕНИЯ ДАННЫХ;
        WCNT - КОЛИЧЕСТВО СЛОВ ДЛЯ ЧТЕНИЯ;
        BLK -  НОМЕР  БЛОКА  ДЛЯ  ОПЕРАЦИИ  ЧТЕНИЯ;  ЕСЛИ  БЫЛ
   ИСПОЛЬЗОВАН ФАЙЛОВЫЙ .LOOKUP, TO BLK - НОМЕР БЛОКА  ОТНОСИ-
   ТЕЛЬНО  НАЧАЛА  ФАЙЛА;  ЕСЛИ  БЫЛ  ИСПОЛЬЗОВАН   НЕФАЙЛОВЫЙ
   .LOOKUP, TO BLK - АБСОЛЮТНЫЙ НОМЕР БЛОКА УСТРОЙСТВА;  ПРОГ-
   РАММА ПОЛЬЗОВАТЕЛЯ ДОЛЖНА МОДИФИЦИРОВАТЬ BLK ПЕРЕД ЕГО ПОВ-
   ТОРНЫМ ИСПОЛЬЗОВАНИЕМ.
        ФОРМАТ БЛОКА АРГУМЕНТОВ ЕМТ:
          AREA:   .BYTE   CHAN,10
                  .WORD   BLK
                  .WORD   BUF
                  .WORD   WCNT
                  .WORD   1
  ПРИМЕР.
          .TITLE  READ.MAC
  ;ПРИМЕР ИСПОЛЬЗОВАНИЯ ЗАПРОСОВ .READ,.WRITE.
          .MCALL  .READ,.WRITE,.CLOSE,.PRINT,.CSIGEN
          .MCALL  .WAIT,.SRESET,.EXIT
          ERRBYT = 52
          .ENABL  LSB
  START:  .CSIGEN #DSPACE,#DEFEXT ;ВВОД КОМАНДНОЙ СТРОКИ
          MOV     #AREA,R5
          CLR     IOBLK
  1$:     .READ   R5,#3   ;ЧИТАТЬ С 0-ГО БЛОКА
          BCS     6$      ;ОШИБКА ЧТЕНИЯ
          ;       .
          BIT     #1,IOBLK
          BNE     2$
          .PRINT  #MES
          ;       .
  2$:     .WAIT   #3      ;ЖДАТЬ ЗАВЕРШЕНИЯ ОПЕРАЦИИ
          BCS     5$
          .WRITE  R5,#0   ;ЗАПИСАТЬ БЛОК
          BCS     3$
          INC     IOBLK
          ;       .
          .WAIT   #0      ;ЖДАТЬ ЗАВЕРШЕНИЯ ОПЕРАЦИИ
          BCC     1$
  3$:     MOV     #WERR,R0
  4$:     .PRINT
          BR      7$
  5$:     MOV     #RERR,R0
          BR      4$
  6$:     TSTB    @#ERRBYT
          BNE     5$
          .PRINT  #MES1
          .CLOSE  #0
  7$:     .SRESET         ;УДАЛИТЬ ЗАГРУЖЕННЫЙ ДРАЙВЕР
          .EXIT
  AREA:   .WORD   0
  IOBLK:  .WORD   0
          .WORD   BUFF
          .WORD   256.
          .WORD   0
  BUFF:   .BLKW   256.
  DEFEXT: .WORD   0,0,0,0
  MES1:   .ASCIZ  /ОПЕРАЦИЯ ВВОДА-ВЫВОДА ЗАВЕРШЕНА/
  MES:    .ASCIZ  <15><12>/ВЫПОЛНЕНИЕ ПРОГРАММЫ ПРОДОЛЖАЕТСЯ/
  WERR:   .ASCIZ  /ОШИБКА .WRITE/
  RERR:   .ASCIZ  /ОШИБКА .READ/
          .EVEN
  DSPACE  =.
 
          .END    START
 
        ЕСЛИ ВВОД ВЫПОЛНЯЕТСЯ С ТЕРМИНАЛА И BLK=0, ТО НА  ТЕР-
   МИНАЛЕ ПЕЧАТАЕТСЯ "^" (КОД 136).
        КОГДА ПРОГРАММЕ ПОЛЬЗОВАТЕЛЯ  НУЖНО  ВЫПОЛНИТЬ  ЧТЕНИЕ
   ДАННЫХ, МОЖЕТ БЫТЬ ИСПОЛЬЗОВАН ЗАПРОС .WAIT.  ЭТО  ГАРАНТИ-
   РУЕТ ТО, ЧТО ДАННЫЕ БУДУТ ПРОЧИТАНЫ ПОЛНОСТЬЮ. ЕСЛИ ВО ВРЕ-
   МЯ ПЕРЕДАЧИ ДАННЫХ ПРОИЗОШЛА ОШИБКА, ЗАПРОС .WAIT  СООБЩАЕТ
   О НЕЙ.
        ЗАПРОС .READC ПЕРЕДАЕТ ОПРЕДЕЛЕННОЕ КОЛИЧЕСТВО СЛОВ ПО
   УКАЗАННОМУ КАНАЛУ В ПАМЯТЬ. УПРАВЛЕНИЕ ПРОГРАММЕ  ПОЛЬЗОВА-
   ТЕЛЯ БУДЕТ ПЕРЕДАНО СРАЗУ ПОСЛЕ НАЧАЛА  ВЫПОЛНЕНИЯ  .READC.
   ПОПЫТКА ЧТЕНИЯ ДАННЫХ ПОСЛЕ КОНЦА ФАЙЛА  ВЫЗЫВАЕТ  ПЕРЕДАЧУ
   УПРАВЛЕНИЯ ВЫЗЫВАЮЩЕЙ ПРОГРАММЕ С УСТАНОВЛЕНИЕМ С-РАЗРЯДА И
   ЗАПИСЬЮ НУЛЯ В  БАЙТ  ОШИБОК  (52-БАЙТ).  ПОСЛЕ  ВЫПОЛНЕНИЯ
   .READC УПРАВЛЕНИЕ БУДЕТ ПЕРЕДАНО  ПОДПРОГРАММЕ  ЗАВЕРШЕНИЯ,
   АДРЕС КОТОРЫЙ УКАЗАН В ЗАПРОСЕ. ЕСЛИ В ПОДПРОГРАММЕ  ЗАВЕР-
   ШЕНИЯ ВЫПОЛНЯЕТСЯ КОМАНДА RTS PC, ТО УПРАВЛЕНИЕ ВОЗВРАЩАЕТ-
   СЯ ПРОГРАММЕ ПОЛЬЗОВАТЕЛЯ.
        ФОРМАТ МАКРОКОМАНДЫ:
        .READC AREA,CHAN,BUF,WCNT,CRTN,BLK
   ГДЕ AREA - АДРЕС БЛОКА ИЗ 5-ТИ СЛОВ АРГУМЕНТОВ ЕМТ;
        BUF - АДРЕС БУФЕРА ДЛЯ ЧТЕНИЯ ДАННЫХ;
        WCNT - КОЛИЧЕСТВО СЛОВ ДЛЯ ЧТЕНИЯ;
        CRTN - АДРЕС  ПОДПРОГРАММЫ  ЗАВЕРШЕНИЯ  (АДРЕС  ДОЛЖЕН
   БЫТЬ БОЛЬШЕ 500 (ВОСЬМЕРИЧНОЙ));
        BLK - СМ. ЗАПРОС .READ
        ФОРМАТ БЛОКА АРГУМЕНТОВ ЕМТ:
          AREA:   .BYTE   CHAN,10
                  .WORD   BLK
                  .WORD   BUF
                  .WORD   WCNT
                  .WORD   CRTN
        ПРИ ЗАПУСКЕ ПОДПРОГРАММЫ ЗАВЕРШЕНИЯ  СПРАВЕДЛИВО  СЛЕ-
   ДУЮЩЕЕ:
        1) РЕГИСТР R0 СОДЕРЖИТ СЛОВО СОСТОЯНИЯ КАНАЛА; ЕСЛИ  В
   R0 УСТАНОВЛЕН РАЗРЯД 0, ТО ПРОИЗОШЛА АППАРАТНАЯ  ОШИБКА  ВО
   ВРЕМЯ ПЕРЕДАЧИ ДАННЫХ;
        2) РЕГИСТР R1 СОДЕРЖИТ НОМЕР КАНАЛА ДЛЯ ОПЕРАЦИИ;  ЭТА
   ИНФОРМАЦИЯ НЕОБХОДИМА, КОГДА  ОДНА  И  ТА  ЖЕ  ПОДПРОГРАММА
   ЗАВЕРШЕНИЯ ИСПОЛЬЗУЕТСЯ В НЕСКОЛЬКИХ ОПЕРАЦИЯХ.
  ПРИМЕР.
          .TITLE  READC.MAC
  ;ПРИМЕР ИСПОЛЬЗОВАНИЯ ЗАПРОСОВ .READC,.WRITC.
          .MCALL  .READC,.WRITC,.CSIGEN,.PRINT
          .MCALL  .CLOSE,.WAIT,.SRESET,.EXIT
          ERRBYT  = 52
          .ENABL  LSB
  START:  .CSIGEN #DSPACE,#DEFEXT ;ВВОД КОМАНДНОЙ СТРОКИ
          CALL    IOXFER          
          .PRINT  #MES
          MOV     #-1,R5
  1$:     DEC     R5
          BNE     1$
          TSTB    EOF
          BEQ     1$              ;0 - ОШИБКА ЗАПИСИ
          BLT     RERR            ;<0- ОШИБКА ЧТЕНИЯ
          .CLOSE  #0              ;>0- КОНЕЦ ФАЙЛА
          MOV     #DONE,R0
          BR      EXIT
  WERR:   MOV     #WRERR,R0
          BR      EXIT
  RERR:   MOV     #RDERR,R0
  EXIT:   .PRINT
          .SRESET                 ;УДАЛИТЬ ЗАГРУЖЕННЫЕ
                                  ;ДРАЙВЕРЫ
          .EXIT
 
  WRDONE: .WAIT   #0
          BCS     3$
  IOXFER: .READC  #AREA,#3,,,#4$  ;ЧИТАТЬ БЛОК
          BCC     7$
          TSTB    @#ERRBYT        ;КОНЕЦ ФАЙЛА?
          BEQ     6$              ;ДА
  2$:     DECB    EOF
  3$:     DECB    EOF
          RETURN
  4$:     .WAIT   #3
          BCS     2$
          .WRITC  #AREA,#0,,,#WRDONE;ЗАПИСАТЬ БЛОК
          BCS     3$
  5$:     INC     BLOK
          RETURN
  6$:     INCB    EOF
  7$:     RETURN
 
  AREA:   .WORD   0       ;БЛОК АРГУМЕНТОВ ЕМТ
  BLOK:   .WORD   0       ;НОМЕР БЛОКА
          .WORD   BUFF    ;АДРЕС БУФЕРА
          .WORD   256.    ;СЧЕТЧИК СЛОВ
          .WORD   0       ;АДРЕС ПОДПРОГРАММЫ ЗАВЕРШЕНИЯ
  BUFF:   .BLKW   256.
  DEFEXT: .WORD   0,0,0,0
  DONE:   .ASCIZ  /КОНЕЦ ПРОГРАММЫ/
  MES:    .ASCIZ  /ВЫПОЛНЕНИЕ ПРОГРАММЫ ПРОДОЛЖАЕТСЯ/
  WRERR:  .ASCIZ  /ОШИБКА .WRITC/
  RDERR:  .ASCIZ  /ОШИБКА .READC/
  EOF:    .BYTE   0
          .EVEN
  DSPACE  =.
          
          .END    START
 
        ЗАПРОС .READW ПЕРЕДАЕТ ОПРЕДЕЛЕНННОЕ  КОЛИЧЕСТВО  СЛОВ
   ПО УКАЗАННОМУ КАНАЛУ В ПАМЯТЬ. УПРАВЛЕНИЕ ПЕРЕДАЕТСЯ  ПРОГ-
   РАММЕ ПОЛЬЗОВАТЕЛЯ ПОСЛЕ ВЫПОЛНЕНИЯ ЗАПРОСА .READW ИЛИ  ПРИ
   ОБНАРУЖЕНИИ ОШИБКИ.
        ФОРМАТ МАКРОКОМАНДЫ:
        .READW AREA,CHAN,BUF,WCNT,BLK
   ГДЕ AREA - АДРЕС БЛОКА ИЗ 5-ТИ СЛОВ АРГУМЕНТОВ ЕМТ;
        WCNT - КОЛИЧЕСТВО СЛОВ ДЛЯ ЧТЕНИЯ (КАЖДЫЙ ЗАПРОС МОЖЕТ
   ПЕРЕДАТЬ МАКСИМАЛЬНО 32К СЛОВ);
        BLK - СМ. ЗАПРОС .READ
        ФОРМАТ БЛОКА АРГУМЕНТОВ ЕМТ:
          AREA:   .BYTE   CHAN,10
                  .WORD   BLK
                  .WORD   BUF
                  .WORD   WCNT
                  .WORD   0
        ЕСЛИ ПОСЛЕ  ЗАВЕРШЕНИЯ  ЗАПРОСА  БУДЕТ  УСТАНОВЛЕН  С-
   РАЗРЯД, ТО ЭТО УКАЗЫВАЕТ НА ТО,  ЧТО  НА  КАНАЛЕ  ПРОИЗОШЛА
   АППАРАТНАЯ ОШИБКА. ЕСЛИ ОШИБКИ НЕ БЫЛО, ТО ДАННЫЕ НАХОДЯТСЯ
   В ПАМЯТИ, НАЧИНАЯ С УКАЗАННОГО АДРЕСА. В РЕЖИМЕ FB ОДНО  ИЗ
   ЗАДАНИЙ МОЖЕТ ВЫПОЛНЯТЬСЯ В ТО  ВРЕМЯ  КАК  ДРУГОЕ  ЗАДАНИЕ
   ОЖИДАЕТ ЗАВЕРШЕНИЯ ОПЕРАЦИИ.
  ПРИМЕР.
 
          .TITLE  READW.MAC
  ;ПРИМЕР ИСПОЛЬЗОВАНИЯ ЗАПРОСОВ .READW,.WRITW.
          .MCALL  .CSIGEN,.READW,.WRITW,.PRINT,.CLOSE
          .MCALL  .SRESET,.EXIT
 
          ERRBYT = 52
 
  START:  .CSIGEN #DSPACE,#DEFEXT
          CLR     IOBLK
          MOV     #AREA,R5
  READ:   .READW  R5,#3
          BCC     2$
          TSTB    @#ERRBYT
          BEQ     3$
          MOV     #RERR,R0
  1$:     .PRINT
          BR      4$
  2$:     .WRITW  R5,#0
          INC     IOBLK
          BCC     READ
          MOV     #WERR,R0
          BR      1$
  3$:     .CLOSE  #0
          .PRINT  #DONE
  4$:     .SRESET
          .EXIT
 
  DEFEXT: .WORD   0,0,0,0
  AREA:   .WORD   0
  IOBLK:  .WORD   0
          .WORD   BUFF
          .WORD   256.
          .WORD   0
  BUFF:   .BLKW   256.
  RERR:   .ASCIZ  /ОШИБКА .READW/
  WERR:   .ASCIZ  /ОШИБКА .WRITW/
  DONE:   .ASCIZ  /КОНЕЦ ПРОГРАММЫ/
          .EVEN
  DSPACE  =.
 
          .END    START
 
        5.2.2. .WRITE,.WRITC,.WRITW
        ПРИ ИСПОЛЬЗОВАНИИ ЗАПРОСОВ .WRITE И .WRITC ДОЛЖНЫ БЫТЬ
   ОПРЕДЕЛЕНЫ  ДОПОЛНИТЕЛЬНЫЕ  ЭЛЕМЕНТЫ  ДЛЯ  ОЧЕРЕДИ   ВВОДА-
   ВЫВОДА.
        ЗАПРОС .WRITE ПЕРЕДАЕТ УКАЗАННОЕ  КОЛИЧЕСТВО  СЛОВ  ИЗ
   ПАМЯТИ ПО УКАЗАННОМУ КАНАЛУ. УПРАВЛЕНИЕ ПРОГРАММЕ ПОЛЬЗОВА-
   ТЕЛЯ ПЕРЕДАЕТСЯ СРАЗУ ЖЕ ПОСЛЕ ТОГО, КАК ЗАПРОС БУДЕТ  ПОС-
   ТАВЛЕН В ОЧЕРЕДЬ.
        ФОРМАТ МАКРОКОМАНДЫ:
        .WRITE AREA,CHAN,BUF,WCNT,BLK
   ГДЕ AREA - АДРЕС БЛОКА ИЗ 5-ТИ СЛОВ АРГУМЕНТОВ ЕМТ;
        BUF - АДРЕС БУФЕРА ПАМЯТИ,  КОТОРЫЙ  ИСПОЛЬЗУЕТСЯ  ДЛЯ
   ВЫВОДА;
        WCNT - КОЛИЧЕСТВО СЛОВ ДЛЯ ЗАПИСИ;
        BLK - НОМЕР БЛОКА ДЛЯ ОПЕРАЦИИ  ЗАПИСИ;  ЕСЛИ  ИСПОЛЬ-
   ЗУЕТСЯ ФАЙЛОВЫЙ .LOOKUP ИЛИ .ENTER, TO BLK  -  НОМЕР  БЛОКА
   ОТНОСИТЕЛЬНО НАЧАЛА ФАЙЛА; ЕСЛИ БЫЛ ИСПОЛЬЗОВАН  НЕФАЙЛОВЫЙ
   .LOOKUP ИЛИ .ENTER, ТО BLK - АБСОЛЮТНЫЙ  НОМЕР  БЛОКА  УСТ-
   РОЙСТВА; ПРОГРАММА ПОЛЬЗОВАТЕЛЯ ДОЛЖНА  МОДИФИЦИРОВАТЬ  BLK
   ПЕРЕД ЕГО ПОВТОРНЫМ ИСПОЛЬЗОВАНИЕМ.
        ФОРМАТ БЛОКА АРГУМЕНТОВ ЕМТ:
          AREA:   .BYTE   CHAN,11
                  .WORD   BLK
                  .WORD   BUF
                  .WORD   WCNT
                  .WORD   1
        ЗАПРОС .WRITC ПЕРЕДАЕТ  ЗАДАННОЕ  КОЛИЧЕСТВО  СЛОВ  ИЗ
   ПАМЯТИ ПО УКАЗАННОМУ КАНАЛУ. УПРАВЛЕНИЕ ПЕРЕДАЕТСЯ ПРОГРАМ-
   МЕ ПОЛЬЗОВАТЕЛЯ НЕМЕДЛЕННО ПОСЛЕ НАЧАЛА ВЫПОЛНЕНИЯ  .WRITC.
   ПОСЛЕ ВЫПОЛНЕНИЯ ЗАПРОСОВ, УПРАВЛЕНИЕ БУДЕТ ПЕРЕДАНО  ПОДП-
   РОГРАММЕ ЗАВЕРШЕНИЯ. ПО КОМАНДЕ RTS PC  УПРАВЛЕНИЕ  ВОЗВРА-
   ШАЕТСЯ ПРОГРАММЕ ПОЛЬЗОВАТЕЛЯ.
        ФОРМАТ МАКРОКОМАНДЫ:
        .WRITC AREA,CHAN,BUF,WCNT,CRTN,BLK
   ГДЕ AREA - АДРЕС БЛОКА ИЗ 5-ТИ СЛОВ АРГУМЕНТОВ ЕМТ;
        BUF - АДРЕС БУФЕРА ПАМЯТИ,  КОТОРЫЙ  ИСПОЛЬЗУЕТСЯ  ДЛЯ
   ВЫВОДА;
        WCNT - КОЛИЧЕСТВО СЛОВ ДЛЯ ЗАПИСИ;
        CRTN - АДРЕС ПОДПРОГРАММЫ ЗАВЕРШЕНИЯ;
        BLK - СМ. ЗАПРОС .WRITE
        ФОРМАТ БЛОКА АРГУМЕНТОВ ЕМТ:
          AREA:   .BYTE   CHAN,11
                  .WORD   BLK
                  .WORD   BUF
                  .WORD   WCNT
                  .WORD   CRTN
 
        ЗАПРОС .WRITW ПЕРЕДАЕТ  ЗАДАННОЕ  КОЛИЧЕСТВО  СЛОВ  ИЗ
   ПАМЯТИ ПО УКАЗАННОМУ КАНАЛУ. УПРАВЛЕНИЕ ПЕРЕДАЕТСЯ ПРОГРАМ-
   МЕ ПОЛЬЗОВАТЕЛЯ ПОСЛЕ ЗАВЕРШЕНИЯ .WRITW.
        ФОРМАТ МАКРОКОМАНДЫ:
        .WRITW AREA,CHAN,BUF,WCNT,BLK
   ГДЕ AREA - АДРЕС БЛОКА ИЗ 5-ТИ СЛОВ АРГУМЕНТОВ ЕМТ;
        BUF - АДРЕС БУФЕРА, КОТОРЫЙ ИСПОЛЬЗУЕТСЯ ДЛЯ ВЫВОДА;
        WCNT - КОЛИЧЕСТВО СЛОВ ДЛЯ ЗАПИСИ;
        BLK - СМ. ЗАПРОС .WRITE.
        ФОРМАТ БЛОКА АРГУМЕНТОВ ЕМТ:
          AREA:   .BYTE   CHAN,10
                  .WORD   BLK
                  .WORD   BUF
                  .WORD   WCNT
                  .WORD   0
 
        5.2.3. .RCVD,.RCVDC,.RCVDW (РЕЖИМ FB,ХМ)
        СУЩЕСТВУЮТ ТРИ ФОРМЫ ЗАПРОСА ПОЛУЧЕНИЯ ДАННЫХ, КОТОРЫЕ
   ИСПОЛЬЗУЮТСЯ ВМЕСТЕ С ЗАПРОСАМИ .SDAT. ЗАПРОСЫ .RCVD АНАЛО-
   ГИЧНЫ ЗАПРОСАМ .READ, НО  В  ОТЛИЧИИ  ОТ  НИХ  ОСУЩЕСТВЛЯЮТ
   ПРИЕМ ДАННЫХ ИЗ ДРУГОЙ ПРОГРАММЫ, А НЕ  С  УСТРОЙСТВА.  ПРИ
   ИСПОЛЬЗОВАНИИ ЗАПРОСОВ .RCVD И .RCVDC ДОЛЖНЫ БЫТЬ ОПРЕДЕЛЕ-
   НЫ ДОПОЛНИТЕЛЬНЫЕ ЭЛЕМЕНТЫ ДЛЯ ОЧЕРЕДИ ВВОДА-ВЫВОДА.
        ЗАПРОС .RCVD ИСПОЛЬЗУЕТСЯ  ДЛЯ  ПОЛУЧЕНИЯ  ДАННЫХ  ИЛИ
   СООБЩЕНИЙ, ПОСЫЛАЕМЫХ ДРУГОЙ ПРОГРАММОЙ.  УПРАВЛЕНИЕ  ВЫЗЫ-
   ВАЮЩЕЙ ПРОГРАММЕ ПЕРЕДАЕТСЯ СРАЗУ ЖЕ ПОСЛЕ НАЧАЛА  ВЫПОЛНЕ-
   НИЯ ЗАПРОСА .RCVD. ПРИ НЕОБХОДИМОСТИ, С .RCVD  ИСПОЛЬЗУЕТСЯ
   ЗАПРОС .MWAIT, КОТОРЫЙ ЗАДЕРЖИВАЕТ ВЫПОЛНЕНИЕ ПРОГРАММЫ  ДО
   ОКОНЧАНИЯ ОПЕРАЦИИ.
        ФОРМАТ МАКРОКОМАНДЫ:
        .RCVD AREA,BUF,WCNT
   ГДЕ AREA - АДРЕС БЛОКА ИЗ 5-ТИ СЛОВ АРГУМЕНТОВ ЕМТ;
        BUF - АДРЕС БУФЕРА ДЛЯ СООБЩЕНИЙ (ДАННЫХ);
        WCNT - КОЛИЧЕСТВО ПЕРЕДАВАЕМЫХ СЛОВ.
        ФОРМАТ БЛОКА АРГУМЕНТОВ ЕМТ:
          AREA:   .BYTE   0,26
                  .WORD   <ЗАРЕЗЕРВИРОВАНО>
                  .WORD   BUF
                  .WORD   WCNT
                  .WORD   1
        ПОСЛЕ ВЫПОЛНЕНИЯ МОНИТОРОМ ЗАПРОСА .RCVD, ПЕРВОЕ СЛОВО
   БУФЕРА  (BUF)  БУДЕТ  СОДЕРЖАТЬ  ДЕЙСТВИТЕЛЬНОЕ  КОЛИЧЕСТВО
   ПЕРЕДАННЫХ СЛОВ. ТАКИМ ОБРАЗОМ, ОБЛАСТЬ ПАМЯТИ  ДЛЯ  ПРИЕМА
   ДАННЫХ ДОЛЖНА БЫТЬ, ПО КРАЙНЕЙ МЕРЕ, НА ОДНО  СЛОВО  БОЛЬШЕ
   РАЗМЕРА ПЕРЕДАВАЕМОГО СООБЩЕНИЯ.
        КОМБИНАЦИЯ .SDAT/.RCVD  МОЖЕТ  БЫТЬ  ИСПОЛЬЗОВАНА  ДЛЯ
   ПЕРЕДАЧИ КАК НЕСКОЛЬКИХ СЛОВ, ТАК И ЦЕЛОГО БУФЕРА. ОПЕРАЦИЯ
   ПО ЗАПРОСУ  .RCVD  ЗАКАНЧИВАЕТСЯ  ТОЛЬКО  ПОСЛЕ  ВЫПОЛНЕНИЯ
   .SDAT ИЗ ДРУГОЙ ПРОГРАММЫ.
        ПРИМЕР ИСПОЛЬЗОВАНИЯ  .RCVD  СМ.  В  ОПИСАНИИ  ЗАПРОСА
   .MWAIT.
        ЗАПРОС .RCVDC ОСУЩЕСТВЛЯЕТ ПРИЕМ  ДАННЫХ  И  ЗАПУСКАЕТ
   ПОДПРОГРАММУ ЗАВЕРШЕНИЯ ПОСЛЕ ПОЛУЧЕНИЯ  СООБЩЕНИЯ  (АНАЛО-
   ГИЧНО .READC).
        ФОРМАТ МАКРОКОМАНДЫ:
        .RCVDC AREA,BUF,WCNT,CRTN
   ГДЕ CRTN - АДРЕС ПОДПРОГРАММЫ ЗАВЕРШЕНИЯ.
        ФОРМАТ БЛОКА АРГУМЕНТОВ ЕМТ:
          AREA:   .BYTE   0,26
                  .WORD   <ЗАРЕЗЕРВИРОВАНО>
                  .WORD   BUF
                  .WORD   WCNT
                  .WORD   CRTN
 
        ЗАПРОС .RCVDW  ОСУЩЕСТВЛЯЕТ  ПРИЕМ  ДАННЫХ  И  ОЖИДАЕТ
   ОКОНЧАНИЯ ОПЕРАЦИИ. ВЫПОЛНЕНИЕ ВЫЗЫВАЮЩЕЙ ПРОГРАММЫ  ЗАДЕР-
   ЖИВАЕТСЯ ДО ОКОНЧАНИЯ ПЕРЕДАЧИ СООБЩЕНИЯ ДРУГОЙ ПРОГРАММОЙ.
        ФОРМАТ МАКРОКОМАНДЫ:
        .RCVDW AREA,BUF,WCNT
        ФОРМАТ БЛОКА АРГУМЕНТОВ ЕМТ:
          AREA:   .BYTE   0,26
                  .WORD   <ЗАРЕЗЕРВИРОВАНО>
                  .WORD   BUF
                  .WORD   WCNT
                  .WORD   0
 
        КАК И В .RCVD, ПЕРВОЕ СЛОВО БУФЕРА ДЛЯ .RCVDC И .RCVDW
   БУДЕТ СОДЕРЖАТЬ ДЕЙСТВИТЕЛЬНОЕ КОЛИЧЕСТВО ПЕРЕДАННЫХ СЛОВ.
        ПРИМЕР ИСПОЛЬЗОВАНИЯ .RCVDW  СМ.  В  ОПИСАНИИ  ЗАПРОСА
   .CHCOPY.
 
        5.2.4. .SDAT,.SDATC,.SDATW (РЕЖИМ FB,ХМ)
        ЗАПРОСЫ .SDAT,.SDATC,.SDATW ИСПОЛЬЗУЮТСЯ ВМЕСТЕ С ЗАП-
   РОСАМИ .RCVD,.RCVDC, .RCVDW ДЛЯ ПЕРЕДАЧИ СООБЩЕНИЙ ИЛИ ДАН-
   НЫХ МЕЖДУ ПРОГРАММАМИ ПОД УПРАВЛЕНИЕМ МОНИТОРОВ FB ИЛИ XM.
        ЗАПРОСЫ   .SDAT,.SDATC,.SDATW   АНАЛОГИЧНО    ЗАПРОСАМ
   .WRITE,.WRITC,.WRITW, ТОЛЬКО ОСУЩЕСТВЛЯЮТ  ПЕРЕДАЧУ  ДАННЫХ
   НЕ НА УСТРОЙСТВО, А  ДРУГОЙ  ПРОГРАММЕ.  ПРИ  ИСПОЛЬЗОВАНИИ
   ЗАПРОСОВ .SDAT И .SDATC ДОЛЖНЫ БЫТЬ ОПРЕДЕЛЕНЫ ДОПОЛНИТЕЛЬ-
   НЫЕ ЭЛЕМЕНТЫ ДЛЯ ОЧЕРЕДИ ВВОДА-ВЫВОДА.
        .SDAT
        ФОРМАТ МАКРОКОМАНДЫ:
        .SDAT AREA,BUF,WCNT
   ГДЕ AREA - АДРЕС БЛОКА ИЗ 5-ТИ СЛОВ АРГУМЕНТОВ ЕМТ;
        BUF - АДРЕС БУФЕРА  ДЛЯ  СООБЩЕНИЙ  (ДАННЫХ),  КОТОРЫЕ
   БУДУТ ПЕРЕДАНЫ;
        WCNT - КОЛИЧЕСТВО СЛОВ ДЛЯ ПЕРЕДАЧИ.
        ФОРМАТ БЛОКА АРГУМЕНТОВ ЕМТ:
          AREA:   .BYTE   0,25
                  .WORD   <ЗАРЕЗЕРВИРОВАНО>
                  .WORD   BUF
                  .WORD   WCNT
                  .WORD   1
 
        ПРИМЕР ИСПОЛЬЗОВАНИЯ  .SDAT  СМ.  В  ОПИСАНИИ  ЗАПРОСА
   .MWAIT.
        .SDATC
        ФОРМАТ МАКРОКОМАНДЫ:
        .SDATC AREA,BUF,WCNT,CRTN
   ГДЕ AREA - АДРЕС БЛОКА ИЗ 5-ТИ СЛОВ АРГУМЕНТОВ ЕМТ;
        BUF - АДРЕС БУФЕРА  ДЛЯ  СООБЩЕНИЙ  (ДАННЫХ),  КОТОРЫЕ
   БУДУТ ПЕРЕДАНЫ;
        WCNT - КОЛИЧЕСТВО СЛОВ ДЛЯ ПЕРЕДАЧИ;
        CRTN - АДРЕС ПОДПРОГРАММЫ ЗАВЕРШЕНИЯ.
        ФОРМАТ БЛОКА АРГУМЕНТОВ ЕМТ:
          AREA:   .BYTE   0,25
                  .WORD   <ЗАРЕЗЕРВИРОВАНО>
                  .WORD   BUF
                  .WORD   WCNT
                  .WORD   CRTN
        .SDATW
        ФОРМАТ МАКРОКОМАНДЫ:
        .SDATW AREA,BUF,WCNT
   ГДЕ AREA - АДРЕС БЛОКА ИЗ 5-ТИ СЛОВ АРГУМЕНТОВ ЕМТ;
        BUF - АДРЕС БУФЕРА  ДЛЯ  СООБЩЕНИЙ  (ДАННЫХ),  КОТОРЫЕ
   БУДУТ ПЕРЕДАНЫ;
        WCNT - КОЛИЧЕСТВО СЛОВ ДЛЯ ПЕРЕДАЧИ.
        ФОРМАТ БЛОКА АРГУМЕНТОВ ЕМТ:
          AREA:   .BYTE   0,25
                  .WORD   <ЗАРЕЗЕРВИРОВАНО>
                  .WORD   BUF
                  .WORD   WCNT
                  .WORD   0
 
        ПРИМЕР ИСПОЛЬЗОВАНИЯ .SDATW  СМ.  В  ОПИСАНИИ  ЗАПРОСА
   .CHCOPY.
 
        5.2.5. .TTYIN,.TTINR
        ЗАПРОСЫ .TTYIN И .TTINR ИСПОЛЬЗУЮТСЯ ДЛЯ ПЕРЕДАЧИ СИМ-
   ВОЛОВ С ТЕРМИНАЛА В ПРОГРАММУ ПОЛЬЗОВАТЕЛЯ.
        МАКРОРАСШИРЕНИЕ ДЛЯ .TTYIN:
                EMT 340
                BCS .-2
        МАКРОРАСШИРЕНИЕ ДЛЯ .TTINR:
                EMT 340
        ЗАПРОС .TTYIN ЦИКЛИТСЯ В ОЖИДАНИИ ПОДАЧИ  СИМВОЛА  ИЛИ
   СТРОКИ СИМВОЛОВ, В ТО ВРЕМЯ КАК ПОЛЬЗОВАТЕЛЬ МОЖЕТ ИЛИ ОЖИ-
   ДАТЬ,  ИЛИ  ПРОДОЛЖАТЬ  ВЫПОЛНЕНИЕ   ПРОГРАММЫ,   ИСПОЛЬЗУЯ
   .TTINR. ЕСЛИ ПО ЗАВЕРШЕНИЮ ВЫПОЛНЕНИЯ .TTINR  УСТАНАВЛИВАЕТ
   С-РАЗРЯД, ТО ЭТО  ЗНАЧИТ  ЧТО  В  БУФЕРЕ  ТЕРМИНАЛА  СИМВОЛ
   ОТСУТСТВУЕТ (ПОЛЬЗОВАТЕЛЬ ЕЩЕ НЕ НАПЕЧАТАЛ ЕГО). В  РЕЖИМАХ
   FB,ХМ И  SJ(БЕЗ  МУЛЬТИТЕРМИНАЛЬНОЙ  ПОДДЕРЖКИ)  .TTINR  НЕ
   УСТАНАВЛИВАЕТ С-РАЗРЯД, ЕСЛИ НЕ УСТАНОВЛЕН  6-ОЙ  РАЗРЯД  В
   СЛОВЕ СОСТОЯНИЯ ЗАДАНИЯ (ССЗ).
        СУЩЕСТВУЮТ ДВА РЕЖИМА ВВОДА С ТЕРМИНАЛА.  РЕЖИМ  ВВОДА
   ОПРЕДЕЛЯЕТСЯ СОДЕРЖИМЫМ 12-ГО РАЗРЯДА В ССЗ. ЕСЛИ СОДЕРЖИМОЕ
   12-ГО РАЗРЯДА НОЛЬ, ТО  ГОВОРЯТ  ОБ ОБЩЕМ РЕЖИМЕ ВВОДА-ВЫВО-
   ДА. В ЭТОМ РЕЖИМЕ  ВЫПОЛНЯЮТСЯ  СЛЕДУЮЩИЕ ДЕЙСТВИЯ:
        1) МОНИТОР ОБЕСПЕЧИВАЕТ "ЭХО" ВСЕМ СИМВОЛАМ,  ВВОДИМЫМ
   С ТЕРМИНАЛА;
        2) СТИРАНИЕ СИМВОЛОВ И СТРОК ОСУЩЕСТВЛЯЕТСЯ С  ПОМОЩЬЮ
   КОМАНД ЗБ И СУ/U СООТВЕТСТВЕННО;
        3) ДЛЯ ПЕРЕДАЧИ СИМВОЛОВ ПРОГРАММЕ  НЕОБХОДИМО  ПОДАТЬ
   ВК , ПС ИЛИ КОМАНДЫ СУ/Z ИЛИ СУ/С; ВОЗВРАТ КАРЕТКИ И  ПЕРЕ-
   ВОД СТРОКИ ТАКЖЕ ПЕРЕДАЮТСЯ ПРОГРАММЕ ПОЛЬЗОВАТЕЛЯ.
        ЕСЛИ 12-ЫЙ РАЗРЯД В ССЗ РАВЕН ЕДИНИЦЕ,  ТО  УСТАНАВЛИ-
   ВАЕТСЯ СПЕЦИАЛЬНЫЙ РЕЖИМ ВВОДА-ВЫВОДА. В ЭТОМ РЕЖИМЕ ВЫПОЛ-
   НЯЮТСЯ СЛЕДУЮЩИЕ ДЕЙСТВИЯ:
        1) МОНИТОР НЕ ВЫДАЕТ "ЭХО" СИМВОЛАМ, ВВОДИМЫМ С ТЕРМИ-
   НАЛА, КРОМЕ СУ/С И СУ/D;
        2) СУ/U И ЗБ НЕ ВЫПОЛНЯЮТ СВОИХ ФУНКЦИЙ;
        3) СИМВОЛЫ СРАЗУ ЖЕ ПЕРЕДАЮТСЯ ПРОГРАММЕ ПОЛЬЗОВАТЕЛЯ.
        В СПЕЦИАЛЬНОМ  РЕЖИМЕ  ПРОГРАММА  ПОЛЬЗОВАТЕЛЯ  ДОЛЖНА
   САМА ВЫПОЛНЯТЬ ПЕЧАТЬ ВВОДИМЫХ СИМВОЛОВ, ЕСЛИ ЭТО НЕОБХОДИ-
   МО (ИСКЛЮЧЕНИЕ СОСТАВЛЯЮТ СУ/С И СУ/D).
        12-ЫЙ РАЗРЯД В ССЗ ДОЛЖЕН  УСТАНАВЛИВАТЬСЯ  ПРОГРАММОЙ
   ПОЛЬЗОВАТЕЛЯ. ЭТОТ РАЗРЯД ОЧИЩАЕТСЯ, ЕСЛИ УПРАВЛЕНИЕ  ПЕРЕ-
   ДАЕТСЯ МОНИТОРУ.
        ДЕЙСТВИЯ СУ/F,СУ/В И СУ/Х НЕ  ЗАВИСЯТ  ОТ  СОДЕРЖИМОГО
   12-ГО РАЗРЯДА, ЕСЛИ РАНЕЕ НЕ БЫЛА  ПОДАНА  КОМАНДА  SET  TT
   NOFB).
        КОМАНДЫ СУ/S И СУ/Q ВЫПОЛНЯЮТСЯ МОНИТОРОМ, ЕСЛИ ТОЛЬКО
   В РЕЖИМЕ FB(XM) РАНЕЕ НЕ  БЫЛА  ВЫПОЛНЕНА  КОМАНДА  SET  TT
   NOPAGE.
        ЕСЛИ В РЕЖИМЕ FB (XM) СДЕЛАН ЗАПРОС ВВОДА,  А  СИМВОЛА
   НЕТ В НАЛИЧИИ, ТО ВЫПОЛНЕНИЕ ПРОГРАММЫ БЛОКИРУЕТСЯ  ДО  ТЕХ
   ПОР, ПОКА В БУФЕРЕ ВВОДА НЕ ПОЯВИТСЯ СИМВОЛ. ЭТО СПРАВЕДЛИ-
   ВО ДЛЯ .TTYIN И TTINR