Первое правило программирования для RT-11 -- забыть про ASCII имена файлов, потому что они передаются в кодировке RAD50 Для первичного просветления читать про макрос .CSISPC.

Для cowgol runtime я написал такой код (fcb.rt11 -- это parameter area для макросов, fcb.buffer -- буфер для чтения/записи блока)
Код:
sub FCBOpenIn(fcb: [FCB], filename: [uint8]): (errno: uint8) is
    var rtfcb := &fcb.rt11;
    var rtbuf := &fcb.buffer;
    var rad50 := rtbuf + 30;
    var defext: uint16[] := {0, 0, 0, 0};

    # parse ASCII filename into RAD50 rtbuf

    @ASm "mov sp, r5";
    @ASm ".csisp", rtbuf, ",", defext, ",", filename;
    @ASm "mov r5, sp";
    @ASm "bcc 1$";
    @ASm "movb #1,", carry;
    @ASm "1$:";

    if carry != 0 then
        errno := carry as uint8;
        return;
    end if

    @ASm ".looku", rtfcb, ", #0, ", rad50;
    @ASm "bcc 2$";
    @ASm "movb #1,", carry;
    @ASm "2$:";

    errno := carry as uint8;
    if errno == 0 then
        file_i_channels[0] := fcb;
    else
        file_i_channels[0] := 0 as [FCB];
    end if;
end sub;