.TITLE MARK_FULL .IDENT /1.1/ .LIBRARY /MA_Q:[DEF]QUEUE.MLB/ .LIST ME QHDDEF MIDDEF HDRDEF MGHDEF NRBDEF BUFDEF NRBID PEXDEF .NLIST ME .PSECT MARKFULL,PIC,EXE,CON,LONG,NOWRT .PAGE ;.begin.doc ************************** begin.doc ; ; .c ;MODULE ; .c ;^&MARK_FULL\& ; .nf ; .x MARK_FULL>Defined ; Source:MARK_FULL.mar ; Designer :EARL LAKIA ; Author :EARL LAKIA ; Inland Steel ; Process Automation Department ; 3210 Watling St. MS 2-465 ; East Chicago, IN 46312 ; ; Date of last update:11-AUG-1986 12:23:50.45 ; Revision level :1.1 ; ; .C ;Formal Parameter List ; Receives: ; ; NRB STRUCTURE/NRBDEF/ ; NODE NRB THAT THIS MESSAGE HAS COME IN ON ; ; BUF STRUCTURE/BUFDEF/ ; BUFFER CONTAINING MESSAGE AND POINTERS OF ; RESPONSE MESSAGE RECEIVED. ; ; Q_BLOCK INTEGER*4 (2) ; SEE ATTACH_Q FOR DESCRIPTION OF THIS ; ARRAY. ; ; Returns: ; ; Accesses common(s): ; ; Accesses file(s): ; ; Other modules referenced: ; ; .X OPR_FAO_MSG>Referenced ; OPR_FAO_MSG LOG ERRORS ; (found in library:INLAND) ; .SK ; .fill ; .SK ; Description: ; .sk ; This subroutine is passed an index for a particular ; message id listhead. This subroutine is responsible for ; setting the bit MID$M_RQF in the list head status long word, ; ie: MID$L_STAT. The calling sequence is: ; ; .LITERAL ; INTEGER*4 Q_BLOCK(2) ; CALL ATTACH_Q(Q_BLOCK) ; CALL MARK_FULL(NRB,BUF,Q_BLOCK) ; ; .END LITERAL ; end.doc ****************************** end.doc ; ; CALL SEQUENCE: ; ; 0(AP)= 3 NUMBER OF ARGUMENTS ; 4(AP)= NRB ADDRESS ; 8(AP)= BUF ADDRESS ; 12(AP)= Q_BLOCK ADDRESS ; .ENTRY MARK_FULL,^M JSB VALIDATE BLBS R0,5$ ; SHOULD WE CONTINUE RET ; NO 5$: ; ; CHANGE TO KERNAL STATE SO CAN READ THE EXTENDED P0 SECTION POINTERS ; $CMKRNL_S ROUTIN=30$ BLBS R0, 25$ ; ; SOME KIND OF ERROR ENCOUNTERED WHILE SETTING ; PUSHL R0 CALLS #1,OPR_FAO_MSG 25$: RET ; ; R7= Q_BLOCK ADDRESS ; R4= PCB OF US ; R6= OFFSET FROM BEGINNING OF QUEUE TO THIS MESSAGE ID LIST HEAD ; 30$: .WORD ^M<> ; NO NEED TO SAVE ANY REGISTERS ; ; WE ARE NOT GOING TO PROBE THE ADDRESS TO MAKE SURE EVERYTING IS ; OK, AFTER ALL WE ARE ONLY PEOPLE USEING THIS SUBROUTINE AND ; BESIDES, THAT WOULD TAKE AN EXTRA CHANGE MODE TO KERNEL CALL. ; MOVL (R7),R1 ; GET START OF EXPANDED REGION CMPL R1,PEX$L_SREG(R1) ; ARE WE THE SAME SHOULD BE BEQL 40$ ; YUP MOVL #RTR_PEXERR,R0 RET ; NOPE, THEN DON'T DO ANYTHING 40$: BISL #MID$M_RQF,MID$L_STAT(R6) ; SET REMOTE NODE QUEUE IS FULL BIT MOVL #SS$_NORMAL,R0 ; GOOD STATUS RET ;.begin.doc ************************** begin.doc ; ; .c ;MODULE ; .c ;^&MARK_IOPENDING\& ; .nf ; .x MARK_IOPENDING>Defined ; Source:MARK_FULL.MAR ; Designer :EARL LAKIA ; Author :EARL LAKIA ; Inland Steel ; Process Automation Department ; 3210 Watling St. MS 2-465 ; East Chicago, IN 46312 ; ; Date of last update:11-AUG-1986 12:23:50.45 ; Revision level :1.0 ; ; .C ;Formal Parameter List ; Receives: ; ; NRB STRUCTURE/NRBDEF/ ; NODE NRB THAT THIS MESSAGE HAS COME IN ON ; ; BUF STRUCTURE/BUFDEF/ ; BUFFER CONTAINING MESSAGE AND POINTERS OF ; RESPONSE MESSAGE RECEIVED. ; ; Q_BLOCK INTEGER*4 (2) ; SEE ATTACH_Q FOR DESCRIPTION OF THIS ; ARRAY. ; ; Returns: ; ; Accesses common(s): ; ; Accesses file(s): ; ; Other modules referenced: ; ; .X OPR_FAO_MSG>Referenced ; OPR_FAO_MSG LOG ERRORS ; (found in library:INLAND) ; .SK ; .fill ; .SK ; Description: ; .sk ; This subroutine is passed an index for a particular ; message id listhead. This subroutine is responsible for ; setting the bit MID$M_IOPND in the list head status long word, ; ie: MID$L_STAT. The calling sequence is: ; ; .LITERAL ; INTEGER*4 Q_BLOCK(2) ; CALL ATTACH_Q(Q_BLOCK) ; CALL MARK_IOPENDING(NRB,BUF,Q_BLOCK) ; ; .END LITERAL ; end.doc ****************************** end.doc ; ; CALL SEQUENCE: ; ; 0(AP)= 3 NUMBER OF ARGUMENTS ; 4(AP)= NRB ADDRESS ; 8(AP)= BUF ADDRESS ; 12(AP)= Q_BLOCK ADDRESS ; .ENTRY MARK_IOPENDING,^M JSB VALIDATE BLBS R0,5$ ; SHOULD WE CONTINUE RET ; NO 5$: ; ; CHANGE TO KERNAL STATE SO CAN READ THE EXTENDED P0 SECTION POINTERS ; $CMKRNL_S ROUTIN=30$ BLBS R0, 25$ ; ; SOME KIND OF ERROR ENCOUNTERED WHILE SETTING ; PUSHL R0 CALLS #1,OPR_FAO_MSG 25$: RET ; ; R7= Q_BLOCK ADDRESS ; R4= PCB OF US ; R6= OFFSET FROM BEGINNING OF QUEUE TO THIS MESSAGE ID LIST HEAD ; 30$: .WORD ^M<> ; NO NEED TO SAVE ANY REGISTERS ; ; WE ARE NOT GOING TO PROBE THE ADDRESS TO MAKE SURE EVERYTING IS ; OK, AFTER ALL WE ARE ONLY PEOPLE USEING THIS SUBROUTINE AND ; BESIDES, THAT WOULD TAKE AN EXTRA CHANGE MODE TO KERNEL CALL. ; MOVL (R7),R1 ; GET START OF EXPANDED REGION CMPL R1,PEX$L_SREG(R1) ; ARE WE THE SAME SHOULD BE BEQL 40$ ; YUP MOVL #RTR_PEXERR,R0 RET ; NOPE, THEN DON'T DO ANYTHING 40$: BISL #MID$M_IOPND,MID$L_STAT(R6) ; SET REMOTE NODE QUEUE IS FULL BIT MOVL #SS$_NORMAL,R0 ; GOOD STATUS RET ;.begin.doc ************************** begin.doc ; ; .c ;MODULE ; .c ;^&MARK_NOFULL\& ; .nf ; .x MARK_NOFULL>Defined ; Source:MARK_FULL.MOD ; Designer :EARL LAKIA ; Author :EARL LAKIA ; Inland Steel ; Process Automation Department ; 3210 Watling St. MS 2-465 ; East Chicago, IN 46312 ; ; Date of last update:11-AUG-1986 12:23:50.45 ; Revision level :1.0 ; ; .C ;Formal Parameter List ; Receives: ; ; NRB STRUCTURE/NRBDEF/ ; NODE NRB THAT THIS MESSAGE HAS COME IN ON ; ; BUF STRUCTURE/BUFDEF/ ; BUFFER CONTAINING MESSAGE AND POINTERS OF ; RESPONSE MESSAGE RECEIVED. ; ; ; Q_BLOCK INTEGER*4 ; Q_BLOCK AS GOTTEN FROM ATTACH Q ; ; Returns: ; ; Accesses common(s): ; ; Accesses file(s): ; ; Other modules referenced: ; ; .X OPR_FAO_MSG>Referenced ; OPR_FAO_MSG LOG ERRORS ; (found in library:INLAND) ; .SK ; .fill ; .SK ; Description: ; .sk ; This subroutine is passed an index for a particular ; message id listhead. This subroutine is responsible for ; clearing the bit MID$M_RQF in the list head status long word, ; ie: MID$L_STAT. The calling sequence is: ; ; .LITERAL ; INTEGER*4 QUEUE(2) ; CALL MARK_NOFULL(NRB,BUF,Q_BLOCK) ; ; .END LITERAL ; end.doc ****************************** end.doc ; ; CALL SEQUENCE: ; ; 0(AP)= 3 NUMBER OF ARGUMENTS ; 4(AP)= NRB ADDRESS ; 8(AP)= BUF ADDRESS ; 12(AP)= ADDRESS OF STARTING ADDRESS OF QUEUE ; Q_BLOCK ; .ENTRY MARK_NOFULL,^M JSB VALIDATE BLBS R0,5$ ; SHOULD WE CONTINUE RET ; NO 5$: ; ; CHANGE TO KERNAL STATE SO CAN READ THE EXTENDED P0 SECTION POINTERS ; $CMKRNL_S ROUTIN=30$ BLBS R0, 25$ ; ; SOME KIND OF ERROR ENCOUNTERED WHILE SETTING ; PUSHL R0 CALLS #1,OPR_FAO_MSG 25$: RET ; ; R7= Q_BLOCK ADDRESS ; R4= PCB OF US ; R6= OFFSET FROM BEGINNING OF QUEUE TO THIS MESSAGE ID LIST HEAD ; 30$: .WORD ^M<> ; NO NEED TO SAVE ANY REGISTERS ; ; WE ARE NOT GOING TO PROBE THE ADDRESS TO MAKE SURE EVERYTING IS ; OK, AFTER ALL WE ARE ONLY PEOPLE USEING THIS SUBROUTINE AND ; BESIDES, THAT WOULD TAKE AN EXTRA CHANGE MODE TO KERNEL CALL. ; MOVL (R7),R1 ; GET START OF EXPANDED REGION CMPL R1,PEX$L_SREG(R1) ; ARE WE THE SAME SHOULD BE BEQL 40$ ; YUP MOVL #RTR_PEXERR,R0 RET ; NOPE, THEN DON'T DO ANYTHING 40$: BICL #MID$M_RQF,MID$L_STAT(R6) ; SET REMOTE NODE QUEUE IS FULL BIT MOVL #SS$_NORMAL,R0 ; GOOD STATUS RET ;.begin.doc ************************** begin.doc ; ; .c ;MODULE ; .c ;^&MARK_NOROUTE\& ; .nf ; .x MARK_NOROUTE>Defined ; Source:MARK_FULL.MOD ; Designer :EARL LAKIA ; Author :EARL LAKIA ; Inland Steel ; Process Automation Department ; 3210 Watling St. MS 2-465 ; East Chicago, IN 46312 ; ; Date of last update:11-AUG-1986 12:23:50.45 ; Revision level :1.0 ; ; .C ;Formal Parameter List ; Receives: ; ; NRB STRUCTURE/NRBDEF/ ; NODE NRB THAT THIS MESSAGE HAS COME IN ON ; ; BUF STRUCTURE/BUFDEF/ ; BUFFER CONTAINING MESSAGE AND POINTERS OF ; RESPONSE MESSAGE RECEIVED. ; ; Q_BLOCK INTEGER*4 ; AS GOTTEN BACK FROM ATTACH_Q ; ; Returns: ; ; Accesses common(s): ; ; Accesses file(s): ; ; Other modules referenced: ; ; .X OPR_FAO_MSG>Referenced ; OPR_FAO_MSG LOG ERRORS ; (found in library:INLAND) ; .SK ; .fill ; .SK ; Description: ; .sk ; This subroutine is passed an index for a particular ; message id listhead. This subroutine is responsible for ; setting the bit MID$M_NOROUTE in the list head status long word, ; ie: MID$L_STAT ( Will also clear IOPEND and ACKPND). The calling ; sequence is: ; ; .LITERAL ; INTEGER*4 QUEUE(2) ; CALL MARK_NOROUTE(NRB,BUF,QUEUE) ; ; .END LITERAL ; end.doc ****************************** end.doc ; ; CALL SEQUENCE: ; ; 0(AP)= 3 NUMBER OF ARGUMENTS ; 4(AP)= NRB ADDRESS ; 8(AP)= BUF ADDRESS ; 12(AP)= ADDRESS OF STARTING ADDRESS OF QUEUE ; .ENTRY MARK_NOROUTE,^M JSB VALIDATE BLBS R0,5$ ; SHOULD WE CONTINUE RET ; NO 5$: ; ; CHANGE TO KERNAL STATE SO CAN READ THE EXTENDED P0 SECTION POINTERS ; $CMKRNL_S ROUTIN=30$ BLBS R0, 25$ ; ; SOME KIND OF ERROR ENCOUNTERED WHILE SETTING ; PUSHL R0 CALLS #1,OPR_FAO_MSG 25$: RET ; ; R7= Q_BLOCK ADDRESS ; R4= PCB OF US ; R6= OFFSET FROM BEGINNING OF QUEUE TO THIS MESSAGE ID LIST HEAD ; 30$: .WORD ^M<> ; NO NEED TO SAVE ANY REGISTERS ; ; WE ARE NOT GOING TO PROBE THE ADDRESS TO MAKE SURE EVERYTING IS ; OK, AFTER ALL WE ARE ONLY PEOPLE USEING THIS SUBROUTINE AND ; BESIDES, THAT WOULD TAKE AN EXTRA CHANGE MODE TO KERNEL CALL. ; MOVL (R7),R1 ; GET START OF EXPANDED REGION CMPL R1,PEX$L_SREG(R1) ; ARE WE THE SAME SHOULD BE BEQL 40$ ; YUP MOVL #RTR_PEXERR,R0 RET ; NOPE, THEN DON'T DO ANYTHING 40$: BICL #,MID$L_STAT(R6) ; CLEAR ACK PENDING BISL #MID$M_NOROUTE,MID$L_STAT(R6) ; SET THAT THIS ID IS ; NOT ROUTEABLE MOVL #SS$_NORMAL,R0 ; GOOD STATUS RET ;.begin.doc ************************** begin.doc ; ; .c ;MODULE ; .c ;^&MARK_RESP_PENDING\& ; .nf ; .x MARK_RESP_PENDING>Defined ; Source:MARK_FULL.MOD ; Designer :EARL LAKIA ; Author :EARL LAKIA ; Inland Steel ; Process Automation Department ; 3210 Watling St. MS 2-465 ; East Chicago, IN 46312 ; ; Date of last update:11-AUG-1986 12:23:50.45 ; Revision level :1.0 ; ; .C ;Formal Parameter List ; Receives: ; ; NRB STRUCTURE/NRBDEF/ ; NODE NRB THAT THIS MESSAGE HAS COME IN ON ; ; BUF STRUCTURE/BUFDEF/ ; BUFFER CONTAINING MESSAGE AND POINTERS OF ; RESPONSE MESSAGE RECEIVED. ; ; Q_BLOCK INTEGER*4 ; AS GOTTEN BACK FROM ATTACH_Q ; ; Returns: ; ; Accesses common(s): ; ; Accesses file(s): ; ; Other modules referenced: ; ; .X OPR_FAO_MSG>Referenced ; OPR_FAO_MSG LOG ERRORS ; (found in library:INLAND) ; .SK ; .fill ; .SK ; Description: ; .sk ; This subroutine is passed an index for a particular ; message id listhead. This subroutine is responsible for ; setting the bit MID$M_ACKPND and clearing the MID$M_IOPND ; in the list head status long word, ; ie: MID$L_STAT. The calling sequence is: ; ; .LITERAL ; INTEGER*4 QUEUE(2) ; CALL MARK_RESP_PENDING(NRB,BUF,Q_BLOCK) ; ; .END LITERAL ; end.doc ****************************** end.doc ; ; CALL SEQUENCE: ; ; 0(AP)= 3 NUMBER OF ARGUMENTS ; 4(AP)= NRB ADDRESS ; 8(AP)= BUF ADDRESS ; 12(AP)= Q_BLOCK AS GOTTEN FROM ATTACH_Q ; .ENTRY MARK_RESP_PEND,^M JSB VALIDATE BLBS R0,5$ ; SHOULD WE CONTINUE RET ; NO 5$: ; ; CHANGE TO KERNAL STATE SO CAN READ THE EXTENDED P0 SECTION POINTERS ; $CMKRNL_S ROUTIN=30$ BLBS R0, 25$ ; ; SOME KIND OF ERROR ENCOUNTERED WHILE SETTING ; PUSHL R0 CALLS #1,OPR_FAO_MSG 25$: RET ; ; R7= Q_BLOCK ADDRESS ; R4= PCB OF US ; R6= OFFSET FROM BEGINNING OF QUEUE TO THIS MESSAGE ID LIST HEAD ; 30$: .WORD ^M<> ; NO NEED TO SAVE ANY REGISTERS ; ; WE ARE NOT GOING TO PROBE THE ADDRESS TO MAKE SURE EVERYTING IS ; OK, AFTER ALL WE ARE ONLY PEOPLE USEING THIS SUBROUTINE AND ; BESIDES, THAT WOULD TAKE AN EXTRA CHANGE MODE TO KERNEL CALL. ; MOVL (R7),R1 ; GET START OF EXPANDED REGION CMPL R1,PEX$L_SREG(R1) ; ARE WE THE SAME SHOULD BE BEQL 40$ ; YUP MOVL #RTR_PEXERR,R0 RET ; NOPE, THEN DON'T DO ANYTHING 40$: BICL #MID$M_IOPND,MID$L_STAT(R6) ; CLEAR I/O PENDING BISL #MID$M_ACKPND,MID$L_STAT(R6) ; SET MESSAGE ID IS WAITING ; FOR AN ACKNOWLEGE RESPONSE ; FROM REMOTE NODE MOVL #SS$_NORMAL,R0 ; GOOD STATUS RET ;.begin.doc ************************** begin.doc ; ; .c ;MODULE ; .c ;^&MARK_NOPEND\& ; .nf ; .x MARK_NOPEND>Defined ; Source:MARK_FULL.MOD ; Designer :EARL LAKIA ; Author :EARL LAKIA ; Inland Steel ; Process Automation Department ; 3210 Watling St. MS 2-465 ; East Chicago, IN 46312 ; ; Date of last update:11-AUG-1986 12:23:50.45 ; Revision level :1.0 ; ; .C ;Formal Parameter List ; Receives: ; ; NRB STRUCTURE/NRBDEF/ ; NODE NRB THAT THIS MESSAGE HAS COME IN ON ; ; BUF STRUCTURE/BUFDEF/ ; BUFFER CONTAINING MESSAGE AND POINTERS OF ; RESPONSE MESSAGE RECEIVED. ; ; Q_BLOCK INTEGER*4 ; AS GOTTEN BACK FROM ATTACH_Q ; ; Returns: ; ; Accesses common(s): ; ; Accesses file(s): ; ; Other modules referenced: ; ; .X OPR_FAO_MSG>Referenced ; OPR_FAO_MSG LOG ERRORS ; (found in library:INLAND) ; .SK ; .fill ; .SK ; Description: ; .sk ; This subroutine is passed an index for a particular ; message id listhead. This subroutine is responsible for ; clearing the MID$M_IOPND bit (outbound I/O is pending for this message id) ; in the list head status long word, ; ie: MID$L_STAT. The calling sequence is: ; ; .LITERAL ; INTEGER*4 QUEUE(2) ; CALL MARK_NOPEND(NRB,BUF,Q_BLOCK) ; ; .END LITERAL ; end.doc ****************************** end.doc ; ; CALL SEQUENCE: ; ; 0(AP)= 3 NUMBER OF ARGUMENTS ; 4(AP)= NRB ADDRESS ; 8(AP)= BUF ADDRESS ; 12(AP)= Q_BLOCK AS GOTTEN FROM ATTACH_Q ; .ENTRY MARK_NOPEND,^M JSB VALIDATE BLBS R0,5$ ; SHOULD WE CONTINUE RET ; NO 5$: ; ; CHANGE TO KERNAL STATE SO CAN READ THE EXTENDED P0 SECTION POINTERS ; $CMKRNL_S ROUTIN=30$ BLBS R0, 25$ ; ; SOME KIND OF ERROR ENCOUNTERED WHILE SETTING ; PUSHL R0 CALLS #1,OPR_FAO_MSG 25$: RET ; ; R7= Q_BLOCK ADDRESS ; R4= PCB OF US ; R6= OFFSET FROM BEGINNING OF QUEUE TO THIS MESSAGE ID LIST HEAD ; 30$: .WORD ^M<> ; NO NEED TO SAVE ANY REGISTERS ; ; WE ARE NOT GOING TO PROBE THE ADDRESS TO MAKE SURE EVERYTING IS ; OK, AFTER ALL WE ARE ONLY PEOPLE USEING THIS SUBROUTINE AND ; BESIDES, THAT WOULD TAKE AN EXTRA CHANGE MODE TO KERNEL CALL. ; MOVL (R7),R1 ; GET START OF EXPANDED REGION CMPL R1,PEX$L_SREG(R1) ; ARE WE THE SAME SHOULD BE BEQL 40$ ; YUP MOVL #RTR_PEXERR,R0 RET ; NOPE, THEN DON'T DO ANYTHING 40$: BICL #MID$M_ACKPND,MID$L_STAT(R6) ; SET MESSAGE ID IS WAITING ; FOR AN ACKNOWLEGE RESPONSE ; FROM REMOTE NODE MOVL #SS$_NORMAL,R0 ; GOOD STATUS RET .PAGE ; ; THE FOLLOWING SUBROUTINE IS AN INTERNAL SUBROUTINE ; THAT IS USED TO VERIFY THE INDEX WITHIN THE BUFFER ; ; INTPUTS: ; CALL FRAME: ; 00(AP)= 3 NUMBER OF ARGUMENTS ; 04(AP)= NRB ADDRESS ; 08(AP)= BUF ADDRESS ; 12(AP)= Q_BLOCK ADDRESS ; ; RETURN: ; R0= 0 If a return should be executed ; otherwise ; R7= Q_BLOCK address ; R6= Address for this message id list head ; as was stored by LHD_ADD subroutine. ; ; CALL TO THIS SUBROUTINE IS VIA A "JSB" ; VALIDATE: MOVL 4(AP),R5 ; GET THE NRB ADDRESS MOVL 8(AP),R6 ; GET THE BUFFER ADDRESS MOVL 12(AP),R7 ; GET Q_BLOCK ; ; VALIDATE THAT ALL IS VALID BEFORE POOPING ON SOMETHING ; MOVL BUF$S_MSG+MGH$L_IDX(R6),R4 ; GET INDEX BLSS 5$ ; IS IT NEGATIVE? BNEQU 10$ ; IS THERE ONE? ; ; INDEX IS INVALID, SCAN THE NRB TO SEE IF WE CAN FIND MATCH ON ; THE MESSAGE ID THEN. IF CAN'T FIND, LOG MESSAGE AND RETURN ; 5$: PUSHAB BUF$S_MSG+MGH$S_HDR+HDR$C_DNM(R6) ; DESTINATION NODE NAME PUSHL #6 PUSHAB BUF$S_MSG+MGH$C_MID(R6) PUSHL #MID$K_SIZ ; SIZE OF MESSAGE ID PUSHL BUF$S_MSG+MGH$L_IDX(R6) ; PUSH INDEX PUSHL #RTR_BADIDX2 CALLS #6,OPR_FAO_MSG ; LOG ERROR ; ; NOW SEE IF WE CAN FIND THE MESSAGE ID ; MOVL NRB$L_IDCNT(R5),R8 ; GET NUMBER OF MESSAGE ID'S MOVL #NRB$L_SIZE,R4 ADDL R5,R4 ; POINT TO FIRST ID 7$: MOVL #MID$K_SIZ,R0 ; SIZE OF MESSAGE ID STRING CMPC R0,NRBID$C_MSGID(R4),BUF$S_MSG+MGH$C_MID(R6) BEQL 15$ ; MATCH, JUMP WITH R4= NRBID THIS ID ADDL #NRBID$L_SIZE,R4 ; POINT TO NEXT NRBID SOBGTR R8,7$ ; LOOP UNTIL FIND OR ELSE SIMPLY RETURN CLRL R0 ; BAD STATUS RSB ; NO INDEX, THEN DON'T WORRY ABOUT MESSAGE .PAGE ; ; HAVE AN INDEX, VALIDATE IT ; R4= INDEX FROM BUFFER ; R5= NRB ; R6= BUFFER ; R7= Q_BLOCK ADDRESS (NOT USED) ; 10$: CMPL NRB$L_IDCNT(R5),R4 ; MAKE SURE NOT TOO LARGE BLSS 5$ ; INVALID DECL R4 ; MAKE AN OFFSET INSTEAD MULL2 #NRBID$L_SIZE,R4 ; MULT BY SIZE OF NRBID BLOCK ADDL #NRB$L_SIZE,R4 ; ADD SIZE OF NRB TO POINT TO START OF NRBID LIST ADDL R5,R4 ; ADD START OF NRB MOVL #MID$K_SIZ,R0 ; SIZE OF MESSAGE ID'S CMPC R0,NRBID$C_MSGID(R4),BUF$S_MSG+MGH$C_MID(R6) BNEQ 5$ ; MESSAGE ID'S DON'T MATCH ; 15$: MOVL NRBID$L_LHD(R4),R5 ; GET MESSAGE ID POINTER TO MID LISTHEAD BNEQU 40$ ; ARE WE CONNECTED? CLRL R0 ; STATUS RSB ; NO, THEN IGNORE IT ; 40$: MOVL R5,R6 ; SAVE VALUE IN R6 MOVL #SS$_NORMAL,R0 RSB .page ;.begin.doc ************************** begin.doc ; ; .c ;MODULE ; .c ;^&MARK_QUERROR\& ; .nf ; .x MARK_QUERROR>Defined ; Source:MARK_QUERROR.MOD ; Designer :EARL LAKIA ; Author :Earl Lakia ; Inland Steel ; Process Automation Department ; 3210 Watling St. MS 2-465 ; East Chicago, IN 46312 ; ; Date of last update: 7-MAY-1987 16:29:22.45 ; Revision level :1.0 ; ; .C ;Formal Parameter List ; Receives: ; ; NRBID RECORD/NRBID/ ; NRBID FOR THE MESSAGE ID THAT IS BEING ; MARKED WITH THE QUEUE ERROR STATUS. ; ; Returns: ; ; Accesses common(s): ; ; Accesses file(s): ; ; Other modules referenced: ; .SK ; .fill ; .SK ; Description: ; .sk ; This subroutine is passed the NRBID for a message id that has been ; unable to removed from the queue. The status word in the message id ; listhead is set to denote that there was a queue read error. The ; most common error for this is that the output buffer is too small to ; read the message from the queue. ; The calling sequence is: ; ; .sk ; CALL MARK_QUERROR(NRBID) ; ; end.doc ****************************** end.doc .ENTRY MARK_QUERROR,^M ; ; (AP)= 1 Number of arguments ; 4(AP)= Address of the NRBID ; ; CHANGE MODE TO KERNEL SO CAN ACCESS THE PROTECTED QUEUE ; MOVL 4(AP),R2 ; Get address of the NRBID $CMKRNL_S ROUTIN= 10$ ; JUMP TO KERNAL CODE RET 10$: .WORD 0 ; NOTHING TO SAVE MOVL NRBID$L_LHD(R2),R5 ; get the message id list head BEQL 60$ ; was it found during initizaltion? BISL #MID$M_QUERDERR,MID$L_STAT(R5) ; clear message id status flags 60$: RET .END