Google
 

Trailing-Edge - PDP-10 Archives - bb-bt99l-bb - cpnser.c18
There is 1 other file named cpnser.c18 in the archive. Click here to see a list.
 INS 4/29	;18C1
		AOSE	.CPSIN##	;BUMP LEVEL OF NESTING
		JRST	[SKIPGE	.CPDWD##;IN MIDDLE OF A STOPCODE?
			 STOPCD .,STOP,SCNRIA, ;++RECURSIVE INTERLOCK ATTEMPT
			 CONO PI,PI.ON	;JUST NESTING, RETURN, ALREADY HAVE INTERLOCK
			 POPJ P,]	;...
 REP 12/29	;18C2
	UNLSCI::EXCH	T1,.CPSCI##	;SAVE T1, GET STATE OF THE PI WHEN INTERLOCK WAS OBTAINED
 WIT
	UNLSCI::PUSH	P,T1		;SAVE A REGISTER
		SOSL	T1,.CPSIN##	;DECREMENT LEVEL OF NESTING, SEE IF DONE
		PJRST	TPOPJ##		;STILL NESTING, JUST RETURN
		EXCH	T1,.CPSCI##	;SAVE T1, GET STATE OF THE PI WHEN INTERLOCK WAS OBTAINED
 REP 16/29	;18C3
		SETOM	SCNLOK##
		SETOM	INOSCN##
		CONO	PI,@.CPSCI##	;RESTORE THE PI SYSTEM
		POPJ	P,
 WIT
		SETOM	INOSCN##
		EXCH	T1,SCNLOK##	;RESET THE INTERLOCK
		SKIPGE	T1		;MAKE SURE IT WAS OWNED
		STOPCD	.,CPU,SCNIU,	;++ SCNSER INTERLOCK UNOWNED
		CONO	PI,@.CPSCI##	;PUT THE PI SYSTEM BACK THE WAY IT WAS
		PJRST	TPOPJ##		;RESTORE T1 AND RETURN
 SUM 116483