; OPFID.MAC --OPEN ON FILE ID ; AUTHOR: J. LEONARD ; DATE WRITTEN: 12-MAY-78 ; .NLIST TOC ;TBL OF CONTENTS NOT WANTED ; .TITLE OPFID .SBTTL OPEN ON FILE ID ; .ENABL AMA ;NO PC-REL ADDRS ; .MCALL FDOF$L,OFID$R,NBOF$L,FDOP$R,FDRC$R ; .GLOBL $FCHNL,NAM$ ;SUBRS CALLED .GLOBL $OTSV ;OTS IMPURE PTR ADDR FDOF$L NBOF$L ; ; ; CALL: ; CALL OPFID (LUN, ID, NERR) ; WHERE: ; LUN = FILE'S LOGICAL UNIT ; ID = 3 WORD FILE ID ; NERR = FCS ERROR CODE ; D.FDB = 14 ;OFFSET TO FDB FROM FFDB ; FBY = 0 ;FIRST FREE BYTE IN LAST BLOCK ; OPFID:: MOV #OPFIDN,R0 ;NAME TO TRACE BK MOV (R0)+,R4 MOV (R0)+,-(SP) ;PUSH (R0)+ ONTO STACK JSR R4,NAM$ ;TRACEBACK CHAIN TST (R5)+ ;DITCH NARGS MOV @(R5),R2 ;GET LUN MOV @#$OTSV,R3 ;OTS IMPURE ADDR JSR PC,$FCHNL ;GET DEVT ENTRY ADDR ADD #D.FDB,R0 ;LUN'S FDB ADDR FDOP$R R0,@(R5) FDRC$R R0,#FD.RWM ;BLOCK MODE ; ; SET UP FNB WITH FILE ID ; MOV R0,R1 ADD #F.FNB,R1 ;POINT TO FNB ; MOV #"DB,N.DVNM(R1) ;DEVICE ; MOV #0,N.UNIT(R1) ;UNIT NUMBER MOV 2(R5),R2 ;POINT TO FILE ID IN PARM LIST MOV (R2)+,(R1)+ MOV (R2)+,(R1)+ MOV (R2)+,(R1)+ ; OFID$R R0 ;OPEN FILE(READONLY) BCS OPERR ;ERROR ? ; ; TRUNCATE AND CLOSE ; ; CALL .TRNCL MOV #0,@4(R5) ;CLEAR ERROR CODE RTS PC ;RETURN TO CALLER ; OPERR: MOVB F.ERR(R0),R2 MOV R2,@4(R5) RTS PC OPFIDN: .RAD50 /OPFID / ;TRACE NAME ; .END