Пара слов про использование FCS в RT-11 под RTEM.
В сущности все просто: берем нужные модули из LB:[1,1]SYSLIB.OLB (или SYS$COMMON:[1,1]SYSLIB.OLB) и подключаем. Макровызовы RSX есть в библиотеке SY:RSXMAC.MLB (есть в shared image). Также к программе нужно подключить библиотеку SY:ULBLIB.OBJ (она содержит всякие $RQCB, $RLCB).
Остаются мелкие нюансы 
В главном модуле программы (который будет первым входящим файлом для LINK) нужно определить порядок секций FSR - они должны идти друг за другом.
Код:
.PSECT $$FSR1,RW,D,GBL,OVR ;MAKE SURE FSR PSECTS ARE CONTIGUOUS
.PSECT $$FSR2,RW,D,GBL,OVR ;
.PSECT $$FSR3,RW,D,GBL,OVR ;
.PSECT $$FSR4,RW,D,GBL,OVR ;
.PSECT $$FSR5,RW,D,GBL,OVR ;
Нужно определить некоторые глобальные символы.
Код:
$DSW ==: 46 ;RSX DIRECTIVE STATUS WORD
.MCALL DRERR$,FEADF$ ;RSX-11 MACRO CALLS
DRERR$ DEF$G ;DEFINE RSX DIRECTIVE ERROR CODES
FEADF$ DEF$G ;DEFINE RSX SYSTEM FEATURE SYMBOLS
Как обычно, инитим FSR.
Код:
FSRSZ$ 0 ;INITIALIZE FSR, NO RECORD I/O
Где-нибудь в программе определяем указатель на FSR:
Код:
.FSRPT::.WORD .FSRCB ;POINTER TO FSR
В сущности - все.
Не забываем, что директивы (и некоторые подпрограммы) RSX меняют $DSW, а он находится по адресу @#46 из которого RT-11 берет адрес области для свопинга USR. Во избежание неприятностей, не забываем сохранять/восстанавливать значение.
Код:
MOV @#$DSW,-(SP)
DIR$ #QIOW
MOV (SP)+,@#$DSW
Там где уместно, можно использовать стандартный сервис RTEM для вызова директив, требующих системных ресурсов. В этом случае специально сохранять содержимое адреса @#46 не требуется.
Код:
MOV @#250,R5 ;POINT TO RTEM LINKAGE AREA
JSR R5,@4(R5) ;ENTER RSX MODE
.WORD ISB ;QIOW STATUS BLOCK OR 0 IF NONE
DIR$ #QIOW ;
CALL @(SP)+ ;RETRY IF NEEDED
BCS ERROR ;BRANCH IF WE FAILED
Данный способ вызова автоматически сохраняет/восстанавливает @#46, вызывает код, идущий между JSR R5,@4(R5) и CALL @(SP)+, и если обнаруживается нехватка ресурсов, делается попытка повторить операцию после ожидания важного события (только RSX).