.title f11sub ;+ ; this set of routines permit ACP qios to be performed to retrieve ; information on the file pointed to by the RFDB address passed ; in `desc'. `buf' is the address of the buffer to place the ; information into. It is assumed that the buffer is large enough ; for the requested information. ; ; all routines are integer functions of the form ; ; integer function f11xxx(desc, buf) ; ; where desc is the descriptor returned by an opendr call. ; the value returned is OK/ERR ; ; entry size(bytes) description ; ; f11uic 2 owning UIC ; f11pro 2 protection word ; f11cha 1 user-controlled characteristics ; f11rio 32 record i/o area ; f11nam 10 name, type and version ; f11exd 7 expiration date ; f11stb 10 statistics block ; f11hdr 512 whole header block ;- .psect $r.rod,con,ro,rel,lcl,d uiccod: .byte -1,2 ; codes to ACP to fetch appropriate info procod: .byte -2,2 ; ... chacod: .byte -3,1 ; ... riocod: .byte -4,40 ; ... namcod: .byte -5,12 ; ... exdcod: .byte -10,7 ; ... stbcod: .byte -11,12 ; ... hdrcod: .byte -12,0 ; ... ; .mcall qiow$s ap=%5 desc=2 buf=4 .psect $r.roi,con,ro,rel,lcl,i .enabl lsb f11uic:: mov uiccod,r0 ; ACP code for UIC br common ; do common code f11pro:: mov procod,r0 ; ACP code for protection br common f11cha:: mov chacod,r0 ; ACP code for characteristics br common f11rio:: mov riocod,r0 ; ACP code for record I/O area br common f11nam:: mov namcod,r0 ; ACP code for file name, type and version br common f11exd:: mov exdcod,r0 ; ACP code for expiration date br common f11stb:: mov stbcod,r0 ; ACP code for statistics block br common f11hdr:: mov hdrcod,r0 ; ACP code for entire header block ; ; common processing starts here ; common: mov @desc(ap),r1 ; RFDB address mov r.fdb(r1),r1 ; FDB address clr -(sp) ; build ACP control block on stack mov buf(ap),-(sp) ; buffer address for information mov r0,-(sp) ; function code for ACP mov sp,r3 ; address of control block movb f.lun(r1),r2 ; lun to use for QIOW add #f.fnb+n.fid,r1 ; address of FID area qiow$s #io.rat,r2,r$ioef,,#r$iosb,, bcs 10$ ; c set => error tstb r$iosb ; successful? ble 10$ ; NO mov #ok,r0 ; return(OK) br 20$ 10$: mov #err,r0 ; return(ERR) 20$: add #6,sp ; restore stack return .end