Первое правило программирования для 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;

