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


Для первичного просветления читать про макрос .CSISPC.
Ответить с цитированием
Размещение рекламы на форуме способствует его дальнейшему развитию 

