Trailing-Edge
-
PDP-10 Archives
-
bb-jr93e-bb
-
7,6/ap018/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