Google
 

Trailing-Edge - PDP-10 Archives - bb-bt99e-bb - netser.c09
There is 1 other file named netser.c09 in the archive. Click here to see a list.
 REP 19/80	;09C1
	EBI2BI::SETZ	T1,		;CLEAR THE OUTPUT
		MOVE	T3,[POINT 7,T1,35]	;OUTPUT BYTE POINTER
	EBI2B1:	SOJL	P4,CPOPJ##	;EXIT IF THE END OF DATA
		ILDB	T2,P1		;GET THE NEXT CHARACTER
		DPB	T2,T3		;STORE THE NEXT DIGIT
		TRNN	T2,200		;IS THE NUMBER EXTENDED
		POPJ	P,		;NO, EXIT
		ADD	T3,[7B5]	;YES, STEP LEFT ONE 7 BIT BYTE
		JRST	EBI2B1		;CONTINUE
 WIT
	EBI2BI::SETZB	T1,T2		;INITIALIZE FOR NUMBER-BUILDING LOOP
	EBI2B1:	SOJL	P4,CPOPJ##	;EXIT IF THE END OF DATA
		ILDB	T3,P1		;GET THE NEXT CHARACTER
		TRZN	T3,200		;IS THE NUMBER EXTENDED
		JRST	EBI2B5		;NO, ACCUMLATE END OF NUMBER AND EXIT
		LSH	T3,(T2)		;POSITION NEXT "DIGIT"
		IOR	T1,T3		;AND ACCUMULATE NUMBER
		ADDI	T2,7		;"ADVANCE" ACCUMULATOR-POSITIONER
		JRST	EBI2B1		;CONTINUE

	EBI2B5:	LSH	T3,(T2)		;POSITION NEXT "DIGIT"
		IOR	T1,T3		;AND ACCUMLATE NUMBER
		POPJ	P,		;RETURN WITH BINARY IN T1
 INS 23/140	;09C2
	;NTDCLO	ROUTINE TO PERFORM NORMAL "OUTPUT CLOSE" PROCESSING
	;CALL	MOVE	F,DDB		;DEVICE TO CLOSE OUTPUT ON
	;	PUSHJ	P,NTDCLO	;SAVE "NT", CALL OUT AND WAIT FOR COMPLETION
	;RETURN	CPOPJ			;ALWAYS FROM WAIT1
	;
	NTDCLO::NTSAVE			;RETURN THE "NT" INTERLOCK (WE BETTER HAVE IT)
		PUSHJ	P,OUT##		;FORCE OUT ANY UN-EMPTIED BUFFERS
		PJRST	WAIT1##		;WAIT FOR EVERYTHING TO GO OUT.

 REP 27/141	;09C3
	;NTDCLO	ROUTINE TO PERFORM NORMAL "OUTPUT CLOSE" PROCESSING
	;CALL	MOVE	F,DDB		;DEVICE TO CLOSE OUTPUT ON
	;	PUSHJ	P,NTDCLO	;SAVE "NT", CALL OUT AND WAIT FOR COMPLETION
	;RETURN	CPOPJ			;ALWAYS FROM WAIT1
	;
	NTDCLO::NTSAVE			;RETURN THE "NT" INTERLOCK (WE BETTER HAVE IT)
		PUSHJ	P,OUT##		;FORCE OUT ANY UN-EMPTIED BUFFERS
		PJRST	WAIT1##		;WAIT FOR EVERYTHING TO GO OUT.
 WIT
	;NTDGON	ROUTINE TO SET ERROR WHEN DEVICE HAS "GONE" AWAY
	;CALL	MOVE	F,DDB		;DEVICE WHICH IS KROAKED
	;	PJRST	NTDGON		;MARK ERROR AND RETURN TO UUOCON

	NTDGON::MOVEI	S,IODERR!IODTER	;DEVICE AND DATA ERRORS
		IORB	S,DEVIOS(F)	;ASSERT ERROR FLAGS
		POPJ	P,		;RETURN (PRESUMABLY TO UUOCON)
 REP 30/163	;09C4
		MOVE	T1,DEVAIO(F)	;NOW SEE IF THIS DEVICE IS
 WIT
	NTDOAW:	MOVE	T1,DEVAIO(F)	;NOW SEE IF THIS DEVICE IS
 REP 25/166	;09C5
	IFN FTPI,<
		MOVEI	T1,IR.DOL	;DEVICE OFFLINE PSI FLAG
		MOVSI	S,IOSZAP	;ZAPPED DDB BIT
		MOVEI	T4,ASSCON!ASSPRG ;ASSIGNED BITS
		TDNN	S,DEVIOS(F)	;IS DDB ZAPPED ALREADY?
		TDNN	T4,DEVMOD(F)	;NO, IS IT ASSIGNED?
					;NOT ASSIGNED OR ZAPPED, USE OLD CRITERION
		CAIN	T2,LAT.CC	;ARE WE IN CONNECT CONFIRM WAIT?
		PUSHJ	P,PSIDVB##	;YES, ISSUE DEVICE OFFLINE
	>
		PUSHJ	P,NETWAK	;WAKE OUT OF HIBER, AT LEAST
		JRST	NTDNW7		;CONTINUE WITH COMMON CODE
	;
	; HERE SEND DISCONNECT CONFIRM
	;
	NTDDS1:	PUSH	P,T4		;SAVE THE LAT ADDRESS
		MOVEI	T1,RSN.OK	;NORMAL RETURN "REASON"
 WIT
	IFN FTPI,<MOVEI	T1,IR.DOL>	;DEVICE OFFLINE PSI FLAG
		JRST	NTDNW2		;CONTINUE WITH COMMON CODE


	; HERE SEND DISCONNECT CONFIRM

	NTDDS1:	MOVEI	T1,RSN.OK	;NORMAL RETURN "REASON"
 REP 45/166	;09C6
		POP	P,T4		;GET THE LAT ADDRESS BACK
 WIT
	IFN FTPI,<MOVEI T1,IR.IER!IR.OER!IR.DOL>  ;PSI FLAGS FOR UNEXPECTED DISCONNECT
		MOVEI	T2,IONDD%	;REMOTE NETWORK DEVICE DISCONNECTED
 REP 17/170	;09C7
		MOVEI	T1,760000	;ALL ERROR BITS
		IORM	T1,DEVIOS(F)	;LIGHT THEM FOR DOWN DEVICE

	NTDNW1:				;HERE TO DISCONNECT A DDB
		MOVE	T1,DEVMOD(F)	;GET DEVICE ACTIVITY FLAGS
		TRNN	T1,ASSCON!ASSPRG;DEVICE IN USE BY A JOB?
		JRST	NTDNW7		;NO, IDLE DEVICE (DDP), NO PSI/ETC.
		LDB	T1,NETSLA##	;GET THE LAT ADDRESS, AND FROM THAT
		LDB	T2,LATSTA##	; GET THE CONNECTION STATE
		CAIE	T2,LAT.OK	;IS THE LINK RUNNING "OK"?
		JRST	[PUSHJ	P,NETWAK; IF NOT, (IE IN CONNECT/DISCONNECT WAIT)
			 JRST NTDNW7]	; JUST WAKE THE JOB THE EASY WAY

	IFN FTPI,<
		PUSHJ	P,PSIDWN##	;GIVE THE DEVICE OFFLINE INTERRUPT
	>
 WIT
		MOVEI	T1,IOERR!IODEND	;ALL ERROR BITS
		IORM	T1,DEVIOS(F)	;LIGHT THEM FOR DOWN DEVICE
	IFN FTPI,<MOVEI T1,IR.IER!IR.OER!IR.DOL>  ;NODE DOWN PSI FLAGS
		MOVEI	T2,IONND%	;NODE DOWN (OR PATH LOST) ERROR CODE

	;ENTER HERE TO DISCONNECT THE DDB,
	;  T1 CONTAINING PSI REASON FLAGS, T2 CONTAINING EXTENDED ERROR CODE

	NTDNW1:	DPB	T2,PDVESE##	;SET EXTENDED (DEVOP.) ERROR STATUS CODE
	NTDNW2:	LDB	T2,PJOBN	;GET OWNING JOB (IF ANY)
		JUMPE	T2,NTDNW7	;NO PSI/NETWAK IF NO JOB
	IFN FTPI,<
		MOVE	T2,DEVMOD(F)	;GET DEVICE ACTIVITY FLAGS
		TRNE	T2,ASSCON!ASSPRG;DEVICE DEFINITELY IN USE BY A JOB?
		PUSHJ	P,PSIDVB##	;YES, GIVE THE DEVICE OFFLINE/ETC. INTERRUPT
	> ;END IFN FTPI
 REP 36/170	;09C8
		MOVEI	T1,NTDOAV	;THEN CHANGE OUR MIND
		PUSHJ	P,(T1)		;CALL ROUTINE TO WAKE JOB. (UNDERSTANDS DEPAIO)
 WIT
		MOVEI	T1,NTDOAW	;THEN CHANGE OUR MIND
		PUSHJ	P,(T1)		;CALL ROUTINE TO WAKE JOB. (UNDERSTANDS DEPAIO)
					;  NOTE THAT WE MUST CALL NETWAK EVEN IF
					;  ASSCON!ASSPRG IS OFF, SINCE A DEVICE IN
					;  CONNECT-CONFIRM WAIT HASN'T SET THESE BITS
					;  YET (DONE BY UUOCON, NOT NETSER)
 SUM 65226