.TITLE CDREJ .IDENT /V001/ ; ; AUTHOR: ; DAVID M. BERG ; FERMI NATIONAL ACCELERATOR LABORATORY ; BATAVIA, IL 60510 ; ; UPDATE HISTORY: ; V01 - 7AUG84 - DB - ORIGINAL VERSION (RSX ONLY) ; ; ++ ; ; FUNCTION: ; ; THIS ROUTINE REJECTS AN UNSOLICITED MESSAGE WHOSE ARRIVAL IS FLAGGED ; IN THE SPECIFIED OPEN CONNECTION MESSAGE BLOCK; IT IS AN ALTERNATIVE ; TO RECEIVING THE MESSAGE. ; ; CALLING SEQUENCE: ; ---------------- ; ; CALL CDREJ(MBN,STAT) ; ; MACROS: ; ------ .MCALL RT$RSX RT$RSX ; .IF NDF RT11 ; .MCALL MBL$DF,CDI$DF,ERR$DF .MCALL PUSH,POP,ASSUME,$CM82 .MCALL QIOW$S MBL$DF ;DEFINE MESSAGE BLOCK OFFSETS CDI$DF ;DEFINE I/O FUNCTION CODES ERR$DF ;DEFINE ERROR RETURNS ; ; ; GLOBALS: ; ------- .GLOBL CDREJ ;ROUTINE ENTRY POINT .GLOBL $FNDBN ;SUBROUTINE TO FIND MESSAGE BLOCK .GLOBL $DSW .PAGE ; ; INPUTS TO ROUTINE ; ----------------- ; R5 IS THE ADDRESS OF A FORTRAN ARGUMENT LIST ; ; OUTPUTS ; ------- ; STATUS IS RETURNED IN STATUS ARGUMENT ; ; ; COMMON AREA CDCM82 ; ------------------ $CM82 ;DEFINE PSECT CDCM82 ; ; COMMON FOR ERROR IN NO. OF ARGUMENTS ; .PSECT CDERR,RW,GBL,D,OVR,REL CDERR: .BLKW .PSECT ; ; ASSUME MB.CUR,0 ;STATUS ASSUMED TO BE 1ST ;WORD OF MESSAGE BLOCK ; CDREJ:: PUSH ;SAVE REGISTERS MOV @2(R5),R1 ;MESSAGE BLOCK NUMBER CALL $FNDBN ;LOOK FOR MESSAGE BLOCK MOV R1,R5 ;FOUND IT? BEQ XNOMB ;ERROR IF NOT BIT #S.OPEN,(R5) ;OPEN CONNECTION MESSAGE BLOCK? BEQ XNOMB ;ERROR IF NOT BIT #S.PMSG,(R5) ;PENDING MESSAGE? BEQ XNOMB ;ERROR IF NOT BIC #S.PMSG,(R5) ;MESSAGE NO LONGER PENDING MOVB MB.CHN(R5),R1 ;CHANNEL NUMBER MOVB MB.FLG(R5),R2 ;EVENT FLAG TO WAIT ON SUB #4,SP ;ALLOCATE I/O STATUS BLOCK ON STACK MOV SP,R3 ;ADDRESS OF STATUS BLOCK QIOW$S #IO.REJ,R1,R2,,R3 ;ISSUE CANCEL FUNCTION BCC 5$ ;DIRECTIVE ERROR? ADD #4,SP ;CLEAN OFF STACK BR XDRERR ; 5$: MOVB (R3),R4 ;STATUS AFTER COMPLETION ADD #4,SP ;CLEAN OFF STACK BR EXIT ; XNOMB: MOV #ER.MBN,R4 ;MESSAGE BLOCK NOT ACTIVE BR EXIT ; XDRERR: MOV $DSW,R4 ;DIRECTIVE ERROR BR EXIT ; EXIT: POP ;RESTORE ARGUMENT POINTER MOV R4,@4(R5) ;RETURN STATUS POP ;RESTORE OTHER REGISTERS RETURN ; .ENDC ; .END