Google
 

Trailing-Edge - PDP-10 Archives - AP-D471B-SB_1978 - soff.bli
There are no other files named soff.bli in the archive.
!***COPYRIGHT (C) 1974, 1975, 1976, 1977 DIGITAL EQUIPMENT CORP., MAYNARD, MASS.***
MODULE SOFF(RESERVE(#11, #12, #13, #14), SREG = #17, FREG = #16,
 DREGS = 4, VREG = #15, MLIST, TIMER = EXTERNAL(SIX12), FSAVE,  ENTRIES=(SOFF)) = 
    BEGIN
	REQUIRE	 DATA.BLI;			! EVERYONE NEEDS THIS

COMMENT;

!SPECIAL.BLI
!======= ===

! LAST MODIFIED:	7 JUL 76  BY  CDO

	EXTERNAL
		SOFFLEAF,
		KILGROUP,
		FINDPORT,
		GETREQUEST,
		MAKEMSG,
		MONSOFF,
		FIXTERM,
		OUTMSG;
COMMENT;

! ROUTINE SOFF
! ======= ====

! THIS ROUTINE HANDLES THE SIGNOFF TRANSACTION CODE

GLOBAL ROUTINE SOFF =
    BEGIN

	REGISTER
		MSGCHUNKS,
		GHPTR,
		SRCPTR,
		PORTADDR;
	MAP	FORMAT GHPTR;
	MAP	FORMAT SRCPTR;
	MAP	FORMAT PORTADDR;
	LOCAL	UDX;

	IF (GHPTR _ GETREQUEST(SOFFLEAF)) EQL 0 THEN RETURN;

	IF .GHPTR[G0TYPEOFSENDER] EQL LEAFTYPE THEN RETURN;

	SRCPTR _ .GHPTR[G0SENDER];			! GET THE SENDER

	PORTADDR _ FINDPORT(UDX_.SRCPTR[S0PORTPTR]);	! GET ATTACHED PORT ADDRESS


	! IN ANY CASE DELETE THE GROUP
	KILGROUP(.GHPTR, -1);

	IF .PORTADDR[PT0TMPSRCPTR] NEQ 0 THEN		! IF SIGNOFF ALLOWED
	    BEGIN
		FIXTERM(.SRCPTR);			!FIX UP TERMINAL FLAGS
		SRCPTR[S0PORTPTR] _ PORTADDR[PT0SRCPTR] _ 0; !SIGN IT OFF
		IF .MONSOFF THEN
		  INFORM(PAZ '[MCSSOF TERMINAL %0A% signing off from PORT %1S%]@',
		    SRCPTR[S0ID],.PORTADDR[PT0NAMEW],0,0,0);
		MSGCHUNKS _ MAKEMSG( PAZ 'SIGN OFF CONFIRMED FROM TERMINAL:%0A%?M?J%Z%?M?J@',
				SRCPTR[S0ID],0,0,0,0)
	   END
	   ELSE
	   BEGIN
		MSGCHUNKS _ MAKEMSG( PAZ 'SIGN OFF NOT ALLOWED?M?J@',0,0,0,0,0)
	   END;

	! SEND THE SIGN OFF MESSAGE OR SIGN OFF NOT ALLOWED MESSAGE
	OUTMSG(.MSGCHUNKS,.UDX,FALSE,FALSE);

	! ALL DONE

    END;



    END;					! END OF SOFF