Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
hobot, это значит
Олег, да не программер я ! Я не знаю что такое "код возврата". )
Вот ты бы почитал SYSMAC.HLP раз собрался что то ваять под RT-11 ведь
от штатных директив и запросов всё равно не денешься )))

Ты просил минимальную, на макро-11 и что бы просто выходила в систему, я ей в первой же строке написал "конец" без указания стартовой метки, не уверен что во всех вариантах монитора она заработает, может под каким нибудь вариантом трапниться, но под SJ работает так как я описал.

Выход в систему осуществляется грамотно наверное вот так:

Код:
 5.3.12. .EXIT
        ЗАПРОС .EXIT ВЫЗЫВАЕТ ОКОНЧАНИЕ  ВЫПОЛНЕНИЯ  ПРОГРАММЫ
   ПОЛЬЗОВАТЕЛЯ И ПЕРЕДАЕТ УПРАВЛЕНИЕ KMON.
        ПЕРЕД ВЫХОДОМ ИЗ ПРОГРАММЫ ВЫПОЛНЕНИЕ  ВСЕХ  ИНИЦИИРО-
   ВАННЫХ ОПЕРАЦИЙ ВВОДА-ВЫВОДА И /ИЛИ ПОДПРОГРАММ  ЗАВЕРШЕНИЯ
   БУДЕТ ЗАКОНЧЕНО. ВСЕ НЕВЫПОЛНЕННЫЕ ЗАПРОСЫ  .MRKT  И  .CMKT
   БУДУТ АННУЛИРОВАНЫ.
        ЕСЛИ ЧАСТЬ ФОНОВОЙ ПРОГРАММЫ ЗАНИМАЕТ  ОБЛАСТЬ  ПАМЯТИ
   KMON И USR, ТО ОНА БУДЕТ ЗАПИСАНА В  БЛОКИ  ДЛЯ  ВРЕМЕННОГО
   ХРАНЕНИЯ ДАННЫХ НА СИСТЕМНОЕ УСТРОЙСТВО  (ЕСЛИ  РАНЕЕ  БЫЛА
   ВЫПОЛНЕНА КОМАНДА SET EXIT SWAP). ПОСЛЕ ЭТОГО  KMON  И  USR
   ЗАГРУЖАЮТСЯ В ПАМЯТЬ И УПРАВЛЕНИЕ ПЕРЕДАЕТСЯ  КЛАВИАТУРНОМУ
   МОНИТОРУ. ЕСЛИ БЫЛА ВЫПОЛНЕНА КОМАНДА SET EXIT  NOSWAP,  ТО
   ПРОГРАММА ПОЛЬЗОВАТЕЛЯ ПРОСТО ПЕРЕЗАПИСЫВАЕТСЯ.
        ЕСЛИ R0 = 0 ВО ВРЕМЯ ВЫПОЛНЕНИЯ .EXIT, ТО  ВЫПОЛНЯЕТСЯ
   ОПЕРАЦИЯ  АНАЛОГИЧНАЯ  .HRESET,   ЗАПРЕЩАЮЩАЯ   ПОСЛЕДУЮЩЕЕ
   ВЫПОЛНЕНИЕ КОМАНД REENTER, START ИЛИ CLOSE.
        ЗАПРОС .EXIT ПОЗВОЛЯЕТ ПРОГРАММЕ ПЕРЕДАТЬ КОМАНДЫ КЛА-
   ВИАТУРНОМУ МОНИТОРУ, ИСПОЛЬЗУЯ ЯЧЕЙКИ 500-777, ДЛЯ ИХ  ПОС-
   ЛЕДУЮЩЕГО ВЫПОЛНЕНИЯ. ДЛЯ ЭТОГО НЕОБХОДИМО:
        1) ЯЧЕЙКА 510 ДОЛЖНА СОДЕРЖАТЬ ОБЩЕЕ КОЛИЧЕСТВО БАЙТОВ
   В КОМАНДЕ, КОТОРАЯ БУДЕТ ПЕРЕДАНА KMON;
        2) КОМАНДЫ ЗАПИСЫВАЮТСЯ, НАЧИНАЯ С ЯЧЕЙКИ 512;  СТРОКА
   ДОЛЖНА БЫТЬ ЗАПИСАНА В СИМВОЛАХ КОИ-7 И НЕ ДОЛЖНА СОДЕРЖАТЬ
   ВК ИЛИ ПС ; НАПРИМЕР:
      .=510
      .WORD B-A
  A:  .ASCIZ /COPY A.MAC W.MAC/
      .ASCIZ /DELETE A.MAC/
  B=  .
        3) ПРОГРАММА ПОЛЬЗОВАТЕЛЯ ДОЛЖНА УСТАНОВИТЬ 5  ИЛИ  11
   РАЗРЯД В ССЗ ПЕРЕД ВЫПОЛНЕНИЕМ .EXIT; СОДЕРЖИМОЕ R0  ДОЛЖНО
   БЫТЬ НУЛЕВЫМ.
        КОГДА ЗАПРОС .EXIT ИСПОЛЬЗУЕТСЯ  ДЛЯ  ПЕРЕДАЧИ  КОМАНД
   НЕОБХОДИМО УЧИТЫВАТЬ СЛЕДУЮЩЕЕ:
        1) ЕСЛИ ЭТО СВОЙСТВО ИСПОЛЬЗУЕТСЯ ПРОГРАММОЙ,  КОТОРАЯ
   ВЫЗЫВАЕТСЯ С ПОМОЩЬЮ КОСВЕННОГО ФАЙЛА, ТО ВСЕ КОМАНДЫ  СЛЕ-
   ДУЮЩИЕ В КОСВЕННОМ ФАЙЛЕ  ЗА  КОМАНДОЙ,  ИНИЦИИРУЮЩЕЙ  ПУСК
   ЭТОЙ ПРОГРАММЫ, ВЫПОЛНЯТЬСЯ НЕ БУДУТ;
        2) КОСВЕННЫЙ ФАЙЛ МОЖЕТ  БЫТЬ  ВЫЗВАН,  ИСПОЛЬЗУЯ  ЭТО
   СВОЙСТВО, ТОЛЬКО В ТОМ СЛУЧАЕ ЕСЛИ ПЕРЕДАВАЕМАЯ KMON СТРОКА
   СОДЕРЖИТ ЕДИНСТВЕННУЮ СПЕЦИФИКАЦИЮ ФАЙЛА; ПОПЫТКА  ПЕРЕДАЧИ
   НЕСКОЛЬКИХ КОСВЕННЫХ ФАЙЛОВ ИЛИ КОМБИНАЦИЙ КОСВЕННЫХ ФАЙЛОВ
   С ДРУГИМИ КОМАНДАМИ KMON ПРИВОДИТ К НЕПРАВИЛЬНЫМ  РЕЗУЛЬТА-
   ТАМ;
        3) .EXIT В ПОДПРОГРАММЕ ЗАВЕРШЕНИЯ  НЕДОПУСТИМ.  ЗАМЕ-
   ТИМ, ЧТО ЗАПРОС .EXIT ИЗМЕНЯЕТ ТЕКУЩЕЕ ПОЛОЖЕНИЕ  УКАЗАТЕЛЯ
   СТЕКА.
        ФОРМАТ МАКРОКОМАНДЫ: .EXIT
  ПРИМЕР.
          .TITLE  EXIT.MAC
  ;В ЭТОМ ПРИМЕРЕ, ПОСЛЕ ЗАВЕРШЕНИЯ ПРОГРАММЫ,
  ;КЛАВИАТУРНОМУ МОНИТОРУ ПЕРЕДЕТСЯ КОМАНДНАЯ
  ;СТРОКА НА ПЕЧАТЬ СПРАВОЧНИКА УСТРОЙСТВА DK:
          .MCALL  .EXIT
  CHNIF$  = 4000
  JSW     = 44
 
  START:  MOV     #510,R0
          MOV     #CMDSTR,R1
          MOV     #START,SP
 
  1$:     MOVB    (R1)+,(R0)+
          CMP     R1,#CMDEND
          BLO     1$
          BIS     #CHNIF$,@#JSW ;УСТАНОВИТЬ 11-ЫЙ РАЗРЯД
                                ;В JSW
          CLR     R0            ;В R0 ДОЛЖЕН БЫТЬ 0
          .EXIT
 
  CMDSTR: .WORD   CMDEND-CMDSTR ;ДЛИНА КОМАНДНОЙ СТРОКИ
          .ASCIZ  "DIRECT/FULL *.MAC" ;КОМАНДНАЯ СТРОКА
  CMDEND:
          .EVEN
          .END    START