Google
 

Trailing-Edge - PDP-10 Archives - bb-bt99g-bb - mount.c08
There is 1 other file named mount.c08 in the archive. Click here to see a list.
 REP 2/1	;08C1
	SUBTTL	P. Taylor  1-Jan-82
 WIT
	SUBTTL	P. Taylor/PJT/LWS  29-Feb-84
 REP 39/1	;08C2
		MOUEDT==:0052			;EDIT LEVEL
 WIT
		MOUEDT==:0056			;EDIT LEVEL
 INS 113/3	;08C3
	0053	Add code to MNTPAR in MOUN25 and MOUN30 to support the
		ENABLE/DISABLE queue functionality for disks and tapes.
		NO SPR 21-SEP-83/CTK

	0054	Remove edit 53 because it broke logical names.
		NO SPR 20-FEB-84/CTK

	0055	Add code to use a semi-unique ACK code for mount requests send
		to QUASAR.
		Requires QUASAR edit #1173
		SPR 10-34182 4-Feb-84 /LWS

	0056	Make MOUNT /CHECK and MOUNT <CR><LF> work the way they should.
		29-Feb-84 /LWS

 REP 5/8	;08C4
		TXNE	F,FL.CHK		;Was /CHECK specified?
 WIT
	;**;[56] Change 1 line at ALLOC+2L. /LWS
		TXNE	F,FL.CHK+FL.LST		;[56] Was /CHECK or implied /LIST specified?
 REP 13/8	;08C5
		TXNE	F,FL.CHK		;Was /CHECK specified?
 WIT
		TXNE	F,FL.CHK+FL.LST		;[56] Was /CHECK or implied /LIST specified?
 REP 22/15	;08C6
	CHKQ20:	MOVE	S1,.OARGC(P1)		;Get argument count
		CAIL	S1,2			;Was user argument specified?
		JRST	CHKQ30			;Yes..onward to show queues
	repeat 0,<				;Show all for now
		MOVE	S2,[2,,.LSUSR]		;No..then default is 'our' queues
 WIT
	;**;[56] Delete 2 lines and insert 1 at CHKQ20+0L. /LWS
	CHKQ20:	TXNN	F,FL.CHK		;[56] Was MOUNT /CHECK typed?
		JRST	CHKQ30			;No...onward to show queues
		MOVE	S2,[2,,.LSUSR]		;Yes..then default is 'our' queues
 DEL 32/15	;08C7
	> ;End REPEAT 0
 INS 8/21	;08C8
	;**;[55] Insert 4 lines after SNDQSR+1L. /LWS
		LOAD	S1,F,FL.NOT		;[55] Get /NOTIFY bit
		STORE	S1,USRACK,ACK.NT	;[55] Put in our copy of ACK code
		MOVE	S1,USRACK		;[55] Get ACK code
		MOVEM	S1,.MSCOD(S2)		;[55] Put in message header
 REP 3/22	;08C9
	RCVQSR:	$CALL	C%BRCV			;Get a message
		LOAD	S2,MDB.SI(S1),SI.FLG	;Message from a system pid?
		JUMPF	S2,[$WARN(Message from unknown pid ignored)
			    JRST RCVQSM]	;Back to get a known message
		LOAD	S2,MDB.SI(S1),SI.IDX	;Get the system index
		CAIE	S2,SP.QSR		;From QUASAR?
		JRST	[$WARN(Message from unkown system component ignored)
			 JRST RCVQSM]		;Back to get the real message
		LOAD	S1,MDB.MS(S1),MD.ADR	;Get message address
		$CALL	INIBLK			;Initialize message parser
		JUMPF	RCVQSF			;Flush the bumb message
		LOAD	S2,.MSTYP(S1),MS.TYP	;Get message type
 WIT
	;**;[55] Rework RCVQSR. /LWS
	RCVQSR:	$SAVE	<P1>			;[55] Save an AC
	RCVQS0:	$CALL	C%BRCV			;[55] Get a message
		MOVE	P1,S1			;[55] Save MDB address
		LOAD	S2,MDB.SI(P1),SI.FLG	;[55] Message from a system pid?
		JUMPE	S2,RCVWR1		;[55] Jump if not
		LOAD	S2,MDB.SI(P1),SI.IDX	;[55] Get the system index
		CAIE	S2,SP.QSR		;From QUASAR?
		JRST	RCVWR2			;[55] No,,go complain
		LOAD	P1,MDB.MS(P1),MD.ADR	;[55] Get message address
		MOVE	S1,.MSCOD(P1)		;[55] Get ACK code
		$CALL	CHKACK			;[55] Go check it out
		JUMPF	RCVQSM			;[55] Don't want it if FALSE
		MOVE	S1,P1			;[55] Get message address in S1
		$CALL	INIBLK			;Initialize message parser
		JUMPF	RCVQSF			;Flush the bumb message
		LOAD	S2,.MSTYP(P1),MS.TYP	;Get message type
 REP 36/22	;08C10
		MOVE	S1,.MSFLG(S1)		;Get the flags
 WIT
		MOVE	S1,.MSFLG(P1)		;[55] Get the flags
 REP 41/22	;08C11
		JRST	RCVACK			;Else standard ACK
		$CALL	C%REL			;Release the message
		$RETT


	RCVACK:	OUTSTR	0(T2)			;Dump the text
 WIT
		OUTSTR	0(T2)			;[55] Dump the text
		TXZE	F,FL.MOR		;[55] Look for more ACKs?
		JRST	RCVQSM			;[55] Yes,,go do it
 INS 5/23	;08C12
		;Continued on next page
		;Continued from previous page

 REP 12/23	;08C13
	RCVQSM:	$CALL	C%REL			;Release the message
		JRST	RCVQSR			;Back to get real message

 WIT
	RCVWR1:	$WARN(Message from unknown pid ignored) ;[55]
		TRNA				;[55] Skip
	RCVWR2:	$WARN(Message from unkown system component ignored) ;[55]
	RCVQSM:	$CALL	C%REL			;Release the message
		JRST	RCVQS0			;[55] Back to get another messaage

	;[55] CHKACK - routine to ACK from newly arrived message to see if
	;[55]		we should process the message or pitch it.

	;[55] ACCEPTS	S1/ ACK code to check

	;[55] RETURNS	FALSE	if message should be pitched
	;[55]		TRUE	if message should be processed
	;[55]			FL.MOR is set/cleared depending on
	;[55]			contents of ACK as compare to USRACK

	CHKACK:	TXZ	F,FL.MOR		;[55] Assume an exact match
		CAMN	S1,USRACK		;[55] Is it?
		$RETT				;[55] Yes,,'tis what we want to see
		$SAVE	<T1>			;[55] No,,we'll have to check further
		MOVE	T1,S1			;[55] Copy ACK code
		LOAD	S1,T1,ACK.JB		;[55] Get job # field from msg ACK
		LOAD	S2,USRACK,ACK.JB	;[55] Get same from original ACK
		CAME	S1,S2			;[55] Match?
		$RETF				;[55] No,,can't use it
		LOAD	S1,T1,ACK.UT		;[55] Yes,,get UDT part of msg ACK
		LOAD	S2,USRACK,ACK.UT	;[55] Get the same from USRACK
		CAMLE	S1,S2			;[55] Possibly ACK from previous mount?
		$RETF				;[55] No,,could be imposters
		TXNN	T1,ACK.NT		;[55] Yes. /NOTIFY in previous mount?
		$RETF				;[55] No,,don't process this ACK
		TXO	F,FL.MOR		;[55] Yes,,process this ACK and more...
		$RETT				;[55] Return TRUE!
 INS 9/25	;08C14
	;**;[55] Add code in JOBPRM for user ACK code. /LWS
		STORE	S2,USRACK,ACK.JB	;[55] Store in ACK also
 INS 12/25	;08C15
		$CALL	I%NOW			;[55] Get UDT
		STORE	S1,USRACK,ACK.UT	;[55] Store part we want in ACK code
 INS 25/29	;08C16
	$DATA	USRACK,1		;[55] ACK for messages
 SUM 39322