.TITLE FCSPUT (FDBADR%{,BUFADR%{,RECNUMLO%{,RECNUMHI%}}}) .MCALL RETURN,.BLK.,.BLKW.,PUT$ .PSECT FCSERR,RW,D,GBL,REL,OVR FCSERR: .BLKW 2 ; error block .PSECT .BLK. ; argument block (FTN standard) .BLKW. 1,ARGNUM ; .BLKW. 1,FDB ; address of FDB .BLKW. 1,BUFADR ; buffer address .BLKW. 1,RNL ; low 16 bits of record # .BLKW. 1,RNH ; high 16 bits of record # FCSPUT:: ; MOV @FDB(R5),R0 ; (R0) = [FDB] CMPB @R5,#RNL/2 ; lt: no RNL , eq: RNL , gt: RNL & RNH BLT 2$ ; BEQ 1$ ; MOV @RNH(R5),F.RCNM+2(R0) ; 1$: ; here with RNH handled MOV @RNL(R5),F.RCNM+2(R0) ; 2$: ; here with RNL handled CMPB @R5,#BUFADR/2 ; ge: BUFADR , lt: no BUFADR BLT 3$ ; MOV @BUFADR(R5),F.NRBD+2(R0) ; copy address 3$: ; here with BUFADR handled MOV #FCSERR,R4 ; (R4) = [FCSERR 1st word] CLR (R4)+ ; CLR (R4)+ ; ; (R4) = [FCSERR last word] + 1word PUT$ ; BCC QUIT ; MOVB F.ERR+1(R0),R1 ; (R1) = directive status code MOV R1,-(R4) ; MOVB F.ERR(R0),R1 ; (R1) = error code MOV R1,-(R4) ; QUIT: RETURN ; .END