From Felixl.com
ОПЕРАЦИОННАЯ СИСТЕМА RT11
МОНИТОР СИСТЕМЫ
Руководство программиста
00010-01 33 01
АННОТАЦИЯ
В документе описываются функции и характеристики мониторов
системы ФОДОС и программные запросы как способ обращения к монитора
с целью выполнения тех или иных действий, необходимых для выполнения
программы.
Перед использованием настоящего документа необходимо
ознакомиться со следующими документами:
-"Операционная система ФОДОС. Общее описание. 00010-01 31 01"
-"Операционная система ФОДОС. Монитор системы. Руководство
оператора. 00010-01 34 01"�
- 3 -
СОДЕРЖАНИЕ.
1. НАЗНАЧЕНИЕ И УСЛОВИЯ ПРИМЕНЕНИЯ...................4
2. СТРУКТУРА ИНФОРМАЦИИ НА НОСИТЕЛЯХ.................5
2.1. Структура системного тома....................5
2.2. Структура тома магнитной ленты...............8
2.3. Организация ввода-вывода.....................9
3. ХАРАКТЕРИСТИКИ МОНИТОРА..........................11
3.1. Особые области памяти RT11..................12
3.2. Алгоритмы свопинга..........................16
3.3. Ячейки фиксированного смещения..............17
3.4. Подпрограммы завершения.....................21
4. ОБРАЩЕНИЕ К МОНИТОРУ, ВХОДНЫЕ И ВЫХОДНЫЕ ДАННЫЕ..22
4.1. Программные запросы.........................22
5. СООБЩЕНИЯ........................................81
ПРИЛОЖЕНИЕ .........................................94
- 4 -
Ядром операционной системы RT11 является монитор. В
зависимости от конструкции технических средств и потребностей
пользователь может использовать один из пяти мониторов RT11:
RM - исполняющий монитор реального времени, резидентный в памяти;
SJ(CD) - однозадачный монитор реального времени; FB - фоново-операти-
вный монитор реального времени, обслуживающий две (до 8) задачи на
комплексах с памятью до 56K; XM - монитор управления памятью до 248 K
для не более 8 задач реального времени; TS - многопользовательский
монитор разделения времени для комплексов с памятью 96 - 248 K, обслу
живающий до 30 задач.
1. НАЗНАЧЕНИЕ И УСЛОВИЯ ПРИМЕНЕНИЯ.
Монитор RT11 предназначен для управления работой операционной
системы и обеспечивает выполнение следующих функций:
- обработка прерываний;
- обработка ошибок;
- связь с оператором;
- обслуживание программных запросов;
- управление файлами;
- обеспечение одновременного выполнения двух задач
пользователя (для монитора SJ - одной задачи);
- обслуживание таймера.
Условия применения монитора RT11 аналогичны условиям при-
менения операционной системы в целом ( документ "Операционная система
ФОДОС. Общее описание").
Примечание. Для работы монитора системы необходимо наличие на
системном томе файла свопинга SWAP.SYS. Для мониторов:
FB,XM - 26 блоков
CD,DS - 2 блока при SET USR NOSWAP
SJ - 24 блока�
- 5 -
2. СТРУКТУРА ИНФОРМАЦИИ НА НОСИТЕЛЯХ.
2.1. Структура системного тома.
Системный том RT11 содержит все компоненты системы -загрузчик
системы, монитор, драйверы устройств, системные и вспомагательные
программы. Структура системного тома предусматривает запись перечис-
ленных компонентов по блокам:
Блок: Содержимое:
0 Начало загрузчика системы
1 Идентификация тома
2-5 Продолжение загрузчика системы
6-(Nx2) + 5 Каталог тома, N - число сегментов
каталога
(Nx2) + 6 - до конца Файлы
Примечание: 1блок=256. слов=512. байт. 1сегмент каталога=2блока.
На дисках DX, MX каталог=1сегмент. На дисках двойной плотности,
винчестере - каталог больше.
2.1.1. Виды файлов.
RT11 использует "соприкасающуюся" структуру файлов. Такая
структура означает, что каждый файл на томе составляет группу
смежных физических блоков (т.е. файл длиной в 9 блоков занимает
9 смежных блоков на томе). Различают следующие виды файлов:
> постоянный файл-файл,который был открыт по .ENTER,а затем закрыт по
.CLOSE;файлы,включенные в листинг каталога тома,являются постоянными
> временный файл-файл, который был открыт по .ENTER, но не закрыт
по .CLOSЕ; если выполнен запрос .CLOSE, временный файл становится
постоянным, при этом, если на томе уже существует постоянный файл с
тем же именем,то он стирается; если запрос.CLOSE не используется,
то временный файл рассматривается как пустой файл; временный
файл стирается,если создается новый временный файл с тем же именем;
> пустой файл; т.е. область диска не используется.В листинге каталога
он определен как <Unused> N {неиспользуемый}, где N-длина свободной
области в блоках.�
- 6 -
2.1.2. Структура каталога тома.
Каталог тома любого устройства справочной структуры состоит
из сегментов и начинается с 6-го блока тома. Длина каталога может
изменяться от 1. до 31. сегмента ( устанавливается при инициализации
тома).
Каждый сегмент занимает два блока (512. слов) и состоит из
заголовка сегмента и записей каталога.
2.1.2.1. Формат заголовка сегмента.
Заголовок сегмента находится в начале сегмента и занимает
первые пять слов:
1 Число сегментов справочника (1<= N <=31.)
2 Номер сегмента, логически связанного с данным. Если 0, в
справочнике нет сегментов, логически связанных с данным.
3 Номер последнего открытого сегмента (возрастает при фор-
мировании нового сегмента). Это слово используется только
в первом сегменте
4 Число дополнительных байтов в записи справочника
5 Номер блока тома, с которого начинаются файлы, описанные
в этом сегменте
Примечание: в системе RT11 при непрерывной (без стирания) за-
писи файлов на том и заполнении сегмента каталога, осуществляется
перезапись примерно половины файлов в свободный ( если он есть)
сегмент каталога. В результате между сегментами устанавливается логи-
ческая связь, которая отражается во втором слове заголовка сегмента
и используется монитором для поиска файлов на томе. Логически связан-
ные сегменты не обязательно являются физически смежными на томе.�
- 7 -
2.1.2.2. Формат записи каталога.
Запись каталога представляет собой основную его структурную
единицу и содержит информацию о файле, хранящемся на данном томе.
Структура записи:
слово:
0 слово состояния
1 имя файла RADIX-50
2 имя файла RADIX-50
3 тип файла (расширение) RADIX-50
4 длина файла
5 номер задания/номер канала
6 дата (начало счисления=1 января 1972 г.)
*
* дополнительные слова
*
Нечетный байт слова состояния: RAD50:
1 временный файл / FP/
2 свободная область / L2/
4 постоянный файл / YX/
10 конец сегмента /AKH/
204 защищенный (PROTECTED) файл /UD2/
Четный байт слова состояния - резервный.
Имя и тип файла-последовательность символов RADIX-50 ( кроме
пробела, табуляции, знака $). Длина файла равна числу занимаемых им
блоков. Попытки чтения/записи за пределами файла вызовут ошибку.Номер
задания и номер канала устанавливаются только для временных файлов:
При работе с монитором SJ четный байт содержит номер канала,
на котором открыт данный файл.При выполнении запроса .CLOSE указанный
номер канала позволяет однозначно определить искомый временный файл;
При работе с монитором FB четный байт содержит номер канала,
нечетный байт - номер задания, открывшего данный файл. При выполнении
запроса .CLOSE однозначное определение искомого временного файла обес
печивается номером задания, т.к. задания могут иметь временные файлы
на своих каналах, имеющих одинаковые номера.�
- 8 -
Дата создания файла заносится при выполнении запроса .ENTER:
15 14 10 9 5 4 0
+--+------+------+--------+
| |месяц |день |год-117 |
+--+------+------+--------+
Формат даты:
15-й разряд не используется.
Месяцы нумеруются от 1 до 12, дни - от 1 до 31.
в RAD50 /ED2/ высвечивается как -BAD-
Запись справочника имеет длину 7 слов. Однако,пользователь
может разместить дополнительные слова в записи справочника при
инициализации тома. RT11 не обслуживает дополнительные слова в записи
справочника, поэтому пользователь должен предусмотреть доступ к ним.
2.1.2.3. Число файлов тома.
Число файлов,которые можно записать на томе зависит от числа
сегментов каталога тома и числа дополнительных слов в записи каталога.
Общее число записей в каталоге определяется выражением:
31*[(512-5)/(7+N)]
где N - число дополнительных слов в записи.
Если N=0, общее число записей в каталоге ( файлов на томе )
2232. . При размещении дополнительных слов в записи каталога число
файлов, хранящихся на томе, уменьшается.1 сегмент содержит до 145.фай
лов.
2.2. Структура тома магнитной ленты.
RT11 использует магнитную ленту, структура которой предусмат-
ривает идентификацию данных с помощью различных маркеров и меток.
Каждый файл на магнитной ленте записывается по блокам длиной 256.
слов и имеет следующий формат:�
- 9 -
HDRn* --- данные ---* EOFn*
где HDR -идентификатор метки начала файла;
EOF -идентификатор метки конца файла;
n -номер метки;
* -ленточная марка.
Том,содержащий один файл,имеет формат:
VOL1 HDR1 * --- данные --- * EOF1 **
где VOL1 - идентификатор метки тома с номером 1.
Том,содержащий два файла,имеет формат:
VOL1NDR1* - - данные - - *EOF1*NDR2* - - данные - - *EOF2**
Две ленточные марки, следующие за меткой конца файла,
указывают логический конец ленты, обозначаемый LEOT.
Лента, на которой не записаны файлы данных имеет следующий
формат: VOL1**
Каждая метка VOLn, HDRn или EOFn занимает полный блок
длиной 256. слов, в котором используются первые 80 байтов.
Идентификатор и номер метки записываются по байтам в кодах
КОИ-7.
Блок метки тома содержит идентификацию тома, блок метки
начала файла HDRn - имя файла, порядковый номер файла на ленте, дату
создания и код системы.
Блок метки конца файла EOFn построен аналогично блоку HDRn.
Кроме характеристик блока HDRn , указанных выше, блок EOFn содержит
десятичное число блоков в данном файле в кодах КОИ-7.
Магнитная лента,содержащая в начале тома начальный загрузчик,
имеет следующий формат:
VOL1 BOOT HDR1* - - данные - - *EOF1* ...* ,
где BOOT - блок длиной 256. слов, содержащий начальный загрузчик.
2.3. Организация ввода-вывода.
Управление операциями ввода-вывода в системе RT11 осуществля-
ется монитором с помощью драйверов устройств.
Драйверы устройств являются резидентными на системном устрой-
стве и загружаются в оперативную память по запросу из программы поль-
зователя или по команде KMON.�
- 10 -
Все запросы на ввод-вывод данных интерпретируются монитором и
адресуются драйверу соответствующего устройства. Если запрос не может
быть удовлетворен по каким-либо причинам, он автоматически ставится в
очередь.
2.3.1. Элемент очереди ввода-вывода.
Очередь ввода-вывода состоит из связанных элементов по 7 (SJ/
FB-мониторы) или 10 (XM/TS) слов каждый. Элемент очереди формируется
монитором при поступлении запросов на ввод-вывод и используется драй-
вером устройства для выполнения операции. Структура элемента очереди:
+-----------------------------------------------+
| Адрес следующего элемента очереди |
| Адрес слова состояния канала |
| Номер начального блока файла |
| на томе |
|-------+-----------------------+---------------|
| Номер | Номер привода | Код |
|задания| устройства | функции |
|-------+-----------------------+---------------|
| Адрес буфера памяти |
| Счетчик слов |
| Функция завершения |
+-----------------------------------------------+
1-е слово элемента очереди - адрес следующего элемента очере-
ди,если он есть (иначе - 0).<Q.LINK=0;Q$LINK=-4>
2-е слово - адрес слова состояния канала,на котором осуществ-
ляется операция ввода-вывода.<Q.CSW=2;Q$CSW=-2>
3-е слово -номер начального блока файла на томе для устройств
файловой структуры (иначе - 0).<Q.BLKN=4;Q$BLKN=0>
4-е слово:разряды 0-7 - код функции,которую необходимо выпол-
нить; разряды 8-10 - номер привода устройства, на котором выполняется
операция;разряды 11-13 - номер задания:0 -фоновое, 2 - основное.
<Q.FUNC=6;Q$FUNC=2><Q.JNUM=Q.UNIT=7;Q$JNUM=Q$UNIT=3>
5-е слово - адрес буфера оперативной памяти для запрашиваемой
операции.<Q.BUFF=10;Q$BUFF=4>
6-е слово - счетчик слов; <0 для операции записи, >0 для чте-
ния и 0 - для поиска файла на томе.<Q.WCNT=12;Q$WCNT=6>�
- 11 -
7-е слово - адрес подпрограммы завершения:
0 - синхронный режим ввода-вывода, управление - задаче после
завершения операции;
1 - модифицированный синхронный режим ввода-вывода,управление
возвращается задаче после запуска операции;
Четный адрес - адрес подпрограммы завершения для асинхронного
режима ввода-вывода.<Q.COMP=14;Q$COMP=10>
(в угловых скобках-мнемоники и соотв. смещения, определяемые макроко-
мандой .QELDF; смещения, содержащие в имени точку-относительно начала
элемента очереди, содержащие "$" -относительно третьего слова). Для
XM/TS мониторов Q.PAR=16; Q$PAR=12 содержит значение, записываемое в
PAR1(XM-монитор) или PAR6(TS-монитор) для получения доступа через
Q.BUFF к данным в буфере программы;PAR-один из регистров адреса стра-
ницы диспетчера памяти; длина элемента очереди в байтах Q.ELNG=16 для
SJ/FB мониторов, Q.ELNG=24-для XM/TS.
В системе RT11 предусмотрена очередь ввода-вывода из одного
элемента ( в режиме FB для каждого задания - свой элемент очереди ).
Этого достаточно для работы в режиме синхронного выполнения
операций ввода-вывода.Для работы в других режимах пользователь должен
предусмотреть в своей программе создание дополнительных элементов по
запросу .QSET .
3. ХАРАКТЕРИСТИКИ МОНИТОРА.
Монитор системы RT11 имеет модульную структуру и включает сле
дующие программные компоненты:
- Резидентный монотор RMON;
- Клавиатурный монотор KMON;
- Программу обслуживания пользователя USR и Интерпретатор ко-
мандной строки CSI;
- Драйверы устройств.
Работа RT11 под управлением монитора SJ обеспечивает выполне-
ние одной программы пользователя, под управлением мониторов FB и XM
обеспечивает одновременное выполнение двух независимых программ, и
кроме того, в режиме XM обеспечивает доступ к памяти объемом до 124 К
слов.�
- 12 -
3.1. Особые области памяти RT11.
Область памяти для векторов прерывания и некоторые ячейки
RMON являются особыми для функционирования операционной системы. Одни
ячейки в этих областях могут использоваться программами пользователя,
другие использовать запрещается.
3.1.1. Адреса векторов прерывания.
Ячейки памяти от 0 до 476 используются операционной системой
и программы пользователя не должны изменять содержимого этих ячеек. В
противном случае система должна быть перезагружена,или программа дол-
жна восстановить первоначальное содержимое этих ячеек.
В таблице перечислены адреса векторов прерывания и типы прерываний:
+---------------------------------------------------------------+
|Вектор | Тип прерывания |
| 4,6 | Прерывание по ошибке обращения к каналу.В процессоре |
| | BM3 обращение к слову по нечетному адресу |
| 10,12 | Прерывание по резервной команде |
| 30,32 | Прерывание по команде EMT |
| 34,36 | Прерывание по команде TRAP |
| 60,62 | Прерывание от клавиатуры терминала |
| 64,66 | Прерывание от печати терминала |
|100,102| Прерывание от таймера |
|134,136| Прерывание от платы CDR |
|200,202| Прерывание от принтера |
|220,222| Прерывание от дисков на базе СМ-5400 |
|224,226| Прерывание от магнитной ленты на базе ИЗОТ 5003 |
|250,252| Прерывание от Диспетчепра памяти |
|254,256| Прерывание от дисков DP (29 Мбайт) |
|264,266| Прерывание от гибких дисков |
| 70,72 | ФС |
| 74,76 | ПЛ |
+---------------------------------------------------------------+
Перезапуск монитора осуществляется с 0-го адреса.�
- 13 -
3.1.2. Область связей системы.
Для хранения информации о выполняющейся программе,а также ин-
формации,используемой только монитором,система использует байты 40-57
SET USR NOSWAP SET USR SWAP
-------------- -----------------
KMON KMON
-------------- -----------------
RMON RMON
@#54-> -------------- @#54-> -----------------
драйверы драйверы
-------------- -----------------
USR
266(@#54)-> --------------
..............
1000 -------------- 1000-> -----------------
векторы,
стек и т.п.
0 -------------- 0 -----------------
Системная область связи:
Байт Назначение и использование
40,41 Пусковой адрес программы. При создании файлов в форматах .SAV
и .REL, Редактор связей записывает в это слово пусковой адрес
программы.
42,43 Первоначальный адрес стека. По умолчанию равен 1000
44,45 Слово состояния задания. Одни разряды устанавливаются монито-
ром, другие могут устанавливаться или очищаться программой
пользователя.
46,47 Адрес загрузки USR. Это слово может содержать любой действите
льный адрес программы пользователя. Если 0, то USR загружает-
ся по адресу,записанному в ячейке фиксированного смещения 266
RMON�
- 14 -
50,51 Адрес верхней границы памяти для программы.В этом слове мони-
тор содержит наивысший адрес,который может использовать прог-
рамма пользователя. Адрес верхней границы может модифицирова-
ться с помощью запроса .SETTOP
52 Код ошибки EMT. Eсли при выполнении программного запроса про-
исходит ошибка, то устанавливается С - разряд и код ошибки
записывается в байт 52
53 Код ошибки программы пользователя USERRB. Используется при
работе с косвенными файлами. Если в процессе выполнения прог-
рамма пользователя обнаружит условия ошибки, она может сооб-
щить об этом, используя байт 53. KMON проверяет этот байт по
окончании работы программы. При возникновении ошибки, KMON
может аннулировать использующийся косвенный файл. Это предот-
вращает от получения неправильных результатов, которые могут
возникнуть,если выполнение команд косвенного файла зависит от
успешного завершения предыдущих команд. Программа может прек-
ратить свою работу в одном из следующих состояний:
- нормально ;
- предупреждение ;
- ошибка ;
- фатальная ошибка .
Состояние программы считается "нормально", если при ее выпол-
нении не возникает ошибок. Состояние "предупреждение" указыва
ет на то,что имело место предупреждающее сообщение и выполне-
ние программы завершилось до конца. Состояние "ошибка" указы-
вает на то, что произошла ошибка и выполнение программы не
завершилось.Такое состояние используется,если программа созда
ет выходной файл, содержащий ошибки. Состояние "фатальная
ошибка" указывает на то, что программа не создала выходные
данные и все команды или операции, зависящие от данных, будут
выполнены неправильно.Такая ошибка может возникнуть в случае,
если для завершения выполнения программы недостаточно памяти.�
- 15 -
54,55 Начальный адрес Резидентного монитора.Это слово не должно из-
меняться пользователем.
Разряд Назначение @#44
-------------------------------------------------------------
15 Разряд свопинга USR (только в режиме SJ). Moнитор ус-
танавливает этот разряд,если программа не требует сво
пинга USR
TT$LC 14* Разряд нижнего регистра. Когда разряд установлен, то
запрещается автоматическое преобразование кодов сим-
волов нижнего регистра в коды верхнего регистра
13* Разряд перезапуска. Если разряд установлен, программа
может быть перезапущена по команде REENTER
TT$SPC 12* Разряд специального режима работы с терминалом. Если
этот разряд установлен,он указывает на то,что програм
ма находится в специальном клавиатурном режиме
11* Разряд передачи строки KMON. Если разряд установлен и
выполнение программы пользователя заканчивается по
.EXIT , то KMON осуществляет выборку команды из ячеек
500 - 776
10* Разряд виртуального отображения ( только в режиме XM)
9 Оверлейный разряд. Устанавливается Редактором связей,
если программа имеет оверлейную структуру
8 Разряд CHAIN.Этот разряд устанавливатся в том случае,
если программа была загружена по запросу CHAIN
7* Разряд останова по ошибке (только в режиме SJ). Если
установлен,то в случае ошибки в операции ввода-вывода
произойдет останов системы
6* Разряд запрещения состояния ожидания терминала.Исполь
зуется в режиме FB
5-3 Резервируются для системных целей.
2-0 Резервные для системы.
Примечание: Разряды, отмеченные в таблице звездочкой, устанавливаются
программой пользователя.�
- 16 -
Разряд Значение @#53
-------------------------------------------------------------
7-4 Резервные. Не должны использоваться программой поль-
зователя.
3 Фатальная ошибка
2 Ошибка
1 Предупреждение
0 Нормально
3.2. Алгоритм свопинга.
Программные запросы в зависимости от того, требуют они нали-
чия USR в памяти или нет, делятся на 2 категории. Запрос,который тре-
бует наличия USR в памяти, может также потребовать, чтобы часть про-
граммы пользователя временно удалялась из памяти и запоминалась на
диске. В этом случае USR загружается в освободившуюся область. В ре-
жиме XM не требуется свопинг USR, т.к. USR является резидентной. При
работе с RT11 необходимо помнить следующее:
1) если в фоновой программе запрос .SETTOP запрашивает вер-
хний адрес программе выше начального адреса USR, то при обращении к
USR требуется свопинг;
2) если пользователь меняет содержимое @#46, то RT11 исполь-
зует содержимое этого слова в процессе свопинга для USR; если содер-
жимое ячейки 46 нулевое, USR загружается с адреса установленного
системой.
Если свопинг не нужен, содержимое ячейки 46 игнорируется.
Основное задание всегда должно иметь адрес в ячейке 46, независимо от
того, осуществляется или нет свопинг USR. Указывая адрес в ячейке 46,
нужно соблюдать осторожность: поскольку монитор SJ не проверяет допу-
стимость адреса для свопинга USR, то при свопинге может произойти
наложение областей памяти, используемых для свопинга USR и RMON. Это
приводит к нарушению нормального функционирования системы.�
- 17 -
4. Не допускается определять адрес для свопинга USR в преде-
лах следующих областей: стека программы, блока аргументов для вызова
USR, буферов ввода-вывода, драйверов устройств или подпрограмм завер-
шения,использующихся при вызове USR.
3.3. Ячейки фиксированного смещения
Существует ряд ячеек, которые имееют фиксированное положение
относительно начала Резидентного монитора. Информация в этих ячейках
может быть использована программами пользователя:
Смещение Содержимое
---------------------------------------------------------------------
266 Адрес загрузки USR ( если ячейка 46 содержит 0 )
270 Адрес подпрограммы монитора управления очередью вво-
да-вывода. Обращение к подпрограмме осуществляется из
драйверов устройств по окончании операции ввода-выво-
да
272 SPUSR::
274 Номер привода системного устройства (устройства,с ко-
торого последний раз была загружена система)
276 Номер версии монитора
300 Слово конфигурации системы. Разряды слова несут инфо-
рмацию об аппаратной конфигурации системы и ее прог-
раммных компонентах.
302 SCROLL::
304 Адрес регистра состояния клавиатуры терминала
306 Адрес регистра буфера клавиатуры терминала
310 Адрес регистра состояния печати терминала
312 Адрес регистра буфера печати терминала�
- 18 -
314 Максимально допустимая длина файла (предоставляемая
системой,если соответствующий аргумент запроса .ENTER
равен нулю). Она может быть установлена программой
пользователя или с помощью программы PATCH. Значение
по умолчанию равно 177777
316 E16LST::.WORD LST16-$RMON
324 Адрес подпрограммы обработки запроса .SYNCH. Подпрог-
раммы пользователя обработки прерываний могут исполь-
зовать его для синхронизации с заданиями, которые они
обслуживают
326-350 карта загрузки
352 USRLOC::
354 GTVECT:: вектор графтерминала
356 счетчик ошибок
360 Адрес подпрограммы записи в слово состояния процессо-
ра (PSW). Вызов этой подпрограммы осуществляется по
запросу .MTPS
362 Адрес подпрограммв выборки из PSW. Этот адрес исполь-
зуется запросом .MFPS
364 SYINDX::
366 Слово состояния косвенного файла
370 Слово расширенной конфигурации.Это слово содержит ин-
формацию о дополнительном оборудовании
372 Слово параметров генерации. Содержит информацию о до-
полнительных возможностях системы
374 Размер USR в байтах�
- 19 -
377 Глубина вложения косвенных файлов (значение по умол-
чанию равно 3). Значение может быть модифицировано
для изменения глубины вложения косвенных файлов
376 Байт уровня ошибки
400 .WORD EMTDON-$RMON
402 .WORD $FORK-$RMON
404 .WORD $PNAME-$RMON
406,410,412 имя монитора в RAD50
414
416
417
420 размер ОЗУ
424
Ячейки 304-313 содержат адреса регистров терминала и не используются
в мультитерминальном режиме.�
- 20 -
Слово конфигурации системы:
Разряд Значение
---------------------------------------------------------------------
0 0 - монитор SJ; 1 - монитор FB, если разряд 12 не ус-
тановлен; если установлен - монитор XM
3 1 - фоновым заданием управляет BATCH
5 1 - таймер с частотой 50 Гц
6 1 - Процессор плавающей запятой ЭВМ "Электроника-79"
7 0 - основного задания в памяти нет
1 - основное задание в памяти
9 1 - USR является резидентной по SET USR NOSWAP
11 1 - процессор "Электроника 60"
12 1 - система работает под управлением монитора XM
13,14 используются системой
15 1 - имеется таймер
Слово расширенной конфигурации:
Разряд Значение
---------------------------------------------------------------------
0 1 - сверхбыстрая память (КЭШ - память)
1 1 - паритетность
8 1 - блок расширенной арифметики ЭВМ "Электроника-60М"
14 1 - процессор ЭВМ "Электроника 79"�
- 21 -
Слово параметров генерации:
Разряд Значение
---------------------------------------------------------------------
0 1 - регистрация ошибок
1 1 - обслуживание расширенной памяти
2 1 - обслуживание ожидания готовности устройств
9 1 - обслуживание паритетности
10 1 - обслуживание запросов .MRKT и .CMKT монитора SJ
13 1 - мультитерминальное обслуживание
3.4. Подпрограммы завершения.
Подпрограммы завершения создаются пользователем и запускают-
ся сразу же после окончания некоторых внешних операций. Управление
подпрограмме завершения передается после операции ввода-вывода данных
или через определенный интервал времени. На входе в подпрограмму за-
вершения R0 содержит слово состояния канала для операции, а R1 -вось-
меричный номер канала для операции. В режиме SJ подпрограммы заверше-
ния являются асинхронными и могут прерывать друг друга. В режимах FB
и XM подпрограммы завершения не прерывают друг друга, а организуются
в очередь и ждут окончания выполнения соответствующего задания.
При создании подпрограмм завершения необходимо соблюдать сле-
дующие правила:
1) в подпрограммах завершения нельзя использовать запросы,
требующие USR ;
2) подпрограммы завершения не должны находиться в области
памяти, которая используется для USR ;
3) выход из подпрограммы завершения - по RTS PC ;
4) если подпрограмма завершения использует регистры кроме R0
и R1, она должна запомнить их содержимое после входа в подпрограмму и
восстановить их перед выходом.�
- 22 -
4.ОБРАЩЕНИЕ К МОНИТОРУ.ВХОДНЫЕ И ВЫХОДНЫЕ ДАННЫЕ.
Обращение к монитору RT11 осуществляется по командам KMON,
вводимых с системного терминала, и через программные запросы.В данном
разделе описан формат и назначение всех программных запросов операци-
онной системы. Обслуживание программных запросов, помеченных в доку-
менте, как вариант SJ (FB,XM), не реализовано в данной версии RT11.
4.1. Программные запросы.
Программные запросы представляют собой ассемблерные макроко-
манды, которые обрабатываются монитором во время выполнения программы
Основа программного запроса - команда EMT. Она используется для пере-
дачи информации монитору на выполнение определенной операции.Все про-
граммные запросы начинаются символом "."
Существуют два формата программных запросов:
1. .PRGREQ area, arg1,...,argn
2. .PRGREQ arg1, arg2,...,argn
В первом формате аргумент area является указателем блока ар-
гументов arg1,...,argn. Программные запросы такого формата вызывают
генерацию команды EMT 375. Если аргумент area в макрокоманде не ука-
зан, в качества указателя блока аргументов используется регистр R0.
Программные запросы второго формата вызывают генерацию ко-
манды EMT 374 или одной из команд EMT 340-357.
Все аргументы программных запросов служат в качестве источ-
ника команды MOV.
Например,
.PRGREQ
транслируется,как
MOV CHAR,R0
EMT 374
Пример записи программного запроса:
.GTLIN #LINE,#PROMPT
.
.
.
PROMPT: .ASCIZ /Введите строку>/<200>
.EVEN
LINE: .BLKB 81.
.EVEN�
- 23 -
При выполнении запроса содержимое регистров, кроме R0, не из-
меняется и указатель стека, за исключением запросов CSI, не переуста-
навливается.
4.1.1. Аргументы программных запросов.
Аргументы программных запросов являются входными данными для
монитора RT11.
4.1.1.1. Номер канала.
Номер канала (chan) представляет собой логический идентифика-
тор файла и используется монитором при выполнении операций. Номер
канала может быть от 0 до 255. (0-377).
Каждый открытый файл монитор логически связывает с определен-
ным каналом.Для обращения к файлу достаточно указать номер его канала
4.1.1.2. Блок устройства.
Блок устройства (dblk) представляет собой блок информации в
кодах Radix-50, который содержит имя устройства, имя и тип файла.Дли-
на блока - 4 слова.
Пример:
.RAD50 /MY0/
.RAD50 /FIL/
.RAD50 /E /
.RAD50 /TYP/
Имя устройства,имя и тип файла должны быть левоопределенными
в каждом поле операнда (т.е. непосредственно следовать за ограничите-
лем операнда директивы .RAD50 ).
Допускается запись блока устройства .RAD50 /DK FILE TYP/
При этом каждое поле операнда отделяется друг от друга пробелом.�
- 24 -
Аргументы программных запросов:
Обозначение Аргумент
---------------------------------------------------------------------
addr Адрес; значение зависит от используемого запроса
area Адрес блока аргументов EMT
blk Номер блока относительно начала файла,с которого
должна выполняться операция ввода-вывода
buf Адрес буфера памяти
cblk Адрес блока из пяти слов, в котором хранится информа-
ция о состоянии канала
chan Номер канала
crtn Точка входа подпрограммы завершения
dblk Адрес блока устройства
num Число, зависит от используемого запроса
wcnt Счетчик слов
seqn Последовательный номер файла для операций с магнитной
лентой
4.1.1.3. Блок аргументов EMT.
Четный байт 1-го слова содержит номер канала,определенный в
макрокоманде. Если номер канала не требуется, то четный байт содержит
0.Нечетный байт 1-го слова блока содержит функциональный код макроко-
манды. Остальные слова блока содержат аргументы,определенные в макро-
команде:
-------------------------
area: Функциональный | Номер
код | канала
-------------------------
1-й аргумент
-------------------------
2-й аргумент
-------------------------
.
.
.
-------------------------
n-ый аргумент
-------------------------�
- 25 -
4.1.2. Сообщения об ошибках.
При обработке запросов, монитор может обнаружить ошибки.
Программные запросы информируют об этом пользователя, используя бит C
байт ошибок (@#52) и сообщения монитора. Бит C очищается после выпол-
нения запроса и устанавливается при ошибке. Для обнаружения ошибки за
запросом должна следовать команда BCS или BCC. Когда установлен бит C
байт ошибок содержит код ошибки. В Приложении перечислены коды ошибок
программных запросов и причины,вызывающие эти ошибки.
4.1.3. Типы программных запросов.
Существуют три типа программных запросов:
> запросы для операций с файлами;
> запросы для организации ввода-вывода данных;
> запросы общего назначения.
Запросы использующиеся только в режиме FB помечены звездочкой
только в XM помечены двумя звездочками - игнорируются в режиме SJ. В
программе пользователя достаточно указать первые шесть символов имени
программного запроса.
Программный Код Функ- Назначение
запрос EMT цион.
код
---------------------------------------------------------------------
.CHCOPY * 375 13 Открывает канал для ввода и логически связыва
ет его с открытым каналом другого задания
.CLOSE 374 6 Закрывает канал и освобождает его для исполь-
зования в других операциях
.DELETE 375 0 Стирает файл с тома указанного устройства
.ENTER 375 2 Резервирует обдасть на томе указанного устрой
ства для создания нового файла
.LOOKUP 375 1 Открывает существующий файл для ввода и/или
вывода на указанном канале�
- 26 -
.PURGE 374 3 Освобождает канал
.RENAME 375 4 Переименовывает файл. Недопустим в операциях
с магнитной лентой
.REOPEN 375 6 Обеспечивает восстановление параметров, кото-
рые запоминались по запросу .SAVESTATUS и
повторно открывает канал для ввода-вывода
.SAVESTATUS 375 5 Запоминает параметры состояния открытого фай-
ла в памяти и освобождает канал
.READ 375 10 Передает данные по указанному каналу в буфер
памяти и возвращает управление программе поль
зователя, как только запрос на чтение данных
будет поставлен в очередь ввода-вывода
.READC 375 10 Передает данные по указанному каналу в буфер
памяти и возвращает управление программе поль
зователя, как только запрос на чтение данных
будет поставлен в очередь ввода-вывода. После
окончания чтения, управление передается подп-
рограмме завершения
.READW 375 10 Передает данные по указанному уканалу в буфер
памяти и возвращает управление программе поль
зователя после окончания операции
.WRITE 375 11 Передает данные по указанному каналу на уст-
ройство и возвращает управление программе
пользователя, как только запрос на передачу
данных будет поставлен в очередь вода-вывода
.WRITC 375 11 Передает данные по указанному каналу на уст-
ройство и возвращает управление программе
пользователя, как только запрос на передачу
данных будет поставлен в очередь ввода-вывода
После окончания записи, управление передается
подпрограмме завершения�
- 27 -
.WRITW 375 11 Передает данные по указанному каналу на уст-
ройство и возвращает управление программе
пользователя после окончания передачи данных
.RCVD * Принимает сообщения или данные, передаваемые
.RCVDC * 375 26 другой программой. Аналогичны запросам
.RCVDW * .READ , .READC , .READW
.SDAT * 375 25 Передает сообщения или данные другой програм-
.SDATC * ме. Аналогичны запросам
.SDATW * .WRITE , .WRITC , .WRITW
.TTYIN 340 - Передает один символ из буфера терминала в R0
.TTINR
.TTYOUT 341 - Передает один символ из R0 в буфер терминала
.TTOUTR
.PRINT 351 - Выдает на печать строку символов КОИ-7
.MTIN * 374 37 В мультитерминальном режиме аналогично .TTYIN
.MTOUT * 374 37 В мультитерминальном режиме аналогично .TTYOU
.MTPRNT * 374 37 В мультитерминальном режиме аналогично .PRINT
.SPFUN * 375 32 Выполняет специальные функции для магнитных
лент и гибких дисков
.CDFN 375 15 Определяет дополнительные каналы для операций
ввода-вывода
.CHAIN 374 10 Передает управление другой фоновой программе
.CRAW ** 374 36 Создает окно виртуального адреса
.CRRG ** 374 36 Создает динамическую область физическ. памяти
.CMKT 375 23 Аннулирует один или несколько запросов .MRKT�
- 28 -
.CNTXSW * 375 33 Определяет ячейки памяти для операции переклю
чения контекста
.CSIGEN 344 - Вызывает работу Интерпретатора командной стро
ки в общем режиме
.CSISPC 345 - Вызывает работу Интерпретатора командной стро
ки в специальном режиме
.CSTAT * 375 27 Позволяет получить информацию о состоянии
канала
.DATE 374 12 Пересылает текущую дату в регистр R0
.DEVICE * 375 14 Позволяет запретить прерывание от устройства
в режиме FB после окончания выполнения прог-
раммы
.DSTATUS 342 - Позволяет получить информацию о состоянии
устройства
.ELAW ** 374 36 Аннулирует окно виртуального адреса
.ELRG ** 374 36 Аннулирует динамическую область физической па
мяти и делает ее свободной для использования
другим заданием
.EXIT 350 - Завершает выполнение программы пользователя и
передает управление Клавиатурному монитору
.FETCH 343 - Загружает драйвер устройства
.GMCX ** 374 36 Пересылает программе информацию о состоянии
окна
.GTIM 375 21 Определяет текущее время дня
.GTJB 375 20 Определяет параметры выполняемого задания
.GTLIN 345 - Принимает входную строку с терминала или из
косвенного файла�
- 29 -
.GVAL 376 34 Пересылает в R0 содержимое указанной ячейки
монитора
.HERR 374 5 Отменяет действие запроса .SERR
.HRESET 357 - Прекращает все операции ввода-вывода и выпол-
няет функции запроса .SRESET
.INTEN - - Сообщает монитору о том,что произошло преры-
вание от устройства и устанавливает приоритет
процессора на соответствующий уровень
.LOCK 346 - Делает программу USR резидентной в памяти до
тех пор, пока не будет выполнен .EXIT или
.UNLOCK . Если необходимо,свопирует программу
пользователя
.MAP** 374 36 Отображает предварительно созданное окно вир-
туального адреса
.MFPS - - Выбирает содержимое PSW
.MRKT 375 22 Планирует запуск подпрограммы завершения че-
рез определенный интервал времени
.MTATCH* 374 37 Устанавливает связь между заданием и опреде-
ленным терминалом
.MTDTCH* 374 37 Прерывает связь указанного терминала с зада-
нием и освобождает его для использования дру-
гим заданием
.MTSET* 374 37 Устанавливает и модифицирует характеристики
терминала в мультитерминальном режиме
.MTGET* 374 37 Определяет состояние указанного терминала
.MTPS - Устанавливает PSW�
- 30 -
.MTRCTO* 374 37 Обеспечивает вывод на указанный терминал
.MWAIT* 374 11 Переводит текущее задание в состояние ожи-
дания до завершения передачи данных
.PROTECT* 375 31 Закрепляет один из векторов (адреса от 0
до 476) за данным заданием
.QSET 353 - Устанавливает размер очереди ввода -вывода
для монитора
.RCTRLO 355 - Обеспечивает вывод на терминал
.RELEAS 343 - Удаляет драйвер устройства из памяти
.RSUM* 374 2 Возобновляет выполнение задания, которое было
прервано по запросу .SPND
.SCCA 374 35 Позволяет блокировать выполнение команды СУ/С
.SERR 374 4 Блокирует прерывание программы при обнаруже-
нии монитором условий ошибок
.SETTOP 354 - Определяет верхнюю границу памяти для выпол-
няемого задания
.SFPA 375 30 Устанавливает в программе пользователя адрес
подпрограммы обработки прерывания от блока
плавающей запятой (БПЗ)
.SPND* 374 1 Приостанавливает выполнение задания
.SRESET 352 - Восстанавливает каналы ввода -вывода и удаля-
ет драйверы устройств из памяти
.SYNCH - - Обеспечивает возможность выполнения програм-
мных запросов в подпрограмме обработки преры-
вания�
- 31 -
.TLOCK 374 7 Определяет, используется ли USR в данный мо-
мент другим заданием. Если USR не использует-
ся, то выполняется .LOCK
.TRPSET 375 3 Устанавливает обработку прерываний по 4-ому
или 10-ому векторам в программе пользователя
.TWAIT* 375 24 Приостанавливает выполнение задания на ука-
занный интервал времени
.UNLOCK 347 - Освобождает программу USR, если ранее не был
выполнен запрос .LOCK и,если необходимо,вновь
загружает программу пользователя
.UNMAP** 374 36 Отменяет действие запроса .MAP
.UNPROTECT 374 31 Отменяет действие запроса .PROTECT
.WAIT 374 0 Ожидает завершения операции ввода-вывода на
указанном канале
Для выполнения некоторых программных запросов необходимо,что-
бы программа монитора USR находилась в оперативной памяти. .CLOSE
на устройствах нефайловой структуры (LP: ,TT: ,PC: , и т.д.) не тре-
бует наличия USR в памяти.
Программа USR не является реентерабельной; если USR использу-
ется одним заданием (в режиме FB), другое задание,требующее USR,будет
ждать его освобождения.�
- 32 -
Программный Требование USR
запрос --------------------------------------------
Режим SJ Режим FB Режим XM
--------------------------------------------------------------------
.CDFN да* нет нет
.CHAIN нет нет нет
.CHCOPY - нет нет
.CLOSE 1) да да да
.CMKT - нет нет
.CNTXSW - нет нет
.CSIGEN да да да
.CSISPC да да да
.CSTAT - нет нет
.DATE нет нет нет
.DELETE да да да
.DEVICE - нет нет
.DSTATUS да да да
.ENTER да да да
.EXIT да да да
.FETCH/.RELEAS да да да
.SFPA нет нет нет
.GTIM нет нет нет
.GTJB - нет нет
.GTLIN да* да да
.GVAL нет нет нет
.HERR/.SERR нет нет нет
.HRESET да* нет нет
.LOCK 2) да да да
.LOOKUP да да да
.MRKT - нет нет
.MTGET - нет нет
.MTIN - нет нет
.MTOUT - нет нет
.MTPRNT - нет нет
.MTSET - нет нет
.MWAIT - нет нет
.PRINT нет нет нет�
- 33 -
.PROTECT - нет нет
.PURGE нет нет нет
.QSET да* да* да*
.RCTRLO нет нет нет
.RCVD/.RCVDC/.RCVDW - нет нет
.READ/.READC/.READW нет нет нет
.RENAME да да да
.REOPEN нет нет нет
.RSUM/.SPND - нет нет
.SAVESTATUS нет нет нет
.SDAT/.SDATC/.SDATW - нет нет
.SCCA нет нет нет
.SETTOP нет нет нет
.SPFUN нет нет нет
.SRESET да* нет нет
.TLOCK 3) да да да
.TRPSET нет нет нет
.TTIRN/.TTYIN нет нет нет
.TTOUTR/.TTYOUT нет нет нет
.TWAIT - нет нет
.UNLOCK нет нет нет
.UNPROTECT - нет нет
.WAIT нет нет нет
.WRITE/.WRITC/.WRITW нет нет нет
1) если канал был открыт по .ENTER
2) если USR находится в состоянии свопинга.
3) если USR не используется другим заданием.
Запосы,помеченные в табл.14 звездочкой,всегда требуют загруз-
ки новой копии USR перед их выполнением (даже, если USR в этот момент
находится в памяти). Прочерк в графе табл.14 означает, что запрос не
используется в данном режиме.�
- 34 -
4.1.4. Программные запросы для операций с файлами
4.1.4.1. .CHCOPY (режим FB)
Запрос .CHCOPY открывает канал для ввода данных и логически
связывает его с файлом другого задания открытым для ввода или вывода.
Запрос может использоваться как основной так и фоновой программами.
Запрос .CHCOPY допустим только для файлов, которые находятся на дис-
ках; одноко система не обнаружит ошибки, если используется другое ус-
тройство.Для того,чтобы закрыть канал, открытый по .CHCOPY необходимо
использовать запросы .CLOSE или .PURGE.
Формат макрокоманды
.CHCORY area, chan, ochan
где area - адрес блока из двух слов аргументов EMT;
chan - номер канала,используемого заданием для чтения данных;
ochan- номер канала другого задания.
4.1.4.2. .CLOSE
Запрос .CLOSE завершает действие на указанном канале и осво-
бождает его для использования в другой операции.Для выполнения запро-
са драйвер соответствующего устройства должен находиться в памяти.
Формат макрокоманды
.CLOSE chan
Для того, чтобы сделать файл постоянным на томе необходимо на
соответствующем канале, открытом для вывода,выполнить запрос .CLOSE .
Запрос .CLOSE на неоткрытом канале игнорируется.
.CLOSE , выполняемый на канале, который был открыт по .ENTER
вызывает корректировку справочника устройства для определения файла
как постоянного на этом устройстве. Если файл открыт по .LOOKUP , то
корректировка справочника не происходит.
Если устройство, связанное с указанным каналом, уже содержит
файл с тем же именем и типом, что и вновь созданный файл, то старая
копия файла стирается, когда новый файл становится постоянным.
Примечание. Монитор информирует программу пользователя об
ошибке при выполнении запроса .CLOSE только в том случае, если до
этого был выполнен запрос .SERR .�
- 35 -
4.1.4.3. .DELETE
Запрос .DELETE стирает файл с указанного устройства.
.DELETE недопустим для магнитных лент.
Формат макрокоманды
.DELETE area, chan, dblk
где area - адрес блока из двух слов аргументов EMT;
dblk - адрес блока устройства, в котором описан файл для операции
стирания.
Примечания:
1. Обращение к открытому каналу приводит к ошибке.
2. Стертый файл в листинге справочника устройства будет опи-
сан как неиспользуемая область (UNUSED) того же размера.
3. Запрос .DELETE на устройствах нефайловой структуры игнори-
руется.
4. При выполнении .DELETE необходимо, чтобы драйвер соответ-
ствующего устройства находился в памяти.
5. После выполнения .DELETE , указанный канал освобождается
для дальнейшего использования.
4.1.4.4. .ENTER
Запрос .ENTER резервирует область на определенном устройст-
ве и создает в справочнике этого устройства временную запись для ука-
занного файла. По запросу .ENTER монитор идентифицирует номер канала,
определенного в запросе,с указанным файлом. Заметим,что если програм-
ма имеет оверлейную структуру, то 15-й канал используется оверлейным
драйвером и не должен модифицироваться программой пользователя.
Формат макрокоманды
.ENTER area, chan, dblk, len, seqn
где area - адрес блока из 4-х слов аргументов EMT;
dblk - адрес блока устройства, в котором описан создаваемый файл;
len - длина файла;
seqn - последовательный номер файла для магнитной ленты;�
- 36 -
Значение Действие монитора
аргумента len
---------------------------------------------------------------------
0 Отводит для файла половину наибольшей свободной обла-
сти или полностью вторую по величине свободную об-
ласть на томе, в зависимости от того, какая из них
больше
М Отводит для файла М блоков
-1 Отводит для файла наибольшую свободную область на
томе
Значение Действие монитора
аргумента seqn
---------------------------------------------------------------------
0 Перематывает магнитную ленту и производит поиск мет-
ки LEOT (логический конец ленты)
n Устанавливает магнитную ленту в положение, соответ-
ствующее файлу с последовательным номером n
-1 Производит поиск LEOT
-2 Перематывает магнитную ленту и производит поиск LEOT
или файла с тем же именем, что и вновь создаваемый
файл
Файл, созданный по .ENTNR не является постоянным до тех пор,
пока на соответствующем канале не будет выполнен запрос .CLOSE .
Запросы .LOOKUP и .SAVESTATUS недействительны для файлов, которые не
являются постоянными. Однако чтение такого файла возможно посредством
обращения к номеру соответствующего блока. Если на соответствующем
канале выполняется .CLOSE , то любой существующий на томе постоянный
файл с тем же именем и типом стирается и новый файл становится посто-
янным. Хотя область для файла резервируется при выполнении ENTER ,
фактическая длина файла определяется после выполнения .CLOSE .
Каждое задание может иметь до 256. одновременно открытых фай-
лов. Если требуется,все 256. файлов могут быть открыты для вывода по-
средством .ENTER . Для выполнения .ENTER необходимо,чтобы драйвер со-
ответствующего устройства был в памяти. После выполнения .ENTER реги-
стр R0 будет содержать размер области тома, отведенной для создания
нового файла.�
- 37 -
4.1.4.5. .LOOKUP
Запрос .LOOKUP связывает указанный канал с устройством и/или
существующим файлом для выполнения операций ввода-вывода.Используемый
канал будет 'занят' до тех пор, пока не будет выполнен один из следу-
ющих запросов: .CLOSE, .SAVESTATUS, .SRESET, .HRESET, .PURGE, .CSIGEN
(если номер канала в диапазоне от 0 до 10 ).
Заметим, что если программа имеет оверлейную структуру, то
15-ый канал используется оверлейным драйвером и не должен изменяться
программой пользователя.
Если первое слово имени файла в блоке устройства (dblk) со-
держит нуль и устройство есть устройство файловой структуры, то абсо-
лютный блок 0 этого устройства определяется как 'начало файла' (в
этом случае говорят о нефайловом .LOOKUP) .
Этот метод допускает ввод-вывод для любого физического блока на уст-
ройстве. Если имя файла определено для устройства нефайловой структу-
ры, то имя файла игтнорируется.
Для выполнения .LOOKUP драйвер соответствующего устройства
должен быть в памяти.После выполнения .LOOKUP , регистр R0 будет со-
держать длину открытого файла в блоках. После выполнения .LOOKUP для
устройств несправочной структуры, регистр R0 будет содержать ноль.
Формат макрокоманды
.LOOKUP area, chan, dblk, seqn
где area - адрес блока из 3-х слов аргументов ЕМТ;
seqn - последовательный номер файла для магнитной ленты;
Значение Действие монитора
аргумента seqn
---------------------------------------------------------------------
-1 Производит поиск файла с текущего положения магнит-
ной ленты
0 Перематывает магнитную ленту и производит поиск файла
n (n>0) Устанавливает магнитную ленту в положение соответст-
вующее файлу с последовательным номером n�
- 38 -
4.1.4.6. .PURGE
Запрос .RURGE освобождает указанный канал для использования в
другой операции без выполнения каких-либо функций запросов .HRESET ,
.SRESET, .SAVESTATUS или .CLOSE . Временный файл открытый на этом ка-
нале по .ENTER ,аннулируется. Запрос .PURGE на свободном канале игно-
рируется.
Формат макрокоманды
.PURGE chan
4.1.4.7. .RENAME
Запрос RENAME изменяет имя файла (недопустим в операциях с
магнитной лентой).
Формат макрокоманды
RENAME area, chan, dblk
где area - адрес блока из двух слов аргументов ЕМТ;
dblk - адрес блока,содержащего имя устройства и имя файла,которые
требуется изменить, и новое имя устройства и имя файла в кодах
Radix-50.
Пример:
.RENAME #AREA, #7, #DBLK
BCS RNMERR
.
.
.
DBLK: .RAD50 /DX1 OLDFIL MAC/
.RAD50 /DX1 NEWFIL MAC/
Если файл с тем же именем,что и новое,уже существует на томе,
то он стирается. Повторное определение имени устройства DX1 в новой
спецификации файла необходимо для правильного выполнения операции и
не должно опускаться. После выполнения .RENAME используемый канал ос-
вобождается.Запрос .RENAME требует, чтобы драйвер соответствующего
устройства был в памяти перед выполнением операции.�
- 39 -
4.1.4.8. .REOPEN
Запрос .REOPEN повторно связывает указанный канал с файлом,
для которого был выполнен запрос .SAVESTATUS.Совместное использование
запросов .SAVESTATUS и .REOREN требуется для одновременного обращения
к большому числу файлов. Файлы открываются по .LOOKUP и параметры их
состояния запоминаются по .SAVESTATUS . Когда требуются данные из
файла, .REOPEN обеспечивает программе возможность чтения этих данных.
Не является обязательным выполнение .REOPEN на том же канале,на кото-
ром были выполнены .LOOKUP и .SAVESTATUS .
Формат макрокоманды
.REOPEN area, chan, sblk
где area - адрес блока из 2-х слов ЕМТ;
sblk - адрес блока из 5-ти слов,где запоминается информация о
состоянии канала.
4.1.4.9. .SAVESTATUS
Запрос .SAVESTATUS запоминает пять слов информации о состоя-
нии канала в указанной пользователем области памяти. Эти слова содер-
жат полную информацию,которая требуется операционной системе для точ-
ного определения файла. После выполнения .SAVESTATUS указанный канал
освобождается. Если необходимо получить данные по этому каналу,то ис-
пользуется запрос .REOPEN .Запрос .SAVESTATUS может использоваться в
том случае,если файл был открыт по .LOOKUP .Если был использован
.ENTER , то .SAVESTATUS игнорируется и генерируется ошибка. Запрос
.SAVESTATUS недопустим в операциях с файлами, которые находятся на
магнитной ленте.
Запросы .SAVESTATUS и .REOPEN используются для работы с
большим числом файлов при ограниченном числе каналов.
Формат макрокоманды
.SAVESTATUS area, chan, cblk
где area - адрес блока из 2-х слов аргументов ЕМТ;
cblk - адрес блока из 5-ти слов,в который будет записана информа-
ция о состоянии канала; адрес должен быть указан в пределах программы
пользователя.�
- 40 -
4.1.5. Программные запросы для организации
ввода-вывода
4.1.5.1. .READ, .READC, .READW
Система RT11 предусматривает три режима выполнения операций
ввода-вывода:
.READ/.WRITE
.READS/.WRITC
.READW/.WRITW
При использовании запросов .READ и .READC должны быть опре-
делены дополнительные элементы для очереди ввода-вывода (п.4.1.6.31.)
Запрос .READ используется для передачи определенного количе-
ства слов по указанному каналу в буфер памяти. Управление передается
программе пользователя немедленно после начала выполнения запроса
.READ . После завершения передачи данных никаких действий не происхо-
дит.
Формат макрокоманды
.READ area, chan, buf, wcnt, blk
где area - адрес блока из 5-ти слов аргументов ЕМТ;
buf - адрес буфера для чтения данных;
wcnt- количество слов для чтения;
blk - номер блока для операции чтения; если был использован фай-
ловый .LOOKUP , то blk - номер блока относительно начала файла; если
был использован нефайловый .LOOKUP , то blk - абсолютный номер блока
устройства; программа пользователя должна модифицировать blk перед
его повторным использованием.
Когда программе пользователя нужно выполнить чтение данных,
может быть использован запрос .WAIT . Это гарантирует то, что данные
будут прочитаны полностью. Если во время передачи данных произошла
ошибка, запрос .WAIT сообщает о ней.
Запрос .READC передает определенное количество слов по ука-
занному каналу в память.Управление программе пользователя будет пере-
дано сразу после начала выполнения .READC . Попытка чтения данных по-
сле конца файла вызывает передачу управления вызывающей программе с
установлением С-разряда и записью нуля в байт ошибок (52-байт). После
выполнения .READC управление будет передано подпрограмме завершения,�
- 41 -
адрес которой указан в запросе. Если в подпрограмме завершения выпол-
няется команда RTS PC ,то управление возвращается программе пользова-
теля.
Формат макрокоманды
.READC area, chan, buf, wcnt, crtn, blk
где area - адрес блока из 5-ти слов аргументов ЕМТ;
buf -адрес буфера для чтения данных;
wcnt -количество слов для чтения;
crtn -адрес подпрограммы завершения (адрес должен быть больше
500);
blk -см. .READ
При запуске подпрограммы завершения:
1) регистр R0 содержит слово состояния канала; если в R0 ус-
тановлен разряд 0 , то произошла аппаратная ошибка во время передачи
данных;
2) регистр R1 содержит номер канала для операции; эта инфор-
мация необходима, когда одна и та же подпрограмма завершения исполь-
зуется в нескольких операциях.
Запрос .READW передает определенное количество слов по ука-
занному каналу в память. Управление передается программе пользователя
после выполнения запроса .READW или при обнаружении ошибки.
Формат макрокоманды
READW area, chan, buf, wcnt, blk
где area -адрес блока из 5-ти слов аргументов ЕМТ;
wcnt -количество слов для чтения (каждый запрос может передать
максимально 32К слов);
blk -см. запрос .READ
Если после завершения запроса будет установлен С-разряд, то
это указывает на то, что на канале произошла аппаратная ошибка. Если
ошибки не было, то данные находятся в памяти, начиная с указанного
адреса. В режиме FB одно из заданий может выполняться в то время как
другое задание ожидает завершения операции.
4.1.5.2. .WRITE, .WRITC, .WRITW
При использовании запросов .WRITE и .WRITC должны быть опреде-
лены дополнительные элементы для очереди ввода-вывода (п.4.1.6.31.).�
- 42 -
Запрос .WRITE передает указанное количество слов из памяти по
указанному каналу. Управление программе пользователя передается сразу
же после того, как запрос будет поставлен в очередь.
Формат макрокоманды
.WRITE area, chan, buf, wcnt,blk
где area -адрес блока из 5-ти слов аргументоа ЕМТ;
buf -адрес буфера памяти,который используется для вывода;
wcnt -количество слов для записи;
blk -номер блока для операции записи; если используется файло-
вый .LOOKUP или .ENTER , то blk - номер блока относительно начала
файла; если был использован нефайловый .LOOKUP или .ENTER , то blk -
абсолютный номер блока устройства; программа пользователя должна мо-
дифицировать blk перед его повторным использованием.
Запрос .WRITC передает заданное количество слов из памяти по
указанному каналу.Управление передается программе пользователя немед-
ленно после начала выполнения .WRITC .После выполнения запроса управ-
ление будет передано подпрограмме завершения.По команде RTS PC управ-
ление возвращается программе пользователя.
Формат макрокоманды
.WRITC area, chan, buf, wcnt, crtn, blk
где area -адрес блока из 5-ти слов аргументов ЕМТ;
buf -адрес буфера памяти,который используется для вывода;
wcnt -количество слов для записи;
crtn -адрес подпрограммы завершения;
blk -см. запос .WRITE .
О содержимом регистров R0 и R1 (при запуске подпрограммы за-
вершения) см.п.4.1.5.1.
Запрос .WRITW передает заданное количество слов из памяти по
указанному каналу. Управление передается программе пользователя после
завершения .WRITW .
Формат макрокоманды
.WRITW area, chan, buf, wcnt, blk
где area - адрес блока из 5-ти слов аргументов ЕМТ;
buf -адрес буфера,который используется для вывода;
wcnt -количество слов для записи;
blk -см.запрос .WRITE .�
- 43 -
4.1.5.3. .RCVD, .RCVDC, .RCVDW (режим FB).
Существуют три формы запроса получения данных,которые исполь-
зуются вместе с запросами .SDAT . Запросы .RCVD аналогичны запросам
.READ , но в отличие от них осуществляют прием данных из другой про-
граммы, а не с устройства. При использовании запросов .RCVD и RCVDC
должны быть определены дополнительные элементы для очереди ввода-вы-
вода (п.4.1.6.31).
Запрос .RCVD используется для получения данных или сообщений,
посылаемых другой программой. Управление вызывающей программе переда-
ется сразу же после начала выполнения запроса .RCVD .При необходимо-
сти, с .RCVD используется запрос .MWAIT ,который задерживает выполне-
ние программы до окончания операции.
Формат макрокоманды:
.RCVD area, buf, wcnt
где area -адрес блока из 5-ти слов аргументов ЕМТ;
buf -адрес буфера для сообщений (данных);
wcnt -количество передаваемых слов.
После выполнения монитором запроса .RCVD ,первое слово буфера
(buf) будет содержать действительное количество переданных слов.Таким
образом,область памяти для приема данных должна быть,по крайней мере,
на одно слово больше размера передаваемого сообщения.
Комбинация .SDAT/ .RCVD может быть использована для передачи
как нескольких слов, так и целого буфера. Операция по запросу .RCVD
заканчивается только после выполнения .SDAT из другой программы.
Запрос .RCVDC осуществляет прием данных и запускает подпро-
грамму завершения после получения сообщения (аналогично .READC) .
Формат макрокоманды
.RCVDC area, buf, wcnt, crtn
где crtn -адрес подпрограммы завершения.
Запрос .RCVDW осуществляет прием данных и ожидает окончания
операции. Выполнение вызывающей программы задерживается до окончания
передачи сообщения другой программой.
Формат макрокоманды
.RCVDW area, buf, wcnt
Как и в .RCVD , первое слово буфера для .RCVDC и .RSVDW будет
содержать действительное количество переданных слов.�
- 44 -
4.1.5.4. .SDAT, .SDATC, .SDATW (режим FB)
Запросы .SDAT, .SDATC, .SDATW используются вместе с запросами
.RCVD, .RCVDC, .RCVDW для передачи сообщений или данных между прог-
раммами под управлением мониторов FB или XM .
Запросы .SDAT, .SDATC, SDATW аналогично запросам .WRITE,
.WRITC, .WRITW ,только осуществляют передачу данных не на устройство,
а другой программе. При использовании запросов .SDAT и .SDATC должны
быть определены дополнительные элементы для очереди ввода-вывода
(п.4.1.6.31).
Формат макрокоманды
.SDAT area, buf, wcnt
где area -адрес блока из 5-ти слов аргументов ЕМТ;
buf -адрес буфера для сообщений (данных),которые будут переданы;
wcnt -количество слов для передачи.
Формат макрокоманды
.SDATC area, buf, wcnt, crtn
где area -адрес блока из 5-ти слов аргументов ЕМТ;
buf -адрес буфера для сообщений (данных),которые будут переданы;
wcnt -количество слов для передачи;
crtn -адрес подпрограммы завершения.
Формат макрокоманды
.SDATW area, buf, wcnt
где area -адрес блока из 5-ти слов аргументоа ЕМТ;
buf -адрес буфера для сообщений (данных),которые будут переданы;
wcnt -количество слов для передачи.
4.1.5.5. .TTYIN, .TTINR
Запросы .TTYIN и .TTINR используются для передачи символов с
терминала в программу пользователя.
Макрорасширение для .TTYIN :
ЕМТ 340
BCS .-2
Макрорасширение для .TTINR :
EMT 340�
- 45 -
Запрос .TTYIN циклится в ожидании подачи символа или строки
символов,в то время как пользователь может ожидать,или продолжать вы-
полнение программы, используя .TTINR .Если по завершению выполнения
.TTINR устанавливает С-разряд, то это значит, что в буфере терминала
символ отсутствует (пользователь еще не напечатал его). В режиме FB
.TTINR не устанавливает С-разряд, если не установлен 6-ой разряд в
слове состояния задания (PSW).
Существует два режима ввода с терминала.Режим ввода определя-
ется содержимым 12-го разряда в PSW. Если содержимое 12-го разряда
нуль,то говорят об общем режиме ввода-вывода.В этом режиме выполняют-
ся следующие действия:
1) монитор обеспечивает 'эхо' всем символам,вводимым с терми-
нала;
2) стирание символов и строк осуществляется с помощью команд
ЗБ и СУ/U соответственно;
3) для передачи символов программе необходимо подать ВК ,
ПС или команды СУ/Z или СУ/C ;возврат каретки и перевод строки также
передаются программе пользователя.
Если 12-ый разряд в PSW равен единице, то устанавлмвается
специальный режим ввода-вывода. В этом режиме выполняются следующие
действия:
1) монитор не выдает 'эхо' символам,вводимым с терминала;кро-
ме СУ/C и СУ/D ;
2) СУ/U и ЗБ не выполняют своих функций;
3) символы сразу же передаются программе пользователя.
В специальном режиме программа пользователя должна сама вы-
полнять печать вводимых символов, если это необходимо (исключение со-
ставляют СУ/C и СУ/D ).
12-ый разряд в PSW должен устанавливаться программой пользо-
вателя. Этот разряд очищается, если управление передается монитору.
Действия СУ/F и СУ/B не зависят от содержимого 12-го разряда.
Команды СУ/S и СУ/Q выполняются монитором,если только в режи-
ме FB ранее не была выполнена команда SET TT NOPAGE .
Если в режиме FB сделан запрос ввода,а символа нет в наличии,
то выполнение программы блокируется до тех пор,пока в буфере ввода не
появится символ.Это справедливо для TTYIN и TTINR и не зависит от ре-
жима ввода. Для того,чтобы продолжить выполнение программы (и обеспе-
чить установку С- разряда в случае отсутствия символа в буфере ввода)
необходимо установить перед .TTINR 6-й разряд PSW. 6-й разряд очи-
щается после окончания выполнения программы.�
- 46 -
Запрос .TTYIN не обслуживает косвенные файлы. Для этой цели
необходимо воспользоваться запросом .GTLIN .
Формат макрокоманды
.TTYIN char
.TTINR
где char -адрес ячейки, куда пересылается код вводимого символа; если
char указан в запросе,то код пересылается в указанную ячейку и в R0 ;
если char не указан,то в R0 .
4.1.5.6. .TTYOUT, .TTOUTR
Запросы .TTYOUT, .TTOUTR используются для передачи символов
из R0 в буфер терминала. Действия этих запросов аналогичны действиям
запросов .TTYIN, .TTINR .Если буфер терминала полон,то запрос .TTYOUT
ожидает появления в буфере свободного места для выводимого символа,
тогда как .TTOUTR не ожидает свободного места и символ, находящийся в
R0 , на терминал не выводится. Если после завершения .TTOUTR устанав-
ливает С-разряд, то это говорит о том,что в буфере нет свободного ме-
ста и символ не был выведен на терминал.В режиме FB запрос .TTOUTR не
устанавливает С-разряд;выполение программы блокируется до появления в
буфере свободного места. Для того,чтобы продолжить выполнение програм
мы и обеспечить установку С-разряда, необходимо в ССЗ установить 6-ой
разряд.
Если в основном задании установлен 6-ой разряд в ССЗ,то запро
сы .TTYIN и .TTYOUT будут вызывать блокировку фонового задания.Каждое
задание в основном или фоновом режиме имеет свое собственное ССЗ ,и
поэтому они могут использовать различные режимы работы терминала неза
висимо друг от друга.
Формат макрокоманды
.TTYOUT char
.TTOUTR
где char -адрес ячейки, содержащей код символа, который будет пересы-
латься в R0 с последующим выводом на терминал; если char не указан,
на терминал выводится содержимое R0 .�
- 47 -
4.1.5.7. .PRINT
Запрос .PRINT вызывает печать строки символов КОИ-7 на сис-
темном терминале.
В режиме FB каждому сообщению может предшествовать побужда-
ющий знак B> или F> , в зависимости от того,какое задание его печата-
ет ( B> -фоновое, F> -основное). Это происходит в случае переключения
системного терминала на обслуживание другого задания.
Строка текста, которая выводится на печать,может оканчиваться
как нулевым (0) байтом, так и байтом 200.В первом случае,в отличии от
второго, вывод автоматически заканчивается ВК и ПС .
Управление возвращается программе пользователя после того,как
все символы будут записаны в буфер вывода монитора.
Основное задание печатает сообщение сразу же, независимо от
состояния фонового задания.
Таким образом, для печати срочных сообщений должен использо-
ваться запрос .PRINT , а не .TTYIN или .TTYOUT .
Если фоновое задание печатает побуждающий знак и звездочку,
то системный терминал будет принадлежать ему и запросы .TTYOUT из
основного задания выполняться не будут, пока для фонового не будет
выполнено ВК .
Формат макрокоманды
.PRINT addr
где addr -адрес строки,которую необходимо напечатать.
4.1.5.8. .MTIN (вариант FB и XM )
Запрос.MTIN является мультитерминальной формой запроса.TTYIN.
Запрос .MTIN пересылает знак из буфера ввода монитора в буфер,указан-
ный пользователем. Терминал должен быть логически связан с текущим
заданием. Если запрос выполнен успешно, то модифицированный адрес бу-
фера пользователя будет записан в R0. Если разряд TCBIT установлен в
слове M.TSTS (п.4.1.6.26.), то запрос .MTIN устанавливает С- разряд и
передает управление вызывающей программе, если ввод с терминала нево-
зможен (нет строки,бит TTSPC очищен;пуст буфер ввода,бит TTSPC устано
влен).�
- 48 -
В противном случае , .MTIN будет ожидать операции ввода и,тем самым,
выполнение задания будет приостановлено.
Формат макрокоманды
.MTIN area,addr, unit
где area -адрес блока из 3-х слов аргументов ЕМТ;
addr -адрес буфера пользователя;
unit -логический номер терминала (ЛНТ).
4.1.5.9. .MTOUT (вариант FB и XM )
Запрос .MTOUT является мультитерминальной формой запроса
.TTYOUT .Запрос .MTOUT пересылает символ из буфера пользователя в бу-
фер вывода терминала.Терминал должен быть логически связан с заданием
Модифицированный адрес буфера пользователя будет записан в R0 , если
запрос выполнен успешно. Если в буфере ввода нет свободного места и
разряд TCBIT установлен в слове M.TSTS (п.4.1.6.26.), то .MTOUT уста-
навливает С-разряд и передает управление вызывающей программе. Если
разряд TCBIT очищен, выполнение задания приостанавливается, пока не
появится свободного места в буфере вывода.
Формат макрокоманды
.MTOUT area, addr, unit
где area -адрес блока из 3-х слов аргументов ЕМТ;
addr -адрес буфера пользователя;
unit -логический номер терминала.
4.1.5.10. .MTPRNT (вариант FB и XM )
Запрос .MTPRNT является мультитерминальной формой запроса
.PRINT .Он выводит строку символов на указанный терминал.
Формат макрокоманды
.MTPRNT area, addr, unit
где area -адрес блока из 3-х слов аргументов ЕМТ;
addr -адрес строки, которую надо напечатать (.ASCII /line/ <200>
или .ASCIZ /line/ );
unit -логический номер терминала.�
- 49 -
4.1.5.11. .SPFUN
Запрос .SPFUN используется главным образом драйвером магнит-
ной ленты для выполнения специальных функций, таких как перемотка,
пропуск назад и т.д. Запрос .SPFUN может также использоваться с гиб-
кими дисками.
Формат макрокоманды
.SPFUN area, chan, func, buf, wcnt, blk[,crtn]
где area -адрес блока из 6-ти слов аргументов ЕМТ;
func -код функции,которая будет выполняться;
buf -адрес буфера;этот аргумент должен быть равен нулю, если для
операции буфер не требуется;
crtn -адрес подпрограммы завершения; если crtn не указан, то его
значение автоматически приравнивается нулю; если crtn равен нулю, то
управление программе пользователя будет передано после завершения
операции; если crnt равен 1,управление будет передано программе поль-
зователя немедленно после начала операции; если crtn=N ,то N - адрес
подпрограммы завершения ( N >500 ).
Аргументы chan, blk, wcnt те же, что и в .READ/.WRITE .Они испо-
льзуются только тогда,когда необходимо произвести запись на магнитную
ленту с расширенным межзонным промежутком.
Функция Код
---------------------------------------------
MT DX
---------------------------------------------------------------------
Перемотка 373
Запись метки EOF 377
Пропуск вперед 376
Пропуск назад 375
Запись 371 376
Чтение 370 377
Запись с расширенным
межзонным промежутком 374
Автономная перемотка 372
Для использования запроса .SPFUN необходимо, чтобы драйвер
соответствующего устройства находился в памяти и канал был связан
с файлом по запросу .LOOKUP .�
- 50 -
4.1.6. Запросы общего назначения
4.1.6.1. .CDFN
Запрос .CDFN используется для переопределения числа каналов
ввода-вывода.Каждое задание независимо от того является ли оно основ-
ным или фоновым,первоначально обеспечивается 16. каналами ввода-выво-
да (от 0 до 15). Запрос .CDFN позволяет увеличить число каналов до
255. (от 0 до 254). Область памяти для новых каналов определяется в
пределах программы пользователя. Под каждый канал ввода-вывода отво-
дится пять слов.Рекомендуется ,чтобы запрос .CDFN выполнялся в начале
программы перед операциями ввода-вывода.Если в программе используется
более одного запроса .CDFN , то области каналов для них не должны пе-
рекрывать друг друга, но могут иметь один и тот же начальный адрес.
Два запроса .SRESET и .HRESET восстанавливают первоначальное
число каналов (16.).Следовательно все запросы .CDFN должны выполнять-
ся повторно после использования .SRESET или .HRESET.
Заметим,что запрос .CDFN определяет новые каналы. Область па-
мяти для ранее определенных каналов не используется. Так,запрос .CDFN
для 20. каналов ввода-вывода(в то время как 16 первоначальных каналов
уже определены) создает 20 новых каналов ввода-вывода. Область для 16
первоначальных каналов не используется, но содержимое старых каналов
будет скопировано в новые.
Для программы с оверлейной структурой 15-й канал используется
оверлейным драйвером и не должен изменяться.
Формат макрокоманды
.CDFN area, addr, num
где area -адрес блока из 3-х слов аргументов ЕМТ;
addr -адрес области памяти для новых каналов;
num -число создаваемых каналов.
4.1.6.2. .CHAIN
Запрос .CHAIN позволяет одной фоновой программе инициировать
выполнение другой фоновой программы без вмешательства оператора.Этот
процесс может повторяться, и позволяет организовать последовательное
выполнение большого числа программ.
Ячейки 500-507 должны содержать имя устройства и имя файла
(в Radix-50), который необходимо вызвать. Ячейки 510-777 используются
для передачи информации между последовательно выполняемыми программа-
ми.�
- 51 -
Формат макрокоманды
.CHAIN
Примечания:
1. Содержимое областей оперативной памяти, за исключением об-
ласти памяти, которую занимает Резидентный монитор, и ячеек 500-777,
может изменяться после выполнения .CHAIN .
2. Каналы ввода - вывода остаются открытыми после выполнения
запроса .CHAIN для использования новой программой. Однако,каналы вво-
да-вывода, открытые по запросу .CDFN не могут использоваться.Програм-
ма, оставляющая файлы открытыми при выполнении .CHAIN не должна испо-
льзовать .CDFN . Нерезидентные драйверы устройств удаляются из памяти
при выполнении .CHAIN ,поэтому они должны быть вновь загружены новой
программой.
3. По 8-му биту ССЗ программа может определить, как она была
загружена - по запросу .CHAIN или по каманде RUN .Разряд устанавлива-
ется во время выполнения программы, если она была загружена с помощью
.CHAIN .Если программа,занимающая ячейки от 500 до 777, предназначена
для загрузки по запросу .CHAIN , то в ней должен быть установлен 8-й
разряд ССЗ во время ее трансляции. В этом случае программа будет заг-
ружена правильно. Если разряд не установлен,ячейки 500-777,содержимое
которых остается от предыдущей программы, могут вызвать неправильную
работу новой программы.
4. Для запроса .CHAIN характерны те же ошибки,что и для ко-
манды RUN .
4.1.6.3. .CMKT (вариант SJ)
Запрос .CMKT аннулирует один или несколько запросов .MRKT
(п.4.1.6.22.).
Формат макрокоманды
.CMKT area, id, time
где area -адрес блока из 3-х слов аргументов ЕМТ;
id -число, используемое для идентификации с запросом .MRKT ,
который необходимо аннулировать; если несколько запросов .MRKT име-
ют одинаковый id , то аннулируется тот из них,которому соответствует
наименьший неистекший интервал времени; если id=0 , то аннулируются
все запросы .MRKT;�
- 52 -
time -адрес блока из 2-х слов, в которые монитор записывает вели-
чину неиспользованного времени в аннулированном запросе; первое сло-
во содержит нижнюю границу интервала времени,второе - верхнюю грани-
цу; если адрес не указан, такой записи не происходит,если id=0, аргу-
мент time игнорируется.
Аннулированный запрос .MRKT освобождает соответствующий эле-
мент очереди.
4.1.6.4. .CNTXSW (режим FB)
Передавая управление от одного задания другому,монитор выпол-
няет операцию переключения контекста.Она заключается в сохранении си-
стемой необходимых параметров для однозначного определения и выполне-
ния задания. Эти параметры включают все регистры общего назначения,
ячейки 34-52, а также все регистры БПЗ, если запрос .SFPA выполнялся
с отличным от нуля адресом подпрограммы обработки прерывания от БПЗ.
Запрос .CNTXSW используется для определения ячеек памяти, ко-
торые будут дополнительно включены в операцию переключения контекста.
Иногда,для обоих заданий необходимо независимое использование
определенной ячейки памяти,которая не включена в обычную операцию пе-
реключения контекста.Например,если программа использует команду IOT ,
то она должна установить в векторе 20 адрес своей подпрограммы обра-
ботки прерывания по этой команде. А если оба задания - основное и фо-
новое используют команду IOT , то вектор 20 должен всегда содержать
соответствующий с выполняемым заданием адрес. Это достигается путем
включения ячеек 20 и 22 в список адресов запроса .CNTXSW .
Если запрос .CNTXSW указан в программе несколько раз, то мо-
нитор использует список адресов последнего из них.
Список адресов .CNTXSW не может быть в области свопинга USR
и его нельзя изменять в процессе работы программы.
Монитор XM игнорирует запрос .CNTXSW по двум причинам.Во-пер-
вых,виртуальные задания не разделяют ячейки памяти с другими задания-
ми.Во-вторых,векторы IOT, TRAP, BPT и вектор 250 автоматически вклю-
чаются монитором XM в операцию переключения контекста,и, следователь-
но,могут быть использованы другим заданием без .CNTXSW .�
- 53 -
Формат макрокоманды
.CNTXSW area, addr
где area -адрес блока из 2-х слов аргументов ЕМТ;
addr -адрес списка адресов (должен быть ограничен нулем); адреса
в списке должны быть четными и в пределах от 2 до 476 или в области
задания пользователя,или в пределах от 160000 до 177776.
4.1.6.5. .CSIGEN
Запрос .CSIGEN вызывает работу Интерпретатора комендной стро-
ки (CSI) в общем режиме.В этом режиме CSI осуществляет синтаксический
анализ командной строки и выполняет следующие функции:
1) загружает драйверы указанных устройств;
2) выполняет запросы.LOOKUP и/или .ENTER для указанных файлов
3) записывает в стек информацию о переключателях;
4) выполняет запрос .CLOSE на каналах 0-10 .
Область,которая отводится для драйверов устройств,должна быть
достаточной для одновременного размеще